C语言程序设计报告Word下载.docx
《C语言程序设计报告Word下载.docx》由会员分享,可在线阅读,更多相关《C语言程序设计报告Word下载.docx(19页珍藏版)》请在冰豆网上搜索。
3.程序流程
三、详细设计
1、数据结构
职工信息:
structemployee
{
intnum;
职工编号
charname[10];
职工姓名
intjiben;
基本工资
intjiangjin;
奖金
intshuikuan;
税款
intkoukuan;
扣款
intshiji;
实发工资
}em[100];
2、各个功能模块的处理流程
1.菜单函数
录入职工信息
浏览职工信息
查询职工信息
删除职工信息
修改职工信息
退出
}
2.录入函数
录入需要创建的职工数
创建完毕
调用保存函数
3.保存函数
创建文件并判断是否能打开
{
可打开文件则将内存中职工的信息输出到磁盘文件中去
不可打开文件则显示“无法打开文件”
{
写入文件出错则保存失败
}
}
关闭文件
4.导入函数
打开创建文件
如果不可打开则显示“无法打开文件”
否则导入文件
关闭文件
5.浏览函数
调用导入函数导入已保存的职工信息
6.删除函数
调用浏览函数
按照姓名删除
显示剩余内容
7.查询函数
选择查询方式
1.按照姓名查询
调用按姓名查询函数
2.按照编号查询
调用按编号查询函数
8.修改函数
调用导入函数
显示原来职工信息
按照姓名修改
按要求修改信息
浏览修改后的信息
四、源程序
#include<
stdio.h>
time.h>
string.h>
#defineN100
voidmenu();
voidinput();
voidsave(int);
voiddisplay();
voiddel();
voidsearch();
voidsearch_num();
voidsearch_name();
voidmodify();
voidmenu()
printf("
\n\t\t┏━━━━━━━━━━┓\n"
);
printf("
\t\t┣━━工资信息管理━━┫"
\n\t\t┗━━━━━━━━━━┛\n"
\n\t\t┏━━━━━━━━━━━━━━━━━━━━━━━━┓"
\n\t\t┃¤
¤
¤
┃"
\n\t\t┃¤
┏━━━━━━━━━━┓¤
┃"
┃┏━━━━━━━━┓┃¤
┃┃⒈录入职工信息┃┃¤
┃┃⒉浏览职工信息┃┃¤
┃┃⒊查询职工信息┃┃¤
┃┃⒋删除职工信息┃┃¤
┃┃⒌修改职工信息┃┃¤
printf("
┃┃⒍退出┃┃¤
┃┗━━━━━━━━┛┃¤
┗━━━━━━━━━━┛¤
\n\t\t┗━━━━━━━━━━━━━━━━━━━━━━━━┛\n"
voidmain()
{
intn,flag;
while
(1)
do
menu();
请选择你需要操作的步骤(1~6):
\n"
scanf("
%d"
&
n);
if(n>
=1&
&
n<
=6)
flag=1;
break;
else
flag=0;
您输入有误,请重新选择!
"
}while(flag==0);
switch(n)
case1:
输入职工信息\n"
input();
break;
case2:
浏览职工信息\n"
system("
cls"
display();
case3:
按职工编号查询职工信息\n"
search();
case4:
删除职工信息\n"
del();
case5:
修改职工信息\n"
modify();
case6:
gotola;
default:
la:
system("
\n\n\n\n\n谢谢使用!
voidinput()
inti,m;
请输入需要创建信息的职工人数:
m);
for(i=0;
i<
m;
i++)
请输入职工号:
"
em[i].num);
请输入姓名:
%s"
em[i].name);
getchar();
请输入基本工资:
em[i].jiben);
请输入奖金:
em[i].jiangjin);
请输入税款:
em[i].shuikuan);
请输入扣款:
em[i].koukuan);
em[i].shiji=em[i].jiben+em[i].jiangjin-em[i].shuikuan-em[i].koukuan;
\n创建完毕!
save(m);
voidsave(intm)
inti;
FILE*fp;
if((fp=fopen("
employee_list"
"
wb"
))==NULL)
printf("
cannotopenfile\n"
exit(0);
if(fwrite(&
em,sizeof(structemployee),1,fp)!
=1)
filewriteerror\n"
fclose(fp);
intload()
inti=0;
if((fp=fopen("
rb"
))==NULL)
else
do
fread(&
em,sizeof(structemployee),1,fp);
i++;
while(feof(fp)==0);
fclose(fp);
return(i-1);
voiddisplay()
inti;
intm=load();
\n职工号\t姓名\t基本工资\t奖金\t税款\t扣款\t实际工资\n"
for(i=0;
i++)/*m为输入部分的职工人数*/
\n%d\t%s\t%d\t%d\t%d\t%d\t%d\n"
em[i].num,em[i].name,em[i].jiben,em[i].jiangjin,em[i].shuikuan,em[i].koukuan,em[i].shiji);
按任意键继续\n"
getchar();
voiddel()
intm=load();
inti,j,n,t,flag;
charname1[10];
\n原来的职工信息:
display();
请输入要删除的职工的姓名:
scanf("
name1);
for(flag=1,i=0;
flag&
i++)
if(strcmp(em[i].name,name1)==0)
\n已找到此人,原始记录为:
\n%d\t%s\t%d\t%d\t%d\t%d\t%d\n"
\n确实要删除此人信息请按1,不删除请按0\n"
if(n==1)
for(j=i;
j<
m-1;
j++)
em[j]=em[j+1];
if(!
flag)
m=m-1;
else
\n对不起,查无此人!
\n浏览删除后的所有职工信息:
\n继续删除请按1,不再删除请按0\n"
t);
switch(t)
case0:
}system("
voidsearch()
intt,flag;
\n按姓名查询请按1;
按编号查询请按2;
返回主菜单请按3\n"
if(t>
t<
=3)
else
while(flag==1)
switch(t)
{
按姓名查询\n"
search_name();
按编号查询\n"
search_num();
main();
default:
voidsearch_name()
charname1[10];
inti,t;
请输入要查找的姓名:
for(i=0;
if(strcmp(name1,em[i].name)==0)
\n已找到此人,其记录为:
if(i==m)
\n对不起,查无此人\n"
返回查询函数请按1,继续按姓名查询请按2\n"
voidsearch_num()
intnum;
inti,t=0;
请输入要查找的编号:
num);
if(em[i].num==num)
\n已找到,其记录为:
返回查询函数请按1,继续按编号查询请按2\n"
voidmodify()
intb,c,i,n,t,flag;
请输入要修改的职工的姓名:
name);
if(strcmp(em[i].name,name)==0)
\n职工号\t姓名\t基本\t奖金\t税款\t扣款\t实际工资\n"
\n确实要修改此人信息请按1;
不修改请按0\n"
if(n==1)
\n需要进行修改的选项\n1.职工号2.姓名3.基本工资4.奖金5.税款6.扣款7.实际工资\n"
请输入你想修改的那一项序号:
c);
if(c>
8||c<
1)
\n选择错误,请重新选择!
if(flag==1)
switch(c)
职工号改为:
em[i-1].num=num;
姓名改为:
strcpy(em[i-1].name,name);
基本工资改为:
jiben);
em[i-1].jiben=jiben;
奖金改为:
jiangjin);
em[i-1].jiangjin=jiangjin;
税款改为:
shuikuan);
扣款改为:
koukuan);
em[i-1].koukuan=koukuan;
case7:
实际工资改为:
shiji);
em[i-1].shiji=shiji;
}
\n是否确定所修改的信息?
\n是请按1;
不,重新修改请按2:
\n"
b);
}
while(b==2);
\n浏览修改后的所有职工信息:
\n继续修改请按1,不再修改请按0\n"