收藏 分销(赏)

高校人事管理系统.doc

上传人:xrp****65 文档编号:8672354 上传时间:2025-02-25 格式:DOC 页数:51 大小:353.50KB 下载积分:10 金币
下载 相关 举报
高校人事管理系统.doc_第1页
第1页 / 共51页
高校人事管理系统.doc_第2页
第2页 / 共51页


点击查看更多>>
资源描述
面向对象设计方法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 第二章 总体设计 2 2.1系统功能模块 2 2.2类之间的关系 2 第三章 各功能模块实现 3 3.1模块实现及代码 3 3.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]Davis 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 party[20]; char study[30]; char pos[20]; 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=jhn Public: retireeprint(); setretiree(); Protected: int month; int year; int day; Public: cometime( ); setcometime( ); 人员类 Protected: char name[20]; char sex[10]; 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(incumb[i].getnumber2()-number==0) { cout<<incumb[i].incumbencyprint()<<"被删除"<<endl; for(i;i<J;i++) incumb[i]=incumb[i+1]; J--; } for(i=0;i<K;i++) if(reti[i].getnumber3()-number==0) { cout<<reti[i].retireeprint()<<"被删除"<<endl; for(i;i<K;i++) reti[i]=reti[i+1]; K--; } for(i=0;i<Z;i++) if(retur[i].getnumber4()-number==0) { cout<<retur[i].returneeprint()<<"被删除:"<<endl; for(i;i<Z;i++) retur[i]=retur[i+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:{ casuall[I]. setcasuallaborer(); I++; }goto B; case 2:{ incumb[J].setincumbency(); J++; } goto B; case 3:{ reti[K].setretiree(); K++; } goto B; case 4:{ retur[Z].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++) incumb[i].incumbencyprint(); for(i=0;i<Z;i++) retur[i].returneeprint(); j=J+Z; cout<<"在职人数为:"<<j<<endl;goto A; case 2:for(i=0;i<J;i++) if(strcmp(incumb[i].getparty2(),"党员")==0) { incumb[i].incumbencyprint(); j++; } for(i=0;i<K;i++) if(strcmp(reti[i].getparty2(),"党员")==0) { reti[i].retireeprint(); j++; } for(i=0;i<Z;i++) if(strcmp(retur[i].getparty2(),"党员")==0) { retur[i].retimeprint(); j++; } cout<<"党员人数为:"<<j<<endl;goto A; case 3:for(i=0;i<I;i++) if(strcmp(casuall[i].getsex(),"女")==0) { casuall[i].casuallaborerprint(); j++; } for(i=0;i<J;i++) if(strcmp(incumb[i].getsex(),"女")==0) { incumb[i].incumbencyprint(); j++; } for(i=0;i<K;i++) if(strcmp(reti[i].getsex(),"女")==0) { reti[i].retireeprint(); j++; } for(i=0;i<Z;i++) if(strcmp(retur[i].getsex(),"女")==0) { retur[i].retimeprint(); j++; } cout<<"女员人数为:"<<j<<endl;goto A; case 4: for(i=0;i<J;i++) if(strcmp(incumb[i].getstudy2(),"博士生")==0) { incumb[i].incumbencyprint(); j++; } for(i=0;i<K;i++) if(strcmp(reti[i].getstudy3(),"博士生")==0) { reti[i].retireeprint(); j++; } for(i=0;i<Z;i++) if(strcmp(retur[i].getstudy4(),"博士生")==0) { retur[i].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:{ casuall[I]. setcasuallaborer(); I++; }goto B; case 2:{ incumb[J].setincumbency(); J++; } goto B; case 3:{ reti[K].setretiree(); K++; } goto B; case 4:{ retur[Z].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 name[20]; 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(casuall[i].getname(),name)==0) { j++; incumb[i].incumbencyprint(); } for(i=0;i<J;i++) if(strcmp(incumb[i].getname2(),name)==0) { j++; incumb[i].incumbencyprint(); } for(i=0;i<K;i++) if(strcmp(reti[i].getname3(),name)==0) { j++; reti[i].retireeprint(); } for(i=0;i<Z;i++) if(strcmp(retur[i].getname4(),name)==0) { j++; retur[i].returneeprint(); } if(j==0) cout<<"没有找到该人:"<<endl; goto A; case 2:cout<<"请输入要查找人的编号:"; cin>>number; for(i=0;i<J;i++) if(incumb[i].getnumber2()-number==0) { j++; incumb[i].incumbencyprint(); } for(i=0;i<K;i++) if(reti[i].getnumber3()-number==0) { j++; reti[i].retireeprint(); } for(i=0;i<Z;i++) if(retur[i].getnumber4()-number==0) { j++; retur[i].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(incumb[i].getname2(),name)==0) { j++; incumb[i].incumbencyprint(); } if(j==0) cout<<"没有找到该人:"<<endl; goto B; case 2:cout<<"请输入要查找人的编号:"; cin>>number; for(i=0;i<J;i++) if(incumb[i].getnumber2()-number==0) { j++; incumb[i].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(reti[i].getname3(),name)==0) { j++; reti[i].retireeprint(); } if(j==0) cout<<"没有找到该人:"<<endl; goto C; case 2:cout<<"请输入要查找人的编号:"; cin>>number; for(i=0;i<K;i++) if(reti[i].getnumber3()-number==0) { j++; reti[i].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(retur[i].getname4(),name)==0) { j++; retur[i].returneeprint(); } if(j==0) cout<<"没有找到该人:"<<endl; goto D; case 2:cout<<"请输入要查找人的编号:"; cin>>number; for(i=0;i<Z;i++) if(retur[i].getnumber4()-number==0) { j++; retur[i].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月出版 [4]Davis Chapman,《学用Visual c++ 6.0》,清华大学出版社,2001年7月出版 [5]郑莉、傅仕星编,《C++语言面向对象程序设计习题与实验指导》,清华大学出版社,2003年9月出版。 [6]严蔚敏,吴伟民.《数据结构(C语言版)》.清华大学出版社. [7]严蔚敏,吴伟民.《数据结构题集(C语言版)》.清华大学出版社. [8]《DATA 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 name[20]; char sex[10]; 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; };
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 应用文书 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服