ZEDD81315
Mr.Zedd
2019-06-21 23:11

为什么input部分输入到岗位津贴就直接结束程序了?

#include
#include
#include
struct worker
{
int no; /*职工号*/
char name[8]; /*姓名*/
int wage; /*工资*/
int allowance;//津贴
int insurance;//医疗保险
}lily[200]; /*定义一个结构体*/

void menu(); /*菜单函数*/
void input(); /*录入函数*/
void display(); /*浏览函数*/
void search(); /*查询函数*/
void search_wage(); /*按工资函数*/

void cancel(); /*删除函数*/
void change(); /*修改函数*/
void save(int); /*保存文件函数*/
int load(); /*加载函数*/

void menu() /*菜单函数*/
{
printf(" ★---欢迎进入职工信息管理系统---★\n");
printf(" ☆---1.录入职工信息---☆\n");
printf(" ☆---2.浏览职工信息---☆\n");
printf(" ☆---3.查询职工信息---☆\n");
printf(" ☆---4.删除职工信息---☆\n");
printf(" ☆---5.修改职工信息---☆\n");
printf(" ☆---6.退出 ---☆\n");
printf("\n");
printf("\n");
}

void cancel() /*删除函数*/
{
int m=load();
int i,j,n,x,flag,id=0;
printf("\n");
printf("请输入要删除的职工的ID:\n");
scanf("%d",id);
for(flag=1,i=0;flag&&i<m;i++)
{
if(lily[i].no==id)
{
printf("\n该职工记录为:\n");
printf("\n ID:%d\t姓名:%s\t\n",lily[i].no,lily[i].name);

printf("\n 工资:%d\t岗位津贴:%d\t医疗保险:%d\n",lily[i].wage,lily[i].allowance,lily[i].insurance);
printf("\n确实要删除此人信息请按1,不删除请按0\n");
scanf("%d",&n);
if(n==1)
{
for(j=i;j<m-1;j++)
{
strcpy(lily[j].name,lily[j+1].name);
lily[j].no=lily[j+1].no;
lily[j].wage=lily[j+1].wage;

lily[j].allowance=lily[j+1].allowance;
lily[j].insurance=lily[j+1].insurance;
}
flag=0;
}
}
}
if(!flag)
m=m-1;
else
printf("\n没有查到该职工\n");
printf("\n 浏览删除后的所有职工信息:\n");
save(m); /*调用保存函数*/
display(); /*调用浏览函数*/
printf("\n继续删除请按1,不再删除请按0\n");
scanf("%d",&x);
switch(x)
{
case 1:cancel();break;
case 0:break;
default :break;
}
}

void input() /*录入函数*/
{
int i,m;
printf("请输入需要创建信息的职工人数(1--200):\n");
scanf("%d",&m);
for (i=0;i<m;i++)
{
printf("请输入职工号: ");
scanf("%d",&lily[i].no);
printf("请输入姓名: ");
scanf("%s",lily[i].name);
getchar();
printf("请输入工资: ");
scanf("%f",&lily[i].wage);
printf("请输入岗位津贴: ");
scanf("%f",lily[i].allowance);
printf("请输入医疗保险: ");
scanf("%f",lily[i].insurance);
printf("\n");
}
printf("\n创建成功!\n");
save(m);
}

void display() /*浏览函数*/
{
int i;
int m=load();
for(i=0;i<m;i++) /*m为输入部分的职工人数*/
printf("\n ID:%d\t姓名:%s\t\n",lily[i].no,lily[i].name);

for(i=0;i<m;i++) /*m为输入部分的职工人数*/
printf("\n 工资:%d\t%d\t\t岗位津贴:%d\t医疗保险:%f\n",lily[i].wage,lily[i].allowance,lily[i].insurance);
}

void main()
{
int x;
int flag=0;
char a;
menu();
do
{
printf("请在1-6中选择以回车键结束:\n");
scanf("%d",&x);
if(x>=1&&x<=6)
{
flag=1;
break;
}
else
{
flag=0;
printf("输入错误,请重新输入!");
}
}
while(flag==0);
while(flag==1)
{
switch(x)
{
case 1:printf(" -------- ☆ 录入职工信息☆--------\n");printf("\n");input();break;
case 2:printf(" -------- ☆ 浏览职工信息☆--------\n");printf("\n");display();break;
case 3:printf(" -------- ☆ 查询职工信息☆--------\n");printf("\n");search();break;
case 4:printf(" -------- ☆ 删除职工信息☆--------\n");printf("\n");cancel();break;
case 5:printf(" -------- ☆ 修改职工信息☆--------\n");printf("\n");change();break;
case 6:exit(0);break;
default :break;
}
getchar();
printf("\n");
printf("是否继续进行(y or n):\n");
scanf("%c",&a);
if(a=='y')
{
flag=1;
system("cls"); /*清屏*/
menu(); /*调用菜单函数*/
printf("请在1-6中选择以回车键结束:\n");
scanf("%d",&x);
printf("\n");
}
else
exit(0);
}
}

void search_ID()
{
int id,i,x,f=0;
int m=load();
printf("请输入要查找的ID:\n");
scanf("%d",&id);
for(i=0;i<m;i++)
{if(id==lily[i].no)
{ f=f+1;
if(f==1)
{
printf("\n该职工记录为:\n");
printf("\n ID:%d\t\t姓名:%s\n",lily[i].no,lily[i].name);

printf("\n \t\t工资\t\t\t\t电话 \n");

printf("\n 工资:%d\t\t岗位津贴:%d\t医疗保险:%d\n",lily[i].wage,lily[i].allowance,lily[i].insurance);
break;
}
}
}
if(f==0)
printf("\n没有查到该职工\n");
printf("\n");
printf("返回查询函数请按1,继续查询职工号请按2\n");
scanf("%d",&x);
switch(x)
{
case 1:search();break;
case 2: break;
default:break;
}
}

void search()/*查询函数*/
{
int x,flag;
do
{
printf(" ☆---1.按ID查询---☆\n");search_ID();break;
printf(" ☆---2.回到主菜单---☆\n");main();break;
scanf("%d",&x);
if(x>=1&&x<=2)
{
flag=1;
break;
}
else
{
flag=0;
printf("输入错误,请重新输入!");
}
}
while(flag==0);
while(flag==1)
{
switch(x)
{
case 1:printf("☆---1.按ID查询---☆\n");search_ID();break;
case 2:main();break;
default:break;
}

}
}

void change() /*修改函数*/
{int i,id=0;
int m=load();
printf("请输入要修改的员工的ID");
scanf("%s", id);
for (i = 0; i<=m; i++)

    if(id==lily[i].no)
    {
        printf("请输入: 姓名 ID号 基本工资 岗位津贴 医疗保险\n");
        scanf("%s%s%f%f%f", (lily[i].name ,lily[i].no ,lily[i].wage ,lily[i].allowance ,lily[i].insurance));
        save(i);
    }

}

void save(int m) /*保存文件函数*/
{
int i;
FILE*fp;
if ((fp=fopen("worker_list","wb"))==NULL)
{
printf ("cannot open file\n");
exit(0);
}
for (i=0;i<m;i++) /*将内存中职工的信息输出到磁盘文件中去*/
if (fwrite(&lily[i],sizeof(struct worker),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}

int load() /*加载函数*/
{
FILE*fp;
int i=0;
if((fp=fopen("worker_list","rb"))==NULL)
{
printf ("cannot open file\n");
exit(0);
}
else
{
do
{
fread(&lily[i],sizeof(struct worker),1,fp);
i++;
}
while(feof(fp)==0);
}
fclose(fp);
return(i-1);
}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

为你推荐