工资管理系统C++课程设计.docx

上传人:小飞机 文档编号:5281219 上传时间:2023-06-21 格式:DOCX 页数:44 大小:144.18KB
返回 下载 相关 举报
工资管理系统C++课程设计.docx_第1页
第1页 / 共44页
工资管理系统C++课程设计.docx_第2页
第2页 / 共44页
工资管理系统C++课程设计.docx_第3页
第3页 / 共44页
工资管理系统C++课程设计.docx_第4页
第4页 / 共44页
工资管理系统C++课程设计.docx_第5页
第5页 / 共44页
亲,该文档总共44页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《工资管理系统C++课程设计.docx》由会员分享,可在线阅读,更多相关《工资管理系统C++课程设计.docx(44页珍藏版)》请在三一办公上搜索。

1、面向对象程序设计课程设计报告姓名: 叶小波姚旺富李成班级:信管082信息工程学院信息管理系二0年一月题目:建立企业工资计算及管理系统一、 题目要求:采用面向对象程序设计思想,利用文本文件来存储数据,实现数据的输入,处理,查询(按 姓名,编号,职业,对应员工工资分布情况查询)等功能,并自动计算出工资。二、需求分析:实现数据的输入及处理、编辑、管理、查询(按姓名,编号,职业,对应员工工资分布情况 查询)数据输入的根据题意,输入员工的信息,包括职业,姓名,编号及对应的工资处理 数据,系统会进行处理。查询根据题意,按照姓名、编号、职业、对应员工工资分布情况进行查询三、设计思路:1、 对象设计:抽象类

2、employee,对应产生 3个派生类technician, salesman, manager,再把 salesman,manager,salesman 与 manager 作为虚基类派生出一个 salesmanager 类,从而避免二 义性问题。2、Technician,salesman,manager,salesmanager都用将用到 pay()与 display()两个函数,而且都是派 生得到,于是在基类中设置了虚函数pay()与display().3、函数的设计:设置了 6个函数,分别为添加员工及工资计算,按姓名查询,按编号查询,按 职业查询,对应员工工资分布情况查询,查看所有员工

3、信息4、6个函数分别设为类的友元函数,可以访问私有成员。5、采用文本文件存储数据。四、详细设计:1.类定义:/class employee/雇员类类中函数:employee()/雇员构造函数virtual void pay()=0/雇员工资计算虚函数virtual void display()=0/雇员工资显示虚函数friend void add();/添加员工及工资计算友元函数friend void visitname() ;/按姓名查询友元函数friend void visitnum() ;/按标号查询友元函数friend void visitprofession();/按职业查询友元函数

4、friend void searchpay() ;/对应员工工资分布情况查询友元函数friend void outpay();/打印员工工资friend void outpay();employee()/雇员析构函数变量:no/编号name20/姓名salary/工资/class technician/兼职技术人员类类中函数:technician() void pay() void display() technician() friend void add();friend void visitname();friend void visitnum();friend void visitpr

5、ofession(); friend void searchpay();兼职技术人员构造函数兼职技术人员工资计算函数兼职技术人员工资函数/兼职技术人员析构函数添加员工及工资计算友元函数/按姓名查询友元函数按标号查询友元函数按职业查询友元函数对应员工工资分布情况查询友元函数/打印员工工资变量:no name20 salary hourlyrate workhours编号/姓名/工资每小时的工作费用/工作时间/salesman类中函数:salesman()virtual void pay()=0virtual void display()=0friend void add();friend voi

6、d visitname();friend void visitnum();friend void visitprofession();friend void searchpay();friend void outpay(); salesman()变量:noname20salarycommratesales销售人员构造函数/销售人员工资计算虚函数销售人员工资显示虚函数/添加员工及工资计算友元函数/按姓名查询友元函数/按标号查询友元函数/按职业查询友元函数/对应员工工资分布情况查询友元函数/打印员工工资/销售人员析构函数/编号/姓名/工资/提成销售量/manager类中函数:manager()vi

7、rtual void pay()=0 virtual void display()=0 manager() friend void add();friend void visitname(); friend void visitnum();经理构造函数经理工资计算函数经理工资显示函数经理析构函数/添加员工及工资计算友元函数/按姓名查询友元函数/按标号查询友元函数friend void outpay();friend void visitprofession();按职业查询友元函数friend void searchpay();对应员工工资分布情况查询友元函数friend void outpay

8、();/打印员工工资变量:no编号name20姓名salary/工资monthlypay/月工资/class salesmanager类中函数:employee()virtual void pay()=0virtual void display()=0friend void add();friend void visitname();friend void visitnum();friend void visitprofession();friend void searchpay();friend void outpay(); employee()变量:noname20salarymonthl

9、ypaysales2. 变量定义:manager *m50;technician *t50;salesman *s50;salesmanager *sm50;outfilesnumtnummnumsmnum3、重要函数:void add();void visitname() ;void visitnum() ;void visitprofession();void searchpay() ;/f肖售经理销售经理构造函数销售经理计算函数销售经理工资显示函数/添加员工及工资计算友元函数/按姓名查询友元函数按标号查询友元函数/按职业查询友元函数/对应员工工资分布情况查询友元函数/打印员工工资销售经理

10、析构函数/编号/姓名/工资/月工资销售量经理指针/兼职技术人员指针数组销售人员指针数组销售经理指针数组/文件名销售人员数量/兼职技术人员数量经理人数量销售经理人数量/添加员工及工资计算/按姓名查询/按标号查询/按职业查询/对应员工工资分布情况查询/打印员工工资void outpay();重要类CArray是内存管理的类。可以在任意位置插入数据,删除数据,并自动重新排好。这样给程 序带来了不少方便Carchive允许一个二进制(通常为磁盘存储)的形式保存一个对象的复杂网络。把归档的对 象看成一种二进制流,归档与文件有关,并允许写缓冲区及从硬盘读出或读入数据。B界面流程:1. 主页面Tj C:Us

11、e rss a iLeskt opC 4 4实 Debu 爪工资茎藐,ex?WWSWWF!hxkkhkjcxxhxkkhkjcxmihxmzkxmijcxmihx企业职工工资计算及管理系统)Ot)CWKWXXX)O荣*5气 kmG气I甄工资计算 Rill对应职件旨刖,*0 jlJxK选择哦字进行操作2.添加成员与工资计算. C:UsersaiDeskt0pC+实习Debuc工资紊藐,exe选择*7教字进行操作.员工身份:1:销售员2:兼职技术人员职工编号:2职工姓ki本月销有额:销售员“我蒙一员工身份:1:3:经理心销售经理职退出添加请选择sai230为2本月工资归2 售员2:兼煎括术人员3:

12、经理4:销售经理职退出添加请选择职工编号:1职工姓名hh本月工作时数:20_技杰人员宣处编号为址本日壬律 身份二1厢售员2;呆柬括术人员驶兼职员工b职工编号:3职工姓名lilei经理lilei号为本月工资:8Q90 员工身份二L晶售员2:兼职技术人员 4职工编号:4职工姓名1MHi所繇门月销售量23. 半:20003 :经理3 :经理3.按忝a 、彳况 宣1号墨 .编甘况 号becl情 编外码布 询员代分 杳一人费 要毒工 AKAT 输职输员虐心销售经理队退出舔加请选择4:销售经理队退出添加请选择唳工且工篡立算我姓宅查国群简输出明君员工的工,小通由为以本月工魂七一、彩5蓄矗普青瓮魅富嘴号查询以

13、按职业查询5/对应职号查询,4按职业查询5/对应职4. 按4请选择要查询的职业销售员 小兼职技术人员3:经理伞销售经理1销僵人员信息如下:销唇员认编号为)本月工资海请新入操喧持马H趟噌工及工遗计算刀盘姓名查询以按编号查询按职业查询A对应职 业员工工该分布情况羞都6输出薜有员工箭工资州退出系?如&选择要查询的职业销售员 眼兼职技术人员3;经理4;销售经理兼职枝不人员信息如下=蕙职损损扃绊顷号池座生或明 一5. 按对应职业员工分布情况查询DH员朝H编号为2杰月工资疗2员1卯虹叫锵号为S本月工资= 93.6 5abc编号为6)赤月工资:翎猫木人员泸点号为1珪月工资壮物为3)本月工赍渭。施|销售经理目

14、i编号为心本月夸气弛。点工袈工黄6输出肖请毓入操作代码(1 *P员工工盎分布情况矗建要职业知给鲍库的分布都:销售员,n兼职技术人员3:经理4:销售经理,请选择1销演员耕H箱号为砖车月工资* 销卷员m 莓号为2本月工资鸿4 !,g- 口 _ j.i-i II I _J II i -.hr- 按职业查询5/对应职lenkenctf 岁输有资所员出工工6.六、调试分析:调试过程中一些常见的小错误就不说了。调试中主要遇到的问题有二1:定义了类的变量数组,放在主函数之外时,不能编译成功,于是定义类的指针变量数组进行操作,就 可以在类外进行了。2;两个基类派生出一个类时,出现二义性问题,用虚基类解决了。3

15、.部分函数不能调用类中的私有成员,用友元函数得以解决。七、心得体会:经过一星期的课程实习,重设计到实现,虽然花费了不少时间,但也学到了很多。主要总结以下几点:1:运用面向对象程序设计的思想。并将文件读入,读出,多态,派生,虚基类,虚函数,合理整合并运 用在代码中,实现程序。2. 程序代码实现是个耐性,细心的过程,写完一段,调试一段,遇到问题,分析问题,解决问题,事半功倍。3. 提高了动手能力。课程设计虽然技术了,C+是一块很大的领域,还有很多地方和知识点不了解,要我们不断地学习,探索, 思考,提高我们的能力。八、源代码:#include#include#include#includeclass

16、 employee(protected:int no;char name20;float salary;public:employee()(coutno;coutname;salary=0; virtual void pay()=0;virtual void display()=0;friend void add();/添加员工及工资计算friend void visitname() ;/按姓名查询friend void visitnum() ;/按标号查询friend void visitprofessio按职;业查询friend void searchpay() ; /对应员工工资分布情况

17、查询friend void outpay();employee();class technician:public employeeprivate:float hourlyrate;int workhours;public:technician()hourlyrate=100;void pay()coutnameworkhours;salary二hourlyrate*workhours;void display()(cout兼职技术人员name(编号为no)本月工资:salaryendl;/添加员工及工资计算按姓名查询/按标号查询按职业查询对应员工工资分布情况查询friend void add

18、();friend void visitname();friend void visitnum() ;friend void visitprofession();friend void searchpay();friend void outpay();technician();class salesman:virtual public employeeprotected:float commrate;float sales;public:salesman()commrate=0.4;void pay() ( coutnamesales;salary=sales*commrate;void di

19、splay()(cout销售员name(编号为no)本月工资:salaryendl;/添加员工及工资计算按姓名查询/按标号查询按职业查询对应员工工资分布情况查询friend void add();friend void visitname();friend void visitnum() ;friend void visitprofession();friend void searchpay();friend void outpay();salesman();class manager:virtual public employeeprotected:float monthlypay;publ

20、ic:manger()(monthlypay=8000;void pay()salary=8000;void display()cout经理name(编号为no)本月工资:vvsalaryvvendl;friend void add();/添加员工及工资计算friend void visitname();按姓名查询friend void visitnum() ;/按标号查询friend void visitprofession(); 按职业查询friend void searchpay();对应员工工资分布情况查询friend void outpay();manager();class sal

21、esmanager:public manager,public salesman public:salemanager()(monthlypay=5000;commrate=0.05;void pay()(coutnamesales;salary=5000+commrate*sales;void display()(cout销售经理name(编号为no)本月工资:salaryendl;/添加员工及工资计算按姓名查询/按标号查询按职业查询对应员工工资分布情况查询答应员工工资friend void add();friend void visitname();friend void visitnum

22、() ;friend void visitprofession();friend void searchpay();friend void outpay();salesmanager();int option,flag,i,no,k;float salary;char name20;fstream outfile;manager *m50;technician *t50;salesman *s50;salesmanager *sm50;int mnum=0,tnum=0,smnum=0,snum=0,j=0,profession=0;void add();/添加员工及工资计算void visi

23、tname();按姓名查询void visitnum();按标号查询void visitprofession(); 按职业查询void searchpay();对应员工工资分布情况查询void outpay();void main()(coutvv请选择您需要的操作! vvendl;coutvvttt*vvendl;coutvvttt*企业职工工资计算及管理系统*vvendl;coutvvttt*vvendl;coutvvttt*vvendl;coutttt*1、添加员工及工资计算*endl;coutttt*2、按姓名查询*endl;coutttt*3、按标号查询*endl;coutttt*4

24、、按职业查询*endl;coutttt*5、对应职业员工工资分布情况查询*endl;coutttt*6、输出所有员工的工资*endl;coutttt*0、退出系统*endl;coutttt*endl;cout选择0-7数字进行操作option;outfile.open(text,ios:out);if(!outfile)(couttext cant openendl;exit(1);while(option!=0)(switch(option)(case 1:/添加员工及工资计算add();break;case 2:/按姓名查查询(visitname();break;case 3:/按标号查询

25、(visitnum();break;case 4:/按职业查询(visitprofession();break;case 5:/对应员工工资分布情况查询(searchpay();break;case 6:(outpay();break;cout请输入操作代码(1添加员工及工资计算/2按姓名 查询/3按编号查询/4按职业查询5/对应职业员工工资分布情 况查询/6输出所有员工的工资/0退出系统)option;outfile.close();void add()(flag=1;while(flag!=0)(cout员工身份:1:销售员2:兼职技术人员 3:经理4: 销售经理0:退出添加请选择flag

26、;switch(flag)(case 2:(ttnum=new technician;ttnum-pay();ttnum-display();outfile兼职技术人员name(编号 为 no) 本 月 工 资:salarypay();ssnum-display();outfile销售员name(编号为 no)本月工资:salarypay();mmnum-display();outfile经 理name(编号为 no)本月工资:salarypay();smsmnum-display();outfile销售经理name(编号为 no) 本 月工资:salaryendl;smnum+;j+;bre

27、ak;void visitname()(coutname;int sign4=0;for(i=0;iname,name)=0)cout销售员name(编号为 no)本月工资:salaryendl;break;if(isnum)return;elsesign0=1;for(i=0;iname,name)=0)cout兼职技术人员name(编号为no)本月工资:salaryendl;break;if(itnum)return;elsesign1=1;for(i=0;iname,name)=0)(cout 经 理 name( 编号为 no)本月工资:salaryendl;break;if(imnum

28、)return ;elsesign2=1;for(i=0;iname(编号为 no)本月工资:smi-salaryendl;break;if(ismnum)return;elsesign3=l;if(signO&signl&sign &sign3)(cout该人不存在,请确认!endl;void visitnum()按编号查询(cout请输入要查询编号:cinno;int sign4=0;for(i=0;ino=no) cout销售员si-name(编号为 no)本月工资:si-salaryendl;break;if(isnum)return;elsesignO=l;for(i=0;ino=n

29、o)(cout兼职技 术人员ti-name(编号为 no)本月工资:t i - salary endl;break;if(itnum)return;elsesignl=l;for(i=0;ino=no) (cout 经 理 name( 编号为 no)本月工资:salaryendl;break;if(imnum)return;elsesign2=1;for(i=0;ino=no)(cout销售经理name(编号为 no)本月工资:salaryendl;break;if(ismnum)return;elsesign3=1;if(sign0&sign1&sign2&sign3)(cout该人不存在,

30、请确认!endl;void visitprofession() 按职业查询(cout请选择要查询的职业;cout1:销售员 2:兼职技术人员 3:经理4:销售经理profession;switch(profession)(case 1:(if(snum=0)(cout无销售人员信息,请确认! endl;else(cout销售人员信息如下:endl;for(i=0;isnum;i+) (cout销售员name(编号为 no)本月工资:salaryendl;break;case 2:(if(tnum=0)(cout无兼职技术人员信息,请确认! endl;else(cout兼职技术人员信息如下:en

31、dl;for(i=0;itnum;i+)(cout兼职技术人员name(编号 为no)本月工资:salaryendl;break;case 3:(if(mnum=0)(cout无经理人员信息,请确认!endl;else(cout经理人员信息如下:endl;for(i=0;imnum;i+)(cout经 理name(编号为no)本月工资:salaryendl;break;case 4:(if(smnum=0)coutvv”无销售经理信息,请确认!endl;else(cout销售经理信息如下:endl;for(i=0;iname(编号为 no)本月工资:smi-salaryendl;break;)

32、void searchpay()对应员工工资分布情况查询(int flag;cout请选择要职业,给出对应的分布情况endl;coutl:销售员,2:兼职技术人员3:经理4:销售经理,请 选择endl;cinflag;switch(flag)(case 1:(if(snum=0)(cout无销售员信息,请确认!;break;for(i=0;isnum-1;i+)(k=i;for(j=i+1;jsalarysalary)(k=j;strcpy(name,si-name);strcpy(si-name,sk-name);strcpy(sk-name,name);salary=si-salary;s

33、i-salary=sk-salary;sk-salary=salary;no=si-no;si-no=sk-no;sk-no=no;for(i=0;isnum;i+)(cout销售员name(编号为no)本月工资:salaryendl;break;case 2:(if(tnum=0)(cout无兼职技术人员信息,请确认!;break;for(i=0;itnum-1;i+)k=i;for(j=i+1;jsalarysalary)(k=j;strcpy(name,ti-name);strcpy(ti-name,tk-name);strcpy(tk-name,name);salary=ti-salary;ti-salary=tk-salary;tk-salary=salary;no=ti-no;ti-no=tk-no;tk-no=no;for(i=0;itnum;i+)(cout兼职技术人员name(编号为no)本月工资:salaryendl;case 3:(if(snum=0)(c

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号