用C语言实现自动售货机

自动售货机

如图所示的简易自动售货机,物品架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);//输出余额
    
}

运行结果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C语言实现查询自动售货机中的商品价格【实例分享】

    问题描述:假设自动售货机出售四种商品,在屏幕上显示以下菜单(编号和选项),用户可以连续查询商品的价格,当查询次数超过5次时,自动退出查询:不到5次时,用户可以选择退出.当用户输入编号1~4,显示相应的商品价格(保留1位小数):输入0,退出查询:输入其他编号,显示价格为0. int choice,i; double price; for(i=1;i<=5;i++){ //以下5行显示菜单 printf("[1]Select crisps\n"); //查询薯片价格 printf(&

  • C语言实现最全自动售货机

    拥有所有功能自动售货机C语言 主要功能:欢迎页面.通过文本文件读入货物信息.上货.卖货(包含找零,付款不足等多种情况).增加新品种.按单价从高到低排序.按序号排序.退出前将所有货物信息回写进文本文档 实际代码非常简单 使用环境 VS2017编译运行正常;DEV C++删除第一行(#define _CRT_SECURE_NO_WARNINGS) 注意事项 1.第一次使用需要进入系统维护录入所有信息.2.在使用时会在桌面创建一个文本文件记录数据,下次运行也会有数据.3.录入数据时一定注意按照系统提示

  • C语言实现自动售货机

    本文实例为大家分享了C语言实现自动售货机的具体代码,供大家参考,具体内容如下 如图所示的简易自动售货机,物品架1.2上共有10样商品,按顺序进行编号分别为1-10,标有价格与名称,一个编号对应一个可操作按钮,供选择商品使用.如果物架上的商品被用户买走,储物柜中会自动取出商品送到物架上,保证物品架上一定会有商品.用户可以一次投入较多钱币,并可以选择多样商品,售货机可以一次性将商品输出并找零钱. 用户购买商品的操作方法: (1)从“钱币入口”放入钱币,依次放入多个硬币或纸币.钱币可支持1元(纸币.硬

  • 用C语言实现自动售货机

    自动售货机 如图所示的简易自动售货机,物品架1.2上共有10样商品,按顺序进行编号,分别为1-10.同时标有价格与名称,- 一个编号对应一个可操作按钮,供选择商品使用.如果物架上的商品被用户买走,储物柜中会自动取出商品送到物架上,保证物品架上一定会有商品.用户可以一次投入较多钱币,并可以选择多样商品,售货机可以一次性将商品输出并找零钱. 用户购买方法: (1)放入钱币,用户可以以此放入多个纸币,面额可以是1元.2元.>5元.10元.售货机会统计总金额并显示.(2)依次输入要购买的产品,可购买多个

  • 通过C#实现自动售货机接口

    下面分几部分介绍C#实现自动售货机接口的方法,代码写的非常详细,不懂的地方有注释可以参考下. MachineJP类: 第1部分:串口初始化,串口数据读写 using System; using System.Collections.Generic; using System.IO.Ports; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using Syst

  • java实现自动售货机

    JAVA基础练手项目—自动售货机,供大家参考,具体内容如下 要求: 简易售货机 流程: [投币]—>[显示货物清单]—>[选择一个商品编号购买]—>[提示出货]—>[找钱] 功能要求: 1. 使用mysql数据库,将所有货物存储在数据库中(货物应至少具有编号.名称.数量.价格等基本信息,可自行增加其他属性以完善程序).2. 要有友好的客户提示,例如:请输入购买商品的编号.3. 清单要求包含每种商品的剩余数量.4. 出货后,可以选择[找钱],也可以选择[继续购买],而不直接找钱 以下

  • python实现自动售货机

    本文实例为大家分享了python实现自动售货机的具体代码,供大家参考,具体内容如下 自动售货机代码 while True:  n=input('请选择操作:')  if n=='r':    l=input('请输入货物数量:')    v=l.split('-')    numA1=int(v[0])    numA2=int(v[1])    numA3=int(v[2])    numA4=int(v[3])    numA5=int(v[4])    numA6=int(v[5])  

  • java实现饮料自助售货机

    本文实例为大家分享了java实现饮料自助售货机的具体代码,供大家参考,具体内容如下 ①用户类 import java.util.Scanner; //用户类 public class User  {     public static void main(String[] args)//主函数     {         Scanner sc = new Scanner(System.in);         shopping shopping = new shopping();//创建对象  

  • Python实现的一个自动售饮料程序代码分享

    写这个程序的时候,我已学习Python将近有一百个小时,在CSDN上看到有人求助使用Python如何写一个自动售饮料的程序,我一想,试试写一个实用的售货程序.当然,只是实现基本功能,欢迎高手指点,新手学习参考. 运行环境:Python 2.7 # encoding=UTF-8 loop=True money=0 while loop:     x = raw_input('提示:请投入金币,结束投币请按"q"键')     if x=='q':         if money==0:

  • C语言中自动隐式转换与类型强制转换实例分析

    本文通过一个C程序实例对C语言中自动隐式转换与类型强制转换的注意点进行深入分析,详情如下: 先看一个C程序: #include<stdlib.h> #include<stdio.h> #include<conio.h> double proc(int q){ int n; double sum,t;//本例的关键就在这几个变量的类型上 sum = 2.0; while(sum<=q){ t=sum; //sum = sum+(n+1)/n;//自动隐式转换 sum

随机推荐