工资管理系统的开发设计
工资管理系统的开发设计
(一)需求分析
本次课题为工资管理系统的开发和设计。即模拟公司实际运营情况,对员工工资进行管理。整体实现职工工资的录入,删除,查找,修改,读取,工资排序等要求。
应实现以下功能:
- 数据录入功能
主要是对员工工资的日常管理,如:工资的输入,修改,迅速准确地完成工资信息统计计算以及对员工信息录入,修改等相关操作。 - 数据查询功能
1) 查询某一员工每个月份的工资情况
2) 查询某一月份每个员工的工资情况
3) 按编号查找某个员工的全部信息 - 数据删除功能
删除某一员工的相关信息
4.数据统计功能
统计员工交纳个人所得税以后的实际工资 - 数据排序功能
对某一员工按照各月工资高低排序 - 数据保存功能
将员工信息保存到文件
(二)初步设计
(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.实际情况还应包含更多内容。如:加班时间,加班类别,加班天数,岗位补贴,事假扣款,病假扣款,年终奖金等,应该具体完善。
工资管理系统的开发设计相关推荐
- 基于C语言编程的职工工资管理系统项目的设计与开发
文章目录 基于C语言编程的职工工资管理系统项目的设计与开发 一.需求分析 二.项目环境 2.1.项目创建过程 2.2.向项目添加头文件与源文件 三.职工工资管理系统模块功能 3.1.系统总体设计框图 ...
- 工资管理系统——总体分析设计(原创文档)
项目名称:工资管理系统 文档编号:01 文档名称:工资管理系统总体分析 ...
- mysql实现(工资管理系统)课程设计
目录 1 需求分析 1 2 概念结构设计 2 3 逻辑结构设计 3 4 数据库物理设计与实施 5 5 访问系统库 10 6 总结 11 1 需求分析 本系统的主要目的是,明确查询公司职工某年某月的工资 ...
- JSP 人力资源管理系统 软件开发设计 myeclipse开发 mysql数据库
一.源码特点 翰文科技原创 JSP 人力资源管理系统 是一套完善的WEB设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发. 文件下 ...
- 南宁供电局抄表及电量电费管理系统的开发设计
钟 洁 广西电力工业勘察设计研究院 南宁 530023 1 引言 近年来随着经济体制改革和人民生活水平的提高,社会对电力的供应量及消耗量需求日益增长.南宁供电局所管辖的南宁市区及郊区的用电业务迅速扩大 ...
- 基于jsp(java)工资管理系统的设计和开发(含源文件)
获取项目源文件,联系Q:1225467431,可指导毕设,课设 论文是本团队帮同学做过的案例,需要毕业论文设计(论文+源程序+答辩PPT)的同学联系799523222 论文是本团队帮同学做过的案例,需 ...
- c语言教工工资管理系统课程设计
序 言 借助现代信息技术和管理理论,建立学校管理信息系统势在必行.对学校而言,全面开发和应用计算机管理信息系统就是有必要的.在学校管理中,教师是学校的宝贵资源,也是学校的"生命线" ...
- Java人事与工资管理系统的设计
技术:Java.JSP等 摘要: 本文采用自顶向下的结构化的系统分析方法,阐述了一个功能全面的人事与工资管理系统的开发过程.操作流程及其一些核心的技术.本文首先进行了项目概述,简单介绍了项目开发的背景 ...
- 企业员工工资管理系统
企业工资管理是人力资源管理的一个核心环节,在市场经济和全球一体化的大背景下,随着人力资源管理在战略层面上发挥着越来越重要的作用,传统的薪酬制度已于现代化的要求不匹配,并越来越限制着企业的发展.本系统以 ...
- 高校教师工资管理系统java_基于jsp的高校职工工资管理系统-JavaEE实现高校职工工资管理系统 - java项目源码...
基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的高校职工工资管理系统, 该项目可用各类java课程设计大作业中, 高校职工工资管理系统的系统架构分为前后台两部分, ...
最新文章
- 集成学习(Ensemble Learning)
- R包操作相关:安装、卸载、加载、移除、已经安装的包、包的路径、函数查看等
- 生成邮件图片签名的链接Gmail、hotmail 等... ...
- 梦幻手游登录显示服务器爆满,《梦幻西游》手游全服爆满,iOS二区开启_
《梦幻西游》手游官网-人人都玩,无处不在...
- 群晖挂pt 路由器虚拟服务器设置,群晖挂pt 路由器虚拟服务器设置
- python基本数据类型包括哪些_python入门3——基本数据类型
- 1. 定义方法,求出指定元素在数组中出现的次数.
- php异步处理下载文件,php异步处理-上传文件
- 编程模式(schema) —— 表驱动法(table-driven)
- 明明是OS问题,却认为是CPU,这个教训是什么
- 阿里云云计算 33 PolarDB的优势 产品架构
- word电子签名工具_电子签名是您不会想到的必备工具的5个理由
- 局域网计算机名和ip扫描工具,局域网IP扫描器(Advanced IP Scanner)
- level2行情对炒股有什么帮助?
- 【杂记】Windows首页挟持病毒查杀过程记录
- 浓缩就是精华——21行python实现输入法自动提示(带过程举例,附录也精彩)
- 项目经理做什么工作的,每个公司不一样吗?
- 多线程并发篇(1024节日快乐)
- HTML几种设置水平居中和垂直居中的方式
- Android面试题总结(三)