合肥学院。
计算机科学与技术系。
2008~2009学年第二期。
2009年6月。
一、题目。收银台结算程序:
设计一个收银台结算程序,货品的信息有货品**、货品名称、货品**、货品数量等,该程序能够根据货品的输入**(货品名称或货品**)统计货品**,对多个货品能做**的累加统计并显示清单,另外还有找零功能。.
程序的任务和要求:
1)实现对货品信息的录入和修改;
2)能根据货物的名称或**进行查询其**;
3)能根据货品的输入**统计货品的存储量及****;
4)能对多个货品做**累加统计并显示清单;
5)具有找零功能。
二、问题分析。
1)需求分析:
需要记录每个货品的信息,此信息包括货品的**、名称、**和数量。在查询功能方面我所设计的是能根据货品的**进行查询所查货品的**和存储量以及****;在售出货品方面能对所个货品进行**的累加统计并显示所售出货品的清单。我决定用一个goods类来储存货品的信息code_goods用来储存货品的**,name goods用来储存货品的名称,price goods用来储存货品的**,geshu_goods用来储存货品的储存数量。
这些作为goods类的私有数据成员。另外该类的公有成员来实现上述所需的功能。该类的具体组成如下图所示:
私有成员数据。
公有成员。2)功能要求分析:
录入货品有关信息;
修改某个货品的信息并显示该货品的信息;
查询某个货品的信息;
显示所有货品的信息;
计算售出货品时能实现计算出货品的总价;
系统以菜单方式工作。
三、算法设计。
经过对问题的分析,我已经确定类的结构和数据的存储方式,在根据功能的要求分析将收银台程序地同分为几个部分:在主函数的开头设置一个菜单,用于选择你要进入的系统。可以用switch语句实现你所输入的数与你所想进入的系统相连接起来。
方便其管理。那就只剩下对每个系统的操作了。每个系统中要完成每类对象信息的输入和对货品总**的的计算。
在主函数定义一个类的对象,对每个货品的信息的录入可以通过类的对象来调用的成员函数来实现,对其货品总**的计算可以根据每个货品的**的计算方法的不同而编写不同的函数来实现。
主函数main()调用login()通过管理员密码然后登陆程序录入货品函数creat_goods()并通过保存函数 s**e()函数把信息存到指定创建的文档中,在货品的信息的录入可以通过多次的通过主菜单进行货品信息的录入,没有必要重新启动,再根据确定将要输入不同种类货品数量再重新录入,这样也比较方便。删除函数delet_goods() 删除已有的货品信息查询函数 find_goods() 并通过show()函数来来显示所查货品的信息。display_goods()函数是用显示已有所有货品的信息这样有便于对全部货品信息的浏览。
算总价函数jisuan_goods() 每输入货品的**,就通过链表对货品信系进行查找,并通过函数getprice()返回**所代表货品的**,然后在结合所买货品的个数来进行计算总**。(系统类图见后一页)
1)、通过调用login(),输入管理员密码wangqs然后输出了功能的主菜单;
2)、用了一个switch语句来进行功能的选择;
3)、接下来就是根据用户的选择再进行具体函数的实现。
属性和方法定义:
四、用户手册。
程序运行时,首先频幕上会显示主菜单,提示你进行选择。如果你想对新货品进行信息录入就按“1”键;想对货品信息进行查询就按“2”键;删除货品信息就按“3”键;如想显示所有货品信息就按“4”键;计算买家所购的所有货品总价并设有找零就按“5”键;退出系统就按“6”键。
五、调试及测试。
1)调试过程:
调试过程中遇到的主要问题,编译语法错误及修改:
花括号的使用,在循环中最为重要。在写外部函数的时候,因为少写了一个函数而导致外部函数出现声明的函数不合法。也花了我好长时间才弄明白我到底错在哪。
全局变量的声明,在后面两个外部函数中用到了好多一样的符号,为了方便我在程序的开头就声明了几个全局变量,避免了后面因为没有声明而直接调用,导致程序出现错误。
文件的使用,在把数据装入文档中没有出现问题,但当读入程序时却出现了乱码。没弄清错误的原因。
在程序中我使用了链表查找法,但是对链表的使用是相当的不熟悉,所每次使用都出现很多的错误,然后自己就去看书了解链表的使用,每一次看书都能对链表又更深刻的了解,同时也向其他的同学和老师请教。在find_goods()等函数均用到了链表查找。
2)对设计实现的回顾讨论和分析:
设计的实现主要体现在各项外部函数中。在外部函数中实现了菜单、查询、显示清单、文件的存储装入等功能。在实现的过程中,与我平常编写的小程序那短短的几句或几十句**的区别就是本程序中运用了大量的**,函数也不单一。
本程序中遇到的主要困难就是需要仔细考虑函数的相互调用,以及外部函数中变量的作用域的考虑,特别是全局变量和局部变量的使用,在运用过程中花了不少时间来修改局部变量与全局变量,不然函数无法调用一些常用**。因此在写程序过程中要特别细心。
运行实例:六、收获与感想。
我在这次收银台结算程序的设计过程中学到了很多东西,比如在第三个系统中输入完成后要输出显示清单的,刚开始用一个存放结果的字符串数组,并用指针指向它,输出结果正确,但是输出结果比较乱,好的一方面,对动态数组的操作更加熟练了。第二次用的是把分析结果输出到文件里,以前老师没有讲,只是让自己看,这次设计中虽然没有达到用文件进行操作的效果,但是学会了对文件的输入输出。
刚拿到此程序时觉得超市的收银台系统很神秘很难做,这次设计虽然只设计了一个简单的,功能有限的收银台系统程序,但是,我觉得只要懂得了分析原理,有一个明确的编程思路,做好设计框架图,依照框架编写整个程序就显得十分清晰,收银台系统并不神秘。
七、参考文献。
1]马瑞新,田琳琳。高级c++程序分析与设计。大连:大连理工大学出版社,2007
2]郑莉,董渊,张瑞风。c++语言程序设计(第3版).北京:清华大学出版社,2008
3]何钦铭,颜晖。c语言程序设计。北京:高等教育出版社,2008
4] 严蔚敏。 数据结构(c语言版). 北京:清华大学出版社,1997
八、附录——带注释的源程序。
#include
#include
#include
#include
using namespace std;
class goods
public:
void creat_goods();新建一个货品
void display_goods();显示所有的货品。
void delete_goods();删除函数。
void find_goods();查找函数。
void s**e_goods();保存函数。
void jisuan_goods();**货品,计算总价。
float copy(float i)
float getprice_goods()
void install(char name,char code,int price)
//存储信息至链表
char *rename()/返回货品的名称。
char *recode()
//返回货品的**。
float reprice()
//返回货品的**。
void show()
//显示信息函。
goods *next;//类指针。
private:
char name_goods[50];/货品的名称。
char code_goods[20];/货品的**。
float price_goods;//货品的**。
void goods::creat_goods()
cout< cin>>name_goods;
cout<<"货品的**:";
cin>>code_goods;
cout<<"货品的**:";
cin>>price_goods;
s**e_goods();调用保存函数将信息存入文件夹。
cout<<"货品信息已经保存!" void goods::delete_goods()/删除函数。 goods *head,*p,*q; char c; char cd[20]; char name[50]; char code[20]; float price; head=null; cout<<"请输入要删除的货品的**:" ifstream f1(""以读方式打开文件。 q=new goods; head=q; f1>>name>>code>>price; 洛阳理工学院。课程设计说明书。课程名称。设计课题。专业。班级。学号。姓名。完成日期2014年12月26日。问题描述 小四宋体,行间距单倍行距,每段缩进两个字符。叙述一下设计的内容要求。基本要求 小四宋体,行间距单倍行距,每段缩进两个字符。叙述一下设计的基本要求。测试数据 小四宋体,行间距单倍行距,每... 课程设计总结,课程设计报告。3.尝试应用项目管理软件进行项目进程的规划管理 绘制甘特图,不作硬性要求 二 选题说明。人事管理是企业信息管理的重要部分,面对大量的人事工资信息,财务部门采用人力处理将浪费大量的时间 人力和物力,且数据的准确性低。因此,开发一个界面友好,易于操作的人事工资管理软件进行自动... 学校名。课程设计报告。课程名称 c语言程序设计 系别 专业班级 学号。姓名。课程题目 企业人事管理系统 完成日期 指导老师 年月日。附件。课程设计的内容。企业人事管理系统 本项目的目标是开发一个功能实用,操作简便,简单明了的人事管理系统。能够录入人事的基本资料,在操作上能够完成诸如添加 修改 删除 ...课程设计报告格式 课程设计
课程设计总结,课程设计报告
课程设计 课程设计报告格式