饮料自动售货机模拟(小项目)

(注意:本人目前仅仅学习至C语言数组部分,仅作分享,不喜勿喷,谢谢!)

项目描述:该项目模拟饮料自动售货机的销售过程。顾客先投币,系统显示投币金额。

接下来顾客选择要购买的饮料,如果投币金额足够并且所购饮料存在,则提示用户取走饮料,同时找零。

如果投币金额不足,显示提示信息。如果所购饮料已经售完,显示售完信息。

实现功能:

 ① : 只接受 10 元、5 元、2 元、1 元和 0.5 元的纸币和硬币。

② : 顾客一次只能投入上述一种金额的纸币或硬币,当用户重复投入时货币金额累加。

③ : 销售饮料包括 5 种:可口可乐(2 元)百事可乐(2 元)橙汁(3 元) 咖啡(5 元) 纯净水(1.5 元)。

④ : 系统通过必要的提示信息,提示用户完成相应的操作。

⑤ : 若顾客购买的饮料已经售完,则进行提示并询问用户是否购买其它饮料。

⑥ : 完成一次售卖后,系统自动结算找零

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	char category = 0;//category类别(用于给饮料分类)
	float money = 0;//投入的钱的面额
	float Sum = 0;//投入售卖机的总金额
	float sum = 0;//购买饮料后的余额
	int i = 1;//定义i为库存,赋初始值为1
	int userInput;//userInput_用户,对其定义,用于客户多次进行购物
	printf("	****************************************欢迎使用饮料自动售货机:****************************************\n\n");
	printf("					     商品:A 可口可乐  ( 2元 )\n");
	printf("					           B 百事可乐  ( 2元 )\n");
	printf("					           C 橙汁      ( 3元 )\n");
	printf("					           D 咖啡      ( 5元 )\n");
	printf("					           E 纯净水    (1.5元)\n");
	while (1) {//重复 输入/执行 以下代码
		Sum = 0;//清空之前投币记录
		do//利用 do...while 语句使得用户可多次投入money
		{
			printf("注意!投币完成请按 0 进行确认\n");
			printf("请投入硬币或纸币(只接受 10元、5元、2元、1元和0.5元的纸币和硬币!):");
			scanf("%f", &money);
			if (money == 10) {//计算客户投入的面额
				Sum = Sum + money;
				printf("总投入Sum:%.2f\n\n", Sum);//客户目前投入的总金额
			}
			else if (money == 5) {
				Sum = Sum + money;
				printf("总投入Sum:%.2f\n\n", Sum);//小数点'.'前面的数字是表示字符串总长度,2表示小数点后的位数
			}
			else if (money == 2) {
				Sum = Sum + money;
				printf("总投入Sum:%.2f\n\n", Sum);
			}
			else if (money == 1) {
				Sum = Sum + money;
				printf("总投入Sum:%.2f\n\n", Sum);
			}
			else if (money == 0.5) {
				Sum = Sum + money;
				printf("总投入Sum:%.2f\n\n", Sum);
			}
			else if (money == 0) {
				printf("投币完成,即将进入选购饮料!\n\n");
				break;
			}
			else {
				printf("不支持此面额!请重新投入可识别的货币!\n\n");
			}
		} while (money);//条件判断语句,true则返回循环,false则执行下面

		printf("请选择你需要购买的饮料:");
		scanf("%d", &category);
		category = getchar();//获取一个字符 category,读取缓冲区里的内容
		switch (category)
		{
		case'A': {
			if (Sum >= 2) {
				if (i >= 2) {
					//限定饮料自动售卖机里面只有一瓶,如果买此饮料第二次则表示售完
					//饮料剩余量可根据实际来更改,不仅仅为1
					printf("饮料已经售完\n"); break;
				}
				else {
					sum = Sum - 2;
					printf("可口可乐,找零:%.2f元,请收好饮料和零钱,欢迎再次光临!\n", sum);
					i++;//购买的数量自增,也可理解为库存 -1
					break;
				}
			}
			else {
				printf("投币金额不足,请投币!\n");
				break;
			}
		}
		case'B': {
			if (Sum >= 2) {
				if (i >= 2) {
					printf("饮料已经售完\n"); break;
				}
				else {
					sum = Sum - 2;
					printf("百事可乐,找零:%.2f元,请收好饮料和零钱,欢迎再次光临!\n", sum);
					i++;
					break;
				}
			}
			else {
				printf("投币金额不足,请投币!\n");
				break;
			}
		}
		case'C': {
			if (Sum >= 3) {
				if (i >= 2) {
					printf("饮料已经售完\n"); break;
				}
				else {
					sum = Sum - 3;
					printf("橙汁,找零:%.2f元,请收好饮料和零钱,欢迎再次光临!\n", sum);
					i++;
					break;
				}
			}
			else {
				printf("投币金额不足,请投币!\n");
				break;
			}
		}
		case'D': {
			if (Sum >= 5) {
				if (i >= 2) {
					printf("饮料已经售完\n"); break;
				}
				else {
					sum = Sum - 5;
					printf("咖啡,找零:%.2f元,请收好饮料和零钱,欢迎再次光临!\n", sum);
					i++;
					break;
				}
			}
			else {
				printf("投币金额不足,请投币!\n");
				break;
			}
		}
		case'E': {
			if (Sum >= 1.5) {
				if (i >= 2) {
					printf("饮料已经售完\n"); break;
				}
				else {
					sum = Sum - 1.5;
					printf("纯净水,找零:%.2f元,请收好饮料和零钱,欢迎再次光临!\n", sum);
					i++;
					break;
				}
			}
			else {
				printf("投币金额不足,请投币!\n");
				break;
			}
		}
		}
		printf("是否继续购买东西?是:Y/y  否:N/n!\n");
		while (getchar() != '\n');//清空缓冲区 \n
		userInput = getchar();//userInput_用户__输入
		if (userInput == 'n' || userInput == 'N') {
			break;
		}
	}
	return 0;
}

  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小林同学7319

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值