职工信息管理系统.docx
《职工信息管理系统.docx》由会员分享,可在线阅读,更多相关《职工信息管理系统.docx(41页珍藏版)》请在冰豆网上搜索。
![职工信息管理系统.docx](https://file1.bdocx.com/fileroot1/2023-3/28/fb590934-b38b-447c-aadc-4df06299aec9/fb590934-b38b-447c-aadc-4df06299aec91.gif)
职工信息管理系统
*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2013年春季学期
C程序设计课程设计
题目:
职工信息管理系统
专业班级:
计算机科学与技1班
姓名:
赵晓明
学号:
12240104
指导教师:
王连相
成绩:
_______________
前言
随着经济的发展,企业正向着大型化、规模化的方向发展,企业职员数量急剧增加,有关职员的各种信息量也成倍增长。
在这种情况下单靠人工来处理职员的信息,工作量将很大,若公司人员有几万甚至几十万,人工处理将变得不可想象。
用计算机可使人们从繁重的劳动中解脱出来,仅使用一些简单的操作便可及时、准确地获得需要的信息。
该系统的具体任务就是设计一个企业职员信息管理系统,由计算机来代替人工执行一系列诸如增加新进职员信息、变更职员信息、删除离职职员信息、查询及打印等操作。
这样就使办公人员可以轻松快捷地完成职员信息管理的任务,使企业的职员管理工作系统化、规范化、自动化,从而达到提高企业管理效率的目的。
设计的指导思想是一切为用户着想,界面要美观大方,操作尽量简单明了,而且作为一个实用的应用程序要有良好的容错性,在用户出现误操作时能尽量及时地给出警告,以便用户及时改正。
目录
一、总体设计5
1.1总体思想5
1.2软件模块结构图5
1.3系统流程图6
1.3.1主函数6
1.3.2显示函数7
1.3.3录入函数7
1.3.4查询函数8
1.3.5删除函数9
1.3.6排序函数10
二、详细设计和系统实施11
2.1数据结构设计11
2.1.1定义数组11
2.1.2定义结构体11
2.1.3函数功能描述11
2.2界面设计12
2.2.1用户登录界面12
2.2.2主界面13
2.2.3显示界面15
2.2.4录入界面16
2.2.5信息查询界面17
2.2.6删除界面19
三、课程设计总结24
四、参考文献24
附录(源程序代码)25
摘要
随着经济的高速发展,一个好的职工信息管理程序在企业及用人单位扮演着重要的角色,为了设计一个功能强大的职工信息管理系统,在设计中我们做出了明细分工,目的是要让本组成员都从这次课程设计中学到编程经验与团队精神。
“职工信息管理系统”,系统以菜单方式工作,编写存放有职工基本信息,包含职工工号,姓名,性别,出生年月,学历,职务,工资,住址,电话等,并且要求录入职工号不重复;录入的职工号信息要求用文件形式保存,并可以对其进行浏览、查询、修改、删除等基本操作,建立职工信息管理的文件。
关键词:
职工信息管理;文件;浏览;查询;修改
一、总体设计
1.1总体思想
本系统主要的设计思想是实现对职工信息的录入、删除、排序、查询等主要功能。
职工信息以文件的形式存储。
系统的人机接口采用简单的字符界面进行交互。
系统的设计方法是结构化设计方法,采用C语言进行开发。
软件开发平台采用VisualC++6.0,主要考虑在VC中可以使用中文,用户交互界面设计比较美观清晰。
1.2软件模块结构图
根据需求分析结果,职工信息管理系统可以分为显示员工资料、录入员工资料、员工信息查询、删除员工信息、员工信息排序、退出信息系统。
如图3-1所示。
图3-1
1.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定义数组
定义一维数组structworkerwork[50];用于定义员工的总人数,当员工总人数超过50后便不能再录入员工资料。
2.1.2定义结构体
结构体structworker用于存放存放员工的资料,包括员工的基本信息:
工号,姓名,年龄,学历,工资,住址,电话号码。
structworker
{
intnum;工号
charname[15];名字
charxingbie;性别
intage;年龄
charexp[6];学历
intwage;工资
charaddress[20];住址
chartel[12];电话号码
};
intcount=0;当前工人个数
intsort_type=0;当前排序类型
2.1.3函数功能描述
函数主界面:
voidhomepage();
显示职工成绩信息:
voiddisplay();
录入职工信息信息:
voidinput();
删除职工信息:
voiddel();
查询职工信息:
voidfind();
排序职工信息:
voidsort();
修改职工信息:
voidmodify();
用户等待函数:
voidwaiting();
退出系统函数:
voidquit();
2.2界面设计
2.2.1用户登录界面
此模块用于欢迎界面,同时要求用户输入用户名和密码,只有当两者都正确时,才能进入到系统,当有三次错误,系统就会自动退出,如图4-1所示。
图4-1
代码实现:
voidmain()
{inti=0,k=0;
charusername[15],pwd[6];
for(i=0;i<3;i++)
{
printf("\n请输入用户名:
");
gets(username);
printf("\n请输入6位密码:
");
gets(pwd);
if((strcmp(username,"jsj")==0)&&(strcmp(pwd,"000000")==0))
{
printf("\n您已经成功登录");
k=1;
for(i=0;i<20;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(pwd,"123456")==0)),用于检测用户名和密码是否正确。
for(i=0;i<3;i++)
{
printf("\n请输入用户名:
");
gets(username);
printf("\n请输入6位密码:
");
gets(pwd);
此段代码用于获取账户名和密码并计数是否超过三次,超过三次,则有Sleep(2000);实现退出程序。
2.2.2主界面
此模块主要实现进入主界面和根据用户需要进入相应界面,包括显示界面,录入界面,删除界面,排序界面并可以选择退出,如图4-2所示:
图4-2
代码实现
voidhomepage()
{
charn;
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(count<50)input();
else
{printf("记录数已满\n");
Sleep(2000);
system("cls");
homepage();
}
break;
……
此模块中,switch(n),case()用于判定主界面的选项,根据选项进行设置。
其中if(count<50)用于限制录入员工的人数,超过50名员工就无法再进行录入,并且直接通过sleep(2000);homepage()回到主界面上。
2.2.3显示界面
此模块是用来显示员工的资料信息的,包括工号,姓名,性别,年龄,学历,工资,住址,电话等基本信息,一边管理员能够及时的掌握到所要员工的资料。
如图4-3所示。
图4-3
代码实现
voiddisplay()
{
inti;
charc;
printf("备注:
学历(1=中专,2=大专,3=本科,4=硕士,5=博士,6=其它):
\n\n\n");
switch(sort_type)
{
case0:
printf("\t\t未排序:
\n\n");break;
case1:
printf("\t\t按工号排序:
\n\n");//sort();break;
case2:
printf("\t\t按工资排序:
\n\n");//sort();break;
}
printf("\t工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n");
……
此模块中有三种显示方式,第一种是无序显示,就是按照录入时的顺序显示,,还有两种分别是是按照工号和工资来排序。
后两种显示方式主要是有switch(sort_type)语句来实现的,它相当于一个开关,与下面的case()相对应,相括号中的数字相对应时,就会执行相应的语句。
2.2.4录入界面
这个模块主要是录入员工资料,录入的顺序如图所示,当录入的员工人数满到50后,便不能再进行录入员工资料,此时已经达到了录入人数的最大值。
如图4-4所示。
图4-4
代码实现
voidinput()
{inti,numcheck;
charc;
do
{printf("工号:
\n");
scanf("%d",&work[count].num);
numcheck=1;
if(work[count].num<0)
printf("请输入正整数:
\n");
for(i=0;i{
if(work[count].num==work[i].num)
{numcheck=0;
printf("工号重复,重新输入:
\n");
}
}
……
do
{
c=getchar();
if(c=='y'||c=='Y')
{
count++;
……
此模块中if(work[count].num==work[i].num);numcheck=0;很是重要,它判定录入的工号是否重复,重复的话会有重新输入的提示,避免职工信息的重复。
当记录数已满时,通过sleep(2000),使之回到主界面,进行其他选项设置。
2.2.5信息查询界面
此模块用于职工信息的查询,共分为两种查询方式,一是按工号查询,二是按学历查询。
用if函数来实现,可快速查询到职工的姓名、工号、学历、电话等详细信息。
如图4-5所示。
图4-5
代码实现
voidfind()
{
inti,j;
intchoice=0;
intfind_num;
charfindedu[6];
charc;
system("cls");
printf("\t\t请选择查询功能:
\n");
printf("\t1.按工号查询\n");
printf("\t2.按学历查询\n");
printf("请输入选择:
");
do
{
scanf("%d",&choice);
}while((choice!
=1)&&(choice!
=2));
if(choice==1)
{
printf("\n\t请输入要查询的职工号\n");
scanf("%d",&find_num);
printf("\n正在查询,请稍候");
for(i=0;i<20;i++)
{
printf(".");
Sleep(100);
}
system("cls");
printf("\n\n按任意键返回\n");
c=getch();
system("cls");
homepage();
}
此模块中,通过while((choice!
=1)&&(choice!
=2));这个选择来实现查询的方式,选择“1”为工号查询,选择“2”则为按学历查询。
if(find_num==work[i].num)即为根据职工号进行查询,strcmp(findedu,work[i].exp)根据学历进行职工信息查询。
2.2.6删除界面
此模块用于删除员工信息,对于已经无用的员工信息进行删除,采用按工号删除的模式。
如图4-6所示。
图4-6
代码实现
voiddel()
{
inti,j,del_num,match=0;
charc;
system("cls");
printf("请输入要删除的员工工号:
\n");
scanf("%d",&del_num);
waiting();
for(i=0;i{
if(work[i].num==del_num)
{
match=1;
for(j=i;jwork[j]=work[j+1];
count--;
}
}
此模块中,首先还是要先进职工信息查询模块,然后再根据查询到的职工号进行删除。
printf("%d",&del_num);即为显示要删除的职工号,if(c=='y'||c=='Y')则是确定是否删除选定的职工信息。
最后通过homepage()回到主界面。
2.2.7修改界面
此模块用于修改员工信息,对于输入有误的员工信息进行修改,采用按工号,姓名,性别,年龄,学历,工资,住址,电话进行修改。
如下图所示
代码实现
voidmodify()//修改函数//
{
intnum;
charname[15];
charxingbie;
intage;
charexp[6];
intwage;
charaddress[20];
chartel[12];
inti,n,t,b,c,flag;
printf("原来的信息如下:
\n");
system("cls");
printf("\t工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n");
if(count==0)printf("\n\t无员工信息!
\n");
for(i=0;i{
printf("\t%d\t%s\t%c\t%d\t%s\t%d\t%s\t%s\n",work[i].num,work[i].name,work[i].xingbie,work[i].age,work[i].exp,work[i].wage,work[i].address,work[i].tel);
}
printf("\n\n");
printf("请输入要修改的职工姓名:
");
scanf("%s",name);
printf("\n正在查询,请稍候");
for(i=0;i<20;i++)
{
printf(".");
Sleep(100);
}
system("cls");
for(i=0,flag=1;flag&&i{
if(strcmp(work[i].name,name)==0)
{
printf("已找到此人,其信息如下:
\n");
printf("\t工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n");
printf("\t%d\t%s\t%c\t%d\t%s\t%d\t%s\t%s\n",work[i].num,work[i].name,work[i].xingbie,work[i].age,work[i].exp,work[i].wage,work[i].address,work[i].tel);
printf("\n确实要修改请按1,不修改请按0\n");
scanf("%d",&n);
if(n==1)
{
printf("需要进行修改的选项:
1.工号2.姓名3.性别4.年龄5.学历6.工资7.住址8.电话\n");
printf("请输入要修改项序号:
\n");
scanf("%d",&c);
if(c>8||c<1)
printf("\n选项错误,请重新输入!
\n");
}
flag=0;
}
}
if(flag==1)
printf("\n对不起,查无此人:
\n");
switch(c)
{
case1:
printf("工号改为:
");
scanf("%d",&num);
work[i-1].num=num;break;/*因为当找到第i个职工时,for语句后i自加了1,所以下面的应该把改后的信息赋值给第i-1个人*/
case2:
printf("姓名改为:
");
scanf("%s",&name);
strcpy(work[i-1].name,name);break;
case3:
printf("性别改为:
");
getchar();
scanf("%c",&xingbie);
work[i-1].xingbie=xingbie;break;
case4:
printf("年龄改为:
");
scanf("%d",&age);
work[i-1].age=age;break;
case5:
printf("学历改为:
");
scanf("%s",exp);
strcpy(work[i-1].exp,exp);break;
case6:
printf("工资改为:
");
scanf("%d",wage);
work[i-1].wage=wage;break;
case7:
printf("住址改为:
");
scanf("%s",address);
strcpy(work[i-1].address,address);break;
case8:
printf("电话改为:
");
scanf("%s",tel);
strcpy(work[i-1].tel,tel);break;
}
printf("\n\n");
printf("是否保存所修改的信息?
\n是,请按y/Y;不,重新修改,请按n\N:
");
fflush(stdin);
do
{
c=getchar();
if(c=='y'||c=='Y')
{
system("cls");
homepage();
}
elseif(c=='n'||c=='N')
{
modify();
}
}while((c!
='y')&&(c!
='n'));
}
三、课程设计总结
通过此次学生成绩信息管理系统,让我熟悉了软件开发的流程,相信在以后的工作中我能在最短的时间内投入到大的程序开发项目中。
在进行课程设计的前两天,不知道从何入手,很是不解,不知道我们究竟要做什么。
后来通过上网找资料,才发现有好多做法,根本就看不完,此时才真正意识到差距所在。
于是,通过借鉴网络作品,才发现作品并不是一味的照搬照抄才实用,集众家之所成,不断完善,才能造出属于自己的作品,并且实用。
在整个课程设计中,我认为最重要的就是耐心和细心。
细心,就是在编写过程中注意拼写,仔细编写程序;耐心,就是程序编译中出现很多错误的时候能够耐心去修改,只有这样,才能很好的完成程序。
虽然在整个过程中出现了不少错误,但最终还是圆满完成了,此次程序设计的经历让我学到了太多,同时也让我理解到参加的项目越大越能学到知识,因此以后我会积极主动的去参加一些项目,以此来提高自己的技能和编程经验。
四、参考文献
[1]王为青,刘变红.C语言高级编程及实例剖析.北京:
人民邮电出版社,2007
[2]张长海.C语言程设计[M].北京:
高等教育出版社,2006
[3]陈建新,李志敏.数据结构实验指导与课程设计教程.北京:
科学出版社,2010
[4]吴玉蓉,李劲.数据结构(C语言版).北京:
中国水利水电出版社,2008
[5]谭浩强.C语言程设计.北京:
清华大学出版社,2005
附录(源程序代码)
#include
#include
#include
#include
voidhomepage();//主界面
voiddisplay();//显示全部信息
voidinput();//录入插入
voidfind();
voiddel();//删除记录
voidsort();//排序
voidwaiting();//等待界面
voidquit();//退出界面
voidmodify();//修改信息
structworker
{
intnum;//工号
charname[15];//名字
charxingbie;//性别
intage;//年龄
charexp[6];//学历
intwage;//工资
charaddress[20];//住址
chartel[12];//电话号码
};
intcount=0;//当前工人个数
intsort_type=0;//当前排序类型
structworkerwork[50];
voidmain()
{inti=0,k=0;
charusername[15],pwd[6];
system("color3f");
printf("\n\n");
printf("\t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf("\t┃**********************************************************┃\n");
printf("\t┃***┏━━━━━━━━━━━━━━━━━━━━━━━━┓***┃\n");
printf("\t┃***┃************************************************┃***┃\n");
printf("\t┃***┃*******┃***┃\n");
printf("\t┃***┃***欢迎使用职工信息管理系统****┃***┃\n");
printf("\t┃***┃*******┃***┃\n");
print