1、 1XXXXXXX 大 学课 程 设 计 说 明 书名称 计算机语言 C 课程设计 职工信息管理系统设计2011 年 6 月 20 日至 2011 年 6 月 26 日 共 1 周院 系 .班 级 .姓 名 .学 号 .系 主 任 . 教研室主任 .2指 导 教 师 .目 录一、课程设计的目的与要求 31.1 目的 31.2 要求 3二、题目说明 42.1 程序开发背景 42.2 开发工具介绍 4三、总体设计 53.1 总体思想 53.2 软件模块结构图 53.3 系统流程图 63.3.1 主函数 .63.3.2 显示函数 .73.3.3 录入函数 .73.3.4 查询函数 .83.3.5 删
2、除函数 .93.3.6 排序函数 .10四、详细设计和系统实施 114.1 数据结构设计 114.1.1 定义数组 .114.1.2 定义结构体 .114.1.3 函数功能描述 .114.2 界面设计 124.2.1 用户登录界面 .124.2.2 主界面 .134.2.3 显示界面 .154.2.4 录入界面 .164.2.5 信息查询界面 .174.2.6 删除界面 .19五、遇到的问题及解决办法 20六、课程设计总结 21七、参考文献 22附录(源程序代码) 233一、课程设计的目的与要求1.1 目的1.掌握 C 语言编程的基础知识较熟练的编写 C 语言应用程序。2.能够利用所学的基本知
3、识和技能,解决简单的程序设计问题,增强独立完成工作的能力。3.通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。1.2 要求 1.要求利用 C 语言面向过程的编程思想来完成系统的设计; 2.突出 C 语言的函数特征,以多个函数实现每一个子功能; 3.画出功能模块图; 4. 进行简单界面设计,能够实现友好的交互; 5. 具有清晰的程序流程图和数据结构的详细定义; 6. 熟练掌握 C 语言对文件的各种操作。4二、题目说明1.职工信息管理系统设计 , 使之包括职工号、姓名、性别、年龄、学历
4、、工资、住址、电话等(职工号不重复)。2.使这个管理系统具有以下功能:可以使系统以菜单方式工作、能够录入、查询、删除、排序职工的信息。3.可以按学历、按工号查询职工信息。使查询职工信息变得方便、简单。2.1 程序开发背景现在随着社会的进步和人民生活水平的逐渐提升,大学生数量越来越多,相应的所需要处理的的信息也越来越复杂,而凭借人力不可能准确及时地处理所有信息,因此,编写此程序是极为必要的。但由于各个学校的情况不同,所以难以编写一个通用的成绩管理程序。此程序是根据本校情况和老师指导所编写,用以解决教师对学生成绩的添加、修改、删除以及学生对其成绩的查询等工作。2.2 开发工具介绍Visual C+
5、 Visual C+是一个功能强大的可视化软件开发工具。自 1993 年Microsoft 公司推出 Visual C+1.0 后,随着其新版本的不断问世,Visual C+已成为专业程序员进行软件开发的首选工具。 虽然微软公司推出了 Visual C+.NET(Visual C+7.0),但它的应用的很大的局限性,只适用于 Windows 2000,Windows XP 和 Windows NT4.0。所以实际中,更多的是以 Visual C+6.0 为平台。 Visual C+6.0 不仅是一个 C+编译器,而且是一个基于 Windows 操作系统的可视化集成开发环境。 Visual C+
6、6.0 由许多组件组成,包括编辑器、调试器以及程序向导 AppWizard、类向导 Class Wizard 等开发工具。 这些组件通过一个名为 Developer Studio 的组件集成为和谐的开发环境。 Visual C+它大概可以分成三个主要的部分: 1 Developer Studio。2 MFC。3 Platform SDK。 15三、总体设计3.1 总体思想本系统主要的设计思想是实现对职工信息的录入、删除、排序、查询等主要功能。职工信息以文件的形式存储。系统的人机接口采用简单的字符界面进行交互。系统的设计方法是结构化设计方法,采用 C 语言进行开发。软件开发平台采用 Visual
7、 C+6.0,主要考虑在 VC 中可以使用中文,用户交互界面设计比较美观清晰。3.2 软件模块结构图根据需求分析结果,职工信息管理系统可以分为显示员工资料、录入员工资料、员工信息查询、删除员工信息、员工信息排序、退出信息系统。如图 3-1 所示。职工信息管理系统显示员工资料员工信息查询删除员工信息员工信息排序退出信息系统 录入员工资料图 3-163.3 系统流程图3.3.1 主函数 开始提示输入用户名、密码密码正确重新登录?退出系统是否否是登录成功员工信息查询删除员工信息录入员工资料员工信息排序退出信息系统显示员工资料退出结束如图 3-2 所示图 3-273.3.2 显示函数display()
8、显示函数打开文件顺序输出返回 homepage()如图 3-3 所示图 3-33.3.3 录入函数input()录入函数创建文件输入信息 关闭文件返回 homepage()如图 3-4 所示图 3-483.3.4 查询函数如图 3-5 所示 find()查询函数打开文件查询条件i = ?i = 1按工号查询 i= 2按学历查询关闭文件返回 homepage()是否图 3-593.3.5 删除函数del()删除函数被删职工工号查询该职工删除该职工返回 homepage()如图 3-6 所示图 3-6103.3.6 排序函数如图 3-7 所示 sort()排序函数打开文件排序条件i = ?i =
9、1i= 1按工号排序i= 2按工资排序关闭文件返回 homepage()是否图 3-711四、详细设计和系统实施 4.1 数据结构设计4.1.1 定义数组定义一维数组 struct worker work50;用于定义员工的总人数,当员工总人数超过50 后便不能再录入员工资料。4.1.2 定义结构体结构体 struct worker 用于存放存放员工的资料,包括员工的基本信息:工号,姓名,年龄,学历,工资,住址,电话号码。struct workerint num; 工号char name15; 名字char xingbie; 性别int age; 年龄char exp6; 学历int wage
10、; 工资char address20; 住址char tel12; 电话号码;int count=0; 当前工人个数int sort_type=0; 当前排序类型4.1.3 函数功能描述函数主界面:void homepage();显示职工成绩信息:void display();录入职工信息信息:void input();删除职工信息:void del();查询职工信息:void find();12排序职工信息:void sort();用户等待函数:void waiting();退出系统函数: void quit();4.2 界面设计4.2.1 用户登录界面此模块用于欢迎界面,同时要求用户输入用
11、户名和密码,只有当两者都正确时,才能进入到系统,当有三次错误,系统就会自动退出,如图 4-1 所示。图 4-1代码实现:void main() int i=0,k=0;char username15,pwd6;for(i=0;i#include#include#includevoid homepage(); /主界面void display(); /显示全部信息void input(); /录入 插入void find();void del(); /删除记录void sort(); /排序void waiting(); /等待界面void quit(); /退出界面struct workeri
12、nt num; /工号char name15; /名字char xingbie; /性别int age; /年龄char exp6; /学历int wage; /工资char address20;/住址char tel12; /电话号码;int count=0; /当前工人个数int sort_type=0; /当前排序类型struct worker work50;void main() int i=0,k=0;char username15,pwd6;24system(“color 3f“);printf(“nn“);printf(“ tn“);printf(“ t*n“);printf(“
13、 t*n“);printf(“ t*n“);printf(“ t* *n“);printf(“ t* 欢迎使用职工信息管理系统 *n“);printf(“ t* *n“);printf(“ t* *n“);printf(“ t* 郝佳丽 *n“);printf(“ t* *n“);printf(“ t* 2011.06.20 *n“);printf(“ t* *n“);printf(“ t*n“);printf(“ t*n“);printf(“ t*n“);25printf(“ tn“); for(i=0;i3;i+)printf(“n 请输入用户名:“);gets(username);pri
14、ntf(“n 请输入 6 位密码:“);gets(pwd);if(strcmp(username,“admin“)=0)k=1;for(i=0;i20;i+)printf(“.“);Sleep(100);system(“cls“);homepage();break;elseprintf(“n 用户名或密码无效 请重新输入:n“);continue;if(k=0)printf(“n 连续输入错误 3 次 将退出程序n“);Sleep(2000);quit();void homepage()26char n;printf(“nn“);printf(“tn“);printf(“t*n“);print
15、f(“t* * *n“);printf(“t* 1.显示员工资料 * 2.录入员工资料 *n“);printf(“t* * *n“);printf(“t*n“);printf(“t* * *n“);printf(“t* 3.员工信息查询 * 4.删除员工记录 *n“);printf(“t* * *n“);printf(“t*n“);printf(“t* * *n“);printf(“t* 5.员工信息排序 * 0.退出信息系统 *n“);printf(“t* * *n“);printf(“t*n“);printf(“tn“);27while (n!=1)fflush(stdin);scanf(
16、“%c“,switch(n)case 1:display();break;case 2:if(count50)input();elseprintf(“记录数已满n“);Sleep(2000);system(“cls“);homepage();break;case 3:find();break;case 4:del();break;case 5:sort();break;case 0:quit();break;28default:printf(“n 选项错误n“);void display()int i;char c;system(“cls“);printf(“备注:学历(1=中专,2=大专,3
17、=本科,4=硕士,5=博士,6=其它):nnn“);switch(sort_type)case 0:printf(“tt 未排序:nn“);break;case 1:printf(“tt 按工号排序:nn“);/sort();break;case 2:printf(“tt 按工资排序:nn“);/sort();break;printf(“t 工号t 姓名t 性别t 年龄t 学历t 工资t 住址t 电话n“);if (count=0) printf(“nt 无员工信息!n“);29for(i=0;icount;i+)printf(“t%dt%st%ct%dt%st%dt%st%sn“,worki
18、.num,worki.name,worki.xingbie,worki.age,worki.exp,worki.wage,worki.address,worki.tel);printf(“nn 按任意键返回n“);c=getch();system(“cls“);homepage();void input()int i,numcheck;char c;system (“cls“);doprintf(“工号:n“);scanf(“%d“,numcheck=1;if(workcount.num0)printf(“请输入正整数:n“);for(i=0;icount;i+)if(workcount.nu
19、m=worki.num)numcheck=0;printf(“工号重复,重新输入:n“);30while(!numcheck);printf(“姓名:“);fflush(stdin);scanf(“%s“,workcount.name);fflush(stdin);printf(“性别(F:M):“);scanf(“%c“,printf(“年龄:“);scanf(“%d“,fflush(stdin);printf(“学历(1=中专,2=大专,3=本科,4=硕士,5=博士,6=其它):n“);scanf(“%s“,workcount.exp);printf(“工资:“);scanf(“%d“,printf(“住址:“);scanf(“%s“,workcount.address);printf(“电话:“);scanf(“%s“,workcount.tel);printf(“n 是否继续输入(y/n):n“);doc=getchar();