⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menu.cpp

📁 公司人员管理系统实现的主要功能是实现了公司人员信息的查询
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// Menu.cpp: implementation of the Menu class.
#include "Menu.h"
void Menu::print(Member* p)          //打印每个记录的函数
	{
cout<<"\n\t姓名:\t"<<p->getname()<<"\n\t编号:\t"
	<<p->getidnum()<<"\n\t级别:\t"<<p->Getlever()
	<<"\n\t月薪:\t"<<p->getincome()<<"(元)"<<endl;
	}	
///////////////////////////////////////////////////////////////////
//********Menu菜单调用函数进去界面*****************************//
Menu::Menu()
{	InitArr();
	Se=0;
	count=0;
	Te=0;
	unsave=1;
	Head=0;
	Tail=0;
	Ma=0;
	Sm=0;
	Start();
}
Menu::~Menu(){}         //析够函数
//////////////////////////////////////////////////////////////////////////
//初始化数组
void Menu::InitArr()
	{
		int i=0;
		for(i=0;i<MAX;i++)
			{
				Mb[i]=0;
			}
	}
////////////////////////////////////////////////////////////////////////
//显示欢迎界面///////////
void Menu::Start()
	{	Load();
		HandleMenu();
	}
/////////////////////////////////////////////////////////////////////////////
//*******************对菜单的选择,选择怎么对公司人员进行修改*************//
void Menu::HandleMenu()
	{
		for(;;)
			{
			switch(MenuSelect())
				{
					case 1:AddRecord();
					      break;
					case 2:ShowAR();
					      break;
					case 3:Modify();
					      break;
					case 4:DeleteRe();
					       break;
					case 5:Ask();
					       break;
					case 6:Save();
						   break;
					case 7:Quit();
					       exit(1);
						   break ;
					}
				}		        
		}						
/*****************************************************
/*功能:实现公司员工信息管理系统主界面功能
/*      入口参数:s[2],cn---数组,输入数字
        出口参数:公司员工信息菜单的显示 
/*****************************************************/			
int	Menu::MenuSelect()
	{	char s[2];
		int  cn=0;
cout<<"*********************★★公司人员管理系统★★**********************************"<<endl;
cout<<" § §"<<"                                § §   (系统提示:要修改、删除公司人员"<<endl;
cout<<"****** ☆录入(1) ☆显示(2) ☆修改(3) *****"<<"     的记录,首先要找到对应的记录"<<endl; 
cout<<" § §"<<"                                § §    然后在进行修改、删除,在查询的"<<endl; 
cout<<"****** ☆删除(4) ☆查询(5) ☆保存(6) *****"<<"     时候,是按照公司人员的编号和 "<<endl; 
cout<<" § §"<<"                                § §    姓名查询的.)                  "<<endl; 
cout<<"****** ☆退出(7) ☆无  (8) ☆无  (9) ******"<<endl; 
cout<<" § §                                § §"<<endl;
cout<<"*****************★★请输入你要选择的功能(1-7)★★******************************"<<endl; 

cout<<"            版权声明:武汉科技大学城市学院·创新工作室      "<<endl;

for(;;)
	{
     	gets(s);
		cn=atoi(s);
		if(cn<1||cn>=8)
		{cout<<"\n\t请选择菜单(1--7):"<<flush;}
		else break;
			}
		return cn;	
		}

//**下面是对公司人员信息的查找*********************//
int   Menu::Search()
	{
		int i=0,num=0,cn=0,flage=0,chre=11;
		char choose[2],n[20];
		cout<<"1.编号查询"<<endl;
		cout<<"2.姓名查询"<<endl;
		cout<<"请选择1--2:\t"<<flush;
		cin>>choose;
    while(1)
    	{
    	cn=atoi(choose);
    	if(cn!=1&&cn!=2)
    	{
    	cout<<"\t您输入错误!请重选(1--2):"<<flush;
    	cin>>choose;
    	}
    	else
    	break;
    	}
    switch(cn)
    	{
   	case 1:cout<<"******************请输入你要查询的编号:";
    		 cin>>num;
    		  Head=Mb;
			 flage=0;
      for(i=0;i<MAX;i++)
    		 {
    	if(Head[i]&&Head[i]->getidnum()==num)
    		  	{
    		 	flage=1;
		    	cout<<"\t找到这条记录。\n";
    		   	print(Head[i]);
    	return i;
    		}
    		}
 if(flage==0)
            cout<<"\t没有此记录:"<<endl;
  return -1;
 case 2:cout<<"******************请输入你要查询的姓名:\t";
                cin>>n;
                Head=Mb;
                flage=0;
		for(i=0;Head[i]&&i<MAX;i++)
                	{
              		chre=strcmp(Head[i]->getname(),n);
										if(!chre)
               		{
                			flage=1;
				 	cout<<"*******找到此记录:\n";
                			print(Head[i]);
                			return i;
                		}
                	}
                if(flage==0)
                cout<<"*******没有此记录!"<<endl;
                return -1;	          
    	}		
	return -1;
	}
//////////////////////////////////////////////////////////////////////////
//用于保存记录的函数。	
void Menu::SaveRecord()
	{
		Head=Mb;
		Tail=Mb;
		count=0;
		for(int i=0;i<MAX;i++)
			{
				if(Tail[i])
				count++;
		  }
		if(count==0)
		cout<<"******************没有记录可保存!"<<endl;
		ofstream out;
		out.open("employee.txt",ios_base::out);
		if(!out)
		{
			cout<<"\t打开文件失败"<<endl;
			exit(1);
		}
		out<<count<<'\n';
		for(i=0;i<MAX;i++)
			{
				if(Head[i])
				out<<*Head[i];
			}  
		out.close();
		cout<<"*************"<<count<<"条记录已经存储到文件。"<<endl;
}
///////////////////////////////////////////////////////////////////////////
//操作文件菜单的加载
void Menu::Load()
	{
		int i=0,le=0;
		ifstream in;
		in.open("employ.txt",ios_base::in);  
		if(!in)
		in>>count; //输入count值
		InitArr();
		for(i=0;i<count;i++)
			{
				in>>Mem;
				le=Mem.Getlever();
				if(le>=1&&le<=3)
					{
						unsigned long ps;
						Mb[i]=new Seller(Mem.getname(),0);
						Mb[i]->Setlever(le);
						Mb[i]->setidnum(Mem.getidnum());
						Mb[i]->setincome(Mem.getincome());
						ps=unsigned long(Mem.getincome()/getrate1);
						Mb[i]->Setpsv(ps);
					}
				else if(le>=4&&le<=6)
				  {
				  	int time=0;
				  	Mb[i]=new Technician(Mem.getname(),0);
						Mb[i]->Setlever(le);
						Mb[i]->setidnum(Mem.getidnum());
						Mb[i]->setincome(Mem.getincome());
						time=int(Mem.getincome()/meyhou1);
						Mb[i]->Setwktm(time);
				  }	
				else if(le>=7&&le<=9)
					{
						unsigned long sv;
						Mb[i]=new Sellmanager(Mem.getname(),0);
						Mb[i]->Setlever(le);
						Mb[i]->setidnum(Mem.getidnum());
						Mb[i]->setincome(Mem.getincome());
						sv=(Mem.getincome()-utcome1)/dedper1;
						Mb[i]->Setsv(sv);
					}
				else
					{
						
						Mb[i]=new Manager(Mem.getname());
						Mb[i]->Setlever(le);
						Mb[i]->setidnum(Mem.getidnum());
						Mb[i]->setincome(Mem.getincome());
					}
			}
		in.close();		
		}
/*****************************************************
/*功能:实现公司员工信息显示功能
/*      入口参数:mb[i],i,flag---整形变量,输入数字
        出口参数:公司员工信息的显示 
/*****************************************************/
void Menu::ShowAR()
	{
		int i=0,size=0,flage=0;
		for(i=0;i<MAX;i++)
			{
				if(Mb[i])
				{
					print(Mb[i]);
					flage=1;
					size++;
					if(size%4==0&&size!=0)
					{
						cout<<"*******每次显示4条记录,按回车(enter)继续显示.\t";
						cin.get();
						cout<<endl;
							}
					}
			}
		if(flage==0)
		cout<<"*************记录为空,无法显示!";
		cout<<"\n*************记录显示完毕!按回车(enter)键继续其他操作";
		cout<<"\n\n";
		getchar();
	}

//////////////////////////////////////////////////////////////////////
//////*********************下面是文件的保存********************
void Menu::Save()
	{
		SaveRecord();
		unsave=0;
	}

/*****************************************************
/*功能:实现公司员工信息的录入功能
/*      入口参数:i,cn,choi,le---整形变量,输入数字
        出口参数:对不同级别的员工的信息的输出
/*****************************************************/
void Menu::AddRecord()
	{
		int i=0,cn=0;
		char n[20];
		char choi[2],le[2];
		cout<<"\n*************请输入公司员工的级别!"<<endl;
		cout<<"(兼职推销员)****请输入(1至3)****"<<endl;
		cout<<"(兼职技术员)****请输入(4至6)****"<<endl;
		cout<<"(销售经理  )****请输入(7至9)****"<<endl;
        cout<<"(经    理  )****请输入(10至12)****"<<endl;
		cin>>le;
		cn=atoi(le);
		if(cn<1||cn>12)
			{
				cout<<"\n*************您的输入错误!请重新输入!\n";
				AddRecord();
			}
		else if(cn>=1&&cn<=3)
	{

/*****************************************************
/*功能:实现公司员工兼职推销员信息录入功能
/*      入口参数:i,n,cn---整形变量,输入数字

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -