湖南工程学院C语言课程设计报告工资管理系统.docx
- 文档编号:23251222
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:39
- 大小:417.85KB
湖南工程学院C语言课程设计报告工资管理系统.docx
《湖南工程学院C语言课程设计报告工资管理系统.docx》由会员分享,可在线阅读,更多相关《湖南工程学院C语言课程设计报告工资管理系统.docx(39页珍藏版)》请在冰豆网上搜索。
湖南工程学院C语言课程设计报告工资管理系统
课程设计报告
课程名称C语言课程设计
课题名称工资管理系统
专业汽车服务工程
班级
学号
姓名
指导教师王宁肖伟平郭芳
2014年1月3日
湖南工程学院
课程设计任务书
课程名称C课程设计
课题工资管理系统
专业班级汽车服务1202班
学生姓名
学号
指导老师王宁肖伟平郭芳
审批
任务书下达日期2013年12月27日
任务完成日期2014年1月3日
一、设计内容与设计要求
1.设计内容:
设计与发开一个工资管理系统,对工号、姓名、编号、姓名、基本工资、扣款、应发工资、税金、实发工资等信息进行管理。
主要完成以下功能:
1).显示所有数据
2).单条显示
3).计算实发工资
4).查找职工信息数据
5).删除记录
6).插入记录
7).追加记录
8).保存文件
9).读取文件
10).按实发工资升序排序
2.设计要求:
1).设计正确,方案合理。
2).界面友好,使用方便。
3).程序精炼,结构清晰。
4).设计报告5000字以上,含程序设计说明、系统的功能框图、流程图、源程序清单等。
5).实际操作过程中遇到的问题及解决方法:
设计总结及心得体会.
6).上机演示。
二、进度安排
第十七周周五上午8:
00—12:
00
(查阅相关资料并开始编写源程序)
第十七周周五晚上18:
30—22:
30
(完成源程序编写调试运行课程设计报告)
第十七周周六下午13:
30—17:
30
(完成课程设计报告以及答辩)
附:
课程设计报告装订顺序:
封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。
正文的格式:
一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。
正文的内容:
一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。
正文总字数要求在5000字以上(不含程序原代码)。
一、课题的主要功能
主要实现对职工工资信息实现工资的显示,工资的追加,工资的查询,职工的删除,职工的插入,应发工资的计算等功能。
工资管理系统具体提供以下功能:
a、工资显示:
完成全部职工工资信息的显示,以表格形式显示出来,并带有表头。
b、工资追加:
新增职工工资记录,在追加过程中有相应的提示信息并实现连续追加的功能。
c、工资查询:
对指定的姓名进行定位查询,并能显示出符合条件的查询结果。
查询的信息不存在时,系统提示:
Listno***SALARY
d、删除职工:
对指定的编号进行定位删除,删除成功时不显示任何信息。
若此职工不存在时,系统显示:
Notfound!
e、添加职工:
对指定的编号前进行定位插入,有相应的提示信息。
f、计算应发工资:
对相应的职工输入相应的扣款,系统将自行计算出相应职工的应发工资并以表格形式显示出来,并带有表头。
二、课题功能模块的划分
本程序由八个模块构成,其中主模块是由系统函数搭建而成,其重要功能是显示出功能主菜单,由用户作出选择进入子菜单。
在子菜单中操作完毕后,能够准确返回到功能主菜单。
2.1系统主要模块流程图:
2.2模块说明
初始化模块init()将表格清零
输入模块create()输入职工工资信息
显示模块list()显示职工工资信息
计算模块calc()计算职工的应发工资
查找模块search()查询职工工资信息
删除模块dele()删除职工工资信息
插入模块insert()插入职工工资信息
追加模块append()追加职工工资信息
保存模块save()保存信息
退出模块Quit()退出系统
三、主要功能的实现(下面以删除模块和查找模块为例)
3.1删除模块的流程图
3.2查找模块的流程图
四、程序调试
4.1功能主菜单选择界面
4.2初始化功能
在主菜单中选择“Initlist”进行初始化。
4.3输入功能
在主菜单中选择“Enterlist”进入输入界面。
在no列输入‘@’表示完成输入,然后系统会提示按任意键进入主菜单。
4.4显示功能
在主菜单中选择“Listall”进入显示界面。
这里的扣款、应发工资、税金、实发工资为零是因为还没有进行应发工资的计算。
4.5计算应发工资
在主菜单中选择“Calcthesalary”进入计算应发工资界面。
输入相应的扣款后,系统会提示按任意键继续,然后会提示按任意键进入主菜单。
4.6查找功能
在主菜单中选择“Searchrecordonname”进入查找界面。
根据系统提示按姓名查找职工工资信息,按任意键进入主菜单。
4.7删除功能
在主菜单中选择“Deletearecord”进入删除界面。
根据系统提示按编号删除某一职工。
若成功删除,系统显示下面的界面;若没有此编号的职工,则系统提示“Notfound!
”。
然后,按任意键进入主菜单。
4.8插入功能
在主菜单中选择“Insertrecordtolist”进入插入界面。
要在某编号前插入一职工,根据系统的提示先输入编号,再输入此职工的信息。
然后按任意键进入主菜单。
4.9追加功能
在主菜单中选择“Appendrecordtofile”进入追加界面。
输入一组需要追加的信息后,输入追加到哪个文件,系统显示追加成功。
然后按任意键进入主菜单。
4.10保存文件
在主菜单中选择“Savedatatofile”进行保存文件操作。
根据系统提示输入保存的文件名,然后按任意键进入主菜单。
4.11读取文件
在主菜单中选择“Loaddatafromthefile”读取文件。
根据系统提示输入需要读取的文件名,然后按任意键进入主菜单。
4.12退出系统
在主菜单中选择“Quit”退出系统。
界面消失。
五、总结
机械工程学院课程设计评分表
课程名称:
工资管理系统
项目
评价
设计方案的合理性与创造性
设计与调试结果
设计说明书的质量
答辩陈述与回答问题情况
课程设计周表现情况
综合成绩
教师签名:
日期:
六、附件
源程序代码:
/******头文件(.h)***********/
#include"stdio.h"/*I/O函数*/
#include"bios.h"/*ROM基本输入输出函数*/
#include"dos.h"/*dos接口函数*/
#include"conio.h"/*屏幕操作函数*/
#include"stdlib.h"/*其它说明*/
#include"string.h"/*字符串函数*/
#include"mem.h"/*内存操作函数*/
#include"ctype.h"/*字符操作函数*/
#include"alloc.h"/*动态地址分配函数*/
/****变量定义*******/
typedefstructz1/*定义数据结构*/
{
charno[11];/*编号*/
charname[15];/*姓名*/
floatjbgz;/*基本工资*/
floatkoukuan;/*扣款*/
floatyfgz;/*应发工资*/
floatshuijin;/*税金*/
floatsfgz;/*实发工资*/
structz1*next;/*后继指针*/
}SALARY;/*结构体类型名*/
structz1*head;/*链表头指针*/
/******函数原型*********/
voidinit();/*初始化*/
voidcreate();/*创建链表*/
voidcalc();/*计算应发工资*/
voiddelete();/*删除*/
voidsearch();/*查找*/
voidsave();/*保存文件*/
voidload();/*读取文件*/
voidinsert();/*插入*/
voidappend();/*追加*/
voidlist();/*显示所有数据*/
voidprint(SALARY*p);/*输出单条记录*/
floatfax(floatx);/*计算税金*/
intmenu_select();/*主菜单*/
/*******主函数开始**********/
main()
{
inti;
clrscr();
for(;;)
{
switch(menu_select())/*调用菜单函数返回一个整数值*/
{
case0:
init();break;/*初始化*/
case1:
create();break;/*输入数据创建双链表*/
case2:
list();break;/*显示所有数据*/
case3:
calc();break;/*计算实发工资*/
case4:
search();break;/*查找职工信息数据*/
case5:
delete();break;/*删除记录*/
case6:
insert();break;/*插入记录*/
case7:
append();break;/*追加记录*/
case8:
save();break;/*保存文件*/
case9:
load();break;/*读取文件*/
case10:
exit(0);/*退出*/
}
}
}
/*菜单函数,函数返回值为整型,代表所选的菜单项*/
menu_select()
{
char*f[]={/*定义菜单字符串数组*/
"**************MENU*************",/*菜单的标题行*/
"0.initlist",/*初始化双链表*/
"1.Enterlist",/*输入数据,创建链表*/
"2.Listall\n",/*显示所有记录*/
"3.Calcthesalary",/*计算实发工资*/
"4.Searchrecordonname",/*查找记录*/
"5.Deletearecord",/*删除记录*/
"6.Insertrecordtolist",/*插入记录*/
"7.Appendrecordtofile",/*追加记录*/
"8.Savedatatothefile",/*保存文件*/
"9.Loaddatafromthefile",/*读取文件*/
"10.Quit"};/*退出*/
chars[80];
inti;
intkey=0;/*记录所压键值*/
intc=0;
gotoxy(1,25);/*移动光标*/
printf("pressanykeyentermenu......\n");/*压任意键进入主菜单*/
getch();
clrscr();/*清屏*/
textcolor(YELLOW);/*设置文本颜色为黄色*/
textbackground(BLUE);/*设置背景颜色为兰色*/
gotoxy(10,2);
putch(0xda);/*输出左上角边框┏*/
for(i=1;i<44;i++)
putch(0xc4);/*输出上边框水平线*/
putch(0xbf);/*输出右上角边框┓*/
for(i=3;i<22;i++)/*输出左右两边的垂直线*/
{
gotoxy(10,i);putch(0xb3);
gotoxy(54,i);putch(0xb3);
}
gotoxy(10,22);putch(0xc0);/*输出左上角边框┗*/
for(i=1;i<44;i++)
putch(0xc4);/*输出下边框水平线*/
putch(0xd9);/*输出右下角边框┛*/
window(11,3,53,21);/*制作显示菜单的窗口,大小根据菜单条数设计*/
clrscr();/*清屏*/
for(i=0;i<12;i++)
{
gotoxy(10,i+1);
cprintf("%s",f[i]);/*输出菜单项数组*/
}
i=1;
gotoxy(10,2);/*设置默认选项在第一项*/
textbackground(LIGHTGREEN);/*设置背景颜色为浅绿*/
cprintf("%s",f[1]);/*输出菜单项,表示选中*/
gotoxy(10,2);/*移动光标到菜单的第一项*/
while(key!
=13)/*所压键不是回车键时*/
{
while(bioskey
(1)==0);/*查询是否压下了一个键*/
key=bioskey(0);/*返回下一个在键盘压下的键*/
key=key&0xff?
key&0xff:
key>>8;/*对所压的键进行判断*/
gotoxy(10,i+1);
textbackground(BLUE);/*设置背景颜色为蓝色*/
cprintf("%s",f[i]);/*输出菜单项*/
if(key==72)i=i==1?
11:
i-1;/*如压向上光标键↑,i减1,如已到第一行再上移,则到最后一行*/
if(key==89)i=i==11?
1:
i+1;/*如压向下光标键↓,i加1,如已到最后一行再下移,则到第一行*/
gotoxy(10,i+1);/*光标移动i的下一项*/
textbackground(LIGHTGREEN);/*将背景颜色设为浅绿*/
cprintf("%s",f[i]);/*输出菜单项*/
c=i-1;/*给代表菜单选项的整数赋值*/
}
textbackground(BLACK);/*设置背景颜色为黑色*/
window(1,1,80,25);/*恢复原窗口大小*/
returnc;/*返回代表菜单选项的整数值*/
}
/*初始化函数*/
voidinit()
{
head=NULL;
}
/*输入数据,创建链表*/
voidcreate()
{
intx;/*记录行坐标*/
inti;/*记录输入记录数*/
intflag=0;/*做结束标记*/
floattemp;/*定义临时变量*/
SALARY*info,*p;/*定义临时变量*/
if(head!
=NULL)
init();/*如果头指针为空,调用初始化函数*/
p=head;/*从头指针开始*/
for(;;)
{
if(flag==1)
break;/*如果flag=1,结束输入*/
i=0;
x=0;/*确定移动的行坐标*/
clrscr();/*清屏*/
gotoxy(1,3);
printf("*************gongziguanli*************");/*输出标题*/
gotoxy(1,4);
printf("--Enter@end--");/*提示输入@结束*/
gotoxy(1,5);
printf("|------------------------------------|");/*输出表格的起始线*/
gotoxy(1,6);
printf("|no|name|jbgz|");/*输出字段标题,注意空格数*/
for(;;)
{
gotoxy(1,7+x);
printf("|----------|----------------|--------|");/*输出表格的水平线*/
info=(SALARY*)malloc(sizeof(SALARY));/*申请一个记录空间*/
if(!
info)
{
printf("\noutofmemory");/*如没有得到空间,输出内存溢出信息*/
exit(0);/*退出程序*/
}
info->next=NULL;/*新结点的后继为空*/
gotoxy(1,8+x);printf("|");/*输出数据间的分割线*/
gotoxy(12,8+x);printf("|");
gotoxy(29,8+x);printf("|");
gotoxy(38,8+x);printf("|");
gotoxy(2,8+x);/*光标到输入编号位置*/
inputs(info->no,10);/*输入编号,并验证长度不超过10*/
if(info->no[0]=='@')
{
flag=1;
break;
}/*编号首字符为@结束输入*/
gotoxy(13,8+x);/*光标到输入姓名位置*/
inputs(info->name,14);/*输入姓名,并验证长度不超过14*/
gotoxy(30,8+x);/*光标到输入基本工资位置*/
scanf("%f",&temp);/*输入基本工资到临时变量*/
info->jbgz=temp;/*基本工资赋值*/
info->koukuan=0;/*初始扣款为0,待计算工资时输入*/
info->sfgz=0;/*初始实发工资为0,待计算工资时计算*/
info->shuijin=0;/*初始税金为0,待计算工资时计算*/
info->yfgz=0;/*初始应发工资为0,待计算工资时计算*/
if(p==NULL)/*如果p为空,说明输入的是第一个结点*/
{
head=info;/*头指针*/
info->next=NULL;/*info的后继是空*/
}
else/*插入的结点不是第一结点,则插入在头结点之前*/
{
info->next=p;/*新结点的后继指向原来的头结点*/
}
p=info;/*新结点变为p结点,暂时的头结点*/
head=info;/*新结点变为头结点*/
x+=2;/*因为水平线,将光标下移两行*/
gotoxy(1,8+x);
i++;/*输入记录数加1*/
if(i%9==0)
break;/*输入9个记录,换一页输入*/
}
gotoxy(1,8+x);
}
printf("|----------|----------------|--------|");/*输出结尾水平线*/
}
/*字符串输入和验证函数*/
inputs(char*s,intcount)
{
charp[255];
do{
scanf("%s",p);/*输入字符串*/
if(strlen(p)>count)printf("\ntoolong!
\n");/*进行长度校验,超过count值重输入*/
}while(strlen(p)>count);
strcpy(s,p);/*将输入的字符串拷贝到字符串s中*/
}
/*显示链表*/
voidlist()
{
inti=0,n;/*记录输出行数*/
SALARY*p;/*定义移动指针*/
clrscr();/*清屏*/
p=head;/*从头指针开始*/
if(head!
=NULL)
{
clrscr();/*清屏*/
printf("\n\n\n");/*换行*/
printf("************************************SALARY************************************\n");/*输出标题信息*/
printf("|no|name|jbgz|koukuan|yfgz|shuijin|sfgz|\n");/*输出字段标题*/
printf("|----------|---------------|---------|---------|---------|---------|---------|\n");
do
{
printf("|%-10s|%-15s|%9.2f|%9.2f|%9.2f|%9.2f|%9.2f|\n",p->no,p->name,
p->jbgz,p->koukuan,p->yfgz,p->shuijin,p->sfgz);
printf("|----------|---------------|---------|---------|---------|---------|---------|\n");
p=p->next;
}while(p!
=NULL);/*显示所有内容*/
printf("***************************************end************************************\n");
getch();
}
}
/*输出指针所指结点信息*/
voidprint(SALARY*p)
{
if(p)/*如果指针不为空,则显示信息*/
{
clrscr();/*清屏*/
printf("\n\n\n");/*换行*/
printf("************************************SALARY************************************\n");/*输出标题信息*/
printf("|no|name|jbgz|koukuan|yfgz|shuijin|sfgz|\n");/*输出字段标题*/
printf("|----------|---------------|---------|---------|---------|---------|---------|\n");/*输出分割线*/
printf("|%-10s|%-15s|%9.2f|%9.2f|%9.2f|%9.2f|%9.2f|\n",p->no,p->name,
p->jbgz,p->koukuan,p->yfgz,p->shuijin,p->sfgz);/*输出结点信息*/
printf("***************************************end************************************\n");/*输出结束标记*/
}
}
/*计算实
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 湖南 工程学院 语言 课程设计 报告 工资管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)