谁帮我看一下这题编码错在哪里,该怎么修改
某公司销售员(编号: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");
}