C语言实现小型工资管理系统

 更新时间:2022年2月28日 10:21  点击:230 作者:jhdee

本文实例为大家分享了C语言实现小型工资管理系统的具体代码,供大家参考,具体内容如下

课程大作业目的

通过该大作业,考察学生分析、解决复杂问题的能力,考察学生编写较大程序的能力,检验和评价《程序设计基础》课程的学习效果

大作业内容

编写一个小型工资管理系统,用来管理职工的个人基本信息及工资薪酬等数据

基本要求

1、每个职工的数据应包括:工号、姓名、性别、部门、基本工资、绩效工资、奖金、应发工资(应发工资=基本工资+绩效工资+奖金)。职工数据要求采用结构体数据类型。

2、菜单显示:显示系统的一级功能菜单(数据输入、数据修改、数据处理、数据输出、退出)。

3、数据输入:至少输入10个职工的各项数据(应发工资由系统自动计算,不需要输入)。**录入的第一条记录用自已的真实姓名,部门为自己的真实班级。**并将有自己真实姓名、班级的输出结果截屏保存到大作业总结报告中。

4、数据修改:输入工号,修改指定工号的各项数据。输出修改完成后的全部职工数据。

5、数据处理:处理方式包括:排序、查询。可提供子菜单让用户选择。其中:

(1) 排序:按工号排序,显示所有职工的全部数据。

(2) 查询:按工号查询,显示指定工号的全部数据。

6、数据输出:输出全部职工的各项数据。

7、新增 删除职工数据

8、新增 统计职工男女数量

9、退出:退出整个工资管理系统。

代码如下

#include <stdio.h>
#include <string.h>
struct staff
{
 char number[20];
 char name[20];
 char gender[10];
 char bumen[20];
 double jbgz;
 double jxgz;
 double bonus;
 double yfgz; 
};
double jbgz,jxgz,bonus,yfgz;
struct staff sta[10];
void inputdata();                  //1.定义数据输入函数 input data
void modifydata();       //2.定义数据修改函数 modify data
void processdata();       //3.定义数据处理函数 process data
void sortdata();       //定义数据处理函数中的按工号排序数据函数  sort data
void searchdata();       //定义数据处理函数中的按工号查询数据函数  search data
void outputdata();       //4.定义数据输出函数 output data
void deldata();        //5.定义数据删除函数 delete data       新增
void countgender();                //6.定义统计男女职工数量函数 count gender    新增 
int main()
{
 int i,choice; 
 while(1)
 {
  for(i=1;i<90;i++)
   printf("*");
  printf("\n");
  printf("1.数据输入  2.数据修改  3.数据处理  4.数据输出  5.数据删除  6.统计男女职工数量  7.退出\n");
  for(i=1;i<90;i++)
   printf("*");
  printf("\n");
  do
  {
   printf("请根据菜单输入数字:");
   scanf("%d",&choice);
  }
  while(choice!=1&&choice!=2&&choice!=3&&choice!=4&&choice!=5&&choice!=6&&choice!=7);
  if(choice==7)
   break;
  else
  {
   if(choice==1) inputdata();
   else if(choice==2) modifydata();
   else if(choice==3) processdata();
   else if(choice==4) outputdata();
   else if(choice==5) deldata();
   else if(choice==6) countgender();
   else printf("该数不合法;\n");     //另加
  }
 }
 return 0;
}
void inputdata()
{
 int i;
 for(i=1;i<=10;i++)
 {
  printf("请输入第%d位职工的工号,姓名,性别,部门,基本工资,绩效工资,奖金:",i);
  scanf("%s %s %s %s %lf %lf %lf",&sta[i].number,&sta[i].name,&sta[i].gender,&sta[i].bumen,&sta[i].jbgz,&sta[i].jxgz,&sta[i].bonus);   //输入第i位职工的工号,姓名,性别,部门,基本工资,绩效工资,奖金
  sta[i].yfgz=sta[i].jbgz+sta[i].jxgz+sta[i].bonus;
  printf("输入成功\n");
 }
}
void modifydata()
{
 int i;
 char num[20];
 printf("请输入您想要修改职工的数据的工号:");
 scanf("%s",&num);
 for(i=1;i<10;i++)
 {
  if(strcmp(num,sta[i].number)==0)
  {
   printf("请输入新工号,姓名,性别,部门,基本工资,绩效工资,奖金\n");
   scanf("%s %s %s %s %lf %lf %lf",&sta[i].number,&sta[i].name,&sta[i].gender,&sta[i].bumen,&sta[i].jbgz,&sta[i].jxgz,&sta[i].bonus);
   sta[i].yfgz=sta[i].jbgz+sta[i].jxgz+sta[i].bonus;
  }
  printf("修改成功!\n");
  printf("修改后的数据为:\n");
  printf("    工号          姓名       性别        部门           基本工资           绩效工资            奖金           应发工资\n");
  printf("%s       %s           %s         %s      %f   %f    %f     %f\n",sta[i].number,sta[i].name,sta[i].gender,sta[i].bumen,sta[i].jbgz,sta[i].jxgz,sta[i].bonus,sta[i].yfgz);
  break;
 }
}
void processdata()
{
 int choice,i;
 for(i=1;i<30;i++)
  printf("*");
 printf("\n");
 printf("二级菜单:\n");
 printf("1.排序 2.查询\n");
 for(i=1;i<30;i++)
  printf("*");
 printf("\n");
 printf("请根据菜单输入数字:");
 scanf("%d",&choice);
 if(choice==1) sortdata();
 else searchdata();
}
void sortdata()
{
 int i,j,k;
 char n[10];
 for(i=1;i<=10;i++)
 {
  for(j=1;j<=10;j++)
  {
   if(strcmp(sta[i].number,sta[j].number)>0)
   {
    strcpy(n,sta[j].number);
    strcpy(sta[j].number,sta[i].number);
    strcpy(sta[i].number,n);
   }
   
  }
  
 }
 for(k=1;k<=10;k++)
 {
  printf("%s     %s    %s     %s     %lf    %lf    %lf\n",sta[k].number,sta[k].name,sta[k].gender,sta[k].bumen,sta[k].jbgz,sta[k].jxgz,sta[k].bonus,sta[k].yfgz);
 }
}
void searchdata()
{
 int i;
 char snum[20];       //snum = searchnumber
 printf("请输入您想要查询的职工工号:");
 scanf("%s",&snum);
 for(i=1;i<10;i++)
 {
  if(strcmp(snum,sta[i].number)==0)
  {
   printf("该职工的数据为:\n");
   printf("     工号           姓名           性别           部门          基本工资       绩效工资        奖金          应发工资\n\n");
   printf(" %s       %s           %s         %s      %f   %f    %f     %f\n",sta[i].number,sta[i].name,sta[i].gender,sta[i].bumen,sta[i].jbgz,sta[i].jxgz,sta[i].bonus,sta[i].yfgz);
  }
  break;
 }
}
void outputdata()
{
 int i;
 printf("     工号           姓名           性别           部门          基本工资       绩效工资        奖金          应发工资\n");
 for(i=1;i<=10;i++)
 {
  printf(" %s       %s           %s         %s      %f   %f    %f     %f\n",sta[i].number,sta[i].name,sta[i].gender,sta[i].bumen,sta[i].jbgz,sta[i].jxgz,sta[i].bonus,sta[i].yfgz);
 }
}
void deldata()
{
 int i,j,choi;
 //char Y=Y;
 //char N=N;
 char delnum[20];
 printf("请输入您想要删除职工数据的工号:");
 scanf("%s",&delnum);
 for(i=1;i<10;i++)
 {
  if(strcmp(delnum,sta[i].number)==0)
  {
   printf("该职工的数据为:\n");
   printf("     工号           姓名           性别           部门          基本工资       绩效工资        奖金          应发工资\n");
   printf(" %s       %s           %s         %s      %f   %f    %f     %f\n",sta[i].number,sta[i].name,sta[i].gender,sta[i].bumen,sta[i].jbgz,sta[i].jxgz,sta[i].bonus,sta[i].yfgz);
   printf("确认删除该名职工的数据吗?(1.确认  2.取消)\n");
   scanf("%d",&choi);
   if(choi==1)
   {
    for(i=1,j=2;j<=10;i++,j++)
    {
     strcpy(sta[i].number,sta[j].number);
     strcpy(sta[i].name,sta[j].name);
     strcpy(sta[i].gender,sta[j].gender);
     strcpy(sta[i].bumen,sta[j].bumen);
     sta[i].jbgz=sta[j].jbgz;
     sta[i].jxgz=sta[j].jxgz;
     sta[i].bonus=sta[j].bonus;
    }
    printf("删除成功!!\n"); 
   }
   else break;
  }
 }
}
void countgender()
{
 int i,count=0,fecount=0;
 char gen[10]="男";
 for(i=1;i<=10;i++)
 {
  if(strcmp(gen,sta[i].gender)==0) count++;
 }
 fecount=10-count;
 printf("该公司有%d名男职工,有%d名女职工\n",count,fecount);
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持猪先飞。

原文出处:https://blog.csdn.net/alexis7/article/details/106994406

[!--infotagslink--]

相关文章

  • C语言实现放烟花的程序

    这篇文章主要为大家详细介绍了C语言实现放烟花的程序,有音乐播放,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-23
  • C语言中的字符(char)详细讲解

    本篇文章主要介绍C语言中char的知识,并附有代码实例,以便大家在学习的时候更好的理解,有需要的可以看一下...2020-04-25
  • 详解如何将c语言文件打包成exe可执行程序

    这篇文章主要介绍了详解如何将c语言文件打包成exe可执行程序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-25
  • python实现学生通讯录管理系统

    这篇文章主要为大家详细介绍了python实现学生通讯录管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-02-25
  • C语言中free函数的使用详解

    free函数是释放之前某一次malloc函数申请的空间,而且只是释放空间,并不改变指针的值。下面我们就来详细探讨下...2020-04-25
  • C语言中计算正弦的相关函数总结

    这篇文章主要介绍了C语言中计算正弦的相关函数总结,包括正弦和双曲线正弦以及反正弦的函数,需要的朋友可以参考下...2020-04-25
  • 详解C语言中的rename()函数和remove()函数的使用方法

    这篇文章主要介绍了详解C语言中的rename()函数和remove()函数的使用方法,是C语言入门学习中的基础知识,需要的朋友可以参考下...2020-04-25
  • C语言中求和、计算平均值、方差和标准差的实例

    这篇文章主要介绍了C语言中求和、计算平均值、方差和标准差的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-12-10
  • C语言的基本语法详解

    本篇文章主要讲解C语言 基本语法,这里提供简单的示例和代码来详细讲解C语言的基本语法,开始学习C语言的朋友可以看一下,希望能够给你带来帮助...2021-09-18
  • 护卫神 主机管理系统使用说明(MSSQL管理)

    护卫神·主机管理系统该版本支持在Windows Server 200320082012,含32位和64位,直接开设配置WEB站、FTP站,以及SQL Server和MySQL,是您开设和管理虚拟主机的绝好帮手。但是对于新用户可能在使用上有一些困难,因此请仔细阅读如下说明文档...2016-01-27
  • C语言中send()函数和sendto()函数的使用方法

    这篇文章主要介绍了C语言中send()函数和sendto()函数的使用方法,是C语言入门学习中的基础知识,需要的朋友可以参考下...2020-04-25
  • C语言实现从文件读入一个3*3数组,并计算每行的平均值

    今天小编就为大家分享一篇C语言实现从文件读入一个3*3数组,并计算每行的平均值,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-25
  • 使用C语言操作文件的基本函数整理

    这篇文章主要介绍了使用C语言操作文件的基本函数整理,包括创建和打开以及关闭文件的操作方法,需要的朋友可以参考下...2020-04-25
  • C语言中memcpy 函数的用法详解

    这篇文章主要介绍了C语言中memcpy 函数的用法详解的相关资料,需要的朋友可以参考下...2020-04-25
  • C语言中查找字符在字符串中出现的位置的方法

    这篇文章主要介绍了C语言中查找字符在字符串中出现的位置的方法,分别是strchr()函数和strrchr()函数的使用,需要的朋友可以参考下...2020-04-25
  • C语言菜鸟基础教程之a++与++a

    很多同学在学习c语言的时候是不是会碰到a++和++a都有甚么作用啊。今天我们就来探讨下...2020-04-25
  • 详解C语言中const关键字的用法

    这篇文章主要对C语言中const关键字的用法进行了详细的分析介绍,需要的朋友可以参考下...2020-04-25
  • C语言实现时间戳转日期的算法(推荐)

    下面小编就为大家带来一篇C语言实现时间戳转日期的算法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-04-25
  • C语言之整数划分问题(递归法)实例代码

    这篇文章主要介绍了C语言之整数划分问题(递归法)实例代码的相关资料,需要的朋友可以参考下...2020-04-25
  • c实现linux下的数据库备份

    本文给大家简单介绍下c实现linux下的数据库备份的方法和具体的源码,十分的实用,有需要的小伙伴可以参考下。...2020-04-25