【程序设计与实践】实验三:自动售货机

实验三:自动售货机

题目:

图所示为简易自动售货机,物品架1、2上共有10样商品,按顺序进行编号分别为1~10,标有价格与名称,如下图:
在这里插入图片描述用户购买商品的操作方法如下。
1.售货机物品架上共有10样商品依次编号1-10,标有名称与价格。
2.售货机接受1/2/5/10面值的硬/纸币,用户可以一次性投入多个硬币并选择多种商品,售货机将一次性将商品输出并找零。
3.投入钱币和选择商品皆以-1作为结束,若输入商品编号超出范围或余额不足将自动结束购物,输出购买商品,钱币总额和找零。
输入不需要空格,10请输入’0’,-1请输入’-’

输入输出示例:

输入:
1 1 2 2 5 5 10 10 -1 /钱币序列/
1 2 3 5 1 6 9 10 -1 /商品编号/

输出:
Total:36yuan, change:19 yuan
Table-water1:2
Table-water2:1
Table-water3:1
Milk:1
Beer:1
Oolong-Tea:1
Green-Tea:1

在这里插入图片描述

注释:

主要是熟悉关于switch()函数的相关用法;

下面贴的代码并不是正确解,使用了个十分奇葩的方法(……)请注意看售货机的使用方法(233);

附录(瞎搞的解答):

#include <stdio.h>
#include <iostream>
#include <conio.h>
#include <bits/stdc++.h>
using namespace std;
 
void jiemian(){
	printf("\n");
	printf("\n");
	printf("                     程序设计与实践        实验(三) 自动售货机\n");
	printf("\n");
	printf("      自动售货机使用方法\n");
	printf("     =============================                    \n");
	printf("\n     1.售货机物品架上共有10样商品依次编号1-10,标有名称与价格。\n");
	printf("     2.售货机接受1/2/5/10面值的硬/纸币,用户可以一次性投入多个硬币并选择多种商品,售货机将一次性将商品输出并找零。\n");
	printf("     3.投入钱币和选择商品皆以-1作为结束,若输入商品编号超出范围或余额不足将自动结束购物,输出购买商品,钱币总额和找零。\n"); 
	printf("       (输入不需要空格,10请输入'0',-1请输入'-')\n");
	printf("\n");
	printf("       1---Table-water1   	1 yuan       2---Table-water2   1 yuan\n");
	printf("       3---Table-water3 	1 yuan       4---Coca-Cola  	2 yuan\n");
	printf("       5---Milk   		2 yuan       6---Beer   	3 yuan\n");
	printf("       7---Orange-Juice   	3 yuan       8---Sprite   	3 yuan\n");
	printf("       9---Oolong-Tea   	4 yuan      10---Green-Tea   	4 yuan\n");\
	printf("\n");
}

int main(){
  	char *g[10]={"Table-water1",  "Table-water2",  "Table-water3",  "Coca-Cola", 
"Milk","Beer", "Orange-Juice", "Sprite", "Oolong-Tea", "Green-Tea"};/*定义指针数组,其中每个元素都是
一个字符指针,分别指向各商品名称*/ 
 	int price[10]={1,1,1,2,2,3,3,3,4,4}; /*各商品对应的价格*/ 
 	static int countp[10]; 
 	int change=0,t=0,*p=price,i;
 	char x,y;
  	int a[100],b[100],k;
  	jiemian(); 
  	printf(" Please enter a coin sequence:");
  	while(x!='-'){
  		x=getch();
  		switch(x){
  			case '1':
			  	t+=1;cout<<"1 ";break;
  			case '2':
			 	t+=2;cout<<"2 ";break;
  			case '5':
			  	t+=5;cout<<"5 ";break;
  			case '0':
			  	t+=10;cout<<"10 ";break;
			case '-':
				cout<<"-1";break;
  			default:break;
		}
	}
	cout<<endl<<endl<<" 总计投入金额:"<<t<<" yuan"<<endl;

	cout<<endl;
	change=t;
	printf(" Please enter a goods sequence:");
  	while(y!='-'){
  		y=getch();
  		if(change<*(p+(y-49))){
  			cout<<" 余额不足,结束购物。";
  			break;	
		}
  		switch(y){
  			case '1':
			  	cout<<"1 ";change-=*p;countp[0]++;break;
  			case '2':
			 	cout<<"2 ";change-=*(p+1);countp[1]++;break;
  			case '3':
			  	cout<<"3 ";change-=*(p+2);countp[2]++;break;
  			case '4':
			  	cout<<"4 ";change-=*(p+3);countp[3]++;break;
  			case '5':
			  	cout<<"5 ";change-=*(p+4);countp[4]++;break;
			case '6':
			  	cout<<"6 ";change-=*(p+5);countp[5]++;break;
			case '7':
			  	cout<<"7 ";change-=*(p+6);countp[6]++;break;
			case '8':
			  	cout<<"8 ";change-=*(p+7);countp[7]++;break;
			case '9':
			  	cout<<"9 ";change-=*(p+8);countp[8]++;break;
			case '0':
			  	cout<<"10 ";change-=*(p+9);countp[9]++;break;
			case '-':
				cout<<"-1";break;
  			default:
			  	cout<<" 商品编号超出范围 ";y='-';break;
		}
	}

/*输出总金额,应找回的金额*/ 
  	printf("\n\n Total: %d yuan , change: %d yuan\n",t,change); 
/*输出物品名称与数量*/ 
 	for(i=0;i<10;i++) { 
   		if(countp[i]>0) 
     		printf(" %s : %d \n",g[i],countp[i]);
 	}
 	printf("\n");
  	return 0;
}

  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
程序设计实践自动售货机是一个常见的项目,它模拟了一个自动售货机的运作逻辑。在实践中,我们可以使用Java等编程语言完成这个项目。 首先,我们需要定义自动售货机的各种商品和价格。通常,每个商品都会有一个唯一的ID、名称、价格和库存数量。在程序中,我们可以使用类或结构体来表示这些商品信息。 其次,我们需要设计自动售货机的用户界面。用户可以通过输入选择商品和数量,然后插入硬币或刷卡支付。我们可以使用图形界面或命令行界面实现这个用户界面。 接下来,我们需要编写程序逻辑来处理用户的选择和付款。当用户选择商品和数量后,程序应该检查是否有足够的库存。如果库存足够,程序应该计算出总价,并要求用户支付。如果用户支付的金额足够,程序应该完成交易并更新商品的库存数量。如果用户支付的金额不足,程序应该提示用户支付更多的金额或选择其他商品。 最后,我们还可以添加一些额外的功能来提升用户体验。例如,我们可以设计一个管理员界面,用于管理商品的添加、删除和修改。我们还可以记录每次交易的时间和金额,以便生成销售报告。 总之,程序设计实践自动售货机是一个综合性的项目,涵盖了商品定义、用户界面设计、程序逻辑编写等多个方面。通过这个项目的实践,我们可以提升自己的编程能力,并加深对软件开发过程的理解。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值