c语言自动售货机实验报告.doc_第1页
c语言自动售货机实验报告.doc_第2页
c语言自动售货机实验报告.doc_第3页
c语言自动售货机实验报告.doc_第4页
c语言自动售货机实验报告.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课 程 设 计课程名称C 语言高级程序设计学院xxx小组成员 1XXX小组成员 2XXX小组成员 3XXX任课教师XXX20162017学年第 1学期一 所选题目与要求自动售货机问题情景: 分析学校教学楼自动售货机的功能,设计一个自动售货系统。功能要求:1. 系统能提供所售商品的清单(编号,名称,单价,数量)2. 客户输入商品编号及购买数量,系统显示应付的金额,输入客户实付的钱数,系统计算应找的钱数系统如果没有足够的库存或零钱时,现实应返还客户已付的金额。(不考虑用支付宝付款的情况)3. 可增加商品种类,增加商品库存,查询商品库存,查询商品销售量及销售额。成果要求:通过网络教学平台中的“研究型教学”建立分组,每组2-3人,通过小组讨论,确定每人的分工,并确定系统设计方案。各小组成员在网络教学平台上进行讨论、并完成最终的报告,整个过程作为小组及个人工作评价的重要依据。各小组成员根据系统设计方案分模块进行编程,在系统各模块编码完成后集成调试,并最终完成整个系统的测试。根据下面的报告模板完成综合实验总结报告,并打印成纸质报告,作为大作业课程结束时上交。附:综合实验总结报告应包含的内容: 1. 系统功能说明 2. 程序结构l 程序结构说明l 重要数据说明l 函数清单 /* 每个函数的书写格式 */ 函数名:所在文件名 函数功能 参数说明 算法描述或程序代码 3. 系统运行结果 4. 系统设计难点及其解决方法 5. 不足之处 6. 人员分工说明二 问题分析及算法设计主函数void main() /主函数模块 dosystem(pause);show(); /显示屏幕函数,商品清单loop1:printf(现在你有%.1f元n你可以选择商品序号开始选购或按 0 退出n,M); input(); /输入函数 if(M-goodsn-1.pricev) 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 /if else if(B=0)/没钱了怎么办 . if(m1=0) /离开 change(M); 返回至找零函数 else /加钱 . goto loop1;返回至再次购买 /else /else if else/有钱又有货,继续选 goto loop1; 返回至购买程序 /elsewhile(1); /main结构体定义struct goods /定义物品清单int number;char name10;float price;int quantity;goods9=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;money2=1,0,0.5,0;被调用的函数float show() /显示模块-屏幕int input() /输入模块.int sell(int n,float m,int a,int b) /出售模块 n为序号,m钱,if(goodsi.quantity0) /表示有货.elseA=0; /表示没货了elseB=0; /表示没钱了if(M=0) B=0;/判断出钱已用光return(a);return(b);void change(float m) /找钱模块switch(a)case 1花光.case 2:找零三 程序源代码#include#includefloat 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 name10;float price;int quantity;goods9=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;money2=1,0,0.5,0;float show() /显示模块-屏幕system(pause);putch(n);for(i=0;i8;i+)printf( |n);printf( |%d%8s%7.1f元.剩余%7d|n,goodsi.number,,goodsi.price,goodsi.quantity);printf( n);printf(购买东西前,请投入money!(支持1元,5元,10元和20元)n温馨提示,投入money过多可能无法完成退币n);scanf(%f,&M);return M;int input() /输入模块for(;) scanf(%d,&n); if(n8) printf(输入错误,请重新输入商品序号开始选购或按 0 退出n); else return n;break;int sell(int n,float m,int a,int b) /出售模块 n为序号,m钱,int i=0;while(n!=goodsi.number) i+;if(m=goodsi.price)if(goodsi.quantity0)goodsi.quantity-;M=m-goodsi.price;for(i=0;i8;i+)printf( |n);printf( |%d%8s%7.1f元.剩余%7d|n,goodsi.number,,goodsi.price,goodsi.quantity);printf( n);printf(你的商品 %d %s 已经出货了n,goodsn-1.number,);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;i2;i+) if(moneyi.moneys=m) m=m-moneyi.moneys; moneyi.mount+; i-;/继续检索当前的面额是否符合条件,才会有相同面值出现 printf( 谢谢光临!n找零n); for(i=0;i0) printf(%d张%.1f元tn,moneyi.mount,moneyi.moneys);m=0;M=0; money0.mount=0;break;void main() /主函数模块doint t=1; /用于标记售货机是否能完成退款,1表能float m1; /m1用于记录用户再次加的钱show(); /显示-屏幕loop1:printf(现在你有%.1f元n你可以选择商品序号开始选购或按 0 退出n,M); input(); /输入函数 if(M-goodsn-1.pricev) 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 /if else 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 if else/有钱又有货,继续选 goto loop1; /elsewhile(1); /main四 系统功能及运行效果图一, 系统提供商品清单,并提示购买前投入money二, 如果用户投入的money过多,售货机无足够硬币完成退币,自动退还用户已付金额三, 用户投入money购买,确定购买商品后,系统显示如下四, 如果不想继续购买,则按0退出,系统自动完成找零五, 想继续购买,则直接输入商品序号,当商品已售完时,系统自动提示如下六, 若不想退出,则可以继续购买其它商品,直到剩余钱不足时七, 想继续购买,则直接加钱后购买,钱全部花完时,系统提示如五 研究总结 1.研究过程接到研究型学习任务后,我们三个同学组成了小组进行探究。 首先我们先详细分析讨论了整个系统需要完成的功能细节,并考虑了实现的方法。一开始我们的方法不够优化,我们通过查阅一些资料,得到了新的方法,拓宽了思路, 并且再次进行了讨论。讨论完毕后进行了组员的分工,大家在一周内进行了代码的编写和模块化调试,最后所有模块合在一起进行了总的调试。调试过程中又发现了不少问题,我们又一一加以修改,最后形成

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论