面向对象设计方法C++课程设计高校人事管理系统1142151229/03/17/34/19/0911计算机科与技术2班李春梅信息工程学院计算机科学与技术系2013年5月26日设计题目专业班级组员姓名指导教师组员学号面向对象设计方法C++课程设计任务分配院(系):信息工程学院教研室:软件教研室课程设计题目高校人事管理系统课程设计目的(1)要求学生达到熟练掌握C++语言的基本知识和技能;(2)基本掌握面向对象程序设计的基本思路和方法;(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。(4)训练用系统的观点和软件开发一般规范进行软件开发,并在此过程中培养严谨的科学态度和良好的工作作风。初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。(5)熟练掌握C++中类及类模板在程序中的应用,并熟练了解类中函数的调用。小组成员及任务分配姓名学号承担任务是否组长1142151229类的构建等及运行调试是1142151217删除功能实现否1142151203统计功能实现及封面设计否1142151234添加功能实现否1142151219编辑功能实现否1142151209查询功能实现否目录第一章需求分析..........................................1第二章总体设计..........................................22.1系统功能模块.......................................22.2类之间的关系......................................2第三章各功能模块实现....................................33.1模块实现及代码......................................33.2运行结果.........................................15第四章系统调试.......................................18第五章总结与体会.......................................18参考文献................................................20附录....................................................21课程设计任务书课程名称高校人事管理二级学院信息工程学院专业班级11级计科本(2)班起止日期2013年5月20日指导教师李春梅1.课程设计目的及意义目的意义:(1)掌握面向对象程序设计的基本思路和方法;(2)了解系统开发的需求分析、类层次设计、模块分解、编码测试、模块组装与整体调试的全过程;(3)进一步熟悉C++中类的概念、类的封装、继承的实现方式;(4)学会分析简单的实际问题,并能利用所学的知识建立系统的逻辑结构,学会简单的调试技巧和方法。逐步熟悉面向对象程序设计的方法,养成良好的编程习惯。2.课程设计任务及成果提交形式(包括课程设计说明书、图纸、实物样品等要求)(1)分析课程设计题目的要求(2)写出详细设计说明(3)编写程序代码,调试程序使其能正确运行(4)设计完成的软件要便于操作和使用(5)设计完成后提交课程设计报告及测试记录3.主要参考文献[1]郑莉、傅仕星编,《C++面向对象程序设计》,清华大学出版社,2003年9月出版[2]谭浩强编,《C++面向对象程序设计》,清华大学出版社,2005年7月出版[3]李师贤等译,《C++精髓》,机械工业出版社,2002年8月出版[4]DavisChapman,《学用Visualc++6.0》,清华大学出版社,2001年7月出版[5]郑莉、傅仕星编,《C++语言面向对象程序设计习题与实验指导》,清华大学出版社,2003年9月出版。4.课程设计进度安排起止日期工作内容2013年5月18日-5月20日分析设计准备阶段:功能模块分析、控制模块分析、绘制必要的流程图2013年5月20日-5月24日代码设计2013年5月24日-5月25日编程调试阶段2013年5月25日-5月26日总结报告和书写说明书阶段:编写程序设计说明书考核5.成绩考核办法(1)根据平时上机考勤、表现和进度,教师将每天点名和检查(10%)(2)完成基本功能(30%)。(3)学生的动手能力,创新能力(10%)。(4)总结报告(50%):包括系统设计要求,设计思路,系统功能模块图,系统流程图,类的层次图(包括类成员列表),调试过程,关键程序代码,总结,参考书目。系审查意见:系主任签字:年月日教学单位意见:教学单位负责人签字:年月日-1-第一章需求分析高校人事管理,高校在有职人员(行政人员、教师、一般员工)、退休人员、返聘人员和临时工。现在,需要存储这些人员的人事档案信息:编号、姓名、性别、年龄、职务、职称、政治面貌、最高学历、任职时间、来院时间。要求:1)添加删除功能:能根据学院人事的变动情况,添加删除记录;2)查询功能:能根据编号和姓名进行查询;3)编辑功能(高级):根据查询对相应的记录进行修改,并存储;4)统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数);5)保存功能:能对输入的数据进行相应的存储,要求重载插入和提取符以完成数据的保存和打开。6)人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。-2-第二章总体设计2.1系统功能模块图2.1系统功能模块2.2类之间的关系定义了8个类,分别为人员类(personnel类),临时工类(casuallaborer类),进入时间类(cometime类),在职人员类(incumbency类),退休时间类(retiretime类),退休人员类(retiree类),返聘时间类(retime类),返聘人员类(returnee类)等。同时又定义一个school类,在里面实现数据的添加、删除、修改、查找、显示和退出。输出选择添加功能删除功能查询功能编辑功能统计功能退出操作按编号查找按姓名查找-3-Protected:charname[20];charsex[10];intage;Public:setpersonnel();personnelprint();Protected:intmonth;intyear;intday;Public:cometime();setcometime();Protected:intmonth;intyear;intday;Public:setretime();retimeprint();Protected:intday;intyear;intmonth:Public:setretiretime();retiretimeprint();Public:setcasuallaborer();casuallaborerprint();Protected:intnumber;charparty[20];charstudy[30];charpos[20];Public:setincumbency();incumbencyprint();incumbency();Public:retireeprint();setretiree();Public:setreturnee();returneeprint();9=jhn进入时间类临时工类人员类返聘时间类退休时间类在职员工类退休人员类返聘人员类-4-第三章各功能模块实现3.1模块实现及代码删除功能:#include1.hschool::dele(){externintI,J,K,Z;inti;intnumber;inta;system(cls);A:cout★★★★★★★★★welcome★★★★★★★★★★endl;cout\t*【1】按编号删除*endl;cout\t*【0】返回*\n;cout〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓从0-1中选择功能项:;cina;switch(a){case1:cout请输入要删除的编号:;cinnumber;for(i=0;iJ;i++)if(incumb[i].getnumber2()-number==0){coutincumb[i].incumbencyprint()被删除endl;for(i;iJ;i++)incumb[i]=incumb[i+1];J--;}for(i=0;iK;i++)if(reti[i].getnumber3()-number==0){coutreti[i].retireeprint()被删除endl;for(i;iK;i++)reti[i]=reti[i+1];K--;-5-}for(i=0;iZ;i++)if(retur[i].getnumber4()-number==0){coutretur[i].returneeprint()被删除:endl;for(i;iZ;i++)retur[i]=retur[i+1];Z--;}gotoA;case0:break;}}添加功能:#include1.hschool::add(){inta;externintI,J,K,Z;A:cout★★★★★★★★★welcome★★★★★★★★★★endl;cout\t*【1】添加临时工信息*endl;cout\t*【2】添加在职员工信息*endl;cout\t*【3】添加退休人员信息*endl;cout\t*【4】添加人员的信息*endl;cout\t*【0】返回*\n;cout〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓从0-4中选择功能项:;B:cina;switch(a){case1:{casuall[I].setcasuallaborer();I++;}gotoB;case2:{incumb[J].setincumbency();-6-J++;}gotoB;case3:{reti[K].setretiree();K++;}gotoB;case4:{retur[Z].setreturnee();Z++;}gotoB;case0:break;default:cout选择有误,请重新选择!;gotoA;}}统计功能:#include1.hschool::tongji(){externintI,J,K,Z;inta;inti=0;system(cls);A:intj=0;cout★★★★★★★★★welcome★★★★★★★★★★endl;cout\t*【1】在职人员数统计*endl;cout\t*【2】党员人数统计*endl;cout\t*【3】女工人数统计*endl;cout\t*【4】博士生人数统计*endl;cout\t*【0】返回*endl;cout〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓从0-4中选择功能项:;cina;switch(a){case1:for(i=0;iJ;i++)-7-incumb[i].incumbencyprint();for(i=0;iZ;i++)retur[i].returneeprint();j=J+Z;cout在职人数为:jendl;gotoA;case2:for(i=0;iJ;i++)if(strcmp(incumb[i].getparty2(),党员)==0){incumb[i].incumbencyprint();j++;}for(i=0;iK;i++)if(strcmp(reti[i].getparty2(),党员)==0){reti[i].retireeprint();j++;}for(i=0;iZ;i++)if(strcmp(retur[i].get