1、36摘 要C是一种计算机程序设计语言,可以作为系统设计语言编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序,因此它的应用范围广阔。本系统是根据职工信息管理工作的需要,通过C语言开发一个职工信息管理系统来实现对职工信息进行有效、准确的管理。整个系统从简便、实用的要求出发,完成职工信息管理的全过程,包括职工信息的录入、修改、删除、查找、输出等功能。本文主要介绍了本课题的开发背景,所要完成的功能和开发的过程。系统的说明了系统的设计思路、总体设计、各个功能模块的设计与实现方法。关键词:职工信息管理系统, C语言,信息采集模块目录1. 程序设计任务书要求42. 程序基本框架5
2、3. C语言课程设计的目的64. 详细设计报告75. 程序清单226. 课程设计总结30 后记32 参考文献33课程设计任务书20132014 学年第一学期专业班级: 学号:姓名:课程名称: C程序设计 完成期限:自 2013年 12 月19日至 2013年 12 月26日 共 1 周 课程设计题目 职工信息管理系统的设计与应用 设计目的:进一步加深、巩固学生所学专业课程(C程序设计)的基本理论知识,进一步培养学生综合分析问题和解决问题的能力。掌握运用C语言独立地编写、调试应用程序和进行其它相关设计的技能,充分发掘广大同学的潜力,使得同学们能够通过本次课程设计而得到全面的锻炼。一、功能要求:职
3、工信息管理系统是企业职工管理中的一项重要内容,该系统功能主要包括: (1) 定义结构体类型数组存放职工信息。 (2) 编写函数输出系统界面。 (3) 编写各函数实现系统的追加、删除、统计、查询等功能。 该同学主要完成系统输出界面和主函数,追加,删除,统计,查询模块的设计。 二、设计任务:1、设计职工信息管理系统的功能框图、流程图; 2、编写该系统的源 程序代码; 3、上机调试; 4、撰写课程设计报告。 三、开发工具:Turbo C 2.0 /Vc+6.0及UCDOS 7.0。 四、进度安排:1、前4天进行总体设计和模块编写与调试。2、后3天进行课程设计报告的撰写和课程设计答辩。 五、主要参考资
4、料: 1 Stephen prata.C primer plus(第五版).北京:人民邮电出版社,2010.4 2 谭浩强.C程序设计(第三版).北京:清华大学出版社,2005.7 3 张磊等.C语言程序设计教程.北京:中国铁道出版社,2007.8 程序基本框架结构图职工信息管理系统按职工号查找按学历查找按姓名查找输出职工信息删除职工信息修改职工信息查找职工信息录入职工信息备注:职工信息包括(姓名、职工号、性别、年龄、学历、工资、地址、电话、职位)修改和删除职工信息时均是输入职工姓名查找C语言程序设计的目的:职工信息管理系统,并且可以实现以下功能:v 系统能够以菜单的方式显示所要选择执行的功能
5、v 程序可以录入职工的信息【职工信息包括(姓名、职工号、性别、年龄、学历、工资、地址、电话、职位)】v 程序可以修改职工的信息v 程序可以删除职工的信息v 程序能够查询到所需要的职工的信息 【查询时可按姓名、学历或职工号查询】v 程序能够输出所录入的所有职工的信息职工信息管理系统详细报告A、 主函数:【程序】#include #include #include /ANSI C标准要求在使用字符串时要包含头文件 string.h结构数组函数声明struct zhigong /定义数据结构变量,下面九个成员列表char name30; /姓名char zhigonghao30; /职工号char
6、xingbie30; /性别char age30; /年龄char xueli30; /学历char zhiwei30; /职位char gongzi30; /工资char tel30; /电话char dizhi100; /地址x;FILE *fp; /定义一个指向文件型数据的指针变量 /(定义fp是一个指向FILE类型数据的指针变量,可以使fp某一个一个文件的文件信息区,通过该文件信息区中的信息就能够访问该文件)void zhujiemian(); /查询系统的主界面void tianjia(); /添加职工信息void chazhao(); /查找职工信息void xiugai(); /
7、修改职工信息void shanchu(); /删除职工信息void shuchu(); /输出职工信息void nameway(); /按姓名查询职工信息void xueliway(); /按学历查询职工信息void zhigonghaoway(); /按职工号查询职工信息int main(void)int m;while (1)zhujiemian();scanf (%d,&m);if (m=0&m=1&a=3)switch (a)case 1:nameway();break;case 2:xueliway();break;case 3:zhigonghaoway();break;print
8、f(您所选择的该操作执行完毕n);elseprintf(tt对不起,您的输入有误n);函数截图:在查找职工信息是您可以用姓名、学历或职工号进行查询,按照提示进行您的操作,下面我渐进性详细说明 上面是所有员工的信息,查询方式有以下三种按姓名查找:【程序】void nameway()int k=0;char nam30;/声明要查找的职工姓名printf(请输入您要查找的职工的姓名:);scanf (%s,nam);if (fp=fopen(filel,rb)=NULL)/打开输出文件,并使fp指向此文件printf(该文件不能够被打开n);/如果打开时出错,就输出“打不开”的信息exit (0)
9、;/终止程序while(!feof(fp)fscanf(fp,%s%s%s%s%s%s%s%s%s,x.name,x.zhigonghao,x.xingbie,x.age,x.xueli,x.zhiwei,x.gongzi,x.tel,x.dizhi);if(strcmp(nam,x.name)=0)printf(已查到此人,期记录为:n);printf(%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15sn,x.name,x.zhigonghao,x.xingbie,x.age,x.xueli,x.zhiwei,x.gongzi,x.tel,x.dizhi);k=
10、1;if(k=0)printf(对不起,没有您想要查找的人!n);fclose (fp);/关闭前面锁打开的文件,避免文件中数据的丢失程序执行结果截图:以上是按姓名查找您所需要的职工的信息 按学历查询:【程序】void xueliway()int b=0;char xuel30;printf(请输入您想要查询的学历:);scanf(%s,xuel);if (fp=fopen(filel,rb)=NULL)/打开输出文件,并使fp指向此文件printf(该文件不能够被打开n);/如果打开时出错,就输出“打不开”的信息exit (0);/终止程序while (!feof(fp)fscanf(fp,
11、%s%s%s%s%s%s%s%s%sn,x.name,x.zhigonghao,x.xingbie,x.age,x.xueli,x.zhiwei,x.gongzi,x.tel,x.dizhi);if(strcmp(xuel,x.xueli)=0)printf(已查到此人,期记录为:n);printf(%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15sn,x.name,x.zhigonghao,x.xingbie,x.age,x.xueli,x.zhiwei,x.gongzi,x.tel,x.dizhi);b=1;if(b)printf(对不起,没有您想要查询的人n
12、);fclose(fp);/关闭前面锁打开的文件,避免文件中数据的丢失以上是按学历查询的结果 按职工号查询:【程序】void zhigonghaoway()int c=0;char zhigongha30;printf(请输入您索要查询的职工的职工号:);scanf(%s,zhigongha);if (fp=fopen(filel,rb)=NULL)/打开输出文件,并使fp指向此文件printf(该文件不能够被打开n);/如果打开时出错,就输出“打不开”的信息exit (0);/终止程序while (!feof(fp)fscanf(fp,%s%s%s%s%s%s%s%s%s,x.name,x.
13、zhigonghao,x.xingbie,x.age,x.xueli,x.zhiwei,x.gongzi,x.tel,x.dizhi);if(strcmp(zhigongha,x.zhigonghao)=0)printf(已查到此人,期记录为:n);printf(%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15sn,x.name,x.zhigonghao,x.xingbie,x.age,x.xueli,x.zhiwei,x.gongzi,x.tel,x.dizhi);c=1;if(c)printf(对不起,没有您想要查找的人!n);fclose (fp);/关闭前
14、面锁打开的文件,避免文件中数据的丢失E、修改职工信息:【程序】void xiugai()int k=0;long a;char namekey30;printf(请输入您要修改的职工的姓名:);scanf(%s,namekey);if (fp=fopen(filel,r+)=NULL)/打开输出文件,并使fp指向此文件printf(该文件不能够被打开n);/如果打开时出错,就输出“打不开”的信息exit (0);/终止程序while (!feof(fp)a=ftell(fp);fscanf(fp,%s%s%s%s%s%s%s%s%sn,x.name,x.zhigonghao,x.xingbie
15、,x.age,x.xueli,x.zhiwei,x.gongzi,x.tel,x.dizhi);if(!strcmp(namekey,x.name)k=1;break;if(k)printf(已查到,期记录为:n);printf(%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15sn,x.name,x.zhigonghao,x.xingbie,x.age,x.xueli,x.zhiwei,x.gongzi,x.tel,x.dizhi);printf(请输入信息(按姓名、职工号、性别、年龄、学历、职位、工资、电话、地址的顺序输入):n);scanf(%s%s%s%s%
16、s%s%s%s%s,x.name,x.zhigonghao,x.xingbie,x.age,x.xueli,x.zhiwei,x.gongzi,x.tel,x.dizhi);fseek(fp,a,0);fprintf(fp,%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15sn,x.name,x.zhigonghao,x.xingbie,x.age,x.xueli,x.zhiwei,x.gongzi,x.tel,x.dizhi);elseprintf(对不起,没有查到此人,无法进行修改n);fclose(fp);/关闭前面锁打开的文件,避免文件中数据的丢失程序之执行
17、结果截图:12以上是程序执行前后的职工信息的修改结果,您如果还想修改其他的职工的信息,只需进行如同以上的操作即可 F、删除职工的信息:【程序】void shanchu()int m,k=0;long a;char namekey30;printf(请输入您要删除的职工的姓名:);scanf(%s,namekey);if (fp=fopen(filel,r+)=NULL)/打开输出文件,并使fp指向此文件printf(该文件不能被打开n);/如果打开时出错,就输出“打不开”的信息exit (0);/终止程序while (!feof(fp)a=ftell(fp);fscanf(fp,%s%s%s%
18、s%s%s%s%s%sn,x.name,x.zhigonghao,x.xingbie,x.age,x.xueli,x.zhiwei,x.gongzi,x.tel,x.dizhi);if(strcmp(namekey,x.name)=0)k=1;break;if(k=1)printf (已查到您所需要的信息,其记录为:n);printf(%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15sn,x.name,x.zhigonghao,x.xingbie,x.age,x.xueli,x.zhiwei,x.gongzi,x.tel,x.dizhi);printf(确实要删除
19、,请按1;如果不删除,请按0n);scanf(%d,&m);if(m=1)fseek(fp,a,0);fprintf(fp,%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15sn,);elseprintf(对不起,没有查到此人n);fclose (fp);/关闭前面锁打开的文件,避免文件中数据的丢失上面是删除前的结果,下面我将删除欣欣、伟伟的职工信息下面是删除后的结果G、输出职工的信息:【程序】void shuchu()if(fp=fopen(filel,r)=NULL)/打开输出文件,并使fp指向此文件printf(n该文件不能被打开n);/如果打开时出错,就输出
20、“打不开”的信息exit (0);/终止程序printf(n%20sn,职工信息管理系统);while (!feof(fp)fscanf(fp,%s%s%s%s%s%s%s%s%sn,x.name,x.zhigonghao,x.xingbie,x.age,x.xueli,x.zhiwei,x.gongzi,x.tel,x.dizhi);printf(%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15sn,x.name,x.zhigonghao,x.xingbie,x.age,x.xueli,x.zhiwei,x.gongzi,x.tel,x.dizhi);fclos
21、e (fp);/关闭前面锁打开的文件,避免文件中数据的丢失下面是输出结果的屏慕截图:本程序的运行过程到此已全部执行完毕 下面是该程序的其它介绍:在输入的数大于5并且小于0时的结果:输入不存在的职工姓名时:在该程序中我还引入了文件的使用,如下:FILE *fp; /定义一个指向文件的指针变量fp用fopen函数打开数据文件:fopen(文件名,使用文件方式);用fclose函数关闭数据文件:fclose(文件指针);使用文件的方式文件的使用方式含义如果指针指定的文件不存在“rb+”(读写)为了读和写,打开一个二进制文件出错“wb”(只写)为输出数据,打开一个二进制文件出错“rb”(只读)为输出数
22、据,打开一个二进制文件出错“w”(只写)为了输出数据,打开一个文本文件新建文件“r”(只读)为输入数据,打开一个已存在的文本文件出错“wb+”(读写)为了读和写,建立新的二进制文件建立新文件“r+”(读写)为了读和写,打开一个新文本文件出错程序清单#include #include #include /ANSI C标准要求在使用字符串时要包含头文件 string.hstruct zhigong /定义数据结构变量,下面九个成员列表char name30; /姓名char zhigonghao30; /职工号char xingbie30; /性别char age30; /年龄char xueli
23、30; /学历char zhiwei30; /职位char gongzi30; /工资char tel30; /电话char dizhi100; /地址x;FILE *fp; /定义一个指向文件型数据的指针变量 /(定义fp是一个指向FILE类型数据的指针变量,可以使fp某一个一个文件的文件信息区,通过该文件信息区中的信息就能够访问该文件)void zhujiemian(); /查询系统的主界面void tianjia(); /添加职工信息void chazhao(); /查找职工信息void xiugai(); /修改职工信息void shanchu(); /删除职工信息void shuch
24、u(); /输出职工信息void nameway(); /按姓名查询职工信息void xueliway(); /按学历查询职工信息void zhigonghaoway(); /按职工号查询职工信息int main(void)int m;while (1)zhujiemian();scanf (%d,&m);if (m=0&m=1&a=3)switch (a)case 1:nameway();break;case 2:xueliway();break;case 3:zhigonghaoway();break;printf(您所选择的该操作执行完毕n);elseprintf(tt对不起,您的输入有
25、误n);void nameway()int k=0;char nam30;/声明要查找的职工姓名printf(请输入您要查找的职工的姓名:);scanf (%s,nam);if (fp=fopen(filel,rb)=NULL)/打开输出文件,并使fp指向此文件printf(该文件不能够被打开n);/如果打开时出错,就输出“打不开”的信息exit (0);/终止程序while(!feof(fp)fscanf(fp,%s%s%s%s%s%s%s%s%s,x.name,x.zhigonghao,x.xingbie,x.age,x.xueli,x.zhiwei,x.gongzi,x.tel,x.di
26、zhi);if(strcmp(nam,x.name)=0)printf(已查到此人,期记录为:n);printf(%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15sn,x.name,x.zhigonghao,x.xingbie,x.age,x.xueli,x.zhiwei,x.gongzi,x.tel,x.dizhi);k=1;if(k=0)printf(对不起,没有您想要查找的人!n);fclose (fp);/关闭前面锁打开的文件,避免文件中数据的丢失void zhigonghaoway()int c=0;char zhigongha30;printf(请输入
27、您索要查询的职工的职工号:);scanf(%s,zhigongha);if (fp=fopen(filel,rb)=NULL)/打开输出文件,并使fp指向此文件printf(该文件不能够被打开n);/如果打开时出错,就输出“打不开”的信息exit (0);/终止程序while (!feof(fp)fscanf(fp,%s%s%s%s%s%s%s%s%s,x.name,x.zhigonghao,x.xingbie,x.age,x.xueli,x.zhiwei,x.gongzi,x.tel,x.dizhi);if(strcmp(zhigongha,x.zhigonghao)=0)printf(已查
28、到此人,期记录为:n);printf(%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15sn,x.name,x.zhigonghao,x.xingbie,x.age,x.xueli,x.zhiwei,x.gongzi,x.tel,x.dizhi);c=1;if(c)printf(对不起,没有您想要查找的人!n);fclose (fp);/关闭前面锁打开的文件,避免文件中数据的丢失void xueliway()int b=0;char xuel30;printf(请输入您想要查询的学历:);scanf(%s,xuel);if (fp=fopen(filel,rb)=N
29、ULL)/打开输出文件,并使fp指向此文件printf(该文件不能够被打开n);/如果打开时出错,就输出“打不开”的信息exit (0);/终止程序while (!feof(fp)fscanf(fp,%s%s%s%s%s%s%s%s%sn,x.name,x.zhigonghao,x.xingbie,x.age,x.xueli,x.zhiwei,x.gongzi,x.tel,x.dizhi);if(strcmp(xuel,x.xueli)=0)printf(已查到此人,期记录为:n);printf(%-10s%-8s%-5s%-5s%-10s%-8s%-8s%-10s%-15sn,x.name,x.zhigonghao,x.xingbie,x.age,x.xueli,x.zhiwei,x.gongzi,x.te
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100