职工信息管理系统.docx
- 文档编号:28179012
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:29
- 大小:109.37KB
职工信息管理系统.docx
《职工信息管理系统.docx》由会员分享,可在线阅读,更多相关《职工信息管理系统.docx(29页珍藏版)》请在冰豆网上搜索。
职工信息管理系统
C语言课程设计
院系:
姓名:
学号:
班号:
指导教师:
日期:
摘要:
本论文设计了程序:
《C语言课程设计指导书》第11题职工信息管理系统。
这个管理系统能对职工信息(包括职工号、姓名、性别、年龄、学历、工资、电话等)进行有效地信息录入、浏览、查询、删除等操作,会给用户带来很大的便利。
一职工信息管理系统
1.1题目要求
职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
试设计一职工信息管理系统,使之能提供以下功能:
(1)系统以菜单方式工作
(2)职工信息录入功能(职工信息用文件保存)
(3)职工信息浏览功能
(4)职工信息查询功能,查询方式包括按职工号查询按学历查询等
(5)职工信息删除
[提示]
建立职工信息结构体,结构体成员包括职工号、姓名、性别、年龄、学历、工资、电话。
1.2需求分析
根据题目要求,要求对职工信息进行输入、输出等操作;在程序中需要浏览职工的信息,应提供显示、查找、浏览、插入、修改等操作;另外还应提供键盘式选择菜单实现功能选择。
1.3总体设计
根据需求分析,可以对这个系统的设计分为以下几个模块:
图1.3系统功能模块图
1.4详细设计
1.4.1主函数
主函数一般设计得比较简洁,只提供输入,处理和输出部分的函数调用。
其中各功能模块用菜单方式选择。
[流程图]:
显示各功能选项
图1.4.1主函数流程图
[程序]:
/*****************主函数**********************/
/*****************menu函数********************/
voidmenu()
{
printf("职工信息管理----076091朱鹏健\n");
printf("1.输入职工信息");printf("2.浏览职工信息\n");printf("3.查询职工信息");
printf("4.删除职工信息\n");printf("5.退出\n");printf("\n");
}
voidmain()
{
menu();
intn,flag;
chara;
do
{
printf("请选择需要操作的步骤(1--5):
\n");
scanf("%d",&n);
if(n>=1&&n<=5)
{
flag=1;break;
}
else
{
flag=0;printf("您输入有误,请重新选择!
");
}
}
while(flag==0);
while(flag==1)
{
switch(n)
{
case1:
printf("输入职工信息\n");printf("\n");input();break;
case2:
printf("浏览职工信息\n");printf("\n");display();break;
case3:
printf("按职工号查询职工信息\n");printf("\n");search();break;
case4:
printf("删除职工信息\n");printf("\n");del();break;
case5:
exit(0);break;
default:
break;
}
getchar();
printf("\n");
printf("是否继续进行(yorn):
\n");
scanf("%c",&a);
if(a=='y')
{
flag=1;
system("cls");
menu();
printf("请再次选择你需要操作的步骤(1--4):
\n");
scanf("%d",&n);
printf("\n");
}
else
exit(0);
}
}
}
注:
menu函数能提供菜单方式选择功能,可以根据用户需要进入到所想要的操作模块中,此外把menu函数独立出来,可以方便随时对它进行调用,容易返回到系统界面。
用结构体来存放职工信息:
/********************结构体*******************/
structemployee
{
intnum;
charname[10];
charsex;
intage;
charxueli[30];
intwage;
charaddr[30];
longinttel;
}em[100];
/*em[N]中每个数组元素对应一个职工*/
其中可以根据宏定义#defineN随时对N的值进行调整,扩大信息的储存量。
1.4.2各功能模块设计
(1)输入模块
[需求分析]对信息进行输入。
[流程图]:
图1输入模块流程图
[程序]:
/********************输入模块*******************/
voidinput()
{
inti,m;
printf("请输入需要创建信息的职工人数(1--100):
\n");
scanf("%d",&m);
for(i=0;i { printf("职工号: ");srand((int)time(0));em[i].num=rand()%10000+20000000; if(em[i].num! =em[i-1].num)printf("%8d",em[i].num);printf("\n"); printf("请输入姓名: ");scanf("%s",em[i].name);getchar(); printf("请输入性别(f--女m--男): ");scanf("%c",&em[i].sex); printf("请输入年龄: ");scanf("%d",&em[i].age); printf("请输入学历: ");scanf("%s",em[i].xueli); printf("请输入工资: ");scanf("%d",&em[i].wage); printf("请输入住址: ");scanf("%s",em[i].addr); printf("请输入电话: ");scanf("%d",&em[i].tel); printf("\n"); } printf("\n创建完毕! \n"); save(m); } (2)浏览模块 [需求分析]该模块的功能是显示所有职工记录信息。 [流程图] 显示职工记录(10个一屏) : 按任意键显示下一屏 按任意键返回主菜单 图2浏览模块流程图 [程序]: /****************浏览(全部)模块***************/ voiddisplay() { inti; intm=load(); printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n"); for(i=0;i printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name, em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel); } (3)查找模块 [流程图]: : 图3查找模块流程图 [程序]: /***************查找模块***************/ voidsearch() { intt,flag; do { printf("\n按职工号查询请按1;按学历查询请按2;进入主函数按3\n"); scanf("%d",&t); if(t>=1&&t<=4) { flag=1; break; } else { flag=0; printf("您输入有误,请重新选择! "); } } } while(flag==0); while(flag==1) { switch(t) { case1: printf("按职工号查询\n");search_num();break; case2: printf("按学历查询\n");search_xueli();break; case3: main();break; default: break; } } } /***************按职工号查找模块***************/ voidsearch_num() { intnum; inti,t; intm=load(); printf("请输入要查找的职工号(20001111---20009999): \n"); scanf("%d",&num); for(i=0;i if(num==em[i].num) { printf("\n已找到此人,其记录为: \n"); printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n"); printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name, em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel); break; } if(i==m) printf("\n对不起,查无此人\n"); printf("\n"); printf("返回查询函数请按1,继续查询职工号请按2\n"); scanf("%d",&t); switch(t) { case1: search();break; case2: break; default: break; } } /***************按学历查找模块***************/ voidsearch_xueli() { charxueli[30]; inti,t; intm=load(); printf("请输入要查找的学历: \n"); scanf("%s",xueli); for(i=0;i if(strcmp(em[i].xueli,xueli)==0) { printf("\n已找到,其记录为: \n"); printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n"); printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel); } if(i==m) printf("\n对不起,查无此人\n"); printf("\n"); printf("返回查询函数请按1,继续查询学历请按2\n"); scanf("%d",&t); switch(t) { case1: search();break; case2: break; default: break; } } (4)删除模块 [需求分析]该模块的功能是删除职工记录信息。 /*************************删除模块*********************/ voiddel() { intm=load(); inti,j,n,t,flag; charname[20]; printf("\n原来的职工信息: \n"); display(); printf("\n"); printf("请输入要删除的职工的姓名: \n"); scanf("%s",name); for(flag=1,i=0;flag&&i { if(strcmp(em[i].name,name)==0) { printf("\n已找到此人,原始记录为: \n"); printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n"); printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name,em[i].sex, em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel); printf("\n确实要删除此人信息请按1,不删除请按0\n"); scanf("%d",&n); if(n==1) { for(j=i;j { strcpy(em[j].name,em[j+1].name);em[j].num=em[j+1].num;em[j].sex=em[j+1].sex; em[j].age=em[j+1].age;strcpy(em[j].xueli,em[j+1].xueli); em[j].wage=em[j+1].wage;strcpy(em[j].addr,em[j+1].addr);em[j].tel=em[j+1].tel; } flag=0; } } } if(! flag)m=m-1; else printf("\n对不起,查无此人! \n"); printf("\n浏览删除后的所有职工信息: \n"); save(m); display(); printf("\n继续删除请按1,不再删除请按0\n"); scanf("%d",&t); switch(t) { case1: del();break; case0: break; default: break; } } 1.4.3公共函数 (1)保存函数save(intn) [说明]: 形参n控制保存的个数。 [程序]: voidsave(intm) { inti; FILE*fp; if((fp=fopen("employee_list","wb"))==NULL) { printf("cannotopenfile\n"); exit(0); } for(i=0;i if(fwrite(&em[i],sizeof(structemployee),1,fp)! =1) printf("filewriteerror\n"); fclose(fp); } (2)加载函数load() [说明]: 该函数可以用来加载所有记录,并且可以返回所有记录的个数。 [程序]: intload() { FILE*fp; inti=0; if((fp=fopen("employee_list","rb"))==NULL) { printf("cannotopenfile\n"); exit(0); } else { do { fread(&em[i],sizeof(structemployee),1,fp); i++; } while(feof(fp)==0); } fclose(fp); return(i-1); } 1.5上机操作 1.5.1数据源; 1.5.2编译、连接和运行; 1.5.3结果; 总结: 通过此次C语言课程设计实习,我收获颇多。 以前只是为了考试去学习,而这次实习是将所学知识运用到实际中。 此次实习中,我独立完成了这道题: 建立职工信息管理系统。 本题看起来很烦琐,但理清思路后,就很简单了,指导书中有关文件的题目差不多都大同小异,只要一题会做,其他题目也就迎刃而解,只要将各功能模块融会贯通并加以适当调整即可,但前提还是必须对指导书里的例题熟练掌握。 2010.07.16 附: 源程序代码 #include #include #include #include #defineN100 structemployee { intnum; charname[10]; charsex; intage; charxueli[30]; intwage; charaddr[30]; longinttel; }em[100]; voidmenu(); voidinput(); voidsave(int); voiddisplay(); voiddel(); voidsearch(); voidsearch_num(); voidsearch_xueli(); voidmenu() { printf("职工信息管理----076091朱鹏健\n"); printf("1.输入职工信息");printf("2.浏览职工信息\n");printf("3.查询职工信息"); printf("4.删除职工信息\n");printf("5.退出\n");printf("\n"); } voidmain() { menu(); intn,flag; chara; do { printf("请选择需要操作的步骤(1--5): \n"); scanf("%d",&n); if(n>=1&&n<=7) { flag=1;break; } else { flag=0;printf("您输入有误,请重新选择! "); } } while(flag==0); while(flag==1) { switch(n) { case1: printf("输入职工信息\n");printf("\n");input();break; case2: printf("浏览职工信息\n");printf("\n");display();break; case3: printf("按职工号查询职工信息\n");printf("\n");search();break; case4: printf("删除职工信息\n");printf("\n");del();break; case5: exit(0);break; default: break; } getchar(); printf("\n"); printf("是否继续进行(yorn): \n"); scanf("%c",&a); if(a=='y') { flag=1; system("cls"); menu(); printf("请再次选择你需要操作的步骤(1--4): \n"); scanf("%d",&n); printf("\n"); } else exit(0); } } voidinput() { inti,m; printf("请输入需要创建信息的职工人数(1--100): \n"); scanf("%d",&m); for(i=0;i { printf("职工号: ");srand((int)time(0));em[i].num=rand()%10000+20000000; if(em[i].num! =em[i-1].num)printf("%8d",em[i].num);printf("\n"); printf("请输入姓名: ");scanf("%s",em[i].name);getchar(); printf("请输入性别(f--女m--男): ");scanf("%c",&em[i].sex); printf("请输入年龄: ");scanf("%d",&em[i].age); printf("请输入学历: ");scanf("%s",em[i].xueli); printf("请输入工资: ");scanf("%d",&em[i].wage); printf("请输入住址: ");scanf("%s",em[i].addr); printf("请输入电话: ");scanf("%d",&em[i].tel); printf("\n"); } printf("\n创建完毕! \n"); save(m); } voidsave(intm) { inti; FILE*fp; if((fp=fopen("employee_list","wb"))==NULL) { printf("cannotopenfile\n"); exit(0); } for(i=0;i if(fwrite(&em[i],sizeof(structemployee),1,fp)! =1) printf("filewriteerror\n"); fclose(fp); } { printf("cannotopenfile\n"); exit(0); } else intload() { FILE*fp; inti=0; if((fp=fopen("employee_list","rb"))==NULL) { voiddisplay() { inti; intm=load(); printf("\n职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n"); for(i=0;i printf("\n%d\t%s\t%c\t%d\t%s\t%d\t%s\t%ld\n",em[i].num,em[i].name, em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel); } voiddel() { intm=load(); inti,j,n,t,flag; charname[20]; printf("\n原来的职工信息: \n"); display(); printf("\n"); printf("请输入要删除的职工的姓名: \n"); scanf("%s",name); for(flag=1,i=0;flag&&i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 职工 信息管理 系统