1、个人收集整理 勿做商业用途课程设计说明书课 程 名 称: 面向对象程序设计 题 目: 公司员工管理系统 年级/专业/班: 学 生 姓 名: 学 号: 目 录 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 问题的提出随着计算机的普及,网络进入大宗的家庭,不论在工作、学习还是生活
2、中,人们越来越离不开它,社会上,计算机及使用计算机的人几乎是随处可见。人们用计算机,是因为它能反映现实世界,随着计算机越来越深入到人们的实际生活,如何把计算机科学更好的应用于实际,最大限度解决人们日常问题已经成为许多人热衷的研究方向。1.2 任务与分析1. 人数其中,人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。2. 升级程序对所有人员有提升级别的功能3. 工资计算薪的计算方法是:经理拿固定月薪,兼职技术人员按工作小时数领取月薪,兼职推销员的报酬按该推销员当月销售额提成 ,销售经理既拿固定月薪也领取销售提成。4. 修改能按姓名或者编号显示、查找、增加、删除和保存各类人员的信
3、息5. 在基本要求达到后,可设计出比较友好的界面(如下拉菜单),也可用VC+ ClassWizard 设计.2. 程序的主要功能1. 新增(添加新职员,计算工资)2. 更改(更改职员信息)3. 删除(删除职员信息)4. 查找(显示所要寻找的职员信息)5. 显示(显示所有职员的信息)6. 全删(删除所有职员的信息)3. 程序运行平台WINDOWS XP/2000 VC+4. 总体设计4.1 主要流程图开始选定相应操作序号退出增加修改删除查询显示输 入 数 据保 存 到 文 件退 出显示信息图2-1 流程图4.2 N-S图开始键盘输入操作序号判断炒作序号操作序号传入函数按要求输入相关数据数据保存到
4、文件退出 图2-2 NS图5. 程序类的说明class Employee /职工类int tag;/删除标记int no;/职工编号char name20;char zw20;/职工职位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(cha
5、r 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()/显示职工信息 coutsetw(10)no”setw(10)name”setw(10)salary”setw(10)zw” endl;cout”-”endl;/class Database/职工数据类int top;Empl
6、oyee readMaxr;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+; readtop=s; file。close(); void clear()/删除所有 top=-1; renshu=0; /int addemp (int n, int sa,char *na,charq) /增加职工 Employee *p
7、=query(n); if (p=NULL) top+; readtop.addemp(n,sa,na,q); return 1; return 0; /Employee query(int empid) for (int i=0;i=top;i+) if (readi。getno()=empid & readi。gettag()=0) return readi; return NULL; /Employee query1(char empna20) for (int i=0;i=top;i+) if (readi。getname()=empna) & readi。gettag()=0) re
8、turn readi; return NULL; /void disp() /职工信息显示 for (int i=0;i=top;i+) readi.disp(); /void empdata(); Database() /将read中的信息读如到employee。txt中 fstream file(”employee.txt”,ios:out); for (int i=0;i=top;i+) if (readi.gettag()=0) file。write(char *)readi,sizeof(readi); file。close(); ;6. 模块分析6.1添加:void Databas
9、e::empdata()/职工维护 int choice=1; int m=1;int b=1;char rname20; int empid; int empsa;char q20;Employee r; while (choice!=0) cout”; cinchoice; switch (choice) case 1: coutsetw(50)” -n”; coutsetw(50)” 请选择您所需的操作 n”; coutsetw(50) 经理: 1,并按回车键 n; coutsetw(50)” 销售经理: 2,并按回车键 n; coutsetw(50)” 兼职推销员: 3,并按回车键 n
10、; coutsetw(50)” 兼职技术人员 4,并按回车键 n”; coutsetw(50) -n”; coutsetw(50)” 公司总人数:renshum;while(m!=0)switch(m)case 1:cout输入经理编号:”; cinempid;coutrname; addemp(empid,8000,rname,经理);renshu+;break; case 2:coutempid;coutempsa;cout输入销售经理姓名:; cinrname; addemp(empid,4000+empsa,rname,”销售经理);renshu+;break; case 3:cout
11、empsa;coutrname; addemp(empid,empsa,rname,兼职推销员”);renshu+;break;case 4:cout输入兼职技术人员编号:”; cinempid;cout输入工作小时: ”;cinempsa;coutrname; addemp(empid,20empsa,rname,兼职技术人员);renshu+;break; break;break;6。2更改:case 2: coutempid;r=query(empid);if (r=NULL) cout该职工不存在”endl; break; cout”输入新的工资:”empsa;r-getsalary(
12、empsa);cout请输入新的及级别q;rsetzw(q);addemp(empid,empsa,rname,q);break; 6。3删除:case 3: cout”输入职工编号:”; cinempid;r=query(empid); if (r=NULL) cout该读者不存在”delna();break; 6.4查找:case 4: coutsetw(50)” -n; coutsetw(50) 请选择您所需的操作 n; coutsetw(50) 按编号查找1,并按回车键 n; coutsetw(50) 返回 2,并按回车键 n”; coutsetw(50) -n; cinb;while
13、(b!=0)switch(b)case 1:coutempid; r=query(empid); if (r=NULL) cout”该职工不存在endl; break; cout”-endl; coutsetw(10)”编号”setw(10)姓名setw(10)工资”setw(10)级别” ”endl;cout”-endl;rdisp();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(
14、);6.6全部删除:case 6: clear(); break; /void main()int choice=1;Database EmpDB;while(choice!=0)cout”*endl;coutendl;coutendl;coutsetw(20)*欢迎使用职工管理系统*endl;coutendl;coutendl;coutsetw(50)” -n;coutsetw(50)” 欢迎使用公司员工管理系统 n; coutsetw(50)” n”; coutsetw(50)” 请选择您所需的操作 n;coutsetw(50)” n”; coutsetw(50) 操作 1,并按回车键 n;coutsetw(50) n”; coutsetw(50)” 返回 0,并按回车键 n”; coutchoice;switch(choice)case 1:while(1)coutsetw(20);EmpDB。empdata();break;break;7. 系统测试开始选择“1”,进行操作:,出现职工维护:选择任务1新增,并且添加一个经理职务:我们先选择4查询任务,并按编号查询:选择5显示任务:选择3删除任务,并按编号删除: