《语c言课程设计职工信息管理系统设计报告--大学毕设论文.doc》由会员分享,可在线阅读,更多相关《语c言课程设计职工信息管理系统设计报告--大学毕设论文.doc(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、内蒙古科技大学课程设计说明书内蒙古科技大学本科生课程设计说明书题 目:C语言课程设计 职工信息管理系统学生姓名:学 号:专 业:软件工程班 级:软件一班指导教师:日 期: 2016 年 1 月 6 日39内蒙古科技大学课程设计任务书课程名称C语言课程设计设计题目职工信息管理系统指导教师时间2016/1/5 - 2016/1/6一、教学要求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目 录II第一章 需求分析31.1 引言31.2 任务概述31.3 数据描述31.4 功能需求31.5 运行需求4第二章 概要设计42.1 总体设计42.2 数据类型设计(或数据结构设计)42.3 接口设计52.4 运行界面设计6第三章 详细设计73.1 输入模块设计73.2 输出模块设计93.3 查找模块设计93.4 排序模块设计123.5 保存及读取模块设计15第四章 测试分析174.1 测试程序执行情况17第五章 课程设计总结19附录:程序代码20参考文献39致谢39第一章 需求分析1.1 引言近年来,随着工厂规模的不断扩大,职工数量也相应增加
5、,有关职工信息的各种信息量也成倍增加,面对着庞大的信息量,传统的人工方式管理会导致职工信息管理上的混乱,人力物力过度浪费,职工信息管理费用的增加,从而使工厂的负担过重,影响整个工厂的运作和控制管理,因此,必须制定一套合理、有效、规范和实用的职工信息管理系统,对职工进行集中统一的管理。系统开发的总的设计目标是职工信息管理系统的系统化、规范化和自动化,实现对职工信息的集中统一的管理。1.2 任务概述假设需要录入n个职工的职工信息,且该职工信息中包括职工号、姓名、性别、出生年月、学历、职务、工资、住址、电话等。试设计一个职工信息管理系统,有如下功能:1、 录入职工信息2、 职工信息的浏览3、 查询或
6、者排序4、 职工信息的修改5、 职工信息的删除1.3 数据描述职工号姓名性别出生学历职务工资住址电话110刘兰男1997/03/11小学经理8000内科大123456789111刘洪男1995/04/22大学工人2000财大12345678651.4 功能需求根据要求用户需要设计一个关于职工信息管理系统程序,使工厂可以通过管理人员见到那的输入个人信息,便可方便的显示出来,并且进行查询等工作。该程序还要实现以下功能:1、 录入职工信息2、 职工信息的浏览3、 查询或者排序4、 职工信息的修改5、 职工信息的删除1.5 运行需求1.硬件环境目前,我们所开发的系统主要是应用在中小规模的学校内部,因此
7、,一般配置的计算机硬件就可以满足系统需求。考虑到学校规模的扩大和硬件价格的降低,为本系统配置在较优秀的服务器硬件,可以充分发挥本系统性能。处理器:Intel Pentium 4 3.06 GX或更高内存:256M(推荐)硬盘空间:40GB显卡:SVGA显示适配器2.软件环境操作系统:Windows 2000/XP开发软件:Microsoft Visual Studio.NET 2005数据库:Microsoft SQL Server 2005第二章 概要设计2.1 总体设计职工信息管理系统录入职工信息浏览职工信息查询职工信息职工信息排序删除职工信息修改职工信息退出2.2 数据类型设计(或数据结
8、构设计)struct workerlong int num;char name10;char sex5;int year;int month;int day;char xel10;/定义学历char duty10;/定义职务int wage;/定义工资char home15;char phone20;workerNUM;2.3 接口设计 函数名函数格式函数功能InputWorkvoid输入WritetoFilevoid写入OutputWorkvoid输出SearchWorkint查询MendWorkvoid修改DeleteWorkvoid删除SortWorkvoid排序Liuvoid浏览2.4
9、 运行界面设计第三章 详细设计3.1 输入模块设计void IntputWork()system(cls);char z;int j;char c;if(n=0)j=0;elsej=n-1;while(1)printf(请输入第%d职工的工号:,j+1);scanf(%ld,&workerj.num);getchar();printf(请输入职工姓名:);scanf(%s,&workerj.name);getchar();printf(请输入性别:);scanf(%s,&workerj.sex);getchar();printf(请输入出生(年):);scanf(%d,&workerj.yea
10、r);getchar();printf(请输入出生(月):);scanf(%d,&workerj.month);getchar();printf(请输入出生(日):);scanf(%d,&workerj.day);getchar();printf(请输入学历:);scanf(%s,&workerj.xel);getchar();printf(请输入职务:);scanf(%s,&workerj.duty);getchar();printf(请输入工资:);scanf(%d,&workerj.wage);getchar();printf(请输入住址:);scanf(%s,&workerj.home
11、);getchar();printf(请输入联系电话:);scanf(%s,&workerj.phone);getchar();j+;n=j;printf(是否继续录入YorNn);scanf( %c,&c);getchar();if(c=N|c=n)main();3.2 输出模块设计void OutputWork(int j)printf(%10d%10s%10s%5d/%d/%d%10s%10s%10d%20s%20sn,workerj.num,workerj.name,workerj.sex,workerj.year,workerj.month,workerj.day,workerj.x
12、el,workerj.duty,workerj.wage,workerj.home,workerj.phone);3.3 查找模块设计int SearchWork()int j;int m;int SearchWage();int SearchXel();while(4)printf(请输入查找方式:n);printf(1、按工资查找t);printf(2、按学历查找n);printf(3、退出n);printf(请输入你的选择:);scanf(%d,&m);if(m3)printf(输入错误!);continue;switch(m)case 1:j = SearchWage();return
13、 j;break;case 2:j = SearchXel();return j;break;case 3:main();int SearchWage()system(cls);int wage;int j;printf(请输入你所要查询的工资:);scanf(%ld,&wage);for(j=0;jn;j+)if(workerj.wage = wage)OutputWork(j);break;if(workerj.wage != wage)printf(查无此人n);return -1;else return j;int SearchXel()system(cls);int j;char x
14、el10;printf(请输入你所要查询的职工的学历:);scanf(%s,&xel);for(j=0;jn;j+)if(strcmp(xel,workerj.xel)=0)OutputWork(j);break;if(strcmp(xel,workerj.xel) = 0)printf(查无此人!n);return -1;else return j;3.4 排序模块设计void SortWork()system(cls);int i;void SortSmall();void SortBig();while(6)printf(-n);printf(请选择你所要进行的排序方式:n);print
15、f(1、按从小到大的方式排序t);printf(2、按从大到小的方式排序n);printf(3、退出n);printf(-n);scanf(%d,&i);if(i3)printf(输入错误!);continue;switch(i)case 1:SortSmall();break;case 2:SortBig();break;case 3:main();void SortSmall()char z;int temp;char name10;int j;int i;for(j=0;jn;j+)for(i=j+1;iworkeri.wage)temp = workerj.wage;workerj.w
16、age = workeri.wage;workeri.wage = temp;strcpy(name,workerj.name);strcpy(workerj.name,workeri.name);strcpy(workeri.name,name);for(j=0;jn;j+)printf(%10s%10dn,workerj.name,workerj.wage);printf(是否继续?);scanf(%s,&z);if(z = y|z = Y)main();void SortBig()char z;int temp;char name10;int j;int i;for(j=0;jn;j+)
17、for(i=j+1;in;i+)if(workerj.wageworkeri.wage)temp = workerj.wage;workerj.wage = workeri.wage;workeri.wage = temp;strcpy(name,workerj.name);strcpy(workerj.name,workeri.name);strcpy(workeri.name,name);for(j=0;jn;j+)printf(%10s%10dn,workerj.name,workerj.wage);printf(是否继续?);scanf(%s,&z);if(z = y|z = Y)ma
18、in();3.5 保存及读取模块设计void WritetoFile()FILE *fp;int j;if(fp = fopen(student.txt,w)=NULL)printf(打开文件失败!n);exit(0);for(j=0;jn;j+)fprintf(fp,%10d%10s%10s%5d/%d/%d%10s%10s%10d%20s%20sn,workerj.num,workerj.name,workerj.sex,workerj.year,workerj.month,workerj.day,workerj.xel,workerj.duty,workerj.wage,workerj.
19、home,workerj.phone);fclose(fp);void Liu()FILE *fp; if (fp=fopen(worker.txt,r)=NULL) printf(!n); return; while(!feof(fp)putchar(fgetc(fp);fclose(fp);第四章 测试分析4.1 测试程序执行情况第五章 课程设计总结在这次课程设计中,我学会了自己通过自己的努力,翻阅其他的书籍来完成自己的目标。课程设计中许多东西,都是通过分析他人的程序,来完成自己的。虽然这次课程设计并不完美,但是我还是对于自己的付出而自豪,在课程设计中有一些问题我通过上网调查,才知道,这个
20、函数如何设定,那几个函数如何连接,并且使他们完整的运行下来。不论结局如何,我的课程设计足以让我自豪,还是有点东西需要我添加的,但是以我现在的水平也就只能做到这里了,非常感谢我们的指导老师!我们在课程设计中不仅仅需要填写大量的代码,还需要注意许多的代码文本是否合乎声明及定义。附录:程序代码#include#include#include#define NUM 100void Liu();void IntputWork();void WritetoFile();void OutputWork(int j);int SearchWork();void SortWork();void MendWork
21、();void DeleteWork();int n;/*定义出系统需要量*/struct workerlong int num;char name10;char sex5;int year;int month;int day;char xel10;/定义学历char duty10;/定义职务int wage;/定义工资char home15;char phone20;workerNUM;void main()system(cls);system(COLOR 7f);int t=1;int i;printf(职工信息管理系统n);printf(*n);printf( 设计者: 张延国n);pr
22、intf(*n);printf(* 1、录入职工信息 *n);printf(* 2、浏览职工信息 *n);printf(* 3、查询职工信息 *n);printf(* 4、职工信息排序 *n);printf(* 5、删除职工信息 *n);printf(* 6、修改职工信息 *n);printf(* 7、退出 *n);printf(*n);printf(请输入你所要进行的工作(1-7):);while(t)scanf(%d,&i);getchar();if(i7)printf(t输入错误,请重输:n);continue;switch(i)case 1:IntputWork();break;cas
23、e 2:Liu();break;case 3:SearchWork();break;case 4:SortWork();break;case 5:DeleteWork();break;case 6:MendWork();break;case 7:exit(0);break;void IntputWork()system(cls);int j;char c;if(n=0)j=0;elsej=n-1;while(1)printf(请输入第%d职工的工号:,j+1);scanf(%ld,&workerj.num);getchar();printf(请输入职工姓名:);scanf(%s,&worker
24、j.name);getchar();printf(请输入性别:);scanf(%s,&workerj.sex);getchar();printf(请输入出生(年):);scanf(%d,&workerj.year);getchar();printf(请输入出生(月):);scanf(%d,&workerj.month);getchar();printf(请输入出生(日):);scanf(%d,&workerj.day);getchar();printf(请输入学历:);scanf(%s,&workerj.xel);getchar();printf(请输入职务:);scanf(%s,&worke
25、rj.duty);getchar();printf(请输入工资:);scanf(%d,&workerj.wage);getchar();printf(请输入住址:);scanf(%s,&workerj.home);getchar();printf(请输入联系电话:);scanf(%s,&workerj.phone);getchar();j+;n=j;printf(是否继续录入YorNn);scanf( %c,&c);getchar();if(c=N|c=n)WritetoFile();main();int SearchWork()int j;int m;int SearchWage();int
26、 SearchXel();while(4)printf(请输入查找方式:n);printf(1、按工资查找t);printf(2、按学历查找n);printf(3、退出n);printf(请输入你的选择:);scanf(%d,&m);if(m3)printf(输入错误!);continue;switch(m)case 1:j = SearchWage();printf(是否返回?(如果进行修改,请忽略该提示);return j;break;case 2:j = SearchXel();printf(是否返回?(如果进行修改,请忽略该提示);return j;break;case 3:main(
27、);int SearchWage()system(cls);char c;int wage;int j;printf(请输入你所要查询的工资:);scanf(%ld,&wage);for(j=0;jn;j+)if(workerj.wage = wage)OutputWork(j);break;if(workerj.wage != wage)printf(查无此人n);return -1;else return j;scanf(%s,&c);if(c = Y|c = y)main();int SearchXel()system(cls);char c;int j;char xel10;print
28、f(请输入你所要查询的职工的学历:);scanf(%s,&xel);for(j=0;jn;j+)if(strcmp(xel,workerj.xel)=0)OutputWork(j);break;if(strcmp(xel,workerj.xel) != 0)printf(查无此人!n);return -1;else return j;scanf(%s,&c);if(c = Y|c = y)main();void MendWork()system(cls);char t;int j;int m;while(1)printf(请查询你要修改的员工n:);j=SearchWork();getchar
29、();printf(请输入你所要修改的项目:n);printf(1、职工号n);printf(2、名字n);printf(3、性别n);printf(4、出生(年)n);printf(5、出生(月)n);printf(6、出生(日)n);printf(7、学历n);printf(8、职务n);printf(9、工资n);printf(10、住址n);printf(11、联系电话n);printf(请输入你的选择:);scanf(%d,&m);getchar();if(m11)printf(t输入错误,请重输:n);switch(m)case 1:printf(请输入该职工新的职工号:);sca
30、nf(%ld,&workerj.num);getchar();break;case 2:printf(请输入该职工新的名字:);scanf(%s,&workerj.name);getchar();break;case 3:printf(请输入该职工新的性别:);scanf(%s,&workerj.sex);getchar();break;case 4:printf(请输入该职工新的出生(年):);scanf(%d,&workerj.year);getchar();break;case 5:printf(请输入该职工新的出生(月):);scanf(%d,&workerj.month);getch
31、ar();break;case 6:printf(请输入该职工新的出生(日):);scanf(%d,&workerj.day);getchar();break;case 7:printf(请输入该职工新的学历:);scanf(%s,&workerj.xel);getchar();break;case 8:printf(请输入该职工新的职务:);scanf(%s,&workerj.duty);getchar();break;case 9:printf(请输入该职工新的工资”);scanf(%d,&workerj.wage);getchar();break;case 10:printf(请输入该职
32、工新的住址:);scanf(%s,&workerj.home);getchar();break;case 11:printf(请输入该职工新的联系电话:);scanf(%s,&workerj.phone);getchar();break;printf(该职工修改后的信息是:n);OutputWork(j);printf(是否继续修改?);scanf(%c,&t);if(t = N|t = n)WritetoFile();main();void DeleteWork()system(cls);char z;int floag;int j;int i;long num;printf(请输入你所要删
33、除的学生的学生号:);scanf(%d,&num);getchar();for(j=0;jn;j+)for(i=j+1;i=n;i+)if(num = workerj.num)floag = 1;workerj = workeri;n-;if(floag = 0)printf(该学生未找到!);if(floag = 1)printf(删除成功!n);for(j=0;jn;j+)printf(%10d%10s%10s%5d/%d/%d%10s%10s%10d%20s%20sn,workerj.num,workerj.name,workerj.sex,workerj.year,workerj.mo
34、nth,workerj.day,workerj.xel,workerj.duty,workerj.wage,workerj.home,workerj.phone);printf(是否继续?);scanf(%s,&z);if(z = y|z = Y)WritetoFile();main();void OutputWork(int j)printf(%10d%10s%10s%5d/%d/%d%10s%10s%10d%20s%20sn,workerj.num,workerj.name,workerj.sex,workerj.year,workerj.month,workerj.day,workerj.xel,workerj.duty,workerj.wage,workerj.home,workerj.phone);void SortWork()system(cls);int i;void SortSmall();void SortBig();while(6)printf(-n);printf(请选择你所要进行的排序方式:n);printf(1、按从小到大的方式排序t);printf(2、按从大到小的方式排序n);printf(3、退出n);printf(-n);sca