本文实例为大家分享了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);
}