收藏 分销(赏)

c++公司人事管理系统课程设计报告.doc

上传人:二*** 文档编号:4508986 上传时间:2024-09-26 格式:DOC 页数:90 大小:1.95MB
下载 相关 举报
c++公司人事管理系统课程设计报告.doc_第1页
第1页 / 共90页
亲,该文档总共90页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、c+公司人事管理系统课程设计报告(完整版)(文档可以直接使用,也可根据实际需要修改使用,可编辑 欢迎下载)面向对象程序设计课程设计报告公司人事管理系统 院 系: 计算机学院二系 班 级: 计07 2班 姓 名: 学 号: 合 作 者: 指导教师: 2008 年 7 月 4 日程序设计基础课程设计任务书一、题目:公司人事管理系统二、设计要求(1)由(组长)和组成课程设计小组。(2)小组成员分工协作完成。要求每个成员有自己相对独立的模块,同时要了解其他组员完成的内容。(3)查阅相关资料,自学具体课题中涉及到的新知识。(4)采用结构化、模块化程序设计方法设计,功能要完善。(5)所设计的系统应有菜单。

2、(6)按要求写出课程设计报告,并于设计结束后1周内提交。其主要内容包括:封皮、课程设计任务书,指导教师评语与成绩、目录、概述、软件需求分析、总体设计、详细设计、程序的调试与测试、总结与体会、结束语、程序清单(带中文注释)、参考文献等。报告一律用A4纸打印,正文的中文字体为宋体,西文字体用Time New Roma,一律用小四号字,行距采用“固定值”18磅,首行缩进2字符。1级标题中文字体为黑体,西文字体为Time New Roma,采用三号字;段落为居中、段前18磅、段后12磅、行距采用“固定值”18磅,首行缩进:无。仅一级标题上目录。三、课程设计工作量由于是设计小组团结协作完成设计任务,一般

3、每人的程序量在200行有效程序行以上,不得抄袭。四、课程设计工作计划2008年6月16日,指导教师讲课,学生根据题目准备资料;2008年6月16日,设计小组进行总体方案设计和任务分工;2008年6月17日6月23日,每人完成自己承担的程序模块并通过独立编译;2008年6月24日6月25日,将各模块集成为一个完整的系统,并录入足够的数据进行调试运行;2008年6月26日,软件发布2008年6月27日,验收、撰写报告;2008年7月4日,交课程设计报告 指导教师签章: 教研室主任签章 程序设计基础课程设计指导教师评语与成绩指导教师评语:课程设计表现成绩: 课程设计验收成绩: 课程设计报告成绩: 课

4、程设计 总成绩: 指导教师签章 2021年 7 月 日目 录一 概述(宋体,三号,加粗,居中)4二 软件需求分析5三 总体方案设计6四 详细设计7五 程序的调试与运行结果说明12六 课程设计总结12七 后记12八 参考文献12九 附录12一 概述1. 课程设计的目的:公司人事管理系统2. 课程设计的要求(1)目的1使学生更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。2培养学生综合运用所学知识独立完成课题的能力。3培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。4提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关

5、的基本素质。5培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。6对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。(2)要求(1)学生自由组成课程设计小组,建议每组学生人数一般为2-3人左右。(2)每组选择课程设计题目中的1-2个课题,每个课题限选1组。小组成员分工协作完成。要求每个成员有自己相对独立的模块(每人的代码在200行以上),同时要了解其他组员的完成的内容。(3)查阅相关资料,自学具体课题中涉及到的新知识。(4)采用结构化、模块化程序设计方法设计,功能要完善,界

6、面美观。(5)所设计的系统应有菜单、动画和音乐。(6)按要求写出课程设计报告,并于设计结束后1周内提交。其主要内容包括:封皮、课程设计任务书,目录、概述、软件总体设计、详细设计、软件的调试、总结、谢启、附录:带中文注释的程序清单、参考文献。报告一律用A4纸打印,中文字体为宋体,西文字体用Time New Roma,一律用小四号字,行距采用“固定值”18磅,首行缩进2字符。总体设计应配合软件总体模块结构图来说明软件应具有的功能。详细设计应用传统或N-S流程图和屏幕抓图说明,调试的叙述应配合出错场景的抓图来说明出现了哪些错误,如何解决的。3. 课程设计的主要设计思想我所在的小组设计了一个公司人事管

7、理系统,这个系统的功能比较完善,由一个主函数和多个模块实现了该系统的以下功能:1, 管理员系统界面,首先输入管理员密码进入界面,可实现添加职员信息,按姓名查找职工信息,修改职工信息,删除指定职工的信息,显示所有职工信息,返回主界面,直接跳出系统等功能。2, 普通职工系统界面,首先输入自己的姓名进入普通职工界面,可实现输入个人信息,显示个人信息,按姓名查找他人信息,修改个人信息,显示所有在厂职工的信息,返回主页面,直接跳出系统等功能。二 软件需求分析一需求分析:为了使公司企业更好的管理职工信息及有关情况,方便快捷的处理各种信息,设计了本程序。比如有新职工进入公司,可以利用本程序输入职工的信息与资

8、料,把该职工的信息存档,又比如某职工信息(如 号码)变化了,可利用该程序修改信息,还比如某职工因事离开该公司,还可以利用该程序删除该职工的信息。二. 操作手册:运行程序后,直接出现一个菜单。供你选择是按管理员身份还是普通职工身份进入系统,亦或者不进入直接退出,如果想以管理员身份进入必须知道管理员密码,正确执行后可进入管理员功能菜单或者普通职工功能菜单。根据菜单的提示即可进行操作。三 总体方案设计一总体思路程序运行时,直接进入公司人事管理系统的主菜单栏。菜单栏清晰明朗的列出了每一项的功能按何种身份进入,包括管理员身份和普通职工身份。1 选择管理员身份,首先通过管理员密码确定你是否是管理员,进入管

9、理员界面后,可实现添加职员信息,按姓名查找职工信息,修改职工信息,删除指定职工的信息,显示所有职工信息,返回主界面,直接跳出系统等功能,你可按提示进行操作。2 选择普通职工身份,首先输入你的姓名,目的是先确定目前现存文件里是否有该人,如果没有则可以首先提示你先选择1来输入你自己的信息,首先输入姓名也可以在你选择2时直接跳出职工本身的信息。同时该界面还可以实现修改本人信息,按姓名查找他人信息,显示所有在厂职工的信息,返回主页面,直接跳出系统等功能。你可按提示进行操作。二定义的函数及说明:1.void tiquxinxi() / /从文件中提取出全部信息2.void write() / /输入信息

10、3.void seach(char NAME) / /按姓名查找职工信息4.void allprint() / /全部输出在厂职工的信息5.void delet() / /删除职工信息6.void oneprint() / /显示要查找的职工的信息7.void change_infor() / /修改职工的信息8.void mune1() / /管理员的功能菜单9.void mune2() / /普通职工的功能菜单10.int queding() / /管理员的密码确定函数11.void select() / /功能菜单的选择函数12.int main() / /主函数三.比较有特色的算法:

11、本系统多次用到Switch,if,数组,结构体,指针以及各类函数。还用到了纯虚函数及抽象类,在继承和派生方面我们用到了通过利用基类的指针访问派生类的成员函数,本系统最大的优点就是大量运用C+中的文件部分,只要你输入过的信息并且未被你删除,不管是否关闭过程序,信息都一直存在,你可任意时间查询。四整体框图1管理员界面2普通职工界面0退出系统系统主界面1输入个人信息2显示个人信息3修改个人信息4按姓名查找他人5显示所有职工信息6返回主界面0直接跳出系统输入管理员密码确认首先输入职员姓名1添加职员信息2按姓名查找职工3修改指定职工信息4删除指定职工信息5显示所有职工信息6返回主界面0直接跳出系统四 详

12、细设计以下为我完成的具体功能函数及函数的详细分析和所用算法:1, void tiquxinxi()函数;该函数是打开指定文件从中提取所有的职工信息,提取到结构体数组里面,每个结构体存一个职工信息,把行数付给全局变量lenth.最后关闭文件。 void tiquxinxi() /提取信息char e;int i;int j;ifstream myfile(d:q.txt,ios:nocreate);for(i=0;i1000;i+)myfile.getline(infi.name1,11);if(strlen(infi.name1)2) break;for(j=1;j30;j+)if(infi.

13、name1j= ) infi.name1j=0;myfile.get(e);myfile.getline(infi.sex1,4);for(j=1;j30;j+)if(infi.sex1j= ) infi.sex1j=0;myfile.get(e);myfile.getline(infi.zhiwu1,11);for(j=1;j30;j+)if(infi.zhiwu1j= ) infi.zhiwu1j=0;myfile.get(e);myfile.getline(infi.idemployee1,6);for(j=1;j30;j+)if(infi.idemployee1j= ) infi.id

14、employee1j=0;myfile.get(e);myfile.getline(infi.ID1,21);for(j=1;j30;j+)if(infi.ID1j= ) infi.ID1j=0;myfile.get(e);myfile.getline(infi.brithday1,11);myfile.get(e);myfile.getline(infi.address1,31);for(j=1;j30;j+)if(infi.address1j= ) infi.address1j=0;myfile.get(e);myfile.getline(infi.tele1,13);for(j=1;j3

15、0;j+)if(infi.tele1j= ) infi.tele1j=0;myfile.get(e);myfile.getline(infi.money1,6);for(j=1;j30;j+)if(infi.money1j= ) infi.money1j=0;myfile.get(e);lenth=i;myfile.close(); 打开q.txt文件提取信息到结构体里每人一个结构体存放信息把行数付给全局变量lenth关闭文件2 void delet()函数。该函数首先调用提取函数,输出所有人的信息,然后调用查找函数查到要删除的人,记下在结构体中的位数,以清空的方式打开文件,重新写入信息,到删

16、除的位置时不输出信息,继续输下面人的信息,最后关闭文件。成功完成删除信息的任务。void delet() /管理员删除职员信息int j;char e;tiquxinxi();cout以下为NAME的信息:n; seach(NAME);coute;if(e=y|e=Y)for(int i=0;i1000;i+)if(strcmp(NAME,infi.name1)=0) break;j=i;ofstream outfile(d:q.txt,ios:trunc); /全清if(!outfile)cerropen error!endl;exit(1);for(i=0;ilenth;i+)if(i=j

17、) continue;outfilesetiosflags(ios:left)setw(10)infi.name1;outfile setw(3)infi.sex1;outfile setw(10)infi.zhiwu1;outfile setw(5)infi.idemployee1;outfile setw(20)infi.ID1;outfile setw(10)infi.brithday1;outfile setw(30)infi.address1;outfile setw(12)infi.tele1;outfile setw(5)infi.money1;outfilen;outfile.

18、close();cout你已经成功删除NAME的信息endl;elsecout你已经放弃了删除该信息!n;调用tiquxinxi()函数调用seach(NAME)函数 j=i用outfile以清空的方式打开指定文件” d:q.txt”否 能否打开 能If(i=j) continue关闭文件exit (1); 输出所有NAME信息N你已经放弃了删除该信息if(strcmp(NAME,infi.name1)=0)你确定要删除该信息YFor(i=0;i1000;i+) For(i=0;ilenth;i+)3. void select() 函数 该函数为菜单函数,通过此函数进行相应的操作,首先,有抽象

19、类指针来控制是管理员身份还是普通职工身份,然后进行7种选择,0退出;1输入职工的信息;2显示查找人信息;3修改查找人信息;4(1:查找他人信息;2:删除查找人信息;);5显示所有在厂职工信息;6返回主菜单。void select() /菜单管理及选择people *pt;employee em;guanliyuan guan;if(sl=1) pt=&guan;if(sl=2) pt=&em;coutch;switch(ch)case 0:cout你已经成功退出!谢谢使用!_input_inf();coutoneprint();coutchange_infor();cout你还想进行何种操作:

20、;break;case 4:if(sl=1)coutNAME;tiquxinxi();for(int i=0;i=lenth) coutdelet();cout你还想进行何种操作:;break;if(sl=2) coutNAME;pt-seach(NAME);coutallprint();cout你还想进行何种操作:;break;case 6:k=0;break;default:cout你的选择错误,请重新选择:;break;while(k);people *ptif(sl=1)YNSwitch(ch)case 0:退出 break;case 1:输入信息break;case 2:显示查找人信

21、息 break;case 3:修改查找人信息 break;case 4:if(sl=1)输出他人信息;else删除查找人信息 break;case 5:显示所有在厂职工信息 break;case 6:返回主菜单default:你的选择有误,请重新选择3 在employee类和guanliyuan类继承people类时的UML图:派生两类的代码(略)。UML图如下:people#name:char20#sex:char3#zhiwu:char10 #ID:char20#brithday:struct date#address:char50 #tele:char20#idemployee:char

22、20#money:double+Input-inf() : void+seach(NAME: char20) : void+allprint() : void+oneprint() : virtual void+change-infor() : virtual void+delet() : virtual voidguanliyuanemployee+delet() : void+oneprint() : void+change_infor() : void+change_infor() : void+delet() : void+oneprint() : void五 程序的调试与运行结果说明

23、1,在确定密码时,事先没有加上flush时,往里输密码时,*号不会因为输入一个字符而出现一个字符,而是输入全部密码后按enter键才会输出全部*,加上flush后,程序就会按输入一个字符显示一个*的格式出现。以下图是正确后的示图。2在提取文件信息时,开始时会出现下列乱码,经检查后才发现getline(sting,n);中提取的信息长度为n-1,原因是n中有一位存0,后每项都加上1后,信息提取便精确了。改正前:改正后:六 课程设计总结整体来说,该程序还基本满足了公司人事管理的基本需求,比如添加,修改及删除职工信息。由于时间仓促,本系统还不完善,比如,它只能按姓名查询职工信息,不能按其他信息查找,

24、也不能按模糊信息,多项信息查找。如果输入格式有误,该系统会自动跳出。 在进行过程中,我们在修改信息,删除信息方面遇到了很大的麻烦,开始以为可以按文件指针直接在文件里修改及删除,后来经学哥提醒,可以先把全部信息提取出来然后再修改,然后再重新读入文件,才把该问题解决。七 后记首先,要感谢王双立老师的指导和他这一学期对我们学习的负责态度,课上实际操作,常举实例,是一种很吸引学生的方法。让我们基础学的很扎实。还要感谢几位同学和学哥的指点。其次,我还要感谢我的组长魏林林,我们一起完成了这次实验,让我我知道团结就是力量的真正意义。八 参考文献1 谭浩强,C+程序设计(第一版),北京,清华大学出版社,200

25、4年6月。2 郑莉,董渊,张瑞丰,C+语言程序设计(第3版),北京,清华大学出版社,2004年1月。九 附录/全部代码、界面及注释#include#include#include#include#include#includechar mima20,employname10;int sl,k=1,lenth=0;char NAME20;struct date int year;int month;int day;struct inforchar name120; /姓名char sex13; /性别char zhiwu110; /职务char ID120; /身份证号char brithday

26、112; /生日char address150; /家庭住址char tele120; / 号码 char idemployee120; /工作编号char money15;inf100;void tiquxinxi() /提取信息char e;int i;int j;ifstream myfile(d:q.txt,ios:nocreate);for(i=0;i1000;i+)myfile.getline(infi.name1,11);if(strlen(infi.name1)2) break;for(j=1;j30;j+)if(infi.name1j= ) infi.name1j=0;myf

27、ile.get(e);myfile.getline(infi.sex1,4);for(j=1;j30;j+)if(infi.sex1j= ) infi.sex1j=0;myfile.get(e);myfile.getline(infi.zhiwu1,11);for(j=1;j30;j+)if(infi.zhiwu1j= ) infi.zhiwu1j=0;myfile.get(e);myfile.getline(infi.idemployee1,6);for(j=1;j30;j+)if(infi.idemployee1j= ) infi.idemployee1j=0;myfile.get(e);

28、myfile.getline(infi.ID1,21);for(j=1;j30;j+)if(infi.ID1j= ) infi.ID1j=0;myfile.get(e);myfile.getline(infi.brithday1,11);myfile.get(e);myfile.getline(infi.address1,31);for(j=1;j30;j+)if(infi.address1j= ) infi.address1j=0;myfile.get(e);myfile.getline(infi.tele1,13);for(j=1;j30;j+)if(infi.tele1j= ) infi

29、.tele1j=0;myfile.get(e);myfile.getline(infi.money1,6);for(j=1;j30;j+)if(infi.money1j= ) infi.money1j=0;myfile.get(e);lenth=i;myfile.close();class people /人的类protected:char name20; /姓名char sex2; /性别char zhiwu10; /职务char ID20; /身份证号date brithday; /生日char address50; /家庭住址char tele20; / 号码 char idemploy

30、ee20; /工作编号double money;public:void input_inf() /输入信息函数ofstream outfile(d:q.txt,ios:in|ios:app); /建立并追加方式if(!outfile)cerropen error!endl;exit(1);coutname;outfilesetiosflags(ios:left)setw(10)name; /左对齐coutsex;outfile setw(3)sex;coutzhiwu;outfile setw(10)zhiwu;coutidemployee;outfile setw(5)idemployee;

31、coutID;outfile setw(20)ID;coutbrithday.yearbrithday.monthbrithday.day;outfile setw(4)brithday.year/setw(2)brithday.month;cout/setw(2)brithday.day;coutaddress;outfile setw(30)address;couttele;outfile setw(12)tele;coutmoney;outfile setw(5)money;outfilen;outfile.close();void seach(char NAME) /按姓名查找函数ti

32、quxinxi(); for(int t=0;tlenth;t+)if(strcmp(NAME,inft.name1)=0) break;if(tlenth) coutNAME的信息如下:;coutn姓名:inft.name1;coutn性别:inft.sex1; coutn职务:inft.zhiwu1;coutn工作编号:inft.idemployee1; coutn身份证号码:inft.ID1; coutn生日:inft.brithday1; coutn联系 :inft.tele1; coutn地址:inft.address1; coutn工资:inft.money1endl; /各项信息

33、一一列出else cout查无此人!n;void allprint() /显示全部信息函数tiquxinxi();ifstream myfile(d:q.txt,ios:nocreate);int i;char a120;for(i=0;ilenth;i+)myfile.getline(a,150);coutaendl;myfile.close();virtual void oneprint()=0; /显示一个人的信息 /纯虚函数virtualvoid change_infor()=0; /修改信息函数virtual void delet()=0; /删除函数;class employee:public people public:void delet() /只是形式,整个程序不会用到此函数coutYOU CANNOT DELETE INFORMATION!n;void oneprint() /显示一个人的信息seach(employname);void change_infor() /职员修改个人信息char e;tiquxinxi();cout这是你的信息:n;seach(employname);coute;if(e=y|e=Y)

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 学术论文 > 其他

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

关于我们      便捷服务       自信AI       AI导航        获赠5币

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

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

gongan.png浙公网安备33021202000488号   

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

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服