《管理系统C课程设计.pdf》由会员分享,可在线阅读,更多相关《管理系统C课程设计.pdf(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、管理系统c课程设计目一、需求与功能分析二、系统总体框架三、模块设计与分析四、类的设计与分析五、特色算法分析六、功能测试七、存在的不足与对策八、程序源代码一.需求与功能分析一、程序的需求随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对人事信息进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高人事理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。因此,开发这样一套管理软件成为很有必要的事
2、情。目前,无论是机关、事业单位、还是企业单位,人事管理对于组织生存与长远发展所具备的重要性都已经有了明确的认识,而人事管理水平的提升不仅需要高素质的管理人员,而且也需要信息化工具进行辅助在现代化的企业管理中,人事管理系统有着十分重要的作用,然而,用大型软件系统来于小型的企事业单位,不 啻 于“杀鸡用牛刀”,因此小型的的软件对于这种单位自然有十分重要作用。二、程序的主要功能1、添加功能:添加一个职员的基本信息,包括姓名,工作证号,身份证号码,生日,家庭住址,家庭电话号码,部门,薪水,性别,职务。2、删除功能:能够对一个职员的信息进行删除按姓名进行删除。1 录 133-44-99-1111-171
3、818-333、删除全部职员信息:能够对于全部职员的信息进行删除!4、显示功能:显示所有职员的主要信息包括姓名,身份证号码,工作证号,生日等。5、查找功能:根据你键入的职员姓名,显示其详细信息!6、修改功能:对职员的信息进行修改。7、保存信息对全部信息进行保存。8、退出程序能够退出程序。二.系统总体框架系统录入员工信息显示员工信息查找员工信息删除员工信息修改员工信息清空员工信息保存员工信息退出程序三.模块设计与分析1.录入员工信息voidinsert。录入数据intn;while(l)cout<<请输入部门的代码:1-人事部cin>>n;if(n=l|n=21|n=3)
4、if(n=l)doStaff<Personnel>*p;p=newStaff<Personnel>22-维修部3销售部<<endl;p->bumen,show();p->input();p->bumen.input();intq;dofor(inti=0;i<N;i+)q=0;if(Pi=NULL)break;elseif(Pi->No=p->No)cout<<此工作号已存在!请修改!<<endl;p->input();p->bumen.input();q+;break;while(q!
5、=0);for(intj=0;j<N;j+)if(Pj=NULL)Pj=p;cout<<输入成功!”<<endl;break;你还要继续执行其操作吗?是'1',否'0':;cin>>n;while(n=l);P 申请新的 Staff<Personnel>空间,输入数据,检查所输入的信息是否已经存在,存在显示数据已经存在,重新输入新的数据,再检查,直到输入没有错误。进入保存该正确的数据,空间要有足够的空间才能保存数据,不足就保存失败。2.显示员工信息voidshow()显示数据Staff<Personne
6、l>*p;cout<<out<<endl;for(intj=0;j<N;j+)if(PU!=NULL)3)只要P的空间内不为空就输出数据。3.查找员工信息 p=Pj;p->output();p->bumen.output();voidfind()查找数据stringn;cout<<输入你要查找姓名<<endl;cin>>n;for(intj=0;j<N;j+)if(Pj!=NULL&&(Pj->Name)=n)Pj->bumen.show();cout<<out&l
7、t;<endl;Pj->output();Pj->bumen.output();break;输入要查找的名字,循环空间,空间不为空,而且空间里的名字与输入的名字对比,符合就输出该数据,不符合下一条数据,直到符合为止。如果全部空间扫描完都没有找到该信息,就输出不存在该信息。4.删除员工信息voidDelete()删除数据 stringn;intm;cout<<输入你要查找姓名<<endl;cin>>n;cout<<请输入该员工所在的部门的代码:1-人事部<<endl;cin>>m;if(m=l)for(in
8、tj=0;j<N;j+)if(Pj!=NULL&&(Pj->Name)=n)cout<<out<<endl;PD->output();Pj->bumen.output();Pj=NULL;42-维修部3销售部)输入要查找的名字,循环空间,空间不为空,而且空间里的名字与输入的名字对比,符合就把该项的数据赋为空值,不符合下一条数据,直到符合为止。如果全部空间扫描完都没有找到该信息,没有信息输出。5.修改员工信息 cout<<”该员工已被删除!l,<<endl;break;voidrevise()修改数据 str
9、ingn;intm;cout<<输入你要查找姓名<<endl;cin>>n;cout<<请输入该员工所在的部门的代码:1-人事部2-维修部3销售部<<endl;cin>>m;if(m=l)for(intj=0;j<N;j+)if(Pjl=NULL&&(Pj->Name)=n)cout<<out<<endl;Pj->output();Pj->bumen.output();Pj->input();Pj->bumen.input();cout<&l
10、t;该员工修改成功!;break;输入要查找的名字,循环空间,空间不为空,而且空间里的名字与输入的名字对比,符合就重新输入数据,不符合下一条数据,直到符合为止。如果全部空间扫描完都没有找到该信息,就没有信息输出。6.清空员工信息voidclear。清空数据intn,a=l;docout<<请输入密码<<cin>>n;if(n=a)'0'返回界面<<endl;5forinti=0;i<N;i+)Pi=NULL;Mi=NULL;Si=NULL;cout<<TW员工的资料已被删除!<<endl;break;
11、elsecout<<输入密码失败!<<endl;while(n!=O);首先清空全部员工数据是要慎重考虑的,所以要设置密码,且密码定义为1,没有密码不能清空全部员工。密码正确,然后把所有的空间都赋为空值。7.保存员工信息voidsave()保存数据ofstreamoutput_file;ofstreamoutput_filel;ofstreamoutput_file2;ofstreamoutput_file3;cout<<正在保存中.<<endl;output_file.open(Personnel.txt);if(!output_file)co
12、ut<保存Personnel文件失!<<endl;for(inti=0;i<N;i+)if(Pi!=NULL)output_file<<Pi->No<<<<Pi->Sex<<<<Pi->Name<<<<Ri->ID<<<<Ri->Birthday<<<<Pi->Address<<<<Pi->Phone<<<<Pi->bumen.Job<<
13、;<<Pi->bumen.Pay<<endl;bl+;output_file2.open(Maintain.txt);if(!output_file2)cout<<厂保存 Maintain 文件失败!<<endl;for(i=0;i<N;i+)if(Mi!=NULL)output_file2<<Mi->No<<<<Mi->Sex<<<<Mi->Name<<<<Mi->ID<<<<Mi->Birthda
14、y<<<<Mi->Address<<<<Mi->Phone<<<<Mi->bumen.Job<<<<Mi->bumen.Pay<<endl;6b2+;output_file3.open(Sell.txt);if(!output_file3)cout<<保存 Sell 文件失败!<<endl;for(i=0;i<N;i+)if i!=NULL)output_file3<<Si->t;Si->ID<<&
15、lt;<Si->Birthday<<<<Si->Address<<Si->bumen.Pay<<endl;b3+;因为我用了 3 个数组来保存3 个不同的部门信息,所以就用了 3 个不同的文件来保存。然后再用一个文件来保存各个部门的数据的条数,这样是用来控制读出文件的条数,防止读出错误的信息。8.退出程序四.类的设计与分析为了界面简洁些,用了几个类。一个类包含员工的基本信息,一个类包含部门的信息,一个类继承了基本信息和部门信息。1.Base 类classBasepublic:intNo;intlD;stringName;s
16、tringSex;intBirthday;stringAddress;intPhone;voidinput()cout<<”输入员工的工作号:<<endl;cin>>No;cout<<输入员工的姓名:<<endl;cin>>Name;cout<<输入员工的性别:<<endl;cin>>Sex;7输入员工的身分证:<<endl;cin>>ID;cout<<输入员工的生日:<<endl;cin>>Birthday;cout<&
17、lt;输入员工的家庭住址:<<endl;cin>>Address;cout<<输入员工的家庭电话号M:<<endl;cin>>Phone;voidoutput()cout<<setiosflags(ios:left)<<setw(8)<<No<<setw(8)<<Name<<setw(6)<<Sex<<setw(8)<<lD<<setw(10)<<Birthday<<setw(8)<&l
18、t;Address<<setw(l0)<<Phone;2.Personnel 类classPersonnel人事部public:virtualvoidshow()cout<<人事部<<endl;)stringjob;intPay;voidinput()cout<<请输入该员工的职务<<endl;cin>>Job;请输入该员工的薪水<<endl;cin>>Pay;8)voidoutput()cout<<setiosflags(ios:left)<</职务:<&l
19、t;setw 薪水:<<setw<<Pay<<endl;3.继承类classMaintain:publicPersonnelpublic:virtualvoidshowOcout<<维修部<<endl;维修部classStaff:publicBase,publicBranch<Type>9BirthdayAddressPhonevoidinput()voidoutputO数据成员数据成员数据成员记录员工对象的生日记录员工对象的家庭住址记录员工对象的电话成员方法数据成员数据成员JobPayvirtualvoidshow()v
20、oidinput()voidoutputO成员方法成员方法成员方法成员函数,输入数据记录员工对象的职务记录员工对象的薪水虚函数,显示所在的部门成员函数,输入数据成员函数,输出数据五.特色算法分析1.随机生成字符串功能:能够随机生成字符串。算法思路:在一个保存了字母的数组里随机抽取字母,而控制抽取字母的就是数组的下标位置。只要随机生成下标的数字,再用另外的一个数组来保存所抽取出来的字母,这样就成功生成随机字符串。代码:constintSIZE_CHAR=5;constcharCCH=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ;stri
21、ngm()随机生字母charchSIZE_CHAR+l=0;for(inti=0;i<SIZE_CHAR;+i)(intx=rand()%(sizeof(CCH)-l);chi=CCHx;)returnch;)2.查找员工的信息功能:查找相应的员工信息算法思路:输入想要查找的信息,循环空间,空间不为空,而且空间里的名字与输入的名字对比,符合就显示相对应的数据,不符合下一条数据,直到符合为止。如果全部空间扫描完都没有找到该信息,就没有信息输出。流程图:nj=010Pj!=NULL&&(Pj->Name)=n2431输出数据 j+=lnullj<N结束代码:voi
22、dfindQ 查找数据stringn;cout<< 输入你要查找姓名<<endl;cin>>n;for(intj=0;j<N;j+)if(Pj!=NULL&&(Pj->Name)=n)Pj->bumen.show();cout<<out<<endl;llfor(j=0;j<N;j+)if(Mj!=NULL&&(Mj->Name)=n)Mj->bumen.show();cout<<out<<endl;Mj->output();Mj->b
23、umen.output();break;for(j=0;j<N;j+)if(Sj!=NULL&&(Sj->Name)=n)Sj->bumen.show();cout<<out<<endl;Sj->output();Sj->bumen.output();break;Pj->output();Pj->bumen.output();break;六.功能测试1.界面图6-12.界面选择“1”界面测试图12图6-23.再选择 1”选择1 的测试图图6-3选择1 的测试图如果输入的工作号原先已存在就会输出6 3a.图6-3a
24、选择1 的测试图134.界面选择 2图6-4选择2 的测试图5.界面选择 3图6-5选择3 的测试图6.界面选择 4图6-6选择4 的测试图7.界面选择“514图6-7选择5 的测试图8.界面选择 6图6-8选择6 的测试图密码错误的时候图6-8a选择6 的测试图9.界面选择 7图6-9选 择7的测试图1 0.界面选择 815图6-10选 择8的测试图七.存在的不足与对策由于设计者水平有限及时间等方面的原因,该系统的功能比较简单,查错能力也不强,对于一些不正确的输入可能会造成一些难以预料的结果,因此,请不要故意输入错误信息。这些不足请老师多多谅解。今后设计者会更多的学习编程技巧,不断的提高程序
25、设计水平。1.在使用读取功能时,运行程序出现错误,发现原来没有申请新的空间,导致运行出错。2.在使用录入功能时,如果输入与已经存在的数据时不会出现提示,最后要用到循环来检查数据是否相同。开始的时候用到全局变量来控制循环,然后再用到局部变量来覆盖全部变量,导致不能判断数据是否相同。经过修改。在循环那里在重新赋值就可以成功判断!3.在使用读取功能时,读出数据成功,可是读出一些空值,因此在保存数据的时候增加了保存多少条数据,这样用来控制读出数据的条数,以免读出空值!八.程序源代码/basic.h#includestring#includeiostream#includeiomanipusingnam
26、espacestd;classBase(public:intNo;intID;stringName;stringSex;intBirthday;st ringAd dress;intPhone;voidinput()(cout<<”输入员工的工作号:<<endl;cin>>No;输入员工的姓名:<<endl;cin>>Name;cout<<”输入员工的性别:<<endl;cin>>Sex;cout<<”输入员工的身分证:<<endl;cin>>ID;cout<
27、;<输入员工的生 H:<<endl;cin>>Birthday;cout<<“输入员工的家庭住址:<<endl;16cin>>Address;输入员工的家庭电话号码:<<endl;cin>>Phone;)voidoutput()(cout<<setiosflags(ios:left)<<setw(8)<<No<<setw(8)<<Name<<setw(6)<<Sex<<setw(8)<<lD<
28、<setw(10)<<Birthday<<setw(8)<<Address<<setw(10)<<Phone;);/branch.h#includeiostream#includestring#includeiomanipusingnamespacestd;classPersonnel人事部public:virtualvoidshow()cout<<人事部<<endl;)stringjob;intPay;voidinput()(cout<< 请输入该员工的职务<<endl;cin&g
29、t;>Job;cout<<”请输入该员工的薪水 l,<<endl;cin>>Pay;)voidoutput()(cout<<setiosflags(ios:left)<<职务:<<setw<<Job薪水:<<setw<<Pay<<endl;));classMaintain:publicPersonnelpublic:virtualvoidshow()cout<<维修部<<endl;维修部17);classSell:publicPersonnel销
30、售部 public:virtualvoidshow()cout<<销售部<<endl;);template<classType>classBranch(public:Typebumen;);/staff.h#includebasic.h#includebranch.h#includeiostreamusingnamespacestd;template<classType>classStaff:publicBase,();头文件#includestring#include<string>#includestaff.h#includecs
31、tdio#includeconio.h#includefstream#includeiostream#includestdlib.h#defineN100usingnamespacestd;Staff<Personnel>*PN;Staff<Maintain>*MN;Staff<Sell>*SN;constintSIZE_CHAR=5;publicBranch<Type>18constcharCCHabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ;intbl=Ozb2=0,b3=0;导入数据
32、条数stringm()随机生字母(charchSIZE_CHAR+l=0;for(inti=0;i<SIZE_CHAR;+i)(intx=rand()%(sizeof(CCH)-l);chi=CCHx;)returnch;)ostream&out(ostream&stream)操纵符(returnstream<<setiosflags(ios:left)<<setw 也工作号<<setw 姓名<<setw 也性别性 lt;<setw 身分<<setw(12)<<生日<<setw 地址
33、<<setw(10)<<电话<< 部门 ;)voidinsert()录入数据intn;while(l)请输入部门的代码:1-人事部2-维修部3销售部<<endl;cin>>n;if(n=l|n=21|n=3)(if(n=l)(doStaff<Personnel>*p;p=newStaff<Personnel>p->bumen.show();p->input();p->bumen.input();19=证intq;dofor(inti=0;i<N;i+)q=0;if(Pi=NULL)brea
34、k;elseif(Pi->No=p->No)cout<<”此工作号已存在!请修改!<<endl;p->input();p->bumen.input();q+;break;)while(q!=O);for(intj=0;j<N;j+)(if(Pj=NULL)(Pj=P;cout<<输入成功!break;)cout<<你还要继续执行其操作吗?是'1',否'0':;cin>>n;while(n=l);elseif(n=2)(do(Staff<Maintain>*a;a
35、=newStaff<Maintain>a->bumen.show();a->input();a->bumen.input();intq;dofor(inti=0;i<N;i+)q=o;if(Mi=NULL)20break;elseif(Mi->No=a->No)cout<<此工作号已存在!请修改!”<<endl;a->input();a->bumen.input();q+;break;)while(q!=O);for(intj=0;j<N;j+)(if(Mj=NULL)(Mj=a;输入成功!<<
36、;endl;break;)你还要继续执行其操作吗?是'2',否'0':;cin>>n;while(n=2);)elseif(n=3)doStaff<Sell>*s;s=newStaff<Sell>s->bumen.show();s->input();s->bumen.input();intq;dofor(inti=0;i<N;i+)q=o;if(Si=NULL)break;elseif(Si->No=s->No)cout<<此工作号已存在!请修改!<<endl;s-&
37、gt;input();s->bumen.input();q+;break;21)while(q!=O);for(intj=0;j<N;j+)if(Sj=NULL)(Sj=s;cout<<输入成功!<<endl;break;)cout<<你还要继续执行其操作吗?是'3',while(n=3);)break;)voidshow。显示数据(intn;while(l)(请输入部门的代码:1-人事部<<endl;cin>>n;if(n=l|n=21|n=3)if(n=l)(Staff<Personnel>
38、*p;cout<<out<<endl;for(intj=0;j<N;j+)(if(Pj!=NULL)P=Pj;p->output();p->bumen.output();)break;)22 否'0':;cin>>n;2-维修部 3 销售部elseif(n=2)(Staff<Maintain>*a;cout<<out<<endl;for(inti=0;i<N;i+)if(Mi!=NULL)a=Mi;a->output();a->bumen.output();)break;
39、)elseif(n=3)(Staff<Sell>*s;cout<<out<<endl;for(inti=0;i<N;i+)(if(Si!=NULL)(s=Si;s->output();s->bumen.output();)break;)elseif(n=O)break;)丫01|甘11|()查找数据stringn;cout<</输入你要查找姓名<<endl;cin>>n;for(intj=0;j<N;j+)(23if(Pj!=NULL&&(Pj->Name)=n)(Pj->
40、bumen.show();cout<<out<<endl;Pj->output();Pj->bumen.output();break;)for(j=0;j<N;j+)if(Mj!=NULL&&(Mj->Name)=n)Mj->bumen.show();cout<<out<<endl;Mj->output();Mj->bumen.output();break;)for(j=0;j<N;j+)(if(Sj!=NULL&&(Sj->Name)=n)(Sj->bu
41、men.show();cout<<out<<endl;Sj->output();Sj->bumen.output();break;)voidDelete()删除数据(stringn;intm;输入你要查找姓名<<endl;cin>>n;cout<<请输入该员工所在的部门的代码:1-人事部部<<endl;cin>>m;if(m=l)(for(intj=0;j<N;j+)(242-维修部3销售if(Pj!=NULL&&(Pj->Name)=n)cout<<out&
42、lt;<endl;Pj->output();Pj->bumen.output();Pj=NULL;cout<<该员工已被删除!<<endl;break;)if(m=2)(for(intj=0;j<N;j+)(if(Mj!=NULL&&(Mj->Name)=n)cout<<out<<endl;Mj->output();Mj->bumen.output();Mj=NULL;cout<<”该员工已被删除!”<<endl;break;)if(m=3)for(intj=0;j
43、<N;j+)(if(Sj!=NULL&&(Sj->Name)=n)cout<<out<<endl;Sj->output();Sj->bumen.output();Sj=NULL;cout<<该员工已被删除!<<endl;break;)voidrevise()修改数据(stringn;intm;cout<<输入你要查找姓名<<endl;25cin>>n;请输入该员工所在的部门的代码:1-人事部部<<endl;cin>>m;if(m=l)(for(in
44、tj=0;j<N;j+)if(Pj!=NULL&&(Pj->Name)=n)(cout<<out<<endl;Pj->output();Pj->bumen.output();Pj->input();Pj->bumen.input();cout<<”该员工修改成功!”;break;)if(m=2)(for(intj=0;j<N;j+)if(Mj!=NULL&&(Mj->Name)=n)cout<<out<<endl;Mj->output();Mj-&g
45、t;bumen.output();Mj->input();Mj->bumen.input();cout<<“该员工修改成功!break;)if(m=3)(for(intj=0;j<N;j+)if(Sj!=NULL&&(Sj->Name)=n)(cout<<out<<endl;Sj->output();Sj->bumen.output();Sj->input();Sj->bumen.input();cout<<”该员工修改成功!;break;)262-维修部3销售)voidclear(
46、)清空数据intn,a=l;do(请输入密码<<'0'返回界面<<endl;cin>>n;if(n=a)(for(inti=0;i<N;i+)(Pi=NULL;Mi=NULL;Si=NULL;)cout<<所有员工的资料已被删除!”<<endl;break;elsecout<<输入密码失败!while(n!=0);)voidsave()保存数据(ofstreamoutput_file;ofstreamoutput_filel;ofstreamoutput_file2;ofstreamoutput_fi
47、le3;正在保存中.<<endl;output_file.openCPersonnel.txt);if(!output_file)cout<<保存 Personnel 文件失败!<<endl;for(inti=0;i<N;i+)if(Pi!=NULL)(output_file<<Pi->No<<<<Pi->Sex<<<<Pi->Name<<<<Pi->ID<<<<Pi->Birthday<<<<
48、;Pi->Address<<<<Pi->Phone<<<<Pi->bumen.Job<<<<Pi->bumen.Pay<<endl;bl+;)27)output_file2.open(Maintain.txt);if(!output_file2)cout<<保存 Maintain 文件失败!<<endl;for(i=0;i<N;i+)if(Mi!=NULL)(output_file2<<Mi->No<<<<Mi-&g
49、t;Sex<<<<Mi->Name<<<<Mi->ID<<<<Mi->Birthday<<<<Mi->Address<<<<Mi->Phone<<<<Mi->bumen.Job<<<<Mi->bumen.Pay<<endl;b2+;)output_file3.open(Sell.txt);if(!output_file3)cout<<保存 Sell 文件失败!&l
50、t;<endl;for(i=0;i<N;i+)if(Si!=NULL)output_file3<<Si->No<<<<Si->Sex<<<<Si->Name<<<<Si->ID<<<<Si->Birthday<<<<Si->Address<<<<Si->Phone<<<<Si->bumen.Job<<<<Si->bumen.Pa