1、职工信息管理系统*实践教学* 兰州理工大学计算机与通信学院2013年春季学期 C程序设计 课程设计题 目:职工信息管理系统专业班级:计算机科学与技1班姓 名:赵晓明学 号:12240104 指导教师: 王连相 成 绩:_前言随着经济的发展,企业正向着大型化、规模化的方向发展,企业职员数量急剧增加,有关职员的各种信息量也成倍增长。在这种情况下单靠人工来处理职员的信息,工作量将很大,若公司人员有几万甚至几十万,人工处理将变得不可想象。用计算机可使人们从繁重的劳动中解脱出来,仅使用一些简单的操作便可及时、准确地获得需要的信息。 该系统的具体任务就是设计一个企业职员信息管理系统,由计算机来代替人工执行
2、一系列诸如增加新进职员信息、变更职员信息、删除离职职员信息、查询及打印等操作。这样就使办公人员可以轻松快捷地完成职员信息管理的任务,使企业的职员管理工作系统化、规范化、自动化,从而达到提高企业管理效率的目的。 设计的指导思想是一切为用户着想,界面要美观大方,操作尽量简单明了,而且作为一个实用的应用程序要有良好的容错性,在用户出现误操作时能尽量及时地给出警告,以便用户及时改正。目 录一、总体设计 51.1总体思想 51.2软件模块结构图 51.3系统流程图 61.3.1主函数 61.3.2显示函数 71.3.3录入函数 71.3.4查询函数 81.3.5删除函数 91.3.6排序函数 10二、详
3、细设计和系统实施 112.1数据结构设计 112.1.1定义数组 112.1.2定义结构体 112.1.3函数功能描述 112.2界面设计 122.2.1用户登录界面 122.2.2 主界面 132.2.3显示界面 152.2.4录入界面 162.2.5信息查询界面 172.2.6删除界面 19三、课程设计总结 24四、参考文献 24附录(源程序代码) 25摘 要随着经济的高速发展,一个好的职工信息管理程序在企业及用人单位扮演着重要的角色,为了设计一个功能强大的职工信息管理系统,在设计中我们做出了明细分工,目的是要让本组成员都从这次课程设计中学到编程经验与团队精神。“职工信息管理系统”,系统以
4、菜单方式工作,编写存放有职工基本信息,包含职工工号,姓名,性别,出生年月,学历,职务,工资,住址,电话等,并且要求录入职工号不重复;录入的职工号信息要求用文件形式保存,并可以对其进行浏览、查询、修改、删除等基本操作,建立职工信息管理的文件。关键词:职工信息管理;文件;浏览;查询;修改一、总体设计1.1总体思想 本系统主要的设计思想是实现对职工信息的录入、删除、排序、查询等主要功能。职工信息以文件的形式存储。系统的人机接口采用简单的字符界面进行交互。系统的设计方法是结构化设计方法,采用C语言进行开发。软件开发平台采用Visual C+6.0,主要考虑在VC中可以使用中文,用户交互界面设计比较美观
5、清晰。1.2软件模块结构图根据需求分析结果,职工信息管理系统可以分为显示员工资料、录入员工资料、员工信息查询、删除员工信息、员工信息排序、退出信息系统。如图3-1所示。图3-11.3系统流程图1.3.1主函数 1.3.2显示函数1.3.3录入函数1.3.4查询函数1.3.5删除函数1.3.6修改函数1.3.7排序函数二、详细设计和系统实施 2.1数据结构设计2.1.1定义数组定义一维数组struct worker work50;用于定义员工的总人数,当员工总人数超过50后便不能再录入员工资料。2.1.2定义结构体结构体struct worker用于存放存放员工的资料,包括员工的基本信息:工号,
6、姓名,年龄,学历,工资,住址,电话号码。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; 当前排序类型2.1.3函数功能描述函数主界面:void homepage();显示职工成绩信息:void display();录入职工信息信息:void input();删除职工信息:void del();查询职工信息:
7、void find();排序职工信息:void sort();修改职工信息:void modify();用户等待函数:void waiting();退出系统函数: void quit();2.2界面设计2.2.1用户登录界面此模块用于欢迎界面,同时要求用户输入用户名和密码,只有当两者都正确时,才能进入到系统,当有三次错误,系统就会自动退出,如图4-1所示。图4-1代码实现:void main() int i=0,k=0; char username15,pwd6; for(i=0;i3;i+) printf(n请输入用户名:); gets(username); printf(n请输入6位密码:
8、); gets(pwd); if(strcmp(username,jsj)=0)&(strcmp(pwd,000000 )=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次 将退出程序n); Sleep(2000); quit();在此模块中,if(strcmp(username,Admin)=0)&(strcmp(pw
9、d,123456)=0),用于检测用户名和密码是否正确。for(i=0;i3;i+) printf(n请输入用户名:); gets(username); printf(n请输入6位密码:); gets(pwd);此段代码用于获取账户名和密码并计数是否超过三次,超过三次,则有Sleep(2000);实现退出程序。2.2.2 主界面此模块主要实现进入主界面和根据用户需要进入相应界面,包括显示界面,录入界面,删除界面,排序界面并可以选择退出,如图4-2所示:图4-2代码实现void homepage() char n; while (n!=1)&(n!=2)&(n!=3)&(n!=4)&(n!=5)
10、&(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)用于限制录入员工的人数,超过50名员工就无法再进行录入,并且直接通过sleep(2000);homepage()回到主界面上。
11、2.2.3显示界面此模块是用来显示员工的资料信息的,包括工号,姓名,性别,年龄,学历,工资,住址,电话等基本信息,一边管理员能够及时的掌握到所要员工的资料。如图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按工号排序:nn); /sort();break; case 2:printf(tt按工资排序:nn);/sort()
12、;break; printf(t工号t姓名t性别t年龄t学历t工资t住址t电话n); 此模块中有三种显示方式,第一种是无序显示,就是按照录入时的顺序显示,还有两种分别是是按照工号和工资来排序。后两种显示方式主要是有switch(sort_type)语句来实现的,它相当于一个开关,与下面的case()相对应,相括号中的数字相对应时,就会执行相应的语句。2.2.4录入界面这个模块主要是录入员工资料,录入的顺序如图所示,当录入的员工人数满到50后,便不能再进行录入员工资料,此时已经达到了录入人数的最大值。如图4-4所示。图4-4代码实现void input() int i,numcheck; cha
13、r c; 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); do c=getchar(); if(c=y|c=Y) count+; 此模块中if(workcount.num=worki.num);numcheck=0;很是重要,它判定录入的工号是否重复,重复的话会有重新输入的提示,避免职工信息的重复。当记
14、录数已满时,通过sleep(2000),使之回到主界面,进行其他选项设置。2.2.5信息查询界面 此模块用于职工信息的查询,共分为两种查询方式,一是按工号查询,二是按学历查询。用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(请输入选择:); d
15、o scanf(%d,&choice); while (choice!=1)&(choice!=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
16、”则为按学历查询。 if (find_num=worki.num)即为根据职工号进行查询,strcmp(findedu,worki.exp)根据学历进行职工信息查询。2.2.6删除界面此模块用于删除员工信息,对于已经无用的员工信息进行删除,采用按工号删除的模式。如图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) m
17、atch=1; for(j=i;jcount;j+) workj=workj+1; count-; 此模块中,首先还是要先进职工信息查询模块,然后再根据查询到的职工号进行删除。printf(%d,&del_num);即为显示要删除的职工号,if(c=y|c=Y)则是确定是否删除选定的职工信息。最后通过homepage()回到主界面。 2.2.7修改界面此模块用于修改员工信息,对于输入有误的员工信息进行修改,采用按工号,姓名,性别,年龄,学历,工资,住址,电话进行修改。如下图所示代码实现void modify()/修改函数/ int num; char name15; char xingbie;
18、 int age; char exp6; int wage; char address20; char tel12; int i,n,t,b,c,flag; printf(原来的信息如下:n); system(cls); printf(t工号t姓名t性别t年龄t学历t工资t住址t电话n); if (count=0) printf(nt无员工信息!n); for(i=0;icount;i+) printf(t%dt%st%ct%dt%st%dt%st%sn,worki.num,worki.name,worki.xingbie,worki.age,worki.exp,worki.wage,work
19、i.address,worki.tel); printf(nn); printf(请输入要修改的职工姓名:); scanf(%s,name); printf(n正在查询,请稍候); for(i=0;i20;i+) printf(.); Sleep(100); system(cls); for(i=0,flag=1;flag&i8|c1) printf(n选项错误,请重新输入!n); flag=0; if(flag=1) printf(n对不起,查无此人:n); switch(c) case 1:printf(工号改为: ); scanf(%d,&num); worki-1.num=num;br
20、eak; /*因为当找到第i个职工时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第i-1个人*/ case 2:printf(姓名改为: ); scanf(%s,&name); strcpy(worki-1.name,name);break; case 3:printf(性别改为: ); getchar(); scanf(%c,&xingbie); worki-1.xingbie=xingbie;break; case 4:printf(年龄改为: ); scanf(%d,&age); worki-1.age=age;break; case 5:printf(学历改为: ); s
21、canf(%s,exp); strcpy(worki-1.exp,exp);break; case 6:printf(工资改为: ); scanf(%d,wage); worki-1.wage=wage;break; case 7:printf(住址改为: ); scanf(%s,address); strcpy(worki-1.address,address);break; case 8:printf(电话改为: ); scanf(%s,tel); strcpy(worki-1.tel,tel);break; printf(nn); printf(是否保存所修改的信息?n 是,请按y/Y;不
22、,重新修改,请按nN: ); fflush(stdin); do c=getchar(); if(c=y|c=Y) system(cls); homepage(); else if(c=n|c=N) modify(); while(c!=y)&(c!=n); 三、课程设计总结通过此次学生成绩信息管理系统,让我熟悉了软件开发的流程,相信在以后的工作中我能在最短的时间内投入到大的程序开发项目中。在进行课程设计的前两天,不知道从何入手,很是不解,不知道我们究竟要做什么。后来通过上网找资料,才发现有好多做法,根本就看不完,此时才真正意识到差距所在。于是,通过借鉴网络作品,才发现作品并不是一味的照搬照抄
23、才实用,集众家之所成,不断完善,才能造出属于自己的作品,并且实用。在整个课程设计中,我认为最重要的就是耐心和细心。细心,就是在编写过程中注意拼写,仔细编写程序;耐心,就是程序编译中出现很多错误的时候能够耐心去修改,只有这样,才能很好的完成程序。虽然在整个过程中出现了不少错误,但最终还是圆满完成了,此次程序设计的经历让我学到了太多,同时也让我理解到参加的项目越大越能学到知识,因此以后我会积极主动的去参加一些项目,以此来提高自己的技能和编程经验。四、参考文献1王为青,刘变红.C语言高级编程及实例剖析.北京:人民邮电出版社,20072张长海.C语言程设计M.北京:高等教育出版社,20063陈建新,李
24、志敏.数据结构实验指导与课程设计教程.北京:科学出版社,20104吴玉蓉,李劲.数据结构(C语言版).北京:中国水利水电出版社,20085谭浩强.C语言程设计.北京:清华大学出版社,2005附录(源程序代码)#include#include#include#includevoid homepage(); /主界面void display(); /显示全部信息void input(); /录入 插入void find();void del(); /删除记录void sort(); /排序void waiting(); /等待界面void quit(); /退出界面void modify(); /
25、修改信息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; /当前排序类型struct worker work50;void main() int i=0,k=0; char username15,pwd6; system(color 3f); printf(nn); printf( tn); printf( t*n); printf( t*n); printf( t*n); printf( t* *n); printf( t* 欢迎使用职工信息管理系统 *n); printf( t* *n); print
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1