| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 632 人关注过本帖
标题:帮忙读一下程序,个别看不懂
只看楼主 加入收藏
xynhhhg
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2016-12-28
结帖率:33.33%
收藏
已结贴  问题点数:5 回复次数:3 
帮忙读一下程序,个别看不懂
void modify()/*修改函数*/
{
int num;
char name[20];
char sex;
int age;
char xueli[30];
int wage;
 char addr[30];
 char tel[20];
 int b,c,i,n,t,flag;
 int m=load();
 printf("\n原来的职工信息:\n");
 display();
   printf("\n");
printf("请输入要修改的职工的姓名:\n");
    scanf("%s",name);
for(flag=1,i=0;flag&&i<m;i++)
{
if(strcmp(em[i].name,name)==0)
 {
printf("\n已找到此人,原始记录为:\n");
printf("职工号\t姓名\t\t性别\t\t年龄\n");

printf("\n%d\t\t%s\t%c\t\t%d\t\n",em[i].num,em[i].name,em[i].sex,em[i].age);
printf("\n学历\t\t工资\t\t住址\t\t电话\n");
printf("\n %s\t%d\t\t%s\t%s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
printf("\n确实要修改此人信息请按1  不修改请按0\n");
scanf("%d",&n);
if(n==1)
{
printf("\n需要进行修改的选项\n 1.职工号2.姓名3.性别4.年龄5.学历6.工资7.住址8.电话\n");
printf("请输入你想修改的那一项序号:\n");
scanf("%d",&c);
if(c>8||c<1)
printf("\n选择错误,请重新选择!\n");
}
flag=0;
}
}
if(flag==1)
printf("\n对不起,查无此人!\n");
do
{
switch(c)/*因为当找到第i个职工时,for语句后i自加了1所以下面的应该把改后的信息赋值给第i-1个人*/
{

case 1:printf("职工号改为: ");scanf("%d",&num); em[i-1].num=num;break;
case 2:printf("姓名改为: ");scanf("%s",name);strcpy(em[i-1].name,name);break;
case 3:printf("性别改为: ");getchar();scanf("%c",&sex);em[i-1].sex=sex;break;
case 4:printf("年龄改为: ");scanf("%d",&age);em[i-1].age=age;break;
case 5:printf("学历改为: ");scanf("%s",xueli);strcpy(em[i-1].xueli,xueli);break;
case 6:printf("工资改为: ");scanf("%d",wage);break;
case 7:printf("住址改为: ");scanf("%s",addr);strcpy(em[i-1].addr,addr);break;
case 8:printf("电话改为: ");scanf("%s",tel);strcpy(em[i-1].tel,tel);break;
}
printf("\n");
printf("\n是否确定所修改的信息\n是请按1不,重新修改请按2:\n");
scanf("%d",&b);
}
while(b==2);
printf("\n浏览修改后的所有职工信息:\n");
printf("\n");
save(m);
display();
printf("\n继续修改请按1,不再修改请按0\n");
scanf("%d",&t);
switch(t)
{
case 1:modify();break;
case 0:break;
default :break;
}}void del()/*删除函数*/
{
int =load();
int i,j,n,t,flag;
char name[20];
printf("\n原来的职工信息:\n");
display();
printf("\n");
printf("请输入要删除的职工的姓名:\n");
scanf("%s",name);
for(flag=1,i=0;flag&&i<m;i++)
{
if(strcmp(em[i].name,name)==0)
{
printf("\n已找到此人,原始记录为:\n");
printf("职工号\t姓名\t\t性别\t\t年龄\n");
printf("\n%d\t\t%s\t%c\t\t%d\t\n",em[i].num,em[i].name,em[i].sex,em[i].age);
printf("\n学历\t\t工资\t\t住址\t\t电话\n");
printf("\n%s\t%d\t\t%s\t%s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
printf("\n确实要删除此人信息请按1,不删除请按0\n");
scanf("%d",&n);
if(n==1)
{
for(j=i;j<m-1;j++)
{
strcpy(em[j].name,em[j+1].name);
em[j].num=em[j+1].num;
em[j].sex=em[j+1].sex;
em[j].age=em[j+1].age;
strcpy(em[j].xueli,em[j+1].xueli);
em[j].wage=em[j+1].wage;
strcpy(em[j].addr,em[j+1].addr);
strcpy(em[j].tel,em[j+1].tel);
}
flag=0;
}
}
}
if(!flag)
m=m-1;
else
printf("\n对不起,查无此人!\n");
printf("\n浏览删除后的所有职工信息:\n");
save(m);/*调用保存函数*/
display();/*调用浏览函数*/
printf("\n继续删除请按1,不再删除请按0\n");
scanf("%d",&t);
switch(t)
{
case1:del();break;
case0:break;
default:break;
}
}
2017-01-03 17:20
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:5 
你确定这个程序能正常运行???~~~~

就凭缩进处理来说,感觉写得很新哦,解读意义也不是很大~~~~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-01-03 20:38
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
有种感觉这个程序写得很水~~~~~~~~~~~~~~~~~~~~~~~~~~~~~嗯嗯,我也来灌下水~~~~~~
#include<stdio.h>
#include<stdlib.h>
void modify()/*修改函数*/
{
   int num;
   char name[20];
   char sex;
   int age;
   char xueli[30];
   int wage;
   char addr[30];
   char tel[20];
   int b,c,i,n,t,flag;//声明部分
   int m=load();//load函数最好说明一下是什么,感觉m是职工人数

   printf("\n原来的职工信息:\n");
   display();//输出职工信息
   printf("\n");
   printf("请输入要修改的职工的姓名:\n");
   scanf("%s",name);//输入职工姓名

   for(flag=1,i=0;flag&&i<m;i++)//flag=1---flag=1
   {
       if(strcmp(em[i].name,name)==0)//如果找到了,那就输出信息
       {
           printf("\n已找到此人,原始记录为:\n");//灌水一下~~这里最好另外掉一个输出函数
           printf("职工号\t姓名\t\t性别\t\t年龄\n");
 
          printf("\n%d\t\t%s\t%c\t\t%d\t\n",em[i].num,em[i].name,em[i].sex,em[i].age);
          printf("\n学历\t\t工资\t\t住址\t\t电话\n");
          printf("\n %s\t%d\t\t%s\t%s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
          printf("\n确实要修改此人信息请按1  不修改请按0\n");
           scanf("%d",&n);//输入是否继续
          if(n==1)
          {
               printf("\n需要进行修改的选项\n 1.职工号2.姓名3.性别4.年龄5.学历6.工资7.住址8.电话\n");//提示信息处理
               printf("请输入你想修改的那一项序号:\n");
               scanf("%d",&c);//输入修改什么信息
               if(c>8||c<1)
                   printf("\n选择错误,请重新选择!\n");
          }
         flag=0;//flag=0,意思是找到此人
       }
   }
   if(flag==1)//意思是找不到此人
   printf("\n对不起,查无此人!\n");
   do
   {
      switch(c)/*因为当找到第i个职工时,for语句后i自加了1所以下面的应该把改后的信息赋值给第i-1个人*/
      {

            case 1:printf("职工号改为: ");scanf("%d",&num); em[i-1].num=num;break;//灌水一下,这里最好专门掉一个函数
            case 2:printf("姓名改为: ");scanf("%s",name);strcpy(em[i-1].name,name);break;
            case 3:printf("性别改为: ");getchar();scanf("%c",&sex);em[i-1].sex=sex;break;
            case 4:printf("年龄改为: ");scanf("%d",&age);em[i-1].age=age;break;
            case 5:printf("学历改为: ");scanf("%s",xueli);strcpy(em[i-1].xueli,xueli);break;
            case 6:printf("工资改为: ");scanf("%d",wage);break;
            case 7:printf("住址改为: ");scanf("%s",addr);strcpy(em[i-1].addr,addr);break;
            case 8:printf("电话改为: ");scanf("%s",tel);strcpy(em[i-1].tel,tel);break;
      }
      printf("\n");
      printf("\n是否确定所修改的信息\n是请按1不,重新修改请按2:\n");
      scanf("%d",&b);
   }
   while(b==2);
       printf("\n浏览修改后的所有职工信息:\n");

    printf("\n");
    save(m);//保存信息,m为保存人数
    display();//输出信息
    printf("\n继续修改请按1,不再修改请按0\n");//提示信息处理
    scanf("%d",&t);
    switch(t)
    {
        case 1:modify();break;
        case 0:break;
        default :break;
    }
}
void del()/*删除函数*/
{
     int =load();
     int i,j,n,t,flag;
     char name[20];
     printf("\n原来的职工信息:\n");
     display();
     printf("\n");
     printf("请输入要删除的职工的姓名:\n");
     scanf("%s",name);
     for(flag=1,i=0;flag&&i<m;i++)
     {
          if(strcmp(em[i].name,name)==0)
          {
                printf("\n已找到此人,原始记录为:\n");//灌水一下~哎呀呀~都说掉一个输出函数处理可以在浏览个人信息时重复利用~
                printf("职工号\t姓名\t\t性别\t\t年龄\n");
                printf("\n%d\t\t%s\t%c\t\t%d\t\n",em[i].num,em[i].name,em[i].sex,em[i].age);
                printf("\n学历\t\t工资\t\t住址\t\t电话\n");
                printf("\n%s\t%d\t\t%s\t%s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
                printf("\n确实要删除此人信息请按1,不删除请按0\n");
                scanf("%d",&n);
                if(n==1)
                {
                     for(j=i;j<m-1;j++)
                     {
                             strcpy(em[j].name,em[j+1].name);//灌水一下~诶,难道是链表么???直接emp[j]=em[j+1]不行么~~~
                             em[j].num=em[j+1].num;
                             em[j].sex=em[j+1].sex;
                             em[j].age=em[j+1].age;
                             strcpy(em[j].xueli,em[j+1].xueli);
                             em[j].wage=em[j+1].wage;
                             strcpy(em[j].addr,em[j+1].addr);
                            strcpy(em[j].tel,em[j+1].tel);
                     }
                     flag=0;//找到此人信息
                }
          }
     }
     if(!flag)//如果找到此人信息,减少人数
         m=m-1;
     else
        printf("\n对不起,查无此人!\n");

     printf("\n浏览删除后的所有职工信息:\n");
     save(m);/*调用保存函数*/
     display();/*调用浏览函数*/
     printf("\n继续删除请按1,不再删除请按0\n");

     scanf("%d",&t);
     switch(t)
     {
           case1:del();break;
           case0:break;
           default:break;
     }
}

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-01-03 21:00
xynhhhg
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2016-12-28
收藏
得分:0 
这个怎么读呀主要是flag什么意思
void search()/*查询函数*/
{
int t,flag;
do
{
printf("\n按职工号查询请按1;按学历查询请按2;按电话号码查询请按3;进入主函数请按4\n");
scanf("%d",&t);
if(t>=1&&t<=4)
{
flag=1;
break;
}
else
{
flag=0;
printf("您输入有误,请重新选择!");
}
}
while(flag==0);
while(flag==1)
{
switch(t)
{
case 1:printf("按职工号查询\n");search_num();break;
case 2:printf("按学历查询\n");search_xueli();break;
case 3:printf("按电话号码查询\n");search_tel();break;
case 4:main();break;
default:break;
}
}
}
void search_num()
{
int num;
int i,t;
int m=load();
printf("请输入要查找的职工号:\n");
scanf("%d",&num);
for(i=0;i<m;i++)
if(num==em[i].num)
{
printf("\n已找到此人,其记录为:\n");
printf("职工号\t姓名\t\t性别\t\t年龄\n");
printf("\n%d\t\t%s\t%c\t\t%d\t\n",em[i].num,em[i].name,em[i].sex,em[i].age);
printf("\n学历\t\t工资\t\t住址\t\t电话\n");
      printf("\n%s\t%d\t\t%s\t%s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
break;
}
if(i==m)
printf("\n对不起,查无此人\n");
printf("\n");
printf("返回查询函数请按1,继续查询职工号请按2\n");
scanf("%d",&t);
switch(t)
{
case 1:search();break;
case 2:break;
default:break;
}
}
void search_xueli()
{
char xueli[30];
int i,t;
int m=load();
printf("请输入要查找的学历:\n");
scanf("%s",xueli);
for(i=0;i<m;i++)
if(strcmp(em[i].xueli,xueli)==0)
{
printf("\n已找到,其记录为:\n");
printf("职工号\t姓名\t\t性别\t\t年龄\n");
printf("\n%d\t\t%s\t%c\t\t%d\t\n",em[i].num,em[i].name,em[i].sex,em[i].age);
printf("\n学历\t\t工资\t\t住址\t\t电话\n");
printf("\n%s\t%d\t\t%s\t%s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
}
if(i==m)
printf("\n对不起,查无此人\n");
printf("\n");
printf("返回查询函数请按1,继续查询学历请按2\n");
scanf("%d",&t);
switch(t)
{
 case1:search();break;
 case2:break;
 default:break;
}
}
void search_tel()
{
char tel[20];
int i,t;
int m=load();
printf("请输入要查找的电话号码:\n");
scanf("%s",tel);
for(i=0;i<m;i++)
if(strcmp(tel,em[i].tel)==0)
{
printf("\n已找到此人,其记录为:\n");
printf("职工号\t姓名\t\t性别\t\t年龄\n");
printf("\n%d\t\t%s\t%c\t\t%d\t\n",em[i].num,em[i].name,em[i].sex,em[i].age);
printf("\n学历\t\t工资\t\t住址\t\t电话\n");
printf("\n%s\t%d\t\t%s\t%s\n",em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
break;
}
if(i==m)
printf("\n对不起,查无此人\n");
printf("\n");
printf("返回查询函数请按1,继续查询电话号码请按2\n");
scanf("%d",&t);
switch(t)
{
case1:search();break;
case2:break;
default:break;
}
}
2017-01-03 21:52
快速回复:帮忙读一下程序,个别看不懂
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022872 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved