工资管理系统的开发设计

(一)需求分析

  本次课题为工资管理系统的开发和设计。即模拟公司实际运营情况,对员工工资进行管理。整体实现职工工资的录入,删除,查找,修改,读取,工资排序等要求。

应实现以下功能:

  1. 数据录入功能
    主要是对员工工资的日常管理,如:工资的输入,修改,迅速准确地完成工资信息统计计算以及对员工信息录入,修改等相关操作。
  2. 数据查询功能
    1) 查询某一员工每个月份的工资情况
    2) 查询某一月份每个员工的工资情况
    3) 按编号查找某个员工的全部信息
  3. 数据删除功能
    删除某一员工的相关信息
    4.数据统计功能
    统计员工交纳个人所得税以后的实际工资
  4. 数据排序功能
    对某一员工按照各月工资高低排序
  5. 数据保存功能
    将员工信息保存到文件

(二)初步设计

(1) 用结构体数组存储每个员工信息

struct Month
{int month;int money;int finalmoney;
};
struct worker
{char name[30];char id[10];char job[30];unsigned char flag;int  mnum;int  finalmoney;struct Month m[13] ;
} num[maxnum]; //定义人员信息数组

(2) 流程图

(三)详细设计

(1)代码展示

a.全局变量和头文件

#include<stdio.h>
#include<stdlib.h>
#include<string.h>#define maxnum 100FILE*in; //定义文件指针
FILE*out; //定义文件指针int worknum = 0;

b.主界面

void show()
{printf("\n");printf("***************工资管理系统主界面***************\n");printf("1.职工信息录入\t\t");printf("2.职工信息删除\n");printf("3.职工信息查找\t\t");printf("4.职工信息修改\n");printf("5.职工信息读取\t\t");printf("6.按照工资排序\n");printf("7.返回主界面\t\t");printf("8.退出系统\n");printf("************************************************\n");
}

c.写入文件和读文件

void Write_File()
{FILE *fp;int i;if ((fp = fopen("worker.txt", "wb")) == NULL)  //打开文件{printf("inFile open error!\n");exit(1);}for(i=0; i<worknum; i++){fwrite(&num[i],sizeof(struct worker),1,fp);}fclose(fp);
}void Read_File()
{int i=0;FILE *fp;if ((fp = fopen("worker.txt", "r")) == NULL)  //打开文件  wb{printf("outFile open error!\n");//exit(1);worknum = 0;return;}memset(num,0,maxnum*sizeof(struct worker));while(!feof(fp)){fread(&num[i++],sizeof(struct worker),1,fp);}worknum=i-1;fclose(fp);}

d.录入

//添加职工信息
void record(int n)
{int i,j,salary,month,money;char id[10];int f=0;struct worker tmp;Read_File();system("cls");printf("录入职工信息:\n");for(i=0; i<n; i++){printf("请输入第%d个职工的编号\n",i+1);scanf("%s",tmp.id);//判断for(j=0; j<worknum; j++){if(strcmp(tmp.id,num[j].id)==0){printf("此编号已存在,不能重复添加!!");return;}}printf("开始录入:\n");printf("请输入第%d人姓名信息:",i+1);scanf("%s",tmp.name);printf("请输入第%d人的职务:",i+1);scanf("%s",tmp.job);printf("请输入总的工资月份数:\n");scanf("%d",&tmp.mnum);memset(tmp.m,0,13*sizeof(struct Month));for(j=0; j<tmp.mnum; j++){printf("请输入第%d个月份:\n",j+1);scanf("%d",&tmp.m[j].month);printf("请输入第%d人第%d个月应得工资:",i+1,j+1) ;scanf("%d",&tmp.m[j].money);//  printf("请输入第%d人第%d个月实际工资:",i+1,j+1) ;// scanf("%d",&tmp.m[j].finalmoney);tmp.m[j].finalmoney=actulSalary(tmp.m[j].money);printf("第%d人第%d个月应得工资为%d:",i+1,j+1,tmp.m[j].finalmoney) ;}tmp.flag=1;num[worknum++]=tmp;}Write_File();printf("添加成功!\n");
}

e.读取

//读取职工信息
void read()
{int i,j;system("cls");printf("读取职工信息:\n");Read_File();printf("月份\t职工号\t姓名\t职务\t应得工资\t实际工资\n");for(i=0; i<worknum; i++){for(j=0; j<num[i].mnum; j++){printf("%d\t",num[i].m[j].month);printf("%s\t %s\t %s\t %d\t\t %d\t \n",num[i].id,num[i].name,num[i].job,num[i].m[j].money,num[i].m[j].finalmoney);}}
}

f.查找

//方法一查找信息
void search1()
{int i, j, flag = 0;char id[10];printf("*****按编号查找某个员工的全部信息****** \n");printf("请输入编号:");scanf("%s", id);Read_File();for(i=0; i<worknum; i++){if(strcmp(num[i].id,id)==0){if(flag==0){flag=1;printf("查找成功!\n");printf("月份 \t职工号\t 姓名\t 职务\t 应得工资\t 实际工资\n");}for (j = 0; j < num[i].mnum; j++){printf("%d\t %s\t %s\t %s\t %d\t\t %d\t\n", num[i].m[j].month, num[i].id, num[i].name, num[i].job, num[i].m[j].money,num[i].m[j].finalmoney);}}}if(flag==0){printf("查找编号%s失败\n",id);return;}return ;}
//方法二查找信息
void search2()
{int month, i,j, f = 0,flag=0;char id[30];printf("按编号查找某一员工某个月的工资情况\n");printf("请输入员工编号:");scanf("%s", id);printf("请输入查找月份:");scanf("%d", &month);Read_File();for(i=0; i<worknum; i++){if(strcmp(num[i].id,id)==0){if(flag==0){flag=1;printf("查找成功!\n");printf("月份 \t职工号\t 姓名\t 职务\t 应得工资\t 实际工资\n");}for (j = 0; j < num[i].mnum; j++){if(num[i].m[j].month==month)printf("%d\t %s\t %s\t %s\t %d\t\t %d\t\n", num[i].m[j].month, num[i].id, num[i].name, num[i].job, num[i].m[j].money,num[i].m[j].finalmoney);}}}if(flag==0){printf("查找失败\n");return;}
}
//方法三查找信息
void search3()
{int month, i,j, f = 0,flag =0;printf("按照月份查找该月所有人的工资情况\n");printf("请输入查找月份!");scanf("%d", &month);Read_File();for(i=0; i<worknum; i++){for (j = 0; j < num[i].mnum; j++){if(num[i].m[j].month==month){if(flag==0){flag=1;printf("查找成功!\n");printf("月份 \t职工号\t 姓名\t 职务\t 应得工资\t 实际工资\n");}printf("%d\t %s\t %s\t %s\t %d\t\t %d\t\n", num[i].m[j].month, num[i].id, num[i].name, num[i].job, num[i].m[j].money,num[i].m[j].finalmoney);}}}if(flag==0){printf("查找失败\n");return;}}//查找职工信息
void search()
{int m;char c;system("cls");printf("查找职工信息:\n");printf("1.按编号查找某个员工的全部信息 \n2.按编号查找某一员工某个月的工资情况\n3.按照月份查找该月所有人的工资情况\n");printf("请选择相关操作:");scanf("%d",&m);switch(m){case 1:search1();break;case 2:search2();break;case 3:search3();break;}return 0;}

g.修改

//修改职工信息
void modify()
{int c,i,j,f=0;char ch;char name[30],job[30],id[10];int flag = 0;Read_File();//Write_File();printf("修改员工信息:\n");printf("请输入员工编号:");scanf("%s",id);for(i=0; i<worknum; i++){if(strcmp(num[i].id,id)==0){flag=1;}}if(flag==0){printf("未找到编号%s\n",id);return;}printf("1.修改姓名 2.修改职务 3.修改工资 4.修改月份\n");printf("请选择:");scanf("%d",&c);switch(c){case 1:{system("cls");printf("**********修改姓名*********\n");for(i=0; i<worknum; i++){if(strcmp(num[i].id,id)==0){printf("员工原来的姓名为:%s\n",num[i].name);printf("请输入员工的新姓名:");scanf("%s",name);strcpy(num[i].name,name);printf("修改成功!\n");}}Write_File();break;}case 2:{system("cls");printf("**********修改职务*********");for(i=0; i<worknum; i++){if(strcmp(num[i].id,id)==0){printf("员工的原来职务为:%d\n",num[i].job);printf("请输入员工的新职务:");scanf("%s",job);strcpy(num[i].job,job);printf("修改成功!\n");}}Write_File();break;}case 3:{int salary,month;system("cls");printf("**********修改工资*********");printf("请输入月份:");scanf("%d",&month);for(i=0; i<worknum; i++){if(strcmp(num[i].id,id)==0){for(j=0; j<=num[i].mnum; j++){if(num[i].m[j].month==month){printf("员工%d月的原来工资为:%d\n",month,num[i].m[j].money);printf("请输入员工%d月的新工资:",month);scanf("%d",&num[i].m[j].money);printf("修改成功!\n");}}}}Write_File();break;}case 4:{int month,newmonth;system("cls");printf("**********修改月份*********");printf("请输入想要修改的月份:");scanf("%d",&month);for(i=0; i<worknum; i++){if(strcmp(num[i].id,id)==0){for(j=0; j<=num[i].mnum; j++){if(num[i].m[j].month==month){printf("员工%d月的原来的月份为:%d\n",month,num[i].m[j].month);printf("请输入员工的新月份:");scanf("%d",&num[i].m[j].month);printf("修改成功!\n");}}}}Write_File();}break;}//system("pause");
}

h.删除

//删除职工信息void delet()
{char id[10];char c;int i,flag=0;FILE *fp;system("cls");printf("删除职工信息:\n");printf("请输入职工编号:");scanf("%s",id);Read_File();if ((fp = fopen("worker.txt", "wb")) == NULL)  //打开文件{printf("open failedd!!\n");return;}for(i=0; i<worknum; i++){if(strcmp(num[i].id,id)==0){flag=1;continue;}fwrite(&num[i],sizeof(struct worker),1,fp);}if(flag==1)printf("删除成功!!\n");elseprintf("未找到该职工编号\n");Read_File();fclose(fp);return ;}

i.计算实际工资

 int actulSalary(int money)
{int k=money/1000;double rate;switch(k){case 1:case 2:case 3:case 4:{rate=0.1;//printf("%.2",money-money*rate);break; }case 5:case 6:{rate=0.2;break;}case 7:case 8:{rate=0.3;break;}default:{rate=0.4;break;}}return money-money*rate;
}

j.主函数

void main()
{int choose,n,i;memset(num,0,maxnum*sizeof(struct worker));while(1){show();printf("请输入数字,选择相关操作:");scanf("%d",&choose);system("cls");if(choose==8){break;}switch(choose){case 1:{system("cls");printf("请输入录入的人数:\n");scanf("%d",&n);record(n);break;}case 2:delet();break;case 3:search();break;case 4:modify();break;case 5:read();break;//case 6://   save();//  break;case 6:sort();break;case 7:break;default :printf("输入数字不正确,请重新输入.");break;}system("pause");//system("cls");}
}

(三)算法改进

  1.将文件存储换为数据库存储应该更好些2.实际情况还应包含更多内容。如:加班时间,加班类别,加班天数,岗位补贴,事假扣款,病假扣款,年终奖金等,应该具体完善。

工资管理系统的开发设计相关推荐

  1. 基于C语言编程的职工工资管理系统项目的设计与开发

    文章目录 基于C语言编程的职工工资管理系统项目的设计与开发 一.需求分析 二.项目环境 2.1.项目创建过程 2.2.向项目添加头文件与源文件 三.职工工资管理系统模块功能 3.1.系统总体设计框图 ...

  2. 工资管理系统——总体分析设计(原创文档)

    项目名称:工资管理系统 文档编号:01                                              文档名称:工资管理系统总体分析                     ...

  3. mysql实现(工资管理系统)课程设计

    目录 1 需求分析 1 2 概念结构设计 2 3 逻辑结构设计 3 4 数据库物理设计与实施 5 5 访问系统库 10 6 总结 11 1 需求分析 本系统的主要目的是,明确查询公司职工某年某月的工资 ...

  4. JSP 人力资源管理系统 软件开发设计 myeclipse开发 mysql数据库

    一.源码特点  翰文科技原创     JSP 人力资源管理系统 是一套完善的WEB设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发. 文件下 ...

  5. 南宁供电局抄表及电量电费管理系统的开发设计

    钟 洁 广西电力工业勘察设计研究院 南宁 530023 1 引言 近年来随着经济体制改革和人民生活水平的提高,社会对电力的供应量及消耗量需求日益增长.南宁供电局所管辖的南宁市区及郊区的用电业务迅速扩大 ...

  6. 基于jsp(java)工资管理系统的设计和开发(含源文件)

    获取项目源文件,联系Q:1225467431,可指导毕设,课设 论文是本团队帮同学做过的案例,需要毕业论文设计(论文+源程序+答辩PPT)的同学联系799523222 论文是本团队帮同学做过的案例,需 ...

  7. c语言教工工资管理系统课程设计

    序 言 借助现代信息技术和管理理论,建立学校管理信息系统势在必行.对学校而言,全面开发和应用计算机管理信息系统就是有必要的.在学校管理中,教师是学校的宝贵资源,也是学校的"生命线" ...

  8. Java人事与工资管理系统的设计

    技术:Java.JSP等 摘要: 本文采用自顶向下的结构化的系统分析方法,阐述了一个功能全面的人事与工资管理系统的开发过程.操作流程及其一些核心的技术.本文首先进行了项目概述,简单介绍了项目开发的背景 ...

  9. 企业员工工资管理系统

    企业工资管理是人力资源管理的一个核心环节,在市场经济和全球一体化的大背景下,随着人力资源管理在战略层面上发挥着越来越重要的作用,传统的薪酬制度已于现代化的要求不匹配,并越来越限制着企业的发展.本系统以 ...

  10. 高校教师工资管理系统java_基于jsp的高校职工工资管理系统-JavaEE实现高校职工工资管理系统 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的高校职工工资管理系统, 该项目可用各类java课程设计大作业中, 高校职工工资管理系统的系统架构分为前后台两部分, ...

最新文章

  1. 集成学习(Ensemble Learning)
  2. R包操作相关:安装、卸载、加载、移除、已经安装的包、包的路径、函数查看等
  3. 生成邮件图片签名的链接Gmail、hotmail 等... ...
  4. 梦幻手游登录显示服务器爆满,《梦幻西游》手游全服爆满,iOS二区开启_ 《梦幻西游》手游官网-人人都玩,无处不在...
  5. 群晖挂pt 路由器虚拟服务器设置,群晖挂pt 路由器虚拟服务器设置
  6. python基本数据类型包括哪些_python入门3——基本数据类型
  7. 1. 定义方法,求出指定元素在数组中出现的次数.
  8. php异步处理下载文件,php异步处理-上传文件
  9. 编程模式(schema) —— 表驱动法(table-driven)
  10. 明明是OS问题,却认为是CPU,这个教训是什么
  11. 阿里云云计算 33 PolarDB的优势 产品架构
  12. word电子签名工具_电子签名是您不会想到的必备工具的5个理由
  13. 局域网计算机名和ip扫描工具,局域网IP扫描器(Advanced IP Scanner)
  14. level2行情对炒股有什么帮助?
  15. 【杂记】Windows首页挟持病毒查杀过程记录
  16. 浓缩就是精华——21行python实现输入法自动提示(带过程举例,附录也精彩)
  17. 项目经理做什么工作的,每个公司不一样吗?
  18. 多线程并发篇(1024节日快乐)
  19. HTML几种设置水平居中和垂直居中的方式
  20. Android面试题总结(三)

热门文章

  1. 解决各种IE兼容问题
  2. 灰色按钮克星v.10
  3. 数字化项目建设管理难点分析与对策
  4. Python 数据分析与挖掘概述
  5. NAND和NOR Flash的区别
  6. MDI Jade6.5安装教程-附安装包
  7. X32位 天堂2 二章/三章 服务端协议号修改方法
  8. 下载腾讯视频(mp4 格式)
  9. HTC HD2解锁详细教程
  10. mx350显卡天梯图_2019.8月CPU和显卡性能天梯图