1、课程设计汇报(本科)课程:高级语言课程设计学号:姓名:班级:老师:时间:计算机科学和技术系设计名称:职员信息管理系统设计内容、目标和要求:目标:要求熟练掌握C语言基础知识和编辑技能。基础掌握结构化程序设计基础思绪和方法。经过编写学生C语言职员信息管理系统,便于对职员信息进行管理。经过对职员C语言信息管理系统设计,训练综合利用函数自定义,数组,结构体等,并提升程序设计能力。要求:设计一个职员信息管理系统,使之能提供以下功效:1、应提供一个界面来调用各个功效,调用界面和各个功效操作界面应尽可能清楚美观!2、输入功效:职员信息录入(职员信息用文件保留),能够一次完成若干条统计输入。3、浏览功效:完成
2、对全部职员信息显示。4、查找功效:完成按职员职员号查询职员相关信息,并显示。 完成按职员学历查询职员相关信息,并显示。 完成按职员电话号码查询职员相关信息,并显示。5、删除功效:经过输入职员姓名完成对该名职员信息进行删除。 经过输入职员号完成对该名职员信息进行删除。6、添加功效:完成添加新职员信息任务。7、修改功效:经过输入职员姓名完成对该名职员信息进行修改。 经过输入职员号完成对该名职员信息进行修改。8、退出职员信息管理系统。计划和进度安排:12月8日至12月15日 仔细看数据库相关知识,经过上网查资料找思绪。12月16日至12月20日 完成设计思绪并作出初稿,把主函数和各调用函数模块编出来
3、。12月21日至1月1日 逐步实现各模块功效化,把整个程序大致功效全部实现。1月2日至1月6日 修改并完善各功效,写好电子试验汇报,并准备提交验收。设计过程、步骤(可加页):一功效结构职员信息管理系统开始1按职员号查询2按学历查询3按号码查询2按职员姓名删除1按职员号删除2按职员姓名修改1按职员号修改菜单依据菜单输入值选择程序1录入职员信息2浏览职员信息3查询职员信息5添加职员信息4删除职员信息6修改职员信息7退出二、设计说明1.这个程序要用到结构体.struct employee;2.函数申明和调用:void menu(); /菜单函数 void input(); / 录入函数 void s
4、ave(int m); /保留文件函数 void display(); /浏览函数 void del(); / 删除函数 void del_name(); /按姓名删除函数 void del_num(); /按职员号删除函数 void add(); /添加函数 void search(); /查询函数 void search_num(); /按职员号码查询函数 void search_xueli(); /按学历查询函数 void search_tel(); /按号码查询函数 void modify(); / 修改函数 void modify_num(); /按职员号修改函数 void modi
5、fy_name(); /按姓名修改函数3.选择功效,用到了do.while语句和switch,do.while是进行循环,switch是用来选择do if(n=1&n=7) flag=1; break; else flag=0; printf(您输入有误,请重新选择!); while(flag=0);switch(n) case 1:printf( 输入职员信息);printf(n);input();break; case 2:printf( 浏览职员信息);printf(n);display();break; case 3:printf( 查询职员信息);printf(n);search()
6、;break; case 4:printf( 删除职员信息);printf(n);del();break; case 5:printf( 添加职员信息);printf(n);add();break; case 6:printf( 修改职员信息);printf(n);modify();break; case 7:exit(0);break; default :break; 4.定义函数完成功效实现:录入职员信息,浏览职员信息,查询职员信息,修改职员信息,添加职员信息,删除职员信息。5.实施程序。结果和分析(能够加页):功效上有对职员信息增加,删除,浏览,查询,修改等简单功效.使用说明及运行实例1
7、.运行程序,进入职员信息管理系统主菜单:图1:进入主菜单界2.输入数字“1”进行录入职员信息: 图2:录入职员信息3.输入“y”返回主菜单(界面同图1)。4.输入“2”浏览职员信息:图3:浏览职员信息5.输入“y”后继续,输入“3”进行查询职员信息:图4:按职员号查询职员信息5:按学历查询职员信息图6:按电话号码查询职员信息6.进入主菜单,输入“4”进行删除职员信息:图7:按姓名删除职员信息图8:按职员号删除职员信息7.进入主菜单输入“5”进行添加职员信息:图9:添加职员信息8.进入主菜单输入“6”进行修改职员信息:图10:按姓名修改职员信息图11:按职员号修改职员信息9.进入主菜单输入”7”
8、退出职员信息管理系统: 图12:退出系统优点是:基础实现了程序多功效,对和查询职员信息提供了三种方法,对和修改和删除职员信息提供了两种方法,功效多个多样。旗帜变量使用也是优点之一;这个程序用到了结构体,整个程序简单,易懂。缺点是:保留职员信息有限,程序段比较臃长。设计体会和提议: 经过这次课程设计,我愈加了解C语言,学会愈加好使用C语言函数调用和结构体等,把学过知识利用于实践中,而不仅仅停留于对书本单纯了解;这次设计也让我知道我懂太少,要学习东西还有很多。想完成一项功效就要用很复杂语句去实现,所以整个程序变很长,复杂,不过结构体,数组,指针等灵活利用又可使程序变易懂。另外,团体合作也是成功一部
9、分!在编写代码时一开始没有利用有意义函数名和变量,结果找起来和修改好麻烦,也使她人看不懂。在整个课程设计中,我认为最关键就是耐心和细心。细心,就是在编写过程中注意拼写,仔细编写程序;耐心,就是程序编译中出现很多错误时候能够耐心去修改,只有这么,才能很好完成程序。即使在整个过程中出现了不少错误,但最终还是圆满完成了,此次程序设计经历让我学到了太多,以前好多不懂也全部了解了。也学会了作为大学生我们也应该学会不仅从课堂上学习知识,还应该学会自学。 附录:#include /标准输入输出函数库#include /字符串函数库#includestruct employee int num; /职员号 c
10、har name20; /姓名 char sex; /性别 int age; /年纪 char xueli30; /学历 int wage; /工资 char addr30; /家庭住址 char tel20; /联络电话employee100; /定义一个结构体int main() /函数主体 void menu(); /菜单函数 void input(); / 录入函数 void save(int m); /保留文件函数 void display(); /浏览函数 void del(); / 删除函数 void del_name(); /按姓名删除函数 void del_num(); /按
11、职员号删除函数 void add(); /添加函数 void search(); /查询函数 void search_num(); /按职员号码查询函数 void search_xueli(); /按学历查询函数 void search_tel(); /按号码查询函数 void modify(); / 修改函数 void modify_num(); /按职员号修改函数 void modify_name(); /按姓名修改函数 int n,flag; char a; menu(); printf(请选择你需要操作步骤(1-7):n); scanf(%d,&n); do if(n=1&n=7) f
12、lag=1; break; else flag=0; printf(您输入有误,请重新选择!); while(flag=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(
13、添加职员信息n);printf(n);add();break; case 6:printf( 修改职员信息n);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); v
14、oid menu() /菜单函数 printf( *欢迎进入职员信息管理系统*n); printf( 1.录入职员信息); printf( 2.浏览职员信息n); printf( 3.查询职员信息); printf( 4.删除职员信息n); printf( 5.添加职员信息); printf( 6.修改职员信息n); printf( 7.退出n); printf( *谢谢使用*n); printf(n); printf(n);void input() /录入函数 int i,m; printf(请输入需要创建信息职员人数(1-100):n); scanf(%d,&m); for (i=0;im
15、;i+) printf(请输入职员号: ); scanf(%d,&employeei.num); printf(请输入姓名: ); scanf(%s,employeei.name); getchar(); printf(请输入性别(f-女 m-男): ); scanf(%c,&employeei.sex); printf(请输入年纪: ); scanf(%d,&employeei.age); printf(请输入学历: ); scanf(%s,employeei.xueli); printf(请输入工资: ); scanf(%d,&employeei.wage); printf(请输入住址:
16、); scanf(%s,employeei.addr); printf(请输入电话: ); scanf(%s,employeei.tel); printf(n); printf(n创建完成!n); save(m);void save(int m) /保留文件函数 int i; FILE*fp; if (fp=fopen(employee_list.txt,wb)=NULL) printf (cannot open filen); exit(0); for (i=0;im;i+) /将内存中职员信息输出到磁盘文件中去 if (fwrite(&employeei,sizeof(struct emp
17、loyee),1,fp)!=1) printf(file write errorn); fclose(fp);int load() /导入函数 FILE*fp; int i=0; if(fp=fopen(employee_list.txt,rb)=NULL) printf (cannot open filen); exit(0); else do fread(&employeei,sizeof(struct employee),1,fp); i+; while(feof(fp)=0); fclose(fp); return(i-1);/循环过程中跳出循环时i自动加一,所以要减去一void di
18、splay() /浏览函数 int i; int m=load(); printf( 职员号 姓名 性别 年纪 学历 工资 住址 电话 n); for(i=0;i=1&t=3) flag=1; break; else flag=0; printf(您输入有误,请重新选择!); while(flag=0); while(flag=1) switch(t) case 1:printf(按职员号删除n);del_num();break; case 2:printf(按姓名删除n);del_name();break; case 3:main();break; default:break; void d
19、el_name() /按姓名删除函数 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(employeei.name,name)=0) printf(n已找到此人,原始统计为:n); printf( 职员号 姓名 性别 年纪 学历 工资 住址 电话 n); printf( %d %s %c %d %s %d
20、%s %sn,employeei.num,employeei.name,employeei.sex, employeei.age,employeei.xueli,employeei.wage,employeei.addr,employeei.tel); printf(n确实要删除此人信息请按1,不删除请按0n); scanf(%d,&n); if(n=1) for(j=i;jm-1;j+) strcpy(employeej.name,employeej+1.name);/strcpy(str1,str2)把str2指向字符串复制到str1中去 employeej.num=employeej+1
21、.num; employeej.sex=employeej+1.sex; employeej.age=employeej+1.age; strcpy(employeej.xueli,employeej+1.xueli); employeej.wage=employeej+1.wage; strcpy(employeej.addr,employeej+1.addr); strcpy(employeej.tel,employeej+1.tel);/把下一职员信息复制到上一个职员信息位置中去 flag=0; if(!flag) /flag取逻辑反,及flag=0 m=m-1; else printf
22、(n对不起,查无此人!n); printf(n 浏览删除后全部职员信息:n); save(m); /调用保留函数 display(); /调用浏览函数 printf(n不在删除请按0, 返回删除菜单请按1,继续按姓名删除请按2n); scanf(%d,&t); switch(t) case 0:main();break; case 1:del();break; case 2:break; default :break; void del_num() /按职员号删除函数 int m=load(); int i,j,n,t,flag; int num; printf(n 原来职员信息:n); di
23、splay(); /调用浏览函数 printf(n); printf(请输入要删除职员职员号:n); scanf(%d,&num); for(flag=1,i=0;flag&im;i+) if(employeei.num=num) printf(n已找到此人,原始统计为:n); printf( 职员号 姓名 性别 年纪 学历 工资 住址 电话 n); printf( %d %s %c %d %s %d %s %sn,employeei.num,employeei.name,employeei.sex, employeei.age,employeei.xueli,employeei.wage,e
24、mployeei.addr,employeei.tel); printf(n确实要删除此人信息请按1,不删除请按0n); scanf(%d,&n); if(n=1) for(j=i;jm-1;j+) strcpy(employeej.name,employeej+1.name);/strcpy(str1,str2)把str2指向字符串复制到str1中去 employeej.num=employeej+1.num; employeej.sex=employeej+1.sex; employeej.age=employeej+1.age; strcpy(employeej.xueli,employ
25、eej+1.xueli); employeej.wage=employeej+1.wage; strcpy(employeej.addr,employeej+1.addr); strcpy(employeej.tel,employeej+1.tel);/把下一职员信息复制到上一个职员信息位置中去 flag=0; if(!flag) /flag取逻辑反,及flag=0 m=m-1; else printf(n对不起,查无此人!n); printf(n 浏览删除后全部职员信息:n); save(m); /调用保留函数 display(); /调用浏览函数 printf(n不在删除请按0,返回删除菜
26、单请按1,继续按职员号删除请按2n); scanf(%d,&t); switch(t) case 0:main();break; case 1:del();break; case 2: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.txt,a); printf(请输入想增加职员数:n); scanf(%d,&n); for (i=m;i=
27、1&t=4) flag=1; break; else flag=0; printf(您输入有误,请重新选择!); while(flag=0); while(flag=1) switch(t) case 1:printf(按职员号查询n);search_num();break; case 2:printf(按学历查询n);search_xueli();break; case 3:printf(按电话号码查询n);search_tel();break; case 4:main();break; default:break; void search_num() /按职员号码查询函数 int num;
28、 int i,t; int m=load(); printf(请输入要查找职员号:n); scanf(%d,&num); for(i=0;im;i+) if(num=employeei.num) printf(n已找到此人,其统计为:n); printf( 职员号 姓名 性别 年纪 学历 工资 住址 电话 n); printf( %d %s %c %d %s %d %s %sn,employeei.num,employeei.name,employeei.sex, employeei.age,employeei.xueli,employeei.wage,employeei.addr,emplo
29、yeei.tel); break; if(i=m) printf(n对不起,查无此人n); printf(n); printf(不在查询请按0,返回查询函数请按1,继续查询职员号请按2n); scanf(%d,&t); switch(t) case 0:main();break; case 1:search();break; case 2: break; default:break; void search_xueli() /按职员号码查询函数 char xueli30; int i,t,n=0; int m=load(); printf(请输入要查找学历:n); scanf(%s,xueli
30、); for(i=0;im;i+) if(strcmp(employeei.xueli,xueli)=0) printf(n已找到,其统计为:n); printf( 职员号 姓名 性别 年纪 学历 工资 住址 电话 n); printf( %d %s %c %d %s %d %s %sn,employeei.num,employeei.name,employeei.sex, employeei.age,employeei.xueli,employeei.wage,employeei.addr,employeei.tel); n+; if(i=m&n=m) printf(n对不起,查无此人n); printf(n); printf(不在查询请按0,返回查询函数请按1,继续查询学历请按2n); scanf(%d,&t); switch(t) case 0:main();break; case 1:search();break; case 2:br