c语言员工工资查询系统流程图,我想问下怎么在这个程序增加计算工资平均值功能和按名字查询功能...

已结贴√

问题点数:20 回复次数:4

ca56232b3bbedf9a539d07f37fffb99a.gif

3144d8b7615c79d9f638db40d5689d26.gif

a218af6549b45ee526caf607ebff1358.gif

0f8df0e29816ae721419de940fb833d1.gif

我想问下怎么在这个程序增加计算工资平均值功能和按名字查询功能

#include

#include

#include

/*******************************

/*  结构类型定义

/*******************************/

struct employee

{

char name[20];

int age;

char sex;

float salary;

};

/*******************************

/*  显示所有员工函数

/*******************************/

void display(struct employee *p, int n){

int i;

printf("姓名                年龄   性别   工资\n");

printf("-------------------------------------------------------------\n");

for(i=0;i

if(p->salary!=-1){/*工资=-1表示该员工已经被删除,不必显示*/

printf("%20s %5d %4d %9.2f\n",p->name, p->age, p->sex, p->salary);

}

}

}

/*******************************

/*  按工资排序函数:使用选择排序算法

/*******************************/

void sort(struct employee *emp, int n){

/*n是数组长度*/

int i,j,min;

struct employee tmp;

for(i=0;i

min=i;

for(j=i+1;j

if(emp[j].salary

min=j;

}/*if结束*/

}/*for(j)结束*/

tmp=emp[i];emp[i]=emp[min];emp[min]=tmp;/*交换emp[i]和emp[min];*/

}/*for(i)结束*/

}

/*******************************

/*  主函数

/*******************************/

void  main(){

int c;/*输入命令*/

int n=0;/*员工人数*/

char tmp[20];/*用于输入删除员工的姓名*/

int i;/*循环变量*/

struct employee *emp=NULL;/*员工数组,未定具体人数,根据n的数值动态分配内存空间。*/

FILE *fp;/*文件指针*/

char filename[80];/*文件名最大长度=79*/

while(1){

system("cls");/*清屏幕*/

printf("\n================ 主菜单 =================\n");

printf("  1 : 将员工信息保存到文件        \n");

printf("  2 : 从文件读取员工信息        \n");

printf("  3 : 新增一个员工            \n");

printf("  4 : 删除一个员工            \n");

printf("  5 : 显示所有员工信息            \n");

printf("  6 : 按工资排序            \n");

printf("  7 : 退出                \n");

printf("===========================================\n");

printf("请输入命令:\n");

scanf("%d",&c);

switch(c)

{

case 1:

printf("请输入文件名: \n");

scanf("%s",filename);

fp=fopen(filename,"w+");

if(fp==NULL){

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

}

else{

fprintf(fp,"%d\n",n);/*先保存人数n*/

for(i=0;i

fprintf(fp,"%s\n",emp[i].name);

fprintf(fp,"%d\n",emp[i].age);

fprintf(fp,"%d\n",emp[i].sex);

fprintf(fp,"%f\n",emp[i].salary);

}

fclose(fp);

}

break;

case 2:

printf("请输入文件名: \n");

scanf("%s",filename);

fp=fopen(filename,"r");

if(fp==NULL){

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

}

else{

fscanf(fp,"%d",&n);/*先读取人数n*/

if(emp==NULL)

emp=(struct employee *)malloc(n*sizeof(struct employee));/*第一次分配空间*/

else

emp=(struct employee *)realloc(emp,n*sizeof(struct employee));/*因为n改变,再次分配空间,并保留原来数据*/

for(i=0;i

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

fscanf(fp,"%d",&emp[i].age);

fscanf(fp,"%d",&emp[i].sex);

fscanf(fp,"%f",&emp[i].salary);

}

fclose(fp);

}

break;

case 3:

n++;

if(emp==NULL)

emp=(struct employee *)malloc(n*sizeof(struct employee));

else

emp=(struct employee *)realloc(emp,n*sizeof(struct employee));

printf("请输入新员工信息:\n");

printf("姓名(不能含空格):");

scanf("%s",emp[n-1].name);

printf("年龄:");

scanf("%d",&emp[n-1].age);

printf("性别:");

scanf("%d",&emp[n-1].sex);

printf("工资(工资=-1表示被删除):");

scanf("%f",&emp[n-1].salary);

break;

case 4:

printf("请输入要删除的员工姓名:\n");

scanf("%s",tmp);

for(i=0;i

if(strcmp(emp[i].name,tmp)==0)

emp[i].salary=-1;/*工资=-1表示被删除,注意同名的一起删除*/

}

break;

case 5:

display(emp,n);

break;

case 6:

sort(emp,n);

break;

case 7:

free(emp);

exit(0);

default:

break;

}/*switch结束*/

printf("操作完毕,按任意键继续...\n");

getchar();getchar();

}/*while结束*/

}/*main结束*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值