C语言课程设计报告职工工资管理系统.docx
- 文档编号:30719922
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:37
- 大小:95.71KB
C语言课程设计报告职工工资管理系统.docx
《C语言课程设计报告职工工资管理系统.docx》由会员分享,可在线阅读,更多相关《C语言课程设计报告职工工资管理系统.docx(37页珍藏版)》请在冰豆网上搜索。
C语言课程设计报告职工工资管理系统
中南大学
CentralSouthUniversity
课程设计报告
题目:
设计者:
专业班级:
学号:
指导教师:
所属院系:
2011年6月30日
目录
一、本次课题的基本内容和要求.........................................................
二、软件设计整体规划及方案……...………...………………………………………
三、程序功能简介……...…...……………………………………………………………..
四、操作方法(流程)……...…………………………………………………………………..
五、各模块的功能及程序说明……...………………………………………………….
六、试验结果(包括输入数据和输出结果)……...……………………………
七、设计体会……...…………………………………………………………………………….
八、源代码……...…………………………………………………………………………………
九、参考文献……...…………………………………………………………………………….
一、本次课题的基本内容和基本要求:
基本内容:
运用C语言进行编程设计一个职工工资管理系统的程序,很好地实现该系统的各项功能。
熟练运用turboc,完成本次实验。
基本要求:
本次“C语言程序设计实践”课程设计,是基于“C语言程序设计基础”课程学习内容的重要实践环节,其主要目的在于,通过综合程序课程设计,培养和提高学生的独立分析问题、解决实际问题的能力和计算机语言编程能力。
本次课程设计时间为2周,要求每位同学在为期两周的时间段内,独立完成相关设计题所规定的任务,
合理安排时间。
安排情况如下:
1、阅读设计题目、任务内容,规划设计进度,并进行软件的各相关功能模块的规划设计(1天)。
2、在TurboC环境下,用结构化程序设计思想进行C语言程序设计、功能模块调试(7-9天)。
其中菜单及登录界面的设计(1天),各子函数的设计(4-5天),采用分文件的方法并上机不断进行调试和修改(2-3天)。
3、进行课程设计报告编写与整理(2天)。
二、软件整体规划及方案
阅读好设计题目和要求后,设计算法,采用分文件的形式,使各功能得到更好的实现。
以主函数,采取分模块化,使各模块独立。
进行结构化分析,其指导思想为自顶向下、逐步求精、单入口/单出口,基本原则是抽象和功能的分解。
对于较为复杂问题的大型程序开发,应采取“自顶向下、逐步细化和模块化”的设计方法,模块化程序设计是结构化程序设计方法在开发大型程序中的应用
所谓“自顶向下,逐步细化、逐步求精”就是在对于给定问题进行透彻的了解和详细的分析的基础上,把问题分解成若干个按顺序执行的逻辑部分,称为“模块”。
每个子任务如果仍很复杂,还可以再分解为若干个子任务。
如此逐层分解,对于每个模块的设计都采用这种“自顶向下、逐步细化”的方法,将它们分解成为基本结构为止,就如同写文章先拟出题目和中心内容,再确定分为几大部分,每一大部分又分哪几节,每一节分为几段,每一段包括哪几个意思,这就是“自顶向下,逐步细化”的方法。
当一个程序的规模比较庞大,层次和模块比较多时,不要每次都将所有模块按顺序执行一遍,最好在每一层,至少在最高几层都设一个“菜单”。
为方便用户操作,“菜单”技术已广泛使用在计算机的系统软件中,具体做法是:
程序首先把各功能说明及相应代号以菜单形式显示在屏幕上,然后由用户在键盘上输入所选的功能代号,程序自动转去调用相应的功能模块进行处理。
三、程序功能简介
1.输入记录:
将每一个职工的姓名、ID号以及基本工资、职务工资、岗位津贴、医疗保险、公积金的数据作为一个记录。
该软件能建立一个新的数据文件或给已建立好的数据文件增加记录。
2.显示记录:
根据用户提供的记录或者根据职工姓名显示一个或几个职工的各项工资及平均工资。
3.修改记录:
可以对数据文件的任意记录进行修改并在修改前后对记录内容进行显示。
4.查找记录:
可以对数据文件的任意记录的数据进行查找并在查找前后对记录内容进行显示。
5.删除记录:
可删除数据文件中的任意记录。
6.恢复记录:
能恢复被删除的人已记录。
7.添加记录:
可以在数据文件中添加记录并添加记录后对记录内容进行显示。
8.统计:
(A)计算各项工资平均工资及总工资,(B)统计符合指定条件(如职工工资前三项之和在2000元以上、2000~1500元、1500~1000元)以内的工资职工人数及占总职工人数的百分比。
(C)按字符表格形式打印全部职工工资信息表即平均工资(包括各项总的平均工资)。
9.保存数据文件功能。
经过逐层逐块、不断细化、求精过程,编写程序并进行测试、验证,可以逐个模块地分开调试,并通过文件包含或用工程文件的形式进行逐步联合调试。
将一些头文件放入一个HEAD的文件中,变量的定义放入HEAD2的文件中,自定义函数的声明放入DECLARATION的文件中,各个子函数文件放入FUNCTION的文件中。
四、操作方法
1.进入版本信息界面后,敲击enter键进入主菜单。
2.然后根据主菜单进行操作,选择功能1为输入信息。
功能2为输出信息,敲任意键返回。
3.返回主菜单后,选择3为修改功能,根据提示用户可以选择通过ID号或姓名进行修改。
4.功能4为查询功能,可通过ID号、姓名、基本工资、职务工资、津贴、医疗保险、公积金来查询。
其中会有提示用户继续查询的功能,按1继续查询,按2则返回主菜单。
5.功能5为删除功能,用户根据提示信息,输入ID号先查找出该项信息,然后会提示用户是否确认删除,选择1为确认,0为返回,敲任意键返回主菜单。
6.功能6为恢复函数,实现将删除的信息恢复回来。
7.功能7为添加函数,根据提示输入另外的职工的信息,在进行选择是否继续添加,1为是,0为返回。
8.功能8为统计功能,用户可看到原始信息,查看工资在1000~1500的选择1,1500~2000的选择2,2000以上的选择3,选择完毕后用户会看到该范围内的人数及比例,还有会先输出总的各项工资平均值,再提示是否继续统计,1为继续,0为返回主菜单。
9.返回主菜单后,选择0为退出程序。
五、各模块的功能及程序说明
1.main函数中主要显示菜单并进行调用函数操作。
2.input函数主要是让用户往系统中输入职工的相关信息,在调用保存函数save和save2保存到两个文件employee_list、worker_txt(备份文件)中。
其中保存到worker_txt中是备份数据。
3.diplay函数是用来显示用户输入的信息,以便用户观察。
4.modfiy函数是用来让用户修改输入或原有的信息,然后在调用save和save2函数将数据保存起来。
并且用户可以选择不同的方式对数据信息进行修改,可以用输入ID号或职工的姓名来进行数据修改。
5.search函数是供用户查询信息用的。
也有很多方式供用户选择,用户可以通过选择职工的ID号、姓名、基本工资、职务工资、津贴、医疗保险、公积金来对职工信息进行查询。
6.delete函数是帮助用户将不需要的信息及时删除,用户根据职工的ID号来删除信息。
然后只调用save函数,对该操作进行保存。
7.recover函数是帮助用户将误删的信息恢复,通过将worker_txt中的数据信息复制到文件employee_list中来实现恢复,然后再调用save函数进行保存。
8.add函数是用来添加职工信息的。
用户可以输入多条信息添加到该系统中,然后在调用save和save2函数对数据信息进行保存并备份。
9.save、save2函数都为保存函数,每次操作是但需要保存时对两者进行调用,但在删除函数中只能调用save函数,因为备份文件中的数据信息是用来恢复删除信息用的。
10.load、load2函数为导出函数,在每次要用到数据信息是要调用这两个函数,并且当进行recover函数时只能调用load2函数,将备份中的数据信息保存到employee_list中,从而达到恢复功能。
11.将一些程序中的头文件都包含到head文件中。
将变量的定义放到head2文件之中,其中包括全局变量和结构体等等。
再将自定义函数声明放入到declaration文件中,然后把含有子函数定义过程的文件都放入function文件中。
六、试验结果(包括输入数据和输出结果)
输入数据及界面如上图所示。
输出的数据如上图所示,各职工的信息都以显示出来。
七、设计体会
为期两周的课程设计已经结束了,经过了一个学期的C语言学习,我已经在C语言程序设计方面有了更多的了解和体会。
这次的课程设计对我来说是一次考验,虽然在期间又遇到过不少问题,但在老师、室友和同学的帮助下,我还是完成了这次实验。
经过了两周的时间,我对其中的知识点又巩固了一下,并且能较好掌握不熟练的部分,比如文件的使用,将程序份文件化能很好的在调试过程中对语句进行修改,如果不分文件的话,在修改的时候会因为程序太长而带来麻烦。
起初,我比较迷茫,因为在文件方面自己不太熟悉,不知道如何使用,这让我在比较头疼,经过一天的时间,通过看书以及这方面的资料和向同学求助,最后我还是弄懂了,心里挺开心的。
在子函数我遇到了一个很大问题,就是对恢函数不知如何下手,我有想过用添加函数直接加进去,还有与同学探讨得知可以找到删除数据信息的位置,然后在输入进去来完成恢复。
但我觉得这样不够好,经过一个下午的尝试,我想到可以将原有的数据信息保存进两个文件中,这样在进行恢复时先导出备份中的数据,在保存到原先的数据文件中,这样就完成了恢复操作。
编写程序是一项十分缜密的工作,编写者需要缜密的思维和很好的耐性,在调试和运行的过程中或遇到许多问题,没有很好的耐性,会影响自己的心理,变得焦躁。
在编写程序中,真的是细节决定成败,因为不管程序的语句是多是少,但是只要有一条语句或语法不正确,就不能使程序得到所需要的结果。
没能够使自己编写出来的程序等到想要的结果,意味着这是一个不理想的程序,对于本次编写来说则是失败的。
通过此次实践,让我明白了在做任何一件事之前,都需要进行整体规划,理一下大体的思路,不然会走很多弯路,浪费很多不必要的时间。
八、源代码
/*head.h*/
#ifndefhead
#definehead
#include"stdio.h"
#include"string.h"
#include"conio.h"
#include"stdlib.h"
#include"graphics.h"
#endif
/*head2.h*/
#ifndefhead2
#definehead2
#defineN3
intt=0,i=0,j=0,k=0;
staticintcount=0;
structemployee
{
intid;
charname[40];
intjiben;
intzhiwu;
intjintie;
intyibao;
intgongjijin;
inttotal;
}em[100],*p=em;
#endif
/*declaration.h函数声明*/
#ifndefdeclaration
#definedeclaration
voidinput();
voiddisplay();
voiddisplay2();
voidmodfiy();
voidsearch();
voiddelete();
voidrecover();
voidadd();
voidtongji();
voidtongji1();
voidsave();
intload2();
voidsave2();
intload();
voidmenu();
#endif
/*function.h*/
#ifndeffunction
#definefunction
#include"input.c"
#include"menu.c"
#include"display.c"
#include"display2.c"
#include"modfiy.c"
#include"search.c"
#include"save.c"
#include"add.c"
#include"load.c"
#include"delete.c"
#include"tongji.c"
#include"tongji2.c"
#include"recover.c"
#include"save2.c"
#include"load2.c"
#endif
/*task1.c/
#include"head.h"
#include"head2.h"
#include"declaration.h"
#include"function.h"
voidmain()
{
externinti;
clrscr();
gotoxy(20,10);
printf("**********CentralSouthUniversity**********\n\n");
gotoxy(20,11);
printf("zhigonggongziguanlixitong\n");
gotoxy(29,12);
printf("designedbypzz\n");
gotoxy(18,13);
printf("pleaseclickenter\n");
getch();
for(;;)
{
clrscr();
menu();
printf("inputi:
\n");
scanf("%d",&i);
if(i==0)
break;
else
switch(i)
{
case1:
input();break;
case2:
display();break;
case3:
modfiy();break;
case4:
search();break;
case5:
delete();break;
case6:
recover();break;
case7:
add();break;
case8:
tongji();break;
}
}
}
/*input.c输入函数*/
voidinput()
{
clrscr();
for(i=0;;i++)
{
printf("IDnumber:
\n");
scanf("%d",&(*(p+i)).id);
printf("theworker'sname:
\n");
scanf("%s",(*(p+i)).name);
printf("jibengongzi:
\n");
scanf("%d",&(*(p+i)).jiben);
printf("zhiwugongzi:
\n");
scanf("%d",&(*(p+i)).zhiwu);
printf("jintie:
\n");
scanf("%d",&(*(p+i)).jintie);
printf("yiliaobaoxian:
\n");
scanf("%d",&(*(p+i)).yibao);
printf("gongjijin:
\n");
scanf("%d",&(*(p+i)).gongjijin);
count++;
printf("inputagain?
yes
(1)orno(0):
\n");
scanf("%d",&t);
if(t==1)
continue;
else
break;
}
save2(count);
save(count);
getch();
}
/*display.c显示函数*/
voiddisplay()
{
intm=load();
clrscr();
tongji1();
printf("IDnamejibengongzizhiwugongzijintieyiliaobaoxiangongjijintotal\n");
for(i=0;i { gotoxy(2,i+2); printf("%d",(*(p+i)).id); gotoxy(7,i+2); printf("%s",(*(p+i)).name); gotoxy(15,i+2); printf("%d",(*(p+i)).jiben); gotoxy(28,i+2); printf("%d",(*(p+i)).zhiwu); gotoxy(41,i+2); printf("%d",(*(p+i)).jintie); gotoxy(50,i+2); printf("%d",(*(p+i)).yibao); gotoxy(65,i+2); printf("%d",(*(p+i)).gongjijin); gotoxy(75,i+2); printf("%d\n",(*(p+i)).total); } getch(); } /*modify.c修改函数*/ voidmodfiy() { intt=0,flog,a,m=load(); charb[40]; clrscr(); tongji1(); display(); printf("pleaseinputtheID (1)orname(0)youwanttoedit: \n"); scanf("%d",&a); if(a==1) { printf("pleaseinputIDnumber: \n"); scanf("%d",&t); for(k=0;k { if(t==(*(p+k)).id) { printf("IDnamejibengongzizhiwugongzijintieyiliaobaoxiangongjijintotal"); gotoxy(2,k+m+7); printf("%d",(*(p+k)).id); gotoxy(7,k+m+7); printf("%s",(*(p+k)).name); gotoxy(15,k+m+7); printf("%d",(*(p+k)).jiben); gotoxy(28,k+m+7); printf("%d",(*(p+k)).zhiwu); gotoxy(41,k+m+7); printf("%d",(*(p+k)).jintie); gotoxy(51,k+m+7); printf("%d",(*(p+k)).yibao); gotoxy(66,k+m+7); printf("%d",(*(p+k)).gongjijin); gotoxy(76,k+m+7); printf("%d\n",(*(p+k)).total); printf("doyouwanttoedit? 1(yes)or0(no): \n"); scanf("%d",&flog); if(flog==1) { printf("inputnewname\n"); scanf("%s",(*(p+k)).name); printf("inputnewjibengongzi\n"); scanf("%d",&(*(p+k)).jiben); printf("inputnewzhiwugongzi: \n"); scanf("%d",&(*(p+k)).zhiwu); printf("inputnewjintie: \n"); scanf("%d",&(*(p+k)).jintie); printf("inputnewyilaiobaoxian: \n"); scanf("%d",&(*(p+k)).yibao); printf("inputnewgongjijin: \n"); scanf("%d",&(*(p+k)).gongjijin); (*(p+i)).total=(*(p+i)).jiben+(*(p+i)).zhiwu+(*(p+i)).jintie-(*(p+i)).yibao-(*(p+i)).gongjijin; printf("editok\n"); } if(flog==0) { printf("exit! \n\n"); return; } } } } if(a==0) { printf("pleaseinputthename: \n"); scanf("%s",b); for(k=0;k { if(strcmp(b,(*(p+k)).name)==0) { printf("IDnamejibengongzizhiwugongzijintieyiliaobaoxiangongjijintotal\n"); gotoxy(2,k+m+7); printf("%d",(*(p+k)).id); gotoxy(7,k+m+7); printf("%s",(*(p+k)).name); gotoxy(17,k+m+7); printf("%d",(*(p+k)).jiben); gotoxy(30,k+m+7); printf("%d",(*(p+k)).zhiwu); gotoxy(43,k+m+7); printf("%d",(*(p+k)).jintie); gotoxy(53,k+m+7); printf("%d",(*(p+k)).yibao); gotoxy(68,k+m+7); printf("%d\n",(*(p+k)).gongjijin); gotoxy(77,k+m+7); printf("%d\n",(*(p+i)).total); printf("doyouwanttoedit? 1(yes)or0(no): \n"); scanf("%d",&flog); if(flog==1) { printf("inputnewjibengongzi\n"); scanf("%d",&(*(p+k)).jiben); printf("inputnewzhiwugongzi: \n"); scanf("%d",&(*(p+k)).zhiwu); printf("inputnewjintie: \n"); scanf("%d",&(*(p+k)).jintie); printf("inputnewyilaiobaoxian: \n"); scanf("%d",&(*(p+k)).yibao); printf("inputnewgongjijin: \n")
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 报告 职工工资 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)