设计与实现图书超市收银系统中售书历史清单记录功能。在收银结账时,系统将本次售书信息记录到文件中,以便日后可以查看售书历史清单。
本任务目的如下:
通过本案例的操作可以实现售书历史清单记录功能,用户可以查看。
掌握使用文件存储售书记录。
实现步骤:
(1)在收银结账时,系统将本次售书信息记录到文件中
void savedata(Book book[100],double sum){
FILE*fp;
fp=fopen("data.txt","a+");
time_t t= time(0);
chartmp[64];
strftime( tmp, sizeof(tmp), "购买时间:%Y/%m/%d",localtime(&t) );
fprintf(fp,"%s\n",tmp);
fprintf(fp,"---------------------------------------------\n");
//只会对未超过他本身字符个数的数据起效。所以这里可能出现不对称的问题。具体排版看自己安排
fprintf(fp,"编号\t书名\t价格\t作者\t出版社\t数量\n");
for(inti=0;i<counter;i++){
if(book[i].buy!=0){
fprintf(fp,"%s\t",book[i].ISBN);
fprintf(fp,"%s\t",book[i].Name);
fprintf(fp,"%.2lf\t",book[i].Price);
fprintf(fp,"%s\t",book[i].Author);
fprintf(fp,"%s\t",book[i].publish);
fprintf(fp,"%d\n",book[i].buy);
book[i].buy=0;
}
}
fprintf(fp,"---------------------------------------------\n");
fprintf(fp,"总价格%.2lf\n",sum);
fclose(fp);
}
(2)查看售书历史清单记录
printf("售书历史记录\n\n");
FILE*fp;
fp=fopen("data.txt","a+");
for(intk=0;;k++){
charstr[100];
fscanf(fp,"%s",str);
if(feof(fp)){
//这里的k用来记入是第几次读取数据,因为我们要判断如果第一次读入就为空就要退出
if(k){
fclose(fp);
break;
}else{
printf("没有售书历史记录,赶快去购买几本图书吧!\n\n");
fclose(fp);
break;
}
}
printf("%s\n",str);
fscanf(fp,"%s",str);
printf("%s\n",str);
for(inti=1;fscanf(fp,"%s",str);i++){
if(strcmp(str,"---------------------------------------------"))
printf("%s",str);
else
break;
if(i==6){
printf("\n");
i=0;
}else
printf("\t");
}
printf("%s\n",str);
fscanf(fp,"%s",str);
printf("%s\n\n",str);
}
system("pause");
fclose(fp);
我们将添加图书信息,删除图书,修改图书功能也用文件来实现,就留待读者思考与实现。