职工档案管理系统c++设计.docx
- 文档编号:7535260
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:20
- 大小:58.79KB
职工档案管理系统c++设计.docx
《职工档案管理系统c++设计.docx》由会员分享,可在线阅读,更多相关《职工档案管理系统c++设计.docx(20页珍藏版)》请在冰豆网上搜索。
职工档案管理系统c++设计
中南大学
《高级程序设计实践(C++)》
课程设计报告
设计题目职工档案管理系统
指导老师
设计者
专业班级
设计日期
一、本次课题的基本内容和要求
二、软件设计整体规划及方案
三、程序功能简介
四、主体内容:
1、设计分析与程序结构
2、相关模块源程序功能及程序说明
3、操作方法(流程)
4、试验结果
5、设计体会
6、参考文献
一、本次课题的基本内容和要求
1、基本要求:
为方便管理某单位职工档案信息,编写一个职工档案管理系统软件。
系统记录必须包括职工的ID号、姓名以及性别、出生年月、职称、工资、所在单位、在岗情况等。
2、基本管理功能:
(1)添加:
增加一名职工的档案信息到管理系统中。
(2)查询:
可以根据职工姓名或ID号查找某人的相关信息,若找到则显示其信息。
(3)修改:
在管理系统中修改一名职工的记录。
(4)保存:
将所有职工档案信息保存在一个文件中(数据库文件或普通的文本文件)。
(5)读取:
从文件中读取已保存了数据。
(6)删除:
从管理系统中删除一条记录。
(7)恢复:
能恢复被删除的记录。
(8)统计:
(A)计算平均工资及总工资,(B)统计男/女职工各占总职工的人数的百分比、统计职工平均年龄和单位在岗职工人数占总职工人数的百分比、统计副高以上职工人数占总职工人数的百分比。
(C)以表格形式打印全部职工档案信息表。
二、软件设计整体规划及方案
1、自顶向下、逐步细化、逐步求精
所谓“自顶向下,逐步细化、逐步求精”就是在对于给定问题进行透彻的了解和详细的分析的基础上,把问题分解成若干个按顺序执行的逻辑部分,称为“模块”。
每个子任务如果仍很复杂,还可以再分解为若干个子任务。
如此逐层分解,对于每个模块的设计都采用这种“自顶向下、逐步细化”的方法,将它们分解成为基本结构为止,就如同写文章先拟出题目和中心内容,再确定分为几大部分,每一大部分又分哪几节,每一节分为几段,每一段包括哪几个意思,这就是“自顶向下,逐步细化”的方法。
2、菜单技术
当一个程序的规模比较庞大,层次和模块比较多时,不要每次都将所有模块按顺序执行一遍,最好在每一层,至少在最高几层都设一个“菜单”。
为方便用户操作,“菜单”技术已广泛使用在计算机的系统软件中,具体做法是:
程序首先把各功能说明及相应代号以菜单形式显示在屏幕上,然后由用户在键盘上输入所选的功能代号,程序自动转去调用相应的功能模块进行处理。
3、时间安排
1、阅读设计题目、任务内容,规划设计进度,并进行软件的各相关功能模块的规划设计(1天)。
2、在C++环境下,用结构化程序设计思想进行C++语言程序设计、功能模块调试(7-9天)。
3、进行课程设计报告编写与整理(2天)。
4、课程设计结束时,进行设计成果演示;对相关电子文档进行整理上交(包括:
程序文件、帮助说明文档);交课程设计报告一份。
3、程序功能简介
1、数据文件管理功能:
创建新文件、打开老文件。
2、输入/添加/插入记录:
能够完成对任意一条记录输入、添加或插入数据表中,并保存到数据文件中。
3、显示、查询记录:
能够打开已存在的数据表文件,根据用户要求按所给记录关键字显示、查询一个或多个相关联记录的各项信息。
4、修改记录:
能够打开已存在的数据表文件,并对确定的任意记录进行修改,在修改过程中,应显示记录信息,给出确认提示,并对更新的记录信息进行文件保存。
5、删除记录:
能够打开已存在的数据表文件,可以删除数据表中的任一记录,要求具备逻辑删除(具有恢复功能),并对新的数据表信息进行文件保存。
6、统计功能:
能够打开已存在的数据表文件,对数据表中与某关键字匹配的相关记录进行数据统计(包括:
总数、平均值、分段信息)。
7、恢复记录:
恢复已删除的数据并进行保存。
四、主体内容:
1、设计分析与程序结构
2、相关模块源程序功能及程序说明
#include
#include
#include
#include
#include
usingnamespacestd;
classWorker
{
public:
Worker()/*构造函数初始化*/
{num[0]='\0';name[0]='\0';floatsalary=0;floatage=0;sex[0]='\0';address[0]='\0';zhicheng[0]='\0';}
charnum[20];
charname[20];
floatsalary;
floatage;
charsex[20];
charaddress[20];
charzhicheng[20];
};
classfunction
{
private:
Workerwor[100];/*Worker类中的对象数组*/
public:
voidadd(charnum[20],charname[20],floatsalary,floatage,charsex[5],charaddress[20],charzhicheng[20]);/*添加职工信息*/
voiddel(charname[20]);/*删除*/
voidsearch_num(charnum[10]);/*按职工号查找*/
voidsearch_name(charname[20]);/*按姓名查找*/
voidmodify(charname[20]);/*修改*/
voidsave();/*保存*/
voidread();/*读取*/
voidrecover();/*恢复*/
voidstatistics();/*统计*/
voiddisplay();/*显示*/
};
floatm=0;
voidfunction:
:
add(charnum[20],charname[20],floatsalary,floatage,charsex[5],charaddress[20],charzhicheng[20])/*添加职工信息*/
{
intx=1;
for(inti=0;i<100;i++)
{
if(!
strcmp(wor[i].name,"\0"))//第i个对象姓名为空字符
{
strcpy(wor[i].num,num);
strcpy(wor[i].name,name);
wor[i].salary=salary;
wor[i].age=age;
strcpy(wor[i].sex,sex);
strcpy(wor[i].address,address);
strcpy(wor[i].zhicheng,zhicheng);
x=0;
}
if(x==0)
{
cout<<"添加成功!
!
"< m++; break; } } }; voidfunction: : display()/*显示*/ { cout<<"所有信息如下: (单位: 元)"< for(inti=0;i<100;i++) { if(! strcmp(wor[i].name,"\0")); else { cout<<"编号: "< cout<<"姓名: "< cout<<"工资: "< cout<<"年龄: "< cout<<"性别: "< cout<<"单位: "< cout<<"职称: "< } } } voidfunction: : search_num(charnum[20])/*按职工号查找*/ { intx,y=1,z=1; for(inti=0;i<100;i++) { if(! strcmp(wor[i].num,num)) { x=i; z=0; y=1; cout<<"编号: "< cout<<"姓名: "< cout<<"工资: "< cout<<"年龄: "< cout<<"性别: "< cout<<"单位: "< cout<<"职称: "< } elsey=0; if(z==0) break; } if(y==0) cout<<"输入的编号查找不到! ! ! "< } voidfunction: : search_name(charname[20])/*按姓名查找*/ { intx,y=1,z=1; for(inti=0;i<100;i++) { if(! strcmp(wor[i].name,name)) { x=i; z=0; y=1; cout<<"编号: "< cout<<"姓名: "< cout<<"工资: "< cout<<"年龄: "< cout<<"性别: "< cout<<"单位: "< cout<<"职称: "< } elsey=0; if(z==0) break; } if(y==0) cout<<"输入的姓名查找不到! ! ! "< } voidfunction: : modify(charname[20])/*修改*/ { intx; for(inti=0;i<100;i++) { if(! strcmp(wor[i].name,name)) x=i; } chart; cout<<" (1)修改编号: "< cout<<" (2)修改姓名: "< cout<<"(3)修改工资: "< cout<<"(4)修改年龄: "< cout<<"(5)修改性别: "< cout<<"(6)修改单位: "< cout<<"(7)修改职称: "< cout<<"请选择: "; cin>>t; switch(t) { case'1': cout<<"输入要修改成的编号: "; charnum1[20]; cin>>num1; strcpy(wor[x].num,num1); cout<<"修改成功! "< break; case'2': cout<<"输入要修改成的姓名: "; charname1[20]; cin>>name1; strcpy(wor[x].name,name1); cout<<"修改成功! "< break; case'3': cout<<"输入要修改成的工资: "; floatsalary1; cin>>salary1; wor[x].salary=salary1; cout<<"修改成功! "< break; case'4': cout<<"输入要修改成的年龄: "; floatage1; cin>>age1; wor[x].age=age1; cout<<"修改成功! "< break; case'5': cout<<"输入要修改成的性别: "; charsex1[20]; cin>>sex1; strcpy(wor[x].sex,sex1); case'6': cout<<"输入要修改成的单位: "; charaddress1[20]; cin>>address1; strcpy(wor[x].address,address1); cout<<"修改成功! "< break; case'7': cout<<"输入要修改成的职称: "; charzhicheng1[20]; cin>>zhicheng1; strcpy(wor[x].zhicheng,zhicheng1); cout<<"修改成功! "< break; } } voidfunction: : save()/*保存*/ { charname[20]; cout<<"输入要保存的文件名"; cin>>name; strcat(name,".txt"); ofstreamsave(name); for(inti=0;i<100;i++) { if(strcmp(wor[i].name,"\0")) { save<<"编号: "< save<<"姓名: "< save<<"工资: "< save<<"年龄: "< save<<"性别;"< save<<"单位: "< save<<"职称: "< } } save.close(); } voidfunction: : read()/*读取*/ { charname[20]; cout<<"输入要打开的文件名"; cin>>name; strcat(name,".txt"); ifstreamopen(name); charch; while(! open.eof()) { open.get(ch); cout< } open.close(); } voidfunction: : del(charname[20])/*删除*/ { intx=1,y=1; for(inti=0;i<100;i++) { if(! strcmp(wor[i].name,name)) { ofstreamrecover("recover.txt",ios: : app); recover< recover.close(); strcpy(wor[i].num,"\0"); strcpy(wor[i].name,"\0"); wor[i].salary=0; wor[i].age=0; strcpy(wor[i].sex,"\0"); strcpy(wor[i].address,"\0"); strcpy(wor[i].zhicheng,"\0"); x=0; y=0; } if(x==0) { cout<<"删除成功"< m--; break; } } if(y==1) cout<<"删除失败"; } voidfunction: : recover()/*恢复*/ { ifstreamrecover("recover.txt"); for(inti=0;i<100;i++) if(! strcmp(wor[i].name,"\0")) recover>>wor[i].num>>wor[i].name>>wor[i].salary>>wor[i].age>>wor[i].sex>>wor[i].address>>wor[i].zhicheng; recover.close(); cout<<"您所删除的记录已恢复"; m++; ofstreamclean("recover.txt"); clean<<'\0'; clean.close(); } voidfunction: : statistics()/*统计*/ { floatall=0,allage=0,fnum=0; floatw1,w2,w3; cout<<"统计信息如下: (单位: 元)"< for(inti=0;i<100;i++) { if(! strcmp(wor[i].name,"\0")); else { cout<<"编号: "< cout<<"姓名: "< cout<<"工资: "< cout<<"年龄: "< cout<<"性别: "< cout<<"单位: "< cout<<"职称: "< all=all+wor[i].salary; w1=all/m; allage=allage+wor[i].age; w2=allage/m; if(! strcmp(wor[i].sex,"f")) { fnum=fnum+1; w3=fnum/m; } } } cout< "< cout< : left); cout<<"_______________________________________________________________"< cout<<"│"< cout<<"_______________________________________________________________"< for(i=0;i<100;i++) { if(! strcmp(wor[i].name,"\0")); else { cout<<"│"< <<"│"< } } cout<<"________________________________________________________________"< cout<<"_________________________________________________________________"< cout<<"│"< cout<<"___________________________________________________________________"< cout<<"│"< cout<<"________________________________________________________________"< }; intmain() { cout< cout< 甘一帆***"< cout< 电气工程1303班***"< cout< cout< getchar(); system("cls"); functionc1; intselect; intk=1,e=1,j=1;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 职工 档案管理系统 c+ 设计