《职工信息管理系统——C++课程设计报告.docx》由会员分享,可在线阅读,更多相关《职工信息管理系统——C++课程设计报告.docx(36页珍藏版)》请在课桌文档上搜索。
1、课程设计报告课程名称C#程序设计课题名称职工信息管理系统专业一信息管理与信息系统班级信管1301学号201303110125姓名指导教师2015年6月10日湖南工程学院课程设计任务书课程名称C#程序设计课题一职工信息管理系统专业班级信管1301学生姓名学号201303110125指导老师李峰、赵锦元、谢雅审批任务书下达日期2015年6月10日任务完成日期2015年6月27日一、设计内容与设计要求1 .课程设计目的:全面熟悉、掌握计算机系统与系统软件根本知识,增强对不同的问题运用和灵活选择适宜的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的假设干有效方法,进一步提高上机动手
2、能力,增强面向对象程序设计概念,熟悉C+语言编程,养成提供文档资料的习惯和标准编程的思想,为后继课程的实验以及课程设计打下较扎实的根底。进一步提高上机动手能力,培养使用计算机解决实际问题的能力,为后继课程(数据结构、数据库和汇编语言等课程)的实验以及课程设计,特别是自学、毕业论文的完成打下扎实的根底。2 .课题题目职工信息管理系统3 .设计要求:具有功能:1、添加信息2、显示统计数据3、查找学生成绩4、修改信息5、删除信息6、插入信息7、显示全部信息8、退出本系统课程设计报告标准1、完成系统需求分析:包括系统设计目的与意义;系统功能需求;输入输出的要求。2、完成系统概要设计:程序由哪些模块组成
3、以及模块之间的层次结构、各模块的调用关系;每个模块的功能;课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。3、完成系统详细设计:包括采用C+语言定义相关的数据类型;写出各模块的类C+码算法;画出函数的调用关系图。4、调试分析、设计体会、测试数据:准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果;程序调试中遇到的问题以及解决问题的方法;课程设计过程经验教训、心得体会。5、关键源程序(带注释)6、其他1)设计正确,方案合理。2)界面友好,使用方便。3)程序精炼,结构清晰。4)设计报告5000字以上,含程序设计说明、系统
4、的功能框图、流程图、源程序清单等。5)实际操作过程中遇到的问题及解决方法:设计总结及心得体会.6)上机演示。二、进度安排第16周星期一14时:00分星期二14时:00分星期四14时:00分星期五14时:00分第17周星期一14时:00分星期二14时:00分目录1系统需求分析01.I系统设计目的与意义01.2系统功能需求01. 3输入输出要求02总体设计12. 1总体设计图12.2各函数之间的调用关系23详细设计23.1采用C+语言定义的相关数据类型:23. 2各功能模块的实现34调试分析及设计体会124. 1调试运行的结果124.2程序调试中的问题125心得体会136附录136.1源代码136
5、.2参考文献:327评分表321系统需求分析1.1 系统设计目的与意义全面熟悉、掌握计算机系统与系统软件根本知识,增强对不同的问题运用和灵活选择适宜的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的假设干有效方法,进一步提高上机动手能力,增强面向对象程序设计概念,熟悉c+语言编程,养成提供文档资料的习惯和标准编程的思想,为后继课程的实验以及课程设计打下较扎实的根底。进一步提高上机动手能力,培养使用计算机解决实际问题的能力,为后继课程(数据结构、数据库和汇编语言等课程)的实验以及课程设计,特别是自学、毕业论文的完成打下扎实的根底。1.2 系统功能需求职工信息管理系统,具有录入
6、职工信息,职工信息的输入、输出功能可以在数据库中查询、修改、插入和删除所保存的记录,而且具有对职工信息进行排序并显示的功能;并具有退出该系统模块的功能。1.3 输入输出要求本系统是一个职工信息管理系统,采用VC+6.0编译器作为开发环境,这个环境是我们在学习的C+平台。输入数据类型主要是charintfloat等数据类型,输入内容包括:工号、姓名、性别、学历、年龄、工资、地址、等数据。用户在输入职工信息保证输入数据格式的正确性,系统不会自动检测输入的数据是否正确可用。输出形式与输入形式类似,根据需要可以选择显示输入的各项内容,还可以修改、删除、查找、显示所有、保存等功能。2总体设计2.1总体设
7、计图图2.1.总体设计流程图2.2 各函数之间的调用关系图2.2各函数的调用关系3详细设计3.1 采用C+语言定义的相关数据类型:在程序中主要用的是C+面向对象的编程方法,主题是用类来写的,通过各成员属性和成员方法来实现各种功能。数据类型有整形(Et)、字符型(char)字符串型(string),还有各种静态变量:classworkerpublic:worker()voidShoW();职工信息显示worker()friendclassWorkerList;private:stringnum,name,sex,edu,address,tel;intage,salary;);classWorke
8、rListprivate:workerwN;intNUM;用来计算职工数目intCOUnt;/用来暂时记录当前操作第几个职工public:voidadd();职工信息录入voidsort();职工信息排序voidsearch();职工信息查找voiddele();职工信息册IJ除voidmodify();/职工信息修改voidsave();/职工信息以文件形式保存voidShoWWorker();显示职工信息在屏幕上WorkerListO(NUM=O;count=0;);3.2 各功能模块的实现(U职工信息添加函数:职工的信息首先是按照工号来输入的,在输入的同时先与己经存在的信息进行比拟,如果
9、输入的工号己经存在,那么需要重新输入,如果还没有存在,那么依次出入职工的工号,姓名,性别,学历,年龄,工资,地址和,其实现代码如下:for(inti=0;iNUM;i+)while(num=wi.num)(CoUtv此职工编号已存在,请重新输入:vendl;CoUtVnum;)wNUM.num=num;CoUt姓名:;cinwNUM.name;CoUt性别:;cinwNUM.sex;coutn学历:;cinwNUM.edu;COUtwNUM.salary;CoUtW地址:;CinwNUM.address;coutn:u;cinwNUM.tel;+NUM;count=NUM;)(2)职工信息显示
10、函数:进入主菜单之后,通过输入选择项,程序的ShoW()成员函数会直接调用已经存储的职工的信息,直接把所有的职工信息都显示出来,其主要的代码如下:voidWOrker:ShoW()/职工信息显示函数实现(cout工号:numendl;COUt“姓名:nameendl;COUtVV性别:sexendl;COUtVV学历:eduendl;COUtVV年龄:ageendl;cout工资:salaryendl;COUtVV地址:addressvVendl;coutn:utelendl;coutendl;1(3)职工信息修改函数:进入这一模块功能之后,程序是已经定义按照工号来修改,先输入你需要修改的工号
11、,查找你输入的工号的职工信息是否己经存储,否,那么需要重新输入,是的话,进入一个子菜单,选择你需要修改的选项,选择某一项之后,在进行你需要修改的内容,只后在直接保存职工的信息,最后在确认你是否返回主菜单,其主要代码如下:COUtV”*endl,cout*L修改工号*endl;cout*2.修改姓名*endl;coutn*3.修改性别*endl;cout*4.修改学历*,endl;cout*5.修改年龄*endl;coutn*6.修改工资*endl;coutn*7.修改地址*,endl;cout*8.修改*endl;coutn*0.返回主菜单*endl;*,gwhile(i38)CoUt输入有误
12、,请重新输入:i3;)switch(i3)case 1: COUtwk.num;COUtwk.name;COUtVV”修改信息已保存,现返回主菜单:wk.sex;COUt”修改信息已保存,现返回主菜单:endl;menu();break;case 4: COUtwk.edu;CoUtv修改信息已保存,现返回主菜单:yendl;menu();break;case 5: COUtwk.age;COUtVV”修改信息已保存,现返回主菜单:vendl;menu();break;case 6: CoUtwk.salary;CoUt”修改信息已保存,现返回主菜单:endl;menu();break;cas
13、e 7:CoUtvwk.address;CoUt”修改信息已保存,现返回主菜单:”vendl;menu();break;case 8: COUtwk.tel;COUtv修改信息已保存,现返回主菜单:endl;(4)职工信息查询函数:进入查找功能模块之后,会有一个子菜单,你会选择一个查找方式,按工号,姓名查找,通过你输入的工号或者姓名用一个for()循环来比拟己经存储的职工信息,正确,那么会输出你这一工号或者姓名的职工的所有信息;如果是按学历查询,那么有一点不同,在已经存储的职工信息中有很多的学历是相同的,这样,在出入的时候,就会输出所有相同学历的职工的信息,其主要的代码如下:if(NUM=0)
14、(COUt”没有职工信息存入,系统将返回主菜单vendl;)elseCoUtV*enc11coutn*请选择查找方式:*endl;coutn*1.按工号查找*endl;cout*2.按姓名查找*endl;coutn*3.按学历查找*endl;cout*0.返回主菜单*,endl;coutv*endlCoUtV”请输入要查询的职工的工号:endl;for(;jcount;j+)if(num2=wj.num)flag=O;k=j;COUt”查询的职工信息如下:endl;coutcoutcoutcout工号:wk.numendl;姓名:uw k.nameendl;性别:“ vwk.sevendl;5
15、5:wk.eduendl;cout年龄:vwk.ageendl;cout工资:wk.salaryendl;coutJt:wk.addressendl;cout:nwk.telendl;COUtv”请输入要查询的职工的姓名:name2;intj2=0,k2;intflag2=1;while(flag2)for(;j2count;j2+)if(name2=wj2.name)flag2=0;k2=j2;CoUtVV查询的职工信息如下:endl;cout工号:wk2.numendl;cout姓名:,wk2.nameendl;cout性别I:,wk2.sexendl;cout学历:wk2.eduendl
16、;coutn年龄:vvwk2.ageendl;cout工资:wk2.salaryendl;cout地址:wk2.addressvvendl;cout:,wk2.telendl;break;)COUtV请输入要查询的职工的学历:edu2;intj4=0,k4;intflag4=1;while(flag4)for(;j4count;j4+)if(edu2=wfj4.edu)flag4=0;k4=j4;CoUtV”查询的职工信息如下:endl;cout工号:,wk4.numendl;cout姓名:wk4.nameendl;CoUt性别:uwk4.sexendl;cout学历:VVWk4.eduven
17、dl;cout年龄:wk4.ageendl;coutn工资:nwk4.salaryendl;couttlt:nwk4.addressendl;coutn:uwk4.telendl;break;)(5)职工信息排序函数:在程序中的排序这一个功能模块之中,有一个子菜单的选择项,排序的方式是通过工资的多少来升序或者降序排列。排序的的方法是用的冒泡排序,将所有已经存储的职工的工资的多少用冒泡的方法来排序,冒泡法:有N个职工的工资,那么需要两个for()循环,外循环有NJ次,最后一个职工的工资不用排序就已经出来,内循环,在第J个那么它需要循环的次数为N-J-I次。其主要的程序如下:coutv*endl,
18、coutn*请选择排序方式:*endl;coutn*1.按工资排序(升序)*,endl;cout*2.按工资排序(降序)*endl;coutn*0.返回主菜单*endl;COUt”*”vendl,coutendl;CoUtVV请选择数字编号02i5;while(i52)CoUtVV”输入有误,请重新输入:,i5;if(i5=l)for(inti=0;icount-l;i+)for(intj=0;jwj+1.salary)workertemp;temp=wj;wj=wj+l;wj+lj=temp;)elseif(i5=2)for(inti=0;icount-l;i+)for(intj=0;jco
19、unt-i-1;j+)if(wj.salarywj+l.salary)workertemp;temp=wj;wj=wj+l;wj+l=temp;1(6)职工信息删除函数:在程序中删除模块的功能,程序已经定义是按照工号来删除职工的信息,先比拟你输入的工号的职工信息是否已经存储,否,那么需要重新输入;是,通过一个判断你是否真的需要删除这一职工的信息,删除职工信息的方法是将后一个职工的信息区覆盖前一个职工的信息来到达删除的功能,其主要代码如下:CoUt”请输入需要删除信息职工的工号:”num3;intj=O,k;intflag=l;while(flag)for(;jcount;j+)if(num3=
20、wj.num)flag=O;k=j;break;)if(flag)coutv”不存在此员工,请重新输入:num3;)CoUtv确认删除请输入Y,返回主菜单请输入N,p;while(l)(if(P=ynlP=,Yu)(COUtVV”员工信息已删除!,endl;for(inti=0;icount;i+)if(wi.num=num3)intj=i;for(;j=count-l;j+)wj=wj+l;count;break;elseif(p=np=N)menu();elseCOUtp;4调试分析及设计体会4.1调试运行的结果(1)添加函数:运行程序之后,进入主菜单,通过选择项进入添加职工信息的功能模块
21、,按照提示输入职工的工号,姓名,性别,学历,年龄,工资,地址和,一次输入之后再保存职工的信息,输入三次,得到如图4.1所示。图4.1添加职工图(2)修改函数:再主菜单通过选择项进入修改职工功能模块,输入你要修改职工信息的工号,你输入的工号在存储的信息之中,进入一个子菜单,选择你要修改的的内容如图,选择修改工号为3的职工的姓名,通过修改后的职工信息如图4.2所示。图4.2按工号修改图(3)删除函数:进入主菜单通过选择项,在删除功能模块中系统提示你要删除的职工信息,你输入职工工号,如果在已经存储的文件中,那么会让你再次确认是否删除该职工的信息,如图4.3是删除职工工号为2的的职工信息,它的结果如图
22、4.3所示。图4.3按工号删除职工图(4)排序函数:在排序功能中,有一个子菜单,选择你是升序还是降序排列,图4.4,是按照升序选择项进行升序排列得到的结果,工资选择升序排列之后的结果如图4.4所示。图4.4按工资升序图(5)查找函数:在查找功能模块之中有按工号,姓名,学历三种查询方式查询,图4.5通过工号查询,输入工号3之后,继续运行程序,得到的结果如图4.5所示。图4.5按工号查找职工图4.2程序调试中的问题(1)语句的最后忘记了加上,使程序发生错误;(2)有时会多打一个“”或者少打一个“”:(3)考虑问题不全面,有漏洞,进行了屡次完善。5心得体会在为期两周的课程设计中,我学会了很多东西。将
23、课堂上学会的理论知识运用到实际生活中去,使我把知识掌握的更加的牢固,与此同时也提高了动手实践能力。C+的课程设计让我知道了面向对象编程的优点,以及给我们带来的便利性。整体地评价这次课程设计,我认为收获很大,正如上面所说的那样,通过课程设计,既复习了以前的旧知识,又学到了一些新的知识;设计增强了我们用所学知识去解决具体问题的能力,进一步培养了我们独立思考问题和解决问题的能力。总之,通过这次课程设计,我收获颇丰,相信会为自己以后的学习和工作带来很大的好处。最重要的还是激发了我编程的兴趣和热情,让我从一个只懂理论变成了能做一些小型程序,让我对编程更加热爱了。6附录6.1 源代码#include#in
24、cludeHstring#include#include#include#defineN100/N作为最大职工总数intf=0;f作为开关usingnamespacestd;stringp;/p作为接收菜单项选择项的字符串voidmenu();显示菜单classworker(public:worker()voidshow();职工信息显示-worker()friendclassWorkerList;private:stringnum,name,sex,edu,address,tel;intage,salary;1;classWorkerList(private:workerwN;intNUM;
25、用来计算职工数目intCoImt;/用来暂时记录当前操作第几个职工public:voidadd();/职工信息录入voidSort();/职工信息排序voidsearch();职工信息查找voiddele();职工信息册IJ除voidmodify();/职工信息修改voidsave();职工信息以文件形式保存voidShoWWorker();/显示职工信息在屏幕上WorkerListO(NUM=O;count=0;);voidmenu()/显示菜单(coutendl;coutvv”*endl,coutn*,endl;cout*职工信息管理系统主菜单*endl;cout*endl;cout*L职
26、工信息添加*,endl;cout*2.职工信息修改*endl;cout*3.职工信息删除*endl;cout*4.职工信息排序*,endl;cout*5.职工信息查找*endl;cout*6.职工信息显示*endl;cout*7.职工信息保存*endl;cout*0.退出*endl;cout*,endl;cout*,endlcoutendl;)voiddomain。主菜单函数实现(WorkerListwl;while(l)(system(cls,);menu();CoUtVV”请选择数字编号0-7,il;while(!(il=0&il=7)(CoUt输入有误,请重新输入:i1;)switch(
27、il)case1:wl.add();break;case2:wl.modify();break;case3:wl.dele();break;case4:wl.sort();break;case5:wl.search();break;case6:wl.showworker();break;case7:wl.save();break;CaSe0:CoUtv系统退出!vendl;exit(O);default:break;)CoUtV”是否返回主菜单?YN,p;if(p=tn,p=N)(COUtVV”系统退出!endl;exit(O);1)voidWOrkerList:add()职工信息添加函数实现
28、(CoUtVV请输入职工信息:,endl;CoUtVnum;for(inti=0;iNUM;i+)while(num=wi.num)(COUtVV”此职工编号已存在,请重新输入:num;wNUM.num=num;CoUtwNUM.name;CoUtVV”性别:;cinwNUM.sex;coutwNUM.age;COUtVV工资:;cinwNUM.salary;CoUtw地址:;CirwNUM.address;cout:*;cinwNUM.tel;+NUM;count=NUM;)voidWOrke亡:ShOW()职工信息显示函数实现(cout工号:,numendl;CoUtV姓名:nameend
29、l;COUtVV性另J:sexvendl;CoUtv学历:eduendl;cout年龄:uageendl;COUtVV工资:usalaryendl;coutJtf,addressendl;coutf,telendl;coutendl;voidWOrkerList:modify。/职工信息修改函数实现(if(NUM=0)CoUtVV”没有职工信息存入,系统将返回主菜单”endl;menu();)CoUtv请输入需要修改信息职工的工号:,numl;intj=0,k;intflag=1;while(flag)(for(;jcount;j+)(if(numl=wj.num)flag=O;k=j;bre
30、ak;)if(flag)(COUtv不存在此员工,请重新输入:,numl;)COUtVV”你选择的职工的信息为:endl;cout工号:vwk.numendl;cout姓名:vwk.nameendl;COUtV性另Il:wk.sexendl;cout学历:vwk.eduvendl;cout年龄:vvwk.ageendl;coutI:,wk.salaryendl;cout*也址:uwk.addressendl;coutendl;CoUt*enc11cout*1.修改工号*endl;coutn*2.修改姓名*endl;coutn*3.修改性别*,endl;cout*4.修改学历*,endl;cou
31、tn*5.修改年龄*endl;cout*6.修改工资*endl;cout*7.修改地址*endl;cout*8.修改*endl;cout*0.返回主菜单*endl;CoUtVV*endl;coutendl;COUt”请选择数字编号0-8,endl;coutf,wk.teli3;while(i38)(COUtVV”输入有误,请重新输入:vi3;)switch(i3)(case 1: CoUtwk.num;CoUt”修改信息已保存,现返回主菜单:endl;menu();break;case 2: COUtwk.name;CoUtVV修改信息已保存,现返回主菜单:vendl;menu();break
32、;case 3: COUtwk.sex;COUtv”修改信息已保存,现返回主菜单:endl;menu();break;case 4: CoUtwk.edu;CoUtVV”修改信息己保存,现返回主菜单:endl;menu();break;case 5: CoUtwk.age;CoUt修改信息已保存,现返回主菜单:endl;menu();break;case 6: COUtwk.salary;CoUtVV”修改信息已保存,现返回主菜单:wk.address;CoUtv修改信息已保存,现返回主菜单:yendl;menu();break;case 8: CoUtwk.tel;CoUtVV修改信息已保存
33、,现返回主菜单:vendl;menu();break;caseO:menu();default:break;)voidWOrkerList:ShoWWOrker()/职工信息显示函数实现(if(NUM=O)(CoUtVV”没有职工信息存入,系统将返回主菜单vendl;menu();)elseCOUtVV已保存的职工信息如下:endl;for(inti=0;icount;i+)(COUtVv”*endlcout工号:“vvwi.numendl;coutn姓名:vwi.nameendl;COUtVV”性别:,wi.sexendl;CoUt“学历:wi.eduvendl;cout年龄广vwi.age
34、endl;cout工资:w.salaryvendl;cout地t:,wi.addressendl;cout:Hwi.telendl;CoUtVv”*endl,1)voidWOrkerList:SearCh0/职工信息查询函数实现if(NUM=O)(COUt没有职工信息存入,系统将返回主菜单vendl;menu();)elsecout*请选择查找方式:*endl;cout*1.按工号查找*endl;cout*2.按姓名查找*endl;cout*3.按学历查找*endl;coutn*O.返回主菜单*endl;coutendl;COUtVV请选择数字编号0-3,i4;while(i43)(COUtV
35、V”输入有误,请重新输入:i4;if(i4=1)(stringnum2;COUtVV”请输入要查询的职工的工号:,num2;intj=O,k;intflag=l;while(flag)for(;jcount;j+)(if(num2=wj.num)(flag=O;k=j;COUtv查询的职工信息如下:endl;cout工号:vwk.numendl;cout姓名:wk.nameendl;COUt性别:,wk.sexendl;cout学历vwk.eduvendl;cout年龄:wk.ageendl;cout工资:,wk.salaryendl;coutk:,wk.addressendl;coutn:,wk.telendl;break;)if(flag)(flag=O;