标题:【求助】请大佬帮忙改改,外卖信息管理系统(包含录入信息,信息修改,信息 ...
只看楼主
qq273385553
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2018-12-17
结帖率:100%
已结贴  问题点数:20 回复次数:5 
【求助】请大佬帮忙改改,外卖信息管理系统(包含录入信息,信息修改,信息查询,信息显示,信息统计五个模块)
信息显示的模块显示出来莫名其妙多处三行(附图)
信息统计模块好像有问题,统计出来的信息都是错误的。
这是这个程序的要求
{
录入信息包括:编号、客户姓名、订餐种类(含a、b、c三种套餐)、订餐数量、送餐时间、送餐地址
信息修改:根据编号显示相应订餐信息并提供修改界面。
信息查询:根据编号显示出相应订餐信息。
信息显示:显示出所有订餐信息。
信息统计:统计各种套餐的订餐数量、总营业额(设a、b、c三种套餐售价分别为15、18、23元)。
}
肯请大佬帮助


程序代码:
#include "stdio.h"
struct customer
    { int num;
      char name[20];
      char class;
      int shulian;
      char time[20];
      char addr[20];
    }a[10];
    int n;
void main()
{
    
    void lr();
    void xg();
    void cx();
    void xs();
    void tj();
    printf("欢迎使用外卖订餐管理系统!\n");
    do
    {
    printf("\n-------------------------\n");
    printf("[1]--录入信息\n");
    printf("[2]--信息修改\n");
    printf("[3]--信息查询\n");
    printf("[4]--信息显示\n");
    printf("[5]--信息统计\n");
    printf("[6]--退出\n");
    printf("-------------------------\n");
    printf("请输入您的选择:\n");
    scanf("%d",&n);
    switch(n)
    {
        case 1:lr();break;
        case 2:xg();break;
        case 3:cx();break;
        case 4:xs();break;
        case 5:tj();break;
        case 6: break;
        default :printf("输入有误\n");
    }
    
    }
    while(n=6);
}
void lr(n)
{
    int i=0,y;
    do
    {
        printf("-------------------------\n");
        printf("请输入编号:\n");
        scanf("%d",&a[i].num);
        printf("请输入客户姓名:\n");
        scanf("%s",&a[i].name);
        printf("请输入订餐种类:\n");
        scanf("%s",&a[i].class);
        printf("请输入订餐数量:\n");
        scanf("%d",&a[i].shulian);
        printf("请输入送餐时间:\n");
        scanf("%s",&a[i].time);
        printf("请输入送餐地址:\n");
        scanf("%s",&a[i].addr);
        i++;
        printf("1.继续输入\n2.输入完毕\n");
        printf("请输入:");
        scanf("%d",&y);
    }
    while(y==1);
    printf("提示:输入完毕!一共输入%d个\n",i);
        
}
void xg( )
{
    int num,i,j,c;
    if(c!=0)
    {
    printf("请输入要修改订餐信息的编号:");
    scanf("%d",&num);
    printf("\n");
    for(i=0;i<n;i++)
    if(a[i].num==num)
    j=i;
    do
    { 
    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("请输入您的选择:\n");
    scanf("%d",&c);
    printf("\n");
    switch(c)
    {
        case 0:break;
        case 1:printf("请输入新客户姓名:");
        scanf("%s",a[j].name);break;
        case 2:printf("请输入新订餐种类:");
        scanf("%s",a[j].class);break;
        case 3:printf("请输入新订餐数量:");
        scanf("%d",&a[j].shulian);break;
        case 4:printf("请输入新送餐时间:");
        scanf("%s",a[j].time);break;
        case 5:printf("请输入新送餐地址:");
        scanf("%s",a[j].addr);break;
        default:printf("输入有误!");break;
    }
}
    while(c!=0);
}
    else printf("输入有误!\n");    
}
    
void cx()
{
    int i,w;
    if(n!=0)
    printf("请输入编号:"); 
    scanf("%d",&w);
    printf("\n");
    for(i=0;i<n;i++)
    if(a[i].num==w)
    {
    printf("编号:%d\n",a[i].num);
    printf("客户姓名:%s\n",&a[i].name);
    printf("订餐种类:%s\n",&a[i].class);
    printf("订餐数量:%d\n",a[i].shulian);
    printf("送餐时间:%s\n",&a[i].time);
    printf("送餐地址:%s\n",&a[i].addr);
}    
}
void xs()
{

 int i;

 if(n!=6)

 { 
    printf("编号 客户姓名 订餐种类 订餐数量 送餐时间 送餐地址\n");
    printf("-----------------------------------------------------------------------------\n");
    for(i=0;i<n;i++)
    printf("%d\t%s\t%s\t%d\t%s\t%s\n",a[i].num,&a[i].name,&a[i].class,a[i].shulian,&a[i].time,&a[i].addr);

 }

 else printf("提示:无数据,请输入数据!");
}
void tj()
{
    int sum,i;
    int A=0,B=0,C=0;
    for(i=0;i<n;i++)
    if(a[i].class=97)
    A++;
    else if(a[i].class=98)
    B++;
    else if(a[i].class=99)
    C++;
    sum=A*15+B*18+C*23;
    printf("a套餐数量:%d\nb套餐数量:%d\nc套餐数量:%d\n",A,B,C );
    printf("总营业额:%d",sum);
    
}    
    
    
    
    






搜索更多相关主题的帖子: 信息 订餐 printf 输入 scanf 
2018-12-19 19:16
rohalloway
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:97
专家分:405
注 册:2018-9-28
得分:20 
错误:信息显示的模块显示出来莫名其妙多处三行

程序代码:
void xs()
{

 int i;

 if(n!=6)

 { 
    printf("编号 客户姓名 订餐种类 订餐数量 送餐时间 送餐地址\n");
    printf("-----------------------------------------------------------------------------\n");

    //for循环里的n是全局变量n,因为在主界面选择显示信息的编号是4,所以n=4,这是无端多打印了3行空数据的原因。
    //此错误的问题不仅是多打印3行空数据,而是最多只能打印4行数据

    //解决办法:声明一个新的计数用全局变量m,并在录入函数中操作它
    for(i=0;i<n;i++)
    printf("%d\t%s\t%s\t%d\t%s\t%s\n",a[i].num,&a[i].name,&a[i].class,a[i].shulian,&a[i].time,&a[i].addr);

 }

 else printf("提示:无数据,请输入数据!");
}
2018-12-19 20:20
rohalloway
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:97
专家分:405
注 册:2018-9-28
得分:0 
这个函数我没有细看,但也存在上面说的变量n的值并非是你录入数据的‘条数值’

另外,注意初始化变量

程序代码:
void tj()
{
    int sum, i;
    int A = 0, B = 0, C = 0;
    for (i = 0; i<n; i++)
        if (a[i].class = 97)
            A++;
        else if (a[i].class = 98)
            B++;
        else if (a[i].class = 99)
            C++;
    sum = A * 15 + B * 18 + C * 23;
    printf("a套餐数量:%d\nb套餐数量:%d\nc套餐数量:%d\n", A, B, C);
    printf("总营业额:%d", sum);
}
2018-12-19 20:26
豆豆的滴
Rank: 9Rank: 9Rank: 9
来 自:湖南
等 级:贵宾
威 望:33
帖 子:368
专家分:1087
注 册:2018-5-7
得分:0 
char和class都是关键字
....
有很多细节问题你去编译器跑一下改改
2018-12-19 21:08
秋沐雨
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2018-12-19
得分:0 
回复 4楼 豆豆的滴
好多的错误啊
2018-12-19 21:45
a1063808702
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2018-12-19
得分:0 
广州工商学院的学生?
2018-12-19 21:54



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




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

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