《C语言学习知识课程教学设计职工信息管理方案计划系统.doc》由会员分享,可在线阅读,更多相关《C语言学习知识课程教学设计职工信息管理方案计划系统.doc(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、.中国地质大学课 程 设 计 报 告 书所属课程名称 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个基类,即为员工的基本信息。2,创建了主函数main(),用它调用子函数menu(),add
4、(),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 ; before typeg:1.c(56) : error C2143: syntax error
5、 : 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 wage;/工资 char addr30;/住址 long int tel;/电话em100
7、; 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.录入职工信息);printf( 2.浏览职工信息n);printf( 3.查询职工信息);printf(
8、 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(flag=0); while(flag=1) switch(n) case 1:pri
9、ntf(输入职工信息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);printf(n);modify();break; case 7:exit(0);
10、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); for (i=0;im;i+) printf(职工号: ); srand(int)
11、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.xueli); printf(请输入工资: ); scanf(%d,&emi.wage
12、); 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(struct employee),1,fp)!=1) printf(file write
13、 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 职工号t姓名t性别t年龄t学历t工资t住址t电话 n);for(i=0;im;i
14、+) 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;flag&im;i+) if(strcmp(emi.name,name)=0) pri
15、ntf(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); emj.num=emj+1.num; emj.sex=emj+1.sex;
16、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(t) case 1:del();break; case 0:break; de
17、fault :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); while(flag=1) switch(t) case 1:printf(按职工
18、号查询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已找到此人,其记录为:n); printf(n职工号t姓名t性别t年龄t学历t工资t住址t电话
19、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; void search_xueli() char xueli30; int
20、 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.tel); if(i=m) printf(n); printf(返回查询函数请按
21、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(); printf(n); printf(请输入要修改的职工的姓名:n);scanf
22、(%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(性别改为: ); getchar(); scanf(%c,&sex); emi-1
23、.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); break; case 8:printf(电话改为: ); scanf(%
24、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语言进行程序设计的能力。