




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、西安文理学院信息工程学院软件编程课程设计报告设计题目: 职工信息管理系统设计 学生学号: 0204140140 专业班级: 物联网工程(1)班 学生姓名: 郑桂桂 学生成绩: 指导教师: 李立 课题工作时间: 2015-11-25 至 2015-12-9 信息工程学院软件编程课程设计任务书学生姓名郑桂桂学号0204140140专业班级物联网工程(1)班设计题目职工信息管理系统主要任务及设计要求:设计一个职工信息管理系统。职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。使之能提供以下功能: 1、系统以菜单方式工作 2、职工信息录入功能(职工信息用文件保存)输入 3
2、、职工信息浏览功能输出 4、职工信息查询功能算法 查询方式:(1)按学历查询(2)按职工号查询 5、职工信息删除功能、 6、职工信息修改功能指导教师: 日 期:2015年11月25日目 录1. 概述11.1课题背景11.2系统功能11.3设计要求 12. 概要设计 22.1系统功能模块22.2模块流程图33. 详细设计53.1 程序中使用的数据结构53.2 函数详解54. 设计结果与分析 8总结与体会14参考文献15附录:主要程序代码16第一章 概述1.1 课题背景软件编程课程设计的要求是培养学生综合运用C语言的重要途径,是主要的实践性教学环节之一,运用所学课程的知识,结合实际应用设计而进行的
3、一次综合分析设计能力的训练。并且管理信息系统在各行各业发挥着越来越重要的作用。但在职工信息的管理中,避免了手工操作而带来的一些不必要的问题。通过编写一个职工管理系统的C语言程序,培养学生在本课程范围内,初步掌握解决实际应用问题时所应具有的查阅资料、综合运用所学知识、掌握C语言程序基本技巧的能力,为软件编程设计及今后从事专业工作打下基础。1.2 题目要求 设计一个职工信息管理系统。职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。使之能提供以下功能: 1、系统以菜单方式工作 2、职工信息录入功能(职工信息用文件保存)输入 3、职工信息浏览功能输出 4、职工信息查询功
4、能算法 查询方式(1)按学历查询(2)按职工号查询 5、职工信息删除功能 6、职工信息修改功能 1.3 设计要求 根据题目要求,应当把职工信息用结构体形式输入,然后把职工信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;在程序中需实现职工信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时达到所要目的。信息以文件形式保存。 第二章 概要设计2.1系统功能模块 职工信息管理系统设计要求包括2.1.1菜单函数:设计一个菜单界面,调用各个功能函数,操作界面整齐美观便捷 2.1.2输入记录:将每一个职工的职工号、
5、姓名性别、年龄、工资、地址、联系方式的数据作为一个记录,存入数据文件。选择是回到菜单列表还是退出系统。2.1.3浏览记录:将之前录入的职工信息全部显示出来,再次选择回到菜单还是退出系统。2.1.4查询记录:查询符合用户提供的条件的职工信息。可选择用两种方式分别查询,按职工号查询,输入一个职工号,输出为此职工的全部信息。按学历查询,输入一个学历后。输出符合此学历的职工的所有信息。选择回到菜单还是退出系统。2.1.5删除记录:先显示出之前录入的全部职工信息,输入打算删除的职工姓名,系统显示出此职工的信息,再次选择是否删除,同意则继续删除,不同意则返回菜单。如果输入的姓名不是之前录入的职工姓名,系统
6、会提示查无此人。2.1.6修改记录:先显示出所有之前录入的职工信息,输入打算修改的职工姓名,系统输出此职工的全部原始信息,选择是否修改此人信息,若修改则将此人信息再次输入,替换掉之前的信息,选择是否继续修改此人。2.1.7退出系统: 选择退出职工管理系统。2.2模块流程图2.2.1总体流程图开始 菜单根据菜单输入选择操作1录入职工信息2浏览职工信息4删除职工信息6退出系统5修改职工信息3查询职工信息 保存 函数是否退出系统结束图2-1总体流程图2.2.2功能结构简图职 工信 息管 理系 统信 息修 改信 息删 除信 息查 询信 息录 入信 息浏 览显示录入的所有职工的所有信息分条输入职工的职工
7、号、姓名、性别、年龄、学历、工资、住址、电话等信息输入想要删除的职工的姓名,显示出此职工的原始信息确定是否删除输入要修改的职工的姓名,显示原始信息,确认是否修改按学历查询,输入一个学历,显示出所有此学历的职工的所有信息按职工号查询,输入一个职工号,显示出此职工的全部信息图2-2功能结构简图第三章 详细设计3.1程序中使用的数据结构 为了方便使用结构,此系统结构均为全局类型定义 struct employee /定义一个职工信息结构体 int num; /定义职工号为整型 char name20;/ 定义姓名为字符数组 char sex; /定义性别为字符型 int age; /定义年龄为整型
8、char xueli30;/ 定义学历为字符数组 int wage; /定义工资为整型 char addr30;/ 定义地址为字符数组 char tel20; /定义电话为字符数组 em100;/定义一个结构体3.2函数列表3.2.1总体定义函数 为实现本系统的各项功能,需定义函数如下:void menu(); /菜单选项void input(); /录入void save(int);/保存 void display();/浏览void del();/删除 void search(); /查找void search_num(); /按姓名查询void search_xueli(); /按学历查
9、询 void modify(); /修改3.2.2各函数的实现(1)菜单函数运用输出设计一个菜单界面,界面美观整齐void menu() /菜单函数 printf(" *欢迎您进入职工信息管理系统*n"); printf(" * 1.录入职工信息"); printf(" 2.浏览职工信息 *n"); printf(" * 3.查询职工信息"); printf(" 4.删除职工信息 *n"); printf(" * 5.修改职工信息"); printf(" 6.正常退
10、出系统 *n"); printf(" *n"); (2)录入函数用for循环语句限制出每次录入的职工人数,方便快捷,省去了每录入一个人就要选择一下的步骤。运用输出显示出录入的界面,再通过输入的数据建立职工信息。(详情见主要程序代码) (3)保存函数将输入的信息能以文件形式保存,将内存中职工的信息输出到磁盘文件中void save(int m)/保存文件函数 int i; FILE*fp; if (fp=fopen("employee_list","wb")=NULL) printf ("cannot open fi
11、len"); exit(0); for (i=0;i<m;i+) /将内存中职工的信息输出到磁盘文件中 if (fwrite(&emi,sizeof(struct employee),1,fp)!=1) printf("file write errorn"); fclose(fp); int load()/导入函数 FILE*fp; int i=0; if(fp=fopen("employee_list","rb")=NULL) printf ("cannot open filen"); e
12、xit(0); else do fread(&emi,sizeof(struct employee),1,fp); i+; while(feof(fp)=0); fclose(fp); /(文件关闭函数)关闭一个流 return(i-1); (4) 浏览函数将所有的职工信息输出,用再到for语句,运用输出使输出信息的界面整齐美观void display() /浏览函数 int i; int m=load(); printf("n职工号t姓名t性别t年龄t学历t工资t住址t电话n"); for(i=0;i<m;i+) /m为输入部分的职工人数printf(&qu
13、ot;n%dt%st%ct%dt%st%dt%st%sn",emi.num,,emi.sex,emi.age,emi.xueli,emi.wage,emi.addr,emi.tel);(5) 查询函数查询有两种方式,一种是按职工号查询,一种是按学历查询,选择查询的方式可以运用switch(grade)case 1:; case 2:; case;语句可多分枝选择按1:职工号查询2:学历查询3:返回主菜单,在switch语句前添加一个ifelse语句用来当纠错提醒,如果输入的选择数字不是1、2、3,则系统提示“输入有误,请重新输入”运用输出将查询到职工信息输出,界面美观
14、整齐。(具体代码太长,见主要程序代码)(6) 删除函数先调用浏览函数显示出所有职工的所有信息,输入想要删除的职工的姓名,用if(strcmps比较字符串)else语句和for循环语句在所有录入的职工信息中找到符合的姓名并输出此人的所有信息,运用if条件语句选择是否确定删除(详情见主要程序代码)(7) 修改函数定义变量数据类型与全局变量相同,先调用浏览函数显示所有的职工信息,输入想修改的职工姓名,if(strcmp( )语句在所有职工找到符合的姓名,显示出此职工的所有信息,if语句选择是否确定修改,是则重新输入职工信息,运用字符串复制,赋值等语句达到修改的目的,输入完毕后调用浏览函数将所有职工信
15、息显示出来,用一个switch语句选择是否继续修改,继续则调用修改函数。(详情见主要程序代码)第四章 设计结果及分析(设计结果运行)4.1菜单界面4-1系统主界面4.2录入界面4-2-1录入界面4-2-2录入完毕界面4.3浏览界面4-3浏览界面4.4查询界面4-4-1按职工号查询界面4-4-2按学历查询界面4.5删除界面4-5-1删除前先浏览界面4-5-2确认删除界面4-5-3删除后浏览界面4.6修改界面4-6-1修改选择界面4-6-2修改前先浏览界面4-6-3修改信息输入界面总结与体会课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,两周的软件编程课
16、程设计结束了。而在运用C语言编程的过程中,真是既有快乐又有烦恼,回想这两周的课程设计,至今我仍感慨良多。最初当听说我们会有一个特别难的课程设计必须要做的时候,我感到很担忧,我一直觉得C语言是一门非常难学的课程,我对自己完成一个系统的软件设计并没有太大信心,但又必须做,硬着头皮拿到题目到完成整个编程,真的让我有巨大的感慨,两个星期除过我们正常上课其实也没有太多时间,每天都感到时间紧张,我们要查找各种资料和请教有做过课程设计的学姐,或者请教指导老师。一边后悔自己当初没有把C语言学的顺手拈来,一边在电脑前一遍遍的不厌其烦的敲代码,睡觉的时候满脑袋都还是各种语法、程序什么的,两个周末都坐在电脑前,一坐
17、就是一整天,刚开始真的是头晕眼花,后来随着我不断的学习,一个越来越完整的程序慢慢呈现,自己也更有动力,更有信心,同时感受到学习到好多知识的快乐。在整整两个星期的日子里,从理论到实践,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论和知识是远远不够的,只有把所学的理论知识与实际相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考能力。在设计的过程中遇到的问题,这毕竟是我第一次做课程设计,难免会遇到各种各样的问题,同时在设计的过程中发现自己的不足之处
18、,对以前所学的知识理解得不够深刻,掌握得不够牢固,比如说结构体、链表通过这次课程设计之后,一定把以前所学过的知识从新温故。这次课设终于顺利完成了,做完这个课程设计,我的自信提高了,我也会写程序了;尽管对于有些人这种程序会很简单,但对于我来说已经不容易了。这次体验为以后的学习计算机的我增强了信心。很感谢这次的课程设计,它使我更加地体会到多看专业书的重要性,以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机,只有掌握了一定量的计算机专业知识才能得心应手地解决诸多问题;另外,在做任何事倒要有耐心,不要一遇到困难就放弃,每一次敲代码都是会有收获的,每一个程序猿都一定是坚强的执着的。同时,对
19、给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!参考文献:1谭浩强编著C程序设计(第四版) 北京:清华大学出版社2谭浩强编著C程序设计题解与上机指导(第三版)北京:清华大学出版社3甘玲等解析C程序设计 北京:清华大学出版社附录:主要程序代码 #include <stdio.h> #include <windows.h> #include <string.h> #define N 100 struct employee /结构体定义 int num; /定义职工号为整型 char name20;/ 字符数组定义姓名为 char sex; /定义性别为字符
20、型 int age; /定义年龄为整型 char xueli30;/ 定义学历为字符数组 int wage; /定义工资为整型 char addr30;/ 定义地址为字符数组 char tel20; /定义电话为字符数组em100;/定义一个结构体 void menu();/声明函数菜单函数void in();/声明信息录入函数void save(int);/声明信息保存函数void display();/声明信息浏览函数void del();/声明信息删除函数void search();/声明信息查询函数void search_num();/声明按职工号查询函数void search_xue
21、li();/声明按学历查询函数void modify();/声明修改函数void main() menu(); /调用菜单函数 int n,f; char a; do printf("请选择你需要操作的步骤(1-6):n"); scanf("%d",&n); if(n>=1&&n<=7) f=1;break; else f=0;printf("您输入有误,请重新选择!");/if.else条件运算 while(f=0);/do 语句 while(表达式):实现循环while(f=1) switch(
22、n) case 1:printf(" *输入职工信息*n");printf("n");in();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;
23、 case 5:printf(" *修改职工信息*n");printf("n");modify();break; case 6:exit(0);break; default :break; getchar();/从stdio流中读取字符printf("n"); printf("是否继续进行(y or n):n"); scanf("%c",&a); if(a='y') f=1; /system("cls"); /清屏 menu(); /调用菜单函数 pr
24、intf("请再次选择你需要操作的步骤(1-6):n"); scanf("%d",&n); printf("n"); else exit(0);/exit(0)表示正常退出 void menu() /菜单函数 printf(" *欢迎您进入职工信息管理系统*n"); printf(" * 1.录入职工信息"); printf(" 2.浏览职工信息 *n"); printf(" * 3.查询职工信息"); printf(" 4.删除职工信息
25、 *n"); printf(" * 5.修改职工信息"); printf(" 6.正常退出系统 *n"); printf(" *n"); printf("n"); printf("n"); void in() /录入函数/ int i,m; printf("请输入需要创建信息的职工人数(1-100):n"); scanf("%d",&m); for (i=0;i<m;i+) /for循环语句:for(循环变量赋初值;循环条件;循环变
26、量增值) printf("请输入职工号*: ");scanf("%d",&emi.num); printf("请输入姓名*: ");scanf("%s",); getchar();printf("请输入性别(a-女/b-男)*: ");scanf("%c",&emi.sex); printf("请输入年龄*: ");scanf("%d",&emi.age); printf("请输入学历*
27、: ");scanf("%s",emi.xueli); printf("请输入工资*: ");scanf("%d",&emi.wage); printf("请输入住址*: ");scanf("%s",emi.addr); printf("请输入电话*: ");scanf("%s",emi.tel); printf("n"); printf("n创建完毕!n"); save(m); void save
28、(int m)/保存文件函数 int i; FILE*fp; if (fp=fopen("employee_list","wb")=NULL) printf ("cannot open filen"); exit(0); for (i=0;i<m;i+) /将内存中职工的信息输出到磁盘文件中 if (fwrite(&emi,sizeof(struct employee),1,fp)!=1) printf("file write errorn"); fclose(fp); int load()/导入函数
29、 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("
30、n职工号t姓名t性别t年龄t学历t工资t住址t电话n"); for(i=0;i<m;i+) /m为输入部分的职工人数 printf("n%dt%st%ct%dt%st%dt%st%sn",emi.num,,emi.sex,emi.age,emi.xueli,emi.wage,emi.addr,emi.tel);void del() /删除函数 int m=load(); int i,j,n,flag; char name20; printf("n 原来的职工信息:n"); display(); printf("n
31、"); printf("请输入要删除的职工的姓名:n"); scanf("%s",name); for(flag=1,i=0;flag&&i<m;i+) if(strcmp(,name)=0)/strcmps是比较字符串 printf("n已找到此人,原始记录为:n"); printf("n职工号t姓名t性别t年龄t学历t工资t住址t电话n"); printf("n%dt%st%ct%dt%st%dt%st%sn",emi.num,
32、,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;j<m-1;j+) strcpy(,emj+1.name); emj.num=emj+1.num; emj.sex=emj+1.sex; emj.age=emj+1.age; strcpy(emj.xueli,emj+1.xueli); emj.wage
33、=emj+1.wage; strcpy(emj.addr,emj+1.addr); strcpy(emj.tel,emj+1.tel); flag=0; if(!flag) m=m-1; else printf("n对不起,查无此人!n"); printf("n 浏览删除后的所有职工信息:n"); save(m); /调用保存函数 display(); /调用浏览函数 void search()/查询函数 int t,flag; do printf("n按职工号查询请按1; 按学历查询请按2; 退回主菜单主函数请按3;n"); sca
34、nf("%d",&t); if(t>=1&&t<=3) 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:main();break; default:bre
35、ak; void search_num()/1.按职工号查询 int num; int i,t,g=0; int m=load(); printf("请输入要查找的职工号:n"); scanf("%d",&num); for(i=0;i<m;i+) if(num=emi.num) g+; printf("n已找到,其记录为:n");printf("n职工号t姓名t性别t年龄t学历t工资t住址t电话n"); printf("n%dt%st%ct%dt%st%dt%st%sn",emi
36、.num,,emi.sex,emi.age,emi.xueli,emi.wage,emi.addr,emi.tel); if(g=0) 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()/2.按学历查询 char
37、xueli30; int i,t; int m=load(); printf("请输入要查找的学历:n"); scanf("%s",xueli); for(i=0;i<m;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%sn",emi.num,,emi.sex,emi.ag
38、e,emi.xueli,emi.wage,emi.addr,emi.tel); 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 modify() /修改函数 int num; char name20; char sex; int age; char xueli30; int wage; char addr3; char tel20; int i,n,t,flag; int m=load(); printf("n 原来的职工信息:n"); display(); printf("n"); printf("请输入要修改的职工的姓名:n"); scanf("%s",name)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汽修一级考试题库及答案
- 中医病因考试题目及答案
- 2025年广州中小学教师心理健康B证班结业考试题目及答案
- 检验技术员考试题及答案
- 科学数学考试卷子及答案
- 中国现代史考试题及答案
- 农民专业合作社与土地承包合同
- 规范税收缴纳承诺书8篇范文
- 合同管理标准化文件模板汇编
- 人员面试笔试题库及答案
- 【大型集装箱船舶港口断缆事故预防应急处理及案例探析7500字(论文)】
- 律师事务所人事管理制度
- 脑梗塞并出血护理查房
- 三对三篮球赛记录表
- 中医基础之五行学说与五脏六腑
- 某水库调度规程完整
- 鲁班锁制作技术
- 画魂空手套无删减全文下载
- 五猖会原文 五猖会
- 主题教育苏轼生平介绍人物经历等PPT模板(内容完整)
- GB/T 12599-2002金属覆盖层锡电镀层技术规范和试验方法
评论
0/150
提交评论