




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中国石油大学(华东)信息与控制工程学院C+程序设计实习报告小型公司工资管理系统的设计专业班级:XX级 xx班学号:XXXXXXXX姓名:XXX 时 间:2013.7.227.26目录一、 实习内容1 1.1、课程设计的目的1 1.2、设计题目及要求1二、 设计思路2三、 程序清单43.1、程序源代码4四、 运行结果134.1、程序运行144.2、备份文本信息15五、 程序使用说明16六、 总结及心得体会171程序设计实习报告一:实习内容1.1、课程设计的目的 此次课程设计的目的是以程序设计语言(C/C+)为基础,针对具有一定难度的综合性题目,进行分析、编程、调试和运行,进一步掌握面向对象和面向过程程序设计的基本方法和编程技巧,巩固所学理论知识,使理论与实践相结合,提高分析问题、解决问题的能力。通过设计一个简单的小型公司工资管理系统,进一步熟悉C+中类的概念、类的封装、继承和多态的实现方式。了解系统开发的需要分析,类层次设计,模块分析,编码测试,模块组装与整体调试的全过程,逐步熟悉程序设计的方法,并养成良好的编程习惯。1.2、设计题目及要求1 题目:小型公司工资关系系统设计2 设计说明与要求 (1) 公司主要有4类人员:经理、技术员、销售员、销售经理。要求储存这些人的职工号姓名、月工资、年龄、性别等信息。 (2) 工资的计算方法A、经理:固定月薪为8000元;B、技术员:工作时间小时工资(100元每小时);C、销售员:销售额4%提成;D、销售经理:底薪(5000元)+所辖部门销售额总额0.5%;(3) 类的层次结构大体如下:雇员类 技术员类销售员类经理类销售经理类 (4) 输入员工基本数据,要求每类人员不能少于4人,员工信息输出格式参考运行效果。 (5) 实现功能 应用程序中要有菜单,用于选择各种功能,其中 数据输入:输入各种数据; 数据统计:统计各种销售经理下属销售员的销售额及限售额之和;销售经理按工资进行的冒泡排序; 数据打印:打印各类员工的数据信息; 数据备份:把各类员工的数据星系写入文件中保存; 退出本系统; (6) 菜单说明 数据录入指通过键盘输入各类员工的各项数据; 数据统计指统计各销售经理下属销售员的销售额及销售额之和;销售经理按工资进行冒泡法排序; 数据打印指按照表格的格式在屏幕上输出个员工的信息; 数据备份指将所有员工的信息保存到文件; 退出:结束程序的运行。 (7) 注意一个销售经理管辖多个销售员。 (8) 其他功能可以自己扩充(扩充的功能若比较合理可适当加分)。 (9) 要求在控制台下完成(显示内容都在黑屏下显示)。二、设计思路1、首先整体考虑程序应该实现的功能,共数据输入,数据统计,数据打印,数据备份和退出系统5个。2、然后定义一个Employee的雇员基类,然后由此派生出Tech,Manager,Salesman三个分别为技术员类,经理类,销售员类;再由Manager派生出销售经理类Salesmanager。所有的继承都是公有继承,每个类中的成员都是protected型的,基类中定义有数据输入函数。3、主函数里定义了四个对象数组,Tech TA;Manager MB;Salesman SC;Salesmanager SMD。 4、整个程序由主函数的一个for循环控制,根据输入的操作选项通过一个switch语句判断该进行什么操作,每一个case后面对应一个函数,每个函数对应一个操作,1对应数据输入,2对应数据统计,3对应数据打印,4对应数据备份,5对应退出系统。5、数据统计、打印以及备份都以表格形式输出。表格通过制表符进行设计。表头表尾表中、菜单还有分隔符均单独定义成void 型的函数。如:void tou()coutendl;cout 职工号 姓名 性别 年龄 工资 endl;6、case 中调用四个带参的函数fun3(T,M,S,SM)、data_tongji(T,M,S,SM)、data_print(T,M,S,SM)、data_beifen(T,M,S,SM)。四个函数均用了四个循环语句分别进行输入、统计、打印、备份。如输入中的一个:for(i=0;iA;i+)Ti.data_cin();coutendl;data_cin()这类函数在各个类中定义,并且同名,这样能简化程序。7、在进行销售经理的数据输出时,考虑其与销售员之间所属关系,定义若干全局数组double wageD单独存放销售经理的工资,排序时通过if语句先判断所属关系,再进行冒泡法排序,这是要用到双重循环。8、考虑各种数据类型还有所需的C+内的函数,要引用 这四个头文件。用于数据备份,使用时,先用ofstream outfile;outfile.open(工资管理系统.txt,ios:out);打开磁盘流文件,并且对备份文件进行命名,同时确定存储位置。用其setw()设置输出数据的宽度,便于表格的制作9、因为类中成员都是保护类型的,所以要定义属于各类的返回成员值的函数,如turn_belong()、turn_num()三、程序清单#include#include#include/用于数据备份#include/设置输出数据的宽度。比如setfill,setw,setbase,setprecision)using namespace std;const int A=4,B=4,C=8,D=4;/定义全局常变量const int a=8000;const int b=5000;const double c=0.005;const int d=100;const double e=0.04;int n=0;int m2=0,0;int t2;class Employee/雇员类(基类) public: void data_cin()/成员函数 coutname; coutsex; coutage; int turn_num() return num; string turn_name() return name; char turn_sex() return sex; int turn_age() return age; protected: int num; string name; int age; char sex; int gz;class Tech:public Employee/技术员类(雇员类派生类) public: void data_cin() coutnum; Employee:data_cin(); couttime; int turn_gz1() return d*time; protected: int time;class Salesman:public Employee/销售员类(雇员类派生类) public: Salesman()sales_money=0; void data_cin() coutnum; Employee:data_cin(); coutsales_money; coutbelong; gz=sales_money*e; int turn_sales_money() return sales_money; int turn_belong() return belong; int turn_gz2() return sales_money*e; protected: int sales_money; int belong;class Manager:public Employee/经理类(雇员类派生类) public: void data_cin() coutnum; Employee:data_cin(); gz=a; int turn_gz3() return a; ;class Salesmanager:public Manager/销售经理类(经理类派生类) public: int turn_num() return num; void data_cin() coutnum; Employee:data_cin(); ;void fun1();/声明void fun2();void tou();void wei();void zhong();double wageD;/工资计算方法double SM_wage(Salesman S,Salesmanager SM)int i,j,k;double p;Salesmanager q;for(k=0;kD;k+) wagek=0; for(i=0;iD;i+)double sum=0; for(j=0;jC;j+) if(SMi.turn_num()=Sj.turn_belong()sum+=Sj.turn_sales_money(); wagei=sum*c+b; for(i=0;iD-1;i+) for(j=0;jD-1-i;j+) if(wagejwagej+1)p=wagej+1;wagej+1=wagej;wagej=p; q=SMj+1;SMj+1=SMj;SMj=q; return 0;void fun1()cout-endl;void fun2()cout 小型公司工资管理系统endl; coutendl; cout 请选择您所需的操作 endl; cout 数据输入:1,并按回车键 endl; cout 数据统计:2,并按回车键 endl; cout 数据打印:3,并按回车键 endl; cout 数据备份:4,并按回车键 endl; cout 退出系统:5,并按回车键 endl; coutendl; cout请输入一个操作:;void tou()coutendl;cout 职工号 姓名 性别 年龄 工资 endl;void zhong()coutendl;void wei()coutendl;void fun3(Tech T,Manager M,Salesman S,Salesmanager SM)/数据输入 (函数主体)fun1(); int i; for(i=0;iA;i+)Ti.data_cin();coutendl; fun1(); for(i=0;iB;i+)Mi.data_cin();coutendl; fun1(); for(i=0;iC;i+)Si.data_cin();coutendl; fun1(); for(i=0;iD;i+)SMi.data_cin();coutendl; fun1();void data_tongji(Tech T,Manager M,Salesman S,Salesmanager SM)/数据统计 (函数主体)int i,j; for(i=0;iD;i+)cout职工号为SMi.turn_num()销售经理SMi.turn_name()下属销售员的业绩为:endl; coutendl; cout 职工号 姓名 销售额 endl; for(j=0;jC;j+) if(Sj.turn_belong()=SMi.turn_num()coutendl; coutsetw(12)Sj.turn_num()setw(12)Sj.turn_name()setw(12)Sj.turn_sales_money()endl; mi+=Sj.turn_sales_money(); coutendl; cout销售额总计 setw(20)mi endl; coutendl; cout销售经理排序为:endl; tou(); SM_wage(S,SM); for(i=0;iD;i+)zhong(); coutsetw(6)SMi.turn_num() setw(6)SMi.turn_name() setw(6)SMi.turn_sex() setw(6)SMi.turn_age() setw(6)wagei endl; wei();void data_print(Tech T,Manager M,Salesman S,Salesmanager SM)/数据打印 (函数主体)SM_wage(S,SM);int i; cout请稍等endl; cout职工基本情况一览表如下:endl; cout技术员endl; tou(); for(i=0;iA;i+)zhong(); coutsetw(6)Ti.turn_num() setw(6)Ti.turn_name() setw(6)Ti.turn_sex() setw(6)Ti.turn_age() setw(6)Ti.turn_gz1() endl;wei();fun1();cout经理endl;tou();for(i=0;iB;i+)zhong();coutsetw(6)Mi.turn_num() setw(6)Mi.turn_name() setw(6)Mi.turn_sex() setw(6)Mi.turn_age() setw(6)Mi.turn_gz3() endl;wei();fun1();cout销售经理endl;tou();for(i=0;iD;i+)zhong();coutsetw(6)SMi.turn_num() setw(6)SMi.turn_name() setw(6)SMi.turn_sex() setw(6)SMi.turn_age() setw(6)wagei endl;wei();fun1();cout销售员endl;coutendl;cout 职工号 姓名 性别 年龄 工资 所属部门经理编号endl;for(i=0;iC;i+)coutendl; coutsetw(6)Si.turn_num() setw(6)Si.turn_name() setw(6)Si.turn_sex() setw(6)Si.turn_age() setw(6)Si.turn_gz2() setw(10)Si.turn_belong() endl;coutendl;fun1();void data_beifen(Tech T,Manager M,Salesman S,Salesmanager SM) /数据备份 (函数主体) SM_wage(S,SM); int i;cout数据备份中,请稍等endl; coutendl数据备份完成!endl;ofstream outfile;outfile.open(工资管理系统.txt,ios:out); outfile职工基本情况一览表如下:nendl; outfile技术员endl;outfileendl;outfile 职工号 姓名 性别 年龄 工资 endl;for(i=0;iA;i+)outfileendl;outfilesetw(6)Ti.turn_num() setw(6)Ti.turn_name() setw(6)Ti.turn_sex() setw(6)Ti.turn_age() setw(6)Ti.turn_gz1() endl;outfileendl;outfile-endl;outfile经理endl;outfileendl;outfile 职工号 姓名 性别 年龄 工资 endl;for(i=0;iB;i+)outfileendl;outfilesetw(6)Mi.turn_num() setw(6)Mi.turn_name() setw(6)Mi.turn_sex() setw(6)Mi.turn_age() setw(6)Mi.turn_gz3() endl; outfileendl; outfile-endl; outfile销售经理endl;outfileendl;outfile 职工号 姓名 性别 年龄 工资 endl; for(i=0;iD;i+)outfileendl;outfilesetw(6)SMi.turn_num() setw(6)SMi.turn_name() setw(6)SMi.turn_sex() setw(6)SMi.turn_age() setw(6)wagei endl; outfileendl;outfile-endl;outfile销售员endl;outfileendl;outfile 职工号 姓名 性别 年龄 工资 所属部门经理编号endl;for(i=0;iC;i+)outfileendl;outfilesetw(6)Si.turn_num() setw(6)Si.turn_name() setw(6)Si.turn_sex() setw(6)Si.turn_age() setw(6)Si.turn_gz2() setw(10)Si.turn_belong() endl;outfileendl;outfile-endl;int main()/主函数void display(Tech T,Manager M,Salesman S,Salesmanager SM,int n);/display函数声明Tech TA;Manager MB;Salesman SC;Salesmanager SMD;int i;for(i=1;in;display(T,M,S,SM,n);if(n=5)break;return 0;void display(Tech T,Manager M,Salesman S,Salesmanager SM,int n)/display函数主体switch(n)/选择结构case 1:fun3(T,M,S,SM);break;case 2:data_tongji(T,M,S,SM);break;case 3:data_print(T,M,S,SM);break; case 4:data_beifen(T,M,S,SM);break; case 5:coutendl;break; default:cout请重新选择操作endl;break;四、运行结果以上图片顺序为:1 23 45 67 89 10五、程序的使用说明1、打开程序后,屏幕上有提示“请选择一个操作:”,用户首先输入1进行数据输入;2、输入1后,会逐项显示所要输入的成员信息,按顺序输入即可;3、数据输入完以后,会返回菜单由用户重新选择其他操作。一般应该进行2操作。4、输入2,即进行数据统
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 平高集团安全生产培训课件
- 装灯安全协议书9篇
- 委婉提建议课件
- Fluralaner-intermediate-4-Acetyl-2-methylbenzoic-acid-生命科学试剂-MCE
- 央财张川川课件
- 平衡课件教学课件
- 农发行南充市南部县2025秋招笔试创新题型专练及答案
- 2025年新能源汽车内饰色彩搭配创新趋势研究报告
- 新能源汽车自动驾驶在新能源调度中的应用与调度系统升级报告
- 农发行宁德市福安市2025秋招笔试英语题专练及答案
- DL-T 2574-2022 混流式水轮机维护检修规程
- 脑电图基础知识及判读课件
- 病毒性脑炎临床路径(2016年版)
- IATF16949项目移交管理程序
- 第三节酒店业的演变-课件
- GB/T 8758-2006砷化镓外延层厚度红外干涉测量方法
- GB/T 6396-2008复合钢板力学及工艺性能试验方法
- GB/T 35759-2017金属清洗剂
- ABB缠绕型干式变压器
- GB/T 21063.1-2007政务信息资源目录体系第1部分:总体框架
- 第三讲:新闻真实性分析课件
评论
0/150
提交评论