小型公司工资管理系统C++课程设计报告_第1页
小型公司工资管理系统C++课程设计报告_第2页
小型公司工资管理系统C++课程设计报告_第3页
小型公司工资管理系统C++课程设计报告_第4页
小型公司工资管理系统C++课程设计报告_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、c+程序设计课程设计报告课 题: 小型公司工资管理系统专业班级: xxxxx 学 号: xxxxxxxx 姓 名: xxxxx 评阅意见:评定成绩: 指导老师签名: 2012 年 6 月 12 日指导教师: xxxxx 目录目录一、课程设计内容31.1课程设计的目的31. 2设计题目及要求3二、设计思路4三、程序清单72. 1程序源代码7四、运行结果304.1程序运行313. 2备份文本信息34五、程序使用说明36六、总结及心得体会36(要求:给出一级目录,宋体加粗,四号字, 1.5倍行距)一:课程设计内容1.1、课程设计的目的 此次课程设计的目的是以程序设计语言(c/c+)为基础,针对具有一

2、定难度的综合性题目,进行分析、编程、调试和运行,进一步掌握面向对象和面向过程程序设计的基本方法和编程技巧,巩固所学理论知识,使理论与实践相结合,提高分析问题、解决问题的能力。通过设计一个简单的小型公司工资管理系统,进一步熟悉c+中类的概念、类的封装、继承和多态的实现方式。了解系统开发的需要分析,类层次设计,模块分析,编码测试,模块组装与整体调试的全过程,逐步熟悉程序设计的方法,并养成良好的编程习惯。1.2、设计题目及要求(1) 题目:小型公司工资管理系统 设计(2) 设计题目及要求:1.公司主要有4类人员:经理、技术员、销售员、销售经理。要求存储这些人的职工号、姓名、月工资、岗位、年龄、性别等

3、信息。其中(1)职工编号在输入人员信息时生成,每输入一个人员信息编号顺序加1。(2)程序对所有人员有提升级别的功能。 (3)能够按照不同身份进行月薪的计算。 (4)能按姓名或者编号查找各类人员的信息。(5)能够修改/删除各类人员的信息。(6)能够显示所有人员的信息。2.工资的计算办法:经理:固定月薪为8000;技术员:工作时间小时工资(100元每小时);销售员:销售额4%提成;销售经理:底薪(5000)所辖部门销售额总额0.5%;3)类的层次结构大体如下: 雇员类技术员类经理类销售员类销售经理类1.3 课程设计步骤与方法 1.需求分析:对用户提出的问题提出解决的办法和思路。 2.根据需求,设计

4、系统功能模块,并设计相应的类和界面。 3.根据基本思路,确定输入和输出,设计程序的算法。 4.确定用到的所有类的描述和定义,并设计测试程序来对类进行测试。 6.在计算机上编译程序,检验程序的可运行性。1.4 课程设计报告内容 写设计报告(要求正规打印,a4幅面),内容包括:题目系统功能模块结构图数据结构设计及用法说明程序结构(画流程图)各模块的功能试验结果(包括输入数据和输出结果)体会参考文献附录:源程序清单二、设计思路1、整体考虑程序应该实现的功能,有员工信息管理、职务管理、月薪计算、查找信息、显示所有人员的信息和退出系统6个。2、首先定义一个employee的雇员基类,然后由此派生出man

5、ager、seller、tech三个分别为经理类、销售员类、技术员类;再由seller派生出销售经理类xmanager。每个类中的成员都是public型的,所有的继承都是公有继承,基类中定义有数据输入和输出函数。3、整个程序由主函数的一个for循环控制,根据输入的操作选项通过一个switch语句判断该进行什么操作,每一个case后面对应一个函数,每个函数对应一个操作,1对应信息管理,2对应职务管理,3对应月薪计算,4对应查找信息,5对应显示所有人员的信息,0对应退出系统。4、case中调用了五个无参的函数allsave()exit();datamanagement() ;postmanamen

6、u() ;calculatesal() ;findmenu() ;alldisplay() ;五个函数均用了模板函数的实例化分别进行输入、职务管理、计算月薪、显示全部信息。如输入中的一个:template void showmember(t & t , ti * ti )if(t.n next ) t.p - show() ;showmember()函数在各个类中都定义,并且同名,这样能简化程序。5、在进行信息输入时,在基类中定义了一个虚函数,避免了值的副本,首先给出提示语句,首先选择要输入的职工类型,然后依次调用savefile(),首先创建类的对象指针,如seller * t ;ofstr

7、eam cout (s.txt),建立文件流,创建链表,将所输入的数据都保存至文件,并且对备份文件进行命名,同时确定存储位置。以便之后的查找和删除功能的实现。6、在进行工资计算时,每个类都定义了各自的calcusalary()函数,依次计算出每一种职工的工资,由提示语句选择是否输出。7、职务管理功能的实现,是通过编号来查找要提升职位的人员,选择要升为哪一种职位,然后将多余的数据成员删除,在提升后的成员中将工资重新进行计算,予以赋值。8、查找时,建立函数模板,参数为class t , class ti,需要在哪一个类中查找就将模板实例化为哪一个类,每一次查找时,指针都是先指向文件的起始位置,然后

8、用for循环来控制,先要输入编号,如t.p != null & t.p - num != no;若当前对象的编号与输入的编号不相等,则指针移向下一个对象继续查找,若相等则停止查找,并将所找到的信息全部输出。9、考虑各种数据类型还有所需的c+内的函数,要引用这四个头文件。用于数据保存至文件。 10、修改和删除的功能都是按照编号、利用模板函数实例化来实现的,找到后由switch控制,1.姓名 2.性别 3.年龄 4.编号 5.工资,先选择要修改的属性,然后输入新信息,将原有信息替换;删除时,首先在每一个类中由指针找到要删除的职工,然后将这个对象的每一个数据成员用null覆盖,即清零处理,该职工的信

9、息就被删除了。11、整体构思比较简单,基本能够实现各项功能源程序清单:#include#include#include#includeusing namespace std ;class employeepublic:employee * next ; char name50; int num; int age; char sex8; double salary;char post30;char * getname()return name ;int getnum()return num ;int getage()return age ;char * getsex()return sex ;d

10、ouble getsalary()return salary ;char * getpost()return post ;virtual void get()coutname;coutsex;coutage;coutnum;employee()salary = 0.0 ;virtual void show()couttnametsextagetnumtsalarytpostendl ;class tech:virtual public employeepublic:int hour ;tech * next ;void get()employee:get(); couthour ;double

11、 gethour()return hour ;double calcusalary() salary = 100 * hour ;return salary; ;class seller:virtual public employeepublic:seller *next ;double income ;void get()employee:get();coutincome ;double calcusalary()salary = income * 0.04 ;return salary ;double getincome() return income ; ;class manager:v

12、irtual public employeepublic:manager * next ;void calcusalary()salary = 8000.00 ;class sellerlistpublic :int n ;seller * head , *p ;sellerlist()n = 0 ;p = head = null ;void inputfile() ;void savefile() ; s ;template void addmember(tt & t , ti * ti )ti * p = t.head ;t.head = ti ;if(p = null) t.head -

13、 next = null ;t.head - next = p ;t.n + ;void sellerlist:inputfile()seller * t;char na50 ;ifstream cins (s.txt) ;while(cins na )t = new seller() ;t - next = null ;strcpy(t - name , na ) ;cins (t - post ) (t - sex) (t - num) (t - age) (t - salary) (t - income) ;addmember(s , t ) ;void sellerlist:savef

14、ile() seller * t ;ofstream cout (s.txt) ;for(t = s.head ; t != null ; t = t -next )cout name) post ) sex) num) age) salary) income) next ) salary += t - income * 0.005 ;return salary ;class techlistpublic :int n ;tech * head , * p ;techlist()n = 0 ;p = head = null ;void inputfile() ;void savefile()

15、; t ;template void showmember(t & t , ti * ti )if(t.n next ) t.p - show() ;void techlist:inputfile()char na50 ;tech * t ;ifstream cint (t.txt) ;while(cint na )t = new tech() ;t - next = null ;strcpy(t - name , na ) ;cint (t - post ) (t - sex) (t - num) (t - age) (t - salary) (t - hour) ;addmember(t

16、, t ) ;void techlist:savefile() tech * t ;ofstream cout (t.txt) ;for(t = t.head ; t != null ; t = t -next )cout name) post ) sex) num) age) salary) hour) na )t = new xmanager() ;t - next ;strcpy(t - name , na ) ;cinx (t - post ) (t - sex) (t - num) (t - age) (t - salary) ;addmember(x , t ) ;void xma

17、nagerlist:savefile() xmanager * t ;ofstream cout (x.txt) ;for(t = x.head ; t != null ; t = t -next )cout name) post ) sex) num) age) salary) na )t = new manager() ;t - next = null ;strcpy(t - name , na ) ;cinm (t - post ) (t - sex) (t - num) (t - age) (t - salary ) ;addmember(m , t ) ;void managerli

18、st:savefile() manager * t ;ofstream cout (m.txt) ;for(t = m.head ; t != null ; t = t -next )cout name) post ) sex) num) age) salary)endl ;void exit()coutt您已成功退出系统!endl;exit(0) ;int mainmenu() coutt_endl ;coutt 主菜单endl ;coutt_nnendl ;coutt 1. 员工信息管理endl;coutt 2. 职务管理endl;coutt 3. 月薪计算endl;coutt 4. 员工

19、信息查找endl;coutt 5. 显示所有人员信息endl;coutt 0. 退出程序 endl;coutt_nnendl ; cout ;return 0;void adddatamenu() int sel ;tech * ti ;seller *si ;manager * mi ;xmanager * xi ;coutnnnnt*endl ;coutt 添加员工信息endl ;coutt*nendl ;coutt 1. 技术员endl;coutt 2. 销售员endl;coutt 3. 销售经理endl;coutt 4. 总经理endl;coutt 0. 返回endl;coutt_nn

20、endl ; cout ;while(cinsel & (sel 4 | sel 0 ) ) cout post, 技术员) ; ti - get() ;/ti - show() ;addmember(t , ti) ;break ;case 2 :si = new seller() ;strcpy(si - post , 销售员) ;si - get() ;addmember(s , si ) ;break ;case 3 :xi = new xmanager() ;strcpy(xi - post , 销售经理) ;xi - get() ;addmember(x , xi) ;break

21、;case 4 :mi = new manager() ;strcpy(mi - post , 总经理) ;mi - get() ;addmember(m , mi ) ;break ;default : break ;template void renewmember(t & t , ti * ti )int no , sel ;coutno ;if(findmember(t , ti , no ) = false )coutnt该员工不存在,操作失败! endl ;return ;coutnnntn;coutt1.姓名t2.性别t3.年龄t4.编号t5.工资endl ;cout show(

22、) ;coutntn;coutsel ;if(sel 5 )coutnt对不起,您的输入有误,操作失败 !endl ;return ;char na50 , s8 ;int a , nu ;double sal ;switch(sel )case 1: coutna ;strcpy(t.p - name , na ) ;coutnt修改成功 ! endl ;break ;case 2: couts ;strcpy(t.p - sex , s ) ;coutnt修改成功 ! endl ;break ;case 3: couta ;t.p - age = a ;coutnt修改成功 ! endl

23、;break ;case 4: coutnu ;t.p - num = nu ;coutnt修改成功 ! endl ;break ;case 5: coutsal ;t.p - salary = sal ;coutnt修改成功 ! endl ;break ;default :break ;void renewdata()int sel ;tech * t ;seller * s ;xmanager * x ;manager * m ;coutnnntn;coutt 修改员工信息endl ;couttn;coutt 1. 技术员endl;coutt 2. 销售员endl;coutt 3. 销售经

24、理endl;coutt 4. 总经理endl;coutt 0. 返回endl;couttn; cout ;while(cinsel & (sel 4 | sel 0 ) ) coutnt您的输入有误,请重新输入: ;switch(sel )case 0 : return ;case 1 :renewmember(t , t ) ;break ;case 2 : renewmember(s , s ) ;break ;case 3 : renewmember(x , x ) ;break ;case 4 :renewmember(m , m ) ;break ;default : break ;

25、template bool deletemember(t & t , ti * ti , int no)if(findmember(t , ti , no ) = false )coutnt该员工不存在,操作失败! num = no )delete(t.head ) ;t.head = null ;return true;ti * pi ;for(ti = t.head ; ti - next != null & ( (ti - next - num) != no) ; ti = ti - next ) ;pi = ti - next - next ;delete(ti - next ) ;t

26、i - next = pi ;return true ;void deletedata()int sel ;tech * t ;seller * s ;xmanager * x ;manager * m ;coutnnnt*endl ;coutt_nendl ;coutt 删除员工信息endl ;coutt*nendl ;coutt 1. 技术员endl;coutt 2. 销售员endl;coutt 3. 销售经理endl;coutt 4. 总经理endl;coutt 0. 返回endl;coutt_nnendl ; cout ;while(cinsel & (sel 4 | sel 0 )

27、) coutnt您的输入有误,请重新输入: ;coutendl ;int no ;switch(sel )case 0 : return ;case 1 :cout ;cinno ;if(deletemember(t ,t , no) coutnt删除成功 !endl ;break ;case 2 : cout ;cinno ;if(deletemember(s , s , no)coutnt删除成功 !endl ;break ;case 3 : cout ;cinno ;if(deletemember(x , x, no) ) coutnt删除成功 !endl ;break ;case 4

28、:cout ;cinno ;if(deletemember(m , m , no) ) coutnt删除成功 !endl ;break ;default : break ;void datamanagement() int sel ;while(1)coutnnnnt*endl ;coutt 员工信息管理endl ;coutt*nendl ;coutt 1. 添加信息endl;coutt 2. 修改信息endl;coutt 3. 删除信息endl;coutt 0. 返回endl;coutt_nnendl ;cout ;while(cinsel & (sel 3 | sel 0 ) ) cout

29、nt您的输入有误,请重新输入: ;switch(sel )case 0 : return ;case 1 : adddatamenu() ; break ;case 2 : renewdata() ; break ;case 3 : deletedata() ; break ;default : break ;template bool findmember(t & t , ti * ti , int no)for(t.p = t.head ; t.p != null & t.p - num != no ; t.p = t.p - next ) ;if(t.p != null ) return

30、 true ;else return false ;void all_init()t.head = null ;s.head = null ;m.head = null ;x.head = null ;t.inputfile() ;s.inputfile() ;m.inputfile() ;x.inputfile() ;void allsave()t.savefile() ;s.savefile() ;m.savefile() ;x.savefile() ;template void copymember(t *t , s *s )strcpy(t - name , s - name ) ;s

31、trcpy(t - sex , s - sex ) ;t - age = s - age ;t - num = s - num ;template int changepost(tt t , ti ti )int no , sel ;tech * tt ;seller * ss ;xmanager * xx ;manager * mm ;coutno ;if(findmember(t , ti , no ) = false )coutnt该员工不存在,操作失败! endl ;return no ;coutnnnt*endl ;coutt 调换为: endl ;coutt*nendl ;cout

32、t 1. 技术员endl;coutt 2. 销售员endl;coutt 3. 销售经理endl;coutt 4. 总经理endl;coutt 0. 返回endl;coutt_nnendl ; cout ;while(cinsel & (sel 4 | sel 0 ) ) coutnt您的输入有误,请重新输入: ;cout post ,技术员) ;tt - salary = 0.0 ;tt - hour = 0 ;copymember(tt, t.p ) ;/tt - show() ;addmember(t , tt ) ;/t.head-show() ;/deletemember(t, ti

33、, no ) ;break ;case 2 : ss = new seller() ;strcpy(ss - post ,销售员) ;ss - salary = 0.0 ;ss - income = 0.0 ;copymember(ss, t.p ) ;/ss- show() ;addmember(s , ss ) ;/t.head-show() ;break ;case 3 : xx = new xmanager() ;strcpy(xx - post ,销售经理) ;xx - salary = 8000 ;xx - income = 0.0 ;copymember(xx, t.p ) ;/

34、ss- show() ;addmember(x , xx ) ;/t.head-show() ;break ;case 4 :mm = new manager() ;strcpy(mm - post ,总经理) ;mm - salary = 8000 ;copymember(mm, t.p ) ;/ss- show() ;addmember(m , mm ) ;/t.head-show() ;break ;default : break ;return no ;void postmanamenu()int sel , no ;tech * t ;seller * s ;xmanager * x

35、 ;manager * m ;coutnnnt*endl ;coutt_nendl ;coutt 员工职位调换endl ;coutt_nnendl ;coutt 1. 技术员endl;coutt 2. 销售员endl;coutt 3. 销售经理endl;coutt 4. 总经理endl;coutt_nnendl ; cout ;while(cinsel & (sel 4 | sel 0) ) coutnt您的输入有误,请重新输入: ;coutendl ;switch(sel )case 0 : return ;case 1 :t = new tech() ;no = changepost(t , t ) ;deletemember(t , t , no ) ;break ;case 2 : s = new seller() ;no = changepost(s , s ) ;deletemember(s , s , no ) ;break ;case 3 : x = new xmanager() ;no = changepost(x

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论