当前位置:文档之家› 公司员工管理系统方案说明书(模板)

公司员工管理系统方案说明书(模板)

课程设计说明书课程名称: 面向对象程序设计题目: 公司员工管理系统年级/专业/班:学生姓名:学号:目录1 引言1.1 问题的提出1.2任务与分析2 程序的主要功能2.1新增功能2.2更改功能2.3 删除信息2.4查找功能2.5显示功能2.6全部删除功能3 程序运行平台4 总体设计5 程序类的说明6 模块分析6.1 添加模块6.2 显示模块6.3 修改模块6.4 查找模块6.5 删除模块6.6 清空模块7 系统测试引言1.1问题的提出随着计算机的普及,网络进入大宗的家庭,不论在工作、学习还是生活中,人们越来越离不开它,社会上,计算机及使用计算机的人几乎是随处可见。

人们用计算机,是因为它能反映现实世界,随着计算机越来越深入到人们的实际生活,如何把计算机科学更好的应用于实际,最大限度解决人们日常问题已经成为许多人热衷的研究方向。

1.2任务与分析1.人数其中,人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。

2.升级程序对所有人员有提升级别的功能3.工资计算薪的计算方法是:经理拿固定月薪,兼职技术人员按工作小时数领取月薪,兼职推销员的报酬按该推销员当月销售额提成 ,销售经理既拿固定月薪也领取销售提成。

4.修改能按姓名或者编号显示、查找、增加、删除和保存各类人员的信息5.在基本要求达到后,可设计出比较友好的界面(如下拉菜单),也可用VC++ClassWizard 设计。

2.程序的主要功能1.新增(添加新职员,计算工资)2.更改(更改职员信息)3.删除(删除职员信息)4.查找(显示所要寻找的职员信息)5.显示(显示所有职员的信息)6.全删(删除所有职员的信息)3.程序运行平台WINDOWS XP/2000 VC++4.总体设计4.1主要流程图图2-1 流程图4.2N-S图图2-2 N-S图5.程序类的说明class Employee //职工类{int tag;//删除标记int no;//职工编号char name[20];char zw[20];//职工职位int salary;//职工工资public:Employee(){}char *getname() {return name;}//获取名字int gettag() {return tag;}//获取标记int getno() {return no;}//获取编号int getsalary(){return salary;}//获取工资void setzw(char q[])//设置职位{strcpy(zw,q);}void setname(char na[])//设置名字{strcpy(name,na);}void getsalary(int sa){salary=sa;}void delna(){tag=1;}//删除void addemp(int n,int sa,char *na,char *q)//增加{tag=0;no=n;salary=sa;strcpy(name,na);strcpy(zw,q);}void disp()//显示职工信息{cout<<"│"<<setw(10)<<no<<"│"<<setw(10)<<name<<"│"<<setw(10)<<salary<<"│"<<setw(10)<<zw<<" │"<<endl;cout<<"├—————┼—————┼—————┼———————┤"<<endl;}};//////////////////////////////////////////////////////////////////////class Database//职工数据类{int top;Employee read[Maxr];public:Database()//将职工信息从employee.txt读取到read[]中{Employee s;top=-1;fstream file("employee.txt",ios::in);while (1){file.read((char *)&s,sizeof(s));if (!file) break;top++;read[top]=s;}file.close();}void clear()//删除所有{top=-1;renshu=0;}////////////////////////////////////////////////////////// int addemp (int n, int sa,char *na,char*q) //增加职工{Employee *p=query(n);if (p==NULL){top++;read[top].addemp(n,sa,na,q);return 1;}return 0;}////////////////////////////////////////////////////// Employee *query(int empid){for (int i=0;i<=top;i++)if (read[i].getno()==empid && read[i].gettag()==0)return &read[i];return NULL;}/////////////////////////////////////////////////Employee *query1(char empna[20]){for (int i=0;i<=top;i++)if ((read[i].getname()==empna) && read[i].gettag()==0) return &read[i];return NULL;}/////////////////////////////////////////////void disp() //职工信息显示{for (int i=0;i<=top;i++)read[i].disp();}//////////////////////////////////////////////////void empdata();~Database() //将read[]中的信息读如到employee.txt中{fstream file("employee.txt",ios::out);for (int i=0;i<=top;i++)if (read[i].gettag()==0)file.write((char *)&read[i],sizeof(read[i]));file.close();}};6.模块分析6.1添加:void Database::empdata()//职工维护{int choice=1;int m=1;int b=1;char rname[20];int empid; int empsa;char q[20];Employee *r;while (choice!=0){cout<<"职工维护 1:新增 2:更改 3:删除 4:查找 5:显示 6:全删0:退出=>";cin>>choice;switch (choice){case 1:cout<<setw(50)<<" ┌———————————————┐\n";cout<<setw(50)<<" │请选择您所需的操作│\n";cout<<setw(50)<<" │经理: 1,并按回车键│\n"; cout<<setw(50)<<" │销售经理: 2,并按回车键│\n"; cout<<setw(50)<<" │兼职推销员: 3,并按回车键│\n"; cout<<setw(50)<<" │兼职技术人员 4,并按回车键│\n"; cout<<setw(50)<<" └———————————————┘\n"; cout<<setw(50)<<" 公司总人数:"<<renshu<<endl;cin>>m;while(m!=0){switch(m){case 1:cout<<"输入经理编号:";cin>>empid;cout<<"输入经理姓名:";cin>>rname;addemp(empid,8000,rname,"经理");renshu++;break;case 2:cout<<"输入销售经理编号:";cin>>empid;cout<<"输入月提成: ";cin>>empsa;cout<<"输入销售经理姓名:";cin>>rname;addemp(empid,4000+empsa,rname,"销售经理");renshu++;break;case 3:cout<<"输入兼职推销员编号:";cin>>empid;cout<<"输入销售额提成: ";cin>>empsa;cout<<"输入兼职推销员姓名:";cin>>rname;addemp(empid,empsa,rname,"兼职推销员");renshu++;break;case 4:cout<<"输入兼职技术人员编号:";cin>>empid;cout<<"输入工作小时: ";cin>>empsa;cout<<"输入兼职技术人员姓名:";cin>>rname;addemp(empid,20*empsa,rname,"兼职技术人员");renshu++;break;}break;}break;6.2更改:case 2:cout<<"输入职工编号:";cin>>empid;r=query(empid);if (r==NULL){cout<<"该职工不存在"<<endl;break;}cout<<"输入新的工资:"<<endl;cin>>empsa;r->getsalary(empsa);cout<<"请输入新的及级别"<<endl;cin>>q;r->setzw(q);addemp(empid,empsa,rname,q);break;6.3删除:case 3:cout<<"输入职工编号:";cin>>empid;r=query(empid);if (r==NULL){cout<<"该读者不存在"<<endl;break;}r->delna();break;6.4查找:case 4:cout<<setw(50)<<" ┌—————————————┐\n";cout<<setw(50)<<" │请选择您所需的操作│\n";cout<<setw(50)<<" │按编号查找1,并按回车键│\n";cout<<setw(50)<<" │返回 2,并按回车键│\n";cout<<setw(50)<<" └—————————————┘\n";cin>>b;while(b!=0){switch(b){case 1:cout<<"输入职工编号:";cin>>empid;r=query(empid);if (r==NULL){cout<<"该职工不存在"<<endl;break;}cout<<"├—————┼—————┼—————┼———————┤"<<endl;cout<<"│"<<setw(10)<<"编号"<<"│"<<setw(10)<<"姓名"<<"│"<<setw(10)<<"工资"<<"│"<<setw(10)<<"级别"<<" │"<<endl;cout<<"├—————┼—————┼—————┼———————┤"<<endl;r->disp();break;case 2:break;}break;}break;6.5显示:case 5:cout<<"├—————┼—————┼—————┼———————┤"<<endl;cout<<"│"<<setw(10)<<"编号"<<"│"<<setw(10)<<"姓名"<<"│"<<setw(10)<<"工资"<<"│"<<setw(10)<<"级别"<<" │"<<endl;cout<<"├—————┼—————┼—————┼———————┤"<<endl;disp();6.6全部删除:case 6:clear();break;}}/////////////////////////////////////////////////////////////void main(){int choice=1;Database EmpDB;while(choice!=0){cout<<"********************************************************** **********************"<<endl;cout<<endl;cout<<endl;cout<<setw(20)<<"******************************欢迎使用职工管理系统******************************"<<endl;cout<<endl;cout<<endl;cout<<setw(50)<<" ┌———————————————┐\n";cout<<setw(50)<<" │欢迎使用公司员工管理系统│\n";cout<<setw(50)<<" ││\n";cout<<setw(50)<<" │请选择您所需的操作│\n";cout<<setw(50)<<" ││\n";cout<<setw(50)<<" │操作 1,并按回车键│\n";cout<<setw(50)<<" ││\n";cout<<setw(50)<<" │返回 0,并按回车键│\n";cout<<setw(50)<<" └———————————————┘\n";cin>>choice;switch(choice){case 1:while(1){cout<<setw(20);EmpDB.empdata();break;break;}}}}7.系统测试开始选择“1”,进行操作:,出现职工维护:选择任务1新增,并且添加一个经理职务:我们先选择4查询任务,并按编号查询:选择5显示任务:选择3删除任务,并按编号删除:。

相关主题