C语言工资管理系统

2023-11-01

 

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<conio.h>

#define N 100

typedef struct employee

{ char num[10];

char name[20];

char sex[4];

int old;

char edu[50];

int wages;

}EMP;

EMP emp[N];

int n;

void inputwages(void);

void savewages(void);

void searchwages(void);

void modify(void);

void statistic(void);

void modifywages(void);

void lookwages(void);

void searchscore(void);

void add(void);

void deletewages(void);

void menu(void);

void main()

{ short int flag=0;

menu();

do

{ flag=1;

switch(getch())

{ case '1' : inputwages();break;  /*输入职工信息*/

case '2' : lookwages();break; /*查看职工信息*/

case '3' : searchwages();break; /*查找职工信息*/

case '4' : statistic();break; /*职工信息统计*/

case '5' : modify();break; /*修改职工信息*/

case '6' : add();break; /*添加职工信息*/

case '7' : deletewages();break; /*删除职工信息*/

case '8' : savewages();break; /*保存职工信息*/

case '9' : exit(0); /*退出程序*/

default : printf("输入有误!\n");

}

printf("按任意键继续\n");

getch();

menu();

}while (flag==1);

}

void menu(void)

{

system("cls");

printf("\n");

printf("*********欢迎进入职工工资管理系统**************\n");

printf("                 菜单                          \n");

printf("输入职工信息----------------------------------1\n");

printf("查看职工信息或排序----------------------------2\n");

printf("查询职工信息----------------------------------3\n");

printf("职工信息统计----------------------------------4\n");

printf("修改职工信息----------------------------------5\n");

printf("添加职工信息----------------------------------6\n");

printf("删除职工信息----------------------------------7\n");

printf("保存职工信息----------------------------------8\n");

printf("退出系统--------------------------------------9\n");

printf("***********************************************\n");

printf("请输入您的选择\n");

}

/***************输入各个员工的职工信息*****************************/

void inputwages(void)

{

int i;

system("cls");

printf("请输入职工总数:\n");

scanf("%d",&n);

for(i=0;i<n;i++)

{

printf("请输入员工%d的职工号:\n",i+1);

scanf("%s",emp[i].num);

printf("请输入员工%d的姓名:\n",i+1);

scanf("%s",emp[i].name);

printf("请输入员工%d的性别:\n",i+1);

scanf("%s",emp[i].sex);

printf("请输入员工%d的年龄:\n",i+1);

scanf("%d",&emp[i].old);

printf("请输入员工%d的学历:\n",i+1);

scanf("%s",emp[i].edu);

printf("请输入员工%d的工资:\n",i+1);

scanf("%d",&emp[i].wages);

}

printf("成功输入\n");

}

/************查看职工信息或排序*****************************/

void lookwages(void)

{

int m,i,j;

EMP t;

system("cls");

printf("是否需要排序(不需要请输入1,需要请输入2)\n");

switch(getch())

{

case '1' :printf("序号\t职工号\t姓名\t性别\t年龄\t学历\t工资\n");

  for(m=0;m<n;m++)

  {

    printf("%d\t%s\t%s\t%s\t%d\t%s\t%d",m+1,emp[m].num,emp[m].name,emp[m].sex,emp[m].old,emp[m].edu,emp[m].wages);

  printf("\n");

  }

  break;

case '2' :  printf("按职工号升序请输入1,降序请输入2;按工资升序请输入3,降序请输入4!\n");

   switch(getch())

{

case '1' :  for(i=0;i<n-1;i++)

{

for(j=0;j<n-i-1;j++)

{

if(strcmp(emp[j].num,emp[j+1].num)>0)

{

t=emp[j];

emp[j]=emp[j+1];

emp[j+1]=t;

}

}

}

printf("序号\t职工号\t姓名\t性别\t年龄\t学历\t工资\n");

for(m=0;m<n;m++)

{

  printf("%d\t%s\t%s\t%s\t%d\t%s\t%d",m+1,emp[m].num,emp[m].name,emp[m].sex,emp[m].old,emp[m].edu,emp[m].wages);

printf("\n");

}

break;

case '2' :  for(i=0;i<n-1;i++)

{

for(j=0;j<n-i-1;j++)

{

if(strcmp(emp[j].num,emp[j+1].num)<0)

{

t=emp[j];

emp[j]=emp[j+1];

emp[j+1]=t;

}

}

}

printf("序号\t职工号\t姓名\t性别\t年龄\t学历\t工资\n");

for(m=0;m<n;m++)

{

  printf("%d\t%s\t%s\t%s\t%d\t%s\t%d",m+1,emp[m].num,emp[m].name,emp[m].sex,emp[m].old,emp[m].edu,emp[m].wages);

printf("\n");

}

break;

case '3' :  for(i=0;i<n-1;i++)

{

for(j=0;j<n-i-1;j++)

{

if(emp[j].wages>emp[j+1].wages)

{

t=emp[j];

emp[j]=emp[j+1];

emp[j+1]=t;

}

}

}

printf("序号\t职工号\t姓名\t性别\t年龄\t学历\t工资\n");

for(m=0;m<n;m++)

{

  printf("%d\t%s\t%s\t%s\t%d\t%s\t%d",m+1,emp[m].num,emp[m].name,emp[m].sex,emp[m].old,emp[m].edu,emp[m].wages);

printf("\n");

}

break;

case '4' :  for(i=0;i<n-1;i++)

{

for(j=0;j<n-i-1;j++)

{

if(emp[j].wages<emp[j+1].wages)

{

t=emp[j];

emp[j]=emp[j+1];

emp[j+1]=t;

}

}

}

printf("序号\t职工号\t姓名\t性别\t年龄\t学历\t工资\n");

for(m=0;m<n;m++)

{

  printf("%d\t%s\t%s\t%s\t%d\t%s\t%d",m+1,emp[m].num,emp[m].name,emp[m].sex,emp[m].old,emp[m].edu,emp[m].wages);

printf("\n");

}

break;

    default :printf("没有这种排序!\n");

  }break;

default :printf("输入有误!\n");

}

}

/*****************通过输入职工号或姓名查找***************************/

void searchwages(void)

{

char a[10];

int i;

system("cls");

printf("请输入需查询的职工编号或姓名\n");

scanf("%s",a);

for(i=0;i<n;i++)

{

if(strcmp(a,emp[i].num)==0)

{

printf("序号\t职工号\t姓名\t性别\t年龄\t学历\t工资\n");

printf("%d\t%s\t%s\t%s\t%d\t%s\t%d\n",i+1,emp[i].num,emp[i].name,emp[i].sex,emp[i].old,emp[i].edu,emp[i].wages);

break;

}

}

if(i==n)

printf("未找到该学生信息\n");

}

/***********统计职工工资在各等级的分布情况****************/

void statistic(void)

{

int i;

int c1=0,c2=0,c3=0,c4=0;

system("cls");

printf("工资小于1999为D,在2000-3999为C,在4000-6999为B,大于7000为A\n");

for(i=0;i<n;i++)

{

if(emp[i].wages<2000)

c4++;

else if(emp[i].wages<4000)

c3++;

else if(emp[i].wages<7000)

c2++;

else

c1++;

}

printf("A:%d\n",c4);

printf("B:%d\n",c2);

printf("C:%d\n",c3);

printf("D:%d\n",c4);

}

/***************修改职工信息*****************/

void modify(void)

{

char a[50];

int t,b,i,flag=0;

system("cls");

for(i=0;i<n;i++)

{

printf("序号\t职工号\t姓名\t性别\t年龄\t学历\t工资\n");

printf("%d\t%s\t%s\t%s\t%d\t%s\t%d\n",i+1,emp[i].num,emp[i].name,emp[i].sex,emp[i].old,emp[i].edu,emp[i].wages);

}

do

{

flag=1;

printf("请输入想要修改的序号,不修改请输入0\n");

scanf("%d",&t);

if(t==0) break;

if(t<=n)

{

printf("修改职工编号请输入1,修改姓名请输入2,修改性别请输入3,修改年龄请输入4,修改学历请输入5,修改工资请输入6,不修改请输入7\n");

switch(getch())

{

case '1' :

printf("请输入职工编号\n");

scanf("%s",a);

strcpy(emp[t-1].num,a);

printf("修改成功!\n");

break;

case '2' :

printf("请输入姓名\n");

scanf("%s",a);

strcpy(emp[t-1].name,a);

printf("修改成功!\n");

break;

case '3' :

printf("请输入性别\n");

scanf("%s",a);

strcpy(emp[t-1].sex,a);

printf("修改成功!\n");

break;

case '4' :

printf("请输入年龄\n");

scanf("%d",&b);

emp[t-1].old=b;

printf("修改成功!\n");

break;

case '5' :

printf("请输入学历\n");

scanf("%s",a);

strcpy(emp[t-1].edu,a);

printf("修改成功!\n");

break;

case '6' :

printf("请输入工资\n");

scanf("%d",&b);

emp[t-1].wages=b;

printf("修改成功!\n");

break;

case '7' :flag=0;break;

default :printf("输入有误!\n");

}

}

else

printf("请确认是否有这个员工!\n");

}while(flag==1);

}

/*****************添加职工信息********************/

void add(void)

{

int a,i;

system("cls");

printf("请输入新增加的职工人数:\n");

scanf("%d",&a);

n=n+a;

for(i=n-a;i<n;i++)

{

printf("请输入员工%d的职工号:\n",i+1);

scanf("%s",emp[i].num);

printf("请输入员工%d的姓名:\n",i+1);

scanf("%s",emp[i].name);

printf("请输入员工%d的性别:\n",i+1);

scanf("%s",emp[i].sex);

printf("请输入员工%d的年龄:\n",i+1);

scanf("%d",&emp[i].old);

printf("请输入员工%d的学历:\n",i+1);

scanf("%s",emp[i].edu);

printf("请输入员工%d的工资:\n",i+1);

scanf("%d",&emp[i].wages);

printf("添加成功\n");

}

}

/*******************删除学生成绩*************************/

void deletewages(void)

{

int i,c;

char m,a[10];

system("cls");

printf("序号\t职工号\t姓名\t性别\t年龄\t学历\t工资\n");

for(i=0;i<n;i++)

{

printf("%d\t%s\t%s\t%s\t%d\t%s\t%d",i+1,emp[i].num,emp[i].name,emp[i].sex,emp[i].old,emp[i].edu,emp[i].wages);

printf("\n");

}

printf("请输入职工编号\n");

scanf("%s",a);

for(i=0;i<n;i++)

{

if(strcmp(a,emp[i].num)==0)

{

printf("序号\t职工号\t姓名\t性别\t年龄\t学历\t工资\n");

printf("%d\t%s\t%s\t%s\t%d\t%s\t%d\n",i+1,emp[i].num,emp[i].name,emp[i].sex,emp[i].old,emp[i].edu,emp[i].wages);

c=i;

break;

}

}

if(i==n)

printf("未找到该学生信息\n");

else

{

printf("是否删除该学生成绩(y/n)\n");

scanf("%s",&m);

if(m=='y')

{

for(i=c;i<n-1;i++)

emp[i]=emp[i+1]; /*结构体整体赋值将后一位职工信息拷贝进入前一位职工的存储位置*/

n=n-1; /*删除该职工信息后职工总数减一*/

printf("删除成绩成功\n");

}

else

printf("删除成绩失败\n");

}

}

/******************保存职工信息************************/

void savewages(void)

{

FILE *fp;

int i,flag=1;

char m;

system("cls");

puts("是否保存学生成绩(y/n)");

scanf("%s",&m);

if(m=='y')

{

if((fp=fopen("wages.txt","wb+"))==NULL)

{

printf("文件打开失败\n");

return;

}

fprintf(fp,"序号\t职工号\t姓名\t性别\t年龄\t学历\t工资\n");

for(i=0;i<n;i++)

if(fprintf(fp,"%d\t%s\t%s\t%s\t%d\t%s\t%d\r\n",i+1,emp[i].num,emp[i].name,emp[i].sex,emp[i].old,emp[i].edu,emp[i].wages)==0)

{

printf("保存失败\n");

flag=0;

}

if(flag==1)

printf("保存成功!\n");

fclose(fp);

}

else

return;

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言工资管理系统 的相关文章

随机推荐

  • Java架构直通车——Kafka介绍和高性能原因

    文章目录 Kafka介绍 Kafka高性能原因 Kafka介绍 Kafka以前说过很多次了 包括了Kafka单独的介绍 Kafka与Fabric 这里知识简单说说 Kafka的主要特点就是基于Pull模式来处理消息消费 追求高吞吐量 一开始
  • JavaScript应该被放在什么位置

    1 JavaScript被放在中 首先我们要知道的是HTML 文档加载顺序是从上至下被加载的 而且加载途中遇到JavaScript的代码时就会把JavaScript的代码放入缓冲中 当浏览器找到与它相关的标签时才进行匹配 当我们把JavaS
  • IRQL的理解和认识

    介绍 中断请求 IRQ Interrupt Request 一般有两种 一种是外部中断 也就是硬件产生的中断 例如 键盘中断 打印机中断 定时器中断 另一种是由软件指令 int n 产生的中断 例如 INT 3 断点中断 INT 1 单步中
  • (附源码)springboot+mysql+基于Java web的电动车销售平台 毕业设计201524

    电动车销售平台的设计与实现 摘 要 信息化社会内需要与之针对性的信息获取途径 但是途径的扩展基本上为人们所努力的方向 由于站在的角度存在偏差 人们经常能够获得不同类型信息 这也是技术最为难以攻克的课题 针对电动车销售平台等问题 对电动车销售
  • ES系列--分析器

    一 前言 ES进行文档分析就会涉及到分析器 无论是内置的分析器 还是自定义的分析器 都是由一个分词器 tokenizers 0或多个词项过滤器 token filters 0或多个字符过滤器 character filters 组成 二 内
  • 数据结构基本概念、线性表、顺序表

    一 头文件 head h ifndef HEAD H define HEAD H include
  • 蓝桥杯每日一题(30)单词分析(python)

    Topic 试题 G 单词分析 时间限制 1 0s 内存限制 512 0MB 本题总分 20 分 问题描述 小蓝正在学习一门神奇的语言 这门语言中的单词都是由小写英文字母组成 有些单词很长 远远超过正常英文单词的长度 小蓝学了很长时间也记不
  • 简述前端MVVM框架

    一张图说明 1 一句话总结 vm层 视图模型层 通过接口从后台m层 model层 请求数据 vm层继而和v view层 实现数据的双向绑定 2 mvc和mvvm的关系 c 控制层 被换成了vm viewmodel 层 MVVM是Model
  • TypeScript 总结

    文章目录 TypeScript 总结 概述 运行ts文件 方式一 方式二 基础 声明变量 类型 数组 元组 联合类型 取值限制 枚举类型 any unknown void undefined 类型适配 面向对象 函数 普通函数 箭头函数 可
  • 2.2-base-num-str

    for i in range 9 0 1 for j in range 1 i 1 print f j i str i j ljust 2 end print 1 9 9 2 9 18 3 9 27 4 9 36 5 9 45 6 9 54
  • 网络设备自动化运维工具——ansible入门笔记

    Ansible概述 Ansible是一款自动化运维工具 基于Python开发 集合了众多运维工具 Puppet CFengine Chef SaltStack 的优点 实现了批量系统配置 批量程序部署 批量运行命令等功能 Ansible是基
  • 管理者一定要戒掉这五个毛病,否则迟早被淘汰出局

    在职场中 很多人都想升职加薪 但是不是每个人都有能力当一个好的领导 有的人不断的为之努力 有的好不容易当上了领导 可以结果时间不长反而被辞退 并不是他们不够努力 而是当员工和领导有很大的差别 你的思维要及时调整 如果思维还停留在以前 那么只
  • rsyslog无法发送日志到server端问题定位

    问题描述 网络正常的情况下 代码端中使用openlog无法正常将日志发往syslog服务器 即使使用logger也无法正常发送 环境 ARM设备充当client端 pc虚拟机Ubuntu充当server端 验证方式 通过wireshark抓
  • 基于AF的HTTP

    搬搬砖头而已 iOS 基于AF的HTTP请求类 OKHTTPRequestManager h OKHTTPRequestManager h LL Created by Morris on 2020 9 22 Copyright 2020 L
  • 蓝桥杯训练——最小乘积(基本型)

    试题 算法训练 最小乘积 基本型 资源限制 时间限制 1 0s 内存限制 512 0MB 问题描述 给两组数 各n个 请调整每组数的排列顺序 使得两组数据相同下标元素对应相乘 然后相加的和最小 要求程序输出这个最小值 例如两组数分别为 1
  • Java设计模式——单例模式

    文章目录 为什么要用单例模式 单例模式 饿汉式 DCL 静态内部类 为什么要用单例模式 单例对象 Singleton 是一种常用的设计模式 在Java应用中 单例对象能保证在一个JVM中 该对象只有一个实例存在 这样的模式有几个好处 某些类
  • 大数相加和大数相乘

    1 大数相加 int或者long类型的数据往往满足不了数据容量的要求 这时需要用到数组或者字符串进行操作 考虑到数据的位数并不是一个确定的值 运用string来处理可以简化思维 在进行运算之前 需要明确下面几点要求 1 将两组数据中位数大的
  • vue单页面给页面添加锚点实现锚点跳转

    使用Element scrollIntoView 详情情查看 scrollIntoView 参数 alignToTop可选 一个Boolean值 如果为true 元素的顶端将和其所在滚动区的可视区域的顶端对齐 相应的 scrollIntoV
  • 虚拟专用网拨号出现错误提示:没有设置允许基本路由封装GRE协议数据包通过-原因解决方法

    今天给用户配置虚拟专用网拨号到单位的服务器 操作系统为win10 执行拨号后 提示上面的信息经过百度搜索 发现这个问题和网络运营商有关系 因为你使用的是移动或联通宽带 服务商阻止了虚拟专用网通道 只要换电信宽带就好了 恰巧就是使用了联通的移
  • C语言工资管理系统

    include