标题:为什么程序不对,求指导
只看楼主
Machine_
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2016-7-6
结帖率:0
已结贴  问题点数:20 回复次数:9 
为什么程序不对,求指导
#include"stdio.h"
#include"string.h"
#define null 0
int t=0;
int menu();//菜单
void lr();//录入信息
void xg();//修改
void cx();//查询
void cx_sbh();//设备号查询
void cx_mc();//设备名称查询
void tj();//统计
void bf();//报废信息
void bf_dj();//报废登记
void bf_tj();//报废统计
typedef struct shebei
{
  char id[10];           
  char name[15];         
  char kind[15];            
  char over[15];            
  int  yesno;      
  char time[10];            
  char price[10];           
}shebei;
shebei sb[200];

void lr()//录入信息
{
    while(1)
    {
      printf(">>>>>>>>>>提示:输入0则返回主菜单!\n");
      printf("\n请你输入设备ID号:");      
      scanf("%s",sb[t].id);               
      if(strcmp(sb[t].id,"0")==0) main();                     
      printf("\n请输入设备名称:");
      scanf("%s",sb[t].name);         
      printf("\n请输入设备种类:");
      scanf("%s",sb[t].kind);
      printf("\n请输入报废日期:");
      scanf("%s",sb[t].over);
      printf("\n请输入设备是否报废,1、没报废,0、报废:");
      scanf("%d",&sb[t].yesno);
      printf("\n请输入设备购买时间:");  
      scanf("%s",sb[t].time);
      printf("\n请输入设备价格:");
      scanf("%s",sb[t].price);
      printf(">>>>>>>>>>提示:已经完成一条记录的添加。\n");
      t++;
    }        
}
void xg()//修改
{
    char find[20];
    int x;
    t=0;
    printf("请输入要修改的设备ID号:");   
    scanf("%s",find);   
     while(1)   
     {
         if(strcmp(sb[t].id,find)==0) //如果找到的话返回的是符合要求   
        {
             break;
        }
         else t++;
     }   
        while(1)
       {
          printf("确认修改请输入任意数字否则输入0重新输入设备原id:");
          scanf("%d",&x);
          if(x==0)  break;
          else  
          {        
           printf("请输入新设备号(原来是 %s ):",sb[t].id);
           scanf("%s",sb[t].id);
           printf("请输入新设备名称(原来是 %s ):",sb[t].name);
           scanf("%s",sb[t].name);
           printf("请输入新设备设备种类名称(原来是 %s ):",sb[t].kind);
           scanf("%s",sb[t].kind);  
           printf("请输入新设备报废日期名称(原来是 %s ):",sb[t].over);
           scanf("%s",sb[t].over);  
           printf("请输入新设备是否报废,1、没报废,0、报废(原来是 %d):",sb[t].yesno);
           scanf("%d",&sb[t].yesno);
           printf("请输入新设备购买时间(原来是 %s ):",sb[t].time);
           scanf("%s",sb[t].time);
           printf("请输入新设备价格(原来是 %s ):",sb[t].price);
           scanf("%s",sb[t].price);
           printf("\n>>>>>>>>>>提示:该项记录资料已经成功修改!\n");
           printf("退回主菜单请输入0\n");
           printf("继续操作请输入1\n");
           scanf("%d",&x);
              switch(x)
              {
                  case 0:void main();break;
                  case 1:xg();break;
                  default:printf("输入无效,自动返回主菜单\n");main();break;
              }         
         }
      }
}
void cx()//查询
{
        int choice;
        do
        {
         printf("\t\t\t----------------------------------\n");
         printf("\t\t\t*    [1]----按设备号查找         *\n");
         printf("\t\t\t*    [2]----按设备名称查找       *\n");
         printf("\t\t\t*    [0]----退出                 *\n");
         printf("\t\t\t*·*·*·*·*·*·*·*·*·*·*·*|\n");
         scanf("%d",&choice);
              getchar();
              switch(choice)
               {
                 case 0:menu();break;
                 case 1:cx_sbh();break;
                 case 2:cx_mc();break;
                 default:printf("输入无效请重新输入\n");cx(); break;
              }
        }
         while(choice!=0);   
}
 void cx_sbh()//设备号查询
{
    int choice;
    char find[20];
    int t=0;
   
    printf("请输入您要查询的设备号\n");
    scanf ("%s",find);
    getchar();
    do
    {
        if(strcmp(sb[t].id,find)==0&&sb[t].yesno==1) //1表示设备没报废
        {
         printf("设备号   设备名称   设备种类   报废日期   是否报废   购买时间   价格\n");
         printf("\n%-13s%-11s%-7s%-10s%-13d%-10s%-5s\n",sb[t].id,sb[t].name,sb[t].kind,sb[t].over,sb[t].yesno,sb[t].time,sb[t].price);
         t++;
        }
        else
        t++;
    }
      while (t<100);
      printf("键入数字1返回主菜单\n");
      printf("键入数字任意键返回上层菜单\n");
        scanf("%d",&choice);
      if (choice==1)
      main();
      else   cx();
}
void cx_mc()//设备名称查询
{
    int choice;
    char ming[20];
    t=0;
    printf("\n输入你要查询的设备名称:");
    scanf("%s",ming);
    do
     {  
     if(strcmp(sb[t].name,ming)==0&&sb[t].yesno==1) //1表示设备没报废
      {
       printf("设备号   设备名称   设备种类   报废日期   是否报废   购买时间   价格\n");
       printf("\n%-13s%-11s%-7s%-10s%-13d%-10s%-5s\n",sb[t].id,sb[t].name,sb[t].kind,sb[t].over,sb[t].yesno,sb[t].time,sb[t].price);
       t++;
      }
       else
       t++;
    }
    while (t<100);
      printf("键入数字1返回主菜单\n");
      printf("键入数字任意键返回上层菜单\n");
        scanf("%d",&choice);
      if (choice==1)
      main();
      else   cx();
}  
void tj()//统计
{
    t=0;
    int choice;
    char tong[20];
    printf("\n输入你要统计的设备种类:");
    scanf("%s",tong);
    do
    {  
      if(strcmp(sb[t].kind,tong)==0&&sb[t].yesno==1)  //1表示设备没报废   
      {         
         printf("设备号   设备名称   设备种类   报废日期   是否报废   购买时间   价格\n");
       printf("\n%-13s%-11s%-7s%-10s%-13d%-10s%-5s\n",sb[t].id,sb[t].name,sb[t].kind,sb[t].over,sb[t].yesno,sb[t].time,sb[t].price);
       t++;
      }
      else
      t++;     
    }
   while (t<100);
      printf("键入数字1返回主菜单\n");
      printf("键入数字任意键返回上层菜单\n");
        scanf("%d",&choice);
      if (choice==1)
      main()  ;
}
void bf() //报废信息
{     int choice;
        do
        {
         printf("\t\t\t----------------------------------\n");
         printf("\t\t\t*    [1]----登记报废信息         *\n");
         printf("\t\t\t*    [2]----报废设备统计         *\n");
         printf("\t\t\t*    [0]----退出                 *\n");
         printf("\t\t\t*·*·*·*·*·*·*·*·*·*·*·*|\n");
         scanf("%d",&choice);
              getchar();
              switch(choice)
               {
                 case 0:menu();break;
                 case 1:bf_dj();break;
                 case 2:bf_tj();break;
                 default:printf("输入无效请重新输入\n");bf(); break;
              }
        }
         while(choice!=0);   
}   
void bf_dj()//报废登记
{
  char find[20];
  t=0;
  printf("请输入要登记的设备ID号:");   
  scanf("%s",find);   
     while(1)   
     {
       if(strcmp(sb[t].id,find)==0) //如果找到的话返回的是符合要求   
       {
          break;
       }
       else t++;
     }
       int x;
       while(1)
       {
          printf("完成登记请输入0否则输入任意数再进行修改:");
          scanf("%d",&x);
          if(x==0) break;
           {
            printf("请输入新设备是否报废1、没报废,0、报废(原来是 %d ):",sb[t].yesno);
            scanf("%d",&sb[t].yesno);
            printf("\n>>>>>>>>>>提示:该项记录资料已经成功登记!\n");
            scanf("%d",&x);
            switch(x)
             {
                 case 0:main();break;
                 case 1:bf();break;
                 default:printf("输入无效,自动返回主菜单\n");main();break;
             }
           }
      }
}   
void bf_tj()//报废统计   
{
    int choice;
    char find[20];
    t=0;
    printf("\n输入你要统计的报废设备种类:");
    scanf("%s",find);
    do
    {  
     if(strcmp(sb[t].kind,find)==0&&sb[t].yesno==0)  //0表示设备报废   
      {         
         printf("设备号   设备名称   设备种类   报废日期   是否报废   购买时间   价格\n");
       printf("\n%-13s%-11s%-7s%-10s%-13d%-10s%-5s\n",sb[t].id,sb[t].name,sb[t].kind,sb[t].over,sb[t].yesno,sb[t].time,sb[t].price);
       t++;
      }
      else
      t++;     
    }
   while (t<3);
      printf("键入数字1返回主菜单\n");
      printf("键入数字任意键返回上层菜单\n");
        scanf("%d",&choice);
      if (choice==1)
      main();   
}     
int menu()
{
        int choice;
        printf("\n\n\n");
        printf("\t\t\t--------------------------------\n");
        printf("\t\t\t+        实验设备管理系统      |\n");  
        printf("\t\t\t--------------------------------\n");               
        printf("\t\t\t+    [1]----录入设备信息       |\n");
        printf("\t\t\t+    [2]----修改设备信息       |\n");
        printf("\t\t\t+    [3]----查询设备信息       |\n");
        printf("\t\t\t+    [4]----统计设备信息       |\n");
        printf("\t\t\t+    [5]----报废设备信息       |\n");
        printf("\t\t\t+    [0]----*-EXIT-*           |\n");
        printf("\t\t\t+*·*·*·*·*·*·*·*·*·*·|\n");
        printf("\t\t\t--------------------------------\n");
        printf("请输入你要操作的序号:");
        scanf("%d", &choice);
        return choice;
}
void main()
{
     int choice;
     choice=-1;
     choice=menu(choice);
     do{
       switch (choice)
       {
        case 0:     printf("\n>>>>>>>>>>提示:已经退出系统,ByeBye!\n");  break;
        case 1:     lr();    break;
        case 2:     xg();    break;
        case 3:     cx();    break;
        case 4:     tj();    break;
        case 5:     bf();    break;
        default:    printf("\n>>>>>>>>>>提示:输入错误!\n"); break;
       }
     }
     while(choice!=0);  
}
搜索更多相关主题的帖子: include null 统计 信息 
2016-07-06 17:58
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
得分:0 
main函数不能被其他函数调用。你可以将main函数内容写到另一个函数中,然后需要返回主菜单时,调用那个函数。
2016-07-06 18:09
Machine_
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2016-7-6
得分:0 
回复 2楼 grmmylbs
具体怎么做,我只是大一,刚学了半学期就让做这个,有心无力啊
2016-07-06 19:39
低调低调
Rank: 3Rank: 3
来 自:四川省成都市
等 级:论坛游侠
威 望:1
帖 子:66
专家分:103
注 册:2016-6-23
得分:7 
都我玩  大一就开始做这个???
2016-07-06 19:42
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
得分:7 
你将现在的main函数改成子函数,然后再写一个main直接调用这个子函数就行了。

2016-07-06 19:48
Machine_
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2016-7-6
得分:0 
回复 5楼 linlulu001
您能帮我修改一下吗,这真的超过我们的能力吗
2016-07-06 21:02
Machine_
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2016-7-6
得分:0 
回复 4楼 低调低调
真的,我在一个建筑类大学一个建筑电气专业学了半学期c语言,真的无语了
2016-07-06 21:03
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
得分:0 
void Main()  //主函数改成子函数了。这样就能被其它函数调。简单,适合你写的小程序。
{
     int choice;
     choice=-1;
     choice=menu(choice);
     do{
       switch (choice)
       {
        case 0:     printf("\n>>>>>>>>>>提示:已经退出系统,ByeBye!\n");  break;
        case 1:     lr();    break;
        case 2:     xg();    break;
        case 3:     cx();    break;
        case 4:     tj();    break;
        case 5:     bf();    break;
        default:    printf("\n>>>>>>>>>>提示:输入错误!\n"); break;
       }
     }
     while(choice!=0);  
}
int main()
{
    Main();//直接调用刚刚的主函数
    retnrn 0;
}
大概就是这种方法,剩下的靠你自己了
2016-07-06 22:22
Machine_
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2016-7-6
得分:0 
回复 8楼 linlulu001
嗯,谢谢
2016-07-06 23:02
低调低调
Rank: 3Rank: 3
来 自:四川省成都市
等 级:论坛游侠
威 望:1
帖 子:66
专家分:103
注 册:2016-6-23
得分:0 
这个对于一个接触语言半年来说的学生实在是有点强人所难了!!
2016-07-07 15:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-466705-1-1.html




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

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