《C语言课程设计职工信息管理系统.doc》由会员分享,可在线阅读,更多相关《C语言课程设计职工信息管理系统.doc(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、如有侵权,请联系网站删除,仅供学习与交流C语言课程设计 职工信息管理系统【精品文档】第 16 页中国地质大学课 程 设 计 报 告 书所属课程名称 C程序设计 题 目 职工信息管理系统 院 (系) 班 级 学号 学生姓名 指导教师 辅导教师 中国地质大学2010年9月6日课 程 设 计( 论 文 )任 务 书工程学院 专 业 052081 班一、课程设计(论文)题目 职工信息管理系统 二、课程设计(论文)工作:自 2010年 08月 28 日起至 2010年 09月 08 日止。三、课程设计(论文)的内容要求:1、设计内容: 制作职工信息管理系统,职工信息包括职工号,姓名,性别,年龄,学历,工
2、资,住址,电话等(职工号不重复),并实现数据录入、数据删除和数据浏览以及数据查询等一些功能。 2、课程设计的要求: A.系统以菜单方式工作 B.职工信息录入功能(职工信息用文件保存)-输入 C.职工信息浏览功能 -输出 D.查询和排序功能:(至少一种查询方式) -算法 E.按工资查询 F.按学历查询等 G.职工信息删除,修改功能(任选项) 2010 年 9月 6 日一、需求分析1.能够对职工的基本情况进行输入、修改、增加以及删除和存盘。2.能够对职工信息的浏览。3.能够实现对职工的查询。4.能够对职工的基本工资情况进行设定。5.能够将职工信息和基本工资信息以文档形式保存6.程序能够以菜单形式出
3、现二、概要分析职工信息管理系统设计职工信息包括职工号,姓名,性别,年龄,学历,工资,住址,电话等(职工号不重复),试设计一职工信息管理系统,使之能提供以下功能: 系统以菜单方式工作 职工信息录入功能(职工信息用文件保存)-输入 职工信息浏览功能 -输出 查询和排序功能:(至少一种查询方式) -算法 按工资查询 按学历查询等 职工信息删除,修改功能(任选项)下面是功能框架图:三、详细设计以及调试分析A.详细设计1,创建了一个结构体employee,它包含num(工号),name(姓名),sex(性别),age(年龄),xueli(学历),wage(工资),addr(住址),tel(电话)8个基类
4、,即为员工的基本信息。2,创建了主函数main(),用它调用子函数menu(),add(),del(),display(),Input(),load(),modify(),save(),search(),search num(),search xueli()。通过主函数对子函数的调用实现程序的各项功能。 B.调试分析 void main() menu(); int n,flag; char a; -Configuration: 1 - Win32 Debug-Compiling.1.cg:1.c(55) : error C2143: syntax error : missing ; befor
5、e typeg:1.c(56) : error C2143: syntax error : missing ; before typeg:1.c(61) : error C2065: n : undeclared identifierg:1.c(64) : error C2065: flag : undeclared identifierg:1.c(90) : error C2065: a : undeclared identifierError executing cl.exe.1.obj - 5 error(s), 0 warning(s)开始由于在主函数的调用过程中把子函数的调用放在了变
6、量的定义之前,导致程序无法运行,后来改正错误,程序可以正常运行。另外在程序中还出现各种小错误,这里不一一列举。通过调试我发现调试是一个漫长而枯燥的过程 ,很锻炼人的耐心。 四、程序使用指南1打开程序出现菜单选项2,选择录入职工信息,按提示录入3.通过选项依次实现对职工信息的浏览,查询,删除,增加和修改。五.源代码#include #include #include #include #define N 100struct employee int num;/工号 char name10;/姓名 char sex; /性别 int age;/年龄 char xueli30;/学历 int wag
7、e;/工资 char addr30;/住址 long int tel;/电话em100; void menu();void input();void save(int);void display();void del();void add();void search();void search_num();void search_xueli();void search_tel();void modify(); void menu() printf( *欢迎使用查询系统*n); printf(n); printf(n);printf( *职工信息管理*n);printf( 1.录入职工信息);p
8、rintf( 2.浏览职工信息n);printf( 3.查询职工信息);printf( 4.删除职工信息n); printf( 5.增加职工信息);printf( 6.修改职工信息n);printf( 7.退出n);printf( *谢谢使用*n); printf(n); printf(n);void main() int n,flag; char a; menu();do printf(请选择你需要操作的步骤(1-7):n); scanf(%d,&n); if(n=1&n=7) flag=1; break; else flag=0; printf(您输入有误,请重新选择!); while(f
9、lag=0); while(flag=1) switch(n) 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);del();break; case 5:printf(添加职工信息n);printf(n);add();break; case 6:printf(修改职工信息n)
10、;printf(n);modify();break; case 7:exit(0);break; default :break; getchar(); printf(n); printf(是否继续进行(y or n):n); scanf(%c,&a); if(a=y) flag=1; system(cls); menu(); printf(请再次选择你需要操作的步骤(1-7):n); scanf(%d,&n); printf(n); else exit(0);void input() int i,m; printf(请输入需要创建信息的职工人数(1-100):n); scanf(%d,&m);
11、 for (i=0;im;i+) printf(职工号: ); srand(int)time(0); emi.num=rand()%10000+20000000; if(emi.num!=emi-1.num) printf(%8d ,emi.num); printf(n); printf(请输入姓名: ); scanf(%s,emi.name); getchar(); printf(请输入性别(f-女 m-男): ); scanf(%c,&emi.sex); printf(请输入年龄: ); scanf(%d,&emi.age); printf(请输入学历: ); scanf(%s,emi.x
12、ueli); printf(请输入工资: ); scanf(%d,&emi.wage); printf(请输入住址: ); scanf(%s,emi.addr); printf(请输入电话: ); scanf(%d,&emi.tel); printf(n); printf(n创建完毕!n); save(m);void save(int m) int i;FILE*fp;if (fp=fopen(employee_list,wb)=NULL) printf (cannot open filen); exit(0);for (i=0;im;i+) if (fwrite(&emi,sizeof(st
13、ruct employee),1,fp)!=1) printf(file write errorn); fclose(fp);int load() FILE*fp;int i=0; if(fp=fopen(employee_list,rb)=NULL) printf (cannot open filen); exit(0);else do fread(&emi,sizeof(struct employee),1,fp); i+; while(feof(fp)=0);fclose(fp);return(i-1);void display() int i;int m=load();printf(n
14、 职工号t姓名t性别t年龄t学历t工资t住址t电话 n);for(i=0;im;i+) printf(n %dt%st%ct%dt%st%dt%st%ldn,emi.num,emi.name,emi.sex,emi.age,emi.xueli,emi.wage,emi.addr,emi.tel); void del() int m=load();int i,j,n,t,flag;char name20;printf(n 原来的职工信息:n); display(); printf(n);printf(请输入要删除的职工的姓名:n);scanf(%s,name);for(flag=1,i=0;fl
15、ag&im;i+) if(strcmp(emi.name,name)=0) printf(n已找到此人,原始记录为:n); printf(n职工号t姓名t性别t年龄t学历t工资t住址t电话 n); printf(n%dt%st%ct%dt%st%dt%st%ldn,emi.num,emi.name,emi.sex,emi.age,emi.xueli,emi.wage,emi.addr,emi.tel); printf(n确实要删除此人信息请按1,不删除请按0n); scanf(%d,&n); if(n=1) for(j=i;jm-1;j+) strcpy(emj.name,emj+1.name
16、); emj.num=emj+1.num; emj.sex=emj+1.sex; emj.age=emj+1.age; strcpy(emj.xueli,emj+1.xueli); emj.wage=emj+1.wage; strcpy(emj.addr,emj+1.addr); emj.tel=emj+1.tel; flag=0;if(!flag) m=m-1;else printf(n对不起,查无此人!n); printf(n 浏览删除后的所有职工信息:n); save(m); display(); printf(n继续删除请按1,不再删除请按0n);scanf(%d,&t);switch
17、(t) case 1:del();break; case 0:break; default :break;void add()FILE*fp;int n; int count=0; int i; int m=load(); printf(n 原来的职工信息:n); display(); printf(n); fp=fopen(emploee_list,a); printf(请输入想增加的职工数:n);scanf(%d,&n); for (i=m;i=1&t=4) flag=1; break; else flag=0; printf(您输入有误,请重新选择!); while(flag=0); w
18、hile(flag=1) switch(t) case 1:printf(按职工号查询n);search_num();break; case 2:printf(按学历查询n);search_xueli();break; case 3:main();break; default:break;void search_num() int num; int i,t; int m=load(); printf(请输入要查找的职工号(20001111-20009999):n); scanf(%d,&num); for(i=0;im;i+) if(num=emi.num) printf(n已找到此人,其记录
19、为:n); printf(n职工号t姓名t性别t年龄t学历t工资t住址t电话 n); printf(n%dt%st%ct%dt%st%dt%st%ldn,emi.num,emi.name,emi.sex,emi.age,emi.xueli,emi.wage,emi.addr,emi.tel); break; if(i=m) printf(n对不起,查无此人n); printf(n); printf(返回查询函数请按1,继续查询职工号请按2n); scanf(%d,&t); switch(t) case 1:search();break; case 2: break; default:break
20、;void search_xueli() char xueli30; int i,t; int m=load(); printf(请输入要查找的学历:n); scanf(%s,xueli); for(i=0;im;i+) if(strcmp(emi.xueli,xueli)=0) printf(n已找到,其记录为:n); printf(n职工号t姓名t性别t年龄t学历t工资t住址t电话 n); printf(n%dt%st%ct%dt%st%dt%st%ldn,emi.num,emi.name,emi.sex,emi.age,emi.xueli,emi.wage,emi.addr,emi.te
21、l); if(i=m) printf(n); printf(返回查询函数请按1,继续查询学历请按2n); scanf(%d,&t); switch(t) case 1:search();break; case 2:break; default :break;void modify() int num;char name10;char sex; int age;char xueli30; int wage; char addr30; long int tel; int b,c,i,n,t,flag; int m=load(); printf(n 原来的职工信息:n); display(); pr
22、intf(n); printf(请输入要修改的职工的姓名:n);scanf(%s,name);for(flag=1,i=0;flag&i8|c1) printf(n选择错误,请重新选择!n); flag=0; if(flag=1)printf(n对不起,查无此人!n); do switch(c) case 1:printf(职工号改为: ); scanf(%d,&num); emi-1.num=num; break; case 2:printf(姓名改为: ); scanf(%s,name); strcpy(emi-1.name,name); break; case 3:printf(性别改为
23、: ); getchar(); scanf(%c,&sex); emi-1.sex=sex; break; case 4:printf(年龄改为: ); scanf(%d,&age); emi-1.age=age; break; case 5:printf(学历改为: ); scanf(%s,xueli); strcpy(emi-1.xueli,xueli); break; case 6:printf(工资改为: ); scanf(%d,&wage); break; case 7:printf(住址改为: ); scanf(%s,addr); strcpy(emi-1.addr,addr);
24、break; case 8:printf(电话改为: ); scanf(%ld,&tel); emi-1.tel=tel; break; printf(n); printf(n是否确定所修改的信息?n 是 请按1 ; 不,重新修改 请按2: n); scanf(%d,&b); while(b=2); printf(n浏览修改后的所有职工信息:n); printf(n); save(m); display(); printf(n继续修改请按1,不再修改请按0n); scanf(%d,&t); switch(t) case 1:modify();break; case 0:break; default :break;六、总结开始看到题目时,一点头绪都没有,无从下手。后来通过看书了解到了结构化设计方法,顿时豁然开朗。于是我按照题目要求把一个大系统分成模块,一个模块一个模块地编程序,这样就相当于在做小题目,问题简化多了。编模块时,开始也无从下手,经过反复思考后,终于有点思路了,后来越来越熟练,逐渐得心应手起来。我的程序很烦琐,编得很痛苦,连续奋战了几天,终于调试成功。虽然很烦琐,但我无怨无悔,因为我通过学习,学会了调试一个较长程序的基本方法,学会了用流程图表示算法,不仅初步了解了C+的使用,还进一步掌握和提高了利用C语言进行程序设计的能力。