存档资料成绩:华东交通大学课程设计报告书所属课程名称C++程序设计题目小型企业工资管理系统院(系)软件学院班级网络2006-班学号学生姓名指导教师辅导教师2007年7月7日华东交通大学课程设计(论文)任务书软件学院专业网络工程班级06级2班一、课程设计(论文)题目小型企业工资管理系统二、课程设计(论文)工作:自2007年6月25日起至2007年7月6日止。三、课程设计(论文)的内容要求:1数据录入:输入各种数据.2数据统计:各销售经理的工资计算及最终按工资进行的冒泡排序.3数据打印:打印各种数据.4数据备份:把相关的数据写入文件.5退出:退出本系统.学生签名:2007年7月9日课程设计(论文)评阅意见项目等级优秀良好中等及格不及格课程设计态度评价出勤情况评价任务难度评价工作量饱满评价设计中创新性评价论文书写规范化评价综合应用能力评价综合评定等级优秀()良好()中等()及格()不及格()评阅人谢昕职称副教授2007年7月11日目录一、需求分析二、概要设计三、详细设计四、设计和调试分析5五、用户手册18六、测试结果20七、参考文献21一、需求分析1.从要求上来看是要对各个员工的各种情况(名字、年龄、性别、职位、工资状况进行输入。然后可以输出.2.可以对于员工数据进行修改,可以查询.3.对于员工的各种情况系统还可以进行统计排名.二、概要设计首先,创建了一个employee类.然后派生出四个类:manager、technician、salesman、salesmanager.在派生类中定义了三个构造函数,分别是:数据输入函数(Input,表格输出函数(Print,排序函数(Pay.其次,在总体结构上,建立以各根菜单,用于选择各种功能.1.Input(数据输入:输入员工的各种数据.2.Total(数据统计:将员工的总数据进行对比排序,然后输出.3.Output(数据显示:显示输入的各种数据.4.Save(数据保存:对输入的数据进行保存备份.5.Eixt(退出程序:执行退出程序命令.三、详细设计1.Input(数据输入:定义了各个岗位的人员的类,并把每个类的人员的属性设为类中的保护成员,其中技术工的工作时间和每小时的所得为私有成员,而销售员的销售额、经理的工资和销售经理的所辖部门的销售额和其底薪设为公有成员,再依次录入。2.Total(数据统计:根据所有类的工资算法在其所属类中定义一个函数voidpay(来根据各个职位的具体情况来计算工资,并且算出的工资经过冒泡法排序.voidprinttotal({cout├─────┴──┬──┴─────┤cout│Total││cout└────────┴────────┘}3.Output(数据显示:通过do-while循环以及制表格和setw的使用将输入的数据和统计并排序的数据以表格的形式打印出来,销售额合计一栏宽度要大些。voidsaleprint({cout││││cout├─────┼─────┼─────┤cout││││cout├─────┼─────┼─────┤cout││││cout├─────┼─────┼─────┤cout││││}voidprint({cout├─────┼─────┼─────┼─────┼─────┤cout││││\││}4.Save(数据保存:通过函数save(来将输入的数据和统计并排序的数据进行保存.例如:voidsave({fstreamoutfile;outfile.open(f:flsdfj.txt,ios::app;if(!outfile{coutfcan'topen.\n;abort(;}outfileSalesmangeroutfileID}5.Eixt(退出:利用exit来完成退出系统功能。四、设计和调试分析程序清单:#include#include#include#include#includeclassemployee{public:employee({salary=0;}voidpay({}voidprint({}voidinput({coutID:;cinno;coutNAME:;cinname;coutSEX(m/w:;cinsex;coutAGE:;cinage;}protected:intno;charname[8];floatsalary;charsex;intage;};classmanager:virtualpublicemployee{protected:floatmonthlypay,sale;public:manager({monthlypay=8000;}voidinput({coutManger;employee::input(;}voidsave({fstreamoutfile;outfile.open(f:flsdfj.txt,ios::app;if(!outfile{coutfcan'topen.\n;abort(;}outfileMangeroutfileID}voidpay({salary=monthlypay;}voidprint({cout├─────┼─────┼─────┼─────┼─────┤cout││││││}};classtechnician:virtualpublicemployee{private:floathourlyrate;intworkhours;public:technician({hourlyrate=100;}voidpay({coutcinworkhours;salary=hourlyrate*workhours;}voidinput({coutTECHNICIANvoidsave({fstreamoutfile;outfile.open(f:flsdfj.txt,ios::app;if(!outfile{coutfcan'topen.\n;abort(;}outfileTECHNICIANoutfileID}voidprint({cout├─────┼─────┼─────┼─────┼─────┤cout││││││}};classsalesman:virtualpublicemployee{protected:floatcommrate;floatsales;public:salesman({commrate=0.04;}voidinput({coutSALEMAN;employee::input(;}voidsave({fstreamoutfile;outfile.open(f:flsdfj.txt,ios::app;if(!outfile{coutfcan'topen.\n;abort(;}outfileTECHNICIANoutfileID}voidpay({coutcinsales;salary=sales*commrate;}voidprint({cout├─────┼─────┼─────┼─────┼─────┤cout││││││}};classsalesmanager:virtualpublicmanager,virtualpublicsalesman{private:floattotal;intno1,no2,no3,no4;charname1[8],name2[8],name3[8],name4[8];floatsale1,sale2,sale3,sale4;public:voidsalemanager({monthlypay=5000;commrate=0.005;}voidinput({coutSalesmanger;employee::input(;}voidsave({fstreamoutfile;outfile.open(f:flsdfj.txt,ios::app;if(!outfile{coutfcan'topen.\n;abort(;}outfileSalesmangeroutfileID}voidsavesale({fstreamoutfile;outfile.open(f:flsdfj.txt,ios::app;if(!outfile{coutfcan'topen.\n;abort(;}outfileThesalaryofsalemanofsalesmangerandthemselvesoutfileIDoutfileIDoutfileIDoutfileID}voidpay({coutsalary=monthlypay+commrate*total;}floattotalsale({total=sale1+sale2+sale3+sale4;returntotal;}voidprinttotal({cout├─────┴──┬──┴─────┤cout│Total││cout└────────┴────────┘}voidsort(salesmanagerp{inttmp,i,j;for(j=0;j2;j++for(i=0;i2;i++if(total{tmp=salary;total=p.salary;p.salary=tmp;tmp=no;no=p.no;p.no=tmp;}}voidsaler({coutStaffID:;cinno1;coutStaffNAME:;cinname1;coutSalesvolume:;cinsale1;coutStaffID:;cinno2;coutStaffNAME:;cinname2;coutSalesvolume:;cinsale2;coutStaffID:;cinno3;coutStaffNAME:;cinname3;coutSalesvolume:;cinsale3;coutStaffID:;cinno4;coutStaffNAME:;cinname4;coutSalesvolume:;cinsale4;}voidsaleprint({cout││││cout├─────┼─────┼─────┤cout││││cout├─────┼─────┼─────┤cout││││cout├─────┼─────┼─────┤cout││││}voidprint({cout├─────┼─────┼─────┼─────┼─────┤cout││││\││}};voidmain({managerm[4];techniciant[4];salesmans[4];salesmanagersm[4];t[1].save(;intflag=1,operate;do{cout####Thesystemofsalarymanger####\n;cout┌─────────────┐\n;cout│Choseyouractions│\n;cout│Input:1,Enter│\n;cout│Total:2,Enter│\n;cout│Output:3,Enter│\n;cout│Save:4,Enter│\n;cout│Exit:5,Enter│\n;cout└─────────────┘\n;coutPleasechoseoneaction:;cinoperate;switch(operate{case1:coutWaitingforaminute!{fo