c程序设计报告职工信息管理系统
职工信息管理系统
题目要求 (2)
设计目的 (2)
总体设计 (2)
详细设计 (2)
调试与测试 (12)
源程序 (14)
总结 (27)
职工信息管理程序
一.题目要求
1.问题描述:
设计一个系统来管理职工的信息。职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)
2.要求:
?系统需要提供一下功能:
–1、以菜单方式工作
–2、职工信息浏览功能
–3、职工信息查询功能
?查询方式:按学历查询和按职工号查询
–4、职工信息删除
–5、职工信息修改
–6、职工信息的输入
–职工信息存储在文本中。.
二.设计目的
根据题目要求,由于职工信息是存放在文件中,所以应提供文件的输入,输出等操作;在程序中需要浏览职工的信息,应提供显示,查找,排序等操作;另外还应提供键盘式选择菜单实现功能选择.
三.总体设计
根据上面的需求分析,可以将这个系统分为以下模块:输入模块,修改模块,删除模块,查找模块,显示模块.
1、职工信息管理系统
1、1输入信息
1、2查询信息
1、3删除信息
1、4修改信息
四.详细设计
1.主函数:
主函数一般设计得比较简单,只提供输入,处理和输出部分的函数调用,其中各功能模块用菜单方式选择.
menu();
int a;
char b;
printf("选择要进行的项目\n");
scanf("%d",&a);
exa: switch(a){
case 1:
printf("输入职工信息\n");printf("\n");
input();
break;
case 2:
printf("浏览职工信息\n");printf("\n");
display();
break;
case 3:
printf("查询职工信息\n");printf("\n");
search();
break;
case 4:
printf("修改职工信息\n");
printf("\n");
xiugai();
break;
case 5:
printf("删除职工信息\n");printf("\n");
del();
break;
/* case 6:
printf("添加职工信息\n");
printf("\n");
add();
break; */
case 6:exit(0);break;
default :break;
}
getchar();
printf("是否继续进行(y or n):\n"); scanf("%c",&b);
if(b=='y'){
menu();
printf("再次选择操作:\n"); scanf("%d",&a);goto exa;
}
else exit(0);
}
void input(){
int n;
printf("输入职工个数:\n"); scanf("%d",&m);
for(n=0;n printf("输入职工号"); scanf("%d",&peo[n].num); printf("输入姓名: "); scanf("%s",peo[n].name); getchar(); printf("输入性别:"); scanf("%c",&peo[n].sex); printf("输入工资: "); scanf("%d",&peo[n].money); printf("输入地址: "); scanf("%s",peo[n].addr); printf("输入号码: "); scanf("%d",&peo[n].phone); printf("输入年龄: "); scanf("%d",&peo[n].age); printf("输入学历: "); scanf("%s",peo[n].xueli);} save(m); } 2.}修改模块: [分析]:用户输入要修改职工的职工号,根据职工号等信息查找学生记录,并提示用户修改该记录的哪部分信息.根据用户选择修改相应的信息. [流程图]: 1、输入要修改的职工的职工号 2、查询其信息 3、使用函数删除其信息 4、对其进行信息的重新输入 [程序]: void xiugai(){ int t,i,j; printf("输入要修改职工的职工号:\n"); scanf("%d",&t); um==t) j=i; break; } um); printf("输入姓名: "); scanf("%s",peo[j].name); getchar(); printf("输入性别:"); scanf("%c",&peo[j].sex); printf("输入工资: "); scanf("%d",&peo[j].money); printf("输入地址: "); scanf("%s",peo[j].addr); printf("输入号码: "); scanf("%d",&peo[j].phone); printf("输入年龄: "); scanf("%d",&peo[j].age); printf("输入学历: "); scanf("%s",peo[j].xueli); save(::m); } } 3.删除模块: [分析]: 该模块的功能是,用户输入要删除的学生的学号,根据学生学号查找记录并删除. [流程图]: 1、找到要删除的职工的信息 2、对其使用写的功能,删除其中的值 3、完成删除后浏览剩余信息 [程序]: void del(){ FILE *fp; int m=load(); int s,n,j,i,l=0; printf("\n 原来的职工信息:\n"); display(); printf("\n"); printf("请输入要删除的职工的职工号:\n"); scanf("%d",&s); for(n=0;n<100;n++) { if(peo[n].num==s) { j=n; l=1; } } if(l==1) { fp=fopen("D:\\","w"); clear(peo,j); for(i=0;i<::m;i++) { if(i==j) continue; fprintf(fp,"%d %s %d %c %d %d %s %s\n",peo[i].num,peo[i].name,peo[i].age,peo[i].sex,peo[i ].phone,peo[i].money,peo[i].addr,peo[i].xueli); } printf("删除成功!"); fclose(fp); return; } else { printf("没有找到!\n"); } display(); } 4.查询模块 [需求分析]: 该模块的功能是根据输入的职工号查找对应的记录,找到以后,显示相应的职工信息. [流程图]: 1、根据对应的提示查找信息 2、运用循环比较的方法进行查找 3、分别是按照职工号和学历 程序: void search(){ int d; printf("你选择的查询方法:1.按职工号2.按学历"); scanf("%d",&d); switch(d){ case 1:search_num();break; case 2:search_xueli();break; default :break; } } void search_num() { int num; int i,h=1; int m=load(); printf("请输入要查找的职工号:\n"); scanf("%d",&num); for(i=0;i if(num==peo[i].num) { printf(" 职工号姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n"); printf("\n %d\t%s\t%c\t%d\t%s\t%d\t%s\t%d\n",peo[i].num,peo[i].name,peo[i].sex,peo[i].age, peo[i].xueli,peo[i].money,peo[i].addr,peo[i].phone); } else ;} void search_xueli(){ char xueli[30]; int i,h=1; int m=load(); printf("请输入要查找的学历:\n"); scanf("%s",xueli); for(i=0;i if(strcmp(peo[i].xueli,xueli)==0) { printf(" 职工号姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n"); printf("\n %d\t%s\t%c\t%d\t%s\t%d\t%s\t%d\n",peo[i].num,peo[i].name,peo[i].sex,peo[i].age, peo[i].xueli,peo[i].money,peo[i].addr,peo[i].phone); } else ; } void xiugai(){ int t,i,j; printf("输入要修改职工的职工号:\n"); scanf("%d",&t); um==t) j=i; break; } um); printf("输入姓名: "); scanf("%s",peo[j].name); getchar(); printf("输入性别:"); scanf("%c",&peo[j].sex); printf("输入工资: "); scanf("%d",&peo[j].money); printf("输入地址: "); scanf("%s",peo[j].addr); printf("输入号码: "); scanf("%d",&peo[j].phone); printf("输入年龄: "); scanf("%d",&peo[j].age); printf("输入学历: "); scanf("%s",peo[j].xueli); save(::m); } 5.输出模块: [需求分析]: 该模块的功能是显示所有职工记录信息. [程序]: 我void display(){ int t; um,peo[t].name,peo[t].sex,peo[t].age,peo[t].xueli,peo[t].money,peo[t].addr,peo[t].p hone); } 四调试与测试 在这次课程设计中,程序编写过程中遇到了很多的问题,各种函数的运用也让人头疼,在上机编译运行过程中出现了很多的错误,例如:各种数据类型的定义,函数的调用等等。但最终还是在老师同学的帮助下进行了各种代码的编写与修改,最终程序成功的运行。 下面是各个模块的界面图 (1)主菜单函数: (2): 输入模块: (3): 显示模块: (4): 删除模块: (5): 查找模块: (6): 修改模块: 六.程序源 #include<> #include<> #include <> void input(); void clear(struct people *peo,int); void save(int); void display(); void del(); void menu(); void search_num(); void search(); void search_xueli(); void xiugai(); int m; struct people{ int num; char name[10]; char sex; int age; int money; int phone; char addr[30]; char xueli[10]; }peo[100]; void menu() { printf("职工信息管理系统\n"); printf("1.输入职工信息\n"); printf("2. 浏览职工信息\n"); printf("3.查询职工信息\n"); printf("4. 修改职工信息\n"); printf("5.删除职工信息\n"); printf("6.退出\n"); } void main(){ menu(); int a; char b; printf("选择要进行的项目\n"); scanf("%d",&a); exa: switch(a){ case 1: printf("输入职工信息\n");printf("\n"); input(); break; case 2: printf("浏览职工信息\n");printf("\n"); display(); break; case 3: printf("查询职工信息\n");printf("\n"); search(); break; case 4: printf("修改职工信息\n"); printf("\n"); xiugai(); break; case 5: printf("删除职工信息\n");printf("\n"); del(); break; /* case 6: printf("添加职工信息\n"); printf("\n"); add(); break; */ case 6:exit(0);break; default :break; } getchar(); printf("是否继续进行(y or n):\n"); scanf("%c",&b); if(b=='y'){ menu(); printf("再次选择操作:\n"); scanf("%d",&a);goto exa; } else exit(0); } void input(){ int n; printf("输入职工个数:\n"); scanf("%d",&m); for(n=0;n printf("输入职工号"); scanf("%d",&peo[n].num); printf("输入姓名: "); scanf("%s",peo[n].name); getchar(); printf("输入性别:"); scanf("%c",&peo[n].sex); printf("输入工资: "); scanf("%d",&peo[n].money); printf("输入地址: "); scanf("%s",peo[n].addr); printf("输入号码: "); scanf("%d",&peo[n].phone); printf("输入年龄: "); scanf("%d",&peo[n].age); printf("输入学历: "); scanf("%s",peo[n].xueli);} save(m); } void save(int m) um,peo[i].name,peo[i].age,peo[i].sex,peo[i].phone,peo[i].money,peo[i].addr,peo[i].xueli);} fclose(fp);um,peo[i].name,&peo[i].age,&peo[i].sex,&peo[i].phone,&peo[i].money,peo[i].addr,peo [i].xueli)!=EOF) {i++;} fclose(fp); return(i-1); } void display(){ int t; um,peo[t].name,peo[t].sex,peo[t].age,peo[t].xueli,peo[t].money,peo[t].addr,peo[t].phone); } void del(){ FILE *fp; int m=load(); int s,n,j,i,l=0; printf("\n 原来的职工信息:\n"); display(); printf("\n"); printf("请输入要删除的职工的职工号:\n"); scanf("%d",&s); for(n=0;n<100;n++) { if(peo[n].num==s) { j=n; l=1; } } if(l==1) { fp=fopen("D:\\","w"); clear(peo,j); for(i=0;i<::m;i++) { if(i==j) continue; fprintf(fp,"%d %s %d %c %d %d %s %s\n",peo[i].num,peo[i].name,peo[i].age,peo[i].sex,peo[i].ph one,peo[i].money,peo[i].addr,peo[i].xueli); } printf("删除成功!"); fclose(fp); return; } else { printf("没有找到!\n"); } display(); } void search(){ int d;