




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中国石油大学(华东)信息与控制工程学院程序设计实习报告小型公司工资管理系统的设计专业班级:电子信息工程10-3学号:10052324姓名:杨浩 时 间:2011.7.142011.7.172011年7月目录一、 实习内容1二、 设计思路2三、 程序清单3四、 运行结果4五、 程序使用说明5六、 总结及心得体会6程序设计实习报告一、实习内容1. 实习内容是要设计一个面向小型公司的工资管理系统。2. 小型公司有经理、技术员、销售员以及销售经理等四类员工。3. 该系统可对各个员工的各种情况(包括名字、年龄、性别、职工号、工资状况、工作时间、销售额)进行输入。然后可以输出。4. 可以按姓名或职工号对员工基本信息进行查询。5. 系统可以对销售经理下属的销售员的各种情况进行统计,并可以对销售经理按销售总额由高到低进行排序。6. 系统可以对各类员工的各种情况进行统计。7. 系统可以将员工所有的基本信息进行保存备份。二、设计思路首先,创建了一个Employer基类.然后派生出四个类: Manager、Technician、Seller、Salemanager.在基类定义了四个虚函数用于对派生类所有数据进行输入、输出、统计、打印、排序、查询等。其次,在总体结构上,建立一级菜单,用于选择各种功能.1. 数据输入:输入员工的各种数据.2. 数据统计:将员工的总数据进行对比排序,然后输出.3. 数据打印:显示输入的各种数据.4. 数据备份:对输入的数据进行保存备份.5. 信息检索:对员工的信息进行检索并输出。6. 退出程序:执行退出程序命令.三、程序清单文件1:head.h#includevoid Sstatistics(); /声明销售员类统计表格函数void Salesroom(); /声明Salemanager类的友元函数 用于数据成员salesroom的赋值和排序void Smstatistics(); /声明销售经理排序表格函数void allprint(Technician *p,int n); /声明打印表格的allprint函数void allprint(Manager *p,int n); /声明打印表格的allprint重载函数void allprint(Salemanager *p,int n); /声明打印表格的allprint重载函数void allprint(Seller *p,int n); /声明打印表格的allprint重载函数void allsave(Technician *p,int n); /声明数据备份的函数void allsave(Manager *p,int n); /声明数据备份的重载函数void allsave(Salemanager *p,int n); /声明数据备份的重载函数void allsave(Seller *p,int n); /声明数据备份的重载函数void num_search(); /声明按职工号检索函数void nam_search(); /声明按姓名检索函数Employer *p;Manager m4;Technician t4;Seller s16;Salemanager sm4;int flags=1;int num;string nam;文件2 class.cpp#include#include#include#includeusing namespace std;fstream outfile;extern flags;class Employerpublic:virtual void input() coutname; coutsex; coutage;void print1() /定义基类的成员虚函数 用于打印固定格式的私有数据成员coutsetw(12)setiosflags(ios:left)numbersetw(12)namesetw(12)sexsetw(12)agesetw(12)payendl;void save() /定义基类的成员虚函数 用于保存固定格式的私有数据成员outfilesetw(12)setiosflags(ios:left)numbersetw(12)namesetw(12)sexsetw(12)agesetw(12)payendl;virtual double pays()return 0;virtual void num_compare(int num) /按职工号比较函数 并输出员工信息 定义为基类的成员函数 if(num=number)cout该员工基本信息如下:endl;cout姓名:nameendl;cout职工号:numberendl;cout性别:sexendl;cout年龄:ageendl;cout本月工资:payendl;coutendl;flags=0;virtual void nam_compare(string nam) /按姓名比较函数 并输出员工 信息 定义为基类的成员函数if(nam=name)cout该员工基本信息如下:endl;cout姓名:nameendl;cout职工号:numberendl;cout性别:sexendl;cout年龄:ageendl;cout本月工资:payendl;coutendl;flags=0;protected:int number;string name;char sex;int age;double pay;class Manager:public Employerpublic:void input()coutnumber;Employer:input();pay=pays();coutendl;double pays()return 8000;class Technician:public Employerpublic:void input()coutnumber; Employer:input();couttime;pay=pays();coutendl;double pays()return 100*time;private:int time; class Seller:public Employer public:void input()coutnumber;Employer:input();coutsaleroom;coutbelong;pay=pays();coutendl;void sprint() /定义Seller类的成员函数 统计用于输出固定格式的私有数据成员coutsetw(12)setiosflags(ios:left)numbersetw(12)namesetw(12)saleroomendl;void print2() /定义该类的成员函数 打印时用于输出固定格式的私有数据成员coutsetw(8)setiosflags(ios:left)numbersetw(8)namesetw(8)sexsetw(8)agesetw(8)paysetw(16)belongendl; double pays()return saleroom*0.04;double Saleroom()return saleroom;private:int saleroom;int belong;class Salemanager:public Employerpublic:void input()coutnumber; Employer:input();coutendl;void smprint() /定义该类的成员函数 用于输出固定格式的私有数据成员pay=pays();coutsetw(12)setiosflags(ios:left)numbersetw(12)namesetw(12)sexsetw(12)agesetw(12)salesroomendl;double pays()return 5000+salesroom*0.005;friend void Salesroom();private:int salesroom;文件3:main.cpp#include001.cpp#includehea d.husing namespace std;int main()int i,j,k;cout请按屏幕提示进行操作:endlendl;next:while (1) cout *小型公司工作管理系统*endl;coutendl;cout 请选择您所需的操作 endl;cout 数据输入:1 并按回车键 endl;cout 数据统计:2 并按回车键 endl;cout 数据打印:3 并按回车键 endl;cout 数据备份:4 并按回车键 endl;cout 信息检索:5 并按回车键 endl;cout 退出系统:6 并按回车键 endl;coutendl;couti;while(i!=1&i!=2&i!=3&i!=4&i!=5&i!=6)cout您输入错误,请重新输入i;switch(i)case 1:while(1)cout *公司员工数据数据输入*endl;cout经理数据输入 :1 并按回车键endl;cout技术员数据输入 :2 并按回车键endl;cout销售员数据输入 :3 并按回车键endl;cout销售经理数据输入:4 并按回车键endl;cout返回上一级菜单 :5 并按回车键endlendl;coutj;while(j!=1&j!=2&j!=3&j!=4&j!=5)cout您输入错误,请重新输入j;switch (j)case 1:for(k=0;k4;k+)mk.input();break;case 2:for(k=0;k4;k+)tk.input();break;case 3:for(k=0;k16;k+)sk.input();break;case 4:for(k=0;k4;k+)smk.input();break;case 5:goto next;default: break;case 2:Salesroom(); /调用Salemanager类的友元函数 用于数据成员salesroom的赋值和排序Sstatistics(); /调用销售员类统计表格函数Smstatistics(); /调用销售经理排序表格函数break;case 3:while(1)cout *公司员工基本信息打印*endl;cout经理信息打印 :1 并按回车键endl;cout技术员信息打印 :2 并按回车键endl;cout销售员信息打印 :3 并按回车键endl;cout销售经理信息打印:4 并按回车键endl;cout返回上一级菜单 :5 并按回车键endlendl;cout请选择一个操作:j;while(j!=1&j!=2&j!=3&j!=4&j!=5)cout您输入错误,请重新输入j;switch(j)case 1:cout经理基本信息如下:endl;allprint(m,4);coutendl;coutendl;break;case 2:cout技术员基本信息如下:endl;allprint(t,4);coutendl;coutendl;break;case 3:cout销售员基本信息如下:endl;allprint(s,16);coutendl;coutendl;break;case 4:cout销售经理基本信息如下:endl;allprint(sm,4);coutendl;coutendl;break;case 5: goto next;default: break;case 4:outfile.open(c:公司员工基本信息.txt,ios:out);if(!outfile)cerr打开出错!endl;exit(1);cout公司员工的基本信息已备份。endl;outfile经理基本信息如下:endl;allsave(m,4);outfileendl;outfileendl;outfile技术员基本信息如下:endl;allsave(t,4);outfileendl;outfileendl;outfile销售员基本信息如下:endl;allsave(s,16);outfileendl;outfileendl; outfile销售经理基本信息如下:endl;allsave(sm,4);outfileendl;outfileendl;outfile.close();break;case 5:while(1)cout *公司员工基本信息检索*endl;cout按职工号检索 :1 并按回车键endl;cout按姓名检索 :2 并按回车键endl;cout返回上一级菜单 :3 并按回车键endl;coutj;while(j!=1&j!=2&j!=3)cout您输入错误,请重新输入j;switch(j)case 1:coutnum;flags=1;num_search(); /调用按职工号检索函数break;case 2:coutnam;flags=1;nam_search(); /调用按姓名检索函数break;case 3:goto next;default: break;case 6:exit(1);default:exit(1);return 0;void Sstatistics() /销售员类统计表格函数的定义int n,m;for(n=1;n5;n+)cout职工号为40n销售经理下属销售员的业绩为endl; coutendl; coutsetw(14)setiosflags(ios:left)职工号setw(14)姓名setw(14)销售额0;m-) coutendl; s4*n-m.sprint(); coutendl; coutsetw(14)销售额总计:setw(26)s4*n-4.Saleroom()+s4*n-3.Saleroom()+s4*n-2.Saleroom()+s4*n-1.Saleroom()endl; coutendl;coutendl;void Salesroom() /定义Salemanager类的友元函数 用于数据成员的赋值和排序int n,m;for(n=0;n4;n+)smn.salesroom=s4*n.Saleroom()+s4*n+1.Saleroom()+s4*n+2.Saleroom()+s4*n+3.Saleroom();for(n=0;n3;n+)for(m=n+1;m4;m+)if(smn.salesroomsmm.salesroom)Salemanager t; t=smn;smn=smm;smm=t;void Smstatistics() /销售经理排序表格函数的定义cout销售经理按工资排序为:endl; coutendl;coutsetw(14)setiosflags(ios:left)职工号setw(14)姓名setw(14)性别setw(14)年龄setw(14)销售额endl;for(int n=0;n4;n+)coutendl; smn.smprint();coutendl;coutendl;void allprint(Technician *p,int n) /定义打印表格的allprint函数int x;coutendl;coutsetw(14)setiosflags(ios:left)职工号setw(14)姓名setw(14)性别setw(14)年龄setw(14)工资endl;for(x=0;xn;x+)coutendl;px.print1();coutendl;void allprint(Manager *p,int n) /定义打印表格的allprint重载函数int x;coutendl;coutsetw(14)setiosflags(ios:left)职工号setw(14)姓名setw(14)性别setw(14)年龄setw(14)工资endl;for(x=0;xn;x+)coutendl;px.print1();coutendl;void allprint(Salemanager *p,int n) /定义打印表格的allprint重载函数int x;coutendl;coutsetw(14)setiosflags(ios:left)职工号setw(14)姓名setw(14)性别setw(14)年龄setw(14)工资endl;for(x=0;xn;x+)coutendl;px.print1();coutendl;void allprint(Seller *p,int n) /定义打印表格的allprint重载函数Int x;coutendl;coutsetw(10)setiosflags(ios:left)职工号setw(10)姓名setw(10)性别setw(10)年龄setw(10)工资setw(18)所属部门经理编号endl;for(x=0;xn;x+)coutendl;px.print2();coutendl;void allsave(Technician *p,int n) /定义数据备份的函数int x;outfileendl;outfilesetw(14)setiosflags(ios:left)职工号setw(14)姓名setw(14)性别setw(14)年龄setw(14)工资endl;for(x=0;xn;x+)outfileendl;px.save();outfileendl;void allsave(Manager *p,int n) /定义数据备份的重载函数int x;outfileendl;outfilesetw(14)setiosflags(ios:left)职工号setw(14)姓名setw(14)性别setw(14)年龄setw(14)工资endl;for(x=0;xn;x+)outfileendl;px.save();outfileendl;void allsave(Seller *p,int n) /定义数据备份的重载函数int x;outfileendl;outfilesetw(14)setiosflags(ios:left)职工号setw(14)姓名setw(14)性别setw(14)年龄setw(14)工资endl;for(x=0;xn;x+)outfileendl;px.save();outfileendl;void allsave(Salemanager *p,int n) /定义数据备份的重载函数int x;outfileendl;outfilesetw(14)setiosflags(ios:left)职工号setw(14)姓名setw(14)性别setw(14)年龄setw(14)工资endl;for(x=0;xn;x+)outfileendl;px.save();outfileendl;void num_search() /定义按职工号检索函数,并输出员工信息for(int x=0;x4;x+)mx.num_compare(num); for(int y=0;x4;y+)ty.num_compare(num);for(int z=0;z4;z+)smz.num_compare(num); for(int q=0;q16;q+)sq.num_compare(num);if(flags=1)cout本公司没有此人!endl;void nam_search() /定义按姓名检索函数,并输出员工信息for(int x=0;x4;x+)mx.nam_compare(nam); for(int y=0;x4;y+)ty.nam_compare(nam);for(int z=0;z4;z+)smz.nam_compare(nam); for(int q=0;q16;q+)sq.nam_compare(nam);if(flags=1)cout本公司没有此人!endl;四、运行结果3五、程序的使用说明此系统是面向小型公司的工资管理系统,可用于有四个经理、四个技术员、四个销售经理及下属的十六个销售员的工资管理。此系统含有多级菜单,一级菜单共包括六个控件。控件一:信息输入,按“1”并按回车键进入下级菜单,二级菜单包括五个控件,可以分别对经理、技术员、销售员、销售经理的姓名、性别、职工号、年龄、工资等基本信息进行输入,可根据屏幕的提示进行相关信息的输入。控件二:信息统计,按“2”并按回车键,直接对每个销售经理下属的四位销售员的姓名、性别、职工号、年龄、工资等基本信息进行统计,并对四位销售经理按工资又高到低排序并输出。控件三:数据打印,按“3”并按回车键进入下一级菜单,此时可分别选择对经理、技术员、销售员和销售经理的职工号、姓名、性别、年龄、工资等信息进行打印,按“5”并按回车返回主菜单。控件四:数据备份,按“4”并按回车可直接将所有员工的基本信息保存到c盘下“公司员工基本信息.txt”文件中。控件五:员工信息检索,按“5”并按回车进入下级菜单,此时可选择按职工号或按姓名检索。按“3”返回上一级菜单。控件六:结束程序。六、总结及心得体会经过一学期的学习和这几天的实习,学生觉得收获颇丰。虽然要在很短的时间里学完很厚的一本书,上课也很快,但老师教学很有方法,通过课前提问督促大家预习、复习,所以感觉C+还算学懂了。在这里先对这一学期学习C+的学习方法,学习习惯.等做一总结,或许对将来的学习会很有用处。其实这学习方法和学习习惯是一回事,好的学习习惯就是最好的学习方法,好的学习方法一定包括有好的学习习惯。我以前只有课前预习的习惯,这学期在老师课前提问的督促下我才养成了复习的习惯。而且复习还不能只复习一遍,课后课前都必须复习一遍,课后不复习很快就忘了,即便是课后复习了但到了下次课时也忘得差不多了,所以课前又得复习一遍
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江省台州市温岭市书生中学2026届化学高三第一学期期末复习检测模拟试题含解析
- 2025年工业类职业测试题及答案
- 2025年达州市大竹县城区学校考调教师考试笔试试题(含答案)
- 2025年安全用电管理试题及答案
- 铁塔运维基础知识培训课件
- 知识产权检索方法培训课程课件
- 知识产权师培训感悟心得课件
- 知识产权基础培训教材课件
- 知识产权培训评估方法课件
- 体育与健康新课标测试题及答案(2025年)
- 铁路工程线施工安全培训
- 高速公路安防工程施工方案
- 语文教研组活动内容
- 软件正版化培训
- 邮政邮件内部处理业务外包服务投标方案(技术方案)
- 保洁大理石清洗合同范例
- 碎石买卖合同
- DB3205T∕1003-2020 双元制职业教育 人才培养指南
- 2024版中国心力衰竭诊断与治疗指南
- 网络安全普法进校园
- 碳中和技术概论 课件 第4、5章 氢能、生物质能
评论
0/150
提交评论