职工信息管理系统设计Word文档格式.docx

上传人:b****1 文档编号:14332398 上传时间:2022-10-22 格式:DOCX 页数:35 大小:299.83KB
下载 相关 举报
职工信息管理系统设计Word文档格式.docx_第1页
第1页 / 共35页
职工信息管理系统设计Word文档格式.docx_第2页
第2页 / 共35页
职工信息管理系统设计Word文档格式.docx_第3页
第3页 / 共35页
职工信息管理系统设计Word文档格式.docx_第4页
第4页 / 共35页
职工信息管理系统设计Word文档格式.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

职工信息管理系统设计Word文档格式.docx

《职工信息管理系统设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《职工信息管理系统设计Word文档格式.docx(35页珍藏版)》请在冰豆网上搜索。

职工信息管理系统设计Word文档格式.docx

三、实验总体设计

录入函数

用键盘输入职工信息

写入文件

将信息写入指定文本文件

导出函数

将信息从文件中导出放在结构数组中

浏览函数

将所有信息显示在屏幕上

显示主菜单

查询函数

按职工号查询、按学历查询、按电话查询

删除函数

删除原有的职工信息

添加函数

添加新的职工信息

四、实验详细设计

1.菜单函数menu

使用printf语句在屏幕上打印出工作菜单,包括录入职工信息、浏览职工信息、查询职工信息、删除职工信息、添加职工信息、修改职工信息、退出。

2.主函数main

调用菜单函数menu,显示系统工作菜单,罗列该系统所有功能。

运用do…while语句和选择函数switch即可根据使用者所输入的功能代号进入对应的功能程序。

程序开头的宏定义defineN指定首次输入的职工人数为100,可根据不同需要随时更改。

3.录入函数input

 

定义一个结构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(m)将所输入的信息写入指定文件。

4.保存文件函数save

定义文件指针fp,创建文件并用if语句判断能否打开,若fopen返回值不为0,则可继续下面操作。

用for循环通过fwrite语句将结构数组em中的内容写入保存在D盘的文本文件里面。

形参m指需要写入文件的职工人数。

最后关闭文件。

5.导出函数load

首先判断文件打开是否成功,若fopen返回值不为零,继续下面操作。

用do…while循环通过fread语句将文件中的职工信息取出放到em结构数组里面。

6.浏览函数display

声明整形变量i和m,其中i记录输出的职工序数,m用来接收调用浏览函数时所传递过来的实参,接着将其值传递给导出函数load(m),使得导出的职工人数与浏览的职工人数保持一致。

通过调用load函数后(即给em数组附值),用for循环输出每个职工的各种信息。

7.删除函数del

声明整形变量i,j,n,t,flag和char形数组name[20]。

调用浏览函数display(),显示所有职工信息,便于使用者审阅需删除的对象。

用printf语句提示“输入要删除的职工名字”,接着用scanf语句输入删除对象名字。

用for循环,循环主体是先判断em.name中是否存在所输入的名字(调用字符串比较函数stecmp)。

若存在,printf语句提示是否确认删除,用scanf语句输入确认指令,再用for循环从要删除的这个职工开始,依次用后一个职工的信息覆盖前一个的。

循环结束后当前职工人数m自减1,并保存,跳出大循环;

若不存在,输出“输入错误,无此人”。

printf提示下一步操作“\n继续删除请按1,不再删除请按0\n”。

switch根据键盘输入的指令代号选择下一步连接的函数。

8.添加函数add

声明整形变量i,n,m,定义文件指针fp,用追加的方式打开文件,printf提示“输入要添加的人数”scanf输入要添加的人数存放在n。

用for循环输入要添加的职工信息,浏览增加后的所有职工信息。

将输入的新信息追加写入文件保存。

关闭文件。

9.查询函数search

声明整形变量t,先用printf语句显示查询菜单,用scanf输入选择的查询方式代号,用switch(t)进入所选择的具体查询函数,包括按职工号查询、按学历查询、按电话查询三中方式。

10.按职工号查询search_num

声明两个整形变量:

i记录职工的序数,num存放键盘输入的职工号。

调用导出函数load()表示当前的职工人数。

通过scanf语句从键盘输入需要查询的职工号,并赋值给num。

用for循环,循环主体是先判断em.num中是否有输入的职工号,如果有,用printf语句输出与职工号相对应的该职工所有信息,再跳出循环;

如果没有,输出“查无此人”,并调用search()返回查询菜单。

按学列查询和按电话查询与此方法类似,就不多说,以下只附按职工号查询程序流程图。

五、调试与测试

整个程序代码是分块书写的,每个函数都可以独立运行。

只有输入函数查询、菜单函数写得很顺利,一次性就能够成功运行,其他函数在调试过程中或多或少都出现了问题。

而且串联所有函数时,调试提示出错:

有几个函数“redefinition;

differentbasictypes”解决:

在函数名前加void指明类型。

1.保存函数save()在调试和链接的时候都没有出现错误提示,但在运行的时候出现了问题。

写入指定位置的文件,打开后总会有乱码。

与c语言课本上的例题对照后发现,我写的fopen指向的文件没有指定文件的存储类型。

2.导出函数load()遇到一个问题。

是用fscanf语句时,漏写地址符。

调试和链接都没问题,但点击运行后,总出现一个提示出错的蓝色小窗口。

经过网上的查询发现了原因所在。

解决:

在em[i].name等之前加上地址符。

3.浏览函数display()遇到的问题虽然不大,但解决起来很麻烦。

理想的运行结果是美观整齐。

即下面的职工信息分别与第一个printf输出的中文项目提示对齐。

解决方法:

不断修改空格个数,不断运行察看效果。

4.按学历查询函数search_xueli(),要考虑输入一种学历,可能对应出很多职工,这就不能延用按姓名和职工号查询中判断是否输入错误的方法了。

为了显示出所有具有该学历的职工,就需要让for循环一直运行到最后一个为止。

这时计量数i始终会等于职工人数,不能再用i来判断是否不存在此人。

这就需要再定一个整形变量k,用来计量单独的一个循环次数。

5.删除函数del()的难点在于多次删除。

即在删除掉第一个人以后,现有职工人数发生改变,而宏定义中的N却是不变的。

最开始我想到了用static定义一个整形变量a来计量当前人数。

这在单独运行删除函数时,可以成功的连续删除。

最后所有函数串在一起时,有了更好的解决方法—指针。

6.添加函数add()遇到的问题是用printf输入新职工信息后,保存到文件里面,发现原有的信息不见了。

文件打开方式改用"

a"

追加写入。

六、源程序代码

#include<

stdio.h>

windows.h>

time.h>

string.h>

#defineN100

structemployee

{

intnum;

charname[10];

charsex;

intage;

charxueli[30];

intwage;

charaddr[30];

longinttel;

}em[100];

/*定义一个结构体*/

voidmenu();

voidinput();

voidsave(int);

voiddisplay();

voiddel();

voidadd();

voidsearch();

voidsearch_num();

voidsearch_xueli();

voidsearch_tel();

voidmodify();

/*定义各函数*/

voidmenu()/*菜单函数*/

printf("

\n"

);

******************职工信息管理****************\n"

1.录入职工信息"

2.浏览职工信息\n"

3.查询职工信息"

4.删除职工信息\n"

5.添加职工信息"

6.修改职工信息\n"

7.退出\n"

********************谢谢使用******************\n"

}

voidmain()

{

menu();

/*调用菜单函数*/

intn,flag;

chara;

do

{

printf("

请选择你需要操作的步骤(1--7):

scanf("

%d"

&

n);

if(n>

=1&

&

n<

=7)

{

flag=1;

break;

}

else

flag=0;

printf("

您输入有误,请重新选择!

"

}

while(flag==0);

while(flag==1)

switch(n)

case1:

printf("

◆◆◆输入职工信息◆◆◆\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();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 视频讲堂

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1