课程设计工资管理系统设计.docx
- 文档编号:5897704
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:27
- 大小:155.10KB
课程设计工资管理系统设计.docx
《课程设计工资管理系统设计.docx》由会员分享,可在线阅读,更多相关《课程设计工资管理系统设计.docx(27页珍藏版)》请在冰点文库上搜索。
课程设计工资管理系统设计
《高级语言程序设计》课程设计
设计题目:
工资管理系统设计
1设计任务……………………………………………………1
2正文
需求分析…………………………………………………1
系统模块图………………………………………………1
模块说明…………………………………………………1
用户使用说明……………………………………………2
测试结果…………………………………………………3
3设计小结……………………………………………………4
4参考文献……………………………………………………5
5附录(源程序)……………………………………………6
设计任务
做一个工资管理系统,要能按照姓名和卡号查找员工的工资信息,以及员工工资信息的插入,删除。
同时这些信息要存储在TXT文件中…还要可以按照一定顺序输出所有员工工资的信息
分析
工资信息存放在文件中,提供文件的输入、输出等操作;要实现浏览功能,提供显示、排序操作;而查询功能要求实现查找操作;另外还应该提供键盘式选择菜单以实现功能选择。
系统模块图
2、总体设计:
整个系统可以分为信息输入、信息添加、信息浏览、信息排序、信息查询和信息统计模块。
3、详细设计工资信息采用结构体数组:
structmygz/*m每月工资*/
{
intyuefen;
floatyfgz;
floatsf;
floatdf;
floatsj;
floatsfgz;
};
structworker/*工人信息*/
{
intkahao;
charxingming[20];
structmygzm[12];
floatzsfgz;
};
模块说明
(1)主函数提供输入、处理和输出部分的函数调用,各功能模块采用菜单方式选择。
(2)输入模块按照工资卡号、姓名、月份、应发工资、水费、电费的顺序输入信息。
(3)添加模块增加新的职工工资信息,从键盘输入并逐条写到原来的输入文件中,采用追加而不是覆盖的方式。
(4)浏览模块通过菜单选择按照工资卡号还是姓名浏览。
如果按照卡号浏览,则显示的
记录按照卡号升序输出;按照姓名浏览则按照字典序输出(调用排序模块的排序功能)。
(5)排序模块排序模块提供菜单选择,实现按照工资卡号升序、实发工资降序以及姓名字典序排序。
排序方法可以选择冒泡排序、插入排序、选择排序等。
(6)查询模块实现按照工资卡号和姓名的查询,采用基本的查找方法即可。
用户使用说明
启动后屏幕上显示下面菜单
1查询个人工资情况
2录入工资信息
3删除个人工资情况
4浏览员工工资信息
5个人工资排序情况
6退出系统
如果你要执行某一功能,就按下该功能所对应的数字即可。
查询个人工资情况:
在主菜单中输入1则进入查询子菜单界面,。
。
系统会提示你选择菜单。
输入1后则进入按姓名查询职工信息,此时系统会自动提示你输入要查询的职工姓名。
输入职工号后会出现该职工的信息。
输入错误职工号,要求重新输入;输入2后则进入按卡号查询职工信息,此时系统会自动提示你输入要查询的职工卡号。
输入0则返回主菜单
录入工资信息:
在主菜单中输入2则系统会进入新界面并自动提示你输入建立的月份,输入完成后按回车键系统会逐一提示输入卡号,如没有记录,根据提示按1新建,系统会逐一提示出入姓名,工资,水费,电费,输入完成后会继续提示输入下一个职工的职工号。
。
删除个人工资情况:
在主菜单中输入3系统界面是删除菜单。
系统会提示你选择(0-1)。
输入1则按职工号删除记录,系统会自动提示你输入要删除的职工信息,进入新界面后系统会提示你删除前该职工的卡号。
输入错误职工号,显示没有该职工号的职工一个记录已经删除了时系统会提示删除后的职工信息。
根据菜单提示,输入1继续删除,输入2则返回主菜单。
浏览员工工资信息:
在主菜单中输入4系统界面是输出菜单界面,按照输入格式:
职工号、姓名、性别、年龄、工资,逐个的输出职工的信息,输出所有职工信息后系统自动退出。
个人工资排序情况:
在主菜单中输入5系统界面是统计菜单界面,输入工资数,显示大于该工资的职工的所有信息。
关闭文件。
退出系统:
在使用各个功能后输入6则返回主菜单。
在主菜单中输入6则退出系统。
测试结果
浏览界面
排序界面
设计小结
通过这段时间的实习,我收获颇多。
这次实习是真正意义上的将所学知识运用到实际中去。
我进一步理解和运用了结构化程序的思想和方法,初步掌握了开发一个小型实用系统的基本方法,学会了调试一个较长程序的基本方法,学会利用流程图表示算法,进一步掌握和提高了利用C语言进行程序设计的能力.具备了一定的编程能力.接到C语言课程设计的作业我十分高兴,终于学到的东西可以运用了。
在老师的指导和大家的共同努力下,我们终于完成了程序的大体编制。
程序中包括主函数、输入模块、查询模块、修改模块、删除模块、统计模块、输出模块、追加模块。
其中在输入模块中指针文件运用的比较好,因为指针是C的一个特色,它能有效的表示复杂的数据结构,动态的分配内存,方便的使用字符串、数组,可谓是C的精华。
在程序设计中我们最大的收获就是:
我们真正从实践的角度体会到了C语言在实际生活中的作用,也深刻体会到了它带来的方便快捷。
不但使我们对C语言有更进一步的巩固和认识还使我们懂得了团队协作的重要!
让我们将一年所学的C语言知识学为所用,让我们感觉到了它的神奇魅力。
美中不足的就是:
由于我们知识的不足以及条件的限制,本系统还有许多漏洞与不足,希望老师给以批评与帮助,我们会积极改正。
而且本程序还处于初级阶段的职工工资管理功能中,只实现了对职工工资的录入、删除、修改、查询、统计、显示等简单功能,功能较简单,不一定在实际中有大的用途,程序编排中可能有烦琐之处有待进一步简化。
参考文献
姜灵芝著.C语言课程设计案例精编.清华大学出版社,2008
《C语言程序设计教程》第3版谭浩强
XX文库
XX贴吧:
C语言吧
附录(源程序)
#include
#include
#include
#defineN100
structmygz/*m每月工资*/
{
intyuefen;
floatyfgz;
floatsf;
floatdf;
floatsj;
floatsfgz;
};
structworker/*工人信息*/
{
intkahao;
charxingming[20];
structmygzm[12];
floatzsfgz;
};
intsm;
structworkera[N];
floatshuijin(floatm)
//___________个人所得税____________________________________*/
{
floatshui1,shui2;
floattmp;
shui1=0;shui2=0;
if(m>=4500)
{
shui1=(m-4500)*0.1;
shui2=50;
}
else
{
if(m>=3500&&m<4500)
{
shui2=(m-3500)*0.05;
}
}
tmp=shui1+shui2;
return(tmp);
}floatshifazsfgz(floata,floatb,floatc,floatd)
{
floate=a-b-c-d;
return(e);
}
/*______________读取模块_______________________________*/
voidduqu()
{
FILE*fp;
if((fp=fopen("D:
工资信息.txt","r"))==NULL)
{
printf("无法读取文件");
;return;
}
while(!
feof(fp))
{
fread(&a[sm],sizeof(structworker),1,fp);
sm++;
}
}
/*_______________排序模块_________________________________*/
typedefstructworkerstu;
sortbykahao(constvoid*,constvoid*);
sortbyxingming(constvoid*,constvoid*);
voidpaixu()
{
inti;
intchoice;
int(*p)(constvoid*,constvoid*);
printf("choice_1:
按卡号排序\n");
printf("choice_2:
按姓名排序\n");
printf("choice_3:
按工资排序\n");
printf("choice_4:
返回主菜单\n");
scanf("%d",&choice);
while(choice!
=0)
{
if(choice==1)
p=sortbykahao;
if(choice==2)
p=sortbyxingming;
if(choice==3)
{
intj;
floattemp;
for(j=0;j { for(i=0;i<=sm-j-i;i++) if(a[i].zsfgz>a[i+1].zsfgz) {temp=a[i].zsfgz;a[i].zsfgz=a[i+1].zsfgz;a[i+1].zsfgz=temp;} } for(i=0;i<=sm-1;i++) printf("%10f%-10d%-20s\n",a[i].zsfgz,a[i].kahao,a[i].xingming); } if(choice==4) return; qsort(a,sm,sizeof(stu),p); if(choice==1) for(i=0;i printf("\n%d\t%s\t%d",a[i].kahao,a[i].xingming,a[i].zsfgz); if(choice==2) for(i=0;i printf("\n%s\t%d\t%d",a[i].xingming,a[i].kahao,a[i].zsfgz); printf("\n"); scanf("%d",&choice); } } sortbykahao(constvoid*p,constvoid*q) { stu*x,*y; x=(stu*)p; y=(stu*)q; return((*x).kahao-(*y).kahao); } sortbyxingming(constvoid*p,constvoid*q) { stu*x,*y; x=(stu*)p; y=(stu*)q; returnstrcmp((*x).xingming,(*y).xingming); } /*_______________查询模块__________________________________*/ voidchaxun() { intb,i,j; system("cls"); label_3: b=0; while(b! =1&&b! =2) { printf("1,选择姓名查询.\n2,选择卡号查询.\n"); scanf("%d",&b); } if(b==1) { charc[20]; printf("请输入您的姓名: \n"); scanf("%s",c); i=0; while(! (strcmp(a[i].xingming,c)==0)&&i {i++;} if(i==sm) {printf("您查找的名字不存在,请正确输入您的名字或用卡号查询\n"); return; } printf("%-10d%-20s\n",a[i].kahao,a[i].xingming); for(j=0;a[i].m[j].yuefen! =NULL;j++) { printf("月份: %5d,应发工资: %10.2f,水费: %7.2f,电费: %7.2f,税金: %7.2f,实发工资: %10.2f.\n", a[i].m[j].yuefen,a[i].m[j].yfgz,a[i].m[j].sf,a[i].m[j].df,a[i].m[j].sj,a[i].m[j].sfgz); } printf("总实发工资: %10f\n",a[i].zsfgz); b=0; while(b! =1&&b! =2) { printf("1,继续查询.\n2,返回主菜单.\n"); scanf("%d",&b); } if(b==1) {gotolabel_3;} else {;return;} } else { intd=0; while(! (d>=10001&&d<=32767)) {printf("请输入您的卡号(五位数字),例如: 10001\n"); scanf("%d",&d);} i=0; while(a[i].kahao! =d&&i {i++;} if(i==sm) {printf("您查找的名字不存在,请正确输入您的名字或用卡号查询\n"); return;} printf("%-10d%-20s\n",d,a[i].xingming); for(j=0;a[i].m[j].yuefen! =NULL;j++) { printf("月份: %5d,应发工资: %10.2f,水费: %7.2f,电费: %7.2f,税金: %7.2f,实发工资: %10.2f.\n", a[i].m[j].yuefen,a[i].m[j].yfgz,a[i].m[j].sf,a[i].m[j].df,a[i].m[j].sj,a[i].m[j].sfgz); } printf("总实发工资: %10f\n",a[i].zsfgz); b=0; while(b! =1&&b! =2) { printf("1,继续查询.\n2,返回主菜单.\n"); scanf("%d",&b); } if(b==1) {gotolabel_3;} else {;return;} } } /*______________浏览模块___________________________________*/ voidliulan() { structworkerx; intc; floatd; inti,j,k; system("cls"); for(i=0;i { c=a[i].kahao; k=i; for(j=i+1;j { if(c>a[j].kahao) {c=a[j].kahao; k=j;} } x=a[i]; a[i]=a[k]; a[k]=x; } for(i=0;i { printf("%-10d%-20s\n",a[i].kahao,a[i].xingming); for(j=0;a[i].m[j].yuefen! =NULL;j++) { printf("月份: %5d,应发工资: %10.2f,水费: %7.2f,电费: %7.2f,税金: %7.2f,实发工资: %10.2f.\n", a[i].m[j].yuefen,a[i].m[j].yfgz,a[i].m[j].sf,a[i].m[j].df,a[i].m[j].sj,a[i].m[j].sfgz); } printf("总实发工资: %10f\n",a[i].zsfgz); } for(i=0;i<40;i++) {printf("\n");}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 工资管理 系统 设计