怎么用C语言实现职工工资管理系统
发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,本文小编为大家详细介绍"怎么用C语言实现职工工资管理系统",内容详细,步骤清晰,细节处理妥当,希望这篇"怎么用C语言实现职工工资管理系统"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习
千家信息网最后更新 2025年01月17日怎么用C语言实现职工工资管理系统
本文小编为大家详细介绍"怎么用C语言实现职工工资管理系统",内容详细,步骤清晰,细节处理妥当,希望这篇"怎么用C语言实现职工工资管理系统"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
设计要求:
模拟并设计一个企业的职工工资管理系统,职工信息包括工号、姓名、基本工资、津贴,设职工人数不超过500人,以菜单选项的方式完成相应的功能,主要功能需求如下:
1、建立工资表;
2、职工扣税和实发工资;
3、按实发工资从高到低的顺序显示工资明细表;
4、修改职工的工资信息;
5、按工号查询职工工资信息;
6、职工工资统计分析;
7、退出系统。
基本思路:
将职工工资管理系统的职工信息录入功能、数据处理并存入文件功能、按照职工工号查找职工工资信息功能、修改职工信息功能分成多个模块,为了使程序的可读性更强,程序的编写将以函数形式编写封装各个功能,然后在主函数中以循环形式读取用户输入的指令,根据用户的指令选择不同的函数入口地址,从而执行不同的操作,实现设计要求的职工工资管理系统的各项功能。
全部代码:
#include#include #include #include #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 =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 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 =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) //显示工资明细表{ printf("工号\t姓名\t基本工资\t津贴\t扣税\t实发工资\n"); for(int i=0;i 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(int i=0;i 读到这里,这篇"怎么用C语言实现职工工资管理系统"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
工资
职工
信息
工号
实发
系统
人数
菜单
管理系统
管理
基本工资
功能
津贴
查询
姓名
数据
文件
统计分析
分析
统计
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
剑桥科技工业互联网
昨晚河南卫视网络安全直播
数字人民币需要网络安全吗
联想sr650服务器教学视频
河北人社显示内部服务器异常
金蝶kis标准版数据库数据
山西v5服务器多少钱
海事部门网络安全
t4服务器显卡
服务器风扇怎么测量
软件网络安全需求分析
修改2012数据库密码
网络安全行业薪资对照表
天津企业报修管理软件开发
四川大学网络安全复试科目
怎么看数据库激活了没
网络安全攻击方法和防御策略
网络安全实训培训
浦东新区软件开发有哪些
成都软件开发培训 初中
湿地调查数据库标准
中国最新网络安全宣传
中国卫生人才网提示服务器异常
服务器如何再建数据库
戴尔r720xd服务器指示灯
编程都需要数据库么
数据库学生成绩管理系统数据流图
关于软件开发技术的论文
在哪里找管理您的服务器
数据库创建聚集索性