| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 740 人关注过本帖
标题:谁帮我看一下这题编码错在哪里,该怎么修改
只看楼主 加入收藏
df2506403140
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-8-14
收藏
 问题点数:0 回复次数:5 
谁帮我看一下这题编码错在哪里,该怎么修改
某公司销售员(编号:E0001-E000N),负责销售产品(编号:p0001-p000m)。每个销售员在销售商品时,根据库存情况,执行订单操作(销售表,更新库存)。
试设计一个简易库存-销售管理系统,使之能提供以下功能:
1、系统以菜单方式工作
2、销售表信息录入功能(销售表信息用文件保存)--输入
3、统计销售情况
1)计算每个人每种产品的销售额。
2)按销售额对销售员进行排序,输出排序结果(销售员代号)
3)统计每种产品的总销售额,对这些产品按从高到底的顺序,输出排序结果(需输出产品的代号和销售额)
4. 对库存中零库存的商品,提出警示(建议进货)。
5. 当某种商品停产或有新产品时,及时更新产品信息。


#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#define M 155
void insert();
void del();
void creat();
void detail();
void foreach();
void menu();
void product();
void readdata();
void seller();
void total();
void choice();
struct ss {  
    char N;  /*销售员代号*/  
    int m;  /*产品代号*/  
    int c;   /*销售额*/
}ss[M];   
int n;        /*纸条数目*/  
int s[4][5]={{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0},{0,0,0,0,0}}; /*用于保存员工和产品信息*/
    void main()  /*入口函数,即主函数*/
    {
    /*根据文件初始数据初始化便于操作的数组*/     
    menu();      /*显示主菜单*/
}  
void menu()
{  int w,c;  
do{         
    puts("\t\t|********************菜单**************************|\n\n");
    puts("\t\t| 0.输入销售表信息                                 |\n");
    puts("\t\t| 1.查看每人每种产品的销售额                       |\n");         
    puts("\t\t| 2.按销售额对销售员排序(销售员代号)               |\n");         
    puts("\t\t| 3.对每种产品总销售额从高到低排序(产品代号和销售额|\n");         
    puts("\t\t| 4.对库存中零库存的商品,提出警示                 |\n");         
    puts("\t\t| 5.某种商品停产                                   |\n");
    puts("\t\t| 6.有新产品                                       |\n");
    puts("\t\t| 7.结束                                           |\n");
    puts("\n\n\t\t|*********************************************     |\n");     
    printf("请选择(0-7):[ ]\b\b");      
    scanf("%d",&c);        
    if(c<0||c>7)   /*错误输入则重新获取输入*/
    {      
        w=1;      
        getchar();   
    }      
    else w=0;  
}
while(w==1);
switch(c)       /*根据输入实现相应函数调用*/
{
case 0:    creat();break;
case 1:    detail();break;/*每个销售员每种产品的销售额统计*/
case 2:    seller();break;  
case 3:    product();break;  
case 4:    total();break;  
case 5:    del();break;
case 6:    insert();break;
case 7:    exit(0);
}
}
void creat()
{
    int i,N,m;
    FILE *fp;
fp=fopen("C:\\list.txt","w+");
        printf("销售人数:");
        scanf("%d",&N);
        printf("销售产品:");
        scanf("%d",&m);
        for(i=0;i<N;i++){
            printf("销售人员:");
            scanf("%s",ss[i].N);
            for(i=0;i<m;i++){
            printf("销售产品:");
            scanf("%s",&ss[i].m);
            printf("销售产品数量:");
            scanf("%d",&ss[i].c);
            }
        }
        fwrite(&ss[i],sizeof(struct ss),N,fp);
        fclose(fp);
            choice();
}

void detail()                   /*显示销售情况*/
{  
    int i,j;
        FILE *fp;
fp=fopen("list.txt","r+");
    for(i=0;;i++)        /*遍历销售员*/   
    {   
        printf("\n\t\t%s号销售员销售情况:\n",ss[i].N);        
        for(j=0;;j++)                                                      
            /*按销售员分类遍历所有产品并显示信息*/      
        printf("\t\t%s号产品销售数量:%d\n",ss[j].m,&ss[j].c);   
    }
    fclose(fp);
    choice();
}  
void seller()
{  
    int i,j,k,m;  
    int sp[4]={0,0,0,0};  
    for(i=0;i<n;i++)   
        for(j=0;j<m;j++)   
            sp[i]+=s[i][j];                                   
        /*计算每单个销售员所有产品销售数量*/   
        for(i=0;i<n;i++)          /*比较每次选出最大数*/  
        {   
            k=0;                  /*用于标记单轮最大数*/   
        for(j=0;j<m;j++)     
            if(sp[k]<sp[j])k=j;   /*获取最大数标号*/
            printf("\t\t第%d名是%d号销售员!\n",i+1,k+1);
            sp[k]=-1;              /*输出最大数和排名,将最大数标记为负*/
}
choice();
}  
void product()         /*与seller()原理一样,用于对产品进行统计*/
{  
    int i,j,k,m;  
    int p[5]={0,0,0,0,0};  
    for(j=0;j<m;j++)   
        for(i=0;i<n;i++)   
            p[j]+=s[i][j];   
        for(j=0;j<m;j++)   
        {
            k=0;   
            for(i=0;i<n;i++)     
                if(p[k]<p[i])
                    k=i;     
                printf("\t\t第%d名是%d号产品!\t销量为%d!\n",j+1,k+1,p[k]);
                p[k]=-1;
        }  
        choice();
}  
void total()    /*产品进货*/
{
        int i,j,m;  
    int p[5]={0,0,0,0,0};  
    for(j=0;j<m;j++)   
        for(i=0;i<n;i++)   
            p[j]+=s[i][j];
        for(j=0;j<m;j++)
            if(p[j]==0)
printf("\t\t%d号产品需进货\n",j+1);   
choice();
}
void insert() /*添加商品信息*/
{
    int i;
    printf("销售产品编号:");
    scanf("%d",&ss[i].m);
    printf("销售产品数目");
    scanf("%d",&ss[i].c);
    choice();
}
void del()/*删除商品信息*/
{
    int temp;
    int i,j,d;
    printf("销售产品编号:");
    for(i=0;;i++){
        printf("%d",&ss[i].m);
    }
    printf("请输入要删除的商品编号:");
    scanf("%d",&temp);
    for(i=0;;i++){
        if(temp==ss[i].m)
            for(j=i;j<n;j++)
                ss[i].m=ss[i+1].m;
    }
    printf("销售产品编号:");/*输出删除后的商品信息*/
    for(i=0;i<n;i++){
        printf("%d",&ss[i].m);
    }

        choice();
}
void choice()      /*用于输出信息功能选择*/
{
    int c;  
    printf("请选择接下来想做什么\t1>返回菜单\t2>退出系统    [ ]\b\b");
    scanf("%d",&c);
    if(c==1) menu();
    else exit(0);
    puts("\n");
}  
搜索更多相关主题的帖子: 销售管理 公司销售员 销售额 产品 统计 
2013-08-15 15:39
赵疯子
Rank: 8Rank: 8
来 自:dream
等 级:蝙蝠侠
威 望:2
帖 子:365
专家分:737
注 册:2013-5-5
收藏
得分:0 
乱,太乱,注释?
2013-08-16 00:00
新手小疯
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2013-8-3
收藏
得分:0 
函数里的变量都没初始化? 还是我没有你那个文件的事呢?
2013-08-16 05:20
onsm
Rank: 1
等 级:新手上路
帖 子:4
专家分:5
注 册:2013-8-17
收藏
得分:0 
看不明白好乱
2013-08-17 14:52
shenxiaoke05
Rank: 2
等 级:论坛游民
帖 子:14
专家分:19
注 册:2013-8-17
收藏
得分:0 
void creat()
 {
     int i,N,m;
     FILE *fp;
 fp=fopen("C:\\list.txt","w+");
         printf("销售人数:");
         scanf("%d",&N);
         printf("销售产品:");
         scanf("%d",&m);
         for(i=0;i<N;i++)            //外层循环用变量i指示,到内层循环还用i,这是什么意思?
        {
             printf("销售人员:");
             scanf("%s",ss[i].N);
             for(i=0;i<m;i++)          //内循环和外循环都用i来自增,考虑过会出问题么?
            {
                 printf("销售产品:");
                 scanf("%s",&ss[i].m);       //ss[i].m和ss[i].c都是一个变量,而不是数组,不知道你这个内层循环想做什么?
                 printf("销售产品数量:");
                 scanf("%d",&ss[i].c);
             }
         }
         fwrite(&ss[i],sizeof(struct ss),N,fp);
         fclose(fp);
             choice();
 }
2013-08-18 16:07
shenxiaoke05
Rank: 2
等 级:论坛游民
帖 子:14
专家分:19
注 册:2013-8-17
收藏
得分:0 
void seller()和void product()都存在定义变量,但是没有初始化的情况,而且有的直接没定义就用了。
举个例子
void seller()
 {  
     int i,j,k,m;  
     int sp[4]={0,0,0,0};  
     for(i=0;i<n;i++)       //你这个n赋初值了吗?如果没有,你想让它是几呢,不知道是几,你想循环多少次?
         for(j=0;j<m;j++)     //m赋初值的语句在哪里?没有赋值你怎么用的?
             sp[i]+=s[i][j];      //s数组在哪里赋的值?没有值不信息全为0么?那还比较什么?                          
         /*计算每单个销售员所有产品销售数量*/   
         for(i=0;i<n;i++)          /*比较每次选出最大数*/  
         {   
             k=0;                  /*用于标记单轮最大数*/   
         for(j=0;j<m;j++)     
             if(sp[k]<sp[j])k=j;   /*获取最大数标号*/
             printf("\t\t第%d名是%d号销售员!\n",i+1,k+1);
             sp[k]=-1;              /*输出最大数和排名,将最大数标记为负*/
 }
choice();
 }  
2013-08-18 16:25
快速回复:谁帮我看一下这题编码错在哪里,该怎么修改
数据加载中...
 
   



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

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