该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
不好意思,各位,那个是在vs下写的,这个才是在linux下用.c文件写的,但是运行出来可以读取那个Menu.txt文件,也可以把内容存入account.txt文件,就是那个结账那里输出的结果不对啊,好像挺乱的,我实在没发现程序那里有错误,在vs里都正常啊-----------------------------以下是在linux下写的:
#include
#include
#include
int main()
{
FILE *fp;
FILE *fq;
char caidan[9][100];
int z=0,i,j,bianhao,shuliang1,k;
int huizong=0;
char name[8][20]={"青椒土豆丝","回锅肉","蒜蓉油麦菜","凉拌牛肉","干锅鸡","葱爆羊肉","油焖大虾","凉拌黄瓜"};
int shuliang[8]={0};
int price[8]={8,18,10,20,18,25,28,10};
int zongjia[8]={0};
char c;
if((fp=fopen("Menu.txt","r"))==NULL)
{
printf("无法打开文件\n");
exit(0);
}
while(fgets(caidan[z],50,fp)!=NULL)
{
printf("%s",caidan[z]);
z++;
}
fclose(fp);
printf("请确定点菜(a)或者结账(b)\n");
while(1)
{
c=getchar();
if (c=='a')
{
while (1)
{
printf("请输入菜品编号和数量(如需返回点菜和结账页面输入9):");
scanf("%d,%d",&bianhao,&shuliang1);
if (bianhao==0)
{
return 0;
}
shuliang[bianhao-1]=shuliang1;
switch (bianhao)
{
case 1:zongjia[0]=price[0]*shuliang1; break;
case 2:zongjia[1]=price[1]*shuliang1; break;
case 3:zongjia[2]=price[2]*shuliang1; break;
case 4:zongjia[3]=price[3]*shuliang1; break;
case 5:zongjia[4]=price[4]*shuliang1; break;
case 6:zongjia[5]=price[5]*shuliang1; break;
case 7:zongjia[6]=price[6]*shuliang1; break;
case 8:zongjia[7]=price[7]*shuliang1; break;
case 9: break;
default:printf("输入错误"); break;
}
if (bianhao==9)break;
}
for (i=0;i<8;i++)
{
if (zongjia[i]!=0)
{
huizong+=zongjia[i];
}
}
}
if (c=='b')
{
if((fq=fopen("account.txt","w"))==NULL)
{
printf("无法打开文件\n");
exit(0);
}
printf("菜品编号 菜品名称 菜品价格 菜品数量 总价\n");
fputs("菜品编号 菜品名称 菜品价格 菜品数量 总价\n",fq);
for (j=0;j<8;++j)
{
if (shuliang[j]!=0)
{
k=j+1;
printf("00%d%18s%12d:00%12d%10d:00\n",k,name[j],price[j],shuliang[j],zongjia[j]);
fprintf(fq,"00%d%18s%12d:00%12d%10d:00\n",k,name[j],price[j],shuliang[j],zongjia[j]);
}
}
printf(" 汇总=%d:00元\n",huizong);
fprintf(fq," 汇总=%d:00元\n",huizong);
fclose(fq);
}
if (c=='d')break;
}
return 0;
}