C++公司人事管-理系统课程设计报告.docx_第1页
C++公司人事管-理系统课程设计报告.docx_第2页
C++公司人事管-理系统课程设计报告.docx_第3页
C++公司人事管-理系统课程设计报告.docx_第4页
C++公司人事管-理系统课程设计报告.docx_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

c+公司人事管理系统课程设计报告面向对象程序设计课程设计报告 公司人事管理系统 公司人事管理系统 院 系: 计算机学院二系 班 级: 计07 2班 姓 名: 学 号: 合 作 者: 指导教师: 2008 年 7 月 4 日 (1)由(组长)和组成课程设计小组。 (2)小组成员分工协作完成。要求每个成员有自己相对独立的模块,同时要了解其他组员完成的内容。 (3)查阅相关资料,自学具体课题中涉及到的新知识。 (4)采用结构化、模块化程序设计方法设计,功能要完善。 (5)所设计的系统应有菜单。 (6)按要求写出课程设计报告,并于设计结束后1周内提交。其主要内容包括:封皮、课程设计任务书,指导教师评语与成绩、目录、概述、软件需求分析、总体设计、详细设计、程序的调试与测试、总结与体会、结束语、程序清单(带中文注释)、参考文献等。报告一律用A4纸打印,正文的中文字体为宋体,西文字体用Time New Roma,一律用小四号字,行距采用“固定值”18磅,首行缩进2字符。1级标题中文字体为黑体,西文字体为Time New Roma,采用三号字;段落为居中、段前18磅、段后12磅、行距采用“固定值”18磅,首行缩进:无。仅一级标题上目录。 由于是设计小组团结协作完成设计任务,一般每人的程序量在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日,交课程设计报告 指导教师签章: 教研室主任签章 程序设计基础课程设计指导教师评语与成绩指导教师评语: 课程设计表现成绩: 课程设计验收成绩: 课程设计报告成绩: 课程设计 总成绩: 指导教师签章 2008年 7 月 日 一 概述(宋体,三号,加粗,居中). 5 二 软件需求分析 . 5 三 总体方案设计 . 6 四 详细设计 . 8 五 程序的调试与运行结果说明 . 15 六 课程设计总结 . 17 七 后记 . 17 八 参考文献 . 18 九 附录 . 18 1. 2. (1) 1使学生更深入地理解和掌握该课程中的有关基本概念,程序设计思想和方法。 2培养学生综合运用所学知识独立完成课题的能力。 3培养学生勇于探索、严谨推理、实事求是、有错必改,用实践来检验理论,全方位考虑问题等科学技术人员应具有的素质。 4提高学生对工作认真负责、一丝不苟,对同学团结友爱,协作攻关的基本素质。 5培养学生从资料文献、科学实验中获得知识的能力,提高学生从别人经验中找到解决问题的新途径的悟性,初步培养工程意识和创新能力。 6对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。 (2) (1)学生自由组成课程设计小组,建议每组学生人数一般为2-3人左右。 (2)每组选择课程设计题目中的1-2个课题,每个课题限选1组。小组成员分工协作完成。要求每个成员有自己相对独立的模块(每人的代码在200行以上),同时要了解其他组员的完成的内容。 (3)查阅相关资料,自学具体课题中涉及到的新知识。 (4)采用结构化、模块化程序设计方法设计,功能要完善,界面美观。 (5)所设计的系统应有菜单、动画和音乐。 (6)按要求写出课程设计报告,并于设计结束后1周内提交。其主要内容包括: 封皮、课程设计任务书,目录、概述、软件总体设计、详细设计、软件的调试、总结、谢启、附录:带中文注释的程序清单、参考文献。报告一律用A4纸打印,中文字体为宋体,西文字体用Time New Roma,一律用小四号字,行距采用“固定值”18磅,首行缩进2字符。总体设计应配合软件总体模块结构图来说明软件应具有的功能。详细设计应用传统或N-S流程图和屏幕抓图说明,调试的叙述应配合出错场景的抓图来说明出现了哪些错误,如何解决的。 3. 我所在的小组设计了一个公司人事管理系统,这个系统的功能比较完善,由一个主函数和多个模块实现了该系统的以下功能: 1,管理员系统界面,首先输入管理员密码进入界面,可实现添加职员信息,按姓名查找职工信息,修改职工信息,删除指定职工的信息,显示所有职工信息,返回主界面,直接跳出系统等功能。 2,普通职工系统界面,首先输入自己的姓名进入普通职工界面,可实现输入个人信息,显示个人信息,按姓名查找他人信息,修改个人信息,显示所有在厂职工的信息,返回主页面,直接跳出系统等功能。 为了使公司企业更好的管理职工信息及有关情况,方便快捷的处理各种信息,设计了本程序。比如有新职工进入公司,可以利用本程序输入职工的信息与资料,把该职工的信息存档,又比如某职工信息(如电话号码)变化了,可利用该程序修改信息,还比如某职工因事离开该公司,还可以利用该程序删除该职工的信息。 运行程序后,直接出现一个菜单。供你选择是按管理员身份还是普通职工身份进入系统,亦或者不进入直接退出,如果想以管理员身份进入必须知道管理员密码,正确执行后可进入管理员功能菜单或者普通职工功能菜单。根据菜单的提示即可进行操作。 程序运行时,直接进入公司人事管理系统的主菜单栏。 菜单栏清晰明朗的列出了每一项的功能按何种身份进入,包括管理员身份和普通职工身份。 1选择管理员身份,首先通过管理员密码确定你是否是管理员,进入管理员界面后,可实现添加职员信息,按姓名查找职工信息,修改职工信息,删除指定职工的信息,显示所有职工信息,返回主界面,直接跳出系统等功能,你可按提示进行操作。 2选择普通职工身份,首先输入你的姓名,目的是先确定目前现存文件里是否有该人,如果没有则可以首先提示你先选择1来输入你自己的信息,首先输入姓名也可以在你选择2时直接跳出职工本身的信息。同时该界面还可以实现修改本人信息,按姓名查找他人信息,显示所有在厂职工的信息,返回主页面,直接跳出系统等功能。你可按提示进行操作。 二: 1.void tiquxinxi() / /从文件中提取出全部信息 2.void write() / /输入信息 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() / /主函数 本系统多次用到Switch,if,数组,结构体,指针以及各类函数。还用到了纯虚函数及抽象类,在继承和派生方面我们用到了通过利用基类的指针访问派生类的成员函数, 本系统最大的优点就是大量运用C+中的文件部分,只要你输入过的信息并且未被你删除,不管是否关闭过程序,信息都一直存在,你可任意时间查询。 1 0 2 输入管理员密码确认 首先输入职员姓名 12345601234560添按修删显返直输显修按显返直加姓改除示回接入示改姓示回接职名指指所主跳个个个名所主跳员查定定有界出人人人查有界出信找职职职系信信信找职面 系面 职工工工他工统 息 统 息 息 息 信信信信工 人 息 息 息 息 以下为我完成的具体功能函数及函数的详细分析和所用算法: 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(1,11); if(strlen(1)2) break; for(j=1;j30;j+) if(1j= ) 1j=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.idemployee1j=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;j30;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()函数。 该函数首先调用提取函数,输出所有人的信息,然后调用查找函数查到要删除的人,记下在结构体中的位数,以清空的方式打开文件,重新写入信息,到删除的位置时不输出信息,继续输下面人的信息,最后关闭文件。成功完成删除信息的任务。 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,1)=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) continue; outfilesetiosflags(ios:left)setw(10)1; 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.close(); cout你已经成功删除NAME的信息endl; else cout你已经放弃了删除该信息!n; 调用tiquxinxi()函数 输出所有NAME信息 调用seach(NAME)函数 N 你确定要删除该信息 Y 你For(i=0;i1000;i+) 已 if(strcmp(NAME,1)=0) 经 放弃 j=i 了 用outfile以清空的方式打开指定文件” d:q.txt” 删 除否 能否打开 能 该 信exit For(i=0;ilenth;i+) 息 (1); If(i=j) continue 关闭文件 3. void select() 函数 该函数为菜单函数,通过此函数进行相应的操作,首先,有抽象类指针来控制是管理员身份还是普通职工身份,然后进行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你还想进行何种操作:;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 *pt if(sl=1) Y N Switch(ch) case 0:退出 break; case 1:输入信息 break; case 2:显示查找人信息 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:char20 #money:double +Input-inf() : void +seach(NAME: char20) : void +allprint() : void +oneprint() : virtual void +change-infor() : virtual void +delet() : virtual void employee guanliyuan +delet() : void +change_infor() : void +oneprint() : void +delet() : void +change_infor() : void +oneprint() : void 1,在确定密码时,事先没有加上flush时,往里输密码时,*号不会因为输入一个字符而出现一个字符,而是输入全部密码后按enter键才会输出全部*,加上flush后,程序就会按输入一个字符显示一个*的格式出现。以下图是正确后的示图。 2在提取文件信息时,开始时会出现下列乱码,经检查后才发现getline(sting,n);中提取的信息长度为n-1,原因是n中有一位存0,后每项都加上1后,信息提取便精确了。 改正前: 改正后: 整体来说,该程序还基本满足了公司人事管理的基本需求,比如添加,修改及删除职工信息。由于时间仓促,本系统还不完善,比如,它只能按姓名查询职工信息,不能按其他信息查找,也不能按模糊信息,多项信息查找。如果输入格式有误,该系统会自动跳出。 在进行过程中,我们在修改信息,删除信息方面遇到了很大的麻烦,开始以为可以按文件指针直接在文件里修改及删除,后来经学哥提醒,可以先把全部信息提取出来然后再修改,然后再重新读入文件,才把该问题解决。 首先,要感谢王双立老师的指导和他这一学期对我们学习的负责态度,课上实际操作,常举实例,是一种很吸引学生的方法。让我们基础学的很扎实。还要感谢几位同学和学哥的指点。 其次,我还要感谢我的组长魏林林,我们一起完成了这次实验,让我我知道团结就是力量的真正意义。 1 谭浩强,C+程序设计(第一版),北京,清华大学出版社,2004年6月。 2 郑莉,董渊,张瑞丰,C+语言程序设计(第3版),北京,清华大学出版社,2004年1月。 /全部代码、界面及注释 #include #include #include #include #include #include char mima20,employname10; int sl,k=1,lenth=0; char NAME20; struct date int year; int month; int day; ; struct infor char name120; /姓名 char sex13; /性别 char zhiwu110; /职务 char ID120; /身份证号 char brithday112; /生日 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(1,11); if(strlen(1)2) break; for(j=1;j30;j+) if(1j= ) 1j=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.idemployee1j=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;j30;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(); class people /人的类 protected: char name20; /姓名 char sex2; /性别 char zhiwu10; /职务 char ID20; /身份证号 date brithday; /生日 char address50; /家庭住址 char tele20; /电话号码 char idemployee20; /工作编号 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; 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) /按姓名查找函数 tiquxinxi(); for(int t=0;tlenth;t+) if(strcmp(NAME,1)=0) break; if(tlenth) coutNAME的信息如下:; coutn姓名:1; coutn性别:inft.sex1; coutn职务:inft.zhiwu1; coutn工作编号:inft.idemployee1; coutn身份证号码:inft.ID1; coutn生日:inft.brithday1; coutn联系电话:inft.tele1; coutn地址:inft.address1; coutn工资:inft.money1endl; /各项信息一一列出 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; /显示一个人的信息 /纯虚函数 virtual void 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) for(int i=0;ilenth;i+) if(strcmp(employname,1)=0) break; cout请重新输入信息:endl; 1; coutinfi.sex1; coutinfi.zhiwu1; coutinfi.idemployee1; coutinfi.ID1; coutinfi.brithday1; coutinfi.address1; coutinfi.tele1; coutinfi.money1; ofstream outfile(d:q.txt,ios:in); if(!outfile) cerropen error!endl; exit(1); for(i=0;ilenth;i+) outfilesetiosflags(ios:left)setw(10)1; 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(4)infi.money1; outfilen; outfile.close(); else cout你已经放弃了修改信息!endl; ; class guanliyuan:public people public: void change_infor() /管理员修改职员信息 tiquxinxi(); coutNAME; for(int i=0;i=lenth) cout查无此人!n; else cout请重新输入信息:endl; 1; coutinfi.sex1; coutinfi.zhiwu1; coutinfi.idemployee1; coutinfi.ID1; coutinfi.brithday1; coutinfi.address1; coutinfi.tele1; coutinfi.money1; ofstream outfile(d:q.txt,ios:in); if(!outfile) cerropen error!endl; exit(1); for(i=0;ilenth;i+) outfilesetiosflags(ios:left)setw(10)1; 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.close(); 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,1)=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) continue; outfilesetiosflags(ios:left)setw(10)1; 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; ou

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论