收藏 分销(赏)

c++课程设计之高校教职工人事管理系统.doc

上传人:精*** 文档编号:9894966 上传时间:2025-04-12 格式:DOC 页数:35 大小:270.50KB
下载 相关 举报
c++课程设计之高校教职工人事管理系统.doc_第1页
第1页 / 共35页
c++课程设计之高校教职工人事管理系统.doc_第2页
第2页 / 共35页
点击查看更多>>
资源描述
c++课程设计之高校教职工人事管理系统 32 2020年4月19日 资料内容仅供参考,如有不当或者侵权,请联系本人改正或者删除。 《C++程序设计》课程设计报告 高校教职工人事管理系统 年级/专业/班: 学 生 姓 名: 学 号: 指 导 教 师: 开 题 时 间: 年 09 月 06 日 完 成 时 间: 年 09 月 28 日 目 录 一、 引言 1 二、 设计目的与任务 1 1、 本课程设计的目的 1 2、 本课程设计的任务 1 三、 设计方案 1 1、 总体设计 1 2、 详细设计 2 3、 程序清单 5 4、 程序调试与体会 14 5、 运行过程截图 14 四、 结论 17 五、 致谢 17 六、 参考文献 17 《C++程序设计语言》课程设计 ——高校教职工人事管理系统 一、 引言 随着人们生活水平的提高, 计算机发展异常迅速。如今, 计算机已经深入到我们社会的各个领域, 计算机的使用也已不再局限于科学计算, 它已进入人类社会的各个领域并发挥着越来越重要的作用。经过计算机对各类问题求解已经成为一种高效、 快捷的方式。本课程设计就是用C++研究两点距离的求解的问题, 实现对两点距离的问题求解, 和实现类模板的应用以及函数的调用。 二、 设计目的与任务 1、 本课程设计的目的 1) 经过课程设计更进一步理解C++的基础知识和面向对象的思想。 2) 训练用系统的观点和软件开发一般规范进行软件开发, 并在此过程中培养严谨的科学态度和良好的工作作风。初步掌握软件开发过程的问题分析、 系统设计、 程序编码、 测试等基本方法和技能。 3) 熟练掌握C++中类及类模板在程序中的应用, 并熟练了解类中函数的调用。 2、 本课程设计的任务 使用类实现编写一个高校教职工人事管理系统 , 能够实现教职工信息增加、 删除、 修改、 查找, 能够统计在职人员、 中共党员、 女教职工、 高职称、 高学历的人数, 信息的输入输出能够重载输入与输出操作符, 而且要求有错误提示功能, 例如输入日期, 输入错误提示重新输入。 三、 设计方案 1、 总体设计 ( 1) 定义员工( Person) 类, 其中包括编号、 职工分类( "行政人员","教师","一般员工","退休人员","返聘人员","临时工") 、 性别、 年龄, 职务( "无","科级","处级","地级") ;、 职称( "无","初级","中级","高级") ;、 政治面貌( "群众","中共党员","民主党派") 、 学历( "中专","大专","大学","硕士","博士") 。 ( 2) 实现下面的功能 a、 设计菜单实现功能选择; b、 输入功能: 输入员工的信息, 并保存到文件中; c、 删除资料: 能够根据编号删除员工的资料; d、 修改功能: 能够根据编号来修改员工的资料; e、 查询功能: 能够根据编号来查看员工的资料; f、 统计功能: 能够统计在职人员、 中共党员、 女教职工、 高职称、 高学历的人数。 g、 错误提示功能: 如果输入的资料不合法, 将会提示错误, 并给予指导。 2、 详细设计 类 Person char no[100]; //编号 char duty[30]; //职工分类 char sex[10]; //性别 int age; //年龄 char position[30]; //职务 char zhicheng[30]; //职称 char political[30]; //政治面貌 char record[30]; //学历 void add(); //增加信息 void delet(); //删除信息 void change(); //修改信息 void find(); //查找信息 void push(Person pp); //给类赋值 下面程序流程图中的判断框必须用菱形表示, 请修改 (1) Person::add() (2) Person::delete() (3) Person::change() (4).Person::find() 3、 程序清单 /* 改程序需要在D盘加入文本名为 ”subject.txt” 文本档案作为资料的库存。 文本档案资料内容如下: 09408201 行政人员 男 35 处级 高级 中共党员 大学 09408202 教师 女 30 处级 高级 中共党员 大学 09408203 临时工 女 20 无 高级 群众 中专 09408204 临时工 男 22 处级 初级 中共党员 博士 09408205 返聘人员 男 30 科级 高级 中共党员 大专 09408206 教师 女 40 科级 初级 中共党员 硕士 09408207 退休人员 女 68 处级 中级 民主党派 大学 09408208 一般员工 男 27 地级 高级 群众 大学 09408209 教师 男 22 处级 高级 中共党员 博士 09408210 退休人员 男 62 地级 初级 民主党派 硕士 09408211 返聘人员 女 40 无 中级 中共党员 硕士 09408212 一般员工 男 38 处级 中级 群众 大学 09408213 教师 男 46 处级 无 中共党员 博士 09408214 教师 男 27 无 高级 民主党派 大学 09408215 教师 男 18 处级 高级 中共党员 大学 */ //下面程序开始 #include <iostream> #include <cstring> using namespace std; const int N=1000; int t=0; int on=0; //统计在职人员人数 int dang=0; //统计中共党员人数 int nv=0; //统计女性职工人数 int gaozhi=0; //统计高职称人数 int gaoli=0; //统计高学历人数 class Person { public: char sex[10]; //性别 char duty[30]; //职工分类 int age; //年龄 char political[30]; //政治面貌 char record[30]; //学历 char position[30]; //职务 char zhicheng[30]; //职称 char no[100]; //编号 void add(); //增加信息 void delet(); //删除信息 void change(); //修改信息 void find(); //查找信息 void push(Person pp);//给列成员赋值 }; Person p[N]; void Person::push(Person pp) { strcpy(no,pp.no); strcpy(sex,pp.sex); strcpy(position,pp.position); strcpy(zhicheng,pp.zhicheng); strcpy(political,pp.political); strcpy(record,pp.record); strcpy(duty,pp.duty); age=pp.age; if(strcmp(duty,"退休人员")) on++; if(strcmp(sex,"女")==0) nv++; if(strcmp(zhicheng,"高级")==0) gaozhi++; if(strcmp(political,"中共党员")==0) dang++; if(strcmp(record,"硕士")==0||strcmp(record,"博士")==0) gaoli++; } void tip() { cout<<"输入ENTER返回子菜单! "<<endl; getchar(); getchar(); system("cls"); } void tip1() { cout<<"输入ENTER返回主菜单! "<<endl; getchar(); getchar(); system("cls"); } void Load() //经过文本输入数据 { Person S; FILE *fp1; bool f=1; fp1=fopen("d:\\subject.txt","r");if(fp1==NULL) f=0; while(f&&!feof(fp1)) { fscanf(fp1,"%s%s%s%d%s%s%s%s",S.no,S.duty,S.sex,&S.age,S.position,S.zhicheng,S.political,S.record); p[t++].push(S); } fclose(fp1); } void Person::add() //录入信息 { cout<<" 现在录入编号为 "<<no<<" 的档案:"<<endl; A1: cout<<"输入员工的职工分类: "; cin>>duty; if (strcmp(duty,"行政人员")&&strcmp(duty,"教师")&& strcmp(duty,"一般员工")&&strcmp(duty,"退休人员")&& strcmp(duty,"返聘人员")&&strcmp(duty,"临时工")) {cout<<"--(请输入正确的职工分类, 例如: 行政人员, 教师, 一般员工, 退休人员, 返聘人员, 临时工)"<<endl; goto A1;} if(strcmp(duty,"退休人员")) on++; A2: cout<<"输入员工的性别: "; cin>>sex; if(strcmp(sex,"男")&&strcmp(sex,"女")) {cout<<"--(请输入正确的性别, 例如: 男, 女)"<<endl; goto A2;} if(strcmp(sex,"女")==0) nv++; A3: cout<<"输入员工的年龄: "; cin>>age; if(age<=0) {cout<<"--(请输入正确的年龄, 例如: 18等)"<<endl; goto A3;} A4: cout<<"输入员工的职务: "; cin>>position; if (strcmp(position,"无")&&strcmp(position,"科级")&& strcmp(position,"处级")&&strcmp(position,"地级")) {cout<<"--(请输入正确的职务, 例如: 无, 科级, 处级, 地级)"<<endl; goto A4;} A5: cout<<"输入员工的职称: "; cin>>zhicheng; if(strcmp(zhicheng,"无")&&strcmp(zhicheng,"初级")&& strcmp(zhicheng,"中级")&&strcmp(zhicheng,"高级")) {cout<<"--(请输入正确的职称, 例如: 无, 初级, 中级, 高级)"<<endl; goto A5;} if(strcmp(zhicheng,"高级")==0) gaozhi++; A6: cout<<"输入员工的政治面貌: "; cin>>political; if (strcmp(political,"群众")&&strcmp(political,"中共党员")&& strcmp(political,"民主党派")) {cout<<"--(请输入正确的政治面貌, 例如: 群众, 中共党员, 民主党派)"<<endl; goto A6;} if(strcmp(political,"中共党员")==0) dang++; A7: cout<<"输入与员工的学历: "; cin>>record; if (strcmp(record,"中专")&&strcmp(record,"大专")&& strcmp(record,"大学")&&strcmp(record,"硕士") &&strcmp(record,"博士")) {cout<<"--(请输入正确的学历, 例如: 中专, 大专, 大学, 硕士, 博士)"<<endl; goto A7;} if(strcmp(record,"硕士")==0||strcmp(record,"博士")==0) gaoli++; cout<<" 编号为 "<<no<<" 的档案录入结束"<<endl<<endl; t++; tip1(); } void Person::delet() //删除信息 { no[0]='-'; if(strcmp(duty,"退休人员")) on--; if(strcmp(sex,"女")==0) nv--; if(strcmp(zhicheng,"高级")==0) gaozhi--; if(strcmp(political,"中共党员")==0) dang--; if(strcmp(record,"硕士")==0||strcmp(record,"博士")==0) gaoli--; cout<<"删除员工信息成功! "<<endl<<endl; tip1(); } void Person::change() //修改信息 { int n,flag=1; do{ A: cout<<" ***子菜单: 修改资料***"<<endl <<" 修改哪些信息?"<<endl <<"1(编号) 2(职工分类) 3(性别) 4(年龄) 5(职务) 6(职称) 7(政治面貌) 8(学历) 9(退回主菜单)"<<endl <<" 输入数字1-9进行修改或退出:"; cin>>n; if(n<1||n>9) {cout<<"sorry, 您输入的信息有误, 请重新输入! "<<endl;goto A; } switch(n) { case 1: cout<<"输入正确的员工编号:"; cin>>no; cout<<"员工编号修改成功"<<endl<<endl; tip(); break; case 2: B1: cout<<"输入正确的员工的职工分类: "; if(strcmp(duty,"退休人员")) on--; cin>>duty; if (strcmp(duty,"行政人员")&&strcmp(duty,"教师")&& strcmp(duty,"一般员工")&&strcmp(duty,"退休人员")&& strcmp(duty,"返聘人员")&&strcmp(duty,"临时工")) {cout<<"(请输入正确的职工分类, 例如: 行政人员, 教师, 一般员工, 退休人员, 返聘人员, 临时工)"<<endl; goto B1;} if(strcmp(duty,"退休人员")) on++; cout<<"员工职工分类修改成功"<<endl<<endl; tip(); break; case 3: B2: cout<<"输入正确的员工的性别: "; if(strcmp(sex,"女")==0) nv--; cin>>sex; if (strcmp(sex,"男")&&strcmp(sex,"女")) {cout<<"(请输入正确的性别, 例如: 男, 女)"<<endl; goto B2;} if(strcmp(sex,"女")==0) nv++; cout<<"员工性别修改成功"<<endl<<endl; tip(); break; case 4: B3: cout<<"输入正确的员工的年龄: "; cin>>age; if(age<=0) {cout<<"(请输入正确的年龄, 例如: 18等)"<<endl; goto B3;} cout<<"员工年龄修改成功"<<endl<<endl; tip(); break; case 5: B4: cout<<"输入正确的员工的职务: "; cin>>position; if (strcmp(position,"无")&&strcmp(position,"科级")&& strcmp(position,"处级")&&strcmp(position,"地级")) {cout<<"(请输入正确的职务, 例如: 无, 科级, 处级, 地级)"<<endl; goto B4;} cout<<"员工职务修改成功"<<endl<<endl; tip(); break; case 6: B5: cout<<"输入正确的员工的职称: "; if (strcmp(zhicheng,"高级")==0) gaozhi--; cin>>zhicheng; if (strcmp(zhicheng,"无")&&strcmp(zhicheng,"初级")&& strcmp(zhicheng,"中级")&&strcmp(zhicheng,"高级")) {cout<<"(请输入正确的职称, 例如: 无, 初级, 中级, 高级)"<<endl; goto B5;} cout<<"员工职称修改成功"<<endl<<endl; if(strcmp(zhicheng,"高级")==0) gaozhi++; tip(); break; case 7: B6: cout<<"输入正确的员工的政治面貌: "; if(strcmp(political,"中共党员")==0) dang--; cin>>political; if (strcmp(political,"群众")&&strcmp(political,"中共党员")&& strcmp(political,"民主党派")) {cout<<"(请输入正确的政治面貌, 例如: 群众, 中共党员, 民主党派)"<<endl; goto B6;} if(strcmp(political,"中共党员")==0) dang++; cout<<"员工政治面貌修改成功"<<endl<<endl; tip(); break; case 8: B7: cout<<"输入正确的员工的学历: "; if (strcmp(record,"硕士")==0||strcmp(record,"博士")==0) gaoli--; cin>>record; if (strcmp(record,"中专")&&strcmp(record,"大专")&& strcmp(record,"大学")&&strcmp(record,"硕士") &&strcmp(record,"博士")) {cout<<"(请输入正确的学历, 例如: 中专, 大专, 大学, 硕士, 博士)"<<endl; goto B7;} if (strcmp(record,"硕士")==0||strcmp(record,"博士")==0) gaoli++; cout<<"员工学历修改成功"<<endl<<endl; tip(); break; case 9: tip1(); flag=0; break; } }while(flag); } void Person::find() //查找信息( 输出信息) { cout<<"员工的编号: "; cout<<no<<endl; cout<<"员工的职工分类: "; cout<<duty<<endl; cout<<"员工的性别: "; cout<<sex<<endl; cout<<"员工的年龄: "; cout<<age<<endl; cout<<"员工的职务: "; cout<<position<<endl; cout<<"员工的职称: "; cout<<zhicheng<<endl; cout<<"员工的政治面貌: "; cout<<political<<endl; cout<<"员工的学历: "; cout<<record<<endl<<endl; tip1(); } int main() { Load(); int n , i,flag1=1; char num[100]; do { A: cout<<" ***************"<<endl <<" 主菜单"<<endl <<" ***************"<<endl <<"( 1) 增加资料( 2) 删除资料( 3) 修改资料( 4) 查找资料( 5) 查看统计" <<"( 6) 退出"<<endl <<"请选择1-6进行操作: "; cin>>n; system("cls"); if(n<1||n>9) {cout<<"sorry, 您输入的信息有误."<<endl;tip1();goto A; } switch(n) { case 1: C:cout<<"输入要增加的员工的编号: "; cin>>num; for(i=0;i<t;i++) if(strcmp(p[i].no,num)==0) break; if (i!=t) {cout<<"Sorry,您要增加的员工编号已存在, 请重新输入! "<<endl<<endl;goto C;} strcpy(p[t].no,num); cout<<endl; p[t].add(); break; case 2: cout<<"输入要删除的员工的编号: "; cin>>num; for(i=0;i<t;i++) { if (strcmp(p[i].no,num)==0) { p[i].delet(); break; } } cout<<endl; if(i==t) {cout<<"sorry, 您输入的员工编号有误。"<<endl;tip1();} break; case 3: cout<<"输入要修改的员工的编号: "; cin>>num; cout<<endl; for(i=0;i<t;i++) { if (strcmp(p[i].no,num)==0) { p[i].change(); break; } } if(i==t) {cout<<"sorry, 您输入的员工编号有误。"<<endl;tip1();} break; case 4: cout<<"输入要查看的员工的编号: "; cin>>num; cout<<endl; for(i=0;i<t;i++) { if(strcmp(p[i].no,num)==0) { p[i].find(); break; } } if (i==t) {cout<<"sorry, 您输入的员工编号有误。"<<endl;tip1();} break; case 5: cout<<"在职人员人数为: "<<on<<endl; cout<<"中共党员人数为: "<<dang<<endl; cout<<"女教职工人数为: "<<nv<<endl; cout<<"高职称人数为: "<<gaozhi<<endl; cout<<"搞学历人数为: "<<gaoli<<endl; cout<<"(说明: 1.在职人员不包括退休人员。" <<endl; cout<<" 2.高学历包括硕士及博士。)" <<endl<<endl; tip1(); break; case 6: flag1=0; cout<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<endl<<" 感谢您的使用, 谢谢! ! "<<endl<<endl<<endl<<endl<<endl; break; } } while(flag1); system("pause"); } 4、 程序调试与体会 经过对程序的调试, 发现很多问题只有经过调试以后才能被找到和发现, 才能更好的美化和优化, 是程序看起来更完美, 让使用者更放心。 5、 运行过程截图 下面是我们程序的一些演示以及部分运行结果: (1).首先是程序执行的主菜单: (2).执行1-5的指令后都会出现如下界面, 要求输入员工的编号, 因为该程序是基于从编号入手的: (3)当执行1号命令增加资料, 并输入员工编号后要求输入与员工的资料: (4).当输入内容不合要求时会提示输入错误, 而且提示合法的输入内容: (5).当输入的编号已存在是会提示该编号已存在: (6).当执行删除资料、 查找资料、 修改资料后, 如果输入的编号后有误, 会提示编号不存在: (7).当执行修改资料, 并输入正确的编号后, 会出现该目录下的子菜单: (8).当执行子菜单下的指令, 并修改成功后会提示修改完成( 当然这里修改时如果输入不合题目要求同样会提示错误, 并提示正确的输入内容, 参照(4)) : (9).当执行查找资料, 并输入正确的编号后, 会输出该编号员工的资料: (10).当执行查看统计后会出现如下界面: 四、 结论 经过本次课程设计, 让我对C++这门学科对有了进一步的认识, 熟练掌握了类及类模板的应用。以前对该课程的恐惧感都以消失, 任何事情没有做不到只有愿不愿意去做。 刚开始接到该题, 心中确实充满困惑。不过在图书馆和网上找了一些资料看了后, 便觉得思路就在眼前了, 之前不过就是由于对该课程的恐惧而产生了一定的心里影响而已。 之后凭借那闪现在眼前的点点思路, 慢慢在琢磨, 终于想出了大致的程序内容。然后一个一个函数的思考, 一步一步的编写, 调试, 做起来也就越来越顺手了。经过我的重复思考, 程序中的错误得到顺利解决。函数功能也得到了进一步的完善。 而且在本次课程设计的过程中, 让我进一步认识到了团队的力量, 只有团结才能发挥出一个集体的力量。一个人的力量真的好有限, 即使个人能力再强, 做一个大点的项目, 也会力不从心。只有分工协作才能将事办得越快越好。经过这次课程设计, 会为我们以后进入社会提供一定的经验。 我们相信在今后的学习真的我们会更加努力, 积累经验。使自己在编程等各方面得到提高。 五、 致谢 这次的课程设计对我们来说是一次尝试与挑战的过程。在这里, 我们由衷地感谢帮助、 支持和鼓励我们完成课程设计的老师和一起奋斗过的伙伴。首先我们要感谢学校给我们提供这样一个一起学习和研究的机会, 让我们把理论知识应用到实际中来。其次我们要感谢我们的指导老师羊四清老师, 在进行课程设计的这段时间里她对我们的指导和帮助, 为我们课程设计的顺利完成指明了方向, 也给了我们锻炼和提高的机会。根据老师的指导, 在设计中我们基本能按照规范的方法和步骤进行, 开始对实现高校教职工人事管理系统问题进行讨论, 并查阅有关资料, 最后确定设计方案, 然后设计并制作。在实践过程中我们深刻的认识到类在C++中的重要性。在此我们向您们致以最诚挚的谢意! 六、 参考文献 [1]张基温编著.C++程序设计基础.北京: 高等教育出版社, 1996 [2]宛延闺.c++语言和面向对象程序设计.北京: 清华大学出版社, 1999 [3]钱能主编.c++程序设计教程.北京:清华大学出版社,1999 [4]张龙祥编著.UML与系统分析设计.北京:人民邮电出版社, [5] 张海藩, 牟永敏.面向对象程序设计
展开阅读全文

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


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

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

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

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

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

gongan.png浙公网安备33021202000488号   

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

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

客服