1. 自动售货机的程序代码怎么写 C语言大作业要交的,大路大神帮帮忙٩( 'ω' )و
整个程序的功能 :
商品入库 补货
商品购买 找零
还有乱七八糟的一堆验证
数据只有结构链表存储,退出不保存,你要写文件或数据库保存,你自己写吧,写不动了。
演示看下图:
#include<stdio.h>
#include<string.h>
#include<malloc.h>
#definenameSize21//商品名称数组大小可修改
typedefstructautoMA
{
char*spName;//商品名
intspNum;//商品数量
floatspValue;//商品价格
structautoMA*next;
}AMA;
AMA*amaNEW,*amaP1,*amaSelect;//定义一个新节点指针首节点指针查找用指针
intcontStrplen(char*p);
inteqStr(char*str1,char*str2);//比较字符串是否相等,相等返回1否则返回0
AMA*selectSP(AMA*AMAhead,char*spName);//通过名称查找商品有返回节点地址没有返回NULL
voidinsertSP(AMA*AMAhead,AMA**AMAtail,char*VSPname,intVSPnum,floatVSPvalue);//添加商品如果已有该商品,数量+如果没有新增
float*buySP(AMA*AMAhead,char*name,intnum,floatpay);//购买返回float数组[2]
intmain()
{
AMA*AMAtail,*AMAhead;//定义一个头节点指针尾节点指针
float*b,value;
intnum,answer;
charname[nameSize];
amaSelect=(AMA*)malloc(sizeof(AMA));
AMAhead=(AMA*)malloc(sizeof(AMA));
AMAtail=(AMA*)malloc(sizeof(AMA));
AMAhead->next=NULL;
mu:answer=0;
memset(name,0,nameSize);
num=0;
value=0;
printf("=====系统菜单====
");
printf("补充库存,输入1
");
printf("购买商品,输入2
");
scanf("%d",&answer);
if(answer==2&&AMAhead->next==NULL)
{
printf("当前没有商品库存,请先补充库存
");
gotomu;
}
if(answer==1)
{
printf("输入ESC00返回菜单
");
while(1)
{
printf("
请录入补充的商品名称(名称小于%d个字符,每项空格分隔):",(nameSize-1)/2);
scanf("%s",name);
printf("请录入补充的数量:");
scanf("%d",&num);
printf("请录入单价:");
scanf("%f",&value);
if(!eqStr(name,"ESC")||num!=0||value!=0)
{
insertSP(AMAhead,&AMAtail,name,num,value);
}
else
{
printf("
录入结束返回主菜单
");
gotomu;
}
}
}
if(answer==2&&AMAhead->next!=NULL)
{
tb:memset(name,0,nameSize);
num=0;
value=0;
printf("输入ESC00返回菜单
");
while(1)
{
printf("
请输入要购买的商品名称(名称小于%d个字符):",(nameSize-1)/2);
scanf("%s",name);
printf("请输入要购买的数量:");
scanf("%d",&num);
printf("请输入支付金额:");
scanf("%f",&value);
if(!eqStr(name,"ESC")||num!=0||value!=0)
{
b=buySP(AMAhead,name,num,value);
switch((int)b[0])
{
case1:
printf("
购买商品成功,找回零钱%.2f元
",b[1]);
break;
case2:
printf("
商品库存不足,当前剩余数量%d,请重新选择商品
",(int)b[1]);
gototb;
break;
case3:
printf("
支付金额不足,还需支付%.2f元
",b[1]);
gototb;
break;
default:
printf("
发生错误!交易失败!
");
break;
}
free(b);
b=NULL;
}
else
{
printf("
购买结束返回主菜单
");
gotomu;
}
}
}return0;
}
intcontStrplen(char*p)//计算字符串指针指向空间的字符串长度并返回长度
{
intlen=0,i=0;
while(p[i]!='