课程设计报告
学 院:_ 专业班级:
学生姓名: 学 号:
设计地点(单位)_______ _计算机自主学习中心 __ ______ _
设计题目:________ 超市商品管理系统__ ____ _____
完成日期: 年 月 日
指导教师评语: ______________________ _________________
_________________________________________________________________________________________________________________________________________________________________________________________________________ __________ _
成绩(五级记分制):______ ________ __
指导教师(签字) :________ _____ __
摘 要
此次课程设计为超市管理系统,由VC6.0编译器编译而成。通过本系统,在主界面可以通过行管提示的操作,对商品进行购买、添加、修改、删除、查询、统计等管理操作。系统主要包含了食品、化妆品、日用品、饮料四大类,每一类都包含了商品的几大最基本信息,商品名称、品牌、价格、生产厂家、库存量等。除四大类外有一个总的商品基类,通过继承机制进行访问基类,同时也结合运用了模板。通过此系统用户可以简洁方便的购买商品,管理人员也可轻松进行商品管理,从而实现高效的管理模式,为公司企业商家等创造最大化的经济效益。
关键词:管理系统 基类 继承 模板
课程设计任务书
设计题目:超市商品管理系统设计
学生姓名 | 汤荣安 | ||||
课程名称 | 面向对象程序设计 | 专业班级 | 计科11 | ||
I304/I306 | 起止时间 | 2013年1月7日~1月18日 | |||
设计内容及要求 | 1)问题描述 超市中商品分为四类,分别是食品、化妆品、日用品和饮料。每种商品都包含商品名称、价格、库存量和生产厂家、品牌等信息。 主要完成对商品的销售、统计和简单管理。 2)功能要求 (1)销售功能。购买商品时,先输入类别,然后输入商品名称,并在库存中查找该商品的相关信息。如果有库存量,输入购买的数量,进行相应计算。如果库存量不够,给出提示信息,结束购买。 (2)商品简单管理功能。 添加功能:主要完成商品信息的添加。 查询功能:可按商品类别、商品名称、生产厂家进行查询。若存在相应信息,输出所查询的信息,若不存在该记录,则提示“该记录不存在!”。 修改功能:可根据查询结果对相应的记录进行修改。 删除功能:主要完成商品信息的删除。先输入商品类别,再输入要删除的商品名称,根据查询结果删除该物品的记录,如果该商品不在物品库中,则提示“该商品不存在”。 (3)统计功能。 输出当前库存中所有商品的总数及详细信息;可按商品的价格、库存量、生产厂家进行统计,输出统计信息时,要按从大到小进行排序。 3)问题的解决方案 根据系统功能要求,可以将问题解决分为以下步骤: (1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计; (2)分析系统中的各个实体及它们之间的关系; (3)根据问题描述,设计系统的类层次; (4)完成类层次中各个类的描述; (5)完成类中各个成员函数的定义; (6)完成系统的应用模块; (7)功能调试; (8)完成系统总结报告。 根据题目要求,运用所学知识,完成设计和实现工作,并按照书写规范,撰写课程设计报告。 | ||||
设计 参数 | (1)系统分析、设计正确。 (2)结果以图表方式显示。 (3)界面简洁、美观。 (4)报告格式规范。 | ||||
进度 要求 | 周一:明确设计任务,学习相关基础知识 周二:熟悉各知识点,进行基础练习 周三:根据题目要求,进行设计和实现 周四:根据题目要求,进行设计和实现 周五:程序测试 | ||||
参考资料 | [1]Richard Johnsonbaugh. Martin Kalin.《面向对象程序设计—C++语言描述》.机械工业出版社.2009年 [2]钱能.《C++语言程序设计教程》.清华大学出版社.2005年 | ||||
其它 | |||||
说明 | 1.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。2.若填写内容较多可另纸附后。 3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。 |
1.1 需求分析
随着科技的进步,计算机技术的飞速发展,许多企业在进行技术改造的同时,各种工作也趋向于信息技术化管理。管理系统事一个信息化、智能化和先进管理集合,一个高效有用的管理系统课一减少一个企业或者上商家的管理费用和人力物力开支,不仅可以节省大量时间,还可以为企业的各项决策带来巨大的经济效益。与人们生活接触最贴近的超市也有它自己完善的管理系统。计算机的自动化管理系统提高了超市管理的管理水平和工作效率,增强超市的竞争能力降低成本,为客户提供更加优质的服务。所以需要开发一个计算机系统来代替人工管理超市人员对商品信息管理和顾客购买等方面的工作。使用该系统可以使超市的服务更加快捷、准确和方便,减少大量的人工操作,提高了工作效率。
1.2 功能简介
1.2.1 销售功能
本功能主要是针对消费者用户使用。在购买商品时,用户得先选择输入所要购买商品的类别,是食品、化妆品、日用品和饮料中的哪一类,然后在输入商品名称,系统会自动在库存当中查找该商品的相关信息,如果在库存中还有库存量,则用户接着进行下一步操作,根据提示输入要购买的商品的数量,进行相应的计算。如果库存量不够,则系统会给出提示信息,然后询问顾客是否重新购买,又回到系统页面主菜单。
1.2.2 商品管理功能
商品管理功能主要是针对超市管理人员使用,对库存商品进行简单的管理。本功能当中主要可以实现商品的添加、查询、修改、删除等功能。
(1)添加商品
通过主页面提示菜单键入相对应数字进入添加商品选项,然后根据提示添加商品信息,主要包括商品名称、商品品牌、商品价格、商品生产厂家、以及商品的库存量。
(2)删除商品
通过主页面的提示菜单键入相应数字进入删除商品选项,完成最商品信息的删除。首先选择输入要删除商品的类别,再输入要删除的商品的名称,根据查询结果删除商品的记录,如果该商品在库存物品当中不存在,则系统给出相应提示,该商品不存在。
(3)修改商品
通过主页面的提示菜单键入相应数字进入修改商品选项,对商品信息进行修改。可根据查询的结果对相应的商品信息进行修改,包括商品的名称、品牌、价格、生产厂家和库存量。
(5)查询商品
通过主页面的提示菜单键入相应数字进入查询商品选项,对商品信息进行查询。可根据相应提示选择查询方式,按商品类别、商品名称、生产厂家进行查询商品的全部信息。如果存在相应商品的信息,则输出所查询商品的信息,如果不存在该商品的记录,则系统自动提示该商品的记录不存在。
1.2.3 统计功能
此功能主要是提供显示功能。用户可通过主页面的显示菜单键入相应的数字进入统计选项,可以输出当前库存当中的所有商品的总数及相应商品的详细信息,可以按照商品的价格、生产厂家、库存量进行统计,输出商品信息时可以按照商品的对应信息按照从大到小的的顺序进行排序输出。
1.3 界面介绍与要求
图1.2 系统首页面介绍
本系统的软件界是使用C++编译生成的一个系统操作菜单。操作菜单界面总共有七个选项可以供用户操作选择,分别为购买商品、添加商品、删除商品、修改商品、查询商品、统计商品、退出系统。菜单页面下方有可供用户选择操作项目的指令,当用户选择并输入0-6中的任意数字,系统便会进入相应的功能操作。如果出现错误操作,系统会该处输入错误请从新输入等提示或者自动跳出回到主菜单界面。
页面的组织和设计要求先构思好系统的功能模块和结构框架,分析系统中的各个实体以及它们间的具体联系关系,根据问题的描述先设计好系统的类层次,完成类层次中各个成员函数的定义,实现每一个模块层次之间的衔接,从而设计出工整漂亮的管理系统,要求整个系统的界面设计简洁、美观,让用户使用起来方便快捷。
1.4 数据结构要求
在整个系统当中除了使用类层次结构、继承机制、模板等,还使用的了数据结构当中的链表结构,主要用来进行商品的管理功能。包括商品的添加、修改、删除、查询等。可以通过链表进行存储、访问操作。通过动态申请链表空间,用指针操作数据节点完成商品信息的一系列操作。
2 系统分析与设计
2.1 系统分析
系统的主要工作流程图如下,当进入操作主菜单界面时,会有相应的不同的操作选项供用户选择,但操作完成后就返回到系统主菜单。
2.1.1 类的设计关系
图2.1 系统类的设计关系图
2.1.2 主功能函数流程图
图2.2 首页面功能关系图
2.2 软件的数据(结构)设计
主要系统文件的写入与保存
//读文件
void System::Read()
{
int num;
string kind;
Goods *temp;
ifstream in;
in.open("infile.txt");
in>>num;
for(int i = 0; i < num; i++)
{
temp = new Goods;
temp->Read(in);
something.push_back(temp);
}
in.close();
}
//写入文件
void System::Write()
{
ofstream out;
out.open("infile.txt");
out<< something.size()< something[i]->Write(out); out.close(); } 2.3 系统的算法设计 2.3.1 购买商品程序算法 当用户选择第一项操作时,便进入购买商品的函数。其流程图如下: 图2.3 商品购买操作流程图 2.3.2 添加商品程序算法 其流程图如下: 图2.4 商品添加操作流程图 2.3.3 修改商品程序算法 其流程图如下: 图2.5 商品修改操作流程图 2.3.4 统计商品程序算法 其流程图如下: 图2.6 商品统计功能流程图 3 软件的实现 3.1 主系统头文件和基类的定义 #ifndef SYSTEM_H_ #define SYSTEM_H_ #include "cosmetics.h" #include "dayuse.h" #include "drink.h" #include "food.h" #include "goods.h" #include #include using namespace std; //定义结构体元素 struct item { string name; double price; int num; }; bool operator<(const item &G1, const item &G2); class System { public: void Star(); private: int Buy();//购买 int Add();//添加 int Delect();//删除 int Modefied();//修改 void Statistics();//统计. int Find(); //查询. int Have(string kind, string name);//查找仓库中是否有此商品. void Write(); void Read(); string Ask();//询问增加的种类.. vector };#endif //取消避免头文件重复定义 定义头文件,声明类的公有成员函数和私有数据成员。 3.2 购买商品代码解释 int System::Buy() { string kind = Ask(); int buy_num, a ; string name; cout<<"\\n\\请输入您所要购买的商品名称:"; cin>>name; a = Have(kind, name); if(a != -1)//代表商品存在、则需要填购买数量、并从仓库中减去已被购买的货物。 { something[a]->Show(); cout<<"\\n\\请输入购买数量: "; cin>>buy_num; if(buy_num <= something[a]->Get_Num()) { something[a]->Set_Num(something[a]->Get_Num() - buy_num); cout<<"\\n\\您此次购买一共花费: "; cout< else return -1;//超过库存量。 } else return 0;//不存在 return 1;} 该函数实现了对商品的购买功能,并且计算出本次购买所消费金额。 3.3 添加商品代码解释 int System::Add() { Goods *temp; int a; string kind = Ask(); if(kind == "食品") temp = new Food; if(kind == "饮料") temp = new Drink; if(kind == "日常用品") temp = new Daily_Supplies; if(kind == "化妆品") temp = new Cosmetics; temp->Set(); a = Have(temp->Get_Kind(), temp->Get_Name()); if(a == -1) something.push_back(temp); else return 0;//该商品已经存在。 return 1;} 该函数实现了对商品的添加功能。 3.4 删除商品代码解释 int System::Delect() { string kind = Ask(); string name; int a; cout<<"\\n\\请输入您要删除商品名称: "; cin>>name; a = Have(kind, name); if(a != -1) something.erase(something.begin() + a); else return 0;//不存在该商品.. return 1;} 该函数实现了对商品信息的删除功能。 3.5 修改商品代码解释 int System::Modefied() { string kind = Ask(); string name; int a; cout<<"\\n\\请输入您要修改的商品名称: "; cin>>name; a = Have(kind, name); if(a != -1) { int choice; double price; int num; cout<<"\\n\\1.修改价格"< cin>>choice; if(choice == 1) { cout<<"\\n\\请输入修改价格为: "; cin>>price; something[a]->Set_Price(price);} if(choice == 2) { cout<<"\\n\\请输入修改库存为: "; cin>>num; something[a]->Set_Num(num); }} else return 0; return 1;} 该函数实现了对商品信息的修改功能,可修改商品的价格以及库存量。 3.6 查询商品代码解释 int System::Find() { string kind = Ask(); string name; int a; cout<<"\\n\\请输入您要查找的商品名称: "; cin>>name; a = Have(kind, name); if(a != -1) something[a]->Show(); else return 0; return 1;} 该函数实现了对商品信息的查询功能,并且显示出所查商品的所有信息。 3.7 统计商品代码解释 void System::Statistics() { cout<<"\\n\\1.对价格统计"< cin>>statis; item temp; vector for(unsigned int i = 0; i < something.size(); i++) { temp.name = something[i]->Get_Name(); temp.price = something[i]->Get_Price(); temp.num = something[i]->Get_Num(); st.push_back(temp);} sort(st.begin(), st.end());//排序 if(statis == 1) { cout<<" 名称: "<<" 价格: "< cout< { cout<<" 名称: "<<" 库存: "< cout< } 该函数实现了对商品信息的统计功能,可分别统计所有商品的价格和库存量,并且按照由小到大的顺序显示输出。 4 系统功能实现 4.1 系统功能主菜单界面实现 图4.1 系统主菜单页面 4.2 商品购买界面实现 图4.2 购买商品操作界面 4.3 商品添加界面实现 图4.3 添加商品操作界面 4.4 商品修改界面实现 图4.4 修改商品操作界面 4.5 商品统计界面实现 图4.5 统计商品操作界面 5 软件测试 1、 int System::Buy() /*购买商品*/ 例1:input:(商品种类):1 output:日常用品信息 例2:input:(购买数量,单价15):2 output:商品品牌:10元 2、 int System::Add() /*添加商品信息*/ 例1:input:(商品名称):雪碧 output:商品品牌:雪碧 例2:input:(商品库存量):500 output: 商品品牌:500 3、int System::Delect() /*删除商品信息*/ 例1:input:(删除商品名称):雪碧 output:商品品牌:删除成功 4、int System::Modefied() /*修改商品信息*/ 例1:input:(修改库存):444 output: 修改成功! 例2:input:(修改价格):500 output: 修改成功! 5、void System::Statistics() /*统计商品信息*/ 例1:input: 1(对价格统计) output: 雪碧 3 例2:input: 2(对库存统计) output: 果粒奶优 500 6、int System::Find() /*查询商品信息*/ 例1:input: 1(商品类别) output:商品品牌:查找商品名称 例2:input:查找商品名称 output: 百事可乐 3 600 可口可乐 重庆分公司 7、void System::Write() /*文件写入保存,退出系统*/ 例1:input: 0 output: 谢您的惠顾,欢迎您下次光临! 6 软件使用说明书 6.1 销售功能模块的使用说明 在使用本系统首先会进入系统首页面上面有相应数字操作提示,请选择要进行的操作项目,用户键入1便进入购买商品功能。根据相关提示输入选择商品类别,然后输入商品名称,并且在库存当中进行查找所要购买的商品信息,如果有库存量,接着输入购买的商品数量,然后系统会进行相应的费用计算,如果库存量不够,系统会给出相关的提示信息,结束本次购买,返回主页面。 6.2 商品管理功能的使用说明 在本管理模块主要有四个功能,即商品添加功能、删除功能、修改功能、查询功能,主要适用于超市商品管理人员对库存商品进行管理。根据首页面的提示信息进入相依的操作。 键入2便进入添加商品功能,会提示用户依次键入商品的名称、品牌、价格、生产厂家、库存量等五个信息,然后自动保存。 键入3 便进入删除商品功能,首先选择输入商品类别,再输入要删除的商品名称,系统进行相应的查询,如果没有找到该商品的记录,则会提示该商品不在物品库当中,如果有则进行删除并且提示删除成功。 键入4便进入修改商品的功能,输入商品的名称,系统在商品库中进行对比查找,然后进行修改提示,选择要进行修改的项目,并且进行保存,如果没有找到则提示没有找到所要修改商品的信息。 键入5便进入商品查询功能,课分商品名称、商品品牌、商品生产厂家等但三种方式查询,别且显示所查询到商品的所有信息。 6.3 商品统计功能的使用说明 键入6便进入商品统计功能。在本功能当中可根据提示,按照商品的的价格、库存量、生产厂家进行统计,并且输出当前所有商品的总数量及每件商品的详细信息。在输出统计信息时,可按照部分商品信息有从大到小的顺序进行排序输出显示。 键入0便保存文件,退出超市商品管理系统。 参考文献 [1] 谭浩强. C++程序设计[M]. 北京:清华大学出版社,2004. [2] 邓文新. C++语言程序设计方法[M]. 北京:清华大学出版社,2010. [3] 刘维富. C++程序设计实验与编程实践[M]. 北京:高等教育出版社,2007. [4] 谭浩强. C++语言程序设计题解与上机指导[M]. 北京:清华大学出版社,2010. [5] 孟宪福. C++语言程序设计教程[M]. 北京:清华大学出版社,2008. 致 谢 为期两周的C++课程设计终于结束,最初从指导老师讲解个任务相关的基础知识,下来自己查阅相关资料熟悉任务要求,接下来两天进行查阅相关资料学习相关的基础知识,逐步加深对个知识点的了解和掌握,然后构思系统模块和层次结构,在有了具体的想法后便开始进行系统程序代码的的编程、测试,最终实现整个系统的功能和要求。 在整个实践过程当中,当然不是一帆风顺的,整个学期所学的知识点基本都要在这一个系统当中运用,有些知识点用起来很顺手,有些知识板块还是不能很好掌握。对于模板的学习和掌握不够,用起来十分生疏,还有文件的处理、以及整个系统类的继承机制处理不是很明确,一开始所有单个类的函数功能基本都实现,到把所有的层次结构统筹规划关联起来时就出问题,不知该从何下手。于是请教指导老师和班级当中学的较好的同学请教指点,最终完成了整个系统的功能实现。 通过一学期C++程序设计的学习,让自己收获了不少新的知识,同时也让自己感受到收获的喜悦,通过自己的努力,将一个程序从头到尾一步步完成,一个个错误的解决,一个个知识点的回顾掌握学习,慢慢的积累学习,养成好的变成习惯和严谨的逻辑思维。 在此,感谢指导老师的细心解释,朋友同学的热情帮助,在你的帮助下,让自己收获知识,弥补不足受益匪浅。也让我深刻体会到学海无涯,用正确的态度面对学习的挑战,奖励路联系实际,进一步熟练掌握科学知识完善自己,为后面自己的学习,工作打下坚实的基础。