C++小型企业工资管理系统
- 格式:docx
- 大小:16.96 KB
- 文档页数:17
一、需求分析
1. 从要求上来看是要对各个员工的各种情况(名字、年龄、性别、职位、工资状况)进行输入。然后可以输出.
2. 可以对于员工数据进行修改,可以查询.
3. 对于员工的各种情况系统还可以进行统计排名.二、概要设计
首先,创建了一个employee类.然后派生出四个类: manager、technician、salesman、sales manager.在派生类中定义了三个构造函数,分别是:数据输入函数(Input),表格输出函数(Print),排序函数(Pay).
其次,在总体结构上,建立以各根菜单,用于选择各种功能.
1. Input(数据输入):输入员工的各种数据.
2. Total(数据统计):将员工的总数据进行对比排序,然后输出.
3. Output(数据显示):显示输入的各种数据.
4. Save(数据保存):对输入的数据进行保存备份.
5. Eixt(退出程序):执行退出程序命令. 三、详细设计
1. Input(数据输入): 定义了各个岗位的人员的类,并把每个类的人员的属性设为类中的保护成员,其中技术工的工作时间和每小时的所得为私有成员,而销售员的销售额、经理的工资和销售经理的所辖部门的销售额和其底薪设为公有成员,再依次录入。
2. Total(数据统计): 根据所有类的工资算法在其所属类中定义一个函数void pay()来根据各个职位的具体情况来计算工资,并且算出的工资经过冒泡法排序.
void printtotal()
{
cout<<"├─────┴──┬──┴─────┤"< cout<<"│Total │ "< cout<<"└────────┴────────┘"< } 3. Output(数据显示): 通过do-while循环以及制表格和setw的使用将输入的数据和统计并排序的数据以表格的形式打印出来,销售额合计一栏宽度要大些。 void saleprint() { cout<<"│"< cout<<"├─────┼─────┼─────┤"< cout<<"│"< cout<<"├─────┼─────┼─────┤"< cout<<"│"< cout<<"├─────┼─────┼─────┤"< cout<<"│"< } void print() { cout<<"├─────┼─────┼─────┼─────┼─────┤"< cout<<"│"< < } 4. Save(数据保存): 通过函数save()来将输入的数据和统计并排序的数据进行保存.例如: void save() { fstream outfile; outfile.open("f:flsdfj.txt",ios::app); if(!outfile) { cout<<"f can't open.\n"; abort(); } outfile<<"Sales manger"< outfile<<"ID"< } 5. Eixt(退出):利用exit来完成退出系统功能。 四、设计和调试分析 程序清单: #include #include #include #include #include class employee { public: employee() { salary=0; } void pay(){} void print(){} void input() { cout<<"ID:"; cin>>no; cout<<" NAME:"; cin>>name; cout<<" SEX(m/w):"; cin>>sex; cout<<" AGE:"; cin>>age; } protected: int no; char name[8]; float salary; char sex; int age; }; class manager:virtual public employee { protected: float monthlypay,sale; public: manager(){monthlypay=8000;} void input(){cout<<"Manger";employee::input();} void save() { fstream outfile; outfile.open("f:flsdfj.txt",ios::app); if(!outfile) { cout<<"f can't open.\n"; abort(); } outfile<<"Manger"< outfile<<"ID"< } void pay(){salary=monthlypay;} void print() { cout<<"├─────┼─────┼─────┼─────┼─────┤"< cout<<"│"< <<"│"< } }; class technician:virtual public employee { private: float hourlyrate; int workhours; public: technician(){hourlyrate=100;} void pay() { cout< cin>>workhours; salary=hourlyrate*workhours; } void input(){cout<<"TECHNICIAN"< void save() { fstream outfile; outfile.open("f:flsdfj.txt",ios::app); if(!outfile) { cout<<"f can't open.\n"; abort(); } outfile<<"TECHNICIAN"< outfile<<"ID"< } void print() { cout<<"├─────┼─────┼─────┼─────┼─────┤"< cout<<"│"< <<"│"< } }; class salesman:virtual public employee { protected: float commrate; float sales; public: salesman(){commrate=0.04;} void input(){cout<<"SALEMAN";employee::input();} void save() { fstream outfile; outfile.open("f:flsdfj.txt",ios::app); if(!outfile) {