C语言课设-----工资管理系统(附全部源码)
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语言课设-----工资管理系统(附全部源码)相关推荐
- 基于JAVA的工资管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
基于JAVA的工资管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA的工资管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 开发语言: ...
- 基于JAVA企业员工工资管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
基于JAVA企业员工工资管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA企业员工工资管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 ...
- 基于JAVA工资管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
基于JAVA工资管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA工资管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...
- 基于JAVA基于web的学校工资管理系统计算机毕业设计源码+系统+lw文档+部署
基于JAVA基于web的学校工资管理系统计算机毕业设计源码+系统+lw文档+部署 基于JAVA基于web的学校工资管理系统计算机毕业设计源码+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 ...
- C语言实现哈希表(附完整源码)
C语言实现哈希表 C语言实现哈希表附完整源码 C语言实现哈希表附完整源码 #include<stdio.h> #include<stdlib.h> #define SUCCES ...
- Python语言打造智能语音助手——附完整源码
Python语言打造智能语音助手--附完整源码 随着智能家居.智能办公等领域的逐渐兴起,实现语音控制与交互已成为了一种趋势.而Python语言是一门极具魅力的编程语言,其强大的库.简洁的语法以及易于学 ...
- C语言课设物资管理系统,C语言课设之物资管理系统.doc
C语言课设之物资管理系统 C语言课程设计 目 录 1.需求分析: 2.系统总框图: 3.每个模块的设计分析: 4.列出所有定义的函数及说明: 5.举例说明1.2个比较有特点的算法: 6.数据分析.完备 ...
- 关于C语言课设学生管理系统的编写(简单版)
课设要求 根据课设要求,我们需要给我们的管理系统增加以下功能:1,菜单方式工作:2,录入功能:3,浏览功能:4,查询功能:5,排序功能:6,删除功能:7,修改功能:8,保存功能. 我们将用模块化的思想 ...
- C语言课设车票管理系统(大作业)
C语言课程设计(大作业)(车票管理系统) 一.项目简介 设计一个车票管理系统实现录入.查看班次信息,售票,退票等基本功能.设计中要求综合运用所学知识,上机解决一些与实际应用结合紧密的.规模较大的问题, ...
最新文章
- python科学计算整理
- 【opencv】(2) 图像处理:边界填充、图像融合、图像阈值、数值计算
- lintcode-49-字符大小写排序
- CCF 2016年题目题解 - Python
- [python]python字典
- cpu 内存占用比较高的解决方案
- waf可以查看post请求吗_WAF是如何被绕过的?
- python列表可以删除和修改吗_Python列表常见操作详解(获取,增加,删除,修改,排序等)...
- 今天将Notebook还原了, 第一次外加了外围电路
- Springboot/Cloud集成Sentinel 和 入门实战
- Android getResources的作用和需要注意点
- 业内人士解读:开发一个App到底要多少钱?
- react 中的userReducer
- Android之头像图片变圆形
- 用计算机弹百战成诗,百战成诗(80P纯女热血翻唱)
- HTML基础知识点总结
- MySQL数据库——初识MySQL
- jQuery是什么?如何使用?
- Spring下载教程(保姆级)
- Arduino ATmega328P