C语言课设-----工资管理系统(附全部源码)

本系统分三个部分:

1.出售金鱼

2.数字菱形

3.工资管理系统

(ps:另外添加了登录界面 id:qwq password:123 可自己在代码里再更改)

源码展示:

#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 login();      //登录界面;
void Gongzi();    //职工个人所得税计算模块;
void Tianjia();        //添加职工的工资信息模块;
void Chaxun();        //职工工资查询模块;
void Xiugai();        //职工工资修改模块;
void Tongji();        //职工工资统计模块;
void Try_again();    //输入错误重试模块;
void Menu();           //主菜单;
void zhuijia();        //追加添加职工信息;
void Shanchu();        //删除职工的信息;
void goldfish();     //出售金鱼;
void diamond();      //数字菱形;int main(void) {login();int a;while (1) {printf("==============菜单===============\n");printf("|        1.出售金鱼             |\n");printf("|        2.数字菱形             |\n");printf("|        3.工资管理系统         |\n");printf("|        0.退出程序             |\n");printf("=================================\n");scanf("%d", &a);switch (a) {case 1 :system("cls");goldfish();break;case 2 :system("cls");diamond();break;case 3 :system("cls");Menu();break;case 0 :exit(0);break;default :printf("输入错误,请重新输入!");}getchar();}return 0;
}void login() {           //登录账号char ID[20];char KEY[20];char username[20] = {"qwq"};char passkey[20] = {"123"};printf("\t\t请登录:\n");printf("\tID:");scanf("%s", ID);printf("\n");printf("\tKEY:");scanf("%s", KEY);printf("\n");if ((strcmp(ID, username) == 0) && (strcmp(KEY, passkey) == 0)) {printf("\t登录成功!\n");printf("\n");} else {printf("您输入的账号密码有误,请重新输入!\n");return login();}
}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:system("cls");break;case 1:system("cls");Gongzi();break;case 2:system("cls");Tianjia();break;case 3:system("cls");zhuijia();break;case 4:system("cls");Chaxun();break;case 5:system("cls");Shanchu();break;case 6:system("cls");Xiugai();break;case 7:system("cls");Tongji();break;default:Try_again();break;}}void Tianjia() {                  //信息录入;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 Gongzi() {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");Gongzi();} else {printf("输入错误,请重新输入[ ]\b\b");scanf("%d", &select);}}
}/*查询职工信息,通过职工编号遍历寻找*/
void Chaxun() {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");Chaxun();} elsescanf("%d", &select);}
}//修改员工的信息;
void Xiugai() {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");Xiugai();} 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:Gongzi();break;case 2:Tianjia();break;case 3:zhuijia();break;case 4:Chaxun();break;case 5:Shanchu();break;case 6:Xiugai();break;case 7:Tongji();break;default:Try_again();break;}
}void diamond() {int i, j, k, n;printf("n=");scanf("%d", &n);                                 /*输入数字菱形的行数:2n-1*/printf("\n");for (i = 1; i <= n; i++) {                       /*控制输出菱形上半部分 第1~n行*/for (j = 1; j <= 2 * n + 1; j++)if (j == 2 * n + 1 - 2 * i || j == 2 * n - 1)for (k = 0; k < i; k++)printf("%d", i);elseprintf(" ");printf("\n");}for (i = n - 1; i > 0; i--) {                    /*控制输出菱形下半部分第n+1~2n-1行*/for (j = 1; j <= 2 * n + 1; j++)if (j == 2 * n + 1 - 2 * i || j == 2 * n - 1)for (k = 0; k < i; k++)printf("%d", i);elseprintf(" ");printf("\n");}
}void goldfish() {int i, j, n = 0, x;                              /*n为标志变量*/for (i = 0; n == 0; i++)                         /*控制试探的步长和过程*/{ for (j = 1, x = i; j <= 4 && x >= 11; j++)   /*完成出售四次的操作*/if ((x + 1) % (j + 1) == 0)              /*若满足整除条件则进行实际的出售操作*/x -= (x + 1) / (j + 1);else {x = 0;                               /*否则停止计算过程*/break;}if (j == 5 && x == 11) {                     /*若第四次余下11条则满足题意*/printf("原来鱼缸有 %d 鱼\n", i);         /*输出结果*/n = 1;                                   /*控制退出试探过程*/}}
}

C语言课设-----工资管理系统(附全部源码)相关推荐

  1. 基于JAVA的工资管理系统计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA的工资管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA的工资管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 开发语言: ...

  2. 基于JAVA企业员工工资管理系统计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA企业员工工资管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA企业员工工资管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 ...

  3. 基于JAVA工资管理系统计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA工资管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA工资管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...

  4. 基于JAVA基于web的学校工资管理系统计算机毕业设计源码+系统+lw文档+部署

    基于JAVA基于web的学校工资管理系统计算机毕业设计源码+系统+lw文档+部署 基于JAVA基于web的学校工资管理系统计算机毕业设计源码+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 ...

  5. C语言实现哈希表(附完整源码)

    C语言实现哈希表 C语言实现哈希表附完整源码 C语言实现哈希表附完整源码 #include<stdio.h> #include<stdlib.h> #define SUCCES ...

  6. Python语言打造智能语音助手——附完整源码

    Python语言打造智能语音助手--附完整源码 随着智能家居.智能办公等领域的逐渐兴起,实现语音控制与交互已成为了一种趋势.而Python语言是一门极具魅力的编程语言,其强大的库.简洁的语法以及易于学 ...

  7. C语言课设物资管理系统,C语言课设之物资管理系统.doc

    C语言课设之物资管理系统 C语言课程设计 目 录 1.需求分析: 2.系统总框图: 3.每个模块的设计分析: 4.列出所有定义的函数及说明: 5.举例说明1.2个比较有特点的算法: 6.数据分析.完备 ...

  8. 关于C语言课设学生管理系统的编写(简单版)

    课设要求 根据课设要求,我们需要给我们的管理系统增加以下功能:1,菜单方式工作:2,录入功能:3,浏览功能:4,查询功能:5,排序功能:6,删除功能:7,修改功能:8,保存功能. 我们将用模块化的思想 ...

  9. C语言课设车票管理系统(大作业)

    C语言课程设计(大作业)(车票管理系统) 一.项目简介 设计一个车票管理系统实现录入.查看班次信息,售票,退票等基本功能.设计中要求综合运用所学知识,上机解决一些与实际应用结合紧密的.规模较大的问题, ...

最新文章

  1. python科学计算整理
  2. 【opencv】(2) 图像处理:边界填充、图像融合、图像阈值、数值计算
  3. lintcode-49-字符大小写排序
  4. CCF 2016年题目题解 - Python
  5. [python]python字典
  6. cpu 内存占用比较高的解决方案
  7. waf可以查看post请求吗_WAF是如何被绕过的?
  8. python列表可以删除和修改吗_Python列表常见操作详解(获取,增加,删除,修改,排序等)...
  9. 今天将Notebook还原了, 第一次外加了外围电路
  10. Springboot/Cloud集成Sentinel 和 入门实战
  11. Android getResources的作用和需要注意点
  12. 业内人士解读:开发一个App到底要多少钱?
  13. react 中的userReducer
  14. Android之头像图片变圆形
  15. 用计算机弹百战成诗,百战成诗(80P纯女热血翻唱)
  16. HTML基础知识点总结
  17. MySQL数据库——初识MySQL
  18. jQuery是什么?如何使用?
  19. Spring下载教程(保姆级)
  20. Arduino ATmega328P

热门文章

  1. Jmeter结果各参数含义
  2. php60进制,60进制(60进制计数器)
  3. AR-HMM模型 自回归隐马尔可夫模型
  4. [题解]CF662D
  5. 快速上手 TinyXML-2 不完全教程
  6. CBTC系统标准: 1474.1---系统性能及功能需求
  7. 2020-06-28 html的实现页面锁屏 + css的BFC与float + js的立即执行函数写法 + 颜色搭配
  8. 微信小程序、重拾前端的梦
  9. 参加51CTO培训,华为HCNP认证考试通过了
  10. 劳动争议仲裁申请需知