小型公司工资管理系统C++课程设计报告

上传人:文*** 文档编号:68914764 上传时间:2022-04-05 格式:DOCX 页数:41 大小:351.17KB
返回 下载 相关 举报
小型公司工资管理系统C++课程设计报告_第1页
第1页 / 共41页
小型公司工资管理系统C++课程设计报告_第2页
第2页 / 共41页
小型公司工资管理系统C++课程设计报告_第3页
第3页 / 共41页
点击查看更多>>
资源描述
小型公司工资管理系统 设计报告C+暇程潮勘与理率(修C+程序设计课程设计报告课 题:小型公司工资管理系统专业班级:xxxxx学 号: xxxxxxxx姓 名: xxxxx指导教师: xxxxx评阅意见:评定成绩:指导老师签名:目录目录一、课程设计内容 31.1 课程设计的目的31. 2设计题目及要求 3二、设计思路 4三、程序清单 72. 1程序源代码7四、运行结果 304.1程序运行 313. 2备份文本信息 34五、程序使用说明 36六、总结及心得体会 36(要求:给出一级目录,宋体加粗,四号字,1.5倍行距)课程设计内容1.1、 课程设计的目的此次课程设计的目的是以程序设计语言(C/C+)为基础,针对具有一定难 度的综合性题目,进行分析、编程、调试和运行,进一步掌握面向对象和面向过 程程序设计的基本方法和编程技巧,巩固所学理论知识,使理论与实践相结合, 提高分析问题、解决问题的能力。通过设计一个简单的小型公司工资管理系统,进一步熟悉C+中类的概念、类的 封装、继承和多态的实现方式。了解系统开发的需要分析,类层次设计,模块分 析,编码测试,模块组装与整体调试的全过程,逐步熟悉程序设计的方法,并养 成良好的编程习惯。(1)题目:小型公司工资管理系统设计(2)设计题目及要求:1 .公司主要有4类人员:经理、技术员、销售员、销售经理。要求存储这些 人的职工号、姓名、月工资、岗位、年龄、性别等信息。其中(1)职工编号在输入人员信息时生成,每输入一个人员信息编号顺序加1。(2)程序对所有人员有提升级别的功能。(3)能够按照不同身份进行月薪的计算。(4)能按姓名或者编号查找各类人员的信息。(5)能够修改/删除各类人员的信息。(6)能够显示所有人员的信息。2 .工资的计算办法:经理:固定月薪为8000;技术员:工作时间*小时工资(100元每小时);销售员:销售额*4%提成;销售经理:底薪(5000) +所辖部门销售额总额*0.5%;3)类的层次结构大体如下:1. 3课程设计步骤与方法1 .需求分析:对用户提出的问题提出解决的办法和思路。2 .根据需求,设计系统功能模块,并设计相应的类和界面。3 .根据基本思路,确定输入和输出,设计程序的算法。4 .确定用到的所有类的描述和定义,并设计测试程序来对类进行测试。6 .在计算机上编译程序,检验程序的可运行性。7 .4课程设计报告内容写设计报告(要求正规打印,A4幅面),内容包括:题目系统功能模块结构图数据结构设计及用法说明程序结构(画流程图)各模块的功能试验结果(包括输入数据和输出结果) 体会参考文献附录:源程序清单二、设计思路1、整体考虑程序应该实现的功能,有员工信息管理、职务管理、月薪计算、查找 信息、显示所有人员的信息和退出系统 6个。2、首先定义一个 Employee的雇员基类,然后由此派生出 Managers Seller、Tech 三个分别为经理类、销售员类、技术员类;再由 Seller派生出销售经理类 Xmanager)每个类中的成员都是public型的,所有的继承都是公有继承,基类中 定义有数据输入和输出函数。3、整个程序由主函数的一个for循环控制,根据输入的操作选项通过一个 switch 语句判断该进行什么操作,每一个case后面对应一个函数,每个函数对应一个操 作,1对应信息管理,2对应职务管理,3对应月薪计算,4对应查找信息,5对 应显示所有人员的信息,0对应退出系统。4、case中调用了五个无参的函数allSave()Exit();dataManagement() ;postManaMenu() ;calculateSal() ;fin dMenu() ;allDisplay();五个函数均用了模板函数的实例化分别进行输入、职务管理、计算月薪、显示全部信息。如输入中的一个:template void showMember(T & t , Ti * ti )if(t.n next ) t.p - show();showMember()函数在各个类中都定义,并且同名,这样能简化程序。5、在进行信息输入时,在基类中定义了一个虚函数,避免了值的副本,首先给出 提示语句,首先选择要输入的职工类型,然后依次调用 saveFile(),首先创建类 的对象指针,如 Seller * t ;ofstream cout (S.txt),建立文件流,创建链表,将所输入的数据都保存至文件,并且对备份文件进行命名,同时确定存储位 置。以便之后的查找和删除功能的实现。6、在进行工资计算时,每个类都定义了各自的calcuSalary ()函数,依次计算出每一种职工的工资,由提示语句选择是否输出。7、职务管理功能的实现,是通过编号来查找要提升职位的人员,选择要升为哪一 种职位,然后将多余的数据成员删除,在提升后的成员中将工资重新进行计算, 予以赋值。8、查找时,建立函数模板,参数为 class T , class Ti ,需要在哪一个类中查 我就将模板实例化为哪一个类,每一次查找时,指针都是先指向文件的起始位置, 然后用for循环来控制,先要输入编号,如 t.p != NULL & t.p - num != no 若当前对象的编号与输入的编号不相等,则指针移向下一个对象继续查找,若相 等则停止查找,并将所找到的信息全部输出。9、考虑各种数据类型还有所需的 C+呐的函数,要引用 这四个头文件。用于数据保存至文件。10、修改和删除的功能都是按照编号、利用模板函数实例化来实现的,找到后由 switch控制,1.姓名2.性别3.年龄4.编号5.工资,先选择要修改的属性,然后输入新信息,将原有信息替换;删除时,首先在每一个类中由指针找到要删除的职工,然后将这个对象的每一个数据成员用 NULL覆盖,即清零处理,该职工 的信息就被删除了。11、整体构思比较简单,基本能够实现各项功能源程序清单:#include#include#include#include using 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 ;double getSalary()return salary ;char * getPost()return post;virtual void get()coutname;coutsex;coutage;coutnum;Employee。salary = 0.0 ;virtual void show()couttnametsextagetnumtsalarytpost endl ;;class Tech:virtual public Employeepublic:int hour ;Tech * next ;void get()Employee:get();couthour ;double 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:virtual 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 - 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:saveFile()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 TechList public :int n ;Tech * head , * p ;TechList()n = 0 ;p = head = NULL ;void inputFile();void saveFile(); 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 , 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 XManagerList二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 ManagerList二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 coutt coutt_ coutt coutt coutt coutt coutt coutt coutt1.2.3.4.5.0.vvendl ;主菜单vvendl ;nnendl;员工信息管理endl;职务管理endl;月薪计算endl;员工信息查找endl;显示所有人员信息endl;退出程序vvendl;nn ; return 0;void addDataMenu() int sel ;Tech * ti ;Seller *si ;Manager * mi ;XManager * xi ;coutvvnnnnt*vvendl ;coutvt 添加员工信息”vvendl ;coutvvt*nvvendl ;coutvvt 1.coutvvt 2.coutvvt 3.coutvvt 4.coutvvt 0. coutvvt技术员endl;销售员endl;销售经理endl;总经理endl;返回endl;nn您的输入有误,请重新输入while(cinsel & (sel 4 | sel 0 ) ) cout post, 技术员);ti - get();/ti - show();addMember(T , ti);break ;case 3 :si = new Seller();strcpy(si - post , 销售员);si - get();addMember(S , si );break ;case 4 :xi = new XManager();strcpy(xi - post ,销售经理);xi - get();addMember(X , xi);break ;case 5 :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 ;coutnnnt n;coutt1.姓名t2.性别t3.年龄t4.编号t5. 工资endl ;cout show();coutnt n;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 ;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 ;coutnnnt n;coutt修改员工信息endl ;coutt n;coutt1.技术员endl;coutt2.销售员endl;coutt 3. 销售经理endl;coutt4.总经理endl;coutt0.返回endl;coutt n;cout ;您的输入有误,请重新输入while(cinsel & (sel 4 | sel 0 ) ) coutntJswitch(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 ; template bool deleteMember(T & t , Ti * ti , int no) if(findMember(t , ti , no ) = false )cout 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 );ti - next = pi ;return true ;void deleteData()int sel ;Tech * t ;Seller * s ;XManager * x ;Manager * m ;coutnnnt*coutt coutt couttendl ;nendl ;删除员工信息endl ;*nendl ;coutt coutt coutt coutt coutt coutt1.2.3.4.0.技术员endl;销售员endl;销售经理endl;总经理endl;返回endl;nnendl ;coutwhile(cinsel & (sel 4 | sel 0 ) ) coutnt您的输入有误,请重新输入:coutendl ; int no ;switch(sel )case 0 : return ;case 1 :cout ;cinno ;if(deleteMember(T ,t , no) coutnt break ;删除成功!endl ;case 2 :cout ;cinno ;if(deleteMember(S , s , no)coutnt break ;删除成功!endl ;case 3 :cout ;删除成功!endl ;删除成功!no ;if(deleteMember(X , x, no) ) coutnt break ;case 4 :cout ;cinno ;if(deleteMember(M , m , no) ) coutnt break ;default : break ; void dataManagement() int sel ;while(1) coutnnnnt*endl ;coutt员工信息管理endl ;coutt*nendl ;coutt coutt coutt coutt coutt1.2.3.0.添加信息endl; 修改信息endl; 删除信息endl; 返回endl;nnendl ;cout您的输入有误,请重新输while(cinsel & (sel 3 | sel 0 ) ) coutnt 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 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 );strcpy(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 ;coutt coutt coutt coutt coutt coutt1.技术员endl;2.销售员endl;3.销售经理endl;4.总经理endl;0.返回 ;nnendl ;coutsel & (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 , 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 ); /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 ; Manager * m ;coutnnnt*”endl ;couttnendl ;coutt员工职位调换endl ;couttnnendl;coutt1.技术员endl;coutt2.销售员endl;coutt3.销售经理endl;coutt4.总经理endl;couttnnendl;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 , x );deleteMember(X , x , no );break ;case 4 :m = new Manager。;no = changePost(M , m );deleteMember(M , m , no ); break ;default : break ;coutnt 调换成功! endl ; template void caluSal(T & t , Ti * ti ) for(t.p = t.head ; t.p != NULL ; t.p = t.p - next ) t.p - calcuSalary(); void allDisplay();void calculateSal() Tech * t ;Seller * s ;XManager * x ;Manager * m ;caluSal(M , m);caluSal(X , x );caluSal(S , s );caluSal(T , t );coutnt 工资计算成功! vvendl ;int sel ;coutvnt是否查看? vvendl ;cout ;cinsel ;if(sel = 1 ) allDisplay();void findMenu()int sel ;Tech * t ;Seller * s ;XManager * x ;Manager * m ;coutvvnnnt*”vvendl ;coutvvtnvvendl ;coutt 员工信息查找endl ;couttnnendl;coutt1.技术员endl;coutt2.销售员endl;coutt3.销售经理endl;coutt4.总经理endl;coutt0.返回endl;couttnnendl;cout ;while(cinsel & (sel 4 | sel 0 ) ) coutnt您的输入有误,请重新输入:;coutendl ;int no ;switch(sel )case 1 : return ;case 2 :cout ;cinno ;if(findMember(T, t , no)coutnnnt n;coutt姓名t性别t年龄t编号t工 资t职务endl ;cout show();coutnt n;else coutnt 对不起,该员工不存在!endl ;break ;case 3 :cout ;cinno ;if(findMember(S, s , no)coutnnnt n;coutt姓名t性别t年龄t编号t工 资t职务endl ;cout show();coutnt n;)else coutnt对不起,该员工不存在!endl ;break ;case 4 :cout ;cinno ;if(findMember(X, x , no)coutnnnt n;coutt姓名t性别t年龄t编号t工 资t职务endl ;cout show();coutnt n;)else coutnt对不起,该员工不存在!endl ;break ;case 5 :cout ;cinno ;if(findMember(M, m , no)coutnnnt n;coutt姓名t性别t年龄t编号t工 资t职务endl ;cout show();coutnt n;)else coutnt对不起,该员工不存在!endl ;break ;default : break ;) void allDisplay() Tech * t ;Seller * s ;XManager * x ;Manager * m ;coutnnnt n;coutt姓名t性别t年龄t编号t工资t职务endl ;coutt nn;showMember(M , m ); couttnendl ;showMember(X , x);couttnendl ;showMember(S , s );couttnendl ;showMember(T , t);if(M.n) coutnnt else coutnnt总经理人数:M.n ;总经理人数为空!;if(X.n) coutt else coutt销售经理人数:X.n endl ;销售经理人数为空! endl ;if(S.n) coutt else coutt销售员人数:S.n ;销售员人数为空!;if(T.n) coutt else coutt技术员人数:T.n ;技术员人数为空! endl ;coutnt )nn;int main()coutnnnt*endl ;coutt Mini公司工资管理系统endl ;coutt*nendl ;all_Init(); coutt系统启动成功! nendl ;coutt*nendl ;coutnnt*”endl;coutnt 亲!要记得安全退出喔,不然会丢失数据的! ! ! nendl ;coutnt*”p ;cout 系统连接中nendl ;switch(p)case 0:allSave();Exit();case 1:dataManagement();break;case 2:postManaMenu();break ;case 3:calculateSal();break ;case 4:findMenu();break;case 5:allDisplay();break ;default:coutt 输入有误,请重新选择! 粼薄事中-H*CWcwalE - Sei Iral o!Ufa|MueA Irlc, at*4 Hlti.mduui川副照QWAHLm*百己;百 1缸择r,msjp-播性用镭髯导工黄巡周
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 营销创新


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!