高校人事管理系统 .docx
面向对象设计方法C+课程设计设计题目 高校人事管理系统组员姓名 组员学号 1142151229/03/17/34/19/09专业班级 11计算机科与技术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月出版4Davis Chapman,学用Visual c+ 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) 添加删除功能:能根据学院人事的变动情况,添加删除记录;2) 查询功能:能根据编号和姓名进行查询;3) 编辑功能(高级):根据查询对相应的记录进行修改,并存储;4) 统计功能:能根据多种参数进行人员的统计(在职人数、党员人数、女工人数、高学历高职称人数);5) 保存功能:能对输入的数据进行相应的存储,要求重载插入和提取符以完成数据的保存和打开。6) 人员编号在生成人员信息时同时生成,每输入一个人员信息编号顺序加1。第二章 总体设计2.1系统功能模块输出选择退出操作统计功能编辑功能添加功能删除功能查询功能按编号查找按姓名查找图2.1系统功能模块2.2类之间的关系 定义了8个类,分别为人员类(personnel类),临时工类(casuallaborer类),进入时间类(cometime类),在职人员类(incumbency类),退休时间类(retiretime类),退休人员类(retiree类),返聘时间类(retime类),返聘人员类(returnee类)等。同时又定义一个school类,在里面实现数据的添加、删除、修改、查找、显示和退出。Public:setcasuallaborer();casuallaborerprint();Protected:int number;char party20;char study30;char pos20;Public: setincumbency();incumbencyprint();incumbency();Protected:int day;int year;int month:Public:setretiretime( );retiretimeprint( );Protected:int month;int year;int day;Public:setretime( );retimeprint( );Public:setreturnee();returneeprint();9=jhnPublic:retireeprint();setretiree();Protected:int month;int year;int day;Public:cometime( );setcometime( );人员类Protected:char name20;char sex10;int age;Public:setpersonnel( );personnelprint();进入时间类临时工类退休时间类返聘时间类在职员工类 退休人员类返聘人员类第三章 各功能模块实现3.1 模块实现及代码删除功能:#include"1.h"school:dele()extern int I,J,K,Z;int i;int number;int a;system("cls");A:cout<<"welcome"<<endl; cout<<"t 【1】按编号删除 "<<endl;cout<<"t 【0】返回 n " cout<<"从0-1中选择功能项:" cin>>a; switch(a) case 1:cout<<"请输入要删除的编号:" cin>>number; for(i=0;i<J;i+) if(incumbi.getnumber2()-number=0) cout<<incumbi.incumbencyprint()<<"被删除"<<endl; for(i;i<J;i+) incumbi=incumbi+1; J-; for(i=0;i<K;i+)if(retii.getnumber3()-number=0)cout<<retii.retireeprint()<<"被删除"<<endl;for(i;i<K;i+)retii=retii+1;K-;for(i=0;i<Z;i+)if(returi.getnumber4()-number=0)cout<<returi.returneeprint()<<"被删除:"<<endl;for(i;i<Z;i+)returi=returi+1;Z-;goto A; case 0:break; 添加功能:#include"1.h"school:add() int a; extern int I,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:cin>>a;switch(a)case 1: casuallI. setcasuallaborer(); I+; goto B;case 2:incumbJ.setincumbency();J+; goto B;case 3:retiK.setretiree();K+; goto B;case 4:returZ.setreturnee();Z+; goto B;case 0:break;default:cout<<"选择有误,请重新选择!"goto A;统计功能:#include"1.h"school:tongji()extern int I,J,K,Z;int a;int i=0;system("cls");A:int j=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中选择功能项:" cin>>a; switch(a) case 1:for(i=0;i<J;i+) incumbi.incumbencyprint(); for(i=0;i<Z;i+) returi.returneeprint(); j=J+Z; cout<<"在职人数为:"<<j<<endl;goto A; case 2:for(i=0;i<J;i+) if(strcmp(incumbi.getparty2(),"党员")=0) incumbi.incumbencyprint(); j+; for(i=0;i<K;i+) if(strcmp(retii.getparty2(),"党员")=0) retii.retireeprint(); j+; for(i=0;i<Z;i+) if(strcmp(returi.getparty2(),"党员")=0) returi.retimeprint(); j+; cout<<"党员人数为:"<<j<<endl;goto A; case 3:for(i=0;i<I;i+) if(strcmp(casualli.getsex(),"女")=0) casualli.casuallaborerprint(); j+; for(i=0;i<J;i+) if(strcmp(incumbi.getsex(),"女")=0) incumbi.incumbencyprint(); j+; for(i=0;i<K;i+) if(strcmp(retii.getsex(),"女")=0) retii.retireeprint(); j+; for(i=0;i<Z;i+) if(strcmp(returi.getsex(),"女")=0) returi.retimeprint(); j+; cout<<"女员人数为:"<<j<<endl;goto A; case 4: for(i=0;i<J;i+) if(strcmp(incumbi.getstudy2(),"博士生")=0) incumbi.incumbencyprint(); j+; for(i=0;i<K;i+) if(strcmp(retii.getstudy3(),"博士生")=0) retii.retireeprint(); j+; for(i=0;i<Z;i+) if(strcmp(returi.getstudy4(),"博士生")=0) returi.retimeprint(); j+; cout<<"博士生人数为:"<<j<<endl;goto A; default:cout<<"选择有误,请重新选择:"goto A; case 0:break; 编辑功能:#include"1.h"school:push() extern int I,J,K,Z;int e;B:system("cls");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中选择功能项:"A:cin>>e; switch(e) case 1: casuallI. setcasuallaborer(); I+; goto B;case 2:incumbJ.setincumbency();J+; goto B;case 3:retiK.setretiree();K+; goto B;case 4:returZ.setreturnee();Z+; goto B;case 0:break;default:cout<<"选择有误,请重新选择!"goto A; 查询功能:#include"1.h"void chose() cout<<"welcome"<<endl; cout<<"t 【1】姓名查找 "<<endl; cout<<"t 【2】编号查找 "<<endl;cout<<"t 【0】返回 n " cout<<"从0-2中选择功能项:"school:find() int a;int i;extern int I,J,K,Z;char name20;int number;E:int j=0;system("cls");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中选择功能项:" cin>>a; switch(a) case 1:chose();A:cin>>a; switch(a) case 1:cout<<"请输入要查找人的姓名:" cin>>name; for(i=0;i<I;i+) if(strcmp(casualli.getname(),name)=0) j+; incumbi.incumbencyprint(); for(i=0;i<J;i+) if(strcmp(incumbi.getname2(),name)=0) j+; incumbi.incumbencyprint(); for(i=0;i<K;i+)if(strcmp(retii.getname3(),name)=0)j+;retii.retireeprint();for(i=0;i<Z;i+)if(strcmp(returi.getname4(),name)=0)j+;returi.returneeprint();if(j=0)cout<<"没有找到该人:"<<endl;goto A; case 2:cout<<"请输入要查找人的编号:" cin>>number; for(i=0;i<J;i+) if(incumbi.getnumber2()-number=0) j+; incumbi.incumbencyprint(); for(i=0;i<K;i+)if(retii.getnumber3()-number=0)j+;retii.retireeprint();for(i=0;i<Z;i+)if(returi.getnumber4()-number=0)j+;returi.returneeprint();if(j=0)cout<<"没有此编号的人"goto A; case 0:goto E; case 2: chose();B: cin>>a; switch(a) case 1:cout<<"请输入要查找人的姓名:" cin>>name; for(i=0;i<J;i+) if(strcmp(incumbi.getname2(),name)=0) j+; incumbi.incumbencyprint(); if(j=0) cout<<"没有找到该人:"<<endl; goto B; case 2:cout<<"请输入要查找人的编号:" cin>>number; for(i=0;i<J;i+) if(incumbi.getnumber2()-number=0) j+; incumbi.incumbencyprint(); if(j=0) cout<<"没有此编号的人" goto B; default:cout<<"输入有误,请重新输入:"goto B; case 0:goto E; case 3:chose();C:cin>>a; switch(a) case 1:cout<<"请输入要查找人的姓名:" cin>>name; for(i=0;i<K;i+)if(strcmp(retii.getname3(),name)=0)j+;retii.retireeprint();if(j=0)cout<<"没有找到该人:"<<endl;goto C; case 2:cout<<"请输入要查找人的编号:" cin>>number; for(i=0;i<K;i+)if(retii.getnumber3()-number=0)j+;retii.retireeprint(); if(j=0)cout<<"没有此编号的人"goto C; default:cout<<"输入有误,请重新输入:"goto C; case 0:goto E; case 4:chose();D:cin>>a; switch(a) case 1:cout<<"请输入要查找人的姓名:" cin>>name; for(i=0;i<Z;i+)if(strcmp(returi.getname4(),name)=0)j+;returi.returneeprint();if(j=0)cout<<"没有找到该人:"<<endl;goto D; case 2:cout<<"请输入要查找人的编号:" cin>>number; for(i=0;i<Z;i+)if(returi.getnumber4()-number=0)j+;returi.returneeprint();if(j=0)cout<<"没有此编号的人"goto D; default:cout<<"输入有误,请重新输入:"goto D; case 0:goto E; case 0:break; default:cout<<"输入有误,请重新输入:"goto E; 3.2 运行结果1.开始菜单界面: 图3.1开始菜单界面2.添加人员信息界面:图3.2添加人员信息界面3.统计人员信息界面:图3.3统计人员信息界面4.人员信息查找界面:图3.4人员信息查找界面5.人员信息删除界面:图3.5人员信息删除界面6.人员修改界面:图3.6人员修改界面第四章 系统调试系统调试:在建立全局变量时,无法正常使用,后添加extern才实现功能的使用。通过对程序的调试,发现很多问题只有通过调试以后才能被找到和发现,才能更好的美化和优化,是程序看起来更完美,让使用者更放心第五章 总结与体会通过本次课程设计,让我对C+这门学科对有了进一步的认识,熟练掌握了类及类模板的应用。以前对该课程的恐惧感都以消失,任何事情没有做不到只有愿不愿意去做。并且在本次课程设计的过程中,让我进一步认识到了团队的力量,只有团结才能发挥出一个集体的力量。一个人的力量真的好有限,即使个人能力再强,做一个大点的项目,也会力不从心。只有分工协作才能将事办得越快越好。通过这次课程设计,会为我们以后进入社会提供一定的经验。课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。回顾起此次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。编写的过程也是我们发现错误的过程,毕竟我们自己专业知识掌握的不够,在设计中走了很多弯路,刚开始是根本无从下手,不知道要干嘛,如果平时课余时间多加强对这些专业知识的学习,那么在这次课程设计中将会少走很多的弯路。参考文献1郑莉、傅仕星编,C+面向对象程序设计,清华大学出版社,2003年9月出版2谭浩强编,C+面向对象程序设计,清华大学出版社,2005年7月出版3李师贤等译,C+精髓,机械工业出版社,2002年8月出版4Davis Chapman,学用Visual c+ 6.0,清华大学出版社,2001年7月出版5郑莉、傅仕星编,C+语言面向对象程序设计习题与实验指导,清华大学出版社,2003年9月出版。 6严蔚敏,吴伟民.数据结构(C语言版).清华大学出版社.7严蔚敏,吴伟民.数据结构题集(C语言版).清华大学出版社.8DATA STRUCTURE WITH C+. William Ford,William Topp .清华大学出版社(影印版).附录源程序:/1.h#include<iostream>#include<string.h>using namespace std;class personnel /人员类public:setpersonnel();personnelprint();/人员打印char *getname1()/获取名字return name;char *getsex()/获取性别return sex;protected:char name20;char sex10;int age;/class cometime/进入时间类public:cometime()year=0;setcometime();cometimeprint();/进入时间打印protected:int year;int month;int day;/class retime/返聘时间类public:setretime();retimeprint();/返聘时间打印protected:int year;int month;int day;/class retiretime/退休时间类public:setretiretime();retiretimeprint();/退休时间打印protected:int year;int month;int day;