c语言自动售货机实验报告
自动售货机报告c语言课程设计报告报告
![自动售货机报告c语言课程设计报告报告](https://img.taocdn.com/s3/m/7fd8adbc58fafab068dc029d.png)
- -自动售货机图形模拟系统需求分析课题名称:自动售货机图形模拟系统小组成员:朱伟鑫U201314490班级:测控1301班指导老师:周纯杰、何顶新、刚、周凯波上交日期:贰零壹肆年玖月贰拾壹日目录1.引言--现实中的自动售货机 (2)2.运行环境 (3)3.功能设计 (3)3.1触摸屏 (3)3.2自动换零 (3)3.3销量统计 (3)3.4提前补货 (4)3.5显示商品信息 (4)3.6自动售货机网络 (4)3.7无响应自动处理 (4)4.软件系统需求分析 (4)4.1图形显示 (4)4.2菜单模块 (5)4.3交易模块 (5)4.4管理模块 (5)5.系统流程图 (5)6.时间安排...........................................6自动售货机图形模拟系统朱伟鑫课题要求以自动售货机为对象,图形化模拟投币、找零、出货的基本流程;能对售货机的商品进行管理:补货、查询、统计等功能。
1引言--现实中的自动售货机自动售货机是能根据投入的钱币自动付货的机器。
自动售货机是商业自动化的常用设备,它不受时间、地点的限制,能节省人力、方便交易。
是一种全新的商业零售形式,又被称为24小时营业的微型超市。
能分为三种:饮料自动售货机、食品自动售货机、综合自动售货机。
从自动售货机的发展趋势来看,它的出现是由于劳动密集型的产业构造向技术密集型社会转变的产物。
大量生产、大量消费以及消费模式和销售环境的变化,要求出现新的流通渠道;而相对的超市、百货购物中心等新的流通渠道的产生,人工费用也不断上升;再加上场地的局限性以及购物的便利性等这些因素的制约,无人自动售货机作为一种必须的机器便应运而生了。
从广义来讲投入硬币、纸币、信用卡等后便可以销售商品的机械,从狭义来讲就是自动销售商品的机械。
从供给的条件看,自动售货机可以充分补充人力资源的不足,适应消费环境和消费模式的变化,24小时无人售货的系统可以更省力,运营时需要的资本少、面积小,有吸引人们购买好奇心的自身性能,可以很好地解决人工费用上升的问题等各项优点。
商品销售系统实验报告C语言程序设计课程实训报告
![商品销售系统实验报告C语言程序设计课程实训报告](https://img.taocdn.com/s3/m/dba2af392f60ddccdb38a00b.png)
HUBEI UNIVERSITY OF AUTOMOTIVE TECHNOLOGYC语言程序设计课程实训报告课设题目:商品销售管理系统专业:计算机科学与技术班级: K1373-4姓名:高原成绩:完成日期: 2014年1月16日-2014年1月17日指导教师: 张吴波目录1.课程实训目的 (3)2.需求分析 (3)2.1要求 (3)2.2任务描述 (3)2.3运行环境 (4)2.4开发工具 (4)3.总体设计 (4)3.1系统流设计 (4)3.2系统模块设计 (6)4.详细设计 (6)4.1数据结构设计 (6)4.2模块接口设计 (7)4.3 以下是几个主要模块的流程图: (8)5.运行结果 (9)5.1主菜单界面: (10)5.2导入商品信息界面: (11)5.3输入销售记录界面: (12)5.4 查询销售历史界面: (13)5.5显示顾客信息界面: (14)5.6保存信息界面:5.7显示商品信息界面:6.程序调试与测试 (16)6.1程序调试与分析 (16)6.2程序测试结果 (16)7.问题与不足 (16)8.建议 (17)9.编程体会 (17)10.程序源代码: (17)11.参考文献 (17)12.用户使用手册 (17)1.课程实训目的1)通过课程实训,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。
2)通过课程实训,进一步掌握C语言中重要的数据结构。
掌握并熟练运用指针、链表、结构体、文件等数据结构。
3)通过课程实训,提高程序开发能力,能运用合理的控制流编写清晰高效的程序。
4)通过课程实训,培养C语言知识运用和自学能力,真正的把课堂上获得的知识运用起来,培养自己对程序编写的兴趣,并能独立设计和实现一个小型系统。
5)通过课程实训,加强了自己的程序分析能力。
2.需求分析2.1要求1)遵循软件开发过程的基本规范;能灵活应用,初步具备运用C程序解决实际问题的能力。
2)运用结构化程序设计方法,按照课程实训题目要求,完成包括需求分析、数据结构设计、概要设计、详细设计、编写代码、调试和测试C程序等过程。
自动售货机设计报告
![自动售货机设计报告](https://img.taocdn.com/s3/m/c0e8612367ec102de2bd89cf.png)
(5)当投入的钱数总数超过所需钱数(可乐12元,咖啡15元)时,找钱指示灯亮。找钱,自动复位。
(6)找钱多少(可选)
所需输入:1元投币口所需输出:咖啡出口
5元投币口咖啡按钮指示灯
10元投币口咖啡按钮指示灯
咖啡按钮可乐按钮指示灯
可乐按钮可乐出口
手动复位按钮找钱指示灯
青岛理工大学琴岛学院
课程设计报告
课题名称:PLC课程设计
学院:机电工程系
专业班级:电气工程及其自动化14-21
学号:
学生:
指导老师:
青岛理工大学琴岛学院教务处
2014年1月2日
学生
指导老师
课题名称
自动售货机
设计时间
12月22日-1月2日
设计地点
设计目的
本次自动售货机设计方案比较简单,在制作这次PLC课题时也遇到了不少问题,通过本次课题设计使我明白了只有进行实际的操作才能有效的避免在程序设计中的各种计算失误。
设计主要研究的是自动售货机中有关PLC软件编程的部分。自动售货机是由于劳动密集型的产业构造向技术密集型社会转变的产物。自动售货机可以充分补充人力资源的不足,适应消费环境和消费模式的变化,24小时无人售货的系统可以更省力,运营时需要的资本少、面积小,有吸引人们购买好奇心的自身性能,可以很好地解决人工费用上升的问题等各项优点。所以说自动售货机是今后小商品和饮料销售方式的一个很好的发展趋势,它的出现将极大的方便人们购买。通过本次论文设计,使我对PLC编程的知识有了更深层次的认识,提高了我的动手能力,而在论文设计中通过查阅文献,搜集资料,综合分析等方面的训练,使我综合运用各方面知识,分析解决实际问题的能力也得到了很大的提高。另外,我还学会了一些基本软件的应用。
自动售货机系统-《C语言程序设计》课程设计报告
![自动售货机系统-《C语言程序设计》课程设计报告](https://img.taocdn.com/s3/m/30d821c976eeaeaad1f33045.png)
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语言实现最全自动售货机](https://img.taocdn.com/s3/m/2d3b0595b8d528ea81c758f5f61fb7360b4c2bd3.png)
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("※按回车继续。
自动售货机实验报告
![自动售货机实验报告](https://img.taocdn.com/s3/m/bb253ff8700abb68a982fb29.png)
软件课程设计实验报告课题:自动售货机班级:电信作者:学号:课程设计实验报告第一部分程序代码 (7)第二部分软件设计文档 (15)一、软件需求说明书 (15)1引言 (15)1.1编写目的 (15)1.2背景 (15)1.3定义 (15)1.4参考资料 (16)2任务概述 (16)2.1目标 (16)2.2用户的特点 (16)2.3假定和约束 (16)3需求规定 (16)3.1对功能的规定 (17)3.2对性能的规定 (17)3.3输人输出要求 (18)3.4数据管理能力要求 (18)3.5故障处理要求 (18)3.6其他专门要求 (19)4运行环境规定 (19)4.1设备 (19)4.2支持软件 (19)4.3接口 (19)4.4控制 (19)二、概要设计说明书 (20)1引言 (20)1.1编写目的 (20)1.2背景 (20)1.3定义 (20)1.4参考资料 (20)2 需求说明 (21)2.1需求规定 (21)2.2运行环境 (21)2.3基本设计概念和处理流程 (21)2.5功能器求与程序的关系 (22)2.6人工处理过程 (23)2.7尚未解决的问题 (23)3接口设计 (23)3.1用户接口 (23)3.2外部接口 (23)3.3内部接口 (23)4运行设计 (23)4.1运行模块组合 (23)4.2运行控制 (24)4.3运行时间 (24)5系统数据结构设计 (24)5.1逻辑结构设计要点 (24)5.2物理结构设计要点 (24)5.3数据结构与程序的关系 (24)6系统出错处理设计 (25)6.1出错信息 (25)6.2补救措施 (25)三、详细设计说明 (26)1引言 (26)1.1编写目的 (26)1.2背景 (26)1.3定义 (26)1.4参考资料 (26)2程序系统的结构 (27)3投币模块 (27)3.1程序描述 (27)3.2功能 (27)3.3性能 (27)3.4输入项 (28)3.5输出项 (28)3.6算法 (28)3.7流程逻辑 (28)3.8接口 (28)3.9存储分配 (29)3.10注释设计 (29)3.11限制条件 (29)3.12测试计划 (29)4退币模块 (30)4.1程序描述 (30)4.2功能 (30)4.3性能 (30)4.4输入项 (30)4.5输出项 (30)4.6算法 (30)4.7流程逻辑 (31)4.8接口 (31)4.9存储分配 (31)4.10注释设计 (31)4.11限制条件 (32)4.12测试计划 (32)4.13尚未解决的问题 (32)5取货模块 (32)5.1程序描述 (32)5.2功能 (32)5.3性能 (32)5.4输入项 (32)5.5输出项 (33)5.6算法 (33)5.7流程逻辑 (33)5.8接口 (33)5.9存储分配 (34)5.10注释设计 (34)5.11限制条件 (34)5.12测试计划 (34)5.13尚未解决的问题 (34)6购买模块 (35)6.1程序描述 (35)6.2功能 (35)6.3性能 (35)6.4输入项 (35)6.5输出项 (35)6.6算法 (36)6.7流程逻辑 (36)6.8接口 (37)6.10注释设计 (38)6.11限制条件 (38)6.12测试计划 (38)6.13尚未解决的问题 (38)四、测试分析报告 (39)1引言 (39)1.1编写目的 (39)1.2背景 (39)1.3定义 (39)1.4参考资料 (39)2测试概要 (39)3测试结果及发现 (40)3.1测试1(启动系统) (40)3.2测试2(退出系统) (42)3.3测试3(货品展示) (42)3.4测试4(投币购买) (42).5测试5(取出物品) (43)3.6测试6(找零) (44)3.7测试7(退币) (44)3.8测试8(报错) (45)4对软件功能的结论 (45)4.1功能 (45)4.2能力 (46)4.3限制 (46)5分析摘要 (46)5.1能力 (46)5.2缺陷和限制 (46)5.3建议 (46)5.4评价 (47)6测试资源消耗 (47)五、项目开发总结报告 (48)1引言 (48)1.1编写目的 (48)1.2背景 (48)1.3定义 (48)1.4参考资料 (48)2实际开发结果 (49)2.1产品 (49)2.2主要功能和性能 (50)2.3基本流程 (50)2.4进度 (50)3开发工作评价 (52)3.1对生产效率的评价 (52)3.2对产品质量的评价 (52)3.3对技术方法的评价 (52)3.4出错原因的分析 (52)4经验与教训 (53)第一部分程序代码//引入awt、swing包import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.*;//类Seller的定义,用于实现所有的功能public class Seller extends JFrame implements ActionListener{private static final long serialVersionUID = 6843588200041215448L;private double money = 0.0;//"money"表示用户余额private boolean occupy; //"occupy=false"表示出货口未满,用户可以购买;//"occupy=true"表示出货口已满,用户必须取完货才能继续购买。
C语言实验报告(16)
![C语言实验报告(16)](https://img.taocdn.com/s3/m/fa4b69ae852458fb760b5685.png)
《C语言》实验报告专业_____________年级_____________学号_____________学生姓名_____________指导老师_____________华中师范大学信息管理系编I 实习目的和意义C语言程序设计实验的目的是培养学生具有初步的C语言程序设计、编程、调试和排除C语言程序语法、逻辑错误的能力。
通过实验使学生进一步熟悉并掌握C语言程序的调试运行环境、程序设计过程、程序的基本结构以及程序设计的基本方法。
通过实验,使学生将程序设计的理论知识与实践相结合,为学生学习其他计算机编程语言打下基础。
在每一次的实验过程中,学生要认真复习基本概念,独立编写程序,并上机调试运行,培养自己发现程序中的错误、改正错误以使程序能正确运行的能力。
经验丰富的人,当编译时出现“出错信息”时,能很快地判断出错误所在,并改正之。
而缺乏经验的人即使在系统给出明确出错提示信息下也往往找不出错误而求救于别人。
对于学生来说,不仅要了解和熟悉有关理论和方法,还要求自己动手实现,要求会编写程序并上机调试通过。
因此调试程序本身是程序设计课程的一个重要内容和基本要求,应给予充分的重视。
调试程序的经验固然可以借鉴他人的现成经验,但更重要的是通过自己的直接实践来积累,而且有些经验是只能“意会”难以“言传”。
调试程序的能力,是学完《C语言程序设计》之后,每个学生应当掌握的一项基本功。
因此,在实习时千万不要在程序通过后就认为完成任务了,而应当在已通过的程序基础上作一些改动(例如修改一些参数、增加程序一些功能、改变输入数据的方法等,甚至于“自设障碍”,即把正确的程序改为有错的,如用scanf函数输入变量时,漏写“&”符号,使数组下标越界,使整数溢出等),观察和分析所出现的情况,并认真、及时总结。
这样的学习是灵活主动的学习而不是呆板被动的学习,才会有真正的收获。
II实验要求1.每次实验中有若干习题,每个学生至少应该完成其中的三道习题。
自动饮料售货机(C语言程序设计)
![自动饮料售货机(C语言程序设计)](https://img.taocdn.com/s3/m/e730e74addccda38376baf3b.png)
源码在后面! 一、需求分析本程序为饮料自动售货机的程序,能实现饮料的自动销售,并采用文件的形式记录购买数据,能起到节约人力、减少成本的目的。
二、总体设计本设计主要分为两大系统(顾客购买以及管理员管理系统)以及放于d 盘中“饮料.txt ”的文件系统,每个系统分别执行一些特定的功能。
如下图所示:图一 总体设计概念图三、详细设计3.1 管理员模块管理员是自动售货机系统中权限最高的用户。
在管理员工作模式下,管理员可以进行货物进行补充操作、商品库存信息查询、销售额信息查询、切换到销售界面几大操作。
自动饮料售货机顾客购买系统管理员管理系统选择饮料投币找币记录数据登录界面查询销售额查询剩余数量补货管理员模块的功能结构图,如下:图3.1 管理员操作流程图3.2 顾客购买模块用户模块主要是销售商品的界面。
销售商品的整个过程是,用户投入货币,然后输入商品代号,然后进行找零等操作,最后放出商品,完成交易。
下面来看一下用户模块的流程。
管理员输入密码选择商品库存信息查询销售额信息查询货物补充操作结束图3.2 顾客购买饮料流程图四、系统调试分析它的的任务是尽可能彻底地检查出程序中的错误,提高软件系统的可靠性,其目的是检验系统”做得怎样?”。
这阶段又可分为三个步骤:模块测试,测试每个模块的程序是否有错误;组装测试,测试模块之间的接口是否正确:确认测试,测试整个软件系统是否满足用户功能和性能的要求。
该阶段结束应交付测试报告,说明测试数据的选择,测试用例以及测试结果是否符合预期结果。
测试发现问题之后要经过调试找出错误原因和位置,然后进行改正。
是基于系统整体需求说明书的黑盒类测试,应覆盖系统所有联合的部件。
系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不相符合或与之矛盾的地方。
4.1 系统启动主界面如图,由用户选择执行某一个操作。
用户选择投币饮料d饮料a......饮料d饮料和零钱图4.1系统启动主界面图4.2 顾客购买饮料操作测试在主界面下,输入口令“1”,进入购买饮料模块。
c语言自动售货机实验报告
![c语言自动售货机实验报告](https://img.taocdn.com/s3/m/02b6f13f915f804d2b16c189.png)
课程设计课程名称 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购买,确定购买商品后,系统显示如下。
电子课程设计报告--自动售货机
![电子课程设计报告--自动售货机](https://img.taocdn.com/s3/m/86f0062d6137ee06eef918ef.png)
电子技术基础课程设计题目名称:自动售货机姓名:学号:组员姓名:班级:指导教师:评语:成绩:教师签名:摘要自动售货机是商业自动化的常用设备,它不受时间、地点的限制,能节省人力、方便交易。
1925年美国研制出售香烟的自动售货机,此后又出现了出售邮票、车票的各种现代自动售货机。
一般的自动售货机由钱币装置、指示装置、贮藏售货装置等组成。
钱币装置是售货机的核心,其主要功能是确认投入钱币的真伪,分选钱币的种类,计算金额。
如果投入的金额达到购买物品的数值即发出售货信号,并找出余钱。
指示装置用以指示顾客所选商品的品种。
贮藏售货装置保存商品,接收出售指示信号,把顾客选择的商品送至付货口。
一般售货机的钱币装置由投币口、选别装置、确认钱币真伪的检查装置、计算金额的计算装置和找钱装置组成。
而本次课程设计的内容就是在学习相关Verilog代码之后,再结合本学期学习的数字电子技术及其实验的相关知识,通过画出状态图等方式,清楚其逻辑关系和运算过程,编写一个简单的自动售货机程序,实现投入不同的硬币数量和面值,可以得到相应的实际结果,包括出货、找零等功能。
并且利用ModelSim软件来实现程序的测试,以及结果的输出和检验。
关键字:自动售货机 Verilog ModelSim软件状态图目录1 设计目的 (1)2 设计题目 (1)3 设计要求 (1)4 设计内容 (2)4.1有限状态机的描述 (2)4.2状态变化图 (2)4.3定义时钟信号 (3)4.4定义输入和输出端口 (3)4.5V ERILOG代码编写 (4)4.5.1 主程序:用Verilog语言的case语句 (4)4.5.2 测试程序 (6)4.6有限状态机图 (8)5 设计内容仿真实验结果 (9)5.1运行过程 (9)5.2波形分析 (10)6 参考文献 (12)电子课程设计总结与体会 (13)1 设计目的(1)掌握有限状态机的概念和描述方法;(2)掌握时序电路系统的设计方法;(3)学些和掌握Verilog描述数字系统的方法;(4)学习和掌握ModelSim等软件的使用方法;(5)学习和了解IC设计的基本流程。
C语言实现自动售货机
![C语言实现自动售货机](https://img.taocdn.com/s3/m/980249fa6394dd88d0d233d4b14e852458fb39b2.png)
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);}}}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
自动售货机实验报告
![自动售货机实验报告](https://img.taocdn.com/s3/m/a6606cc14028915f804dc25b.png)
目录一、设计目的 (1)1.控制要求 (1)2.课题要求 (1)二、设计步骤 (1)1.设计思路 (1)2.I/O分配表 (3)3.各种中间继电器 (3)三、实验步骤 (3)四、控制图 (4)1.电器控制图及必要的文字说明 (4)2.硬件链接图 (4)五、程序设计 (4)1.梯形图 (5)2.触摸屏 (11)六、实验总结 (11)1.课题设计的整体分析 (11)2.设计中遇到的问题及解决办法 (11)3.实验中遇到的问题及解决办法 (11)4.主要输入、输出及中间继电器的时序图 (14)5.收获 (14)参考文献 (15)自动售货机的PLC控制一、设计目的1.控制要求:(1)自动售货机可投入5角、1元、5元、10元硬币。
(2)当投入的硬币总值等于或超过5元时,汽水按钮指示灯亮;当投入的硬币总值超过10元时奶茶按钮指示灯亮;当投入的硬币总值超过15元时咖啡按钮指示灯亮。
(3)当汽水按钮指示灯亮时,按汽水按钮,则汽水排出,5秒后自动停止。
汽水排出时,相应指示灯闪烁。
(4)当奶茶和咖啡按钮指示灯亮时,动作同上。
(5)若投入的硬币总值超过按钮所需的钱数时,找钱指示灯亮,同时八段码显示所找钱数。
2.课题要求(1)设计出硬件系统的结构图、接线图、时序图等;(2)运用功能指令进行PLC控制程序设计,并有主程序和子程序;(3)进行系统调试,实现自动售货机的控制要求。
二、设计步骤1.设计思路自动售货机是台机电一体化的自动化装置,在接受到货币已输入的前提下,靠触摸控制按钮输入信号使控制器启动相关的机械装置完成规定动作,将货物输出,用自动控制系统代替现有的人工销售方式,节省人力,减少相应的销售开支,扩大销售覆盖面。
当投入的硬币总值超过5元时,汽水指示灯亮。
当硬币总值超过10元时,汽水和奶茶指示灯亮。
当投入的硬币总值超过15元时,汽水,奶茶和咖啡指示灯都亮。
当汽水指示灯亮时,按汽水按钮,则汽水排出,5秒后自动停止,相应的指示灯闪烁;当奶茶指示灯亮时,按奶茶按钮,则奶茶排出,5秒后自动停止,相应的指示灯闪烁;当咖啡指示灯亮时,按咖啡按钮,则咖啡排出,5秒后自动停止,相应的指示灯闪烁。
PLC自动售货机报告
![PLC自动售货机报告](https://img.taocdn.com/s3/m/6a0465687c1cfad6185fa78e.png)
黎明职业大学机电工程系《可编程控制器原理与程序设计》课程设计报告自动售货机目录一、自动售货机的理论背景与实际意义 (3)二、自动售货机的控制要求 (3)三、自动售货机的基本功能 (3)四、自动售货机设计的基本思路 (4)五、 PLC 的工作原理 (5)六、PLC的硬件组成 (5)七、自动售货机 I/O 点的分配 (6)八、外部接线图 (6)九、梯形图设计 (7)十、人机界面设计 (10)十一、流程图设计 (11)十二、致 (13)十三、参考文献 (13)一、自动售货机的理论背景与实际意义自动售货机是一种全新的商业零售形式,20世纪70年代自日本和欧美发展起来。
它又被称为24小时营业的微型超市。
在日本,70%的罐装饮料是通过自动售货机售出的:全球著名饮料商可口可乐公司在全世界就有50万台饮料自动售货机。
在中国,自动售货机1999年开始进入中国市场。
如今,在机场、地铁、商场、公园等客流量比较大的场所,已不难发现自动售货机的身影。
从自动售货机的发展趋势来看,它的出现是由于劳动密集型的产业构造向技术密集型社会转变的产物。
大量生产、大量消费以及消费模式和销售环境的变化,要求出现新的流通渠道;而相对的超市、百货购物中心等新的流通渠道的产生,人工费用也不断的上升;再加上场地的局限性以及购物的便利性等这些因素的制约,无人自动售货机作为一种必须的机器便应运而生了。
二、自动售货机的控制要求1.此自动售货机只有一个一元投币口。
2.售货共有四种饮料供选择,分别为红茶、绿茶、橙汁和咖啡。
3.投进去的总钱数可在数码管上显示硬币的个数;当硬币超过或等于一个的时候可选择绿茶与红茶的指示灯灯亮,当硬币大于等于二的时候,可选择红茶与绿茶以及可选择橙汁和咖啡的指示灯都会亮,表示都可选择,反之则灭。
4..如果顾客投入硬币后没有选择按任何饮料或者选择饮料后还剩下一些硬币,顾客只要自行按下退币按键,自动售货机将退还所投硬币。
4.当投入硬币的总值等于或超过物品价值时,对应的物品指示灯亮灯亮,表示可选择此种饮料。
实验四 自动售货机的模拟控制
![实验四 自动售货机的模拟控制](https://img.taocdn.com/s3/m/87e98ca68ad63186bceb19e8b8f67c1cfad6eec1.png)
实验面板图
实验步骤
1、输入3
QS
CF
ZL
I0.0 I0.1 I0.2 I0.3 I0.4 I0.5
输出
Y0 Q0.0
A Q0.1
B Q0.2
C Q0.3
D Q0.4
E Q0.5
F Q0.6
G Q0.7
❖ 2、打开主机电源开关将程序下载到主机中。
❖ 3、启动并运行程序观察实验现象。
实验四 自动售货机的模拟控制
❖ 实验目的 ❖ 实验说明 ❖ 实验面板图 ❖ 实验步骤
实验目的
❖ 了解并掌握可逆计数器CTUD在控制系统中 的应用,灵活运用定时器TON使他实现脉冲 的功能。
实验说明
M1、M2、M3三个复位按钮表示投入自 动售货机的人民币面值,YO货币指示(例如: 按下M1则Y0显示1),自动售货机里有汽水 (3元/瓶)和咖啡(5元/瓶)两种饮料,当 Y0所显示的值大于或等于这两种饮料的价格 时,C或D发光二极管会点亮,表明可以购买 饮料;按下汽水按钮或咖啡按钮表明购买饮 料,此时A或B发光二极管会点亮, E或F 发 光二极管会点亮,表明饮料已从售货机取出; 按下ZL按钮表示找零,此时Y0清零,延时 0.6S找零出口 G发光二极管点亮。
❖ L+--------1M、2M、V+; ❖ M--------COM、1L、2L、3L; ❖ 其余接线按照上述要求连线。
饮料自动售货机(带C程序和设计报告)
![饮料自动售货机(带C程序和设计报告)](https://img.taocdn.com/s3/m/4caa542b7fd5360cba1adb63.png)
(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;}。
基于C语言实现自动售货机控制的设计
![基于C语言实现自动售货机控制的设计](https://img.taocdn.com/s3/m/0ffe3d5887c24028915fc3db.png)
经验交流数码世界 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)以及递归功能的过程式语言。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计课程名称 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购买,确定购买商品后,系统显示如下。