工资管理系统论文.docx

上传人:b****8 文档编号:10986906 上传时间:2023-02-24 格式:DOCX 页数:29 大小:59.73KB
下载 相关 举报
工资管理系统论文.docx_第1页
第1页 / 共29页
工资管理系统论文.docx_第2页
第2页 / 共29页
工资管理系统论文.docx_第3页
第3页 / 共29页
工资管理系统论文.docx_第4页
第4页 / 共29页
工资管理系统论文.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

工资管理系统论文.docx

《工资管理系统论文.docx》由会员分享,可在线阅读,更多相关《工资管理系统论文.docx(29页珍藏版)》请在冰豆网上搜索。

工资管理系统论文.docx

工资管理系统论文

《高级语言程序设计》

课程设计说明书

 

设计题目:

工资管理系统

班级:

电子信息工程1003班

***王静

学号:

**********

****刘晓佩

成绩:

 一、需求分析

 题目:

工资管理系统

总体设计目标:

使用者可以利用此系统进行对工资管理的各项运算操作,如根据用户提供的客户工资自动地进行计算实发工资,查找职工信息数据,删除记录,插入记录,保存记录及按实发工资排序等,最后清晰完整的工资管理结果显现在屏幕中。

大大方便使用者对工资管理的统计操作,这样不仅可以提高效率,而且方便易操作。

二.课程设计目的:

1.进一步加深、巩固学生所学专业课程(《C语言》)的基本理论知识;

2.理论联系实际,进一步培养学生综合分析问题和解决问题的能力;

3.掌握运用C语言独立地编写、调试应用程序和进行其它相关设计的技能;

4.充分发挥广大同学的潜力,使他们通过本次课程设计而得到全面的锻炼;

5.提高运用C语言解决实际问题的能力。

三.课程设计要求

1.分析课程设计题目的要求;

2.设计流程图,功能框图;

3.编写后续程序代码,调试程序使其能正确运行;

4.设计完成的程序要便于操作和使用;

5.设计完成后提交课程设计报告。

四.该程序具备的功能:

1)具备对职工的工资信息录入功能(添加、删除、排序)

2)具备对工资的排序功能(最高分,最低分等)

3)具备对工资的统计及查询功能。

(应发工资、实发工资、工资总数)

4)具备计算工资的功能

5)按职工号索引

6)按部门求合计

五.详细设计说明:

1.详细的设计说明:

1)在录入员工工资之前,必须知道员工的相关信息,所以员工基本信息的录入

包括工资的录入应事先完成。

由于需要将不同类型的数据组合成一个有机的整体,

组合在一起的数据是互相联系的,所以要用到结构体类型,来实现这样的功能。

即:

structnode

node编码姓名基本工资扣款应发工资税金实发工资

申明结构体变量同时定义变量。

2)由于要对一些信息进行删除,所以最好使用链表。

建立链表,即在定义结构体后,对链表进行初始化,后依次插入结点,输入结点数据,并建立前后连接的关系。

3)用冒泡法对员工工资进行排序。

2.流程图:

 

3结构功能图

四、编码

1.说明

 “工资管理系统总控模块”的功能由menu_select函数实现,根据“工资管理系统总控模块”的程序流程图编写menu_select函数。

 “计算实发工资子模块”的功能由calc函数实现,根据“计算实发工资子模块”的程序流程图编写calc函数。

 “查找记录子模块”的功能由search函数实现,根据“查找记录子模块”的程序流程图编写search函数。

 “删除记录子模块”的功能由delete函数实现,根据“删除记录子模块”的程序流程图编写delete函数。

 “插入记录子模块”的功能由insert函数实现,根据“插入记录子模块”的程序流程图编写insert函数。

 “保存记录子模块”的功能由save函数实现,根据“插入记录子模块”的程序流程图编写save函数。

 “按实发工资升序排序子模块”的功能由sort函数实现,根据“按实发工资升序排序子模块”的程序流程图编写sort函数。

 2.选择编写程序语言

/******头文件(.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];    /*姓名*/

  chardanwei[15];  /*单位*/

  floatjbgz;       /*基本工资*/

  floatkoukuan;    /*扣款*/

  floatyfgz;       /*应发工资*/

  floatshuijin;    /*税金*/

  floatsfgz;       /*实发工资*/

  structz1*prior; /*前驱指针*/

  structz1*next;  /*后继指针*/

}SALARY;             /*结构体类型名*/

structz1*First;    /*双链表头指针*/

structz1*Last;     /*双链表尾指针*/

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

voidinit();         /*初始化*/

voidcreate();       /*创建链表*/

voidcalc();         /*计算应发工资*/

voiddelete();       /*删除*/

voidsearch();       /*查找*/

voidsave();         /*保存文件*/

voidload();         /*读取文件*/

voidcomputer();     /*计算所需各种票面张数*/

voidinsert();       /*插入*/

voidappend();       /*追加*/

voidcopy();         /*复制文件*/

voidsort();         /*排序*/

voidindex();        /*索引*/

voidtotal();        /*分类合计*/

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

voidprint(SALARY*p);/*输出单条记录*/

voiddisplay();      /*随意逐条显示*/

floatfax(floatx);  /*计算税金*/

intmenu_select();   /*主菜单*/

/*******主函数开始**********/

main()

{

  inti;

  clrscr();

  for(;;)

  {

     switch(menu_select())       /*调用菜单函数返回一个整数值*/

     {

        case0:

calc();break;     /*计算实发工资*/

        case1:

search();break;   /*查找职工信息数据*/

        case2:

delete();break;   /*删除记录*/

        case3:

insert();break;   /*插入记录*/

        case4:

save();break;     /*保存文件*/

        case5:

sort();break;     /*按实发工资升序排序*/

        case6:

exit(0);          /*退出*/

      }

  }

}

/*菜单函数,函数返回值为整型,代表所选的菜单项*/

menu_select()

{

  char*f[]=

 {                  

   /*定义菜单字符串数组*/

  "**************MENU*************",/*菜单的标题行*/

  "0.Calcthesalary",          /*计算实发工资*/

  "1.Searchrecordonname",    /*查找记录*/

  "2.Deletearecord",          /*删除记录*/

  "3.Insertrecordtolist",    /*插入记录*/

  "4.Savedatatothefile",    /*保存文件*/

  "5.Sortonsfgz",             /*排序*/

  "6.Quit",                     /*退出*/

 };                   

  chars[80];

  int i;

  intkey=0;                   /*记录所压键值*/

  intc=0;

  gotoxy(1,25);                /*移动光标*/

  printf("pressanykeyentermenu......\n");/*压任意键进入主菜单*/

  getch();

  clrscr();                    /*清屏*/

  textcolor(YELLOW);           /*设置文本颜色为黄色*/

  textbackground(RED);        /*设置背景颜色为红色*/

  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<8;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)               /*所压键不是回车键时*/

  {

C语言课程设计-工资管理系统

  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?

17:

i-1;/*如压向上光标键↑,i减1,如已到第一行再上移,则到最后一行*/

     if(key==80)i=i==17?

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;                    /*返回代表菜单选项的整数值*/

}

/*计算实发工资*/

voidcalc()

{

  intx;                         /*行坐标*/

  inti=0;                       /*记录数*/

  floattemp;                    /*临时变量扣款*/

  SALARY*p;                     /*移动指针*/

  clrscr();                      /*清屏*/

  p=First;                       /*从头指针开始*/

  while(p!

=NULL)                 /*当p不为空时,也就是有记录时,外循环控制换页*/

  {

     x=0;

     clrscr();

     gotoxy(1,3);

printf("***************************gongziguanli************************************");  /*输出标题*/

     gotoxy(1,5);

printf("|--------------------------------------------------------------------------|");

     gotoxy(1,6);                /*下面输出字段标题*/

     printf("|   no   |     name     | jbgz | koukuan| yfgz |shuijin| sfgz |");

     while(p!

=NULL)              /*当p不为空时,也就是有记录时,内循环控制处理9条*/

     {

        gotoxy(1,7+x);

printf("|----------|----------------|--------|----------|--------|--------|--------|");

        gotoxy(1,8+x);printf("|");

        gotoxy(12,8+x);printf("|");

        gotoxy(29,8+x);printf("|");

        gotoxy(38,8+x);printf("|");

        gotoxy(49,8+x);printf("|");

        gotoxy(58,8+x);printf("|");

        gotoxy(67,8+x);printf("|");

        gotoxy(76,8+x);printf("|");

        gotoxy(2,8+x);

        printf("%-10s",p->no);  /*输出编号*/

        gotoxy(13,8+x);

        printf("%-15s",p->name);/*输出姓名*/

        gotoxy(30,8+x);

        printf("%.2f",p->jbgz); /*输出基本工资*/

        gotoxy(39,8+x);

        scanf("%f",&temp);      /*输入扣款*/

        p->koukuan=temp;        /*扣款字段赋值*/

        p->yfgz=p->jbgz-p->koukuan; /*计算应发工资=基本工资-扣款*/

        gotoxy(50,8+x);

        printf("%.2f",p->yfgz);     /*输出应发工资*/

        gotoxy(59,8+x);

        p->shuijin=(p->yfgz-1000)*fax(p->yfgz);/*否则按税率计算税金*/

        printf("%.2f",p->shuijin);  /*输出税金*/

        gotoxy(68,8+x);

        p->sfgz=p->yfgz-p->shuijin; /*计算实发工资*/

        printf("%-8.2f",p->sfgz);   /*输出实发工资*/

        x+=2;                       /*行坐标下移两行*/

        i++;                        /*记录数加1*/

        if(i%9==0)break;            /*记录数超过9条,跳出内循环*/

        p=p->next;                  /*指针后移,处理下一条*/

     }

     gotoxy(1,7+x);

printf("|----------|----------------|--------|----------|--------|--------|--------|\n");/*输出结束行*/

     printf("Pressanykeycongtinue...\n");

     getch();

  }

}

/*按编号查找记录*/

SALARY*find(char*no)

{

  SALARY*p;                        /*定义移动指针*/

  p=First;                          /*从头指针开始*/

 while(p)                          /*当p不为空时*/

  {

     if(!

strcmp(no,p->no))

        returnp;                   /*比较相等,查找成功,返回指针*/

     p=p->next;                     /*不相等指针后移*/

  }

  printf("notfound\n");            /*没有找到*/

  returnNULL;                      /*返回为空指针*/

}

/*删除结点*/

voiddelete()

{

  SALARY*p;                        /*定义临时变量,p指向要删除的结点p*/

  chars[11];                       /*要删除结点的编号*/

  clrscr();                         /*清屏*/

  printf("pleasedeletedno\n");    /*提示输入信息*/

  scanf("%s",s);                    /*输入要删除的职工编号*/

  if((p=find(s))!

=NULL)             /*调用查找函数,如果找到做下面的处理*/

  {

     if(First==p)                   /*如果是第一个结点*/

     {

        First=p->next;              /*将头指针指向其后继结点*/

        if(First)                   /*如头指针不为空*/

           First->prior=NULL;       /*将头结点的前驱设为空*/

        else

           Last=NULL;               /*否则头为空,尾也为空*/

     }

     else                           /*删除的不是第一个结点*/

     {

        p->prior->next=p->next;     /*p的前驱的后继指向p原来的后继*/

voidsearch()

{

  SALARY*p;                        /*移动指针*/

  chars[15];                       /*保存姓名*/

  clrscr();                         /*清屏*/

  printf("pleaseenternameforsearch\n");/*提示输入*/

  scanf("%s",s);                    /*输入要查找人的姓名*/

  p=First;                          /*移动指针从头指针开始*/

  while(strcmp(p->name,s)&&p!

=NULL) /*做比较判断*/

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

  

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

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1