weixin_43908168 2019-05-10 22:36
浏览 459

小白求解,解决c语言职工工资管理系统的编码

图片说明
问题在照片哪里,谢谢。
本人已编写了一些代码,大神帮忙看看哪里有问题
#include
#include
#include
#include
#include

#define N 50

struct sta//学生结构体
{

char ID[20];
char name[20];
int jbsalary; //基本
int zwsalary; //
int gwsalary;
int midical;
int gsalary;
//float sum;
//float ave;

};

void menu();//菜单
int creat_sta(struct sta staff[],int n,int m);//批量职工工资
void display_sta(struct sta staff[],int n);//显示职工工资
void modify_sta(struct sta staff[],int n,char num[]);//修改职工工资
int research_sta(struct sta staff[],int n,char num[]);//查询职工工资
int del_sta(struct sta staff[],int n,char num[]);//删除职工记录
void exit_sta();//退出系统
//int add_sta(struct sta staff[],int n);//添加职工工资
//void sort_sta(struct sta staff[],int n);//排序职工成绩
main()
{

struct sta staff[N];
char num[20];
int n=0;
//int i;
int m; //1
int k;  
int choose;
char yesorno;
char YN;

do
{
menu();
printf("请在0-5之间选择:");

  scanf("%d",&choose);
  getchar();

  switch(choose)
  {
   case 1:
         printf("\n输入要录入的职工人数:");
         scanf("%d",&m);
         getchar();
         n=creat_sta(staff,n,m);
         break;

   case 2:
         printf("\n显示所有职工的信息:\n");
         display_sta(staff,n);
         break;
   case 3:

         printf("\n输入要修改的职工的ID:");
         gets(num);
         modify_sta(staff,n,num);
            getchar();
         break;
  case 4:

         printf("\n输入查找职工的ID:");
         gets(num);

         k=research_sta(staff,n,num);
         break;             
  case 5: 
         printf("\n输入需要删除职工的ID号:");
         gets(num);

          n=del_sta(staff,n,num);

          break;
  //case 6:

  case 0:
            printf("\n一定要退出系统吗:");
            yesorno=getchar();
            getchar();
            if(yesorno=='y' || yesorno=='Y')
                exit_sta();
  }


  printf("\n要继续使用系统吗(y(Y)/n(N)):");

  YN=getchar();
  getchar();
  while(YN!='y' && YN!='Y' && YN!='n' && YN!='N')
  {
    printf("\n要继续使用系统吗(y(Y)/n(N)):");
    YN=getchar();

  }  

}while(YN=='y' || YN=='Y');


return 0;

}

void menu()
{
printf("|---------------------------------------------------|\n");
printf("| 职工工资管理系统,请选择数字进行相应操作 |\n");
printf("| 1.输入职工记录: |\n");
printf("| 2.显示职工记录: |\n");
printf("| 3.修改职工记录: |\n");
printf("| 4.查找职工记录: |\n");
printf("| 5.删除职工记录: |\n");
printf("| 0.退出系统 |\n");
printf("|---------------------------------------------------|\n");
}
//printf("| 6.统计职工信息: |\n");
// printf("| 7.保存数据文件功能: |\n");

int creat_sta(struct sta staff[],int n,int m)
{
int i;
char num[20];

for(i=0;i<m;i++)
{  printf("录入第%d个职工的信息:\n",n+1);
  printf("ID号: ");
    gets(num);
if(strcmp(num,staff[i].ID)==0)
 {  
    printf("ID号不能相同,请重新输入。\n");
     return 0;//添加不成功

}

strcpy(staff[n].ID,num); 

printf("姓名: ");
gets(staff[n].name);

printf("基本工资: ");
scanf("%5d",&staff[n].jbsalary);

printf("职务工资: ");
scanf("%5d",&staff[n].zwsalary);

printf("岗位津贴: ");
scanf("%5d",&staff[n].gwsalary);

 printf("医疗保险: ");
 scanf("%5d",&staff[n].midical);

 printf("公积金: ");
 scanf("%5d",&staff[n].gsalary);
 n=n+1;
 getchar();

}
  return n;

}

void display_sta(struct sta staff[],int n)
{
int i;
char m;
printf("请输入员工的记录或员工的姓名: ");
scanf("%s", &m);

//printf("\nID号  \t姓名\t基本工资\t职务工资\t岗位津贴\t医疗保险\t公积金\n");

// for(i=0;i<n;i++)
// {
if(m=ID || m=name )
{
printf("%s\t%s\t %d\t\t %d\t\t %d\t\t %d\t\t%d\n",staff[i].ID ,staff[i].name ,
staff[i].jbsalary ,staff[i].zwsalary ,staff[i].gwsalary,
staff[i].midical,staff[i].gsalary);
}
// }
}

void modify_sta(struct sta staff[],int n,char num[])
{
int m;
m=research_sta(staff,n,num);

  if(m!=0)//找到职工,修改信息
  {
     printf("输入修改信息:\n");
     printf("姓名:");
     gets(staff[m-1].name);

     printf("基本工资:");
     scanf("%d",&staff[m-1].jbsalary);

     printf("职务工资:");
     scanf("%d",&staff[m-1].zwsalary);

     printf("岗位津贴:");
     scanf("%d",&staff[m-1].gwsalary);

     printf("医疗保险:");
     scanf("%d",&staff[m-1].midical);

     printf("公积金:");
     scanf("%d",&staff[m-1].gsalary);

     //student[m-1].total=student[m-1].english +student[m-1].math +student[m-1].physist ;

     printf("\n该生修改后的信息:\n");
     printf("ID号\t姓名\t基本工资\t职务工资\t岗位津贴\t医疗保险\t公积金\n");
     printf("%s\t  %s\t  %d\t\t   %d\t\t   %d\t\t  %d\t\t  %d\n",staff[m-1].name ,
         staff[m-1].ID,staff[m-1].jbsalary,staff[m-1].zwsalary ,
         staff[m-1].gwsalary ,staff[m-1].midical ,staff[m-1].gsalary);
  }

}

int research_sta(struct sta staff[],int n,char num[])
{
int i; //char num[20];

for(i=0;i<n;i++)
{
   if(strcmp(staff[i].ID,num)==0)
   {
     printf("\n查找到的职工工资记录:\n");
     printf("姓名\tID号\t基本工资\t职务工资\t岗位津贴\t医疗保险\t公积金\n");
     printf("%s\t%s\t%01.f\t%0.1f\t%0.1f\t%0.1f\t%0.1f\t\n",staff[i].name ,staff[i].ID,
    staff[i].jbsalary,staff[i].zwsalary,staff[i].gwsalary,
    staff[i].midical,staff[i].gsalary );
      return i+1;//查找成功,返回逻辑序号
     break;
   }
}

// if(i>=n)
// {
// printf("没有ID号为%s的职工信息\n",num);
//查到不成功
// }
return 0;
}

int del_sta(struct sta staff[],int n,char num[])
{
int m;
int i;
m=research_sta(staff,n,num);
if(m!=0)//找到要删除的职工,删除
{
for(i=m;i<n;i++)
{
staff[i-1]=staff[i];
}
n--;//职工人数减一
}

return n;//返回职工总人数

}

void exit_sta()
{
exit(0);
}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
    • ¥15 vue3+express部署到nginx
    • ¥20 搭建pt1000三线制高精度测温电路
    • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
    • ¥15 画两个图 python或R
    • ¥15 在线请求openmv与pixhawk 实现实时目标跟踪的具体通讯方法
    • ¥15 八路抢答器设计出现故障
    • ¥15 opencv 无法读取视频
    • ¥15 按键修改电子时钟,C51单片机
    • ¥60 Java中实现如何实现张量类,并用于图像处理(不运用其他科学计算库和图像处理库))