自动售货机C++程序设计

合集下载

PLC应用指令的运用—自动售货机控制程序设计

PLC应用指令的运用—自动售货机控制程序设计
梯形图
1、对于加法运算ADD的说明: ① 加法运算是代数运算。 ② 若相加结果为0,则零标志位M8020 = 1,可用来判断两个数是否相反数。 ③ 加法指令可以进行32位操作方式。例如,指令语句“DADD D0 D10 D20”的操作数构成如下图所示。
该指令可以进行连连续续//脉脉冲冲 执行方式。
图1 加法指令ADD的举例1
乘法 FNC22 MMULL 除法 FNC23 DDIIVV 操作数 [S1]、[S2]:K、H、KnX、KnY、KnM、KnS、T、C、D、V,Z [D]:KnY、KnM、KnS、T、C、D、V,Z
梯形图
二进制乘除运算指令说明
➢ 指令进行二进制运算,数据最高位为符号位。 ➢ 可以进行16/32位乘除运算,16位运算时,积为32位数据,商和余数为16位数据;32位运算时,
自动售货机控制程序
(一)I/O分配
表4-25 自动售货机I/O分配及软元件说明
输 输入继 电器
X0 X1 X2 X3 X4
X5

作用
1元投币 5元投币 10元投币 雪碧选择 可乐选择
退币按钮

输出继电器
Y1 Y2 Y3 Y4 Y5 Y16~Y10 Y26~Y20

控制对象
雪碧指示 可乐指示 雪碧出口 可乐出口 退币口
(一)使用乘除运算指令实现8盏流水灯控制程序
1.控制要求
用乘除法指令实现8盏流水灯的移位点亮循环。有 一组灯8个,接于Y7~Y0,要求: 当X0=ON时,灯正序每隔1s单个移位,接着,灯反序每 隔1s单个移位并不断循环。
2.程序设计
停车场车位控制
(一)停车场车位控制程序
1.控制要求 (1)在入口和出口处装设 检测传感器,用来检测车 辆进入和出去的数目; (2)尚有车位时,入口栏 杆才可以将门开启,让车 辆进入停放,并有绿灯指 示尚有车位;

自动售货机系统-《C语言程序设计》课程设计报告

自动售货机系统-《C语言程序设计》课程设计报告
money.yy=200;
money.wy=50;
money.sy=0;
a.xsje=a.sc*2;
b.xsje=b.sc*3;
c.xsje=c.sc*6;
fp=fopen("jilu.txt","a");
do{printf("\t^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^\n");
结算功能:取出今天所有的10元纸币,并且分别设置零钞的数目
销售界面:顾客投入纸币,选择商品,获得商品和零钱;或者直接显示错误并退还纸币
【题目要求】
(1)为各项操作功能设计一个菜单。应用程序运行后,先显示这个菜单,然后操作员通过菜单项选择希望进行的操作项目;
(2)你的售货机用户不希望每一位顾客都有权限执行以上功能,因此一旦进入销售界面,就不应当退回到系统界面,但是应允许顾客反复购买,前一个顾客购买完毕后应停留在销售界面里允许下一个顾客操作。直到某位特殊的顾客(超级顾客)输入特殊的商品代号(密码)方可回到主控界面。
在自动售货机系统中,数据的固化采用.out文件格式进行储存。
关键词:计算机自动售货机储存
1 设计内容和要求
某公司请你为其生产的自动售货机编写软件。这种无人值守自动售货机贩卖价值为A、B、C的三种商品,价格分别为2元,3元和6元。顾客投入10元的纸币,然后选择购买3种商品之一,自动售货机吐出商品,并且找给用户零钱。如果商品已经卖完,或者无法找零,则给出用户一个提示,商品已售完,并且退还纸币。
7月4日9:00~12:00学生课程设计答辩,14:00~17:00学生提交课程设计报告

参考资料

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

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

C语⾔实现最全⾃动售货机拥有所有功能⾃动售货机C语⾔主要功能:欢迎页⾯、通过⽂本⽂件读⼊货物信息、上货、卖货(包含找零,付款不⾜等多种情况)、增加新品种、按单价从⾼到低排序、按序号排序、退出前将所有货物信息回写进⽂本⽂档实际代码⾮常简单使⽤环境VS2017编译运⾏正常;DEV C++删除第⼀⾏(#define _CRT_SECURE_NO_WARNINGS)注意事项1.第⼀次使⽤需要进⼊系统维护录⼊所有信息.2.在使⽤时会在桌⾯创建⼀个⽂本⽂件记录数据,下次运⾏也会有数据.3.录⼊数据时⼀定注意按照系统提⽰,⼀定要先输⼊编号再进⾏创建新的品种,可以输⼊中⽂名称,如农夫⼭泉.//初次使⽤请进⾏系统维护并录⼊商品信息#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#define SIZE 100000#include<string.h>#include<stdlib.h>#include<conio.h>//货物数据结构struct huowu{int n; //编号char name[10]; //名称int Price; //价格int Maths; //剩余数量}s[SIZE];/*录⼊数据*/void finput(){FILE *fp;int i, t, x = 1;fp = fopen("fs+", "w"); //printf("已进⼊重新录⼊数据界⾯,之前数据将被清除!\n\n请按提⽰输⼊编号\n");for (i = 0; i < SIZE; i++){printf(" 第%d个请输⼊编号(请与左⽅编号⼀致,按回车键进⼊下⼀步,当输⼊i=-1时,完成录⼊商品信息)\n", x++);//需要逐⼀⼿动先输⼊编号scanf("%d", &t);i = t;if (i == -1){fclose(fp);return;}else{i = t - 1;printf("请输⼊名称价格及添加的库存,⽤空格间隔开,按回车键继续\n");scanf("%s %d %d", &s[i].name, &s[i].Price, &s[i].Maths);s[i].n = i + 1;fwrite(&s[i], sizeof(struct huowu), 1, fp);}}fclose(fp);}/*输出数据*/void flist(){FILE *fp;printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");printf(" 列表\n");printf("-----------------------------------------------------------\n");printf("序号名称价格库存 \n");printf("-----------------------------------------------------------\n");for (i = 0; fread(&s[i], sizeof(struct huowu), 1, fp) == 1; i++){printf("%d%18s%16d%16d\n", s[i].n, s[i].name, s[i].Price, s[i].Maths); }printf("-----------------------------------------------------------\n\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");fclose(fp);}/*修改数据*/void fchange(){FILE *fp;int k;fp = fopen("fs+", "r");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");printf(" 列表\n");printf("-----------------------------------------------------------\n");printf("序号名称价格库存 \n");printf("-----------------------------------------------------------\n");for (k = 0; fread(&s[k], sizeof(struct huowu), 1, fp) == 1; k++){printf("%d%18s%16d%16d\n", s[k].n, s[k].name, s[k].Price, s[k].Maths); }printf("-----------------------------------------------------------\n\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");int i, n;int flag = 0;printf("请输⼊要修改商品的序号:");scanf("%d", &n);for (i = 0; i <= SIZE; i++)if (s[i].n == n){printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf(" 列表\n");printf("-----------------------------------------------------------\n");printf("序号名称价格\n");printf("-----------------------------------------------------------\n");printf("%d%32s%25d\n", s[i].n, s[i].name, s[i].Price);printf("-----------------------------------------------------------\n\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); n = i;flag = 1;break;}if (flag == 0){printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");printf(" 输⼊错误!\n");printf(" 请重新选择!\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");return;}printf("\n\n\n");fp = fopen("fs+", "r+");fseek(fp, n * sizeof(struct huowu), 0);printf("请输⼊新的名称价格:");scanf("%s%d", s[i].name, &s[i].Price);fwrite(&s[i], sizeof(struct huowu), 1, fp);fclose(fp);fp = fopen("fs+", "r");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");printf(" 列表\n");printf("-----------------------------------------------------------\n");printf("序号名称价格\n");printf("-----------------------------------------------------------\n");for (i = 0; fread(&s[i], sizeof(struct huowu), 1, fp) == 1; i++){printf("%d%28s%28d\n", s[i].n, s[i].name, s[i].Price);printf("-----------------------------------------------------------\n\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");fclose(fp);}/* 排序*/void ftaxis(){int i, j, n;FILE *fp;struct huowu t;fp = fopen("f.s+", "r");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");printf(" 列表\n");printf("-----------------------------------------------------------\n");printf("序号名称价格\n");printf("-----------------------------------------------------------\n");for (i = 0; fread(&s[i], sizeof(struct huowu), 1, fp) == 1; i++){printf("%d%28s%28d\n", s[i].n, s[i].name, s[i].Price);}printf("-----------------------------------------------------------\n\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");fclose(fp);n = i;for (i = 0; i < n; i++)for (j = i + 1; j < n; j++)if (s[i].Price < s[j].Price){t = s[i];s[i] = s[j];s[j] = t;}fp = fopen("fss+", "w");printf("\n\n\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");printf(" 列表 \n");printf("-----------------------------------------------------------\n");printf("序号名称价格\n");printf("-----------------------------------------------------------\n");for (i = 0; i < n; i++){fwrite(&s[i], sizeof(struct huowu), 1, fp);printf("%d%28s%28d\n", s[i].n, s[i].name, s[i].Price);}printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");fclose(fp);}//添加库存int fadd(){FILE *fp;int i, num, n;int flag = 0;printf("请输⼊要补货商品的序号:");scanf("%d", &n);for (i = 0; i <= SIZE; i++)if (s[i].n == n){printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf(" 列表\n");printf("-----------------------------------------------------------\n");printf("序号名称库存\n");printf("-----------------------------------------------------------\n");printf("%d%8s%8d\n", s[i].n, s[i].name, s[i].Maths);printf("-----------------------------------------------------------\n\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); n = i;flag = 1;break;}if (flag == 0)printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");printf(" 输⼊错误!\n");printf(" 请返回!\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");return 0;}printf("\n\n\n");fp = fopen("fs+", "r+");fseek(fp, n * sizeof(struct huowu), 0);printf("请输⼊添加后此商品总个数");scanf("%d", &s[i].Maths);fwrite(&s[i], sizeof(struct huowu), 1, fp);fclose(fp);fp = fopen("fs+", "r");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");printf(" 列表\n");printf("-----------------------------------------------------------\n");printf("序号名称库存\n");printf("-----------------------------------------------------------\n");for (i = 0; fread(&s[i], sizeof(struct huowu), 1, fp) == 1; i++){printf("%d%8s%8d\n", s[i].n, s[i].name, s[i].Maths);}printf("------------------------补货完成-------------------------\n\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");fclose(fp);}/*内部操作systeam*/int neibu(){system("cls");int n;for (;;){printf("\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf("※※\n");printf("※欢迎进⼊⾃动售货机(内部) ※\n");printf("※※\n");printf("※※\n");printf("※主菜单※\n");printf("※※\n");printf("※▲1.重新所有录⼊数据▲※\n");printf("※▲2.展⽰商品信息▲※\n");printf("※▲3.补充库存▲※\n");printf("※▲4.修改数据▲※\n");printf("※▲5.按照价格排序并⽣成另⼀个⽂件▲※\n");printf("※▲6.退出系统▲※\n");printf("※※\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n\n"); printf("请输⼊选择项(1-6):");scanf("%d", &n);printf("\n\n\n\n");if (n > 0 && n < 8){switch (n){case 1:finput(); break;case 2:flist(); break;case 3:fadd(); break;case 4:fchange(); break;case 5:ftaxis(); break;case 6:printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");printf("※※\n");printf("※谢谢使⽤! ※\n");printf("※再见! ※\n");printf("※※\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");system("pause");system("cls"); //清空屏幕return 0;// exit(0);}else{printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");printf("※※\n");printf("※输⼊错误! ※\n");printf("※请退出! ※\n");printf("※※\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");break;}}system("cls"); //清空屏幕}/*购买*/void buy(){FILE *fp;int i;system("cls");fp = fopen("fs+", "r");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");printf(" 列表\n");printf("-----------------------------------------------------------\n");printf("序号名称价格库存 \n");printf("-----------------------------------------------------------\n");for (i = 0; fread(&s[i], sizeof(struct huowu), 1, fp) == 1; i++){printf("%d%18s%16d%18d\n", s[i].n, s[i].name, s[i].Price, s[i].Maths); }printf("----------------请输⼊需要的商品按回车继续-----------------\n");printf("-----------------------------------------------------------\n\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");int num, n, B = 1;float money = 0.0, m = 0;int flag = 0;restar:printf("请输⼊要购买商品的序号:");scanf("%d", &n);for (i = 0; i <= SIZE; i++)if (s[i].n == n){printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf("-----------------------------------------------------------\n");printf("序号名称价格\n");printf("-----------------------------------------------------------\n");printf("%d%30s%26d元\n", s[i].n, s[i].name, s[i].Price);printf("-----------------------------------------------------------\n\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); n = i;flag = 1;break;}if (flag == 0){printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf(" 输⼊错误!\n");printf(" 请返回!\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); return;}printf("\n\n\n");fp = fopen("fs+", "r+");fseek(fp, n * sizeof(struct huowu), 0);s[i].Maths = s[i].Maths - 1;fwrite(&s[i], sizeof(struct huowu), 1, fp);fclose(fp);fp = fopen("fs+", "r");if (s[i].Maths <= 0){printf("存货不⾜,请购买其他商品!\n");s[i].Maths = 0;goto restar;}printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");printf("-----------------------------------------------------------\n");printf(" 请⽀付 %d 元(仅限⼀元以上⾯额)\n", s[i].Price);printf("-----------------------------------------------------------\n\n");printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");while (B){scanf("%f", &money);m += money;if (m < s[i].Price){printf("⾦额不⾜,请继续⽀付\n\n");}if (m == s[i].Price){printf("付款成功\n\n");B = 0;break;s[i].Maths = s[i].Maths - 1;}if (m > s[i].Price){money = m - s[i].Price;printf(" 付款成功,找零%f请您收好\n\n\n\n 欢迎下次使⽤\n\n\n", money);B = 0;break;s[i].Maths = s[i].Maths - 1;}}fclose(fp);system("pause");}//主函数int main(){char sr;//定义电脑接受的字符system("color F0");start://起始位置system("cls");printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");printf("※欢迎使⽤⾃动售货机(初始试⽤版)※\n");printf("※※\n");printf("※请输⼊选项※\n");printf("※ a.⽤户购买※\n");printf("※ b.系统维护※\n");printf("※※\n");printf("※按回车继续。

2023修正版自动售货机C++程序设计

2023修正版自动售货机C++程序设计

自动售货机C++程序设计自动售货机C++程序设计简介自动售货机是一种智能化设备,可以为用户提供各种商品的购买服务。

本文将介绍如何使用C++语言设计一个简单的自动售货机程序。

程序结构类设计我们将使用面向对象的方式设计自动售货机程序。

在程序中,我们将创建以下几个类:1. 商品类 (Product):用于表示售货机中的商品,包含名称、价格等属性。

2. 售货机类 (VendingMachine):用于管理售货机的机制,包括商品的存储、购买过程等。

3. 用户类 (User):用于表示用户,包含购买商品等操作。

类之间的关系在程序中,售货机类将包含商品类的对象,并与用户类进行交互。

用户可以通过售货机类购买商品。

类的实现商品类 (Product)首先,我们定义商品类,它包含以下成员变量:cppclass Product {private:std::string name; // 商品名称double price; // 商品价格public:// 构造函数Product(std::string n, double p) : name(n), price(p) {}// 获取商品名称std::string getName() {return name;}// 获取商品价格double getPrice() {return price;}};商品类有一个构造函数,用于初始化商品的名称和价格。

通过getName()和getPrice()方法可以获取商品的名称和价格。

售货机类 (VendingMachine)接下来,我们定义售货机类。

这个类将包含商品类的对象,并实现购买商品的过程。

cppclass VendingMachine {private:std::vector<Product> products; // 售货机中的商品列表public:// 添加商品void addProduct(Product product) {products.push_back(product);}// 购买商品bool buyProduct(std::string productName, double &change) {for (Product &p : products) {if (p.getName() == productName) {if (change >= p.getPrice()) {change -= p.getPrice();return true;} else {return false;}}}return false;}};售货机类有一个属性`products`,用于存储售货机中的商品列表。

C语言自动售货机代码

C语言自动售货机代码

#include <stdio.h>#include <stdlib.h>#include <string.h>void GetltemName(char *item, FILE *file);int GetltemPrice(FILE *file);void AcceptMoney(int price);//symbolic constant definitions#define CAPACITY 10 //max number itemavailable to vendint main(void){char name[CAPACITY][20]={0};int price[CAPACITY]={0};FILE *stockfile;int i,Nitems,choice;int listend;stockfile=fopen("pricelist.txt","r");if(stockfile==NULL){printf("Error initialising vend:pricelist.txt not opened");}else{//read stock from filelistend=0;Nitems=0;do{price[Nitems]=GetltemPrice(stockfile);GetltemName(name[Nitems],stockfile);if(price[Nitems]>0){Nitems++;}else{listend=1;}}while(Nitems<CAPACITY&&!listend);//print menuprintf("***Menu***\n");for(i=0;i<Nitems;i++){printf("\n%d:%20s:%dp",i,name[i],price[i]);}//request selectionprintf("\n\n");do{printf("Please make your chioce(enter CTRL-C to quit);");scanf("%d",&choice);}while(choice<0||choice>Nitems-1);printf("%s seleted.\n",name[choice]);AcceptMoney(price[choice]);printf("\nEnjoy your %s.\n",name[choice]);}fclose(stockfile);return 0;}void GetltemName(char *item,FILE *file){int len;if(feof(file)){item[0]='\0';}else{fgets(item,20,file);len=strlen(item);if(item[len-1]=='\n'){item[len-1]='\0';}}}void AcceptMoney(int price){int money=0,coin,left;printf("Please pay %d p. 10p,5p,2p,1p accepted. No change given.\n\n",price);do{left=price;printf("Price: %d, paid: %d, to pay: %d,",price,money,left);do{printf("please enter coin:\n");scanf("%d",&coin);}while(coin!=1&&coin!=2&&coin!=5&&coin!=10);money=money+coin;left=price-money;}while(left>0);printf("%d p paid. Thank you.",money);}int GetltemPrice(FILE *file){ int j;if(feof(file)){j='\0';}else{fscanf(file,"%d",&j);}return j;}COMMODITY FILE : pricelist.txt40Mars Bar40Toffee Crisp30Kit Kat25Toblerone40bounty50Topic。

自动饮料售货机(C语言程序设计)

自动饮料售货机(C语言程序设计)

源码在后面! 一、需求分析本程序为饮料自动售货机的程序,能实现饮料的自动销售,并采用文件的形式记录购买数据,能起到节约人力、减少成本的目的。

二、总体设计本设计主要分为两大系统(顾客购买以及管理员管理系统)以及放于d 盘中“饮料.txt ”的文件系统,每个系统分别执行一些特定的功能。

如下图所示:图一 总体设计概念图三、详细设计3.1 管理员模块管理员是自动售货机系统中权限最高的用户。

在管理员工作模式下,管理员可以进行货物进行补充操作、商品库存信息查询、销售额信息查询、切换到销售界面几大操作。

自动饮料售货机顾客购买系统管理员管理系统选择饮料投币找币记录数据登录界面查询销售额查询剩余数量补货管理员模块的功能结构图,如下:图3.1 管理员操作流程图3.2 顾客购买模块用户模块主要是销售商品的界面。

销售商品的整个过程是,用户投入货币,然后输入商品代号,然后进行找零等操作,最后放出商品,完成交易。

下面来看一下用户模块的流程。

管理员输入密码选择商品库存信息查询销售额信息查询货物补充操作结束图3.2 顾客购买饮料流程图四、系统调试分析它的的任务是尽可能彻底地检查出程序中的错误,提高软件系统的可靠性,其目的是检验系统”做得怎样?”。

这阶段又可分为三个步骤:模块测试,测试每个模块的程序是否有错误;组装测试,测试模块之间的接口是否正确:确认测试,测试整个软件系统是否满足用户功能和性能的要求。

该阶段结束应交付测试报告,说明测试数据的选择,测试用例以及测试结果是否符合预期结果。

测试发现问题之后要经过调试找出错误原因和位置,然后进行改正。

是基于系统整体需求说明书的黑盒类测试,应覆盖系统所有联合的部件。

系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不相符合或与之矛盾的地方。

4.1 系统启动主界面如图,由用户选择执行某一个操作。

用户选择投币饮料d饮料a......饮料d饮料和零钱图4.1系统启动主界面图4.2 顾客购买饮料操作测试在主界面下,输入口令“1”,进入购买饮料模块。

c语言自动售货机实验报告

c语言自动售货机实验报告

课程设计课程名称 C 语言高级程序设计学院xxx小组成员1XXX小组成员2XXX小组成员3XXX任课教师XXX2016——2017学年第1学期一.所选题目与要求自动售货机问题情景:分析学校教学楼自动售货机的功能,设计一个自动售货系统。

功能要求:1. 系统能提供所售商品的清单(编号,名称,单价,数量)2. 客户输入商品编号及购买数量,系统显示应付的金额,输入客户实付的钱数,系统计算应找的钱数系统如果没有足够的库存或零钱时,现实应返还客户已付的金额。

(不考虑用支付宝付款的情况)3. 可增加商品种类,增加商品库存,查询商品库存,查询商品销售量及销售额。

成果要求:通过网络教学平台中的“研究型教学”建立分组,每组2-3人,通过小组讨论,确定每人的分工,并确定系统设计方案。

各小组成员在网络教学平台上进行讨论、并完成最终的报告,整个过程作为小组及个人工作评价的重要依据。

各小组成员根据系统设计方案分模块进行编程,在系统各模块编码完成后集成调试,并最终完成整个系统的测试。

根据下面的报告模板完成综合实验总结报告,并打印成纸质报告,作为大作业课程结束时上交。

附:综合实验总结报告应包含的内容:1. 系统功能说明2. 程序结构程序结构说明重要数据说明函数清单/* 每个函数的书写格式 */函数名:所在文件名函数功能参数说明算法描述或程序代码3. 系统运行结果4. 系统设计难点及其解决方法5. 不足之处6. 人员分工说明二.问题分析及算法设计主函数void main() //主函数模块{do{system("pause");show(); //显示屏幕函数,商品清单loop1:printf("现在你有%.1f元\n你可以选择商品序号开始选购或按0 退出\n",M);input(); //输入函数if(M-goods[n-1].price>v) {t=0;printf("对不起,售货机没有足够的零钱了\n谢谢光临!退还%.1f元\n",M);break;} //判断售货机是否有足够的零钱,0表无if(n==0){ //确认用户是选择离开还是买东西开始购买t=1;change(M);} //找零函数else {loop2:sell(n,M,1,1); //购买函数if(A==0)//货没有了怎么办input(); //输入函数………………………………………………………………………..if(n==0) //没货离开change(M); //找钱函数else //继续购买其它商品{……………………………………………goto loop2;返回至购买函数} //else} //ifelse if(B==0)//没钱了怎么办{…………………………………..if(m1==0) //离开change(M);返回至找零函数else //加钱{…………………………………………..goto loop1;返回至再次购买} //else} //else ifelse//有钱又有货,继续选goto loop1;返回至购买程序} //else}while(1);} //main结构体定义struct goods//定义物品清单{int number;char name[10];float price;int quantity;}goods[9]={{1,"可口可乐",3,5},{2,"拿铁咖啡",4,5},{3,"橙汁",3,5},{4,"奶茶",4,5},{5,"雪碧",2.5,5},{6,"矿泉水",2,5},{7,"椰子汁",2.5,5},{8,"格瓦斯",3,5}};struct money//定义钱的种类,数量用于记录找零的某值张数{float moneys;int mount;}money[2]={{1,0},{0.5,0}};被调用的函数float show() //显示模块--屏幕{……………………………}int input() //输入模块{…………………………..}}int sell(int n,float m,int a,int b) //出售模块n为序号,m钱,{……………………………if(goods[i].quantity>0) //表示有货{………………………………..}elseA=0; //表示没货了}elseB=0; //表示没钱了if(M==0) B=0;//判断出钱已用光return(a);return(b);}void change(float m) //找钱模块{……………………………switch(a){case 1花光…………………………………….case 2:找零……………………………………………………………………………}}三.程序源代码#include<stdio.h>#include<conio.h>float M;//M为投入的钱数int A=1,B=1,t; //A为数量标记,B为金钱标记,1表示有,0表示没有,t用于标记售货机是否能完成退款int i,n,v=100; //i用于循环显示商品列表,n用于记录输入的货号,v用于保存售货机内可以找零的钱数,初设为v=100//结构体定义struct goods //定义物品清单{int number;char name[10];float price;int quantity;}goods[9]={{1,"可口可乐",3,5},{2,"拿铁咖啡",4,5},{3,"橙汁",3,5},{4,"奶茶",4,5},{5,"雪碧",2.5,5},{6,"矿泉水",2,5},{7,"椰子汁",2.5,5},{8,"格瓦斯",3,5}};struct money //定义钱的种类,数量用于记录找零的某值张数{float moneys;int mount;}money[2]={{1,0},{0.5,0}};float show() //显示模块--屏幕{system("pause");putch('\n');for(i=0;i<8;i++){printf(" |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");printf(" |%d%8s%7.1f元...剩余%7d|\n",goods[i].number,goods[i].name,goods[i].price,goods[i].quantity);} printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf("购买东西前,请投入money!(支持1元,5元,10元和20元)\n《温馨提示,投入money过多可能无法完成退币》\n");scanf("%f",&M);return M;}int input() //输入模块{for(;;){scanf("%d",&n);if(n<0||n>8)printf("输入错误,请重新输入商品序号开始选购或按0 退出\n");else {return n;break;}}}int sell(int n,float m,int a,int b) //出售模块n为序号,m钱,{int i=0;while(n!=goods[i].number) i++;if(m>=goods[i].price){if(goods[i].quantity>0){goods[i].quantity--;M=m-goods[i].price;for(i=0;i<8;i++){printf(" |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");printf(" |%d%8s%7.1f元...剩余%7d|\n",goods[i].number,goods[i].name,goods[i].price,goods[i].quantity);} printf(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf("你的商品%d %s 已经出货了\n",goods[n-1].number,goods[n-1].name);}elseA=0; //表示没货了}elseB=0; //表示钱了if(M==0) B=0;//判断出钱已用光return(a);return(b);}void change(float m) /钱模块{int i,a;//用于辅助输出if(m==0) a=1;if(m!=0.0&&t!=1) a=2;switch(a){case 1:printf("钱用光了哦\n谢谢光临!");break;case 2:{for(i=0;i<2;i++)if(money[i].moneys<=m){m=m-money[i].moneys;money[i].mount++;i--;}//继续检索当前的面额是否符合条件,才会有相同面值出现printf(" 谢谢光临!\n找零\n");for(i=0;i<2;i++)if(money[i].mount>0)printf("%d张%.1f元\t\n",money[i].mount,money[i].moneys);m=0;M=0;};money[0].mount=0;break;}}void main() //主函数模块{do{int t=1; //用于标记售货机是否能完成退款,1表能float m1; //m1用于记录用户再次加的钱show(); //显示--屏幕loop1:printf("现在你有%.1f元\n你可以选择商品序号开始选购或按0 退出\n",M);input(); //输入函数if(M-goods[n-1].price>v) {t=0;printf("对不起,售货机没有足够的零钱了\n 谢谢光临!退还%.1f元\n",M);break;} //判断售货机是否有足够的零钱,0表无if(n==0){ //确认用户是选择离开还是买东西开始购买t=1;change(M);} /零函数else {loop2:sell(n,M,1,1);if(A==0)//货没有了怎么办{printf("可惜了,商品%d 已卖完了\n你还有%.1f元\n你可以买其它商品(直接输入商品序号)或按0 离开\n",n,M);input(); //输入函数if(n==0)change(M); /钱函数else{A=1;B=1;//要将标记归位goto loop2;} //else} //ifelse if(B==0)//没钱了怎么办{printf("噢,,,没钱了,你可以继续投入money购买,或按0 离开\n");scanf("%f",&m1);if(m1==0)change(M);else{M=M+m1;A=1;B=1;//标记要归位goto loop1;} //else} //else ifelse//有钱又有货,继续选goto loop1;} //else}while(1);} //main四.系统功能及运行效果图一,系统提供商品清单,并提示购买前投入money二,如果用户投入的money过多,售货机无足够硬币完成退币,自动退还用户已付金额三,用户投入money购买,确定购买商品后,系统显示如下。

自动售货机源代码课程设计

自动售货机源代码课程设计

#include <iostream>#include <string>#include<stdlib.h>using namespace std;class moneycounter{public:moneycounter()//初始化{input_money=0.0;}~moneycounter(){}void getmoney();提醒顾客投币float money_from_buyer();投币金额void clear();//清空,准备下一轮投币private:float input_money;//顾客投入旳金额};class goodsinfo{public:goodsinfo(){name="";price=0.0;total=0;}~goodsinfo(){}void set_goods(string,float,int);string goods_name();float goods_price();int goods_number();private:string name;float price;int total;};class drinkmachine{public:drinkmachine();~drinkmachine(){}void showchoices();//显示饮料信息void inputmoney();获取顾客投入旳钱币bool goodsitem(int);//检查饮料旳状态void return_allmoney();返回钱数void return_money();void deal_money(int select);private:moneycounter moneyctr;goodsinfo v_goods[5];};static float change;void moneycounter::getmoney(){float money;cout<<endl<<"请投入钱币。

基于PLC的自动售货机控制系统的设计

基于PLC的自动售货机控制系统的设计

基于PLC的自动售货机控制系统的设计随着科技的不断发展,自动售货机得以广泛应用于日常生活中。

自动售货机控制系统的设计对于自动售货机的稳定运行和高效营业至关重要。

PLC技术能够提供一个高效的解决方案,本文将详细介绍基于PLC的自动售货机控制系统的设计。

一、需求分析在开始设计控制系统前,我们需要先对自动售货机进行需求分析,以确定控制系统的具体需求。

1. 货品选择功能:控制系统需要根据用户选择的货品类型来带动货道机构,将相应的货品送到出货口。

2. 货品库存监控:控制系统需要对货品的库存进行监控,当库存低于预设值时,需要进行补货操作。

3. 支付功能:用户需要使用制定好的货币进行支付,支付成功后,才能取出购买的货物。

4. 数据统计:控制系统需要统计每种货品的销售情况,方便经营者对售货机的经营情况进行分析。

二、PLC控制系统设计1. 系统硬件设计PLC控制系统需要包括以下硬件组成:1)PLC主控板:作为控制系统核心控制板,需要连接所有的硬件组件。

2)选择模块:根据用户选择的货品类型来进行控制。

3)货道机构:负责将货品送到出货口。

4)支付模块:用于支付功能实现,收集用户支付信息。

5)货币识别器:检测用户支付的货币是否正确。

6)显示器:显示用户选择、支付及出货的相关信息。

7)传感器:监控货道库存及支付状态。

2. 系统软件设计PLC控制系统需要使用LAD或ST程序语言进行编程,下面是系统软件的设计流程:1)货品选择功能:当用户选择货品时,选择模块将收集用户选择的货品信息传输给PLC主控板。

然后PLC主控板会控制货道机构运作,将所选货品送到出货口。

货道机构的控制需要采用步进电机进行,PLC主控板发送指令控制步进电机的运转。

2)货品库存监控:PLC主控板连接传感器,检测货道中货品的质量情况与库存数量。

当货品库存低于预设值时,PLC主控板会向经营者发送提醒信息,及时补充货品。

3)支付功能:用户将所购买的货品放入出货口,然后投币或翻转信用卡进行支付。

自动售货机C++程序设计范文精简版

自动售货机C++程序设计范文精简版

自动售货机C++程序设计自动售货机C++程序设计1. 简介2. 程序需求分析自动售货机的主要功能包括接收货币,显示商品信息,选择商品,计算总价,找零等。

下面详细介绍各个功能的需求:2.1 接收货币- 程序需要能够接收各种面额的货币,如1元、5元、10元等。

- 用户可以多次输入货币,以实现累加付款的功能。

2.2 显示商品信息- 程序需要能够显示各个商品的编号、名称和价格等信息。

- 用户可以通过输入商品编号来选择商品。

2.3 选择商品- 用户可以通过输入商品编号来选择商品。

- 如果用户选择的商品编号不存在或无效,需要给出提示。

- 用户也可以选择放弃购买。

2.4 计算总价- 程序需要能够根据用户选择的商品,计算出总价。

- 总价需要包括所选择商品的价格以及可能的额外费用,如运费等。

2.5 找零- 程序需要根据用户付款的金额和总价来计算找零金额。

- 如果用户付款金额不足以支付总价,需要给出提示。

- 需要计算并显示找零金额。

3. 功能设计基于需求分析,我们可以设计出自动售货机的功能,主要包括以下几个方面:- 定义商品类:包括商品的编号、名称和价格等信息。

- 显示商品信息:根据库存商品情况,显示商品的编号、名称和价格等信息。

- 接收货币:循环接收并累加用户输入的货币金额,直到收款金额足够支付总价。

- 选择商品:根据用户输入的商品编号进行相应的处理,包括加入购物车和计算总价等。

- 计算总价:根据购物车中的商品信息和可能的额外费用计算总价。

- 找零:根据用户付款金额和总价计算找零金额,给出相应的提示。

4. 代码实现以下是自动售货机的C++程序代码实现的一个简要示例:cppinclude <iostream>include <vector>using namespace std;class Product {public:string name;int price;Product(string name, int price) {this->name = name;this->price = price;}};vector<Product> products; void displayProducts() { cout << \。

C语言实现自动售货机

C语言实现自动售货机

C语⾔实现⾃动售货机本⽂实例为⼤家分享了C语⾔实现⾃动售货机的具体代码,供⼤家参考,具体内容如下如图所⽰的简易⾃动售货机,物品架1、2上共有10样商品,按顺序进⾏编号分别为1-10,标有价格与名称,⼀个编号对应⼀个可操作按钮,供选择商品使⽤。

如果物架上的商品被⽤户买⾛,储物柜中会⾃动取出商品送到物架上,保证物品架上⼀定会有商品。

⽤户可以⼀次投⼊较多钱币,并可以选择多样商品,售货机可以⼀次性将商品输出并找零钱。

⽤户购买商品的操作⽅法:(1)从“钱币⼊⼝”放⼊钱币,依次放⼊多个硬币或纸币。

钱币可⽀持1元(纸币、硬币)、2元(纸币)、5元(纸币)、10元(纸币),放⼊钱币时,控制器会先对钱币进⾏检验识别出币值,并统计币值总额,显⽰在控制器显⽰屏中,提⽰⽤户确认钱币放⼊完毕;(2)⽤户确认钱币放⼊完毕,便可选择商品,只要⽤⼿指按对应商品外⾯的编号按钮即可。

每选中⼀样商品,售货机控制器会判断钱币是否⾜够购买,如果钱币⾜够,⾃动根据编号将物品进⾏计数和计算所需钱币值,并提⽰余额。

如果钱币不⾜,控制器则提⽰“Insufficient money”。

⽤户可以取消购买,将会把所有放⼊钱币退回给⽤户。

输⼊格式:先输⼊钱币值序列,以-1作为结束,再依次输⼊多个购买商品编号,以-1结束。

输出格式:输出钱币总额与找回零钱,以及所购买商品名称及数量。

输⼊样例:1 12 2 5 5 10 10 -11 2 3 5 1 6 9 10 -1输出样例:Total:36yuan,change:19yuanTable-water:2;Table-water:1;Table-water:1;Milk:1;Beer:1;Oolong-Tea:1;Green-Tea:1;解法⼀:#include<stdio.h>int main(void){char a[10][20] = {"Table-water","Table-water","Table-water","Coca-Cola","Milk","Beer","Orange-Juice","Sprite","Oolong-Tea","Green-Tea"};int b[11] = {0,0,0,0,0,0,0,0,0,0,0};int c[50];int i=1, k, sum = 0, money, SUM = 0, change, flag=0;scanf("%d",&money);//输⼊币值并计算总币值while((money!=-1)&&(money <= 10)){sum = sum + money;scanf("%d",&money);}scanf("%d",&c[i]);while(c[i]!=-1)//将选的货物编号存储到数组c中并计算找零{switch(c[i]){case 1: case 2: case 3: SUM = SUM + 1;break;case 4: case 5: SUM = SUM + 2;break;case 6: case 7: case 8: SUM = SUM + 3;break;case 9: case 10: SUM = SUM + 4;break;default:break;}if(SUM>sum){printf("Insufficient money");flag = 1;}i++;scanf("%d",&c[i]);}change = sum-SUM;//⽤数组b统计各种商品数量i = 1;while(c[i]!=-1){switch(c[i]){case 1: b[1]++;break;case 2: b[2]++;break;case 3: b[3]++;break;case 4: b[4]++;break;case 5: b[5]++;break;case 6: b[6]++;break;case 7: b[7]++;break;case 8: b[8]++;break;case 9: b[9]++;break;case 10: b[10]++;break;default:break;}i++;}//输出结果if(flag==0){printf("Total:%dyuan,change:%dyuan\n",sum, change); for(i=1; i<=10; i++){if(b[i]==0)continue;else{printf("%s:%d;",a[i-1],b[i]);}}}return 0;}解法⼆:#include"stdio.h"struct goods{int num;char name[20];int price;int amount;};int main(){struct goods good[10]={{1,"Table-water",1,0},{2,"Table-water",1,0},{3,"Table-water",1,0},{4,"Coca-Cola",2,0},{5,"Milk",2,0},{6,"Beer",3,0},{7,"Orange-Juice",3,0},{8,"Sprite",3,0},{9,"Oolong-Tea",4,0},{10,"Green-Tea",4,0}};int sum=0,num,change,total=0,money=0,i=0;while(1){scanf("%d",&money);if(money==-1)break;}sum=sum+money;}while(1){scanf("%d",&num);if(num==-1){break;}switch(num){case 1:{total=total+good[0].price;good[0].amount=good[0].amount+1; break;}case 2:{total=total+good[1].price;good[1].amount=good[1].amount+1; break;}case 3:{total=total+good[2].price;good[2].amount=good[2].amount+1; break;}case 4:{total=total+good[3].price;good[3].amount=good[3].amount+1; break;}case 5:{total=total+good[4].price;good[4].amount=good[4].amount+1; break;}case 6:{total=total+good[5].price;good[5].amount=good[5].amount+1; break;}case 7:{total=total+good[6].price;good[6].amount=good[6].amount+1; break;}case 8:{total=total+good[7].price;good[7].amount=good[7].amount+1; break;}case 9:{total=total+good[8].price;good[8].amount=good[8].amount+1;}case 10:{total=total+good[9].price;good[9].amount=good[9].amount+1;break;}}}if(total>sum){printf("Insufficient money");}else{change=sum-total;printf("Total:%dyuan,change:%dyuan\n",sum,change);for(i=0;i<10;i++){if(good[i].amount!=0){printf("%s:%d;",good[i].name,good[i].amount);}}}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

饮料自动售货机(带C程序和设计报告)

饮料自动售货机(带C程序和设计报告)

(C++)作业姓名:夏亮亮学号:班级:电子二班设计报告(1)《需求分析》:本程序为饮料自动售货机的程序,能实现饮料的自动销售,能起到节约人力、减少成本的目的。

(2)《项目设计》:(3)《测试报告》:1、主界面:2、选择完成之后:饮料自动售货机果汁类汽水类茶类结账付款橙汁冰糖雪梨苹果汁完成雪碧可乐完成绿茶冰红茶完成钱款正确钱款错误3、付款有误画面:4、正确付款画面:源代码#include <iostream>using namespace std;void kaishi();void chalei(),qishui(),guozhi();int xuanzhe[3]={0};int xuanzhe_qishui[2]={0};int xuanzhe_chalei[2]={0};void kaishi(){cout <<" ********************************************"<<endl;cout <<" ***** *****"<<endl;cout <<" ***** 饮料自动售货机*****"<<endl;cout <<" ***** *****"<<endl;cout <<" ********************************************"<<endl;}void guozhi(){cout <<" 输入对应数字并按确定"<<endl;cout <<"---------------------------------------------------"<<endl;cout <<" ------- 1.橙汁(单价3元) 2.桃汁(单价元)--------"<<endl;cout <<" ------- 3.冰糖雪梨(单价4元) 4.完成----------------"<<endl;cout <<" ---------------------------------------------------"<<endl;}void qishui(){cout <<" 输入对应数字并按确定"<<endl;cout <<"---------------------------------------------------"<<endl;cout <<" ------- 1.雪碧(单价3元) 2.可乐(单价3元)----"<<endl;cout <<" ------- 3.完成 ------------"<<endl;cout <<"---------------------------------------------------"<<endl;}void chalei(){cout <<" 输入对应数字并按确定"<<endl;cout <<"---------------------------------------------------"<<endl;cout <<" ------- 1.绿茶(单价元) 2.冰红茶(单价3元)-----------"<<endl;cout <<" ------- 3.完成 ------------"<<endl;cout <<"---------------------------------------------------"<<endl;}class yinliao{public:yinliao();void xuanz_qishui();void xuanz_chalei();void shuqian();void add();void xuanz();void print();protected:int sum;."<<endl;cout <<" ----------------------------------------------"<<endl;cout <<" ------ 1.果汁类 2.汽水类 3.茶类 4.结账付款----"<<endl;cout <<" ----------------------------------------------"<<endl;cout <<" 输入对应数字并按确定"<<endl;cout <<" ";cin >> w;switch(w){case 1:guozhi();();break;case 2:qishui();();break;case 3:chalei();();break;case 4:();();goto fk;}}fk:();cout <<" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"<<endl;cout <<" ^^^^^ ^^^^^"<<endl;cout <<" ^^^^^ 欢迎再次光临!^^^^^"<<endl;cout <<" ^^^^^ ^^^^^"<<endl;cout <<" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"<<endl;system("pause");return 0;}。

面向对象程序设计课设论文模拟自动售货机

面向对象程序设计课设论文模拟自动售货机

面向对象程序设计课设论文模拟自动售货机面向对象程序设计课程设计论文:模拟自动售货机一、引言自动售货机是日常生活中常见的自助购物设备,本文旨在使用面向对象程序设计(OOP)的方法,设计和实现一个模拟自动售货机的系统。

通过此次课程设计,我们旨在加深对OOP基本原则和主要技术的理解,包括类、对象、封装、继承和多态等。

二、背景自动售货机是一种根据消费者投入的货币或卡内金额,通过机器自动销售商品的设备。

其运营原理包括识别货币、商品选择、出货等过程。

面向对象程序设计是一种以对象为基础的程序设计范式,它使用类和对象作为基本构造块,通过对现实世界的抽象,建立对应的类和对象,实现系统的模型化。

三、相关技术在本次课程设计中,我们主要使用了Java语言进行编程。

Java语言具有跨平台性和面向对象的特点,适合用于实现这种模拟自动售货机的系统。

同时,我们将使用Java的GUI库Swing,以实现用户界面部分。

四、系统设计1、类设计:我们设计了三个主要类,分别是货币识别器、商品选择器和出货器。

货币识别器类具有识别货币面值的能力,商品选择器类具有根据投入货币的数量和金额选择商品的功能,出货器类则负责将所选商品出货。

2、对象设计:根据自动售货机的实际需求,我们创建了多个货币识别器、商品选择器和出货器的实例。

同时,我们还创建了代表不同商品的对象,包括可乐、雪碧、矿泉水等。

3、方法设计:在类中定义各种方法,如货币识别器中的“识别货币”方法、商品选择器中的“选择商品”方法和出货器中的“出货”方法等。

五、实现在实现阶段,我们将按照设计的结构,使用Java编写各个类的代码。

其中,货币识别器将根据用户投入的货币进行面值识别,并将金额传递给商品选择器;商品选择器将根据金额从库存中选取相应的商品,并通知出货器出货;出货器则负责执行出货操作。

我们将使用Java的GUI库Swing创建用户界面,包括一个文本框用于接收用户投入的货币,一个下拉列表用于选择商品,以及一个按钮用于确认购买。

基于C语言实现自动售货机控制的设计

基于C语言实现自动售货机控制的设计

经验交流数码世界 P .142以反映整个生产线的多个数据。

数据处理装置是用来对检测到物理数据进行处理、运算、逻辑分析、积分变换等等,对于被检测量如果为数字量可以作为幅值谱分析、电压、电流、功率及时谱分析完成该任务的前提是利用计算机技术。

数据处理的结果可以将其数据传送到同级处理机构中,当执行机构接受到信号时执行器件继电器、电磁铁、伺服机动系统等等,都要起相应的动作断开、关闭、调节、保护等作用。

在现代许多检测系统都能够将捕获相应的信息比如电压、电流等信号,对自动控制系统的控制信号进行驱动并执行动作。

4 结语随着时代的飞速进步传感器也渐渐的被集成化从大面积变成了非常灵巧的体积,且为了符合时代的发展也不断在更新替代向小型化、智能化发展,其应用范围也在不断的扩大。

检测技术不断地在提高检测系统的精良度、寿命的延长以及运行的可靠性,并在用新的技术扩大检测邻域使网络化传感器检测系统不断的趋向于成熟,实现数据共享服务于生活。

参考文献[1] 贾启生,基于项目化的《传感器与检测技术》课程设计思路 [J] 2014(10):186-187.[2] 蔡鹃,张乐冰,《检测与传感技术》课程教学改革的探索与实践——以怀化学院电子信息工程与技术专业为例 [J] 2018(3):237-238. 作者简介唐悦(1996~),男,辽宁省丹东市凤城市,本科,研究方向:自动化。

张可菊(通讯作者),1978年5月出生,女,汉族,辽宁人,沈阳工学院,副教授。

引言:C 语言是一门通用计算机编程语言,应用广泛。

C 语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C 语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C 语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

特点如下:(1)C 语言是一个有结构化程序设计、具有变量作用域(variable scope)以及递归功能的过程式语言。

自动售货机PLC控制系统设计

自动售货机PLC控制系统设计

自动售货机PLC控制系统设计1前言 (1)1.1 论文研究的目的和意义 (1)1.2 本文的设计目标 (1)1.3 技术路线 (1)2 系统整体方案设计 (2)2.1 系统结构设计 (2)2.2 控制器选型 (3)(1)规模要适合 (3)(2)功能要相当,结构要合理 (3)(3)使用环境条件 (4)2.3软件工具 (5)(5) 兼容GX Developer软件。

(6)3 硬件设计 (6)3.2 PLC接线图 (7)4 软件设计 (8)4.1 软件流程设计 (8)4.2 钱币累加程序模块 (9)4.3 钱币比较与商品指示灯模块 (9)4.4 出货模块 (10)4.5 找零及计算模块 (11)4.6售出成功后复位模块 (12)5调试与仿真 (12)5.1 钱数为13 (12)5.2钱数为18 (13)6总结 (14)参考文献............................................ 错误!未定义书签。

致谢............................................... 错误!未定义书签。

1前言1.1 论文研究的目的和意义随着无人商店的诞生,自动售货机将会是一个应运而生的新时期的必然产品。

自动售货机二十四小时不间断的服务,节省了大批的人力物力,且占用建筑面积小,投资较低。

而自动贩售机器的仓库也可远程监视,及时精确地收集商品资讯,更可确保货源的充裕。

自动售货机是一款智能化业务装置,能够为城市居民实现全天候不中断的产品零售业务。

销售商品类型也由原来单纯的饮品、香烟等到了现在琳琅满目的日用物资,也因而受到了城市居民们的青睐。

而由于自动贩售机器功能的越来越丰富,它对核心系统的计算速度、安全性要求也更高。

比较于传统的自动售货机使用单片机为核心控制器,PLC为通用工业控制系统的设备拥有性能高、安全性强、维修简便等优点,也比较适宜于在公共场合的复杂环境下应用。

自动售货机C++

自动售货机C++

一、程序名称:自动售货机二、程序功能:将程序中的数组输出,并分别按从大到小和从小到大的顺序输出,在输出4.4三、程序设计及实现。

1、主函数:main()实现程序的主界面2、public公有成员、private私有成员3、数据设置为string字符串类型、float单精度类型、int整形4、输出:cout<< <<用来输出显示的内容5、选择语句:switch() case1:6、实现简单的界面设计,类的成员变量,调用函数,循环,if语句可操作销售、支付、上架、找零等功能四、程序运行结果:五、程序代码//头文件#include <iostream>#include <string>#include <vector>#include <cstdlib>using namespace std; //命名空间struct Drink{Drink(float pr, string n);string name; //字符串类型float price; //单精度int account; //整形};class Vending{public:Vending(); //类的公有成员inline void showStorage() const {cout << "可乐:" << m_cola->account << endl << "奶茶:" << m_milkT->account << endl;cout << "凉茶:" << m_T->account << endl;}inline void showSoldNum() const{cout << m_cola->name << endl << "销售量:" << m_soldCola << endl;cout << "销售额:" << m_soldCola*(m_cola->price) << endl;cout << m_milkT->name << endl << "销售量:" << m_soldMilkTea << endl;cout << "销售额:" << m_soldMilkTea*(m_milkT->price) << endl;cout << m_T->name << endl << "销售量:" << m_soldTea << endl;cout << "销售额:" << m_soldTea*(m_T->price) << endl;}void addStore();void sellItem();void popMenu();private: //类的私有成员Drink *m_cola, *m_milkT, *m_T;int m_soldCola, m_soldMilkTea, m_soldTea;};Drink::Drink(float pr, string n):name(n), price(pr), account(10){} //名称、价格、库存数量//销售界面Vending::Vending():m_soldCola(0), m_soldMilkTea(0), m_soldTea(0){m_cola = new Drink(float(2.8), "可乐");m_milkT = new Drink(float(3.0), "奶茶");m_T = new Drink(float(3.5), "凉茶");}//上架界面void Vending::addStore(){cout << "请选择要上架的商品:\n1.可乐\n2.奶茶\n3.凉茶\n";int n, count;cin >> n;if(n > 3){cout << "选择错误" << endl;return;}cout << "请输入要上架的数量:";cin >> count;if(n == 1)m_cola->account += count;else if(n == 2)m_milkT->account += count;else if(n == 3)m_T->account += count;else{cout << "操作失败" << endl;return;}cout << "操作完成" << endl;}//销售界面void Vending::sellItem(){cout << "1." << m_cola->name << ":" << endl;cout << "价格:" << m_cola->price << ends << "库存:" << m_cola->account << (m_cola->account == 0 ? "(售完)\n" : "\n");cout << "2." << m_milkT->name << ":" << endl;cout << "价格:" << m_milkT->price << ends << "库存:" << m_milkT->account << (m_milkT->account == 0 ? "(售完)\n" : "\n");cout << "3." << m_T->name << ":" << endl;cout << "价格:" << m_T->price << ends << "库存:" << m_T->account << (m_T->account == 0 ? "(售完)\n" : "\n");cout << "请选择:";int n = 0, num = 0;cin >> n;float price = 0;int acc = 0;if(n == 1){price = m_cola->price;acc = m_cola->account;}else if(n == 2){price = m_milkT->price;acc = m_milkT->account;}else if(n == 3){price = m_T->price;acc = m_T->account;}do{if(num > 0)cout << "库存不足" << endl;cout << "请输入数量:";cin >> num;}while(num > acc);price *= num;//支付float pay = 0;do{if(pay > 0)cout << "支付不足" << endl;cout << "请支付:";cin >> pay;}while (pay < price);cout << "操作完成" << endl;if(pay - price > 0)cout << "找零:" << pay-price << endl;if(n == 1){m_soldCola += num;m_cola->account -= num;}else if(n == 2){m_soldMilkTea += num;m_milkT->account -= num;}else if(n == 3){m_soldTea += num;m_T->account -= num;}}void Vending::popMenu(){const string menu1 = "========自动贩卖机========\n1.管理人员界面\n2.销售界面\n3.退出\n";const string menu2 = "========自动贩卖机========\n1.显示库存\n2.商品上架\n3.销售查询\n";int n;while(true){cout << menu1 << "请选择:";cin >> n;if(n == 1){cout << "请输入密码:";int password;cin >> password;if(password != 123){ //密码为123,输入不是123则现实密码错误cout << "密码错误" << endl;continue;}cout << menu2 << "请选择:";cin >> n;switch(n){ //选择语句case 1:{showStorage();break;}case 2:{addStore();break;}case 3:{showSoldNum();break;}default:{cout << "选择错误" << endl;return;}}}else if(n == 2)sellItem();else if(n == 3)exit(0);}}//main() 函数的实现,程序的主界面的引导int main(){Vending *vend = new Vending;vend->popMenu();return 0;}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include<iostream>
using namespace std;
class Shop{
public :
void shop();
float money();
float choose();
void out();
void con();
int a,b,c,d,v;
};
void Shop::out(){
cout<<"该商品已售完\n\t\t1、购买其他商品\n\t\t2、退出"<<endl;
}
void Shop::shop()
{cout<<"\n\n商品列表:\n\t\t1、可口可乐: 2元\n\t\t2、百事可乐: 2元\n\t\t3、橙汁: 3元\n\t\t4、咖啡: 5元\n\t\t5、纯净水: 1.5元"<<endl;
}
float Shop::money(){
float money;
float sum=0;
for(;sum<1.5;) {
cout<<" "<<endl;
cout<<"请投币:"<<endl;
cin>>money; //输入
if (money!=0.5&&money!=1&&money!=2&&money!=5&&money!=10)
{cout<<"请投入可接受面额!"<<endl;
continue;
}
sum=sum+money;
cout<<"已投入金额: "<<sum<<" 元"<<endl; }
return sum;}
float Shop::choose() {
float sum=money(),change;
int f=1,g=1,h=1,j=1,k=1;
for(;;){
cout<<"请选择商品:"<<endl;
cin>>a;
switch(a){
case 1:{
if(f<=0){
out();
cin>>v;
if(v==1){
shop();
continue; }
if (v==2)exit(-1);}
if(sum>=2)
{f--;}change=sum-2;
}break;
case 2:{
if(g<0){
out();
cin>>v;
if(v==1){
shop();
continue; }
if (v==2)exit(-1); }
if(sum>=2)
{g--;}change=sum-2;
}break;
case 3:{
if(h<0){
out();
cin>>v;
if(v==1){
shop();
continue;}
if (v==2)exit(-1);}
if(sum>=3)
{h--;}change=sum-3;
}break;
case 4:{
if(j<0){
out();
cin>>v;
if(v==1){
shop();
continue;}
if (v==2)exit(-1); }
if(sum>=5)
{j--;}change=sum-5;
}break;
case 5:{
if(k<0){
out();
cin>>v;
if(v==1){
shop();
continue; }
if (v==2)exit(-1); }
if(sum>=1.5)
{k--;}change=sum-1.5;
}break;
default:cout<<"错误!! "<<endl;
}
if(change<0){cout<<"\n余额不足\n\t\t1、继续投币\n\t\t2、选择其他商品"<<endl; cin>>c;
if(c==1)sum+=money(); cout<<"剩余总金额: "<<sum<<" 元"<<endl;continue;
if(c==2)break;}
cout<<"剩余金额: "<<change<<" 元"<<endl;
cout<<"\n\t\t1、继续购买商品\n\t\t2、退出"<<endl;
cin>>b;
if (b==1){sum=change;continue;}
if (b==2)exit(-1);break;
}
cout<<"找零: "<<change<<" 元"<<endl;
cout<<" 欢迎下次光临"<<endl;
return change;}
void main(){int d;
cout<<"\n\t\t\t自动售货机模拟程序3.0"<<endl;
Shop s;
s.shop();
s.choose();
cin>>d;
while(1);
}。

相关文档
最新文档