职工信息管理系统.docx
- 文档编号:17609178
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:28
- 大小:213.80KB
职工信息管理系统.docx
《职工信息管理系统.docx》由会员分享,可在线阅读,更多相关《职工信息管理系统.docx(28页珍藏版)》请在冰点文库上搜索。
职工信息管理系统
1绪论
1.1课题背景及目的
公司的扩张和人员的变动都需要处理相应职工的信息,凭借人力很难用最短的时间整理出需要的职工信息。
运用计算机系统对职工档案进行管理,能够提高管理效率、节约时间、方便管理人员管理信息。
因此需要设计一个职工信息管理系统,系统以菜单的方式工作,可以录入、查询、删除等。
职工的信息包括工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不可重复),使查询职工信息变得又快又简单。
1.2课题的研究方法
本系统主要的设计思想是实现对职工信息的录入、删除、排序、查询等主要功能。
职工信息以文件的形式存储,这要用到文件存储数据结构。
数据结构的构造类型包括结构体变量、结构体数组、结构体指针等。
基本类型有整形字符型,其中字符型用来定义职工编号、姓名、工资、电话、地址等。
一维数组structworkerwork[]用于定义员工的总人数,结构体structworker用于存放员工的资料。
系统的人机接口采用简单的字符界面进行交互。
系统的设计方法是结构化设计方法,采用C语言进行开发。
软件开发平台采用VisualC++6.0。
[1]
2概要设计
2.1软件模块结构图
职工信息管理系统可以分为显示员工资料、录入员工资料、查询员工信息、删除员工信息、对员工信息进行排序、退出信息系统。
图2.1职工信息管理系统模块结构图
3详细设计
3.1数据结构设计
定义一维数组structworkerwork[50];用于定义员工的总人数,当员工总人数超过50后便不能再录入员工资料。
[1]
结构体structworker用于存放存放员工的资料,包括员工的基本信息:
工号,姓名,年龄,学历,工资,住址,电话号码。
structworker
{
intnum;工号
charname[15];名字
charxingbie;性别
intage;年龄
charexp[6];学历
intwage;工资
charaddress[20];住址
chartel[12];电话号码
};
intcount=0;当前工人个数
intsort_type=0;当前排序类型
3.2界面设计
3.2.1登录主界面
设置用户名和密码,输入正确方可进入主界面。
由strcmp函数判断,代码实现:
if((strcmp(username,"abcde")==0)&&(strcmp(pwd,"123456")==0))[2]
如果输入用户名和密码错误超过三次,则自动退出程序。
代码实现:
for(i=0;i<3;i++)
{
printf("\n请输入用户名:
");
gets(username);
printf("\n请输入6位密码:
");
gets(pwd);
……
if(k==0)
printf("\n连续输入三次错误将退出程序:
n");
Sleep(2000);
quit();
3.2.2主界面
进入主界面后用户可以根据自己的需要选择相应的选项1.显示员工资料;2.录入员工资料;3.员工信息查询;4.删除员工信息;0.退出信息系统。
[3]
代码实现:
while((n!
='1')&&(n!
='2')&&(n!
='3')&&(n!
='4')&&(n!
='5')&&(n!
='0'))
{
printf("\n请选择:
")
……
{
case'1':
display();
break;
case'2':
if(count<50)
input();
else
{
printf("记录数已满\n");
Sleep(2000);
system("cls");
homepage();
}
break;
……
default:
printf("\n选项错误\n");
}
}
}
3.2.3显示员工信息界面
一条信息由员工的工号、姓名、性别、年龄、学历、工资、住址和电话组成,用户登录此界面可查看相应的信息,用switch()语句来实现。
代码实现:
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");
……
3.2.4录入员工信息界面
登录此界面可以录入新员工的信息,当系统中的员工人数达到上限时不可以录入新信息。
if(work[count].num==work[i].num);numcheck=0判定录入的工号是否重复,重复的话会有重新输入的提示,避免职工信息的重复。
当记录数已满时,通过sleep(2000),使之回到主界面,进行其他选项设置。
[2]
代码实现:
voidinput()
{inti,numcheck;
charc;
do
{printf("工号:
\n");
scanf("%d",&work[count].num);
numcheck=1;
if(work[count].num<0)
printf("请输入正整数:
\n");
……
do
{
c=getchar();
if(c=='y'||c=='Y')
{
count++;
……
3.2.5查询员工信息界面
员工信息的查询可以按工号或学历进行查询。
用if函数来实现。
通过while((choice!
=1)&&(choice!
=2));这个选择来实现查询的方式,选择“1”为工号查询,选择“2”则为按学历查询。
if(find_num==work[i].num)即为根据职工号进行查询,strcmp(findedu,work[i].exp)根据学历进行职工信息查询。
代码实现:
voidfind()
{
inti,j;
intchoice=0;
intfind_num;
charfindedu[6];
charc;
system("cls");
printf("\t\t请选择查询功能:
\n");
……
}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();
}
3.2.6删除员工信息界面
首先要进行职工信息查询,然后再对查询到的职工进行删除。
printf("%d",&del_num);即为显示要删除的职工号,if(c=='y'||c=='Y')则是确定是否删除选定的职工信息。
最后通过homepage()回到主界面。
代码实现:
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;j work[j]=work[j+1]; 4使用说明及运行实例 (1)登录主界面 按提示输入用户名和密码登录主界面,输入累计错误三次自动退出系统。 用户名: abcde;密码: 123456 图4.1登陆界面 (2)主界面 进入主界面选择相应的选项进行操作 图4.2主界面 (3)查询员工信息界面 如图4.3按所选功能输入相应的信息查询员工资料。 图4.3查询信息界面 (4)显示员工信息 图4.4无序显示员工信息 (5)删除员工信息界面 如图4.5.1按提示输入信息,并确认。 图4.5删除员工信息界面 (6)录入界面 如图4.6输入员工的相应信息,输入工号重复后系统提示重新输入。 图4.6录入员工界面 (7)退出程序显示界面 图4.7退出系统显示界面 5总结 5.1遇到的问题及解决办法 (1)些字符或字符串的定义上出项错误,如定义职工电话号码的时候,用成了float类型,而正确的应该是char类型。 (2)对排序模块进行设计时流程图没设计好,导致运行程序时间过长。 (3)在进行模块函数设计时,find()函数功能没有设计好,导致部分函数代码过长,可读性降低。 再次重写里面的一部分代码,浪费了大量的时间。 5.2心得体会 这次的课程设计让我学会了许多函数的使用,培养了分析问题、解决问题的能力,同时也体会到了C语言操作灵活、执行效率高等特点。 在整个课程设计中,我认为最重要的就是耐心和细心。 在编写过程中注意拼写,仔细编写程序;在程序编译中出现很多错误的时候能够耐心去修改,这些都是需要学习的。 只有这样,才能很好的完成程序。 上机操作可以加深对数组、循环等语句的理解。 刚开始拿到题目不知道从哪里下手,只有去搜集一些课外资料和咨询师兄师姐们的意见。 设计流程图的时候由于逻辑性不是很强,源代码也没有注释,在实际中总会出现一些乱码。 以后设计程序一定不能偷懒把注释漏掉了。 在运行过程中除了错,可以看看代码和注释是否表达的意思是一样的。 因此,一个系统的菜单和提示信息非常重要,有了这些信息用户才能够了解怎么使用这个系统。 有了VC++的一个清晰简单的菜单和一些提示信息这后,调试过程完成的非常顺利。 通过这次课程设计,我觉得自己还需改进的还有很多。 路还很长,需要学习的东西还很多。 参考文献 [1]李峰,谢中科.C语言程序设计.上海: 复旦大学出版社,2011: 21,133-138。 [2]谭浩强.C程序设计(第三版).北京: 清华大学出版社,2005: 95-99。 [3]刘维富,陈建平.C语言程序设计一体化案例教程 .北京: 清华大学出版社: 2009: 118-121,125。 附录源程序清单 #include #include #include #include voidhomepage();//主界面 voiddisplay();//显示全部信息 voidinput();//录入插入 voidfind();//查询 voiddel();//删除记录 voidwaiting();//等待界面 voidquit();//退出界面 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"); printf("\t┃***┃*******┃***┃\n"); printf("\t┃***┃***苏静****┃***┃\n"); printf("\t┃***┃*******┃***┃\n"); printf("\t┃***┃***201153100206****┃***┃\n"); printf("\t┃***┃*******┃***┃\n"); printf("\t┃***┃************************************************┃***┃\n"); printf("\t┃***┗━━━━━━━━━━━━━━━━━━━━━━━━┛***┃\n"); printf("\t┃**********************************************************┃\n"); printf("\t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n"); for(i=0;i<3;i++) { printf("\n请输入用户名: "); gets(username); printf("\n请输入6位密码: "); gets(pwd); if((strcmp(username,"abcde")==0)&&(strcmp(pwd,"123456")==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(); } voidhomepage() { charn; printf("\n\n"); printf("\t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n"); printf("\t┃************************************************************┃\n"); 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┃*0.退出信息系统*┃\n"); printf("\t┃***┃\n"); printf("\t┃************************************************************┃\n"); printf("\t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\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(count<50) input(); else { printf("记录数已满\n"); Sleep(2000); system("cls"); homepage(); } break; case'3': find(); break; case'4': del(); break; case'0': quit(); break; default: printf("\n选项错误\n"); } } } voiddisplay() { inti; charc; system("cls"); 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"); 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按任意键返回\n"); c=getch(); system("cls"); homepage(); } voidinput() { inti,numcheck; charc; system("cls"); 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"); } } }while(! numcheck);{ printf("姓名: "); fflush(stdin); scanf("%s",work[count].name); fflush(stdin); printf("性别(F女: M男): "); scanf("%c",&work[count].xingbie); printf("年龄: "); scanf("%d",&work[count].age); fflush(stdin); printf("学历(1=中专,2=大专,3=本科,4=硕士,5=博士,6=其它): \n"); scanf("%s",work[count].exp); printf("工资: "); scanf("%d",&work[count].wage); printf("住址: "); scanf("%s",work[count].address); printf("电话: "); scanf("%s",work[count].tel); } printf("\n是否继续输入(y/n): \n"); do { c=getchar(); if(c=='y'||c=='Y') { count++; if(count<50) input(); else { printf("记录数已满\n"); Sleep(2000); system("cls"); homepage(); } } elseif(c=='n'||c=='N') { count++; system("cls"); homepage(); } else; }while((c! ='y')&&(c! ='n')&&(c! ='Y')&&(c! ='N')); } 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;j work[j]=work[j+1]; count--; } } if(! match)printf("\n没有要找的工号.\n"); printf("\n是否继续删除? (y/n)"); fflush(stdin); do
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 职工 信息管理 系统