C语言课程设计报告:职工信息管理系统程序设计
C语言课程设计报告:职工信息管理系统程序设计C语言课程设计报告设计题目:职工信息管理系统程序设计班级:031094-11姓名:舒平学号:20091001905指导老师:邵玉祥课程设计评语 2目 录 31.课程论文题目 42.程序设计思路 43.功能模块图 54.数据结构设计 55.算法设计 66.程序代码 137.程序运行结果 228.编程中遇到的困难及解决方法 259.总结心得及良好建议 2610.致谢 26课程论文题目职工信息管理系统程序设计题目要求职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复) 。试设计一职工信息管理系统,使之能提供以下功能:系统以菜单的方式工作。职工信息录入功能 (职工信息用文件保存) 。职工浏览功能。职工信息查询功能,查询方式可按学历查询或者工号查询。职工信息的删除、修改功能(可选项) 。2.程序设计思路1、设计思路(1)根据题目要求,应该把职工工资信息用结构体形式输入,在定义一个全局变量和文件指针进行整个程序的运行,然后把职工工资信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;(2)在程序中需实现职工工资浏览、查询、统计等功能的操作,所以需要建立相应的功能模块来实现;(3)另外还需要提供键盘式选择菜单实现功能,在运行时达到所要的目的。3.功能模块图5.算法设计1.主函数提供输入、处理和输出部分的函数调用,各功能模块采用菜单方式选择。NY2浏览模块【分析】该模块的功能是浏览职工的全部信息3排序模块NY1 2124查询模块【分析】该模块的功能是根据输入的职工按照工号和学历查找对应的记录,找到以后,可进行继续查找或修改信息的操作。流程图如下:5修改模块【分析】该模块的功能是显示所有职工的信息,考虑到记录较多,建议采用分屏显示。显示完所有记录后,输入要修改的职工的工号,根据工号查到职工的记录,并提示用户修改该记录的哪部分信息,根据用户做的选择修改相应信息。流程图如下:Y6.程序代码#include #define N 50struct workerchar id[50];char name[20];char sex[10];char age[10];char edu[20];char salary[10];char address[20];char tel[20];worker[N];void save int n //保存函数,保存 n个记录FILE *fp;int i;if fp “worker.txt“,“wb“ NULL //以只写方式为输出打开一个二进制文件printf “\nCannot open file\n“ ; for i 0;i n;i++ if fwrite fclose fp ;int load //加载函数FILE *fp;int i;if fp “worker.txt“,“rb“ NULL printf “\nCannot open file\n“ ;return NULL;for i 0;!feof fp ;i++ fread fclose fp ;return i-1 ;void no_ int i,int n //工号输入函数, i表示第 i个职工的信息,n 表示比较到第 n个职工int j,k,w1;dow1 0;printf “工号:“ ;scanf “%s“,worker[i].id ;for j 0;worker[i].id[j]! \0 ;j++ if worker[i].id[j] 0 ||worker[i].id[j] 9 //判断工号是否为数字puts “请重新输入!\n“ ;w1 1;break;if w1! 1 for k 0;k n;k++ //比较到第 N个职工if k! iw1 1;break;while w1 1 ;void int i //输入一个记录的函数no_ i,i ;printf “姓名:“ ;scanf “%s“,worker[i].name ;printf “性别:“ ;scanf “ %s“,printf “年龄:“ ;scanf “%s“,printf “工资:“ ;scanf “%s“,worker[i].salary ;printf “学历:“ ;scanf “%s“,printf “住址:“ ;scanf “%s“,worker[i].address ;printf “电话:“ ;scanf “%s“,worker[i].tel ;void printf_one int i //显示一个记录的函数printf “%10s %10s %5s %5s %8s %6s %10s %10s\n“,worker[i].id,worker[i].name,worker[i].sex,worker[i].age,worker[i].salary,worker[i].edu,worker[i].address,worker[i].tel ;void printf_back //一个任务结束后选择是好似浏览还是返回int k,w;printf “\n\n\tSuccessful^-^.\n\n“ ;printf “接下来做什么?\n\n\t1 .浏览全部\t2 .返回: [ ]\b\b“ ;scanf “%d“,if w 1 browse ;else menu ;modify_data int i,int n //修改函数int c,w1;doputs “\nmodify by \n\n 1 .工号 2 .姓名 3 .性别 4 .年龄 5 .工资 6 .学历 7 .地址 8 .电话 9 .取消“ ;printf “请选择?:[ ]\b\b“ ;scanf “%d“,if c 9||c 1 puts “\nChoice error!please again!“ ;getchar ;while c 9||c 1 ;doswitch c case 1:no_ i,n ;break;case 2:printf “name:“ ;scanf “%s“,worker[i].name ;break;case 3:printf “sex:“ ;scanf “%s“,worker[i].sex ;break;case 4:printf “age:“ ;scanf “%s“,worker[i].age ;break;case 5:printf “salary:“ ;scanf “%s“,worker[i].salary ;break;case 6:printf “edu:“ ;scanf “%s“,worker[i].edu ;break;case 7:printf “address:“ ;scanf “%s“,worker[i].address ;break;case 8:printf “tel:“ ;scanf “%