程序设计训练报告.docx
《程序设计训练报告.docx》由会员分享,可在线阅读,更多相关《程序设计训练报告.docx(20页珍藏版)》请在冰豆网上搜索。
程序设计训练报告
程序设计训练
报告
一、设计题目
二、开发平台
三、需求分析
四、信息描述
五、总体分析
(一)、定义结构体体变量
(二)、功能模块
(三)、流程图
六、运行界面设计
七、设计心得
八、附录
源程序代码
一、设计题目:
职员管理系统
二、开发平台
开发平台:
VC++6.0企业版,
使用系统,winXP以上
三、需求分析
1、该程序可用于对企业员工工资情况基本信息的保存、查询等操作,以实现对企业员工工资的管理。
2、其中更新功能包括:
添加工资信息、删除工资信息、修改工资信息、可根据需要添加一个或多个员工工资信息,也可对个别员工信息进行适当的删除或修改。
以便随时更新员工工资信息。
3、程序中设计的查询功能可根据需要从若干数据中查询某个员工信息,并且可根据两种不同的方法查询:
按工作证号查询和按查询。
以满足不同的需要。
四、信息描述
职工信息包括职工号、、基本工资、奖金、扣款、税款,实发工资。
五、总体方案
(一)定义结构体体变量typedefstructemployee
保存职工编号
保存职工
保存职工基本工资
{
charnum[10];//
charname[15];//
floatjbgz;//
floatkk;//
保存职工扣款
floatyfgz;//
保存职工应发工资
doublesk;//
保存职工税款
doublesfgz;//
保存职工实发工资
}ZGGZ;
(二)功能模块
菜单模块:
显示职工管理系统的主菜单,供用户选择所需的功能,通过自己定义的voidmenu()函数来实现。
(1)输入模块
按照编号,,基本工资,奖金,扣款的顺序输入信息,税金和实
发工资根据输入的信息进行计算得到,这些信息被录入到文件中。
通
过自己定义的voidinput()函数来实现。
(2)删除模块
按照用户的意愿删除指定的信息。
通过自己定义的voiddel()
函数来实现。
(3)查询模块
实现按照工资卡号和的查询,采用基本的查找方法即可。
通过自己定义的voidsear()函数来实现。
(4)修改模块
按照用户的意愿修改已输入的信息。
通过自己定义的voidmodi
()函数来实现。
(5)插入模块
在用户指定的位置插入信息。
通过自己定义的voidinsert()函
数来实现。
(6)显示模块
在窗口处显示输入的信息。
通过自己定义的voiddisplay()
函数来实现。
(7)保存模块
保存输入的信息
(8)退出模块
(三)、流程图
(1)主函数提供输入、处理和输出部分的函数调用,各功能模
块采用菜单方式选择
7
退出
录入职工基本工资信息
删除职工基本工资信息
查询职工基本工资信息
王采单
修改职工基本工资信息
王采单
王采单
插入职工基本工资信息
7.
使用说明
1.初始界面
reL.t>rArecord
t'tcurd
re^urdrecord
0\CQMMQN\M5Dev9a\BiFAI>et>ugU^ie
H
©S3
2.输入模块
回S3
rec.orielrecordi^^iznrdrecurd
rcciujrilrecord
.查询模块
Leauttenter90ucImj丄匚芒£0—"?
〉
■■'D:
\MicrD5oftVisual^1udio\C€iMlUON\M5D«v93\Ein\DetM4g\l.exe
回sa
record
recordrecord
recordi*ecaiFd.recordrecord
02
#
*1W3*5*7
请输入职工的编号;(踐虫谑回土菜单)aEinpnuee£ustem
V显小
*0退岀
不工贸=&O83.B0Q00B
藝金=500.960300卫霖lfle.ramaa宇衣工遥;&403.000000廉款:
Z7C.凶也阳U茸古T資:
^i3n,mnmn星誉继蕪查隊是按呉否则请按任意值
5•修改模块
回S3
」着03•賢聊倆;;编杲:
工.;按的fe号呂44^"皆止人的編姓荼新,
入e条工丄工工工插祢-职职职噩综人入入入入入人继输输K口
■'D^Micrusoftvi^u^l5Uidio\COMMQN\M5Dev?
3\Bih\[tetMjg\LjeJfe'
己蓼n岗芒髏輟躍能?
復籐
Hii'l.
.插入模块
'L\'v1icrD5O'ttVisualStudio\C匸R/WldiFW八£1)£、甘由上in\L亡nu才l.*e
.显示模块
>1
recordrecordrei;t>rilrecord
*leasesritsr90uelimiceCB—?
>
员二蛊号営朋
甚态工資:
^009.000009
:
1耳0.用口冈
工遥:
&3Q3.0BO800
:
Zbb.9MSU0U
T姦翊5.ffiWW»口
8•保存模块
特7•保存record*tJ15x1*色CQiMi
jJkJ—kJkJjJfa.hJIBrfUJ■BJkJEJkJBJNILi.kJHkaU—2kJWkJLJ.乜2程2也
Lcaacenteryouc}»icc(07〉
号宕歩款一编姓董扣一-Cn-jtn-CnL^J-工工工工工_职职职职职一入入入入入一一雷诘簷一
(溯返回工菜单〕
」賛:
5U0B
:
;(按。
返回主菜单)
Empo^eeSystem
di
*1
*3
*5
*7
record,recurdrecordrecord
i*eco>drecordrecordrecoi'd
leaseenter90Uchoice(0—?
>
Errbpu^eeS^Lem
加询人存
M*3*5*7
recnrdlrecordrecordlpecord
Tuturdrecordi*ecoi*d
KMMMMMKMMMMM'KMMMXMMWMM:
MMMMMMMWX^rKMMSCKMXMM
Leaseenteryouchoicetld—Z>
9.退出模块
Enipo^eeS^teni
«2剁陰i-ctord*4修识record斑良示record«0土record
IOsg
■?
Bye
recordrecordrecordrccordl
P?
le^aseenteryouchoice:
(0—7〉
Ihankyouforyouruse
八、设计心得
通过这几天的努力,职工工资管理系统的设计已基本完成。
在本次课程设计中,我充分领略了C语言功能的强大,包括函数、数组、指针、结构体、文件等。
职工工资管理系统是一个很实用并且使用广泛的操作系统。
此系
统可以减少很多工作量,做到设计合理,便于使用,易于操作;界面友好,容错性高,可在很短的时间,查找出所需的职工工资资料,提高工作效率。
该系统具有添加、显示、查询、修改、删除等基本功能,以方便对工资的各项管理操作。
每一条记录包括一个职工的工号、、工资等信息,系统的各个功能模块都用函数的形式来实现,可以将职工
信息保存在文件中,并从文件中读取出来
总的来说,通过这次程序设计,使我加深了对C语言的认识,进一步熟悉了对C语言功能的灵活运用,而且加深了我对程序的理解和编写能力,通过文献资料和网络资料的帮助,使我对C语言程序设计这一基础学科又一次加深了认识,也意识到了其具有的强大功能和发展前景。
这会对以后的学习有所帮助。
九、附录
源程序代码:
#inelude#includevstring.h>
typedefstructemployee
}ZGGZ;
voidmenu()
n*****************************************、v
printf("
*1
添加
record
*2
删除
record'n");
printf("
*3
查询
record
*4
修改
record\n");
printf("
*5
插入
record
*6
显示
record\n");
printf("
*7
保存
record
*0
退出
record'n");
printf("
*****************************************、n");
printf("Pleaseenteryouchoice(0-7)\n");}
intinput(ZGGZa[],intk)
{
intj,x;
charstr[10];j=x=O;while
(1)
{
printf("请输入职工的编号:
(按0返回主菜单)");
seanf("%s",str);
strcpy(a[k].num,str);
for(j=0;jvk;j++)
{
if(strcmp(a[j].num,str)==0)
{
printf(”已经有工号为%s的员工信息!
请重新输入员
工号。
\n”,str);
printf("请输入职工的编号:
");
scanf("%s",str);
strcpy(a[k].num,str);
}
}if(strcmp(a[k].num,"0")==0)
break;
printf("请输入职工的:
");
scanf("%s",a[k].name);
printf(”请输入职工的基本工资:
");
scanf("%f",&a[k].jbgz);
seanf("%f",&a[k].jj);
printf("请输入职工的扣款:
");
seanf("%f",&a[k].kk);
a[k].yfgz二a[k].jbgz+a[k].jj-a[k].kk;
a[k].sk=a[k].yfgz*(0.05);
a[k].sfgz=a[k].yfgz*(0.95);
k++;
}
returnk;
}
intdel(ZGGZa[],inty)
{
inti=0;
intx=0;
charstr[15];
printf("请输入你要删除的编号或:
");
scanf("%s",str);
printf("删除成功\n");
for(i=0;iif(!
strcmp(str,a[i].num)||!
strcmp(str,a[i].name))
while(ivy)
strcpy(a[i].num,a[i+1].num);
strcpy(a[i].name,a[i+1].name);
a[i].jbgz=a[i+1].jbgz;
a[i]jj=a[i+1].jj;
a[i].kk=a[i+1].kk;
a[i].sfgz=a[i+1].sfgz;
a[i].sk=a[i+1].sk;
a[i].yfgz=a[i+1].yfgz;
i++;
}
x++;
}
if(x==O)
{
\n");
printf("输入的编号或不存在,请重新输入:
}
returny-x;
}
voidsear(ZGGZa[],inty)
inti;
intx=0;
charstr[15];
printf(”请输入你要查找的编号或:
");
scanf("%s",str);
for(i=0;iif(!
strcmp(str,a[i].num)||!
strcmp(str,a[i].name))
{
printf(”
员工编号为%s\n",a[i].num);
printf(”
员工为%s\n",a[i].name);
printf(”
基本工资:
%f\n",a[i].jbgz);
printf(”
奖金:
%f\n",a[i].jj);
printf(”
扣款:
%f\n",a[i].kk);
printf(”
应发工资:
%f\n",a[i].yfgz);
printf(”
税款:
%f\n",a[i].sk);
printf(”
实发工资:
%f\n",a[i].sfgz);
x++;
}if(x==0)
{
return;
}
}
voidmod(ZGGZa[],inty)
{
inti;
intx=0;
charstr[15];
printf("请输入你要修改的编号:
");
scanf("%s",str);
for(i=0;iif(!
strcmp(str,a[i].num)||!
strcmp(str,a[i].name))
{
printf("请输入修改后职工的:
");
scanf("%s",a[i].name);
printf(”请输入修改后职工的基本工资:
");
scanf("%f",&a[i].jbgz);
printf("请输入修改后职工的奖金:
");
scanf("%f",&a[i].jj);
seanf("%f",&a[i].kk);
a[i].yfgz=a[i].jbgz+a[i].jj-a[i].kk;
a[i].sk二a[i].yfgz*(0.05);
a[i].sfgz=a[i].yfgz*(0.95);
x++;
}if(x==0)
{
printf("未找到要修改的编号\n");
}
}
intinsert(ZGGZa[],inty)
{
inti;
intx=0;
charstr[15];
printf("请输入你要插入的编号:
");
scanf("%s",str);
for(i=0;iif(strcmp(str,a[i].num)==0)
{
x=i;
for(i=y;i>x+1;i--)
{
a[i].jbgz=a[i-1].jbgz;
a[i]jj=a[i-1].jj;
a[i].kk二a[i-1].kk;
a[i].sfgz=a[i-1].sfgz;
a[i].sk=a[i-1].sk;
a[i].yfgz=a[i-1].yfgz;
strcpy(a[i].name,a[i-1].name);
strcpy(a[i].num,a[i-1].num);
}
}
x++;
printf("请输入职工的编号:
");
scanf("%s",a[x].num);
printf("请输入职工的:
");
scanf("%s",a[x].name);
scanf("%f",&a[x].jbgz);
seanf("%f",&a[x].jj);
printf(”请输入职工的扣款:
");
seanf("%f",&a[x].kk);
a[x].yfgz二a[x].jbgz+a[x].jj-a[x].kk;
a[x].sk=a[x].yfgz*(0.05);
a[x].sfgz=a[x].yfgz*(0.95);
returny+1;
}
voidsave(ZGGZa[],intn)
{
FILE*fp;
inti;
if((fp=fopen("sj.txt","wb"))==NULL)
{
printf("cannotopenfile\n");
return;
}
for(i=0;iif(fwrite(&a[i],sizeof(structemployee),1,fp)!
=1)felose(fp);
-<烟><.
ev)①ZX
+土-(ZBS.曰5.UV%-SS・・)匕U一」d5S.曰5.UV%-S・・)匕£」d-(ZBA.曰5.UV%-SS・・)匕u一」d仝亠曰5.UV%-S・・)匕£」d◎曰5.UV%・・)匕£」d-(Z6qr曰5.UV%-烟H<«・・)匕£」d-OTUJeu.曰5.5S%FH吧・・)匕£」d-Enu.曰5.5S%氷申專Hns・・)匕£」d厂5=)匕£」d
op
宀
c」n05」
F.USKUU①①」es①-匚=)44£」d
(OKU)七
o上茎一
(u茎二」ez00z)Ae_ds一ppo>
voidmain()
{
intselete,c=0;
inti=0;
intz=0;
charq,p,x,s;
ZGGZb[100];
FILE*fp;
if((fp=fopen("sj.txt","rb"))二二NULL)
printf("NotFound!
\n");
else
{
do
{
fread(&b[i],sizeof(structemployee),1,fp);i++;
}while(!
feof(fp));
fclose(fp);
c=i-1;
}
while
(1)
menu();
seanf("%d",&selete);
if(selete==O)
{
printf("Thankyouforyouruse(A_A)Bye\n");
break;
}
switeh(selete)
{
ease1:
e=input(b,c);break;
ease2:
{
display(b,e);
do
{
e=del(b,e);
printf(”是否继续删除,是按y,否则请按任意值\n");
getchar();
seanf("%c",&p);
}while(p=='Y'||p=='y');
break;
case3:
{
do
{
sear(b,c);
printf(”是否继续查找,是按y,否则请按任意值\n");
getchar();
scanf("%c",&x);
}while(x=='Y'||x=='y');
break;
}
case4:
{
display(b,c);
do
{
mod(b,c);
printf(”是否继续修改,是按y,否则请按任意值\n");
getchar();
scanf("%c",&q);
}while(q=='Y'||q=='y');
break;
}
case5:
{
do
{
c=insert(b,c);
printf(”是否继续插入,是按y,否则请按任意值\n");
getchar();
scanf("%c",&s);
}while(s=='Y'||s=='y');
break;
}
case6:
display(b,c);break;
case7:
save(b,c);break;
default:
printf("Pleasetryagain\n");
}
}
}
.参考资料.
Effipoi/eeS^stern
且ker■er尸ek尸rizr民
*1
*a
*5进丿;record**6i*ecan
*7保佇rtcurd*0record
*—N』21“47*"士《JJH士7jji_ifcj“—I■Jfcj』—I—Aji_»im7廿
PLehaa日enter90uchoice(0—
请嶽入职工追编号’(濒惫回主茉单)01请前入职工的姓名:
三翠殄请轨人舉丄的星禾工頸5000储羸入职工曲交玉逊
请输入职工的扣款=10«
请输入职工的編号.f却返回主荣单)
半:
3.删除模块