您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > C++小型企业工资管理系统
第1页共21页一、需求分析1.从要求上来看是要对各个员工的各种情况(名字、年龄、性别、职位、工资状况)进行输入。然后可以输出.2.可以对于员工数据进行修改,可以查询.3.对于员工的各种情况系统还可以进行统计排名.第2页共21页二、概要设计首先,创建了一个employee类.然后派生出四个类:manager、technician、salesman、salesmanager.在派生类中定义了三个构造函数,分别是:数据输入函数(Input),表格输出函数(Print),排序函数(Pay).其次,在总体结构上,建立以各根菜单,用于选择各种功能.1.Input(数据输入):输入员工的各种数据.2.Total(数据统计):将员工的总数据进行对比排序,然后输出.3.Output(数据显示):显示输入的各种数据.4.Save(数据保存):对输入的数据进行保存备份.5.Eixt(退出程序):执行退出程序命令.第3页共21页三、详细设计1.Input(数据输入):定义了各个岗位的人员的类,并把每个类的人员的属性设为类中的保护成员,其中技术工的工作时间和每小时的所得为私有成员,而销售员的销售额、经理的工资和销售经理的所辖部门的销售额和其底薪设为公有成员,再依次录入。2.Total(数据统计):根据所有类的工资算法在其所属类中定义一个函数voidpay()来根据各个职位的具体情况来计算工资,并且算出的工资经过冒泡法排序.voidprinttotal(){cout├─────┴──┬──┴─────┤endl;cout│Total│setw(10)total│endl;cout└────────┴────────┘endl;}3.Output(数据显示):通过do-while循环以及制表格和setw的使用将输入的数据和统计并排序的数据以表格的形式打印出来,销售额合计一栏宽度要大些。voidsaleprint(){cout│setw(10)no1│setw(10)name1│setw(10)sale1│endl;cout├─────┼─────┼─────┤endl;cout│setw(10)no2│setw(10)name2│setw(10)sale2│endl;cout├─────┼─────┼─────┤endl;cout│setw(10)no3│setw(10)name3│setw(10)sale3│endl;cout├─────┼─────┼─────┤endl;cout│setw(10)no4│setw(10)name4│setw(10)sale4│endl;}voidprint(){cout├─────┼─────┼─────┼─────┼─────┤endl;cout│setw(10)no│setw(10)name│setw(10)sex│\第4页共21页setw(10)age│setw(10)salary│endl;}4.Save(数据保存):通过函数save()来将输入的数据和统计并排序的数据进行保存.例如:voidsave(){fstreamoutfile;outfile.open(f:flsdfj.txt,ios::app);if(!outfile){coutfcan'topen.\n;abort();}outfileSalesmangerendl;outfileIDnoNAMEnameSEXsexAGEageSALARYsalaryendl;}5.Eixt(退出):利用exit来完成退出系统功能。第5页共21页四、设计和调试分析程序清单:#includeiostream.h#includestdlib.h#includefstream.h#includeiomanip.h#includestring.hclassemployee{public:employee(){salary=0;}voidpay(){}voidprint(){}voidinput(){coutID:;cinno;coutNAME:;cinname;coutSEX(m/w):;cinsex;coutAGE:;cinage;}protected:intno;第6页共21页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();}outfileMangerendl;outfileIDnoNAMEnameSEXsexAGEageSALARYsalaryendl;}voidpay(){salary=monthlypay;}voidprint(){cout├─────┼─────┼─────┼─────┼─────┤endl;第7页共21页cout│setw(10)no│setw(10)name│setw(10)sex\│setw(10)age│setw(10)salary│endl;}};classtechnician:virtualpublicemployee{private:floathourlyrate;intworkhours;public:technician(){hourlyrate=100;}voidpay(){coutnameWorkhour:;cinworkhours;salary=hourlyrate*workhours;}voidinput(){coutTECHNICIANendl;employee::input();}voidsave(){fstreamoutfile;outfile.open(f:flsdfj.txt,ios::app);if(!outfile){coutfcan'topen.\n;abort();}outfileTECHNICIANendl;第8页共21页outfileIDnoNAMEnameSEXsexAGEageSALARYsalaryendl;}voidprint(){cout├─────┼─────┼─────┼─────┼─────┤endl;cout│setw(10)no│setw(10)name│setw(10)sex\│setw(10)age│setw(10)salary│endl;}};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();}outfileTECHNICIANendl;第9页共21页outfileIDnoNAMEnameSEXsexAGEageSALARYsalaryendl;}voidpay(){coutnameSalesvolume:;cinsales;salary=sales*commrate;}voidprint(){cout├─────┼─────┼─────┼─────┼─────┤endl;cout│setw(10)no│setw(10)name│setw(10)\sex│setw(10)age│setw(10)salary│endl;}};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;第10页共21页commrate=0.005;}voidinput(){coutSalesmanger;employee::input();}voidsave(){fstreamoutfile;outfile.open(f:flsdfj.txt,ios::app);if(!outfile){coutfcan'topen.\n;abort();}outfileSalesmangerendl;outfileIDnoNAMEnameSEXsexAGEageSALARYsalaryendl;}voidsavesale(){fstreamoutfile;outfile.open(f:flsdfj.txt,ios::app);if(!outfile){coutfcan'topen.\n;abort();}outfileThesalaryofsalemanofsalesmangerandthemselvesendl;outfileIDno1NAMEname1SALARYsale1endl;outfileIDno2NAMEname2SALARYsale2endl;outfileIDno3NAMEname3SALARYsale3endl;outfileIDno4NAMEname4SALARYsale4endl;第11页共21页}voidpay(){coutnameThesalesvolumeofeverydepartment:;salary=monthlypay+commrate*total;}floattotalsale(){total=sale1+sale2+sale3+sale4;returntotal;}voidprinttotal(){cout├─────┴──┬──┴─────┤endl;cout│Total│setw(10)total│endl;cout└────────┴────────┘endl;}voidsort(salesmanagerp){inttmp,i,j;for(j=0;j2;j++)for(i=0;i2;i++)if(totalp.salary){tmp=salary;total=p.salar
本文标题:C++小型企业工资管理系统
链接地址:https://www.777doc.com/doc-552690 .html