实 训 报 告
(2015~2016学年度 夏季学期)
课程名称:高级语言程序设计实训
实验名称:“自动售货机”
1.实验目的及要求
(1)软件、硬件环境
a.编译器:codeblock。
b.内存:>1.89 MB (1,986,560 字节)。
2.实验步骤
(1)仔细阅读《高级语言程序设计实训》指导书。
(2)需求分析:对用户提出的问题提出解决的办法和思路。
(3)根据需求,分析系统中的各个实体之间的关系及其属性和行为,设计系统功能模块(系统流程图),并设计相应的类和界面。
(4)根据基本思路,确定输入和输出,设计程序的算法。
(5)确定用到的所有类的描述和定义(包括属性和方法),并设计测试程序来对类进行测试。
(6)编辑、编译、调试程序,检验程序的可运行性。
3. 实验内容
(1)需求分析、概要设计、详细设计核心代码(要求有足够的注释)
a.需求分析: 用户要求“自动售货机”更加的人性化,比如:商品的数量
没有最大限等等;用户要求功能界面能够简洁明了,突出主
体功能,最好应用图标来对客户进行引导;用户要求要显示
每个商品的售价和容量;并能够在用户做出错误指令时,即
时提示用户,以确保损失。
b.概要设计:
【注:以上只提供少量的可供选择的商品,以此作参考,后期可扩充商品种类。】
“自动售货机”的流程图:
c.详细设计核心代码(要求有足够的注释)
cout<<"///"<<endl;
cout<<"您将支付:"<<Pro.Pay_product(Code,Number)<<"元"; //客户需支付的总金额
cout <<"\n";
cout <<"\n";
int money;
do{
cout <<"请插入钞票(注:只限于5元、10元、20元、50元、100元面值)"<<"\n";
cin>>money;//顾客放入的钞票面值
cls();
}while(money<=0||money>100);//限制钞票额度
int M=Pro.Pay_product(Code,Number);//调用Pay_product()函数,用于计算商品总金额
do{
if(money-Pro.Pay_product(Code,Number)>=0)
{
cls();
cout<<"找回您:"<<money-Pro.Pay_product(Code,Number)<<"元"<<"\n";// 找零功能的实现
cout<<"谢谢惠顾"<<"\n";
cout<<"(注:0:返回主页;任意键:退出):";
cin>>n;
if(n==0)
{
goto END;//客户输入“0”键时,返回主页“Management.txt”
}
else
{
return 0;//客户按“任意键”退出系统
}
};
do{
M=money-Pro.Pay_product(Code,Number);//M=顾客放入金额-商品总金额
TTOO:
cls();
cout<<"您插入的金额不足,请继续。。。。";//客户提供金额不足时,提示一下
cout<<"您还需要插入:"<<abs(M)<<"元"<<"\n";
cout<<"\n";
cout<<"请继续插入钞票:";
int num;
cin>>num;//顾客再次放入钞票的面值
if(num+M>=0)
{
cls();
cout<<"找回您:"<<num+M<<"元"<<"\n";
cout<<"谢谢惠顾!";
cout<<"(注:0:返回主页;任意键:退出)";
cin>>n;
if(n==0)
{
goto END;//客户输入“0”键时,返回主页“Management.txt”
}
else
{
return 0;//客户按“任意键”退出系统
}
};
M=num+M;//找零的循环计算
goto TTOO;
}while(num+money-Pro.Pay_product(Code,Number)<0);//客户提供金额不足是的循环,提示客户放入钞票
// }
}while(money-money-Pro.Pay_product(Code,Number)<0);//客户提供金额不足是的循环,提示客户放入钞票
return 0;
}
4. 实验结果
(1)基本上实现:前面所叙述的UI设计界面上的功能,确保了顾客的功能交互体验。
(2)基本上实现:以不同身份进入系统如:“管理员”、“顾客”;先以“管理员“完
成基本的设置,再显示“mainform.txt”即主页供客户选择。
(3)基本上实现:顾客购买所需商品时的人工智能化。
(4)最终运行截图如下:
5. 实验总结分析
(务必要有详细的总结分析和心得体会)
| a.缺点: | 1、申明各个价格变量是的方式可能不便于观察与修改,申明商品类商品 设定的价格可以统一设定,减少多次设定时的错误。 2、申明的相关变量或自定义函数位置混乱,繁多。 3、主函数中循环中过多,分类过多不利于修改与分析。 4、过多的使用goto语句,增加了后期对代码的修改难度。 5、主函数里内嵌语句过多,调用自定义函数频繁。 6、销售额功能受限。
|
b.优点: |
1、各个功能较为全面,商品的价格设定,价格的价格存储,管理密码 修改和收货系统的个性化。 2、程序运行是正常,让人一目了然,清晰可见, 较为贴近正常逻辑顺序的思唯。 3、管理员能够随时调整一些视频的价格和种类,在一定程度上符合了现代都市的快节奏的生活。 4、基于互联网信息安全问题,在使用管理员权限时,我们增加了输入密码环节,在一定程度上避免了信息的丢失与窃取。 5、在顾客模块中,我们以突出商品的简易界面,为顾客提供了一个简单明了的商品界面,各种人性化的服务与智能机身的完美结合,如:“提示:顾客是否需要加冰”等等,更加符合了顾客的需求。 6、“自动售货机”模拟的是现实生活中销售员的一些基本的流程,这使得整个购买商品的操作简单化,更加贴近人们日常的生活。 7、在创新方面,此款“自动售货机”合理的运用了“大数据挖掘”理念,为销售人员提供了大量的可供分析的有效数据,管理员可以以此为基准,调整商品价格与种类。
| |
* 心得体会: 1、通过对整个“自动售货机”所有功能的了解,以及为实现相关功能和界面交换,我们使一个简易的UI设计因此而生,并且从对“自动售货机”功能的创新与思考,我们以流程图的方式引导我们学习和编写相关代码(之前是直接打代码,之后感觉这样容易思绪混乱),这样的过程,让我们明白了:要真正的实现一个项目时,必须设计好一个简易明了的流程图;通过流程图我们可以直观的看到每个功能之间的联系,这让我们知道了,接到项目的第一件事并不是编写代码,而是设计好一个完整的流程图和设计UI界面。 2、通过此次的编写代码,我们更加的明白了代码简洁度的重要性和相关变量设定的规则的重要性。 3、通过这次制作程序,让我们明白了其中奥妙无穷,通过各种函数类型的灵活运用合并成一个完整的程序,我们使它运行无误,我们充满满足感。当然,这其中还有一些不足。我们将更加努力,我们一直觉得“办法总比困难多”。 |