职工信息管理系统.docx
《职工信息管理系统.docx》由会员分享,可在线阅读,更多相关《职工信息管理系统.docx(44页珍藏版)》请在冰豆网上搜索。
职工信息管理系统
3长江工商学院
计算机科学与技术系
C语言程序设计课程设计
项目名称:
职工信息管理系统
学生姓名:
坤
学号:
13401005
班级:
13级计科本1
指导教师:
莹
2014年05月22日
1引言
1.1选题意义
常言道,百丈之台起于垒土,千里之行始于足下,万丈高楼平地起,无论职位高低,每个员工都有着自己独特的对集体的贡献。
职工信息管理系统的建成,对员工信息的收集,整理,梳拢……等等都有着促进作用。
当今社会,是信息社会,谁能掌握第一手信息,从繁冗的信息库中发现闪光点,在事业的奋斗历程中,就能先于别人立于不败之地。
使用者有了这个系统,对员工信息的掌握也就了如指掌,到,稳固,细致,有条理,这个对于一个庞大的集体的管理统治更加能发挥突出性的作用。
1.2国外现状综述
职工信息管理系统是各大企业团体的主要日常管理工作之一,涉及到职工升迁去向,任职岗位,素质评价,以及团队实力,企业规划,工资待遇等等诸多面的问题,随着社会经济发展,制度的不断改革,日常管理工作及保存管理日趋繁重、复杂。
迫切需要研制开发一款功能强大,操作简单,简洁明了的职工管理系统。
在国外与国不同,他们一般具有较大规模的稳定的技术队伍来提供服务与技术支持。
而国企业信息化建设相对起步较晚,经济发展比较落后。
在数字化信息时代,各,地区一面不断投资购建各种硬件、系统软件和网络,另一面也不断开发实施了各类教学、科研、办公管理等应用系统,形成了一定规模的信息化建设体系。
但是,由于整体信息化程度相对落后,经费短缺,理论体系不健全等原因,国管理系统在机构设置、服务围、服务质量及人员要求上与国外高校相比都有一定的差距。
纵观目前国研究现状,在安全性和信息更新化面存在有一定的不足,我国信息化网络平台监管力度不强,信息的保护措施也乏善可,因此构建安全有效的职工信息管理系统是我们努力的一大向。
2系统需求分析
2.1系统功能概述(基本实现哪些功能,文字描述)
该职工信息管理系统可以满足用户进行一千人以的任意的职工信息录入;特定要求的查找,按编号,学历,进行查找;整体信息的浏览;员工信息的删除和修改等等操作,并配以文件及时保存数据,如下图2-1所示:
图2-1系统功能模块图
2.2系统模块
进入主函数调用菜单函数。
打印提示信息里面有5个功能供其选择:
菜单‘1’:
信息录入功模式,输入选项一进入该功能,根据系统提示输入包括“name,sex,age,salary,education,address,phone,number”等八大类数据,隐含限制人数输入1000人,输入户到末尾有提示信息可以跳出录入环节;
菜单‘2’:
为员工信息浏览模式,当用户输‘2’选项时,系统自动把文件中的数据调入存在输出到显示器上。
供用户浏览。
此功能较为简便,故在此不予以特别阐述;
菜单‘3’:
为员工信息查询模式,当用户选择‘3’后可以根据自己的需要选择(1.按编号查询;2.按学历查询3.按查询0.退出查询模式);
菜单‘4’:
员工信息删除模式,删除模式之下有三个选项(1.按编号删除;2.按姓名删除0.退出删除模式);当初入查询信息后,系统会根据查询信息结果可能反馈三类提示(“1,找到对应的数据,进行下一步操作;2。
未找到相匹配的信息,进行提示操作3。
数据库为空);
菜单‘5’:
职工信息修改模式,用户在主菜单里里面可选择此功能,
菜单‘0’:
用户选择此操作后结束程序运行。
3系统存储结构说明
3.1系统存储信息说明
该系统随机存储以人为单位的员工编号,姓名,年龄,性别,学历,工资,,地址等信息:
其中员工编号随机生成,为长整型数据;姓名,学历,,地址等均为字符串型数据,由用户输入;性别为单个字符,男性用M表示,女性用W表示,用户输入;年龄和工资均为普通整型数据,用户输入。
3.2系统存储结构设计
在设计系统时定义了一组囊括1000人的结构体变量structworker-information【1000】,其中,每个结构体变量之中又定义longint型number;charname[],sex,,education,phone,address;intsalary,age用以保存一个人的不同信息数据。
因为C语言中只能定义同一类型数据的集合,但事实上生活中所接触到的数据多种多样,其中各自之间又有着这样或那样的联系,因此,编程人员才特意开发出结构体型变量,用以储存多种不同类型却又有关联的数据。
3.3系统文件使用说明
系统工作时,预先生成或打开以中文“职工信息管理系统”命名的dat格式的文件,在录入员工数据,修改,删除时调用了save()函数打开文件用fwrite(p,sizeof(worker-information),1,fp)函数随即保存数据为二进制形式,在主界面之下,程序一经运行,会进入load()函数,利用fread(p,sizeof(worker-information),1,fp)函数读取文件信息到存里头。
intload(structworker_information*p)//职工信息读入函数//
{FILE*fp;
if((fp=fopen("职工信息管理系统.dat","rb"))==NULL)
return0;
do
{fread(p,sizeof(structworker_information),1,fp);
p++;
}while(feof(fp)==0);
while((*p1).number>0)
p1++;
fclose(fp);
return0;}
4系统功能实现及代码描述
4.1录入职工信息模式
首先是进入input函数,依次输入姓名,年龄,性别…..等等,随后会显示一个提示窗口——》“结束输入请按“#””,此时如果不按#,则会重复调用input函数自身,进入下一位职工信息的录入,否则就会结束input函数的调用,跳出循环。
流程图如图4-1所示:
图4-1录用职工信息
4.2浏览全体职工信息
在main()主函数菜单之下调用Output函数,输出已录入现存的职工数据,此功能较为简便,故在此不予以特别概述。
流程图如图4-2所示:
图4-2浏览职工信息
4.3查询职工信息模式
主函数之下调用search函数进入查询,该功能之下又衍生出三个分支1.按编号查询;2.按学历查询;3.按查询;凡此三类。
查询开始时,先输入所要查询的数据当输入查询信息找到与其相匹配的数据时,输出相应职工信息跳会search()主函数,否则显示“您所查询的用户数据不存在”。
流程图4-3如下:
图4-3职工信息按编号删除
4.4删除职工信息
主函数之下调用delete函数进入删除页面,该功能之下又衍生出2个分支:
1.按编号删除;2.按姓名删除;3.退出删除模式;凡此三类。
开始时,先输入所要删除的员工的相应数据,当输入查询信息找到与其相匹配的数据时,执行循环结构从该职工的后一位开始,以叠罗汉的形式从后往前覆盖,否则显示“inputerror,pleasetryagain”,最后都会返回删除主界面之下。
流程图4-4如下:
图4-4删除职工信息
4.5修改职工信息模式
该功能运用与删除功能类似,主函数之下调用correct函数进入修改页面,该功能之下只能按职工编号修改,开始时,先输入所要删除的员工的相应数据,当输入查询信息找到与其相匹配的数据时,执行循环结构从该职工的后一位开始,以叠罗汉的形式从后往前覆盖,否则显示“inputerror,pleasetryagain”,最后都会返回删除主界面之下。
图4-5修改职工信息
5系统测试
5.1职工信息录入模式
首先是进入input函数,依次输入姓名,年龄,性别…..等等,随后会显示一个提示窗口——》“结束输入请按“#””,此时如果不按#,则会重复调用input函数自身,进入下一位职工信息的录入,否则就会结束input函数的调用,跳出循环。
程序图5-1所示:
图5-1录入职工信息
5.2职工信息浏览模式:
在main()主函数菜单之下调用Output函数,输出已录入现存的职工数据(职工数据不得大于1000人份),此功能较为简便,故在此不予以特别概述。
程序功能如图5-2所示:
图5-2浏览职工信息
5.3职工信息查询模式
主函数之下调用search函数进入查询,该功能之下又衍生出三个分支:
1.按编号查询;2.按学历查询;3.按查询;凡此三类。
查询开始时,先输入所要查询的数据当输入查询信息找到与其相匹配的数据时,输出相应职工信息跳会search()主函数,否则显示“您所查询的用户数据不存在”。
程序图5-3所示:
图5-3查询职工信息
5.4职工信息删除模式
主函数之下调用delete函数进入删除页面,该功能之下又衍生出2个分支:
1.按编号删除;2.按姓名删除;3.退出删除模式;凡此三类。
开始时,先输入所要删除的员工的相应数据,当输入查询信息找到与其相匹配的数据时,执行循环结构从该职工的后一位开始,以叠罗汉的形式从后往前覆盖,否则显示“inputerror,pleasetryagain”,最后都会返回删除主界面之下。
程序图5-4所示:
图5-4删除职工信息
5.5职工信息修改模式
该功能运用与删除功能类似,主函数之下调用correct函数进入修改页面,该功能之下只能按职工编号修改,开始时,先输入所要删除的员工的相应数据,当输入查询信息找到与其相匹配的数据时,执行循环结构从该职工的后一位开始,以叠罗汉的形式从后往前覆盖,否则显示“inputerror,pleasetryagain”,最后都会返回删除主界面之下。
程序图如图5-5所示:
图5-5修改职工信息
6体会
这次的课程设计,准确来说,难度一般,只不过要想办法讲函数各功能之间衔接恰当,就不是那么简单了;再者数据输入时的缓冲溢出问题,要么只能用getchar(),要么就用fflush(stdin)来实现清理缓冲区的功能,始终未能找到一个更妥帖的办法;其次,文件的读写格式,以及文件的运用,使用起来要注意的细节太多,并且形式僵硬,容易出错,限制太多;最后,就是论文的完成,说实话,真是没有话好说,基本是黔驴技穷,还有就是流程图,真是难画。
参考文献
[1]谭浩强.C语言程序设计[M].第四版.北京:
清华大学出版社2010
[2]谭浩强.C语言程序设计学习辅导.第四版.北京清华大学出版社2010
[3]钦铭,颜晖.C语言程序设计[M].第二版.北京高等教育出版社2012
[4]颜晖,柳俊.C语言程序设计习题与实验指导[M].北京高等教育出版社2012
[5]开成.白话C语言[M].北京电子工业出版社,2010
[6]路明.C语言程序设计[M].第二版.北京:
北京邮电大学出版社,2007
[7]路明.C语言程序设计上机指导与习题选解[M].第二版.北京北京邮电大学出版2007
[8]永福.C语言程序设计[M].:
大学出版社,2007
附录:
源程序清单
#include
#include
#include
#include
structworker_information
{
longnumber;
charname[10];
charsex;
intage;
chareducation[9];
intsalary;
charaddress[16];
charphone[12];
};
#defineM1000
structworker_information*p1;
voidprint1(structworker_information*);
voidprint2(structworker_information*);
voidmain()
{
charmenu();
voidinput_information(structworker_information*);
voidoutput_information(structworker_information*);
intsearch_information(structworker_information*);
intdelete_information(structworker_information*);
intcorrect_information(structworker_information*);
voidreserve(structworker_information*);
intload(structworker_information*);
structworker_informationinform[M],*p=inform;
p1=inform;
load(p);
charx;
while(x=menu())
{
switch(x)
{
case'1':
input_information(p1);
reserve(p);
printf("信息录入完毕\n");
break;
case'2':
printf("您正在进行职工信息浏览:
\n");
output_information(p);
break;
case'3':
search_information(p);
break;
case'4':
printf("您正在进行职工信息删除:
\n");
delete_information(p);
reserve(p);
break;
case'5':
printf("您正在进行职工信息修改:
\n");
correct_information(p);
reserve(p);
break;
case'6':
printf("确认要格式化全部数据y/n?
:
");
scanf("%c",&x);
getchar();
if(x=='y'||x=='Y')
{
p1=p;
reserve(p);
printf("格式化成功,使用.......\n");
}
break;
case'0':
exit(0);
default:
printf("inputerror,pleasetryagainandlater...\n");
}
system("pause");
system("cls");
}
printf("thanksforyourusing,bye-bye\n");
}
charmenu()//*****************菜单选项**********//
{
printf("\n职工信息管理系统:
\n");
printf("**********************************************\t莫不\n");
printf("*\t1.职工信息录入模式*\t失离\n");
printf("*\t2.职工信息浏览模式*\t莫不\n");
printf("*\t3.职工信息查询模式*\t忘弃\n");
printf("*\t4.职工信息删除模式*\n");
printf("*\t5.职工信息修改模式*\t仙芳\n");
printf("*\t6.格式化磁盘数据*\t寿龄\n");
printf("*\t0.退出系统*\t恒永\n");
printf("**********************************************\t昌继\n\n");
printf("请输入您的选择");
charch;
fflush(stdin);
scanf("%c",&ch);
returnch;
}
voidinput_information(structworker_information*p)//职工信息录入模式//
{
printf("您正在进行职工信息录入环节:
\n");
srand(unsigned(time(NULL)));
p->number=rand()%1000+2011000;
printf("请输入职工号为%d的职工个人信息:
\n",p->number);
printf("请输入职工姓名:
");
scanf("%s",p->name);
printf("请输入职工年龄:
");
scanf("%d",&p->age);
getchar();
printf("请输入职工性别女,M->男>:
");
scanf("%c",&p->sex);
printf("请输入职工学历:
");
scanf("%s",p->education);
getchar();
printf("请输入职工薪水:
");
scanf("%d",&p->salary);
printf("请输入职工地址:
");
scanf("%s",p->address);
printf("请输入:
");
scanf("%s",p->phone);
getchar();
p++;
p1++;
printf("按#号键回车后终止:
");
if(getchar()!
='#')
{
system("cls");
input_information(p);
}
}
voidoutput_information(structworker_information*p)//职工信息浏览模式//
{
printf("____________________________________________________________________________\n");
print1(p);
inti=0;
while(p{
print2(p);
p++;
i++;
if(p==p1)
printf("信息在录者共计%d人....\n",i);
}
putchar(10);
if(p1==p&&i==0)
printf("nothingatall,pleaseadded\n");
}
intsearch_information(structworker_information*p)//职工信息查询模式//
{
intsearch_information1(structworker_information*,long);
intsearch_information2(structworker_information*,chara[]);
intsearch_information3(structworker_information*,chara[]);
if(p==p1)
{
printf("数据库空白,该功能暂无法执行,请添加数据......\n");
return0;
}
chari,a[11];
intx;
do{
output_information(p);
printf("您正在进行职工信息查询:
\n");
printf("%8d.按职工编号查询.%8d.按职工学历查询.\n%8d.按查询.%8d.退出当前页面.\n",1,2,3,0);
printf("请输入您的选择:
");
getchar();
scanf("%c",&i);
getchar();
switch(i)
{
case'1':
printf("pleaseinputtheworker'snumber:
");
scanf("%d",&x);
search_information1(p,x);
break;
case'2':
printf("pleaseinputtheworker'seducation:
");
scanf("%s",a);
search_information2(p,a);
break;
case'3':
printf("pleaseinputtheworker'sphonenumber:
");
scanf("%s",a);
search_information3(p,a);
break;
case'0':
break;
default:
printf("inputerror,tryagainplease:
\n");
break;
}
if(i!
='0')
{
system("pause");
system("cls");
}
}while(i!
='0');
return0;
}
intsearch_information1(structworker_information*p,longi)//职工信息按编号查询//
{
for(intx=0,n=0;pif(i==p->number)
{if(n==0)
printf("theresultis:
\n");
print1(p);
n++;
print2(p);
}
if(p==p1&&n!
=0)
printf("找到适配信息者%d人......\n",n);
if(n==0)
printf("Failedtofindamatchwith,pleasetryagain\n");
returnn;
}
intsearch_information2(structworker_information*p,chari[])//职工信息按学历查询//
{
for(intn=0;pif(strcmp(i,p->education)==0)
{if(n==0)
printf("theresultis:
\n");
print1(p);
n++;
print2(p);
}
if(p==p1&&n!
=0)
printf("找到适配信息者%d人......\n",n);
if(n==0)
printf("Failedtofindamatchwith,pleasetryagain\n");
returnn;
}
intsearch_information3(structworker_information*p,chari[])//职工信息按查询//
{
for(intn=0;pif(strcmp(i,p->phone)==0)
{if(n==0)
printf("theresultis:
\n");
print1(p);
n++;
print2(p);