大神们来帮忙看看,为什么商品售出总结额输出总是为0
#include <stdio.h> /*标准输入输出函数库*/ #include <stdlib.h> /*标准函数库*/
#include <string.h> /*字符串函数库*/
#include <conio.h> /*屏幕操作函数库*/
#define HEADER1 " ---------------------------------商品信息--------------------------------\n"
#define HEADER2 " | 编号 | 类型 | 名称 | 生产商 | 单价 | 销量 | 库存 | 售出金额 | \n"
#define HEADER3 " |--------|--------|---------|--------|-------|--------|--------|----------|\n"
#define FORMAT " | %-7s| %-7s| %-7s| %-7s | %-5.2lf | %-7d| %-7d| %-5.2lf | \n"
#define DATA p->num,p->type,p->name,p->producer,p->price,p->sale,p->sale,p->stock,p->saletotal
#define END " ---------------------------------------------------------------------\n"
#define N 100
int saveflag=0;
typedef struct shop
{ char num[4]; //编号
char type[10]; //类型
char name[10]; //名称
char producer[20]; //生产商
double price; //单价
int sale; //销售量
int stock; //库存
double saletotal; //商品售出总金额
}SHOP;
void Disput(SHOP temp[],int n)
{ int i;
if(n==0) //表示没有一条记录
printf("\n=====>商品信息管理系统尚无记录!\n");
else
{ printf("\n\n");
printheader(); //输出表格头部
i=0;
while(i<n) //逐条输出数组中存储的商品信息记录
{ printdata(temp[i]);
i++;
printf(HEADER3);
}
}
}
void stringinput(char *t,unsigned int lens,char *notice)
{ char str[250];
do
{ printf(notice); //显示提示信息
scanf("%s",str);
if(strlen(str)>lens)
printf("\n超过规定的长度\n"); //进行长度校验,超过lens值重新输入
} while(strlen(str)>lens);
strcpy(t,str);
}
//函数Add的作用:增加商品信息记录
int Add(SHOP temp[],int n)
{ char ch,num[10];
int i,flag=0;
system("cls");
Disput(temp,n);
while(1)
{
while(1)
{
stringinput(num,10,"请输入商品输入编号(按'0'返回主菜单):");
flag=0;
if(strcmp(num,"0")==0) return n;
i=0;
while(i<n)
{
if(strcmp(temp[i].num,num)==0)
{
flag=1;break;
i++;
}
if(flag==1)
{
getchar();
printf("==>编号 %s 已经存在,再试一次?(y/n):",num);
scanf("%c",&ch);
if(ch=='y'||ch=='Y') continue;
else return n;
}
else break;
}
strcpy(temp[n].num,num);
stringinput(temp[n].type,15,"请输入商品类型:");
stringinput(temp[n].name,15,"请输入商品名称:");
stringinput(temp[n].producer,15,"请输入商品生产商:");
printf("请输入商品单价:");
scanf("%lf",&(temp[n].price));
printf("请输入商品销量:");
scanf("%d",&(temp[n].sale));
printf("请输入商品库存:");
scanf("%d",&(temp[n].stock));
temp[n].saletotal=(temp[n].price)*(temp[n].sale);
saveflag=1;
n++;
}
return n;
}
}
main()
{
SHOP sp[N];
FILE *fp;
int select;
char ch;
int count=0;
fp=fopen("D:\\作业\C语言\C语言实训\spxt.txt","a+");
if(fp==NULL)
{ printf("\nSorry!========>can not open file!\n");
exit(0);
}
while(!feof(fp))
if(fread(&sp[count],sizeof(SHOP),1,fp)==1)//从fp指向的文件中读取一个长度为sizeof(SHOP)的信息写入&p[count]中
count++;
fclose(fp);
printf("\n======>成功打开文件,总共有%d条记录.\n",count);
getchar();
menu();
while(1)
{system("cls");
menu();
printf("\n 请输入你的选择(0~8)");//显示提示信息
scanf("%d",&select);
if(select==0)
{ if(saveflag==1)//若对数组的数据有修改且未进行存盘操作,则标记为1.
{ getchar();
printf("\n======>是否要保持已经修改的记录到文件?(y/n);");
scanf("%c,&ch");
if(ch=='y'||ch=='Y')
Save(sp,count);
}
printf("\n======>谢谢你使用本系统!");
getchar();
break;
}
switch(select)
{
case 1:count=Add(sp,count);break;
case 2:system("cls");Disput(sp,count);getch();break;
/*case 3:count=Del(sp,count);break;
case 4:Qur(sp,count);getch();break;
case 5:Modify(sp,count);break;
case 6:count=Insert(sp,count);break;
case 7:SelectSort(sp,count);break;
case8 :Save(sp,count);break;
default:Wrong();getchar();break;*/
}
}
}
PS:部分函数未展示出来,需要源代码请留言,谢谢。