职工信息管理C语言程序设计报告Word文档下载推荐.doc
《职工信息管理C语言程序设计报告Word文档下载推荐.doc》由会员分享,可在线阅读,更多相关《职工信息管理C语言程序设计报告Word文档下载推荐.doc(38页珍藏版)》请在冰点文库上搜索。
![职工信息管理C语言程序设计报告Word文档下载推荐.doc](https://file1.bingdoc.com/fileroot1/2023-5/11/e9ad1049-5cd7-4514-b644-a4978a6edaf4/e9ad1049-5cd7-4514-b644-a4978a6edaf41.gif)
4.总体设计流程图
开始
主菜单
选择功能
显示模块
追加模块
修改模块
删除模块
查询模块
排序模块
退出模块
保存修改后的数据
结束
二概要设计
1抽象数据类型定义
Structstu;
{longintzgh;
/*职工号*/
Charname[10];
/*姓名*/
Charxb[4];
/*性别*/
Intnl;
/*年龄*/
Charxl[10];
/*学历*/
Doublegz;
/*工资*/
Charbm[15];
/*部门*/
Charzc[10];
/*职称*/
}s[40]
2系统模块组成及其功能
主函数voidmain()
显示函数voidDisp()
功能:
显示数据库中职工的所有信息。
追加函数voidAppe()
加入你想加入的职工的信息,可以追加多条,也可以追加多次。
修改函数voidModi()
修改你想修改的职工的信息,可以修改职工的某项信息,也可以修改多项信息,还可以多次修改其他职工的信息,你可以通过选择职工号
或者职工的姓名二种方式进行修改职工的信息,。
删除函数voidDele()
功能:
删除你想删除的职工的所有信息,可以多次删除,同样可以通过职工号或者职工的姓名二种方式进行删除,删除后会显示删除结果。
查询函数voidQuery()
可以通过该函数来查询你所需职工的所有信息并显示,同样你可以选择是按职工号、职工的姓名、工资或者部门来查询,当你查询的职工不存在时系统还会提示你,你所查询的职工不存在。
排序函数voidSore()
通过该函数完成按职工工资降序排列并显示。
完成退出程序。
三详细设计
1用C语言定义相关数据
Structstu
/*职工号*/
Charname[10];
/*姓名*/
Charxb[4];
/*性别*/
Intnl;
/*年龄*/
Charxl[10];
/*学历*/
Doublegz;
/*工资*/
Charbm[15];
/*部门*/
Charzc[10];
/*职称*/
}s[40];
2各模块的类C码算法
1职工信息显示函数
voidDisp()/*显示模块*/
{
inti;
定义循环变量
system("
COLOR1f"
);
调整显示界面颜色;
for(i=0;
i<
N;
i++)利用for循环将数据库的内容出来
printf("
输出职工信息);
}
2职工信息的追加函数
voidAppe()/*追加模块*/
{inti,p,t;
voidWr_file();
printf("
请输入你想添加的职工个数:
"
scanf("
%d"
&
i);
for(p=0;
p<
i;
p++)(利用for循环追加想要追加的职工的个数)
}printf("
你还想要追加吗?
是请按1否请按2"
scanf("
t);
if(t==1)Appe();
printf(“追加后的信息为:
”);
3职工信息修改函数
voidModi()/*修改模块*/
{intn,c,p,i,b=1,j=0,k=1;
charfname[10];
intlongr;
system("
COLOR9f"
(控制颜色)
voidWr_file();
printf("
请选择修改方式\n"
1:
职工号2:
姓名\n"
n);
switch(n){输入工号或姓名}
for(i=0;
i++)
{case1:
for(b=1;
b<
2;
)
{printf("
请输入职工号:
%ld"
r);
for(i=0;
if(s[i].zgh==r)
{p=i;
j=1;
switch(j)
{case0:
无此人信息\n"
scanf("
b);
break;
case1:
for(;
k<
{printf("
请选择修改项目\n"
);
c);
switch(c)(修改并保存)
Wr_file();
printf("
你还要修改此人其他项目吗\n"
yes2:
no\n"
scanf("
k);
}if(k==1)continue;
(若是k==1则继续修改此人的信息) printf("
你还要修改其他职工的其他项目吗\n"
printf("
yes2:
if(k==1)continue;
}break;
case2:
请输入姓名:
%s"
fname);
for(i=0;
if(strcmp(s[i].name,fname)==0)(判断是否找到这个人)
{p=i;
}
{switch(j)
case0:
switch(c)(修改并保存)
printf("
你还要修改此人其项目吗\n"
printf("
scanf("
}break;
}
printf("
你还要修改其他职工的其他项目吗?
\n"
scanf("
}break;
}break;
(修改完了输出)
}
}
4职工信息删除函数
voidDele()/*删除模块*/
{inta,b,c,d,x,p,i,j=0;
charsname[10];
longintsgh;
system("
COLOR5f"
voidQuit();
(退出函数)
printf("
请选择删除方式\n"
x);
switch(x)
for(c=1;
c<
{printf("
请输入删除工号\n"
sgh);
if(s[i].zgh==sgh)
{b=i;
无此人\n"
还要删\n"
1.yes2.no\n"
选择是否还要删除
scanf("
case1:
是否删除此人\n"
a);
switch(a)
{case1:
for(p=(b+1);
p++)
{d=b+1;
s[b]=s[d];
b++;
N=N-1;
Wr_file();
printf("
还要删除吗\n"
1.yes2.no\n"
选择是否还要删除?
scanf("
case2:
c=2;
}
}break;
case2:
)(按姓名进行删除,用for循环控制)
请输入删除姓名\n"
sname);
if(strcmp(s[i].name,sname)==0)
{b=i;
switch(j)
{case0:
是否还要删除\n"
scanf("
选择是否删除?
printf("
5职工信息查询函数
voidQuery()/*查询模块*/
{inti,t,flag;
longintb;
chars1[8];
printf("
选择按职工号||姓名||工资||部门查询"
查找该职工并显示其信息}
6职工信息排序函数
voidSort()/*排序*/
{inti,j;
structstus1;
(定义一个结构体中间变量)
COLOR6f"
(控制颜色)
for(i=0;
N-1;
for(j=i+1;
j<
j++)
if(s[i].gz<
s[j].gz)
{s1=s[i];
s[i]=s[j];
s[j]=s1;
}(交换结构体的值)
}
7退出函数
voidQuit()/*退出*/
{printf("
******Thankyoubye******\n"
3函数的调用关系图
Voidmain()
voidDisp()
voidAppe()
voidModi()
voidDele()
voidSort()
voidQuery()
voidQuit()
四调试分析(包括流程图和截图)
1显示模块N-S图
显示第i个职工的信息
j打开rsdak文件
For(i=0;
fread()!
=;
i++
显示读出第i个职工的信息
打开nwersk文件
将第i个职工的数据写入文件
关闭neaersk文件
2.追加模块流程图
否
选择追加模块
主菜单
开始
输入要追加的个数
P=0
P<
i?
输入要追加职工的信息
N++
P++
还追加吗?
3.查询模块的流程图
开始—选择5
输入职工号或姓名或工资或部门
选择按什么方式寻找这个人i
职工号或姓名在数据库中是否存在
是
显示找到的这个职工的信息
按职工
按姓名
返回
按部门
按工资
4.排序模块的流程图
开始
定义一个结构体s1
I<
N-1?
?
I=0
j=i+1,
J<
N?
s[i].gz<
s[j].gz?
s1=s[i];
交换结构体的值
j++
I++
选择排序模块
5.修改模块的流程图
选择修改模块
选择修改方式
职工号
姓名
退出
输入职工号或姓名
输入职工号
输入姓名
职工号是否存在
姓名是否存在
选择要修改哪一项信息并修改
选择要修改哪一项信息
并修改
还要修改吗
6删除模块流程图
选择删除模块
选择删除方式
是否存在
姓名是否存在?
确认删?
删除
是否还继续
是否继续?
是是
7.各个模块的截图及说明
运行程序,进入主菜单,显示如图所示:
系统提供了七个选项,可以通过选择数字进入你需要的模块操作。
选择1显示模块的截图如下图所示:
按任意键返回主菜单,选择菜单2进入追加模块的操作,追加模块的截图如下所示:
在该模块的操作中可以选择追加一条,也可以追加多条。
按任意键退出,选择3进入修改模块的操作截图如下所示:
可以修改一个职工的某项信息也可以修改多项信息,还可以修改其他职工的信息。
按任意键退出该模块,选择4进入删除模块的操作,截图如下:
可以按照两种方法删除当输入的人不存在是系统会给出提示此人不存在,可以进行多项删除。
按任意键退出,选择5进入查询模块的操作,截图如下:
该模块可以选择4种方式进行查询,当查询的信息不存在时,会给出此人不存在的提示,按5键退出查询模块。
按任意键退出后进入主菜单,选择6进入排序模块的操作,截图如下:
该排序是按员工的工资降序排列的。
选菜单7退出系统截图如下:
五总结
在整个C语言的学习过程中让我学会了很多,老师也非常用心的教我们这门课程,带我们进入了这门课程的学习。
刚开始的时候是最艰难的,在这里我要感谢老师的用心教导,让我慢慢学会了该怎样去学习这种与机器对话的语言。
经过半年的学习,我们迎来了将近一周的课程设计,刚拿到题目我吓到了,啊,要编这么多啊,而且还这么的难,但下来后通过查找资料,通过仔细思考以及组员的帮助,我还是完成了这次的设计任务。
在这次设计中我是负责编查询模块的,另外我还编了排序模块,编的过程中遇到了很多的问题,但还是一一解决了,但在调试的过程中还是出现了很多的错误,这就需要我们仔细的发现问题和培养解决问题的能力,在这个方面我还是学习的不够。
所以在以后的学习过程中我应该要培养自己的逻辑思维能力。
在设计程序时首先要理解各个模块的作用,只有这样才能为设计好程序做好铺垫。
在这次程序设计中我发现了其他组员的设计模块还存在着不足,这就需要我们认真思考程序中存在的不足,同时可以和其他组的同学一起讨论,学习的过程交流也是非常重要的。
此外课后我们还需要和老师多交流,好好利用学习资源。
程序答辩时我的程序出现了一点点小问题,虽然通过自己的检查还是解决了问题但它教会了我在平时要更用心的去检查和调试程序。
通过这次一周的程序设计我明白只有抱着认真的态度才能做好每一件事,最后我要感谢我的老师,谢谢你的用心指导。
六参考文献
《C语言程序案例分析》人民邮电出版社
《C语言程序设计》(第2版)北京邮电大学出版社
《C程序设计》(第三版)清华大学出版社
《C语言程序设计案例分析》人民邮电出版社
七程序原代码
#include"
stdio.h"
#include<
stdlib.h>
string.h"
conio.h"
intN=0;
structstu
{longintzgh;
/*职工号*/
charname[10];
/*姓名*/
charxb[4];
/*性别*/
intnl;
/*年龄*/
charxl[10];
/*学历*/
doublegz;
/*工资*/
charbm[15];
/*部门*/
charzc[10];
/*职称*/
}s[40];
voidRe_file()
FILE*fp;
定义一个指针文件
fp=fopen("
D:
\\rsdak.txt"
"
r"
打开文件所指的文件,进行读取文件里的内容
while(fscanf(fp,"
%ld\n%s\n%s\n%d\n%s\n%lf\n%s\n%s\n"
s[N].zgh,s[N].name,s[N].xb,&
s[N].nl,s[N].xl,&
s[N].gz,s[N].bm,s[N].zc)!
=EOF)N++;
fclose(fp);
关闭文件
}
voidWr_file()
{inti;
FILE*fp;
fp=fopen("
\\nwersk.txt"
w"
打开文件把文件里的内容写到新的文件里
for(i=0;
fprintf(fp,"
s[i].zgh,s[i].name,s[i].xb,s[i].nl,s[i].xl,s[i].gz,s[i].bm,s[i].zc);
fclose(fp);
{ inti;
system("
COLOR2f"
***********************************************************************\n"
printf("
职工号姓名性别年龄学历工资部门职称\n"
i++)用for循环把职工的信息显示出来
{
printf("
%-6ld%-6s%-4s%-5d%-7s%-10.2lf%-10s%-4s\n"
}
************************************************************************\n"
p++) 定义P来控制追加