1、程序设计与实践实验报告实验二:自动售货机姓名:学号:班级:实验时间:2015/03/09一:实验名称:自动售货机二:实验环境: 一台安装有 VC6.0 程序的电脑。三:实验目的(1)培养和锻炼对具有一定复杂度和规模的问题的分析与求解能力。(2)掌握程序设计的综合方法,能综合应用各种数据类型实现较复杂数据的存储。(3)培养良好的 C 程序设计风格与代码规范意识。四:实验内容:下图所示为简易自动售货机,物品架 1、2 上共有 10 样商品,按顺序进行编号分别为 110,标有价格与名称,一个编号对应一个可操作按钮,供选择商品使用。如果物品架上的商品被用户买走,储物柜中会自动取出商品送到物品架上,保证
2、物品架上一定会有商品。用户可以一次投入较多钱币,并可以选择多样商品,售货机可以一次性将商品输出并找零钱。用户购买商品的操作方法如下。(1)从“钱币入口 ”放入钱币,依次放入多个硬币或纸币。钱币可支持 1 元(纸币、硬币)、2 元(纸币) 、5 元(纸币)、10 元(纸币),放入钱币时,控制器会先对钱币进行检验以识别出币值,并统计币值总额,显示在控制器显示屏中,提示用户确认钱币放入完毕。(2)用户确认钱币放入完毕,便可选择商品,只要用手指按对应商品外面的编号按钮即可。每选中一样商品,售货机控制器会判断钱币是否足够购买,如果钱币足够,自动根据编号将物品进行计数和计算所需钱币值; 如果钱币不足,则结
3、束购物。请为自动售货机编程,输入钱币值序列,以-1 作为结束,依次输入多个购买商品编号,若编号超出范围或余额不足则输入结束,输出钱币总额与找回零钱,以及所购买商品名称及数量。五:实验步骤:(实验设计,关键代码。实验结果需截图)#include#includestruct shopchar name20;int money;int number,su;b11;int main(void)int m,s=0,a=0,c=100,i,n,sum=0;void number(int n);strcpy(b1.name,“Table-water“);strcpy(b2.name,“Table-water
4、“);strcpy(b3.name,“Table-water“);strcpy(b4.name,“Coca-Cola“);strcpy(b5.name,“Milk“);strcpy(b6.name,“Bee“);strcpy(b7.name,“Orange-Juice“);strcpy(b8.name,“Sptite“);strcpy(b9.name,“Oolong-Tea“);strcpy(b10.name,“Green-Tea“);for(i=1;i=1) scanf(“%d“,if(cbn.money)break;if(n=-1)break;number(n);sum=sum+bn.mo
5、ney;c=s-sum;printf(“total:%dyuann“,sum);printf(“Total:%dyuan,change:%dyuan“,s,c);for(i=1;i=10;i+)if(bi.su!=0)printf(“%s%d“,bi.name,bi.su);return 0;void number(int n)switch(n)case 1:b1.su+;break;case 2:b2.su+;break;case 3:b3.su+;break;case 4:b4.su+;break;case 5:b5.su+;break;case 6:b6.su+;break;case 7:b7.su+;break;case 8:b8.su+;break;case 9:b9.su+;break;case 10:b10.su+;break;default:break;六:实验小结:(主要介绍程序的完成情况,重点、难点以及解决方法,有待改进之处,以及有何收获,体会等)本次作业总体来说难度还可以,大部分编程还是没问题。从理解题目要求到寻找思路,写程序还是比较流畅,但中间还是出现一些小的问题,运行的时候出现错误,不过还是进行了及时的修改。有些基础的问题,比如说符号等等还是会出现错误,以后会注意。