职工信息管理系统课程设计Word文件下载.docx
《职工信息管理系统课程设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《职工信息管理系统课程设计Word文件下载.docx(32页珍藏版)》请在冰豆网上搜索。
添加功能:
完成添加新职工的信息的任务。
修改功能:
通过输入职工的姓名完成对该名职工的信息进行修改。
退出职工信息管理系统。
2.2系统模块
进入系统后,首先进入菜单选项,选择自己所要进行的操作。
(1)录入职工信息,并保存。
(2)浏览职工信息,先读出录入后的职工信息,然后进行浏览。
(3)查询职工信息,先选择用什么进行查询(按学历,职工号,电话号),若选择为按学历查找,就输入要查找的学历信息,如果未找到该学历,系统就会提示查无此人,若找到后系统就会显示已查到此人,并输出该职工的信息。
(4)删除职工信息,先输入要删除职工的姓名,进行查找,如果未找到该学历,系统就会提示查无此人,若找到后系统就会显示已查到此人,并输出该职工的信息。
然后系统就会提示是否删除给职工的信息。
删除后就会显示新的职工信息。
(5)添加职工信息,先输入要添加的职工人数,之后依次输入要添加的信息,最后确认是否添加。
(6)修改职工信息,先输入要修改职工的姓名,进行查找,如果未找到该学历,系统就会提示查无此人,若找到后系统就会显示已查到此人,并输出该职工的信息。
接着系统就会提示是否要对该职工进行修改,修改时,系统就会提示:
将会对哪个地方进行修改,最后确定自己的修改,系统就会显示修改后的职工信息。
图2-2系统模块
3系统存储结构说明
3.1系统存储信息说明
系统储存的信息有职工号,姓名,性别,年龄,学历,工资数,地址,电话
职工号:
定义为长整型,由一串数字表示。
姓名:
定义为字符数组型,由一串字母表示。
性别:
定义为字符型,由一个字母表示。
(m表示男,f表示女)
年龄:
定义为整型,由一串数字表示。
学历:
工资:
地址:
电话:
定义为字符数组型,由一串数字表示。
3.2系统存储结构设计
系统中定义一个结构体来存储以上信息,使用结构体可以使问题变得简单,因为结构体允许用户自定义数据类型,而且允许一个结构体里面有多个数据项,这些数据项不需要是同一类型的数据项。
因此,结构提供了吧类型可能不同的数据项聚合成一个集合手段。
3.3系统文件使用说明
指针文件,先定义一个保存文件函数,然后定义一个文件指针,再打开那个指针文件,将内存中职工的信息输出到磁盘文件中去,最后关闭文件即可。
voidsave(intm)/*保存文件函数*/
{
inti;
FILE*fp;
if((fp=fopen("
D:
\\liushichang"
"
wb"
))==NULL)
{
printf("
cannotopenfile\n"
);
exit(0);
}
for(i=0;
i<
m;
i++)/*将内存中职工的信息输出到磁盘文件中去*/
if(fwrite(&
em[i],sizeof(structemployee),1,fp)!
=1)
printf("
filewriteerror\n"
fclose(fp);
}
4系统功能实现及代码描述
4.1输入职工信息
定义一个结构structemployee和数组em[N]用来存储N个职工的所有的信息(职工号em[i].number、姓名em[i].name、性别em[i].sex、年龄em[i].age、学历em[i].xueli、工资em[i].wage、住址em[i].addr、电话em[i].tel)。
通过for循环输入所有职工信息。
用printf语句提示需要输入的内容,接着用scanf语句输入相应内容。
输入完毕后套用保存函数save(n)将所输入的信息写入指定文件。
图4-1输入流程图
4.2浏览职工信息
声明整形变量i和m,其中i记录输出的职工序数,m用来接收传递过来的实参,用for循环输出每个职工的各种信息。
正确输入指令后输出所输入的所有职工信息。
图4-2浏览流程图
4.3查询职工信息
声明整形变量t,先用printf语句显示查询菜单,用scanf输入选择的查询方式代号,用switch(t)进入所选择的具体查询函数,包括按职工号查询、按姓名查询、按学历查询三种方式。
当t=1则表示按职工号查询,t=2表示按姓名查询,t=3表示按学历查询,t=4时返回主菜单。
图4-3查询流程
4.3.1按职工号查询
声明2个整形变量:
i记录职工的序数,number存放键盘输入的职工号。
调用导出函数load(m)(m表示当前的职工人数)。
通过scanf语句从键盘输入需要查询的职工号,并赋值给number。
用for循环,循环主体是先判断em.number中是否有输入的职工号,如果有,用printf语句输出与职工号相对应的该职工所有信息,再跳出循环;
如果没有,输出“对不起,查无此人”,并调用search()返回查询菜单。
图4-3-1按姓名查询流程图
4.4删除职工信息
先读出文件中所有职工的信息,并显示。
然后输入要删除职工的姓名,首先定义个局部变量name[](字符数组),用保存用户输入姓名。
用户输入name[]的值。
从职工数组下标为0的元素(即第一个元素)开始,逐个比较name和em[i].name的值,如果相等,就输出该职工的信息,同时将标志flag置为1,表示查找成功。
当查找最后一个职工,若flag=0,则表示查找失败,输出该职工不存在。
找到之后,将位于这个职工下一个的职工信息依次转移的该信息上来进行覆盖,然后再将接下来一个员工的信息转移到已被转移员工的位置上来….就这样循环下来直到将被删除职工之后所有的职工信息都转移完后,将总人数减1,再显示删除后所有职工的信息。
最后结束程序。
图4-4删除流程图
4.5添加职工信息
先输入要添加的人数n,m为已经有的人数,令i=m,判断i是否小于(m+n),当小于成立的时候,就依次输入一个职工的信息,并保存该职工的信息,再进行判断,直到把所有的信息都输入完的时候,就显示新的职工信息,最后结束。
图4-5添加流程图
4.6修改职工信息
然后输入要修改职工的姓名,首先定义个局部变量name[](字符数组),用保存用户输入姓名。
若找到该职工后,输入数字(1-8)分别表示为1.职工号2.姓名3.性别4.年龄5.学历6.工资7.住址8.电话,选择要对那个地方进行修改若选择错误系统就会提示选择错误,进入修改后,输入自己修改后信息并确认即可。
最后显示修改后所有的职工信息,系统再提示是否进行修改。
直到修改完毕后,结束程序。
图4-6修改流程图
5系统测试
5.1菜单函数
如果输入1-7以外的数字,就会显示输入错误。
输入正确的指令系统才开始工作。
5-1菜单函数
5.2职工信息的录入。
输入指令后,按系统提示依次输入相应的信息。
图5-2职工信息的录入
5.3职工信息的浏览。
输入相应指令浏览职工信息。
图5-3-1浏览职工信息
5.4职工信息的查询(按职工号,学历,姓名查询)以学历查询为例
如果未查到,系统就会显示查无此人。
图5-4-1职工号输入不正确,查无此人
输入正确指令,将会显示查询到的职工信息。
图5-4-2查询到的职工信息
5.5职工信息的删除。
先查找,输入职工的姓名即可;
若输入错误,系统提示查无此人。
图5-5-1职工姓名输入错误,查无此人
输入正确后才能删除职工信息。
图5-5-2删除职工信息
5.6职工信息的添加。
先输入自己要添加的人数,从而依次输入要添加的信息。
图5-6-1添加职工信息
添加完毕后,系统会显示新的职工信息。
图5-6-2新的职工信息
5.7职工信息的修改。
先查找职工,再选择修改的类型,修改完后保存。
图5-7修改职工信息
5.8退出系统。
图5-8退出系统
6设计心得与总结
经过对职工信息管理系统的分析与编写,我得到了很大的收获。
自主学习的是解决问题的基础。
这次设计使我重温了以前学过的各科知识,让我对C++编程有了更深刻的认识。
在设计过程中难免遇到困难,这时候要细心仔细寻找自己所出现差错的地方,碰到不懂的地方要及时向老师或者同学们请教,记住自己犯下的错误保证以后不再犯类似错误。
通过这次课程设计,也学到和巩固了许多计算机应用基础知识,对计算机的机体也有了一个较为详细的了解。
在具体操作中对这学期所学的C语言的理论知识得到巩固加强,达到实训的目的,也发现自己的不足之处,为我们以后的c语言学习奠定了基础。
C语言具有的语句简洁,使用灵活,执行效率高等特点使解决问题变得更简单。
这次课程设计让我发现上机操作的重要作用,通过实际操作,学会C语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。
总结出了一点点的经验如下:
(1)有明确目标,根据目标制定计划。
(2)要对系统的功能和要求做出详细的分析,并合理分解任务。
(3)把分解出来的子任务,做给一个相对独立的模块。
(4)在设计一个模块之前,要简单构想一下总界面的显视情况。
(5)针对构想出来的界面进行程序的编写。
7参考文献
[1]Brianw.Kernighan,DennisM.Ritchie.THECPROGRAMMINGLANGUAGE.北京:
清华大学出版社.2002./PRENTICEHALL,2001
[2]秦友淑.曹化工.C语言程序设计教程(第二版).武汉:
华中科技大学出版社,2002
[3]Alkelley,IraPohl.C语言教程(英文版.第4版).北京:
机械工业出版社,2004
[4]EricS.Roberts.C语言的科学和艺术(英文版).北京:
[5]严蔚敏,吴伟民.数据结构.北京:
清华大学出版社,1997
[6]王晓东.算法设计与分析.北京:
清华大学出版社,2003
[7]ISO的C语言标准:
ISO/IEC9899:
1999(E)
[8]S.P.Harbison,G.L.Steele.C语言参考手册.北京:
机械工业出版社,2003
[9]叶欣.徐金梧.TurboC使用大全.北京:
北京科海培训中心.1990
附录:
源程序清单
#include<
stdio.h>
windows.h>
string.h>
#defineN100
structemployee
longnum;
charname[20];
charsex;
intage;
charxueli[30];
intwage;
charaddr[30];
chartel[20];
}em[N];
/*定义一个结构体*/
voidmenu();
voidinput();
voidsave(int);
voiddisplay();
voiddel();
voidadd();
voidsearch();
voidsearch_num();
voidsearch_xueli();
voidsearch_tel();
voidmodify();
/*定义各函数*/
voidmain()
menu();
intn,flag;
chara;
do
printf("
请输入您的选择(1~7):
"
scanf("
%d"
&
n);
if(n>
=1&
&
n<
=7)
{
flag=1;
break;
}
else
flag=0;
您输入有误,请重新选择!
while(flag==0);
while(flag==1)
switch(n)
{case1:
printf("
------录入职工信息------\n"
\n"
input();
break;
case2:
------浏览职工信息------\n"
display();
case3:
------查询职工信息------\n"
search();
case4:
------删除职工信息------\n"
del();
case5:
------插入职工信息------\n"
add();
case6:
------修改职工信息------\n"
modify();
case7:
exit(0);
default:
getchar();
是否继续进行(yorn):
%c"
a);
if(a=='
y'
)
system("
cls"
/*清屏*/
menu();
/*调用菜单函数*/
请再次输入您的选择(1~7):
scanf("
else
exit(0);
voidmenu()/*菜单函数*/
printf("
-------------欢迎进入职工信息管理系统-----------\n"
1.录入职工信息"
2.浏览职工信息\n"
3.查询职工信息"
4.删除职工信息\n"
5.插入职工信息"
6.修改职工信息\n"
7.退出\n"
--------------------谢谢使用--------------------\n"
voidinput()/*录入函数*/
inti,n,flag;
请输入需要创建信息的职工人数:
scanf("
n;
i++)
do
请输入职工号(2011000-2011999):
"
em[i].num);
if(em[i].num>
=2011000&
em[i].num<
=2011999)
{
flag=1;
}
else
flag=0;
printf("
输入错误,请重新输入!
}while(flag==0);
请输入姓名:
%s"
em[i].name);
getchar();
do
请输入性别(f--女m--男):
em[i].sex);
if(em[i].sex=='
f'
||em[i].sex=='
m'
输入错误,请重新输入:
getchar();
请输入年龄:
em[i].age);
if(em[i].age<
=75&
em[i].age>
=18)
不科学,请重新输入!
请输入学历:
em[i].xueli);
请输入工资:
em[i].wage);
请输入住址:
em[i].addr);
请输入电话:
em[i].tel);
\n创建完毕!
save(n);
employee_list"
if(fwrite(&
intload()/*导入函数*/
inti=0;
if((fp=fopen("
rb"
else
fread(&
em[i],sizeof(structemployee),1,fp);
i++;
while(feof(fp)==0);
fclose(fp);
return(i-1);
voiddisplay()/*浏览函数*/
intm=load();
职工号\t姓名\t性别\t年龄\t学历\t工资\t住址\t电话\n"
for(i=0;
i++)/*m为输入部分的职工人数*/
%d\t%s\t%c\t%d\t%s\t%d\t%s\t%s\n"
em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
voiddel()/*删除函数*/
inti,j,n,t,flag;
\n原来的职工信息:
display();
请输入要删除的职工的姓名:
name);
for(flag=1,i=0;
flag&
if(strcmp(em[i].name,name)==0)
已找到此人,原始记录为:
\n确实要删除此人信息请按1,不删除请按0\n"
if(n==1)
for(j=i;
j<
m-1;
j++)
{
strcpy(em[j].name,em[j+1].name);
em[j].num=em[j+1].num;
em[j].sex=em[j+1].sex;
em[j].age=em[j+1].age;
strcpy(em[j].xueli,em[j+1].xueli);
em[j].wage=em[j+1].wage;
strcpy(em[j