既然是小的超市收银系统,那么就要想数据结构和数据存储方面的问题,这方面少不了链表结构体文件操作,不然单凭if switch while,你这个系统是难以完成的。链表中每个结构体节点存储商品的所有信息,一一对应且唯一,增加查询修改删除都很方便,不知道链表结构体文件掌握的怎么样,但不管怎样,先回答你现在问的这问题吧
程序设计都有一定的逻辑,把商品代码和退出功能用同一输入进行判断,会造成逻辑混乱,是程序遇到瓶颈,所以首先要想好你的程序要怎么实现,不能走一步看一步,等到走不下去了,想放弃又不甘心已经写了这么多代码花了这么长时间,不放弃吧改吧工程量太大,可能要动大手术,这样就不好了。
scanf("%s",str);可以用来输入字符串,或者gets(str);,但要注意两者的区别
在C中,switch的case后面只能跟常量或常量表达式,但是字符串常量和浮点型是不支持的,所以想通过switch来处理字符串匹配问题有点悬,但是如果真的想用switch来实现字符串匹配,也不是没有办法,但实质还是不支持。
switch(strcmp(str1,str)==0?(1:strcmp(str2,str)==0?(2:strcmp(str3,str)==0?3:default)))
{
case 1:
.....................
case 2:
.......................
case 3:
........................
case 4:
...........................
default:
..........................
}
所以用switch来实现字符串匹配是不太现实的,还是用strcmp()等函数来判断匹配。收银员扫描二维码,相当于查询商品的某一信息,如代码,在所有商品中查询此代码有则打印出来,没有则不打印,然后才是用F来判断是否要退出,退出的判断和商品代码是两个不同的输入语句,这点要注意。
比如 :
scanf(输入代码字符串)--》查询代码--》找到则打印,未找到则不打印--》printf("是否要结束?(F/N)")--》另外一个scanf(输入F或者N)--》F则结束,N则回到刚开始查询的时候
不知我这样说,你能明白吗?