河北联合大学饮料自动售货机程序设计书.docx
- 文档编号:4667339
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:16
- 大小:160.41KB
河北联合大学饮料自动售货机程序设计书.docx
《河北联合大学饮料自动售货机程序设计书.docx》由会员分享,可在线阅读,更多相关《河北联合大学饮料自动售货机程序设计书.docx(16页珍藏版)》请在冰豆网上搜索。
河北联合大学饮料自动售货机程序设计书
河北联合大学
2012-2013第2学期
《软件设计基础-C++》
课程设计报告
设计名称:
饮料自动售货机
姓名:
牛翔飞学号:
201214160110
专业班级:
12化学工程与工艺1班
学院:
化学工程学院
设计时间:
2013-6-5
设计地点:
河北联合大学
指导教师评语:
教师评定:
自评成绩:
78
指导教师签字:
年月日
目录
1.课程设计目的
2.课程设计任务与要求
3.课程设计说明书
4.课程设计成果
5.程序调试过程
6.设计问题的不足和改进方案
7.课程设计心得
8.参考文献
1.课程设计目的
《软件设计基础-C++》课程设计是这门课程的实践性教学环节之一,本次设计结合实际应用的要求,使课程设计既覆盖C++的知识点,又接近工程实际需要。
目的是通过课程设计的综合训练,培养学生实际分析问题、解决问题的能力,以及编程和动手能力,最终目标是通过课程设计这种形式,帮助学生系统掌握C++这门课程的主要内容,养成良好的编程习惯,更好的完成教学任务。
2.课程设计任务与要求:
要求:
本次课程设计利用《软件设计基础-C++》课程中所学到的编程知识和编程技巧,完成具有一定难度和工作量的程序设计题目,帮助学生掌握编程、调试的基本技能,独立完成所布置的任务。
要求:
1、对系统进行功能需求分析
2、设计合理的数据结构和系统框架
3、编程简练,程序功能齐全,能正确运行
4、说明书、流程图要清楚
5、课题完成后必须按要求提交课程设计报告
任务:
将自己选择题目的任务要求简单填写在此处。
基本要求:
(1)本售货机只接受10元、5元、2元、1元和0.5元的纸币和硬币。
(2)顾客一次只能投入一种上述金额的纸币或硬币,当用户重复投入时货币金额的累加。
(3)销售的饮料包括5种:
可口可乐(2元)、百事可乐(2元)、橙汁(3元)、咖啡(5元)、纯净水(1.5元)。
(4)系统通过必要的提示信息,提示用户完成相应的操作。
(5)若顾客所购买的饮料已经售完,提示用户完成相应的操作。
(6)完成一次售货后,系统自动进行结算找零。
3.创新要求
在基本要求达到后,可以进行创新设计。
(1)更改程序,实现一次购买多种商品的功能。
(2)对于自动售货机的商家而言,还应该有一个交互的界面,可以让商家来更改自动售货机中货物的品种、单价、数量等信息。
3.课程设计说明书
概要设计
在主函数中,首先定义了一个DrinkMachine类(自动售货机类)的对象dri,并未显 式地定义MoneyCounter类和GoodsInfo类的对象。
但是在DrinkMachine类中含有MoneyCounter类和GoodsInfo类的数据成员。
然后设计一个两重循环,外循环的持续条件是顾客继续购买,内循环的持续条件是顾客继续重复投币,即顾客可以反复投币,直至投够为止。
当顾客购买成功或不再继续购买时,流程中止。
程序流程如图所示
模块说明:
模块结构图
详细设计
总体流程图:
4.课程设计成果
程序源代码,运行结果(可用屏幕抓图的方法说明)(五号,宋体)(多页)
#include
#include
#include
usingnamespacestd;
classmoneycounter//钱币类
{
public:
moneycounter()//初始化
{
input_money=0.0;
}
~moneycounter(){}
voidgetmoney();//提示顾客投币
floatmoney_from_buyer();//投币金额
voidclear();//清空,准备下一轮投币
private:
floatinput_money;//顾客投入的金额
};
classgoodsinfo//商品类
{
public:
goodsinfo()
{
name="";
price=0.0;
total=0;
}
~goodsinfo(){}
voidset_goods(string,float,int);
stringgoods_name();
floatgoods_price();
intgoods_number();
private:
stringname;
floatprice;
inttotal;
};
classdrinkmachine//售货机类
{
public:
drinkmachine();
~drinkmachine(){}
voidshowchoices();//显示饮料信息
voidinputmoney();//获取顾客投入的钱币
boolgoodsitem(int);//检查饮料的状态
voidreturn_allmoney();//返回钱数
voidreturn_money();
voiddeal_money(intselect);
private:
moneycountermoneyctr;
goodsinfov_goods[5];
};
staticfloatchange;
voidmoneycounter:
:
getmoney()
{
floatmoney;
cout< "< cin>>money; input_money+=money; change=input_money; cout< "< } floatmoneycounter: : money_from_buyer() { returninput_money; } voidgoodsinfo: : set_goods(stringn,floatp,intnum) { name=n; price=p; total=num; } stringgoodsinfo: : goods_name() { returnname; } floatgoodsinfo: : goods_price() { returnprice; } intgoodsinfo: : goods_number() { returntotal; } drinkmachine: : drinkmachine() { v_goods[0].set_goods("橙汁",3,20); v_goods[1].set_goods("咖啡",5,0); v_goods[2].set_goods("纯净水",1.5,20); v_goods[3].set_goods("可口可乐",2,30); v_goods[4].set_goods("百事可乐",2,28); } voiddrinkmachine: : showchoices() { cout< for(inti=0;i<5;i++) { cout< } cout<<"5退款并且退出"< } voiddrinkmachine: : inputmoney() { cout< "< moneyctr.getmoney(); } booldrinkmachine: : goodsitem(intselect) { intnumber=v_goods[select].goods_number(); if(number>0) { if(moneyctr.money_from_buyer()>=v_goods[select].goods_price()) { floatchange=moneyctr.money_from_buyer()-v_goods[select].goods_price(); returntrue; } else { cout< "< returnfalse; } } else { cout< "< returnfalse; } returnfalse; } voiddrinkmachine: : deal_money(intselect) { change-=v_goods[select].goods_price(); if(change<0) { cout<<"您的余额不足! "; change+=v_goods[select].goods_price(); } } voiddrinkmachine: : return_allmoney() { cout< "< return; } voiddrinkmachine: : return_money() { cout< "< } //*************************************************************************************** voidmain() { drinkmachinedri; stringbuf; boolgo_on(true),cash_on(true),got_it(true); booljudge=true; intcount=0; cout< while(go_on) { while(cash_on&&judge) { dri.inputmoney(); cout< (y/n)"; cin>>buf; if(buf=="n") { cash_on=false; break; } } dri.showchoices(); cin>>buf; intselect=atoi(buf.c_str()); if(select==5) { if(count==0) { dri.return_allmoney(); } else dri.return_money(); go_on=false; } else { got_it=dri.goodsitem(select); judge=false; if(got_it) { dri.deal_money(select); } cout< (y/n)"; cin>>buf; if(buf=="y") { cash_on=true; go_on=true; } else { dri.return_money(); cout< "< go_on=false; } } } cout< "< } 5.程序调试过程 6.设计问题的不足和改进方案 实现一次购买多种商品的功能。 7.课程设计心得 首先通过这次的编程实习很好的帮助我复习巩固了大一一年来所学的C++的所有基础知识,通过对这些知识的综合应用加深了我对这些知识的理解,当然也让我牢牢的掌握了很多C++知识。 其次在变这个系统程序的过程中我也遇到了很多问题,但通过复习、自学解决了很大一部分,因此该实习很好的提升了我的综合能力,还有极少的一部分难题或者想不通的地方都通过与同学的交流学习解决了,从这个角度来说这个实习还提升了我与人交流的能力。 综上所述,这个实习让我受益匪浅。 8.参考文献 VisuslC++2005入门经典(美IvorHorton著)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 河北 联合 大学 饮料 自动 售货 程序设计