《C语言课程设计-职工信息管理系统(23页).doc》由会员分享,可在线阅读,更多相关《C语言课程设计-职工信息管理系统(23页).doc(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-C语言课程设计-职工信息管理系统-第 20 页内蒙古科技大学本科生课程设计说明书题 目:C语言课程设计 职工信息管理系统学生姓名:学 号:专 业:软件工程班 级:15级1班指导教师:日 期: 2016 年 1 月 4 日内蒙古科技大学课程设计任务书课程名称C语言课程设计设计题目职工信息管理系统指导教师时间2016.1.52016.1.9一、教学要求1. 巩固和加深学生对C语言课程的基本知识的理解和掌握2. 掌握C语言编程和程序调试的基本技能3. 利用C语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力二、设计资料及参数每个学生在教师提供的课程设计
2、题目中任意选择一题,独立完成,题目选定后不可更换。职工信息管理系统设计职工信息包括职工号、姓名、性别、出生年月、学历、职务、工资、住址、电话等(职工号不重复)。试设计一职工信息管理系统,使之能提供以下功能:v 职工信息录入功能(职工信息用文件保存)输入v 职工信息浏览功能 输出v 查询或排序功能:(至少一种查询方式) 算法按工资查询 按学历查询等v 职工信息删除、修改功能(任选项)三、设计要求及成果1. 分析课程设计题目的功能需求(可选用数组或链表实现,可多人(最多3人)协作完成一个题目)2. 写出详细设计说明(至少包括功能实现分析和模块流程图)3. 编写程序代码,调试程序使其能正确运行(代码
3、书写要规范,标示符要见名知意,要有必要的注释,每人至少500行代码,不包括注释和花括号)4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告(请严格按照模板进行排版)四、进度安排第一天 选择课程设计题目,分析课题的要求第二天 编程第三天 编程及调试第四天 写课程设计报告第五天 提交课程设计报告(打印稿及电子稿)五、评分标准1. 根据平时上机考勤、表现和进度,教师将每天点名和检查2. 根据课程设计完成情况,必须有可运行的软件。3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。六、建议参考资料1C语言程序设计,谭浩强,清华大学出版社2C语言程序设计课程设计,刘
4、振安,机械工业出版社目 录内蒙古科技大学课程设计任务书I第一章 需求分析31.1引言31.2任务概述31.3数据描述31.4功能需求31.5性能需求31.6运行需求41.7任务计划4第二章概要设计52.1总体设计52.2数据类型设计(或数据结构设计)52.3接口设计 /函数声明52.4运行界面设计5第三章详细设计73.1输入模块设计73.2输出模块设计73.3查找模块设计73.4排序模块设计73.5保存及读取模块设计7第四章测试分析84.1测试程序执行情况84.2出现的问题和解决的方法8第五章用户手册(可选)95.1使用说明95.2运行说明9第六章课程设计总结10附录:程序代码11参考文献12
5、致谢13第一章 需求分析1.1 引言 随着我国国民经济建设的蓬勃发展和社会主义市场经济体系的迅速完善,各个行业都在积极使用现代化的手段,不断改善服务质量,提高工作效率,这些都在很大程度上给企业提出越来越严峻的挑战,对企业体系无论是在行政职能、企业管理水平以及优质服务上提出更高的要求。因此,开发一套功能完整,设计合理,使用方便的企业职工信息管理系统成为很有必要的事情。1.2 任务概述 根据题目要求,编程一个职工信息管理系统以存放在文件中所以应提供文件的输入,输出,查询等操作。1.3 功能需求1、应提供一个界面来调用各个功能,调用界面和各个功能的操作界面应尽可能清晰美观!2、输入功能:职工信息录入
6、(职工信息用文件保存),可以一次完成若干条记录的输入。3、浏览功能:完成对全部职工信息的显示。4、查找功能:完成按职工的职工号查询职工的相关信息,并显示。 完成按职工的学历查询职工的相关信息,并显示。 完成按职工的电话号码查询职工的相关信息,并显示。5、删除功能:通过输入职工的姓名完成对该名职工的信息进行删除。6、添加功能:完成添加新职工的信息的任务。7、修改功能:通过输入职工的姓名完成对该名职工的信息进行修改。8、退出职工信息管理系统。1.4 运行需求 熟练掌握C语言的基本知识。基本掌握结构化程序设计的基本思路和方法。1.5 任务计划 课程设计时间为两周,分为五个阶段完成:1、 分析设计阶段
7、。在老师的指导下自主学习和钻研问题,明确设计要求,找出现实方法。按照需求分析、总体设计、详细设计几个步骤进行。这一阶段前1-2天完成;2、 编码调试阶段。根据设计分析方案编写C语言代码,然后调试该代码,实现课题要求的功能。这一阶段在3-7天完成;3、 总结报告阶段。总结设计工作,写出课程设计说明书,包括需求分析、总体设计、详细设计、编码、测试的步骤和内容。这一阶段在8-9天完成;第二章 概要设计2.1 总体设计菜单开始根据菜单输入n的值选择程序保存结束是否继续进行 NY YY5添加职工信息6修改职工信息2浏览职工信息3查询职工信息4删除职工信息7退出1录入职工信息2.2 数据类型设计(或数据结
8、构设计)struct employee /定义一个职工信息的结构体 int num; char name10; char sex; int age; char xueli30; int wage; char addr30; char tel20;em100; 2.3 接口设计函数名函数类型函数功能mainvoid主函数menuvoid菜单模块inputvoid输入模块savevoid保存模块displayvoid浏览模块delvoid删除模块addvoid添加模块search_xuelilvoid按职工的的学历查询模块search_wagevoid按职工的的工资查询模块modifyvoid修改
9、模块windows.hexit(0)退出系统模块第三章 详细设计3.1 输入模块设计void input() /*录入函数*/ int i,m; printf(请输入需要创建信息的职工人数n); scanf(%d,&m); for(i=0;im;i+) printf(请输入职工号: ); scanf(%d,&emi.num); printf(请输入姓名: ); scanf(%s,emi.name); getchar(); printf(请输入性别(f-女 m-男): ); scanf(%c,&emi.sex); printf(请输入年龄: ); scanf(%d,&emi.age); prin
10、tf(请输入学历:); 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);3.2 输出模块设计void display() /*浏览函数*/ int i; int m=load(); printf(职工号t姓名tt性别tt年龄 n); for(i=0;im;i+) /*m为输入部分的职工人数*/ printf(n
11、 %dtt%stctt%dtn,emi.num,emi.name,emi.sex,emi.age); printf(n 学历tt工资tt住址tt电话 n); for(i=0;i=1&t=4) flag=1; break; else flag=0; printf(输入有误,请重新输入!); while(flag=0); while(flag=1) switch(t) case 1:printf(按工资查询n); search_wage(); break; case 2:printf(按学历查询n); search_xueli(); break; case 4:main(); break; def
12、ault:break;void search_wage() int wage; int i,t; int m=load(); printf(请输入要查找的工资:n); scanf(%d,&wage); for(i=0;im;i+) if(wage=emi.wage) printf(n已找到此人,其记录为:n); printf( 职工号t姓名tt性别tt年龄 n); printf(n %dtt%st%ctt%dtn,emi.num,emi.name,emi.sex,emi.age); printf(n 学历tt工资tt住址tt电话 n); printf(n %st%dtt%st%sn,emi.x
13、ueli,emi.wage,emi.addr,emi.tel); break; 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 search_xueli() char xueli30; int i,t; int m=load(); printf(请输入要查找的学历:n); scanf(%s,xueli); for(i=0;im;i+) if(str
14、cmp(emi.xueli,xueli)=0) printf(n已找到,其记录为:n); printf( 职工号t姓名tt性别tt年龄 n); printf(n %dtt%st%ctt%dtn,emi.num,emi.name,emi.sex,emi.age); printf(n 学历tt工资tt住址tt电话 n); printf(n %st%dtt%st%sn,emi.xueli,emi.wage,emi.addr,emi.tel); break; if(i=m) printf(n对不起,查无此人n); printf(n); printf(返回查询函数请按1,继续按查询学历请按2n); sc
15、anf(%d,&t); switch(t) case 1:search();break; case 2:break; default :break;3.4 保存及读取模块设计void save(int m) /*保存文件函数*/ int i; FILE*fp; if(fp=fopen(employee_list,wb)=NULL) printf(cannot open filen); exit(0); for(i=0;im;i+) /*将内存中职工的信息输出到磁盘文件中去*/ if(fwrite(&emi,sizeof(struct employee),1,fp)!=1) printf(fil
16、e write errorn); fclose(fp);第四章 测试分析4.1 测试程序执行情况1. 运行程序,进入职工信息管理系统的主菜单: 2.输入数字“1”进行录入职工信息:3. 输入“y”返回主菜单: 4.输入“2”浏览职工信息:5. 输入“y”后继续,输入“3”进行查询职工信息:6. 进入主菜单,输入“4”进行删除职工信息:7. 进入主菜单输入“5”进行添加职工信息:8. 进入主菜单输入“6”进行修改职工信息:9.进入主菜单输入”7”退出职工信息管理系统。第五章 课程设计总结课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能
17、力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。附录:程序代码#include#include#include#define N 100struct employee int num; char name20; char sex; int age; char xueli30; int wage; char addr30; char tel20;em100;void menu();void input();void save(int);void display();void del();vo
18、id add();void search();void search_wage();void search_xueli();void modify();void main() menu(); int n,flag; char a; do printf(请选择你需要操作的步骤(1-7):n); scanf(%d,&n); if(n=1&n=7) flag=1; break; else flag=0; printf(你输入的有误,请重新选择!); while(flag=0); while(flag=1) switch(n) case 1:printf(输入职工信息n); printf(n); in
19、put(); 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(添加职工信息n); printf(n); add(); break; case 6:printf(修改职工信息n); printf(n); modify(); break; case 7:exit(0); break; default
20、: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);void menu() /*菜单函数*/ printf(*欢迎进入职工信息管理系统*n); printf( 1.录入职工信息); printf( 2.浏览职工信息n); printf( 3.查询职工信息); pri
21、ntf( 4.删除职工信息n); printf( 5.添加职工信息); printf( 6.修改职工信息n); printf( 7.退出n); printf(*谢谢使用*n); printf(n); printf(n);void input() /*录入函数*/ int i,m; printf(请输入需要创建信息的职工人数n); scanf(%d,&m); for(i=0;im;i+) printf(请输入职工号: ); scanf(%d,&emi.num); printf(请输入姓名: ); scanf(%s,emi.name); getchar(); printf(请输入性别(f-女 m-
22、男): ); scanf(%c,&emi.sex); printf(请输入年龄: ); scanf(%d,&emi.age); printf(请输入学历:); 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(int m) /*保存文件函数*/ int i; FILE*fp; if(fp=fo
23、pen(employee_list,wb)=NULL) printf(cannot open filen); exit(0); for(i=0;im;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); exit(0);
24、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(职工号t姓名tt性别tt年龄 n); for(i=0;im;i+) /*m为输入部分的职工人数*/ printf(n %dtt%stctt%dtn,emi.num,emi.name,emi.sex,emi.age); printf(n 学历tt工资tt住址tt电话 n); for(i=0;im;i+
25、) /*m为输入部分职工人数*/ printf(n %st%dtt%st%sn,emi.xueli,emi.wage,emi.addr,emi.tel);void del() /*删除函数*/ 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(emi.name,name)=0) printf(n已找到此人,原记录为:n);
26、 printf( 职工号t姓名tt性别tt年龄 n); printf(n %dtt%st%ctt%dtn,emi.num,emi.name,emi.sex,emi.age); printf(n 学历tt工资tt住址tt电话 n); printf(n %st%dtt%st%sn,emi.xueli,emi.wage,emi.addr,emi.tel); printf(n确实要删除此人信息请按1,不删除请按0n); scanf(%d,&n); if(n=1) for(j=i;jm-1;j+) strcpy(emj.name,emj+1.name); emj.num=emj+1.num; emj.s
27、ex=emj+1.sex; emj.age=emj+1.age; strcpy(emj.xueli,emj+1.xueli); emj.wage=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(); /*调用浏览函数*/ printf(n继续删除请按1,不再删除请按0n); scanf(%d,&t);
28、switch(t) case 1:del(); break; case 0: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(emoloee_list,a); printf(请输入想增加的职工数:n); scanf(%d,&n); for(i=m;i=1&t=4) flag=1; break; else flag=0; printf(输入有误,请重新输入!);
29、while(flag=0); while(flag=1) switch(t) case 1:printf(按工资查询n); search_wage(); break; case 2:printf(按学历查询n); search_xueli(); break; case 4:main(); break; default:break;void search_wage() int wage; int i,t; int m=load(); printf(请输入要查找的工资:n); scanf(%d,&wage); for(i=0;im;i+) if(wage=emi.wage) printf(n已找到
30、此人,其记录为:n); printf( 职工号t姓名tt性别tt年龄 n); printf(n %dtt%st%ctt%dtn,emi.num,emi.name,emi.sex,emi.age); printf(n 学历tt工资tt住址tt电话 n); printf(n %st%dtt%st%sn,emi.xueli,emi.wage,emi.addr,emi.tel); break; 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 search_xueli() char xueli30; int i,t; int m=load(); printf(请输入要查找的学历:n); scanf(%s