1、c语言课程设计职工信息管理系统c语言课程设计职工信息管理系统(总34页)XXXXXXX大 学课程设计说明书 名称 计算机语言C课程设计 职工信息管理系统设计 2011 年 6月20 日至 2011年6 月26 日 共1 周院 系 .班 级 .姓 名 .学 号 . 系 主 任 . 教研室主任 . 指导教师 .一、课程设计的目的与要求目的1.掌握C语言编程的基础知识较熟练的编写C语言应用程序。2.能够利用所学的基本知识和技能,解决简单的程序设计问题,增强独立完成工作的能力。3.通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高,进一步培养学生热爱专业的思想,同时对本
2、专业综合素质的提高起一个积极的推动作用。 要求 1.要求利用C语言面向过程的编程思想来完成系统的设计; 2.突出C语言的函数特征,以多个函数实现每一个子功能; 3.画出功能模块图; 4. 进行简单界面设计,能够实现友好的交互; 5. 具有清晰的程序流程图和数据结构的详细定义; 6. 熟练掌握C语言对文件的各种操作。二、题目说明1.职工信息管理系统设计,使之包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。2.使这个管理系统具有以下功能:可以使系统以菜单方式工作、能够录入、查询、删除、排序职工的信息。3.可以按学历、按工号查询职工信息。使查询职工信息变得方便、简单。程序开发
3、背景现在随着社会的进步和人民生活水平的逐渐提升,大学生数量越来越多,相应的所需要处理的的信息也越来越复杂,而凭借人力不可能准确及时地处理所有信息,因此,编写此程序是极为必要的。但由于各个学校的情况不同,所以难以编写一个通用的成绩管理程序。此程序是根据本校情况和老师指导所编写,用以解决教师对学生成绩的添加、修改、删除以及学生对其成绩的查询等工作。开发工具介绍Visual C+ Visual C+是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C+后,随着其新版本的不断问世,Visual C+已成为专业程序员进行软件开发的首选工具。 虽然微软公司推出了Vis
4、ual C+.NET(Visual C+,但它的应用的很大的局限性,只适用于Windows 2000,Windows XP和Windows 。所以实际中,更多的是以Visual C+为平台。 Visual C+不仅是一个C+编译器,而且是一个基于Windows操作系统的可视化集成开发环境。 Visual C+由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导Class Wizard等开发工具。 这些组件通过一个名为Developer Studio的组件集成为和谐的开发环境。 Visual C+它大概可以分成三个主要的部分: 1 Developer Studio。2 MFC
5、。3 Platform SDK。1三、总体设计总体思想 本系统主要的设计思想是实现对职工信息的录入、删除、排序、查询等主要功能。职工信息以文件的形式存储。系统的人机接口采用简单的字符界面进行交互。系统的设计方法是结构化设计方法,采用C语言进行开发。软件开发平台采用Visual C+,主要考虑在VC中可以使用中文,用户交互界面设计比较美观清晰。软件模块结构图根据需求分析结果,职工信息管理系统可以分为显示员工资料、录入员工资料、员工信息查询、删除员工信息、员工信息排序、退出信息系统。如图3-1所示。图3-1系统流程图主函数 显示函数录入函数查询函数删除函数排序函数四、详细设计和系统实施 数据结构设
6、计定义数组定义一维数组struct worker work50;用于定义员工的总人数,当员工总人数超过50后便不能再录入员工资料。定义结构体结构体struct worker用于存放存放员工的资料,包括员工的基本信息:工号,姓名,年龄,学历,工资,住址,电话号码。struct worker int num; 工号 char name15; 名字 char xingbie; 性别 int age; 年龄 char exp6; 学历 int wage; 工资 char address20; 住址 char tel12; 电话号码;int count=0; 当前工人个数int sort_type=0;
7、 当前排序类型函数功能描述函数主界面:void homepage();显示职工成绩信息:void display();录入职工信息信息:void input();删除职工信息:void del();查询职工信息:void find();排序职工信息:void sort();用户等待函数:void waiting();退出系统函数: void quit();界面设计用户登录界面此模块用于欢迎界面,同时要求用户输入用户名和密码,只有当两者都正确时,才能进入到系统,当有三次错误,系统就会自动退出,如图4-1所示。图4-1代码实现:void main() int i=0,k=0; char usern
8、ame15,pwd6; for(i=0;i3;i+) printf(n请输入用户名:); gets(username); printf(n请输入6位密码:); gets(pwd); if(strcmp(username,admin)=0)&(strcmp(pwd,)=0) printf(n您已经成功登录); k=1; for(i=0;i20;i+) printf(.); Sleep(100); system(cls); homepage(); break; else printf(n用户名或密码无效 请重新输入:n); continue; if(k=0) printf(n连续输入错误3次 将退
9、出程序n); Sleep(2000); quit();在此模块中,if(strcmp(username,Admin)=0)&(strcmp(pwd,)=0),用于检测用户名和密码是否正确。for(i=0;i3;i+) printf(n请输入用户名:); gets(username); printf(n请输入6位密码:); gets(pwd);此段代码用于获取账户名和密码并计数是否超过三次,超过三次,则有Sleep(2000);实现退出程序。 主界面此模块主要实现进入主界面和根据用户需要进入相应界面,包括显示界面,录入界面,删除界面,排序界面并可以选择退出,如图4-2所示:图4-2代码实现voi
10、d homepage() char n; while (n!=1)&(n!=2)&(n!=3)&(n!=4)&(n!=5)&(n!=0) printf(n请选择:); fflush(stdin); scanf(%c,&n); switch(n) case 1: display(); break; case 2: if(count50) input(); else printf(记录数已满n); Sleep(2000); system(cls); homepage(); break; 此模块中,switch(n),case()用于判定主界面的选项,根据选项进行设置。其中if(count50)用于
11、限制录入员工的人数,超过50名员工就无法再进行录入,并且直接通过sleep(2000);homepage()回到主界面上。显示界面此模块是用来显示员工的资料信息的,包括工号,姓名,性别,年龄,学历,工资,住址,电话等基本信息,一边管理员能够及时的掌握到所要员工的资料。如图4-3所示。图4-3代码实现void display() int i; char c; printf(备注:学历(1=中专,2=大专,3=本科,4=硕士,5=博士,6=其它):nnn); switch(sort_type) case 0: printf(tt未排序:nn); break; case 1:printf(tt按工号
12、排序:nn); numcheck=1; if(workcount.num0) printf(请输入正整数:n); for(i=0;icount;i+) if(workcount.num=worki.num) numcheck=0; printf(工号重复,重新输入:n); do c=getchar(); if(c=y|c=Y) count+; 此模块中if(workcount.num=worki.num);numcheck=0;很是重要,它判定录入的工号是否重复,重复的话会有重新输入的提示,避免职工信息的重复。当记录数已满时,通过sleep(2000),使之回到主界面,进行其他选项设置。信息查
13、询界面 此模块用于职工信息的查询,共分为两种查询方式,一是按工号查询,二是按学历查询。用if函数来实现,可快速查询到职工的姓名、工号、学历、电话等详细信息。如图4-5所示。图4-5代码实现void find() int i,j; int choice=0; int find_num; char findedu6; char c; system(cls); printf(tt请选择查询功能:n); printf(t1.按工号查询n); printf(t2.按学历查询n); printf(请输入选择:); do scanf(%d,&choice); while (choice!=1)&(choic
14、e!=2); if (choice=1) printf(nt请输入要查询的职工号n); scanf(%d,&find_num); printf(n正在查询,请稍候); for(i=0;i20;i+) printf(.); Sleep(100); system(cls); printf(nn按任意键返回n); c=getch(); system(cls); homepage();此模块中,通过while (choice!=1)&(choice!=2);这个选择来实现查询的方式,选择“1”为工号查询,选择“2”则为按学历查询。 if (find_num=worki.num)即为根据职工号进行查询,
15、strcmp(findedu,worki.exp)根据学历进行职工信息查询。删除界面此模块用于删除员工信息,对于已经无用的员工信息进行删除,采用按工号删除的模式。如图4-6所示。图4-6代码实现void del() int i,j,del_num,match=0; char c; system(cls); printf(请输入要删除的员工工号:n); scanf(%d,&del_num); waiting(); for(i=0;icount;i+) if(worki.num=del_num) match=1; for(j=i;jcount;j+) workj=workj+1; count-;
16、此模块中,首先还是要先进职工信息查询模块,然后再根据查询到的职工号进行删除。printf(%d,&del_num);即为显示要删除的职工号,if(c=y|c=Y)则是确定是否删除选定的职工信息。最后通过homepage()回到主界面。 五、遇到的问题及解决办法 1.在一些字符或字符串的定义上出项错误,如定义职工电话号码的时候,用成了float类型,而正确的应该是char类型。 2在进行模块函数设计时,find()函数功能没有设计好,导致部分函数代码过长,可读性降低,以至于再次重写里面的一小部分代码,浪费了大量的时间。3在整个程序设计编写完成后,编译时出现了大量的错误,而且里面大部分是因为大小写
17、问题,还有void拼错拼成viod,还有“;”没有写,后来经过程序错误查询,一一更改了过来。4. 在编写代码时没有添加注解,降低了在调试测试时程序的可读性,同时也降低了与其他同学的交流,虽然在测试过程中我把全部的注解加上, 但也延长了整个程序的开发时间。六、课程设计总结通过此次学生成绩信息管理系统,让我熟悉了软件开发的流程,相信在以后的工作中我能在最短的时间内投入到大的程序开发项目中。在进行课程设计的前两天,不知道从何入手,很是不解,不知道我们究竟要做什么。后来通过上网找资料,才发现有好多做法,根本就看不完,此时才真正意识到差距所在。于是,通过借鉴网络作品,才发现作品并不是一味的照搬照抄才实用
18、,集众家之所成,不断完善,才能造出属于自己的作品,并且实用。在整个课程设计中,我认为最重要的就是耐心和细心。细心,就是在编写过程中注意拼写,仔细编写程序;耐心,就是程序编译中出现很多错误的时候能够耐心去修改,只有这样,才能很好的完成程序。虽然在整个过程中出现了不少错误,但最终还是圆满完成了,此次程序设计的经历让我学到了太多,同时也让我理解到参加的项目越大越能学到知识,因此以后我会积极主动的去参加一些项目,以此来提高自己的技能和编程经验。七、参考文献【1】.实用c语言简明教程李金祥、顾小晶主编【2】.c+语言程序设计,刘振安,刘燕君,孙忱,机械工业出版社;【3】.C语言程序设计一体化案例教程,刘
19、维富,清华大学出版社;【4】.C语言课程设计,黄明,梁旭,万洪莉,电子工业出版。附录(源程序代码)#include#include#include#includevoid homepage(); 3f; Sleep(100); system(cls); homepage(); break; else printf(n用户名或密码无效 请重新输入:n); continue; if(k=0) printf(n连续输入错误3次 将退出程序n); Sleep(2000); quit();void homepage() char n; printf(nn); printf(tn); printf(t*n
20、); printf(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); while (n!=1)&(n!=2)&(n!=3)&(n!=4)&(n!=5
21、)&(n!=0) printf(n请选择:); fflush(stdin); scanf(%c,&n); switch(n) case 1: display(); break; case 2: if(count50) input(); else printf(记录数已满n); Sleep(2000); system(cls); homepage(); break; case 3: find(); break; case 4: del(); break; case 5: sort(); break; case 0: quit(); break; default: printf(n选项错误n);
22、void display() int i; char c; system(cls); printf(备注:学历(1=中专,2=大专,3=本科,4=硕士,5=博士,6=其它):nnn); switch(sort_type) case 0: printf(tt未排序:nn); break; case 1: printf(tt按工号排序:nn); um,worki.name,worki.xingbie,worki.age,worki.exp,worki.wage,worki.address,worki.tel); printf(nn按任意键返回n); c=getch(); system(cls);
23、homepage();void input() int i,numcheck; char c; system (cls); do printf(工号:n); scanf(%d,&workcount.num); numcheck=1; if(workcount.num0) printf(请输入正整数:n); for(i=0;icount;i+) if(workcount.num=worki.num) numcheck=0; printf(工号重复,重新输入:n); while(!numcheck); printf(姓名:); fflush(stdin); scanf(%s,workcount.n
24、ame); fflush(stdin); printf(性别(F:M):); scanf(%c,&workcount.xingbie); printf(年龄:); scanf(%d,&workcount.age); fflush(stdin); printf(学历(1=中专,2=大专,3=本科,4=硕士,5=博士,6=其它):n); scanf(%s,workcount.exp); printf(工资:); scanf(%d,&workcount.wage); printf(住址:); scanf(%s,workcount.address); printf(电话:); scanf(%s,wor
25、kcount.tel); printf(n是否继续输入(y/n):n); do c=getchar(); if(c=y|c=Y) count+; if(count50) input(); else printf(记录数已满n); Sleep(2000); system(cls); homepage(); else if(c=n|c=N) count+; system(cls); homepage(); else; while(c!=y)&(c!=n)&(c!=Y)&(c!=N);void del() int i,j,del_num,match=0; char c; system(cls); printf(请输入要删除的员工工号:n); scanf(%d,&del_num); waiting(); for(i=0;icount;i+) if(worki.num=del_num) match=1; for(j=i;jcount;j+) workj=workj+1; count-; if(!match) printf(n没有要找的工号.n); printf(n是否继续删除(y/n); fflush(stdin); do c=getchar(); if(c=y|c=Y) del(); else if(c=n|c=N) system(cls); homepag
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1