工资管理系统课程设计.docx

上传人:b****1 文档编号:590569 上传时间:2023-04-29 格式:DOCX 页数:47 大小:272.78KB
下载 相关 举报
工资管理系统课程设计.docx_第1页
第1页 / 共47页
工资管理系统课程设计.docx_第2页
第2页 / 共47页
工资管理系统课程设计.docx_第3页
第3页 / 共47页
工资管理系统课程设计.docx_第4页
第4页 / 共47页
工资管理系统课程设计.docx_第5页
第5页 / 共47页
工资管理系统课程设计.docx_第6页
第6页 / 共47页
工资管理系统课程设计.docx_第7页
第7页 / 共47页
工资管理系统课程设计.docx_第8页
第8页 / 共47页
工资管理系统课程设计.docx_第9页
第9页 / 共47页
工资管理系统课程设计.docx_第10页
第10页 / 共47页
工资管理系统课程设计.docx_第11页
第11页 / 共47页
工资管理系统课程设计.docx_第12页
第12页 / 共47页
工资管理系统课程设计.docx_第13页
第13页 / 共47页
工资管理系统课程设计.docx_第14页
第14页 / 共47页
工资管理系统课程设计.docx_第15页
第15页 / 共47页
工资管理系统课程设计.docx_第16页
第16页 / 共47页
工资管理系统课程设计.docx_第17页
第17页 / 共47页
工资管理系统课程设计.docx_第18页
第18页 / 共47页
工资管理系统课程设计.docx_第19页
第19页 / 共47页
工资管理系统课程设计.docx_第20页
第20页 / 共47页
亲,该文档总共47页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

工资管理系统课程设计.docx

《工资管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《工资管理系统课程设计.docx(47页珍藏版)》请在冰点文库上搜索。

工资管理系统课程设计.docx

工资管理系统课程设计

 

工资管理系统

课程设计报告

编写人:

马存祥

同组成员:

程新华(课程设计负责人)

马晓辉

马存祥

赵宽祖

完成日期:

2011年12月13日

辅导教师:

祁俊

批阅日期:

分数:

 

一、功能描述

此工资管理系统主要利用链表实现,由如下八个功能模块实现

1、输入模块。

主要完成输入工资信息的工作,并存入链表中。

2、输出模块。

主要完成对所有工人信息的输出。

3、修改模块。

主要完成对职工信息的修改工作。

4、插入模块。

主要完成对职工信息的插入工作。

5、查询模块。

主要完成对某个职工信息的查询工作。

6、删除模块。

主要完成对某退休或离职职工信息的删除。

7、排序模块。

主要完成对所有职工按实发工资进行的升序或降序排列。

8、保存模块。

主要完成对已经输入和修改或删除的保存文件。

9、退出。

退出系统

工资管理系统

 

分类统计

保存模块

用户登录

删除模块

排序模块

查询模块

插入模块

修改模块

输出模块

输入模块

 

降序排序

生序排序

姓名查询

编号查询

修改扣款

修改基本工资

修改姓名

修改编号

 

一、总体设计

1、功能模块设计

(1)主函数程序流程图

main()

降序

升序

保存文件

排序

删除职工信息

按职工姓名

按职工编号

查询职工信息

插入职工信息

编号

姓名

性别

基本工资

扣款

修改职工信息

输出职工信息

制作工资表

菜单

Case8

Case1

Case7

Case6

Case5

Case4

Case3

Case2

switch

用户登录

(2)

 

高于10000

8000~10000

3500~8000

低于3500

分类统计

结束

退出

Case0

Case8

 

(2)输入模块

跳出

开始

输入职工的信息

P->next

P->next!

=NULL

结束

While()是否继续输入

 

(3)输出模块

开始

 

结束输出

P是否为空

While()

输出职工信息

P=P->next

开始

(4)修改模块

P是否NULL

结束

输入要修改的职工编号k

查找有无该职工

修改职工信息

不修改

是否修改

继续修改

开始

(5)插入模块

定义变量,申请内存

查找插入之后的编号

结束

不存在

该编号之后的节点后移一位

输入要插入的职工信息

(6)

开始

查询模块

输出

定义变量

选择语句

Case1

编号查询

Case2

姓名查询

(7)

开始

删除模块

输入要删除的编号

查找该编号

是否继续删除

没有找到

将前一节点指针指向当前节点的下一节点

释放节点

(8)

开始

排序模块

选择

结束

升序

Case1

降序

Case2

 

(9)计算税金

{(基本工资)--(扣款)}*税率-速扣数=个人所得税。

  

以总工资5105元为例,三险一金105为例  {5105-105-3500}X0.03-0=45元  

2011年9月1日起调整后的7级超额累进税率

全月应纳税所得额税率速算扣除数(元)

全月应纳税额不超过1500元3%0

全月应纳税额超过1500元至4500元10%105

全月应纳税额超过4500元至9000元20%555

全月应纳税额超过9000元至35000元25%1005

全月应纳税额超过35000元至55000元30%2755

全月应纳税额超过55000元至80000元35%5505

全月应纳税额超过80000元45%13505

 

三、数据结构设计

职工信息信息结构体

structworker//定义数据结构//

{

charno[11];//编号//

charname[15];//姓名//

charxb[10];//性别//

doublejbgz;//基本工资//

doublekoukuan;//扣款//

doubleyfgz;//应发工资//

doubleshuijin;//税金//

doublesfgz;//实发工资//

charpost[10];//职位//

structworker*next;

};

typedefstructworkerSTU;//结构体类型名///

四、函数功能描述

intmenu_select(void);//主菜单//

STU*append(STU*head);//添加记录//

STU*appendNode(STU*head);

voidlist(STU*head);//显示所有数据//

STU*modify(STU*head);//修改职工记录//

STU*modifyNode(STU*head);

void*search(STU*head);//查询职工信息//

void*no(STU*head);//编号查询//

void*name(STU*head);//姓名查询//

STU*dele(STU*head);//删除职工信息//

STU*deleNode(STU*head,chark[11]);

void*save(STU*head);//保存文件//

STU*insert(STU*head);//插入职工信息//

STU*tax(STU*head);//计算税金//

STU*calc(STU*head);//计算应发工资//

STU*total(STU*head);//计算实发工资//

STU*sort(STU*head);//对职工信息进行排序//

STU*insort(STU*head);//升序函数//

STU*desort(STU*head);//降序函数//

void*index(STU*head);//分类统计//

void*index1(STU*head);

void*index2(STU*head);

void*index3(STU*head);

void*index4(STU*head);

intuser_ID();//登录账户函数//

STU表示结构体类型名

Head表示链表的头结点

5、源代码分析

6、⑴程序预处理

包括加载头文件,定义结构体、常量和变量,并对它们进行初始化工作。

#include

#include

#include

#include

#include

#include

⑵主函数main()

voidmain()

{intch;

chara;

STU*head=NULL;

system("color02");//背景色/前景色的设置(0黑色、1蓝色、2绿色、3浅绿色、4红色、5紫色、6黄色、7白色、8灰色、9淡紫色、A淡绿色、B淡浅绿色、C淡红色、D淡紫色、E淡黄色、F亮白色)//

printf("&****&****&****&****&****&****&****&\n");

printf("*欢迎使用工资管理系统*\n");

printf("************************************\n");

printf("**************************表头***************************\n");

printf("*实验名称:

工资管理系统*\n");

printf("*实验制作成员:

程新华、马晓辉、马存祥、赵宽祖*\n");

printf("*组长:

程新华*\n");

printf("*测试员:

马晓辉*\n");

printf("*调试:

程新华*\n");

printf("*实验制作时间:

*\n");

printf("*修改时间:

*\n");

printf("*********************************************************\n");

printf("&&&&&&&&&&&&********按任意键继续********&&&&&&&&&&&&&&&&&");

a=getchar();

while(!

a);

system("cls");

user_ID();

while

(1)

{

ch=menu_select();

switch(ch)

{

case1:

head=append(head);

break;//制作工资表//

case2:

list(head);

break;//输出所有的职工的信息//

case3:

head=modify(head);

break;//修改职工信息//

case4:

head=insert(head);

break;//插入职工信息//

case5:

search(head);

break;//查询职工信息//

case6:

head=dele(head);

break;//删除职工信息//

case7:

head=sort(head);

break;//对职工信息进行排序//

case8:

index(head);

break;//分类统计//

case0:

exit(0);//退出//

default:

printf("Inputerror!

\n");

break;

}

}

}六、运行结果

1、主界面

成绩管理系统主菜单

2、输入学生记录

3、显示记录

4、修改记录

5、插入记录

6、删除记录

7、对职工信息排序

(1)升序

(2)降序

7、源程序代码

#include

#include

#include

#include

#include

#include

structworker//定义数据结构//

{

charno[11];//编号//

charname[15];//姓名//

charxb[10];//性别//

doublejbgz;//基本工资//

doublekoukuan;//扣款//

doubleyfgz;//应发工资//

doubleshuijin;//税金//

doublesfgz;//实发工资//

charpost[10];//职位//

structworker*next;

};

typedefstructworkerSTU;//结构体类型名//

/******函数原型*********/

intmenu_select(void);//主菜单//

STU*append(STU*head);//添加记录//

STU*appendNode(STU*head);

voidlist(STU*head);//显示所有数据//

STU*modify(STU*head);//修改职工记录//

STU*modifyNode(STU*head);

void*search(STU*head);//查询职工信息//

void*no(STU*head);//编号查询//

void*name(STU*head);//姓名查询//

STU*dele(STU*head);//删除职工信息//

STU*deleNode(STU*head,chark[11]);

STU*insert(STU*head);//插入职工信息//

STU*tax(STU*head);//计算税金//

STU*calc(STU*head);//计算应发工资//

STU*total(STU*head);//计算实发工资//

STU*sort(STU*head);//对职工信息进行排序//

STU*insort(STU*head);//升序函数//

STU*desort(STU*head);//降序函数//

voidindex(STU*head);//分类统计//

voidindex1(STU*head);

voidindex2(STU*head);

voidindex3(STU*head);

voidindex4(STU*head);

intuser_ID();//登录账户函数//

//**************************主函数****************************//

voidmain()

{intch;

chara;

STU*head=NULL;

system("color02");//背景色/前景色的设置(0黑色、1蓝色、2绿色、3浅绿色、4红色、5紫色、6黄色、7白色、8灰色、9淡紫色、A淡绿色、B淡浅绿色、C淡红色、D淡紫色、E淡黄色、F亮白色)//

printf("&****&****&****&****&****&****&****&\n");

printf("*欢迎使用工资管理系统*\n");

printf("************************************\n");

printf("**************************表头***************************\n");

printf("*实验名称:

工资管理系统*\n");

printf("*实验制作成员:

程新华、马晓辉、马存祥、赵宽祖*\n");

printf("*组长:

程新华*\n");

printf("*测试员:

马晓辉*\n");

printf("*调试:

程新华*\n");

printf("*实验制作时间:

*\n");

printf("*修改时间:

*\n");

printf("*********************************************************\n");

printf("&&&&&&&&&&&&********按任意键继续********&&&&&&&&&&&&&&&&&");

a=getchar();

while(!

a);

system("cls");

user_ID();

while

(1)

{

ch=menu_select();

switch(ch)

{

case1:

head=append(head);

break;//制作工资表//

case2:

list(head);

break;//输出所有的职工的信息//

case3:

head=modify(head);

break;//修改职工信息//

case4:

head=insert(head);

break;//插入职工信息//

case5:

search(head);

break;//查询职工信息//

case6:

head=dele(head);

break;//删除职工信息//

case7:

head=sort(head);

break;//对职工信息进行排序//

case8:

index(head);

break;//分类统计//

case0:

exit(0);//退出//

default:

printf("Inputerror!

\n");

break;

}

}

}

//*************菜单选项*****************//

intmenu_select(void)

{intch;

printf("&*************主菜单*************************&\n");

printf("*1.制作工资表*\n");

printf("*2.输出所有的职工的信息*\n");

printf("*3.修改职工的信息*\n");

printf("*4.插入职工信息*\n");

printf("*5.查询职工的信息*\n");

printf("*6.删除职工的信息*\n");

printf("*7.对职工信息进行排序*\n");

printf("*8.分类统计*\n");

printf("*0.退出*\n");

printf("&********************************************&\n");

printf("请输入你的选择:

");

scanf("%d",&ch);

returnch;

}

//***********制作工资表***************************//

STU*append(STU*head)

{charc;

system("cls");

do{head=appendNode(head);//向链表末尾添加一个节点//

printf("确认添加新纪录请按Y/y!

");

printf("其他键视为不添加!

\n");

printf("你想添加一个新的记录吗(Y/N)?

");

scanf("%c",&c);

}while(c=='Y'||c=='y');

system("cls");

returnhead;

}

STU*appendNode(STU*head)

{

STU*p=NULL;

STU*pr=head;

p=(STU*)malloc(sizeof(STU));//为新添加的节点申请内存//

if(p==NULL)//若申请内存失败,则输出错误信息,退出程序//

{

printf("Noenoughmemorytoalloc");

exit(0);

}

if(head==NULL)//若原链表为空,则将新建节点置为首节点//

{

head=p;

}

else//若原链表为非空,则将新建节点添加到表尾*/

{

while(pr->next!

=NULL)//若未到表尾,则继续移动指针pr,直到pr指向表尾//

{

pr=pr->next;

}

pr->next=p;//将新建节点添加到链表的末尾//

}

pr=p;//让pr指向新建节点//

printf("输入职工的编号:

");

scanf("%s",p->no);

printf("输入职工的姓名:

");

scanf("%s",p->name);

printf("输入职工的性别:

");

scanf("%s",p->xb);

printf("输入职工的职位:

");

scanf("%s",p->post);

printf("输入职工的月基本工资:

");

scanf("%lf",&p->jbgz);

printf("输入职工的月扣款数:

");

scanf("%lf",&p->koukuan);

p->sfgz=0;//初始实发工资为0//

p->shuijin=0;//初始税金为0//

p->yfgz=0;//初始应发工资为0//

pr->next=NULL;//将新建节点置为表尾//

returnhead;

}

//********************输出职工的信息****************************//

voidlist(STU*head)

{

STU*p=head;

system("cls");

if(p==NULL)

printf("工资表为空请重新输入!

!

\n");

else

{head=calc(head);

head=tax(head);

head=total(head);

printf("*************************************工资表*******************\n");

printf("编号\t姓名\t性别\t职位\t基本工资\t扣款\t应发工资\t实发工资");

while(p!

=NULL)

{printf("%s\t%s\t%s\t%s\t%.2lf\t%.2lf\t%.2lf\t%.2lf\n",p->no,p->name,p->xb,p->post,p->jbgz,p->koukuan,p->yfgz,p->sfgz);

p=p->next;}

}

}

//*******************修改职工信息*******************//

STU*modify(STU*head)

{

charc;

STU*p=NULL;

STU*q=head;

system("cls");

do{p=modifyNode(head);

printf("继续修改请按Y/y!

");

printf("其他键视为不修改!

\n");

printf("你想继续修改记录吗(Y/N)?

");

scanf("%c",&c);

}while(c=='Y'||c=='y');

returnhead;

}

STU*modifyNode(STU*head)

{inti,j;

chark[11];

STU*p=NULL;

STU*q=head;

system("cls");

if(q==NULL)

{printf("工资表为空请重新输入!

!

\n");

returnhead;}

printf("请输入你想修改的职工的编号:

");

scanf("%s",k);

while(q&&strcmp(q->no,k)!

=0)//做比较判断//

q=q->next;//没找到,指针后移继续查找//

if(q==NULL)//指针为空,说明没有找到//

{printf("Notfound!

\n");

returnhea

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2