您好,欢迎来到五一七教育网。
搜索
您的当前位置:首页职工信息管理系统

职工信息管理系统

来源:五一七教育网
 职工信息管理系统设计

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;iif(work[i].num==del_num) {

match=1;

for(j=i;j第 10页 /共 30页

职工信息管理系统设计

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 #include #include #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;iprintf(\"\%d\%s\%c\%d\%s\%d\%s\%s\\n\gbie,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 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第 23页 /共 30页

职工信息管理系统设计

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;iif(work[i].num==del_num) {

match=1;

for(j=i;jcount--;

} }

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

本站由北京市万商天勤律师事务所王兴未律师提供法律服务