石油大学小型工资管理系统C++.docx
- 文档编号:2837648
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:22
- 大小:83.17KB
石油大学小型工资管理系统C++.docx
《石油大学小型工资管理系统C++.docx》由会员分享,可在线阅读,更多相关《石油大学小型工资管理系统C++.docx(22页珍藏版)》请在冰点文库上搜索。
石油大学小型工资管理系统C++
中国石油大学(华东)信息与控制工程学院
《程序设计实习》报告
小型公司工资管理系统设计
专业班级:
学 号:
姓 名:
实习时间:
2015年7月
目录
一、实习内容………………………………………………………………………………1
二、设计思路………………………………………………………………………………4
三、程序调试过程中典型问题及解决方法………………………………………………5
四、程序使用说明…………………………………………………………………………6
五、总结及心得体会………………………………………………………………………22
一、实习内容
设计一个简单的《小型公司管理系统》,。
了解系统开发的需求设计、类层次设计、模版分析、模块组装与整体调试的过程;熟悉程序设计的方法。
1..题目:
小型公司工资管理系统的设计
类的结构
先创建了一个Employer基类.然后派生出四个类:
Manager、Technician、Salesman、Salemanager。
分别对经理、技术员、销售员、销售经理的数据进行输入。
然后选用了一个switch的多分枝选择结构,依次据菜单的选择条件执行数据的输入、数据统计、数据打印、数据备份和退出等。
数据的备份要用到fstream类,用来支持对磁盘文件的输入输出。
对于switch,结束循环用到exit函数。
此函数的参数为任意整数。
运行程序后,根据菜单栏的提示选择操作。
输入“1”回车后,进入职工基本数据输入栏,在这里,要将所有的技术员、销售员、销售经理、经理的职工号、姓名、性别、工作时间等信息输入程序中。
职工的数据输入完成后自动跳转到菜单栏,选择“2”回车后进入到数据统计界面,程序会自动对你输入的各销售经理下属销售员的销售额及销售额之和进行统计,并对销售经理按工资进行排序。
数据统计完成后,选择“3”,程序会对你输入的职工基本信息进行打印,打印结果显示在控制台下。
在菜单栏中继续选择“4”后,程序将对所有的员工信息进行打印并保存到文件中。
最后选择“5”,根据提示是否退出本程序,输入“Y”,结束程序执行;输入“N”,返回主菜单继续进行程序。
2.设计说明与基本要求:
(1)公司主要有4类人员:
经理、技术员、销售员、销售经理。
要求存储这些人的职工号、姓名、性别、年龄、月工资等信息;
(2)工资的计算方法:
经理:
固定月薪为8000元;技术员:
工作时间×工资(100元/小时);销售员:
销售额×4%提成;销售经理:
底薪(5000元)+下属销售员销售额总额×0.5%;
(3)员工基本数据的输入:
要求每类人员不能少于4人,其中销售员需要8名,每名销售经理手下有2名销售员。
3.实现的基本功能:
数据输入、数据统计、数据打印、数据备份、退出。
(应用程序中要有菜单,用于选择各项功能)
4.菜单说明
①数据输入要通过键盘;
②统计是统计销售经理下属销售员的销售额及销售额之和,销售经理按工资冒泡排序;
③数据打印是以表格形式在屏幕上输出;
④数据备份是将所有的员工信息保存到文件;
⑤退出:
结束程序运行。
二、设计思路
从给出的运行结果看主函数是一个选择结构,在这里我采用switch结构,根据学过的c++知识合理的定义类及其对象在类中声明公有函数,来完成对保护数据成员的调用,留作接口,输出数据。
根据运行结果菜单来看知道有5个功能,要分为5个函数来一一实现所需功能,所以在整个系统就要分为5大块来完成。
三、程序调试过程中典型问题及解决方法
在编写整个程序的第一部分内容——数据输入函数时,完成的较快,但是类数组的定义并没有定义为全局数组,虽然把第一天的任务完成了,但是这样的定义给第二天的统计函数的书写造成的极大地不便。
结果第二天我又重新修改了第一天的程序,把类数组定义为了全局数组,方便后面程序的调用。
在编写打印函数时,遇到了很多难题,像如何把保护类的成员函数给调用出来,刚开始想到是指针的方法,但是经过尝试,可是实现,但是会让程序显得十分冗杂,后来和同学讨论,发现了一种更为简便的方法,在public里面定义一个return函数,通过这个函数可以访问protected里面的成员函数,这样就可以在类外用这些数据。
在编写主函数时采用的switch结构,但这个结构只能使用一次,于是我想到了for循环语句,考虑到在输入选择操作时,可能有输错误的行为,所以把这个函数能够循环的最大次数规定到了20次。
编写可控各类人员函数时,想要用数组,但是数组必须有初始值,考虑到用户是一家小型公司,就把初始值定为30,方便用户使用。
在编写打印备份函数时,由于各类成员姓名长度不一,无法使表格对齐,翻看了课本,学到了一种控制字符长度的变量setw,不论其后的数据占多大的空间,其长度是固定值。
四、程序使用说明
#include
#include
#include
#include
usingnamespacestd;
voiddatainput();
voidchose();
voidstatistics();
voidprint();
voidbackup();
intn,i;
inta,b,c,d;
classEmployee//基类雇员类
{protected:
intnum,salary;
intage;
stringname;
charsex;
public:
voiddisplay();
intreturn_num()///////////
{returnnum;}
stringreturn_name()//////////
{returnname;}
charreturn_sex()//////////
{returnsex;}
intreturn_age()//////////
{returnage;}
intreturn_salary()//////////
{returnsalary;}
};
voidEmployee:
:
display()//基类成员函数
{
cout<<"姓名:
";
cin>>name;
cout<<"性别(男士填m/女士填w):
";
cin>>sex;
cout<<"年龄:
";
cin>>age;
}
classTechnician:
publicEmployee//定义技术员类,继承方式为共有继承
{
protected:
doubleworktime;
public:
voidTechnician_out()
{cout<<"技术员编号:
";
cin>>num;//输入技术员编号
display();//输入年龄性别姓名
cout<<"工作时间:
";
cin>>worktime;
salary=100*worktime;
}
};
Techniciant[30];//技术员
classManager:
publicEmployee//定义经理类,继承方式为共有继承
{
public:
voidManager_out()
{cout<<"经理编号:
";
cin>>num;//输入经理编号
display();//输入年龄性别姓名
salary=8000;}
};
Managerm[30];//经理
classSalesman:
publicEmployee//定义销售员类,继承方式为共有继承
{protected:
doubleamount;
intbelong_manager_num;
public:
voidSalesman_out()
{cout<<"销售员编号:
";
cin>>num;//输入销售员编号
display();//输入年龄性别姓名
cout<<"销售额:
";
cin>>amount;//输入销售额
salary=amount*0.04;
cout<<"所属经理编号:
";
cin>>belong_manager_num;}//输入所属经理编号
intfun1()//////////
{returnbelong_manager_num;}
stringfun2()//////////
{returnname;}
intfun3()//////////
{returnamount;}
};
Salesmans[30];//销售员
classSalesManager:
publicEmployee//定义销售经理类,继承方式为共有继承
{protected:
intsaleroom;
public:
voidSalesManager_out()
{cout<<"销售经理编号:
";
cin>>num;//输入销售经理编号
display();//输入年龄性别姓名
}
voidSalesManager_salary_calculate(intn)//销售经理工资计算
{salary=n*0.005+5000;
saleroom=n;}
intreturn_salary(){returnsalary;}
intreturn_saleroom(){returnsaleroom;}
};
SalesManagersm[30];//销售经理
voidmain()///////////////////////////////////////////////////////////////////////////////////主函数
{
for(i=0;i<20;i++)
{chose();
switch(n)
{case1:
datainput();break;
case2:
statistics();break;
case3:
print();break;
case4:
backup();break;
case5:
exit(0);break;
default:
cout<<"您输入的数字错误!
"< }} voidchose() {cout<<"★★小型公司工资管理系统★★"< cout<<"┏━━━━━━━━━━━━━━━┓"< cout<<"┃请选择您所需的操作┃"< cout<<"┃数据输入: 1,并按回车键┃"< cout<<"┃数据统计: 2,并按回车键┃"< cout<<"┃数据打印: 3,并按回车键┃"< cout<<"┃数据备份: 4,并按回车键┃"< cout<<"┃退出系统: 5,并按回车键┃"< cout<<"┗━━━━━━━━━━━━━━━┛"< cout<<"请选择您的操作! "; cin>>n; } voiddatainput()////////////////////////////////////////////////////////////////////////////////////////////////数据输入函数 {inti; cout<<"请输入各个职位函数"< cout<<"技术员: "; cin>>a; cout<<"经理: "; cin>>b; cout<<"销售员: "; cin>>c; cout<<"销售经理: "; cin>>d; cout<<"━━━━━━━━━━━━━━"< for(i=0;i t[i].Technician_out(); cout<<"━━━━━━━━━━━━━━"< for(i=0;i m[i].Manager_out(); cout<<"━━━━━━━━━━━━━━"< for(i=0;i s[i].Salesman_out(); cout<<"━━━━━━━━━━━━━━"< for(i=0;i sm[i].SalesManager_out(); cout<<"━━━━━━━━━━━━━━"< } voidorder()////////////////////////////////////////////////////////////////////////////////////////////////冒泡排序函数 {SalesManagerp; for(inty=0;y for(intz=1;z if(sm[y].return_saleroom() {p=sm[z]; sm[z]=sm[y]; sm[y]=p;} } voidstatistics()//////////////////////////////////////////////////////////////////////////////////////////////统计函数 {for(intx=0;x {intsum=0;intj; cout<<"职工号为"< " < cout<<"┏━━━━━━━┳━━━━━━━┳━━━━━━━┓"< cout<<"┃职工号┃姓名┃销售额┃"< for(j=0;j if(sm[x].return_num()==s[j].fun1()) {cout<<"┣━━━━━━━╋━━━━━━━╋━━━━━━━┫"< sum=sum+s[j].fun3(); cout<<"┃"< sm[x].SalesManager_salary_calculate(sum); cout<<"┣━━━━━━━╋━━━━━━━┻━━━━━━━┫"< cout<<"┃"< cout<<"┗━━━━━━━┻━━━━━━━━━━━━━━━┛"< } cout<<"销售经理按工资排序为: "< cout<<"┏━━━━━━┳━━━━━━┳━━━━━━┳━━━━━━┳━━━━━━┓"< cout<<"┃职工号┃姓名┃性别┃年龄┃工资┃"< order(); for(inti=0;i { cout<<"┣━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━╋━━━━━━┫"< cout<<"┃"< < } cout<<"┗━━━━━━┻━━━━━━┻━━━━━━┻━━━━━━┻━━━━━━┛"< } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////打印函数 voidprint() {inti,j,k;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 石油大学 小型 工资管理 系统 C+