求助:小型商店收费系统,求助一个问题
题目如下要求如下:用文件系统设计实现一个小型商店收费系统。实现商品列表建立,费用收取及收费信息汇总统计等功能。
1:建立商品列表(含商品价格,条码,库存量等);
2:实现收费功能;
3:可按多种方式对商品列表进行查询(如品名,条码);
4:实现收费信息汇总功能;
5:对热销商品进行统计;
遇到问题:前面我都完成了,问题在于第四个对收费信息汇总。因为每次收费时购买商品不同,价格数量不同,因而统计也不一样
,而且保存也是难题,我想不到思路如何处理这个问题。附上前三个功能函数,只发主要部分,无注释:
struct substance{
char name[11];
int price;
char key[13];
int p;
}sub[9]; 定义结构体
第一项功能:
void add()
{
system("cls");
char ch;
int i;
FILE *fp;
fp=fopen("E:\\课程设计\\商品","w+");
for(i=0; ;i++)
{
printf("请输入商品名称:\n");
scanf("%s",sub[i].name);
printf("请输入商品价格:\n");
scanf("%d",&sub[i].price);
printf("请输入条码:\n");
scanf("%s",sub[i].key);
printf("请输入储存量:\n");
scanf("%d",&sub[i].p);
fwrite(&sub[i],sizeof(struct substance),1,fp);
printf("是否继续添加商品:选择N退出,按任意键继续\n");
getchar();
ch=getchar();
if(ch=='N') break;
}
fclose(fp);
}
第二项功能:
void input()
{
system("cls");
int amount,fee,change,i,j,n,sum=0;
char key[13];
char ch;
FILE *fp;
fp=fopen("E:\\课程设计\\商品","r");
for(i=0;fread(&sub[i], sizeof(struct substance),1,fp)!=0 ;i++)
n=i+1;
fclose(fp);
fp=fopen("E:\\课程设计\\商品","w");
for(i=0; ;i++){
printf("请输入条码:");
scanf("%s",key);
for(j=0;j<n;j++)
if(strcmp(sub[j].key,key)==0)
break;
printf("请输入数量:");
scanf("%d",&amount);
sub[j].p=sub[j].p-amount;
sum+=amount*sub[j].price;
fwrite(&sub[j],sizeof(struct substance),1,fp);
printf("是否继续购买商品:选择N退出,任意键继续\n");
getchar ();
ch=getchar();
if(ch=='N') break;
}
fclose(fp);
printf("收费:");
scanf("%d",&fee);
printf("合计:%d\n",sum);
change=fee-sum;
printf("找零:%d\n",change);
}
第三项功能:
void search()
{
system("cls");
int i,j,n,m;
char name[20];
FILE *fp;
fp=fopen("E:\\课程设计\\商品","r");
for(i=0;fread(&sub[i], sizeof(struct substance),1,fp)!=0 ;i++)
n=i+1;
fclose(fp);
printf("按品名查找:1\n");
printf("按条码查找:2\n");
printf("请输入选项:");
scanf("%d",&m);
if(m==1){
printf("请输入品名:");
scanf("%s",name);
for(j=0;j<n;j++)
if(strcmp(sub[j].name,name)==0)
break;
printf("%s %d %s %d\n",sub[j].name,sub[j].price,sub[j].key,sub[j].p);
fclose (fp);
}
if(m==2){
printf( "请输入条码:");
scanf("%s",name);
for(j=0;j<n;j++)
if(strcmp(sub[j].key,name)==0)
break;
printf("%s %d %s %d\n",sub[j].name,sub[j].price,sub[j].key,sub[j].p);
fclose (fp);
}
}