C《超市商品管理系统》课程设计报告.docx
C+超市商品管理系统课程设计报告摘要此次课程设计为超市管理系统,由 VC6.0 编译器编译而成。通过本系统,在主界面可以通过行管提示的操作,对商品进行购买、添加、修改、删除、查询、统计等管理操作。系统主要包含了食品、化妆品、日用品、饮料四大类,每一类都包含了商品的几大最基本信息,商品名称、品牌、价格、生产厂家、库存量等。除四大类外有一个总的商品基类,通过继承机制进行访问基类,同时也结合运用了模板。通过此系统用户可以简洁方便的购买商品,管理人员也可轻松进行商品管理,从而实现高效的管理模式,为公司企业商家等创造最大化的经济效益。关键词:管理系统基类继承模板4课程设计任务书设计题目:超市商品管理系统设计学生姓名课程名称胡凯面象对象程序设计课程序设计专业班级计科 13容及设计内 要地点I313起止时间1) 问题描述求超市中商品分为四类,分别是食品、化妆品、日用品和饮料。每种商品都包含商品名称、价格、库存量和生产厂家、品牌等信息。主要完成对商品的销售、统计和简单管理。2) 功能要求(1) 销售功能。购买商品时,先输入类别,然后输入商品名称,并在库存中查找该商品的相关信息。如果有库存量,输入购买的数量,进行相应计算。如果库存量不够,给出提示信息,结束购买。(2) 商品简单管理功能。添加功能:主要完成商品信息的添加。查询功能:可按商品类别、商品名称、生产厂家进行查询。若存在相应信息, 输出所查询的信息,若不存在该记录,则提示“该记录不存在!”。修改功能:可根据查询结果对相应的记录进行修改。删除功能:主要完成商品信息的删除。先输入商品类别,再输入要删除的商品名称,根据查询结果删除该物品的记录,如果该商品不在物品库中,则提示“该商品不存在”。(3) 统计功能。输出当前库存中所有商品的总数及详细信息;可按商品的价格、库存量、生产厂家进行统计,输出统计信息时,要按从大到小进行排序。 3)问题的解决方案根据系统功能要求,可以将问题解决分为以下步骤:(1) 应用系统分析,建立该系统的功能模块框图以及界面的组织和设计;(2) 分析系统中的各个实体及它们之间的关系;(3) 根据问题描述,设计系统的类层次;(4) 完成类层次中各个类的描述;(5) 完成类中各个成员函数的定义;(6) 完成系统的应用模块;(7) 功能调试;(8) 完成系统总结报告。根据题目要求,运用所学知识,完成设计和实现工作,并按照书写规范,撰写课程设计报告。设计(1)系统分析、设计正确。参数(2)结果以图表方式显示。(3) 界面简洁、美观。(4) 报告格式规范。进度要求18 周星期一 8:3012:10 18 周星期二 8:3012:10设计18 周星期三 8:3012:1018 周星期四 8:3012:1018 周星期五 8:3012:1019 周星期一 8:3012:1019 周星期二 8:3012:1019 周星期三 8:3012:1019 周星期四 8:3012:1019 周星期五 8:3012:10任务分配,了解需求,并制定课程设计计划软件需求任务,并完成初步的设计,模块设计,文档完成项模块设计,接口设计,类的功能模块设计完成项类的算法计,编写程序算法编写程序算法编写程序算法,软件调试,测试软件调试,测试,并准备软件开发文档编写课程设计报告,准备答辩报告提交,答辩。参考资料其它说1 Richard Johnsonbaugh. Martin Kalin.面向对象程序设计C+语言描述.机械工业出版社.2009 年2 钱能.+语言程序设计教程.清华大学出版社.2005 年明.本表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。.若填写内容较多可另纸附后。3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。教研室主任:王双明指导教师:裴仰军/伍建全/焦晓军2014 年12月10日目 录摘要11 软件需求分析说明书11.1 需求分析11.2 功能简介11.2.1 销售功能11.2.2 商品管理功能11.2.3 统计功能21.3 界面介绍与要求21.4 数据结构要求32 系统分析与设计52.1 系统分析52.1.1 类的设计关系52.1.2 主功能函数流程图52.3 系统的算法设计62.3.1 购买商品程序算法62.3.2 添加商品程序算法72.3.3 修改商品程序算法92.3.4 统计商品程序算法93 软件的实现103.1 主系统头文件和基类的定义10;3.2 购买商品代码解释103.3 添加商品代码解释123.4 删除商品代码解释133.5 修改商品代码解释143.6 查询商品代码解释143.7 统计商品代码解释错误!未定义书签。4 系统功能实现194.1 系统功能主菜单界面实现194.2 商品购买界面实现194.3 商品添加界面实现204.4 商品修改界面实现214.5 商品统计界面实现21软件使用说明书225.1 销售功能模块的使用说明225.2 商品管理功能的使用说明22参考文献23致 谢44C+超市商品管理系统课程设计报告1 软件需求分析说明书1.1 需求分析随着科技的进步,计算机技术的飞速发展,许多企业在进行技术改造的同时,各种工作也趋向于信息技术化管理。管理系统事一个信息化、智能化和先进管理集合,一个高效有用的管理系统课一减少一个企业或者上商家的管理费用和人力物力开支,不仅可以节省大量时间,还可以为企业的各项决策带来巨大的经济效益。与人们生活接触最贴近的超市也有它自己完善的管理系统。计算机的自动化管理系统提高了超市管理的管理水平和工作效率,增强超市的竞争能力降低成本,为客户提供更加优质的服务。所以需要开发一个计算机系统来代替人工管理超市人员对商品信息管理和顾客购买等方面的 工作。使用该系统可以使超市的服务更加快捷、准确和方便,减少大量的人工操作,提高了工作效率。1.2 功能简介1.2.1 销售功能本功能主要是针对消费者用户使用。在购买商品时,用户得输入所要购买商品的编号和商品数量,然后系统会自动在库存当中查找该商品的相关信息,如果在库存中还有库存量,则用户接着进行下一步操作,根据提示输入要购买的商品的数量,进行相应的计算。如果库存量不够,则系统会给出提示信息,然后询问顾客是否重新购买,又回到系统页面主菜单。1.2.2 商品管理功能商品管理功能主要是针对超市管理人员使用,对库存商品进行简单的管理。本功能当中主要可以实现商品的添加、查询、修改、删除等功能。(1) 添加商品通过主页面提示菜单键入相对应数字进入添加商品选项,然后根据提示添加商品信息,主要包括商品名称、商品编号、商品品牌、商品价格、商品生产厂家、以及商品的库存量等。(2) 删除商品通过主页面的提示菜单键入相应数字进入删除商品选项,完成最商品信息的删除。1C+超市商品管理系统课程设计报告选择输入要删除商品的编号,根据查询结果删除商品的记录,如果该商品在库存物品当中不存在,则系统给出相应提示,该商品不存在。(3) 修改商品通过主页面的提示菜单键入相应数字进入修改商品选项,对商品信息进行修改。可根据查询的结果对相应的商品信息进行修改,包括商品的名称、品牌、价格、生产厂家和库存量等。(5)查询商品通过主页面的提示菜单键入相应数字进入查询商品选项,对商品信息进行查询。可根据相应提示选择查询方式,按商品编号,商品名称进行查询商品的全部信息。如果存在相应商品的信息,则输出所查询商品的信息,如果不存在该商品的记录,则系统自动提示该商品的记录不存在。1.2.3 排序功能此功能主要是提供显示功能。用户可通过主页面的显示菜单键入相应的数字进入统计选项,可以输出当前库存当中的所有商品的总数及相应商品的详细信息,可以按照商品的进价格、库存量、净利润进行统计,输出商品信息时可以按照商品的对应信息按照从大到小的的顺序进行排序输出。1.3 界面介绍与要求图 1.3.1 系统欢迎页面介绍2C+超市商品管理系统课程设计报告图 1.3.2 系统首页面介绍本系统的软件界是使用 C+编译生成的一个系统操作菜单。操作菜单界面总共有 9 个选项可以供用户操作选择,分别为增加商品、显示商品、排序商品、查找商品、删除商品、修改商品、售出商品、保存商品信息、安全退出。菜单页面下方有可供用户选择操作项目的指令,当用户选择并输入 0-8 中的任意数字,系统便会进入相应的功能操作。如果出现错误操作,系统会该处输入错误请从新输入等提示或者自动跳出回到主菜单界面。页面的组织和设计要求先构思好系统的功能模块和结构框架,分析系统中的各个实体以及它们间的具体联系关系,根据问题的描述先设计好系统的类层次,完成类层次中各个成员函数的定义,实现每一个模块层次之间的衔接,从而设计出工整漂亮的管理系统,要求整个系统的界面设计简洁、美观,让用户使用起来方便快捷。1.4 数据结构要求在整个系统当中除了使用类层次结构、继承机制、模板等,还使用的了数据结构当中的链表结构,主要用来进行商品的管理功能。包括商品的添加、修改、删除、查询等。可以通过链表进行存储、访问操作。通过动态申请链表空间,用指针操作数据节点完成3C+超市商品管理系统课程设计报告商品信息的一系列操作。4C+超市商品管理系统课程设计报告2 系统分析与设计2.1 系统分析系统的主要工作流程图如下,当进入操作主菜单界面时,会有相应的不同的操作选项供用户选择,但操作完成后就返回到系统主菜单。2.1.1 类的设计关系商品基类食品类饮料类生活用品类化妆品类图 2.1 系统类的设计关系图欢迎界面选择操作项52.1.2 主功能函数流程图1.2.3.4.5.6.7.8.9.增显排查删修售保安加示序找除改出存全商信商商商商商信退C+超市商品管理系统课程设计报告图 2.2 首页面功能关系图2.3 系统的算法设计2.3.1 购买商品程序算法当用户选择操作时,便进入购买商品的函数。其流程图如下:购买商品选择编号和数量确认购买信息输出购买后商品信息购买结束9图 2.3 商品购买操作流程图2.3.2 添加商品程序算法其流程图如下选择种类输入编号、价格、库存、品牌、厂家添加成功添加商品输入名称1.2.3.4.食饮日化品料用品妆品图 2.4 商品添加操作流程图C+超市商品管理系统课程设计报告2.3.3 修改商品程序算法修改商品信息选择操作项其流程图如下:6.修改剩9.修改1.2.3.4.5.余7.8.生修修修修修商修修产改改改改改品改改商商品2.3名.4种图 2编.5 商品修改进操作流程图售类号货出排序商品程序算法价价量净利润生产场品牌排序商品信息选择操作项1.按进货价排2.按库9存量排3.按净利润排序其流程图如下:C+超市商品管理系统课程设计报告排序结束图 2.6 商品统计功能流程图3 软件的实现3.1 主系统头文件和基类的定义#include <iostream> #include <fstream> #include <string.h> #include <stdio.h>#include <conio.h>/用 getch(); using namespace std;/Goods 类class Goodspublic:Goods()int kind;char name20;/哇哈哈char Id20;char place10; charbrand10;20float buyprice;/进货价; float saleprice; / 卖 出 价 ; int amount;/存货数量; int amount1;/售货数量;int profit; Goods * Next; void InputAll()InputName(); InputKind(); InputID(); InputOther();/净利润;;3.2 售出商品代码解释void Goodsmessage:Saleprice()char Id20;int i;Goods * p=NULL;Goods * temp=NULL;cout<<"tt 请输入要售出的商品的编号和数量:"<<endl;cin>>Id;cin>>i; if(p=FindID(Id)p->Next->amount -= i; p->Next->amount1 += i;p->Next->profit +=i*(p->Next->saleprice - p->Next->buyprice);cout<<"商品售出成功!"<<"售出商品编号: "<<Id<<"数量: "<<i<<"售出后商品信息: "<<endl;p->Next->Show();Save();cout<<"输入任意字符!继续" getch();elsecout<<"tt 没有找到您需要的商品!"<<endl; cout<<"输入任意字符!继续"getch();该函数实现了对商品的购买功能,并且计算出本次购买所消费金额以及净利润。3.3 添加商品代码解释void AddItem()/从键盘输入商品信息system("cls"); End->InputName(); showMenu(1);End->InputKind(); doEnd->InputID();while(FindID(End->Id);End->InputOther();End->Next = new Goods; End=End->Next;cout<<" 添 加 成 功 !"<<endl; cout<<"输入任意字符!继续" getch();3.4 删除商品代码解释void Goodsmessage:RemoveItem()/删除商品信息system("cls"); char Id20;Goods * p=NULL,*temp=NULL;cout<<"tt 请输入要删除的商品的编号:"<<endl;cin>>Id; if(p=FindID(Id)temp=p->Next;p->Next=p->Next->Next; delete temp;cout<<"tt 删除成功!"<<endl; cout<<"输入任意字符!继续" getch();elsecout<<"tt 没有找到您需要的商品!"<<endl;cout<<"输入任意字符!继续" getch();3.5 修改商品代码解释void Goodsmessage:ModifyItem()/修改商品信息showMenu(3); int x; cin>>x; switch(x)case 1:char Id20;Goods * p=NULL;cout<<"tt 请输入要修改的商品的编号:"cin>>Id; if(p=FindID(Id)cout<<"tt 已找到商品的信息,请输入新的信息!"<<endl;p->Next->InputName(); cout<<"修改成功!"<<endl;cout<<"输入任意字符!继续" getch();elsecout<<"tt 没有找到您需要的商品!"<<endl; cout<<"输入任意字符!继续"getch();break;case 2:char Id20;Goods * p=NULL;cout<<"tt 请输入要修改的商品的编号:"cin>>Id; if(p=FindID(Id)cout<<"tt 已找到商品的信息,请输入新的信息!"<<endl;p->Next->InputKind(); cout<<"修改成功!"<<endl;cout<<"输入任意字符!继续" getch();elsecout<<"tt 没有找到您需要的商品!"<<endl; cout<<"输入任意字符!继续"getch();break;3.6 查询商品代码解释void Goodsmessage:Find()/查找函数system("cls");char name20 ,Id10; int x;Goods * p=NULL; showMenu(5); cin>>x; switch(x)case 1:cout<<"tt 请输入要查找的商品的名称:"cin>>name; if(p=FindItem(name)p->Next->Show();cout<<"输入任意字符!继续" getch();elsecout<<"tt 没有找到该名称的商品!"<<'n'<<endl; cout<<"输入任意字符!继续"getch();break;case 2:cout<<"tt 请输入要查找的商品的编号:"cin>>Id; if(p=FindID(Id)p->Next->Show();cout<<"输入任意字符!继续" getch();elsecout<<"tt 没有找到该编号的商品!"<<'n'<<endl;cout<<"输入任意字符!继续" getch();break;该函数实现了对商品信息的查询功能,并且显示出所查商品的所有信息。3.7 商品排序代码解释void Goodsmessage:Swap(Goods *p1, Goods *p2)/交换两个商品的数据Goods *temp=new Goods; strcpy(temp->name,p1->name); temp->kind=p1->kind; strcpy(temp->Id,p1->Id); strcpy(temp->place,p1->place); temp->saleprice=p1->saleprice; temp->buyprice=p1->buyprice; temp->amount=p1->amount; temp->profit=p1->profit; strcpy(temp->brand,p1->brand);strcpy(p1->name,p2->name); p1->kind=p2->kind; strcpy(p1->Id,p2->Id); strcpy(p1->place,p2->place); p1->saleprice=p2->saleprice; p1->buyprice=p2->buyprice; p1->amount=p2->amount; p1->profit=p2->profit;strcpy(p1->brand,p2->brand);strcpy(p2->name,temp->name); p2->kind=temp->kind; strcpy(p2->Id,temp->Id); strcpy(p2->place,temp->place); p2->saleprice=temp->saleprice; p2->buyprice=temp->buyprice; p2->amount=temp->amount; p2->profit=temp->profit;strcpy(p2->brand,temp->brand);void Goodsmessage:Paixu()showMenu(4); int x;cin>>x; switch(x)case 1:system("cls");cout <<"tt 排序中."<<endl; cout<<"n"Goods *p=NULL,*p1=NULL,*k=NULL; int n=Goodsmessage:ListCount(); if(n<2)return;for(p=Head->Next;p!=End;p=p->Next) for(k=p->Next;k!=End;k=k->Next)if(p->buyprice>k->buyprice)Goodsmessage:Swap(p,k);Display();cout <<"排序完成!"<<endl; getch();return;4 系统功能实现4.1 系统功能主菜单界面实现会1 增加超市商品* *2 显示超市商品* *3 排序统计商品* *会4查找超市商品* *会5删除超市商品* *6 修改超盲商品* *?售出超百商品* 玄8 保存咀市商品信思* *会8 安全退出系统* *请选择: O8斗图 4.1 系统主菜单页面4.2 商品售出界面实现C+超市商品管理系统课程设计报告20星匾于,1商品售出煦珈谔铀入要品 的编号和敛宝:售出商品编号: 6 数量: 1贮出后商品信息: 品名: 111ia n ba o千4. 5出 介 6余商品数量: 46利闽: 94品的产地: cho ngq i ng产商品牌: s hs us呆信息成功 任竞字符I 继续.·一二图 4.2 购买商品操作界面4.3 商品添加界面实现1. 食品2 . 化 妆品3 日用品4 . 饮料gen1i eq kgun o ok h e 0 ckn-15,5酱i号3 54 编 : 量产品的价价数的商类品货出货品产种商进售存商生择入入入入入入选输输输输输输清请清请情青清乔i入加产竞字符I 继续一 斗图 4.3 添加商品操作界面C+超市商品管理系统课程设计报告4.4 商品修改界面实现琶霆呼,30修 政咸功I:t$赣黯名品善 丐商种编改改改修修修1 2 3: 1; 巠雇寥喜品量语选择; O-10清 趴 要修改的商品的编号:5心到商品的信息,请输人新的信息?请 趴 售出价: 5 . 5? 修改, lj泪8一修改f夕妀商品产地9 修改生产商品牌i入任芭字符I 继续一斗图 4.4 修改商品操作界面4.5 商品排序界面实现丘 : 2品名:可口可乐善3口出哼介 3 . 5冒硐: 0剩余商品数噩 : 1 1111品的产地:室庆产商品牌: 1 23品名:哇哈哈飞f3.5气1沪口出 介 5回: 168归商品数量9 0品的产地:重庆产商品牌: 123l1商品名:ke l e斗图 4.5 商品排序操作界面软件使用说明书5.1 售出功能模块的使用说明在使用本系统首先会进入系统首页面上面有相应数字操作提示,请选择要进行的操作项目,用户键入 7 便进入售出商品功能。根据相关提示输入选择商品编号,然后输入商品数量,并且在库存当中进行查找所要购买的商品信息,如果有库存量,然后系统会进行相应的费用计算,如果库存量不够,系统会给出相关的提示信息,结束本次购买, 返回主页面。5.2 商品管理功能的使用说明在本管理模块主要有四个功能,即商品添加功能、删除功能、修改功能、查询功能, 主要适用于超市商品管理人员对库存商品进行管理。根据首页面的提示信息进入相依的操作。键入 1 便进入添加商品功能,会提示用户键入商品的名称,然后选择种类、再依次输入品牌、价格、生产厂家、库存量等信息,然后自动保存。键入 5 便进入删除商品功能,选择输入商品编号,系统进行相应的查询,如果没有找到该商品的记录,则会提示该商品不在物品库当中,如果有则进行删除并且提示删除成功。键入 6 便进入修改商品的功能,按需要修改的内容输入相应的商品编号,系统在商品库中进行对比查找,然后进行修改提示,选择要进行修改的项目,并且进行保存,如果没有找到则提示没有找到所要修改商品的信息。键入 4 便进入商品查询功能,查询方法分编号和名称两种方式查询,查询结束后显示所查询到商品的所有信息。程序源代码#include <iostream> #include <fstream> #include <string.h> #include <stdio.h>#include <conio.h>/用 getch(); using namespace std;class Goods/Goods 类public:Goods()int kind;char name20;/哇哈哈char Id20;char place10; charbrand10;float buyprice;/进货价; float saleprice; / 卖 出 价 ; int amount;/存货数量; int amount1;/售货数量;int profit;/净利润; Goods * Next;void InputAll()InputName();InputKind();InputID();InputOther();void InputKind()cout<<"tt 请选择种类:"cin>>kind;void InputName()cout<<"tt 请输入商品的名称:"cin>>name;void InputID()cout<<"tt 请输入商品的编号:"cin>>Id;void InputBuyprice()cout<<"tt 请输入进货价:" cin>>buyprice;void InputSaleprice()cout<<"tt 请输入售出价:" cin>>saleprice;void InputAmount()cout<<"tt 请输入剩余商品数量:" cin>>amount;void InputProfit()cout<<"tt 请输入净利润:" cin>>profit;void InputPlace()cout<<"tt 请输入商品产地:" cin>>place;void Inputbrand()cout<<"tt 请输入生产商品牌:" cin>>brand;void InputOther()cout<<"tt 请输入进货价:" cin>>buyprice; cout<<"tt 请输入售出价:" cin>>saleprice; cout<<"tt 请输入存货数量:" cin>>amount; cout<<"tt 请输入商品的产地:" cin>>place; cout<<"tt 请输入生产商品牌:" cin>>brand; profit=0;void ReadFile(istream & in)in>>name>>kind>>Id>>buyprice>>saleprice>>amount>>place>>brand>>profit;void Show()cout<<"商品名: "<<name<<endl<<"种类:"<<kind<<endl<<"编号: "<<Id<<endl<<"进货价 "<<buyprice<<endl<<"售出价 "<<saleprice<<endl<<" 剩余商品数量: "<<amount<<endl<<"净利润:"<<profit<<endl<<"商品的产地: "<<place<<endl<<"生产商品牌: "<<brand<<endl<<endl<<endl;class Goodsmessage : public Goods/Goodsmessage 类public:Goodsmessage();Goodsmessage();void showMenu(int n); void Find();void Save();void ModifyItem(); void RemoveItem();void Swap(Goods *,Goods *); void Paixu();void Saleprice();/void Chack(); int ListCount(); void Display()system("cls"); i=0;for(Goods * p=Head->Next;p!=End;p=p->Next)p->Show(); i+;cout<<"共有"<<i<<"个商品"<<"n"<<endl; cout<<"输入任意字符!继续" getch();void AddItem()/从键盘输入商品信息system("cls"); End->InputName(); showMenu(1);End->InputKind(); doEnd->InputID();while(FindID(End->Id); End->InputOther();End->Next = new Goods; End=End->Next;cout<<"添加成功!"<<endl; Save();cout<<"输入任意字符!继续" getch();private:Goods * Head,* End; int i;ifstream in; ofstream out;Goods *FindItem(char * name)for(Goods * p=Head;p->Next!=End;p=p->Next)/匹配成功则返回上一个指针,不成功就返回空if(!strcmp(p->Next->name,name)return p; return NULL;Goods *FindID(char * Id)for(Goods * p=Head;p->Next!=End;p=p->Next)/匹配成功则返回上一个指针,不成功就返回空if(!strcmp(p->Next->Id,Id)return p; retur