用c语言写一个自动售货机

2023-11-03

自动售货机

如图所示的简易自动售货机,物品架1、2上共有10样商品,按顺序进行编号,分别为1-10。同时标有价格与名称,- 一个编号对应一个可操作按钮,供选择商品使用。如果物架上的商品被用户买走,储物柜中会自动取出商品送到物架上,保证物品架上一定会有商品.用户可以一次投入较多钱币,并可以选择多样商品,售货机可以一次性将商品输出并找零钱。
在这里插入图片描述
用户购买方法:

(1)放入钱币,用户可以以此放入多个纸币,面额可以是1元、2元、>5元、10元。售货机会统计总金额并显示。
(2)依次输入要购买的产品,可购买多个产品,售货机自动判断余额,若余额不足,则找零后退出程序。
若需自主退出需按退出按钮,程序中用输入“-1表示”。
售货机本着人性化原则,绝不会私吞用户钱,也不会白送给用户商
品。

因此在选择货物号时,要注意以下几个点:

1.若什么都不买,用户投入的钱全部将退回;
2.若购买商品后还有余额,但用户自主退出程序,退回余额;
3.若用户购买货物时余额不足,将停止购买此商品,退回余额
代码如下:
4.钱正好花光,没有余额,结束程序。

#include<stdio.h>
#define N 10
int sum=0;
int sum1;
typedef struct sell{
	int num;
	char name[20];
	int price;
}sell;

void main()
{
	int i,c,s;
	int s1=0,s2=0,s3=0,s4=0,s5=0,s6=0,s7=0,s8=0;//记录商品购买数量
	sell se[N]={{1,"Table-water",1},{2,"Table-water",1},{3,"Table-water",1},{4,"Coca-Cola",2},{5,"Milk",2},
	{6,"Beer",3},{7,"Orange-Juice",3},{8,"Sprite",3},{9,"Oolong-Tea",4},{10,"Green-Tea",4}};  //售货机装入商品
	do {
		printf("Please put in coins:");
		scanf("%d",&c);  //投币
		if(c==1||c==2||c==5||c==10)
			sum=sum+c;
		else if(c==-1) break;
		else
			printf("error!\n");
	}
	while(c!=-1);
	printf("Total:%d yuan\n",sum);
	
	
	printf("Please select the goods serial number:");
	scanf("%d",&s);  //选择商品号
	se[-2].price =0;
	sum1=sum-se[s-1].price ;  //第一个选的商品超过投币数
	if(sum1<0||s==-1) printf("Not enough money!\n");
	else		sum=sum1;
	
	while(sum>=0&&s!=-1)    //什么都没买或者钱够但是不想买了
	{
		
		if(sum>=0){              //钱花光了
			for(i=0;i<3;i++)
				if(s==se[i].num )
					s1++;
				for(i=3;i<N;i++)
				{
					if(s==se[i].num &&i==3) {s2++;break;}
					else if(s==se[i].num &&i==4) {s3++;break;}
					else if(s==se[i].num &&i==5) {s4++;break;}
					else if(s==se[i].num &&i==6) {s5++;break;}
					else if(s==se[i].num &&i==7) {s6++;break;}
					else if(s==se[i].num &&i==8) {s7++;break;}
					else if(s==se[i].num &&i==9) {s8++;break;}
					
					
				}
				printf("There is still %d yuan left\n",sum );
				
				printf("Please select the goods serial number:");
				scanf("%d",&s);
				sum1=sum-se[s-1].price ;   //最后一个商品钱不够
				if(sum1<0||s==-1) {printf("Not enough money!\n");break;}
				sum=sum1;
				
		}
		else printf("Not enough money!\n");
		
	}
	/*输出已购买商品名及数量*/
	if(s1!=0)	printf("%s:%d\n",se[0].name ,s1);
	if(s2!=0)	printf("%s:%d\n",se[3].name ,s2);
	if(s3!=0)	printf("%s:%d\n",se[4].name ,s3);
	if(s4!=0)	printf("%s:%d\n",se[5].name ,s4);
	if(s5!=0)	printf("%s:%d\n",se[6].name ,s5);
	if(s6!=0)	printf("%s:%d\n",se[7].name ,s6);
	if(s7!=0)	printf("%s:%d\n",se[8].name ,s7);
	if(s8!=0)	printf("%s:%d\n",se[9].name ,s8);
	if(sum>=0)	printf("change:%d yuan\n",sum);//输出余额
	
}

运行结果:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用c语言写一个自动售货机 的相关文章

  • SmartForms取消Word编辑器 恢复文本编辑器

    导语 在目前最新版本的 S 4 HANA 1909和2021版本中 SmartForms的文本编辑器改成了嵌套Word 而不是直接修改文本框的形式 这给很多电脑配置不是很高 或者Word兼容性有问题的开发带来了困难 下面说一下如何恢复到文本
  • Ruoyi用户菜单权限

    若依用户菜单权限 后端实现 首先如果想先要实现菜单权限 那么得现在后端添加一个与之对应的权限字段 这样就有权限字段了 前端实现 前端得需要调用这个权限字段的按钮 调用该权限字段的按钮 点击事件 接口请求 若依前端功能 这里得需要在ruoyi

随机推荐