



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计课程名称C 语言高级程序设计学院xxx小组成员 1XXX小组成员 2XXX小组成员 3XXX任课教师XXX2016 2017 学年第1 学期一所选题目与要求自动售货机问题情景:分析学校教学楼自动售货机的功能,设计一个自动售货系统。功能要求:1. 系统能提供所售商品的清单(编号 , 名称,单价,数量)2. 客户输入商品编号及购买数量, 系统显示应付的金额, 输入客户实付的钱数,系统计算应找的钱数系统如果没有足够的库存或零钱时, 现实应返还客户已付的金额。(不考虑用支付宝付款的情况)3. 可增加商品种类, 增加商品库存, 查询商品库存, 查询商品销售量及销售额。成果要求:通过网络教学平台中
2、的“研究型教学”建立分组,每组 2-3 人,通过小组讨论,确定每人的分工,并确定系统设计方案。各小组成员在网络教学平台上进行讨论、 并完成最终的报告, 整个过程作为小组及个人工作评价的重要依据。各小组成员根据系统设计方案分模块进行编程, 在系统各模块编码完成后集成调试,并最终完成整个系统的测试。根据下面的报告模板完成综合实验总结报告, 并打印成纸质报告, 作为大作业课程结束时上交。附:综合实验总结报告应包含的内容:1. 系统功能说明2. 程序结构程序结构说明重要数据说明函数清单/*每个函数的书写格式*/函数名:所在文件名函数功能参数说明算法描述或程序代码3. 系统运行结果4. 系统设计难点及其
3、解决方法5. 不足之处6. 人员分工说明二问题分析及算法设计主函数void main()/主函数模块dosystem("pause");show(); / loop1:printf(" input(); /显示屏幕函数,商品清单现在你有 %.1f 元 n 你可以选择商品序号开始选购或按输入函数0退出 n",M);了nif(M-goodsn-1.price>v) t=0;printf("对不起,售货机没有足够的零钱谢谢光临 ! 退还 %.1f 元 n",M);break; /判断售货机是否有足够的零钱,0 表无if(n=0) /确
4、认用户是选择离开还是买东西开始购买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 whi
5、le(1); /main结构体定义struct goods/定义物品清单int number;char name10;float price;int quantity; goods9 =1,"可口可乐",4,5,5,"雪碧 ",2.5,5,",3,5,2,"拿铁咖啡",4,5,3,"橙汁 ",3,5,4,"奶茶6,"矿泉水 ",2,5,7,"椰子汁",2.5,5,8,"格瓦斯 ",3,5;struct money/定义钱的种类,数量用于
6、记录找零的某值张数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.quantity>0) /表示有货.elseA=0; /表示没货了elseB=0; /表示没钱了if(M=0) B=0;/判断出钱已用光return(a);return(b);void change(float m) / 找钱模块switch(a)case 1 花光 .case
7、2: 找零 三程序源代码#include<stdio.h>#include<conio.h>float M;/M为投入的钱数intA=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,"奶茶 ",4,5,5
8、,"可口可乐 ",3,5,2,"雪碧 ",2.5,5,拿铁咖啡 ",4,5,3,"橙汁 ",3,5,4,"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
9、39;);for(i=0;i<8;i+)printf("|n");printf("|%d%8s%7.1f元 .剩余 %7d|n",goodsi.number,,goodsi.price,goodsi.quant ity);printf("n");printf(" 购买东西前,请投入 money!( 支持 1 元,5 元 ,10 元和 20 元)n 温馨提示,投入 money过多可能无法完成退币 n");scanf("%f",&M);return M;int i
10、nput() /输入模块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!=goodsi.number) i+;if(m>=goodsi.price)if(goodsi.quantity>0)goodsi.quantity-;M=m-goodsi.price;
11、for(i=0;i<8;i+)printf("|n");printf("|%d%8s%7.1f元 .剩余 %7d|n",goodsi.number,,goodsi.price,goodsi.quant ity);printf(" n");printf("你的商品 %d %s 已经出货了n",goodsn-1.number,);elseA=0; /表示没货了elseB=0; /表示钱了if(M=0) B=0;/判断出钱已用光return(a);return(b);
12、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(moneyi.moneys<=m)m=m-moneyi.moneys;moneyi.mount+;i-;/继续检索当前的面额是否符合条件,才会有相同面值出现printf("谢谢光临 !nfor(i=0;i<2;i+)if(moneyi.mount
13、>0)找零 n");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.price>v)t=0;print
14、f("对不起,售货机没有足够的零钱了 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 你还有商品(直接输入商品序号)或按0离开 n",n,M);input(); /输入函数%.1f元n你可以买其它if(n=0)change(M); /钱函数elseA=1;B=1;/要将标记归位goto
15、 loop2; /else/ifelse if(B=0)/没钱了怎么办printf("噢,没钱了,你可以继续投入scanf("%f",&m1);if(m1=0)change(M);money购买,或按0离开 n");elseM=M+m1;A=1;B=1;/标记要归位goto loop1; /else /else ifelse/有钱又有货,继续选goto loop1; /else while(1); /main四系统功能及运行效果图一,系统提供商品清单,并提示购买前投入money二, 如果用户投入的 money过多,售货机无足够硬币完成退币, 自动
16、退还用户已付金额三,用户投入 money购买,确定购买商品后,系统显示如下四,如果不想继续购买,则按0 退出,系统自动完成找零五,想继续购买,则直接输入商品序号,当商品已售完时,系统自动提示如下六,七,若不想退出,则可以继续购买其它商品,直到剩余钱不足时想继续购买,则直接加钱后购买,钱全部花完时,系统提示如五研究总结1. 研究过程接到研究型学习任务后, 我们三个同学组成了小组进行探究。 首先我们先详细分析讨论了整个系统需要完成的功能细节, 并考虑了实现的方法。一开始我们的方法不够优化, 我们通过查阅一些资料,得到了新的方法,拓宽了思路, 并且再次进行了讨论。 讨论完毕后进行了组员的分工, 大家在一周内进行了代码的编写和模块化调试,最后所有模块合在一起进行了总的调
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 育苗知识与技能培训考核试卷
- 科研伦理审查与违规处理考核试卷
- 染整行业绿色制造与清洁生产考核试卷
- 染料在农业生物防治中的应用考核试卷
- 竞赛场地布局与设计考核试卷
- 批发商财务管理与风险控制考试考核试卷
- 租赁农机在农业机械化推广中的作用考核试卷
- 拼多多农产品电商平台活动策划代运营服务协议
- 海关关员岗位海关业务流程优化聘用合同
- 城市管理系统数据收集与合规利用协议
- 水下探测技术发展-洞察分析
- DB21T 3508-2021 旅游景区木栈道设置与维护规范
- 扁桃体癌护理查房
- 医疗技术销售技巧
- 2024专利代理人考试真题及答案
- 2025年高考数学模拟卷(一)含答案及解析
- 高英-Mark-Twain-Mirror-of-America原文+翻译+修辞
- 中国老年骨质疏松症诊疗指南(2023)解读课件
- 高中英语新课程标准解读课件
- 《宠物营养与食品》课件-1.3宠物的蛋白质营养
- 2024年湖南省中考道德与法治试题卷(含答案解析)
评论
0/150
提交评论