c语言课程设计 工资管理系统
这个是我的课程设计要求,因为要求较为模糊,所以自行发挥的地方较多,读者可以自行阅读,根据需要修改代码。。。。。
工资管理系统程序设计
【题目描述】
工资管理系统是针对企业的工资管理业务进行计算机处理而开发的应用软件。该系统由系统维护、输入、查询、修改、输出、统计等子模块组成,功能基本涵盖普通企业的工资管理业务范围。企业应用本系统后,可以有效的提高工资管理水平。从需求分析、开发平台选择、系统模块建立、数据库设计、功能模块编程实现及软件测试等方面阐述了本应用系统的设计过程。为便于说明,文中绘制了程序结构框图、数据流程图和部分界面图。最后附有主要的源程序代码清单。
【题目要求】
该软件主要是实现对职工工资进行系统化的管理,首先可以对工资基本信息进行输入和存取,其次可以读取工资的相关信息,然后可以删除和插入工资的相关信息,还有就是可按职工号查询此职工号的职工的相关信息,并按照工资统计结果的高低进行排序。由此来系统化管理职工工资,并达到简易操作的目的。
【功能说明】
该系统的主要功能是实现职工工资的录入,包括(录入职工的基本工资、实发工资、津贴、岗贴、补贴、房帖、交通补贴、储蓄、汇费)。对职工的工资信息进行删除、修改、个人所得税的计算。并统计职工的所有信息。该系统功能主要包括六大模块:
1)职工个人说得税的计算模块,根据工资多于10000,在5000—10000之间,少于5000三种情况进行计算。
2)添加职工的工资信息模块,用户根据输入职工编号后,对工资信息进行录入。
3)职工工资查询模块,根据用户输入职工编号后,方可进行查询。
4)职工工资修改模块,用户输入职工编号后,对以前的信息进行修改。
5)数据输出模块,输出其相应的模块功能。
6)职工工资统计模块,根据输入的职工信息进行统计。
【设计要求】
(1)有较为美观简洁大方的菜单,能保证用户方便、直观、快捷的熟悉并使用软件的各项功能。
(2)有严密正确的数据验证功能和数据处理功能,能够查询、统计,对工资进行排序,对数据进行保存和读取,能按职工号查找工资信息,以及插入和删除工资信息。
(3)系统要有一定的可靠性。
【源代码】
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#define N 100struct GongZi
{int num; //员工工号; char name[20]; //员工姓名; float jbgz; //基本工资; float jt; //津贴; float gt; //岗贴; float bt; //补贴; float ft; //房贴; float jtbt; //交通补贴; float sfgz; //实发工资; float sh; //税收; float zzgz; //最终工资;
}Yuan,yuan[N];char filename[100]={"员工工资管理.txt"}; //储存员工的信息; FILE *fp; //文件指针; void Gongz(); //职工个人所得税计算模块;
void Tianj(); //添加职工的工资信息模块;
void Chax(); //职工工资查询模块;
void Xiug(); //职工工资修改模块;
void Tongji(); //职工工资统计模块;
void Try_again(); //输入错误重试模块;
void Menu(); //主菜单;
void zhuijia(); //追加添加职工信息;
void Shanchu(); //删除职工的信息; int main(void)
{Menu();return 0;
}void Menu() //主菜单;
{printf("=====================================\n");printf("| (1)职工个人所得税的计算 |\n");printf("| (2)职工工资录入 |\n");printf("| (3)添加职工信息 |\n"); printf("| (4)职工工资查询 |\n");printf("| (5)删除职工信息 |\n");printf("| (6)职工工资修改 |\n");printf("| (7)职工工资统计 |\n");printf("| (0)退出程序 |\n");printf("=====================================\n");int n;scanf("%d",&n);switch(n){case 0: exit(0);case 1: Gongz(); break;case 2: Tianj(); break;case 3: zhuijia(); break;case 4: Chax(); break;case 5: Shanchu(); break;case 6: Xiug(); break;case 7: Tongji(); break;default: Try_again(); break;}
}void Tianj() //信息录入;
{int select;fp=fopen(filename,"wb+");if(fp==NULL){printf("打开文件夹失败:\n");exit(1);} printf("******************请输入员工信息*******************\n");printf("输入员工编号:");scanf("%d",&Yuan.num);printf("输入员工姓名:");scanf("%s",Yuan.name);printf("输入员工的基本工资:"); scanf("%f",&Yuan.jbgz);printf("津贴:");scanf("%f",&Yuan.jt);printf("岗贴:");scanf("%f",&Yuan.gt); printf("房贴:");scanf("%f",&Yuan.ft);printf("补贴:");scanf("%f",&Yuan.bt);printf("交通补贴:");scanf("%f",&Yuan.jtbt);Yuan.sfgz=Yuan.jbgz+Yuan.jt+Yuan.gt+Yuan.ft+Yuan.bt+Yuan.ft;printf("实发工资:%f",Yuan.sfgz);printf("\n");fwrite(&Yuan,sizeof(struct GongZi),1,fp); printf("*****(1)继续录入*****(2)主菜单**********\n"); //在这里进行选择,是否进行录入还是选择返回主菜单; printf("请输入你的选择[ ]\b\b"); scanf("%d",&select);while(1){if(select==2){fclose(fp);system("cls"); Menu();}else if(select==1) { fclose(fp);system("cls");zhuijia();}else{printf("输入错误,请重新输入[ ]\b\b");scanf("%d",&select);} }
}/*添加职工信息,跟功能2唯一区别,该功能是从利用文件追加进行输入*/ void zhuijia()
{int select;fp=fopen(filename,"ab+");if(fp==NULL){printf("打开文件夹失败:\n");exit(1);} printf("******************请输入员工信息*******************\n");printf("输入员工编号:");scanf("%d",&Yuan.num);printf("输入员工姓名:");scanf("%s",Yuan.name);printf("输入员工的基本工资:"); scanf("%f",&Yuan.jbgz);printf("津贴:");scanf("%f",&Yuan.jt);printf("岗贴:");scanf("%f",&Yuan.gt); printf("房贴:");scanf("%f",&Yuan.ft);printf("补贴:");scanf("%f",&Yuan.bt); printf("交通补贴:");scanf("%f",&Yuan.jtbt);Yuan.sfgz=Yuan.jbgz+Yuan.jt+Yuan.gt+Yuan.ft+Yuan.bt+Yuan.ft;printf("实发工资:%f",Yuan.sfgz);printf("\n");fwrite(&Yuan,sizeof(struct GongZi),1,fp); printf("*****(1)继续录入*****(2)主菜单**********\n");printf("请输入你的选择[ ]\b\b");scanf("%d",&select);while(1){if(select==2){fclose(fp); system("cls");Menu();}else if(select==1) { fclose(fp);system("cls");zhuijia();}else{printf("输入错误,请重新输入[ ]\b\b");scanf("%d",&select);}}}/*实发工资如果在5000以内则税收为实发工资的5%;5000~10000则超过5000的部分乘以10%;剩下的按5%计算;10000以上则超过10000的按15%计算,5000~10000部分则按10%计算,5000部分则按5%计算;*/ void Gongz()
{int n,y=0,select;printf("请输入员工的编号:");scanf("%d",&n);fp=fopen(filename,"ab+"); if(fp==NULL){printf("打开文件夹失败:\n");exit(1);} while(fread(&Yuan,sizeof(struct GongZi),1,fp)){if(n==Yuan.num){if(Yuan.sfgz<5000){Yuan.sh=Yuan.sfgz*0.05;Yuan.zzgz=Yuan.sfgz-Yuan.sh;}else if(Yuan.sfgz>5000&&Yuan.sfgz<10000){Yuan.sh=(Yuan.sfgz-5000)*0.1+5000*0.05;Yuan.zzgz=Yuan.sfgz-Yuan.sh;}else {Yuan.sh=(Yuan.sfgz-10000)*0.15+5000*0.1+5000*0.05;Yuan.zzgz=Yuan.sfgz-Yuan.sh;}y=1;break;}}if(y==1){printf("员工编号:%d 员工姓名:%s 税收:%0.2f 最终工资:%0.2f\n",Yuan.num,Yuan.name,Yuan.sh,Yuan.zzgz); }else{ printf("查无此人!!!\n");}printf("*****(1)继续查询*****(2)主菜单**********\n");printf("请输入你的选择[ ]\b\b");scanf("%d",&select);while(1){if(select==2){fclose(fp);system("cls"); Menu();}else if(select==1) { fclose(fp);system("cls");Gongz();}else{printf("输入错误,请重新输入[ ]\b\b");scanf("%d",&select);}}}/*查询职工信息,通过职工编号遍历寻找*/
void Chax()
{int n,y=0,select;printf("请输入员工的编号:");scanf("%d",&n);fp=fopen(filename,"ab+"); if(fp==NULL){printf("打开文件夹失败:\n");exit(1);} while(fread(&Yuan,sizeof(struct GongZi),1,fp)){if(n==Yuan.num){printf("员工编号:%07d 姓名:%s 基本工资:%0.2f 津贴:%0.2f 岗贴:%0.2f 补贴:%0.2f 房贴:%0.2f 交通补贴:%0.2f 实发工资:%0.2f\n\n",Yuan.num,Yuan.name,Yuan.jbgz,Yuan.jt,Yuan.gt,Yuan.bt,Yuan.ft,Yuan.jtbt,Yuan.sfgz); y=1; break;}}if(y!=1){printf("查无此人!!!\n");}printf("*****(1)继续查询*****(2)主菜单**********\n");printf("请输入你的选择[ ]\b\b");scanf("%d",&select);while(1){if(select==2){fclose(fp);system("cls"); Menu();}else if(select==1) { fclose(fp);system("cls");Chax();}elsescanf("%d",&select);}}//修改员工的信息;
void Xiug()
{int i=0,j,k,numb,y=0,select;fp=fopen(filename,"rb+");if(fp==NULL){printf("打开文件失败\n");exit(1);}while(fread(&Yuan,sizeof(struct GongZi),1,fp)) //用结构体数组储存文件中的员工信息 {yuan[i++]=Yuan;}for(j=0;j<i-1;j++) //按员工的编号从小到大排序 {for(k=j+1;k<i;k++){if(yuan[j].num>yuan[k].num){Yuan=yuan[j];yuan[j]=yuan[k];yuan[k]=Yuan;} }}printf("请输入您要修改的员工编号:"); //输入要修改的编号 scanf("%d",&numb);for(j=0;j<i;j++) //通过遍历寻找到目标编号; {if(numb==yuan[j].num){printf("员工编号:%07d 姓名:%s 基本工资:%0.2f 津贴:%0.2f 岗贴:%0.2f 补贴:%0.2f 房贴:%0.2f 交通补贴:%0.2f 实发工资:%0.2f",yuan[j].num,yuan[j].name,yuan[j].jbgz,yuan[j].jt,yuan[j].gt,yuan[j].bt,yuan[j].ft,yuan[j].jtbt,yuan[j].sfgz);printf("\n\n"); printf("******************请输入你要修改的员工信息*******************\n");printf("输入员工姓名:");scanf("%s",yuan[j].name);printf("输入员工的基本工资:"); scanf("%f",&yuan[j].jbgz);printf("津贴:");scanf("%f",&yuan[j].jt);printf("岗贴:");scanf("%f",&yuan[j].gt); printf("房贴:");scanf("%f",&yuan[j].ft);printf("补贴:");scanf("%f",&yuan[j].bt);printf("交通补贴:");scanf("%f",&yuan[j].jtbt);yuan[j].sfgz=yuan[j].jbgz+Yuan.jt+yuan[j].gt+yuan[j].ft+yuan[j].bt+yuan[j].ft;printf("实发工资:%f",yuan[j].sfgz);printf("\n");y=1;} }if(y==1) //通过y的值来判断是否修改成功; printf("修改成功!\n\n");elseprintf("查无此人!!!\n\n");rewind(fp); //把文件指针指向开头 for(j=0;j<i;j++) //重新把结构体数组写进文件; {fwrite(&yuan[j],sizeof(struct GongZi),1,fp);}printf("*****(1)继续修改*****(2)主菜单**********\n");printf("请输入你的选择[ ]\b\b");scanf("%d",&select);while(1){if(select==2){fclose(fp);system("cls"); Menu();}else if(select==1) { fclose(fp);system("cls");Xiug();}elsescanf("%d",&select);}}void Tongji()
{int i=0,j,k; //统计人数; float sfzgz=0,dsr=0,zsr=0,gsr=0; //统实发总工资、低收入,中收入,高收入; fp=fopen(filename,"rb+");if(fp==NULL){printf("打开文件失败\n");exit(1);}printf("员工编号 姓名 基本工资 津贴 岗贴 补贴 房贴 交通补贴 实发工资\n"); while(fread(&Yuan,sizeof(struct GongZi),1,fp)){yuan[i++]=Yuan;}for(j=0;j<i-1;j++){for(k=j+1;k<i;k++){if(yuan[j].num>yuan[k].num){ Yuan=yuan[j];yuan[j]=yuan[k];yuan[k]=Yuan;} }}for(j=0;j<i;j++){if(yuan[j].sfgz<5000)dsr++;else if(yuan[j].sfgz>5000&&yuan[j].sfgz<10000)zsr++;elsegsr++;sfzgz+=yuan[j].sfgz; printf("%07d %s %5.2f %4.2f %4.2f %4.2f %4.2f %4.2f %4.2f",yuan[j].num,yuan[j].name,yuan[j].jbgz,yuan[j].jt,yuan[j].gt,yuan[j].bt,yuan[j].ft,yuan[j].jtbt,yuan[j].sfgz);printf("\n\n"); }printf("员工总人数:%d 实发总工资:%0.2f\n\n",i,sfzgz);printf("低收入人群占比%0.2f%%\n\n",(dsr/i)*100);printf("中等收入人群占比%0.2f%%\n\n",(zsr/i)*100);printf("高收入人群占比%0.2f%%\n\n",(gsr/i)*100);fclose(fp);printf("按任意键返回主菜单\n"); system("pause");system("cls");Menu();}/*删除职工信息,把员工的信息删除后,后面的数据会替代前面的数据,达到删除的功能*/
void Shanchu()
{int numb,i=0,j,k,select,y=0,t;fp=fopen(filename,"rb+");if(fp==NULL){printf("打开文件失败\n");exit(1);}while(fread(&Yuan,sizeof(struct GongZi),1,fp)) //用结构体数组储存文件中的员工信息 {yuan[i++]=Yuan;}for(j=0;j<i-1;j++) //按员工的编号从小到大排序 {for(k=j+1;k<i;k++){if(yuan[j].num>yuan[k].num){Yuan=yuan[j];yuan[j]=yuan[k];yuan[k]=Yuan;} }}printf("请输入你要删除的员工编号:");scanf("%d",&numb); for(j=0;j<i;j++){if(yuan[j].num==numb){printf("员工编号:%07d 姓名:%s 基本工资:%0.2f 津贴:%0.2f 岗贴:%0.2f 补贴:%0.2f 房贴:%0.2f 交通补贴:%0.2f 实发工资:%0.2f\n\n",yuan[j].num,yuan[j].name,yuan[j].jbgz,yuan[j].jt,yuan[j].gt,yuan[j].bt,yuan[j].ft,yuan[j].jtbt,yuan[j].sfgz); printf("按 1 删除,按其他数字键取消删除\n\n");scanf("%d",&t);if(t!=1){system("cls"); Menu();break;}for(k=j;k<i;k++) //后面的结构体往前面移动; {yuan[k]=yuan[k+1];}y++; }}if(y==0)printf("查无此人!!!\n");elseprintf("删除成功!\n\n");fclose(fp); //这里选择先将文件关闭,再重新用 wb 从头开始写进去 fp=fopen(filename,"wb+");if(fp==NULL){printf("打开文件失败\n");exit(1);}for(j=0;j<i-y;j++) //重新把结构体数组写进文件,这里要减掉删除的那个数; {fwrite(&yuan[j],sizeof(struct GongZi),1,fp);} printf("*****(1)继续删除*****(2)主菜单**********\n");printf("请输入你的选择[ ]\b\b");scanf("%d",&select);while(1){if(select==2){fclose(fp);system("cls"); Menu();}else if(select==1) { fclose(fp);system("cls");Shanchu();}elsescanf("%d",&select);}} /*当用户输出其他数字时,无法进行其他操作,可以利用此函数让用户重新输入*/
void Try_again()
{int n;printf("输入错误:请重新输入!!!\n");printf("请再次输入您的选择[ ]\b\b");scanf("%d",&n);switch(n){case 0: exit(0);case 1: Gongz(); break;case 2: Tianj(); break;case 3: zhuijia(); break;case 4: Chax(); break;case 5: Shanchu(); break;case 6: Xiug(); break;case 7: Tongji(); break;default: Try_again(); break;} }
c语言课程设计 工资管理系统相关推荐
- 销售管理c语言程序设计,C语言课程设计销售管理系统
C语言课程设计销售管理系统 C语言课程设计 题 目 商品销售系统 指导教师 曹东燕 学生姓名 刘伟 张新星 马国文 学 号 200900804072 200901802005 200900804051 ...
- 网吧管理系统C语言作业,C语言课程设计-网吧管理系统.doc
C语言课程设计-网吧管理系统 <通信工程专业C语言课程设计> 报 告 专 业: 通信工程 班 级: 0802 姓 名: 赵 松 指导教师: 丁 雄 二00九 年 十二 月 二十五 日 目 ...
- c语言程序设计书店销售管理系统,C语言课程设计-书店管理系统
<C语言课程设计-书店管理系统>由会员分享,可在线阅读,更多相关<C语言课程设计-书店管理系统(25页珍藏版)>请在人人文库网上搜索. 1.计算机程序设计计算机程序设计(C(C ...
- c语言课程设计人事管理,C语言课程设计-人事管理系统(65页).doc
C语言课程设计-人事管理系统(65页) C语言课程设计 --人事管理系统 来自资料搜索网() 海量资料下载 人事管理管理系统 [要求] 某高校主要人员有:在职人员(行政人员.教师.一般员工).退休人员 ...
- c语言编程票务系统,C语言课程设计票务管理系统
C语言课程设计票务管理系统 C语言课程设计1西安交通大学城市学院C语言程序设计课程设计报告题目图书信息管理系统专业自动化班级自动化101姓名陈蕾完成日期2012年5月31日C语言课程设计2目录第一章项 ...
- c语言课程设计图书管理系统
数据结构c语言课程设计 图书管理系统 我做的是百度文库的第28题,目前没有报错,正常运行,但是还有一点小bug.代码很多地方写的不是很好,请多多包涵. 账号1,密码1,为管理员账号:其他账号2,3,4 ...
- c语言课程设计作业图书管理系统,C语言课程设计图书馆管理系统程序代码.doc
C语言课程设计图书馆管理系统程序代码.doc includestdio.h includewindows.h includestring.h includeconio.h define M 100 s ...
- c语言大作业书店图书管理系统,c语言课程设计 书店管理系统.pdf
c语言课程设计 书店管理系统 计算机程序设计(C语言) 课程设计报告 题目:图书管理系统 学院: 专业: 班级: 学号: 姓名: 指导教师: 设计日期:2013年06月24 日 一.选题背景: 设计一 ...
- c语言课程设计订单管理系统,C语言课程设计订单管理系统讲解.doc
C语言课程设计订单管理系统讲解 C语言课程设计 随米打印订单管理系统 学 院: 计算机与信息科学学院 学生姓名: 谢润发 指导教师: 王新祥 职称 教授 专 业: 网络工程 班 级: 1501 完成时 ...
- c语言课程设计人事部门,C语言课程设计人事管理系统
<C语言课程设计人事管理系统>由会员分享,可在线阅读,更多相关<C语言课程设计人事管理系统(36页珍藏版)>请在人人文库网上搜索. 1.C语言课程设计人事管理系统 题目要求:人 ...
最新文章
- ASP.NET Core的配置(5):配置的同步[设计篇]
- VMware Workstation 6.0全貌概览
- NI Measurement Studio 打包问题的解决(原创)
- J2EE (六) 详解 java 中文乱码
- golang源码安装和学习环境搭建
- 烧写文件系统——韦东山嵌入式Linux学习笔记11
- ubuntu 无法进入startx_Ubuntu无法进入图形化界面(报错/dev/sda1:clean的解决)
- Hi3531与Hi3520 GPIO口的对比及驱动的修改
- 2008R2Win7管理二十六ADRMS客户端使用及侦错
- windows mobile开发循序渐进(6)windows mobile device center 使用问题
- Redis从入门到精通|干货篇
- who whos exist inf
- 生成、打包、部署和管理应用程序及类型(2):元数据概述
- 如何成为一名卓越的数据科学家-桃树七剑之二:数据准备
- mysql 超时异常捕获_Mysql的链接超时异常CommunicationsException
- 解决在Word安装Mendeley失败,提示“错误429:activex部件不能创建对象“问题
- 分销商城系统模块_分销商城系统模块需求分析_OctShop
- Ubertooth one“蓝牙扫描嗅探”使用教程
- (转)mysql explain
- 云计算360度:微软专家纵论产业变革
热门文章
- 基于javaweb+jsp的员工绩效考核管理系统(带报告文档)
- 2011年1月31日nod32id,nod32免费激活码_NOD32用户名密码
- 计算机网络-3-局域网数据链路层原理与技术
- IDA中类似VS的Call stack函数调用关系视图
- 手机qq表白代码大全可复制_照片后期如何一键调出INS风?676个效果 VSCO滤镜大全...
- Java 发送163邮件
- [短线是银]条件选股公式集源码!
- js中 attachEvent事件
- cisco2811路由器密码恢复
- 适配器模式(Adapter模式)