C语言|职工工资管理系统
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <windows.h>#define Q 15 //最大字符串长度
#define N 500 //最大员工数量 typedef struct workers{int workersID; //职工工号char name[Q]; //职工姓名double basicsalary; //基本工资double allowance; //津贴double taxsalary; //扣税double truesalary; //实发工资
}WORKERS; //职工信息void Menu(int *n); //主菜单
void Payroll(WORKERS work[],int *p); //建立工资表
void Taxsalary(WORKERS work[],int num); //计算职工扣税和实发工资
void Sort(WORKERS work[],int num ) ; //将工资从高到低排序
void Change(WORKERS work[],int num); //修改职工的工资信息
int Find(WORKERS work[],int num); //按工号查询职工工资信息
void Analyse(WORKERS work[],int num); //职工工资统计分析
void Printworkroll(WORKERS work[],int num); //显示工资明细表
void Writefile(WORKERS work[],int num); //输出数据并写入 data.txt 文件 int main()
{ WORKERS work[N]; //定义一个结构体数组来存储员工信息 char ch; //ch为检测是否返回主菜单 int n,num=0,ret; //n为操作数,num为总人数,ret判断数 while(1){system("cls");Menu(&n); //主菜单 switch(n){case 0:system("cls"); //退出程序 printf("退出成功!\n");exit(0);case 1:Payroll(work,&num); //建立工资表break;case 2:Taxsalary(work,num); //职工扣税和实发工资Writefile(work,num); //输出数据并写入 data.txt 文件 printf("计算完成,并输出数据至txt文件!\n");Sleep(2000);system("cls");break;case 3:Sort(work,num); //将工资从高到低排序Printworkroll(work,num); //显示工资明细表printf("\n是否返回主菜单?Y or N\n");fflush(stdin);ch=getchar();if(ch=='N'){exit(0);}break;case 4:Change(work,num); //修改职工的工资信息printf("\n是否返回主菜单?Y or N\n");fflush(stdin);ch=getchar();if(ch=='N'){exit(0);}break;case 5:ret=Find(work,num); //按工号查询职工工资信息if(ret==0){printf("查无此人!"); //反馈查询不到信息 }printf("\n是否返回主菜单?Y or N\n");fflush(stdin);ch=getchar();if(ch=='N'){exit(0);}break;case 6:Analyse(work,num); //职工工资统计分析printf("\n是否返回主菜单?Y or N\n");fflush(stdin);ch=getchar();if(ch=='N'){exit(0);}break;}}return 0;
}void Menu(int *n) //主菜单 *n为返回操作数
{int a;printf(" ——————职工工资管理系统——————\n");printf("| 1.建立职工工资表 |\n");printf("| 2.职工扣税和实发工资 |\n");printf("| 3.实发工资从高到低排序 |\n");printf("| 4.修改职工工资信息 |\n");printf("| 5.查询职工工资信息 |\n");printf("| 6.职工工资统计分析 |\n");printf("| 0.退出系统 |\n");printf(" ————————————————————\n");printf("提示:请输入数字序号选择对应的操作!\n");scanf("%d",&a);*n=a;system("cls");
}void Payroll(WORKERS work[],int *p) //建立工资表
{int num=*p;char ch;do{system("cls");printf("员工(%d)的信息\n",num+1);printf("工号:");scanf("%d",&work[num].workersID);printf("姓名:");scanf("%s",&work[num].name);printf("基本工资:");scanf("%lf",&work[num].basicsalary);printf("津贴:");scanf("%lf",&work[num].allowance);printf("是否继续录入?Y or N\n"); fflush(stdin);scanf("%c",&ch);num++;}while(ch=='Y');*p=num; //返回总人数 system("cls");
}void Taxsalary(WORKERS work[],int num) //职工扣税和实发工资
{int i;double money;for(i=0;i<num;i++){money=work[i].basicsalary+work[i].allowance;if( money<3000){work[i].taxsalary=0;work[i].truesalary= money-work[i].taxsalary;}else if((money<4000)&&(money>=3000)){work[i].taxsalary=(money-3000)*0.05;work[i].truesalary= money-work[i].taxsalary; }else{ work[i].taxsalary=(money-3000)*0.05+(money-4000)*0.1;work[i].truesalary= money-work[i].taxsalary; } }
}void Sort(WORKERS work[],int num) //将工资从高到低排序
{int i,j;WORKERS temp;for (i=0;i<num-1;i++){for(j=i+1;j<num;j++) {if (work[i].truesalary<work[j].truesalary){temp=work[j];work[j]=work[i];work[i]=temp;} } }
} void Change(WORKERS work[],int num) //修改职工的工资信息
{int n,i,sum;char ch;printf("修改职工的工资信息\n\n");printf("请输入你的工号:");scanf("%d",&n);putchar('\n');for( i=0;i<num;i++){if(work[i].workersID==n){printf("工号:%-10d\n",work[i].workersID);printf("姓名:%s\n",work[i].name); printf("基本工资:%6.2lf\n",work[i].basicsalary); printf("津贴:%6.2lf\n",work[i].allowance); printf("扣税:%6.2lf\n",work[i].taxsalary); printf("实发工资:%6.2lf\n",work[i].truesalary); printf("\n是否需要修改信息?Y or N\n");fflush(stdin);scanf("%c",&ch);if(ch=='Y'){printf("\n基本工资:");scanf("%lf",&work[i].basicsalary);printf("津贴:");scanf("%lf",&work[i].allowance);sum=work[i].basicsalary+work[i].allowance;if(sum<=3000){ work[i].taxsalary=0;work[i].truesalary=sum;}else if((sum<=4000)&&(sum>3000)){work[i].taxsalary=(sum-3000)*0.05;work[i].truesalary=3000+((sum-3000)*0.95);}else{work[i].taxsalary=50+(sum-4000)*0.10;work[i].truesalary=3950+((sum-4000)*0.9);}system("cls");printf("员工信息修改成功!\n\n");printf("扣税:%6.2lf\n",work[i].taxsalary); printf("实发工资:%6.2lf\n",work[i].truesalary); break; }else{break;} }}
} int Find(WORKERS work[],int num) //按工号查询职工工资信息
{int s,i,flag=0;printf("查询职工工资信息\n\n");printf("请输入您的工号:");scanf("%d",&s);putchar('\n');for(i=0;i<num;i++){if(work[i].workersID==s) //查询输入的工号并调用信息; {flag=1; printf("工号:%d\n",work[i].workersID);printf("姓名:%s\n",work[i].name); printf("基本工资:%.2lf\n",work[i].basicsalary); printf("津贴:%.2lf\n",work[i].allowance); printf("扣税:%.2lf\n",work[i].taxsalary); printf("实发工资:%.2lf\n",work[i].truesalary); break;}}return flag;
}void Analyse(WORKERS work[],int num) //职工工资统计分析
{int i,s=0,m=0,l=0; //s表示工资小于3000的人数;m表示工资在3000到4000的人数;l表示工资大于4000的人数。 double x,y,z;for(i=0;i<num;i++){if(work[i].truesalary<3000) {s++;} else if((work[i].truesalary<=4000)&&(work[i].truesalary>=3000)){m++;} else{l++;}}x=(double)s/num*100;y=(double)m/num*100;z=(double)l/num*100;printf("实发工资\n");printf("(3000元以下) 人数:%d\t比例:%.2lf%%\n",s,x); printf("(3000以上4000以下) 人数:%d\t比例:%.2lf%%\n",m,y); printf("(4000以上) 人数:%d\t比例:%.2lf%%\n",l,z); }void Printworkroll(WORKERS work[],int num) //显示工资明细表
{int i;printf("工号\t姓名\t基本工资\t津贴\t扣税\t实发工资\n");for(i=0;i<num;i++){printf("%d\t",work[i].workersID);printf("%s\t",work[i].name); printf(" %.2lf\t",work[i].basicsalary); printf("%.2lf\t",work[i].allowance); printf("%.2lf\t",work[i].taxsalary); printf("%.2lf\n",work[i].truesalary); }
}void Writefile(WORKERS work[],int num) //输出数据并写入 data.txt 文件
{ int i,j;WORKERS temp;for(i=0;i<num-1;i++){for( j=i+1;j<num;j++){if(work[i].workersID>work[j].workersID){temp=work[i];work[i]=work[j];work[j]=temp;}}}FILE *fp;if((fp=fopen("data.txt","w"))==0){printf("错误!\n");exit(0);}fprintf(fp,"职工工资管理系统\n成功录入%d人\n详表如下:\n\n",num);fprintf(fp,"工号\t姓名\t基本工资\t津贴\t扣税\t实发工资\n");for(i=0;i<num;i++){fprintf(fp,"%-10d\t",work[i].workersID);fprintf(fp,"%s\t",work[i].name); fprintf(fp,"%.2lf\t",work[i].basicsalary); fprintf(fp,"%.2lf\t",work[i].allowance); fprintf(fp,"%.2lf\t",work[i].taxsalary); fprintf(fp,"%.2lf\n",work[i].truesalary); }fclose(fp);
}
C语言|职工工资管理系统相关推荐
- 7-1 计算职工工资c语言,C语言职工工资管理系统
一. 设计需求说明 一.职工工资管理系统功能设计要求 1. 输入记录:将每一个职工的姓名.ID号以及基本工资.职务工资.岗位津贴.医疗保险.公积金的数据作为一个记录.该软件能建立一个新的数据文件或给已 ...
- c语言课程设计 职工工资处理系统,院职工工资管理系统_C语言课程设计-2017年10月.doc...
信息科学与技术学院 课程设计报告 2012-2013学年第一学期 课程名称:C语言课程设计上机 设计题目:院职工工资管理系统 学 号:__________________ 姓 名:__________ ...
- C语言源码做的职工工资管理系统课程设计(源码+课程设计报告)
一.课程设计的目的: C语言课程设计是计算机科学与技术专业重要的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖C语言程序设计的知识点,又接近工程实际需要.本次设计的目的是通过课程设计 ...
- c语言 输入职工工资资料,通过结构体的数组来进行操作 报告,c语言课程设计报告-职工工资管理系统...
<c语言课程设计报告-职工工资管理系统>由会员分享,可在线阅读,更多相关<c语言课程设计报告-职工工资管理系统(33页珍藏版)>请在人人文库网上搜索. 1.c 语言课程设计报告 ...
- 基于C语言编程的职工工资管理系统项目的设计与开发
文章目录 基于C语言编程的职工工资管理系统项目的设计与开发 一.需求分析 二.项目环境 2.1.项目创建过程 2.2.向项目添加头文件与源文件 三.职工工资管理系统模块功能 3.1.系统总体设计框图 ...
- 职工工资程序c语言doc,职工工资管理系统C语言程序课程设计方案.doc
职工工资管理系统C语言程序课程设计方案 1 课 程 设 计 报 告 课程名称 C语言程序设计 课题名称 职工工资管理系统 专 业 机械电子 班 级 1101班 学 号 1 姓 名 王贝贝 指导教师 肖 ...
- C语言课程设计_职工工资管理系统
要求 设计一个职工工资管理系统: (1)输入记录:将每一个职工的姓名.ID号以及基本工资.职务工资.岗位津贴.医疗保险.公积金的数据作为一个记录.该软件能建立一个新的数据文件或给已建立好的数据文件增加 ...
- c语言代码大全500行,C语言职工档案管理系统 500多行代码1
<C语言职工档案管理系统 500多行代码1>由会员分享,可在线阅读,更多相关<C语言职工档案管理系统 500多行代码1(17页珍藏版)>请在人人文库网上搜索. 1.1程序的总体 ...
- C语言编写工资管理系统类似学生管理系统
C语言编写工资管理系统类似学生管理系统 开始界面和菜单界面B void start() //开始界面 {system("cls");//清屏 system("color ...
最新文章
- 马斯克:我有一个大胆的想法!给红绿灯加个AI视觉「外挂」
- Android怎么自定义listview布局,android – 如何将listView标头添加为自定义布局
- python3.5安装-Linux:Python3.5安装和配置
- Superset-Quick-Start-Guide翻译(没有完成)
- LeetCode 990. 等式方程的可满足性(并查集)
- 数据交互智能终端设想
- MySQL数据库事物隔离级别
- 键入一个网页后了发生什么
- OpenCV Cookbook by Eric
- Raj Reddy:从印度农村走出来的图灵奖得主
- Silverlight/Windows8/WPF/WP7/HTML5周学习导读(8月20日-8月26日)
- mybatis 自定义插件的使用
- BP算法的matlab代码学习
- 内核的解压缩过程详解
- 企业微信api,企业微信sdk接口java调用源码
- 计算机毕业设计情况进展记录表,南京理工大学泰州科技学院毕业设计(论文)进展情况记录表.doc...
- 电脑开热点手机无法连接,无法启用 Internet 连接共享.为 LAN 连接配置的 IP 地址需要使用自动 IP 寻址.
- 图书管理系统(C SQL)
- linux系统fasta程序,快速计算fasta序列长度的方法
- Jedis分析一-Pipeline is currently not supported for JedisClusterConnection.
热门文章
- java 淘口令_淘口令解析丶Java教程网-IT开发者们的技术天堂
- 动漫java从入门到入土_适合刚入宅的萌新悠哉观看的经典番,全员致郁,从入门到入土?...
- 网卡清空缓存命令_清除网卡中IP缓存
- 动作捕捉系统用于柔性机械臂的末端定位控制
- iOS代码混淆安全加固
- CD-Adapco star ccm+ v10.02.010 crack 安装教程与资源
- 11月获得融资的区块链企业汇总
- RabbitMQ mandatory参数 路由器匹配不到队列返回响应
- python-GUI:利用pyqt5设计一个bootloader上位机页面(ZLG驱动)及打包报错faild to execute script pyi_rth_multiprocessing精简方案
- 2021秋招嵌入式笔试面试题目汇总