《c语言程序设计__企业员工管理系统PDF.pdf》由会员分享,可在线阅读,更多相关《c语言程序设计__企业员工管理系统PDF.pdf(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、中央广播电视大学2008秋季页脚内容 1一、课程设计目的通过本课程设计,强化上机动手能力,使学生在理论和实践的基础上进一步巩固C语言程序设计课程学习的内容,掌握工程软件设计的基本方法。学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力。为后续各门计算机课程的学习打下坚实基础。为毕业设计和以后工作打下必要基础。二、课程设计内容针对某企业的员工,对其信息进行系统的管理。三、需求分析对所开发系统功能、性能的描述,想要实现的目标。此系统可对该厂员工进行信息的录入,修改,删除,添加,查询,排序,统计,打印等功能。用户可通过提示选择进入某一功能界面,然后进行对员工的信息管理。每一功能模块都
2、充分为用户考虑,编排详细。使用户可以方便快捷的了解员工信息,及时有效的对员工进行信息的管理。四、概要设计1系统结构图(功能模块图)对系统进行分析,给出系统结构图;分析:此系统,为方便客户输入,以及使程序清晰化,因而本人采用模块法,将每一功能模块化,使程序中各函数间调用更加明了。以下为系统模块图。中央广播电视大学2008秋季页脚内容 22功能模块说明对各个模块进行功能的描述。录入模块:输入该厂现有员工信息并保存与文件中,方便日后进行排序,更新,统计,打印等操作。输出模块:将所有员工信息,或所需员工信息输出于屏幕上,用于打印或查询员工信息。更新模块:此模块又分为删除,添加,修改三个模块。删除模块:
3、对已退休或离开该厂的员工进行删除操作。添加模块:添加新入厂的员工信息并保存起来。修改模块:找到该员工并,选择所要修改的选项。排序模块:本程序只对员工年龄进行从小到大排序。查询模块:此模块分为按姓名,年龄,工作查询。姓名查询模块:输入要查找的姓名,找到就输出其信息。找不到则输出无此人。年龄查询模块:输入要查找的年龄,找到就输出其信息。找不到则输出无此人。工作查询模块:输入要查找的工作,找到就输出其信息。找不到则输出无此人。统计模块:此模块分为,统计年龄,性别和工作。统计年龄:输入要统计的年龄,查找并输出,若无此年龄则输出暂无此年龄员工。统计性别:输入要统计的性别,查找并输出,若无此性别则输出暂无
4、此性别员工。统计工作:输入要统计的工作,查找并输出,若无此工作则输出暂无此工作员工。中央广播电视大学2008秋季页脚内容 3保存模块:将现有信息保存于文件中,以防丢失。系统模块图录入输出更新查询退出添加员删除员修改员按性别按姓名按年龄按年龄王氏企业员工信息管理系统排序按年龄按工作统计按工作输入 i 的值,进入相应模块保存中央广播电视大学2008秋季页脚内容 4五、详细设计及运行结果流程图, 函数之间相互调用的图示,程序设计及编码 , 运行结果。主函数:i=1 i=6 i=2 i=3 i=4 i=5 i=0按任意键返回主界面判断 i 值录入输出更新查询排序统计退出中央广播电视大学2008秋季页脚
5、内容 5输出模块:否录入模块:是否是否是i=0中央广播电视大学2008秋季页脚内容 6排序模块:更新模块:否i=3i=1 i=2 i=0是否否i 的年龄大于j判断 i 值删除添加修改退出i=0中央广播电视大学2008秋季页脚内容 7是是否是查询模块:统计模块:判断 i 值判断 i 值中央广播电视大学2008秋季页脚内容 8i=1 i=3 i=2 i=0 i=1 i=2 i=3 i=0否否是是六、调试情况,设计技巧及体会1、对自己设计进行评价,指出合理和不足之处,提出改进的方案。自我评价:本人自我觉得此系统还不错,程序简洁明了,功能齐全,而且充分从用户的角度进中央广播电视大学2008秋季页脚内容
6、 9行编排,易于执行。经本人多次调试终于出现0 个错误与警告,而且从未有过死循环,用户一旦输错,立即会有提示,此程序相当的健壮。因本人定义了全局变量,使操作更加简单易行,使用了结构体数组,避开链表那样的复杂操作。但不足之处便是没有链表那样节省内存。如有机会下次可能会用链表。2、在设计过程中的感受。在把字符一个个敲上屏幕时,坐在那一动不动相当的枯燥,一想到过会儿就能看到自己亲自编的程序,就只能忍吧。当看到模块一个个运行后与预料中的完全一样时,郁闷的心情立马被一种成就感替代。就想赶紧编完看看自己的杰作。然而也会遇到自己解决不了的问题,就只能去求老师了。这次最大的感受就是当你竭尽全力的干一件事时,就
7、没有能挡住你的困难。七、参考文献C语言课本。八、附录: 源代码#include#include#define MAX 100char filename20; /* 文件名 */FILE *fp;中央广播电视大学2008秋季页脚内容 10int n; /* 当前该厂人数 */struct date /* 时间结构体 */ int year;int mouth;int day; ;struct person /* 员工信息结构体 */ char name10; /* 姓名*/int age; /* 年龄*/char job10; /* 工作*/char sex10; /* 性别*/char add
8、ress20; /* 地址*/char phone10; /* 电话*/struct date in_time; /*入厂时间 */t,workerMAX;/* 录入模块 */void input()中央广播电视大学2008秋季页脚内容 11int i; clrscr();printf(nn请输入文件名 n);scanf(%s,filename);printf( 开始输入员工的信息 n);printf(n 请输入现有员工人数 n);scanf(%d,&n);if(fp=fopen(filename,w)=NULL) printf( 不能建立! n);exit();for(i=0;in;i+)
9、printf( 第%d个人的信息: n,i+1);printf( 姓名n);scanf(%s,workeri.name);printf( 年龄n);scanf(%d,&workeri.age);printf( 工作n);中央广播电视大学2008秋季页脚内容 12scanf(%s,workeri.job);printf( 性别n);scanf(%s,workeri.sex);printf( 地址n);scanf(%s,workeri.address);printf( 电话n);scanf(%s,workeri.phone);printf( 入厂年 n);scanf(%d,&workeri.in_
10、time.year);printf( 入厂月 n);scanf(%d,&workeri.in_time.mouth);printf( 入厂日 n);scanf(%d,&workeri.in_time.day);printf( 录入完毕,按任意键返回主菜单n);getch();for(i=0;in;i+)中央广播电视大学2008秋季页脚内容 13fprintf(fp,%s %d %s %s %s %s %d-%d-%dn,workeri.name,workeri.age,workeri.job,workeri.sex,workeri.address,workeri.phone,workeri.i
11、n_time.year,workeri.in_time.mouth,workeri.in_time.day);fclose(fp);/* 输出模块 */void output() int i; if(fp=fopen(filename,r)=NULL) printf( 暂时未有任何信息,请按任意键返回主菜单进行信息录入n);getch();exit();clrscr();printf( 该厂的员工信息: n);printf(姓名t 年龄t 工作t 性别t 地址t 电话t 入厂时间 n);for(i=0;in;i+) fscanf(fp,%s %d %s %s %s %s %d-%d-%d,wo
12、rkeri.name,&workeri.age,workeri.job,workeri.sex,workeri.address,workeri.phone,&workeri.in_time.year,&workeri.in_time.mouth,&workeri.in_time.day);中央广播电视大学2008秋季页脚内容 14printf(%st%dt%st%st%st%st%d-%d-%d n,workeri.name,workeri.age,workeri.job,workeri.sex,workeri.address,workeri.phone,workeri.in_time.yea
13、r,workeri.in_time.mouth,workeri.in_time.day);fclose(fp);printf( 输出完毕,按任意键返回主菜单n);getch();/* 保存模块 */void save() int i;if(fp=fopen(filename,w)=NULL) /* 打开文件 */ printf(n 不能打开该文件! );exit();for(i=0;in;i+)fprintf(fp,%s %d %s %s %s %s %d-%d-%dn,workeri.name,workeri.age,workeri.job,workeri.sex,workeri.addre
14、ss,workeri.phone,workeri.in_time.year,workeri.in_time.mouth,workeri.in_time.day);中央广播电视大学2008秋季页脚内容 15fclose(fp);/* 读取信息 */void read_message() int i;printf( 输入文件名 n);scanf(%s,filename);printf(n 请输入现有员工人数 n);scanf(%d,&n);if(fp=fopen(filename,r)=NULL) printf( 暂时未有任何信息,请按任意键返回主菜单进行信息录入n);getch();for(i=
15、0;in;i+)fscanf(fp,%s %d %s %s %s %s %d-%d-%d,workeri.name,&workeri.age,workeri.job,workeri.sex,workeri.address,workeri.phone,&workeri.in_time.year,&workeri.in_time.mouth,&workeri.in_time.day);fclose(fp);中央广播电视大学2008秋季页脚内容 16/* 修改模块 */void modify() int i,flag,choice; char ch,namekey10;flag=0;clrscr()
16、;printf( 开始修改 n);doprintf(请输入要修改的员工姓名n);scanf(%s,namekey);for(i=0;in;i+) if(strcmp(workeri.name,namekey)=0) printf(是否修改此人 (y/n)n);printf(姓名t 年龄t 工作t 性别t 地址t 电话t 入厂时间 n);printf(%st%dt%st%st%st%st%d-%d-%d n,workeri.name,workeri.age,workeri.job,workeri.sex,workeri.address,workeri.phone,workeri.in_time.
17、year,workeri.in_time.mouth,workeri.in_time.day);getchar(); /* 接收回车 */ch=getchar();中央广播电视大学2008秋季页脚内容 17if(ch=y) printf( * 您要修改那一项? *nn);printf( *1, 姓名*nn);printf( *2, 年龄*nn);printf( *3, 工作*nn);printf( *4, 性别*nn);printf( *5, 地址*nn);printf( *6, 电话*nn);printf( *7, 入厂年 *nn);printf( *8, 入厂月 *nn);printf(
18、*9, 入厂日 *nn);printf( 请选择 (1-9)n);scanf(%d,&choice);switch(choice) case 1: printf( 输入修改后的姓名 n);scanf(%s,workeri.name); break;case 2: printf(输入修改后的年龄 n);中央广播电视大学2008秋季页脚内容 18scanf(%d,&workeri.age); break;case 3: printf(输入修改后的工作 n);scanf(%s,workeri.job); break;case 4: printf(输入修改后的性别 n);scanf(%s,worker
19、i.sex); break;case 5: printf(输入修改后的地址 n);scanf(%s,workeri.address); break;case 6: printf(输入修改后的电话 n);scanf(%s,workeri.phone); break;case 7: printf(输入修改后的入厂年 n);scanf(%d,&workeri.in_time.year); break;case 8: printf(输入修改后的入厂月 n);scanf(%d,&workeri.in_time.mouth); break;case 9: printf(输入修改后的入厂日 n); scan
20、f(%d,&workeri.in_time.day); break;printf( 修改后的信息 n);printf(姓名t 年龄t 工作t 性别t 地址t 电话t 入厂时间 n);中央广播电视大学2008秋季页脚内容 19printf(%st%dt%st%st%st%st%d-%d-%d n,workeri.name,workeri.age,workeri.job,workeri.sex,workeri.address,workeri.phone,workeri.in_time.year,workeri.in_time.mouth,workeri.in_time.day);else brea
21、k;elseif(i=n) printf(此人不存在 n);printf(n 是否继续输入 (y/n)n);getchar(); /* 接收回车 */ch=getchar();if(ch=y) printf( 继续n);flag=1;else flag=0;while(flag=1); printf( 修改完毕,按任意键返回主菜单n) ;中央广播电视大学2008秋季页脚内容 20getch();/* 添加模块 */void add() int i,flag=0; char ch;clrscr();printf(n 开始添加新员工 n);printf( *-*nn);do i=n;printf(
22、n 请输入添加职工的信息 (姓名,年龄,工作,性别,地址,电话,入厂时间 )n); printf(姓名n);scanf(%s,workeri.name);printf( 年龄n);scanf(%d, &workeri.age);printf( 工作n);scanf(%s,workeri.job);中央广播电视大学2008秋季页脚内容 21printf( 性别n);scanf(%s,workeri.sex);printf( 地址n);scanf(%s,workeri.address);printf( 电话n);scanf( %s,workeri.phone);printf( 入厂年 n);sca
23、nf(%d,&workeri.in_time.year);printf( 入厂月 n);scanf(%d,&workeri.in_time.mouth);printf( 入厂日 n);scanf(%d,&workeri.in_time.day);n+;printf(n 添加成功!是否继续输入 (y/n)n);getchar(); /* 接收回车 */ch=getchar();if(ch=y) printf( 继续n);中央广播电视大学2008秋季页脚内容 22flag=1;else flag=0;while(flag=1); printf( 添加完毕,按任意键返回主菜单n) ;getch();
24、/* 删除模块 */void del() int i,flag; char ch,namekey10;flag=0;clrscr();printf(开始删除 n);do printf( 请输入要删除员工的名字 n);scanf(%s,namekey);for(i=0;in;i+)中央广播电视大学2008秋季页脚内容 23if(strcmp(workeri.name,namekey)=0) /* 查找此人 */ printf(是否删除此人 (y/n)n);printf(姓名t 年龄t 工作t 性别t 地址t 电话t 入厂时间 n);printf(%st%dt%st%st%st%st%d-%d-%
25、d n,workeri.name,workeri.age,workeri.job,workeri.sex,workeri.address,workeri.phone,workeri.in_time.year,workeri.in_time.mouth,workeri.in_time.day);getchar(); /* 接收回车 */ch=getchar();if(ch=y) for(;in;i+)workeri=workeri+1;n-;else break;elseif(i=n)printf( 此人不存在 n);printf(n 是否继续输入 (y/n)n);中央广播电视大学2008秋季页
26、脚内容 24getchar(); /* 接收回车 */ch=getchar();if(ch=y) printf( 继续n);flag=1;else flag=0;while(flag=1); printf( 操作完毕,按任意键返回主菜单n) ;getch();/* 更新模块 */void renew() int i;do clrscr();printf(nnn * 更新员工信息 *nn);printf( 按 1,添加员工信息 nn);中央广播电视大学2008秋季页脚内容 25printf( 按 2,删除员工信息 nn);printf( 按 3,修改员工信息 nn);printf( 按 0,返回
27、主菜单 n);printf( 请选择 (0-3)n);scanf(%d,&i);switch(i) case 1: add(); break;case 2: del(); break;case 3: modify(); break;case 0: break;while(i!=0);save();/* 按姓名查找 */void name_cha() int i,j; char namekey10;j=0;中央广播电视大学2008秋季页脚内容 26clrscr();printf( 输入要查询的员工姓名 n);scanf(%s,namekey);for(i=0;in;i+)if(strcmp(wo
28、rkeri.name,namekey)=0) /* 查找此人 */ printf(- 员工信息 -n);printf(姓名t 年龄t 工作t 性别t 地址t 电话t 入厂时间 n);printf(%st%dt%st%st%st%st%d-%d-%d n,workeri.name,workeri.age,workeri.job,workeri.sex,workeri.address,workeri.phone,workeri.in_time.year,workeri.in_time.mouth,workeri.in_time.day);else j+;if(j=n)printf(此人不存在 n)
29、;printf(按任意键返回主菜单 n);getch();/* 按年龄查找 */void age_cha()中央广播电视大学2008秋季页脚内容 27 int i,j; int agekey;j=0;clrscr();printf( 输入要查询员工的年龄 n);scanf(%d,&agekey);for(i=0;in;i+)if(workeri.age=agekey) printf(-员工信息 -n);printf( 姓名t 年龄t 工作t 性别t 地址 t 电话t 入厂时间 n);printf(%st%dt%st%st%st%st%d-%d-%d n,workeri.name,workeri
30、.age,workeri.job,workeri.sex,workeri.address,workeri.phone,workeri.in_time.year,workeri.in_time.mouth,workeri.in_time.day);else j+;if(j=n)printf(此人不存在 n);printf(按任意键返回主菜单 n);getch();中央广播电视大学2008秋季页脚内容 28/* 按工作查找 */void job_cha() int i,j; char jobkey10;j=0;clrscr();printf( 输入要查询的员工职务 n);scanf(%s,jobk
31、ey);for(i=0;in;i+)if(strcmp(workeri.job,jobkey)=0) printf(-员工信息 -n);printf( 姓名t 年龄t 工作t 性别t 地址 t 电话t 入厂时间 n);printf(%st%dt%st%st%st%st%d-%d-%d n,workeri.name,workeri.age,workeri.job,workeri.sex,workeri.address,workeri.phone,workeri.in_time.year,workeri.in_time.mouth,workeri.in_time.day);else j+;if(j
32、=n)printf(此人不存在 n);printf(按任意键返回主菜单 n);中央广播电视大学2008秋季页脚内容 29getch();/* 查询模块 */void inquire() int i;do clrscr();printf(nnn * 查询员工信息 *nn);printf( *1, 按姓名查询 *nn);printf( *2, 按年龄查询 *nn);printf( *3, 按工作查询 *nn);printf( *0, 返回主菜单 n);printf( 请选择 (0-3)n);scanf(%d,&i);switch(i) case 1: name_cha();break;case 2
33、: age_cha(); break;case 3: job_cha();break;中央广播电视大学2008秋季页脚内容 30case 0: break;while(i!=0);/* 排列模块 */void line() int i,j;clrscr();printf(-按年龄排序 -nn);for(i=0;in-1;i+)for(j=i+1;jworkerj.age) t=workeri;workeri=workerj;workerj=t;printf(姓名t 年龄t 工作t 性别t 地址t 电话t 入厂时间 n);for(i=0;in;i+)中央广播电视大学2008秋季页脚内容 31pr
34、intf(%st%dt%st%st%st%st%d-%d-%d n,workeri.name,workeri.age,workeri.job,workeri.sex,workeri.address,workeri.phone,workeri.in_time.year,workeri.in_time.mouth,workeri.in_time.day);printf( 按任意键返回主菜单 n);getch();/* 按年龄统计 */void count_age() int i,j; int agekey;j=0;clrscr();printf( 输入要统计员工的年龄 n);scanf(%d,&a
35、gekey);for(i=0;in;i+)if(workeri.age=agekey) printf(-员工信息 -n);printf( 姓名t 年龄t 工作t 性别t 地址t 电话t 入厂时间 n);printf(%st%dt%st%st%st%st%d-%d-%d n,workeri.name,workeri.age,workeri.job,workeri.sex,workeri.address,workeri.phone,workeri.in_tim中央广播电视大学2008秋季页脚内容 32e.year,workeri.in_time.mouth,workeri.in_time.day)
36、;else j+;if(j=n)printf(暂无该年龄段员工 n);printf(按任意键返回主菜单 n);getch();/* 按职务统计 */void count_job() int i,j; char jobkey10;j=0;clrscr();printf( 输入要统计的员工职务 n);scanf(%s,jobkey);for(i=0;in;i+)if(strcmp(workeri.job,jobkey)=0) printf(-员工信息 -n);中央广播电视大学2008秋季页脚内容 33printf( 姓名t 年龄t 工作t 性别t 地址 t 电话t 入厂时间 n);printf(%
37、st%dt%st%st%st%st%d-%d-%d n,workeri.name,workeri.age,workeri.job,workeri.sex,workeri.address,workeri.phone,workeri.in_time.year,workeri.in_time.mouth,workeri.in_time.day);else j+;if(j=n)printf(暂无该职务或该职务暂时无人n);printf(按任意键返回主菜单 n);getch();/* 按性别统计 */void count_sex() int i,j; char sexkey10;j=0;clrscr()
38、;printf( 输入要统计的员工性别 n);scanf(%s,sexkey);for(i=0;in;i+)中央广播电视大学2008秋季页脚内容 34if(strcmp(workeri.sex,sexkey)=0) printf(-员工信息 -n);printf( 姓名t 年龄t 工作t 性别t 地址 t 电话t 入厂时间 n);printf(%st%dt%st%st%st%st%d-%d-%d n,workeri.name,workeri.age,workeri.job,workeri.sex,workeri.address,workeri.phone,workeri.in_time.yea
39、r,workeri.in_time.mouth,workeri.in_time.day);else j+;if(j=n)printf(暂无该性别员工 n);printf(按任意键返回主菜单 n);getch();/* 统计模块 */void count() int i; do clrscr();printf(nnn * 统计员工信息 *nn);中央广播电视大学2008秋季页脚内容 35printf( 按 1,统计某年龄职工 nn);printf( 按 2,统计某职务员工 nn);printf( 按 3,统计某性别职工 nn);printf( 按 0,返回主菜单 nn);printf( 请选择
40、(0-3):n);scanf(%d,&i);switch(i) case 1: count_age(); break;case 2: count_job(); break;case 3: count_sex(); break;case 0: break;while(i!=0);/* 主函数 */main() int choice;read_message();中央广播电视大学2008秋季页脚内容 36do clrscr();printf(nn *#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*n);printf( #*
41、#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#n);printf( * *n);printf( #-欢迎进入王氏企业员工管理系统-#n);printf( * *n);printf( #-按 1,录入员工信息 -#n);printf( * *n);printf( #-按 2,更新员工信息 -#n);printf( * *n);printf( #-按 3,查询员工信息 -#n);printf( * *n);printf( #-按 4,排列员工信息 -#n);printf( * *n);printf( #-按 5,统计员工信
42、息 -#n);printf( * *n);中央广播电视大学2008秋季页脚内容 37printf( #-按 6,输出员工信息 -#n);printf( * *n);printf( #-按 0,退出系统 -#n);printf( * *n);printf( #*#*#*#*#*#*# 制作者:王增QQ :815604901 *#*#*#*#n);printf( #*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#n);scanf(%d,&choice);switch(choice) case 1: input(); break;case 2: renew(); break;case 3: inquire(); break;case 4: line(); break;case 5: count(); break;case 6: output(); break;case 0: break;while(choice!=0);中央广播电视大学2008秋季页脚内容 38save();printf( 现有员工数 :%dn,n);printf(n 以上信息已保存 !文件名为 :%sn,filename);