1 绪论
1.1 课题背景及目的
公司的扩张和人员的变动都需要处理相应职工的信息,凭借人力很难用最短的时间整理出需要的职工信息。运用计算机系统对职工档案进行管理,能够提高管理效率、节约时间、方便管理人员管理信息。因此需要设计一个职工信息管理系统,系统以菜单的方式工作,可以录入、查询、删除等。职工的信息包括工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不可重复),使查询职工信息变得又快又简单。
1.2课题的研究方法
本系统主要的设计思想是实现对职工信息的录入、删除、排序、查询等主要功能。职工信息以文件的形式存储,这要用到文件存储数据结构。数据结构的构造类型包括结构体变量、结构体数组、结构体指针等。基本类型有整形字符型,其中字符型用来定义职工编号、姓名、工资、电话、地址等。一维数组struct worker work[]用于定义员工的总人数,结构体struct worker用于存放员工的资料。系统的人机接口采用简单的字符界面进行交互。系统的设计方法是结构化设计方法,采用C语言进行开发。软件开发平台采用Visual C++6.0。[1]
第 1页 /共 30页
职工信息管理系统设计
2 概要设计
2.1软件模块结构图
职工信息管理系统可以分为显示员工资料、录入员工资料、查询员工信息、删除员工信息、对员工信息进行排序、退出信息系统。
职工信息管理系统 显示主菜单显示员工信息输入员工信息查询员工信息删除员工信息 图2.1 职工信息管理系统模块结构图
按工资查询按工号查询
第 2页 /共 30页
职工信息管理系统设计
3 详细设计
3.1数据结构设计
定义一维数组struct worker work[50];用于定义员工的总人数,当员工总人数超过50后便不能再录入员工资料。[1]
结构体struct worker用于存放存放员工的资料,包括员工的基本信息:工号,姓名,年龄,学历,工资,住址,电话号码。
struct worker
{
int num; 工号 char name[15]; 名字 char xingbie; 性别 int age; 年龄 };
int count=0; 当前工人个数 int sort_type=0; 当前排序类型
第 3页 /共 30页
char exp[6]; 学历 int wage; 工资 char address[20]; 住址 char tel[12]; 电话号码
职工信息管理系统设计
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主界面
第 4页 /共 30页
职工信息管理系统设计
进入主界面后用户可以根据自己的需要选择相应的选项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();
第 5页 /共 30页
职工信息管理系统设计
}
break;
„„
default:
printf(\"\\n选项错误\\n\"); } } }
3.2.3 显示员工信息界面
一条信息由员工的工号、姓名、性别、年龄、学历、工资、住址和电话组成,用户登录此界面可查看相应的信息,用switch()语句来实现。 代码实现:
void display() {
int i; char c;
printf(\"备注:学历(1=中专,2=大专,3=本科,4=硕士,5=博士,6=其它):\\n\\n\\n\"); switch(sort_type) {
case 0: printf(\"\\未排序:\\n\\n\"); break;
第 6页 /共 30页
职工信息管理系统设计
case 1:printf(\"\\按工号排序:\\n\\n\"); //sort();break; case 2:printf(\"\\按工资排序:\\n\\n\");//sort();break; }
printf(\"\工号\姓名\性别\年龄\学历\工资\住址\电话\\n\");
……
3.2.4 录入员工信息界面
登录此界面可以录入新员工的信息,当系统中的员工人数达到上限时不可以录入新信息。if(work[count].num==work[i].num);numcheck=0判定录入的工号是否重复,重复的话会有重新输入的提示,避免职工信息的重复。当记录数已满时,通过sleep(2000),使之回到主界面,进行其他选项设置。[2] 代码实现:
void input() { int i,numcheck; char c; do
{ printf(\"工号:\\n\");
scanf(\"%d\ numcheck=1; if(work[count].num<0) printf(\"请输入正整数:\\n\"); „„
第 7页 /共 30页
职工信息管理系统设计
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)根据学历进行职工信息查询。
代码实现:
void find() {
int i,j;
int choice=0;
int find_num; char findedu[6]; char c; system(\"cls\");
第 8页 /共 30页
职工信息管理系统设计
printf(\"\\请选择查询功能:\\n\");
„„
}while ((choice!=1)&&(choice!=2)); if (choice==1) {
printf(\"\\n\请输入要查询的职工号\\n\"); scanf(\"%d\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 删除员工信息界面
第 9页 /共 30页
职工信息管理系统设计
首先要进行职工信息查询,然后再对查询到的职工进行删除。
printf(\"%d\即为显示要删除的职工号,if(c=='y'||c=='Y')则是确定是否删除选定的职工信息。最后通过homepage()回到主界面。
代码实现:
void del() {
int i,j,del_num,match=0; char c; system(\"cls\");
printf(\"请输入要删除的员工工号:\\n\"); scanf(\"%d\ waiting();
for(i=0;i match=1; for(j=i;j 职工信息管理系统设计 4 使用说明及运行实例 (1) 登录主界面 按提示输入用户名和密码登录主界面,输入累计错误三次自动退出系统。用户名:abcde;密码:123456 图4.1 登陆界面 (2) 主界面 进入主界面选择相应的选项进行操作 第 11页 /共 30页 职工信息管理系统设计 图4.2 主界面 (3) 查询员工信息界面 如图4.3按所选功能输入相应的信息查询员工资料。 图 4.3 查询信息界面 (4)显示员工信息 第 12页 /共 30页 职工信息管理系统设计 图 4.4 无序显示员工信息 (5) 删除员工信息界面 如图4.5.1按提示输入信息,并确认。 图 4.5 删除员工信息界面 第 13页 /共 30页 职工信息管理系统设计 (6) 录入界面 如图4.6输入员工的相应信息,输入工号重复后系统提示重新输入。 图4.6 录入员工界面 (7) 退出程序显示界面 图4.7 退出系统显示界面 第 14页 /共 30页 职工信息管理系统设计 5 总结 5.1 遇到的问题及解决办法 (1)些字符或字符串的定义上出项错误,如定义职工电话号码的时候,用成了float类型,而正确的应该是char类型。 (2)对排序模块进行设计时流程图没设计好,导致运行程序时间过长。 (3)在进行模块函数设计时,find()函数功能没有设计好,导致部分函数代码过长,可读性降低。再次重写里面的一部分代码,浪费了大量的时间。 5.2 心得体会 这次的课程设计让我学会了许多函数的使用,培养了分析问题、解决问题的能力,同时也体会到了C语言操作灵活、执行效率高等特点。在整个课程设计中,我认为最重要的就是耐心和细心。在编写过程中注意拼写,仔细编写程序;在程序编译中出现很多错误的时候能够耐心去修改,这些都是需要学习的。只有这样,才能很好的完成程序。上机操作可以加深对数组、循环等语句的理解。刚开始拿到题目不知道从哪里下手,只有去搜集一些课外资料和咨询师兄师姐们的意见。设计流程图的时候由于逻辑性不是很强,源代码也没有注释,在实际中总会出现一些乱码。以后设计程序一定不能偷懒把注释漏掉了。在运行过程中除了错,可以看看代码和注释是否表达的意思是一样的。因此,一个系统的菜单和提示信息非常重要,有了这些信息用户才能够了解怎么使用这个系统。有了VC++的一个清晰简单的菜单和一些提示信息这后,调试过程完成的非常顺利。通过这次课程设计,我觉得自己还需改进的还有很多。路还很长,需要学习的东西还很多。 第 15页 /共 30页 职工信息管理系统设计 参考文献 [1] 李峰,谢中科.C语言程序设计.上海:复旦大学出版社,2011:21,133-138。 [2] 谭浩强. C程序设计(第三版).北京:清华大学出版社,2005:95-99。 [3] 刘维富,陈建平.C语言程序设计一体化案例教程 .北京:清华大学出版社:2009:118-121,125。 第 16页 /共 30页 职工信息管理系统设计 附录 源程序清单 #include void homepage(); //主界面 void display(); //显示全部信息 void input(); //录入 插入 void find(); //查询 void del(); //删除记录 void waiting(); //等待界面 void quit(); //退出界面 struct worker { int num; //工号 char name[15]; //名字 char xingbie; //性别 int age; //年龄 }; 第 17页 /共 30页 char exp[6]; //学历 int wage; //工资 char address[20];//住址 char tel[12]; //电话号码 职工信息管理系统设计 int count=0; //当前工人个数 int sort_type=0; //当前排序类型 struct worker work[50]; void main() { int i=0,k=0; char username[15],pwd[6]; system(\"color 3f\"); printf(\"\\n\\n\"); printf(\" \┏━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━┓\\n\"); printf(\" \┃ **********************************************************┃\\n\"); printf(\" \┃***┏━━━━━━━━━━━━━━━━━━━━━━━━┓***┃\\n\"); printf(\" \┃***┃ ************************************************┃***┃\\n\"); printf(\" \┃***┃*** ****┃***┃\\n\"); printf(\" \┃***┃*** 欢迎使用职工信息管理系统 ****┃***┃\\n\"); printf(\" \┃***┃*** ****┃***┃\\n\"); printf(\" \┃***┃*** ****┃***┃\\n\"); printf(\" \┃***┃*** 苏静 ****┃***┃\\n\"); printf(\" \┃***┃*** ****┃***┃\\n\"); printf(\" \┃***┃*** 201153100206 ****┃***┃\\n\"); printf(\" \┃***┃*** ****┃***┃\\n\"); printf(\" \┃***┃ ************************************************┃***┃\\n\"); printf(\" \┃***┗━━━━━━━━━━━━━━━━━━━━━━━━┛***┃\\n\"); 第 18页 /共 30页 职工信息管理系统设计 printf(\" \┃ **********************************************************┃\\n\"); printf(\" \┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\\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(); 第 19页 /共 30页 职工信息管理系统设计 } void homepage() { char n; printf(\"\\n\\n\"); printf(\"\┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\\n\"); printf(\"\┃ ************************************************************┃\\n\"); printf(\"\┃* * *┃\\n\"); printf(\"\┃* 1.显示员工资料 * 2.录入员工资料 *┃\\n\"); printf(\"\┃* * *┃\\n\"); printf(\"\┃ ************************************************************┃\\n\"); printf(\"\┃* * *┃\\n\"); printf(\"\┃* 3.员工信息查询 * 4.删除员工记录 *┃\\n\"); printf(\"\┃* * *┃\\n\"); printf(\"\┃ ************************************************************┃\\n\"); printf(\"\┃* *┃\\n\"); printf(\"\┃* 0.退出信息系统 *┃\\n\"); printf(\"\┃* * *┃\\n\"); printf(\"\┃ ************************************************************┃\\n\"); printf(\"\┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\\n\"); 第 20页 /共 30页 职工信息管理系统设计 while ((n!='1')&&(n!='2')&&(n!='3')&&(n!='4')&&(n!='5')&&(n!='0')) { printf(\"\\n请选择:\"); fflush(stdin); scanf(\"%c\ 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; 第 21页 /共 30页 职工信息管理系统设计 default: printf(\"\\n选项错误\\n\"); } } } void display() { int i; char c; system(\"cls\"); printf(\"备注:学历(1=中专,2=大专,3=本科,4=硕士,5=博士,6=其它):\\n\\n\\n\"); switch(sort_type) { case 0: printf(\"\\未排序:\\n\\n\"); break; case 1: printf(\"\\按工号排序:\\n\\n\"); //sort(); break; case 2: printf(\"\\按工资排序:\\n\\n\"); //sort(); break; 第 22页 /共 30页 职工信息管理系统设计 } printf(\"\工号\姓名\性别\年龄\学历\工资\住址\电话\\n\"); if (count==0) printf(\"\\n\无员工信息!\\n\"); for(i=0;i } printf(\"\\n\\n按任意键返回\\n\"); c=getch(); system(\"cls\"); homepage(); } void input() { int i,numcheck; char c; system (\"cls\"); do { printf(\"工号:\\n\"); scanf(\"%d\ numcheck=1; if(work[count].num<0) printf(\"请输入正整数:\\n\"); for(i=0;i 职工信息管理系统设计 if(work[count].num==work[i].num) { numcheck=0; printf(\"工号重复,重新输入:\\n\"); } } 它):\\n\"); }while(!numcheck);{ printf(\"姓名:\"); fflush(stdin); scanf(\"%s\fflush(stdin); printf(\"性别(F女:M男):\"); scanf(\"%c\printf(\"年龄:\"); scanf(\"%d\fflush(stdin); printf(\"学历(1=中专,2=大专,3=本科,4=硕士,5=博士,6=其 scanf(\"%s\ printf(\"工资:\"); scanf(\"%d\ printf(\"住址:\"); scanf(\"%s\ 第 24页 /共 30页 职工信息管理系统设计 printf(\"电话:\"); scanf(\"%s\ } 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(); } } else if(c=='n'||c=='N') { count++; system(\"cls\"); homepage(); } else; }while((c!='y')&&(c!='n')&&(c!='Y')&&(c!='N')); 第 25页 /共 30页 职工信息管理系统设计 } void del() { int i,j,del_num,match=0; char c; system(\"cls\"); printf(\"请输入要删除的员工工号:\\n\"); scanf(\"%d\ waiting(); for(i=0;i match=1; for(j=i;j } } 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') 第 26页 /共 30页 职工信息管理系统设计 { system(\"cls\"); homepage(); } }while((c!='y')&&(c!='n')); } void find() { int i,j; int choice=0; int find_num; char findedu[6]; char c; system(\"cls\"); printf(\"\\请选择查询功能:\\n\"); printf(\"\1.按工号查询\\n\"); printf(\"\2.按学历查询\\n\"); printf(\"请输入选择:\"); do { scanf(\"%d\ }while ((choice!=1)&&(choice!=2)); if (choice==1) { printf(\"\\n\请输入要查询的职工号\\n\"); scanf(\"%d\printf(\"\\n正在查询,请稍候\"); for(i=0;i<20;i++) { 第 27页 /共 30页 职工信息管理系统设计 printf(\".\"); Sleep(100); } for (i=0;i<=count;i++) { if (find_num==work[i].num) { printf(\"\\n\\n\工号\姓名\性别\年龄\学历\工资\住址\电 system(\"cls\"); 话\\n\"); printf(\"\%d\%s\%c\%d\%s\%d\%s\%s\\n\].xingbie,work[i].age,work[i].exp,work[i].wage,work[i].address,work[i].tel); } else if (choice==2) { printf(\"\\n\\n学历(1=中专,2=大专,3=本科,4=硕士,5=博士,6=其它):\\n\"); printf(\"\\n\\\n请输入要查询的学历:\"); scanf(\"%s\ printf(\"\\n正在查询,请稍候\"); } } for(i=0;i<20;i++) { printf(\".\"); Sleep(100); } system(\"cls\"); printf(\"\\n\工号\姓名\性别\年龄\学历\工资\住址\电话\\n\"); 第 28页 /共 30页 职工信息管理系统设计 for (i=0;i<=count;i++) { if(!strcmp(findedu,work[i].exp)) { printf(\"\%d\%s\%c\%d\%s\%d\%s\%s\\n\].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(); } void waiting() { int i; printf(\"\\n\请稍侯...........\"); for(i=0;i<25;i++) { switch(i%4) { case 1:printf(\"\\b\\\\\");break; case 2:printf(\"\\b-\");break; case 3:printf(\"\\b/\");break; case 0:printf(\"\\b|\");break; } Sleep(100); } 第 29页 /共 30页 职工信息管理系统设计 system(\"cls\"); } void quit() { system(\"cls\"); printf(\"\\n\\n\"); printf(\"\┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\\n\"); printf(\"\┃ ************************************************************┃\\n\"); printf(\"\┃* *┃\\n\"); printf(\"\┃* 谢谢使用本程序 *┃\\n\"); printf(\"\┃* *┃\\n\"); printf(\"\┃ ************************************************************┃\\n\"); printf(\"\┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\\n\\n\"); } 第 30页 /共 30页
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 517ttc.cn 版权所有 赣ICP备2024042791号-8
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务