资源描述
《面向对象程序设计》
课程设计汇报
学 院:_电气和信息工程学院 专业班级: 计科13-01班
学生姓名: 胡 凯 学 号: 443401
设计地点(单位)_______ 计算机自主学习中心 __ ______ _
设计题目:________ 超市商品管理系统__ ____ _____
完成日期: 年 1月12 日
指导老师评语: ______________________ _________________
_________________________________________________________________________________________________________________________________________________________________________________________________________ __________ _
成绩(五级记分制):______ ________ __
指导老师(签字) :________ _____ __
摘 要
此次课程设计为超市管理系统,由VC6.0编译器编译而成。经过本系统,在主界面能够经过行管提醒操作,对商品进行购置、添加、修改、删除、查询、统计等管理操作。系统关键包含了食品、化妆品、日用具、饮料四大类,每一类全部包含了商品几大最基础信息,商品名称、品牌、价格、生产厂家、库存量等。除四大类外有一个总商品基类,经过继承机制进行访问基类,同时也结合利用了模板。经过此系统用户能够简练方便购置商品,管理人员也可轻松进行商品管理,从而实现高效管理模式,为企业企业商家等发明最大化经济效益。
关键词:管理系统 基类 继承 模板
重庆科技学院
课程设计任务书
设计题目:超市商品管理系统设计
学生姓名
胡凯
课程名称
面象对象程序设计课程序设计
专业班级
计科13
地 点
I313
起止时间
设计内容及要求
1)问题描述
超市中商品分为四类,分别是食品、化妆品、日用具和饮料。每种商品全部包含商品名称、价格、库存量和生产厂家、品牌等信息。
关键完成对商品销售、统计和简单管理。
2)功效要求
(1)销售功效。购置商品时,先输入类别,然后输入商品名称,并在库存中查找该商品相关信息。假如有库存量,输入购置数量,进行对应计算。假如库存量不够,给出提醒信息,结束购置。
(2)商品简单管理功效。
添加功效:关键完成商品信息添加。
查询功效:可按商品类别、商品名称、生产厂家进行查询。若存在对应信息,输出所查询信息,若不存在该统计,则提醒“该统计不存在!”。
修改功效:可依据查询结果对对应统计进行修改。
删除功效:关键完成商品信息删除。先输入商品类别,再输入要删除商品名称,依据查询结果删除该物品统计,假如该商品不在物品库中,则提醒“该商品不存在”。
(3)统计功效。
输出目前库存中全部商品总数及具体信息;可按商品价格、库存量、生产厂家进行统计,输出统计信息时,要按从大到小进行排序。
3)问题处理方案
依据系统功效要求,能够将问题处理分为以下步骤:
(1)应用系统分析,建立该系统功效模块框图和界面组织和设计;
(2)分析系统中各个实体及它们之间关系;
(3)依据问题描述,设计系统类层次;
(4)完成类层次中各个类描述;
(5)完成类中各个组员函数定义;
(6)完成系统应用模块;
(7)功效调试;
(8)完成系统总结汇报。
依据题目要求,利用所学知识,完成设计和实现工作,并根据书写规范,撰写课程设计汇报。
设计
参数
(1)系统分析、设计正确。
(2)结果以图表方法显示。
(3)界面简练、美观。
(4)汇报格式规范。
进度
要求
18周星期一 8:30~12:10 任务分配,了解需求,并制订课程设计计划
18周星期二 8:30~12:10 软件需求任务,并完成初步设计,模块设计,文档设计
18周星期三 8:30~12:10 完成项模块设计,接口设计,类功效模块设计
18周星期四 8:30~12:10 完成项类算法计,
18周星期五 8:30~12:10 编写程序算法
19周星期一 8:30~12:10 编写程序算法
19周星期二 8:30~12:10 编写程序算法,软件调试,测试
19周星期三 8:30~12:10 软件调试,测试,并准备软件开发文档
19周星期四 8:30~12:10 编写课程设计汇报,准备答辩
19周星期五 8:30~12:10 汇报提交,答辩。
参考资料
[1]Richard Johnsonbaugh. Martin Kalin.《面向对象程序设计—C++语言描述》.机械工业出版社.
[2]钱能.《C++语言程序设计教程》.清华大学出版社.
其它
说明
1.本表应在每次实施前一周由负责老师填写二份,院系审批后交院系办立案,一份由负责老师留用。2.若填写内容较多可另纸附后。
3.一题多名学生共用,在设计内容、参数、要求等方面应有所区分。
教研室主任: 王双明 指导老师:裴仰军/伍建全/焦晓军 12月10日
目 录
摘 要 I
1 软件需求分析说明书 1
1.1 需求分析 1
1.2 功效介绍 1
1.2.1 销售功效 1
1.2.2 商品管理功效 1
1.2.3 统计功效 2
1.3 界面介绍和要求 2
1.4 数据结构要求 3
2 系统分析和设计 4
2.1 系统分析 4
2.1.1 类设计关系 4
2.1.2 主功效函数步骤图 4
2.3 系统算法设计 5
2.3.1 购置商品程序算法 5
2.3.2 添加商品程序算法 6
2.3.3 修改商品程序算法 7
2.3.4 统计商品程序算法 8
3 软件实现 10
3.1 主系统头文件和基类定义 10
};3.2 购置商品代码解释 11
3.3 添加商品代码解释 13
}3.4 删除商品代码解释 15
3.5 修改商品代码解释 16
3.6 查询商品代码解释 17
3.7 统计商品代码解释 18
4 系统功效实现 20
4.1 系统功效主菜单界面实现 20
4.2 商品购置界面实现 20
4.3 商品添加界面实现 21
4.4 商品修改界面实现 22
4.5 商品统计界面实现 22
软件使用说明书 24
5.1 销售功效模块使用说明 24
5.2 商品管理功效使用说明 24
参考文件 25
致 谢 26
1 软件需求分析说明书
1.1 需求分析
伴随科技进步,计算机技术飞速发展,很多企业在进行技术改造同时,多种工作也趋向于信息技术化管理。管理系统事一个信息化、智能化和优异管理集合,一个高效有用管理系统课一降低一个企业或上商家管理费用和人力物力开支,不仅能够节省大量时间,还能够为企业各项决议带来巨大经济效益。和大家生活接触最贴近超市也有它自己完善管理系统。计算机自动化管理系统提升了超市管理管理水平和工作效率,增强超市竞争能力降低成本,为用户提供愈加优质服务。所以需要开发一个计算机系统来替换人工管理超市人员对商品信息管理和用户购置等方面工作。使用该系统能够使超市服务愈加紧捷、正确和方便,降低大量人工操作,提升了工作效率。
1.2 功效介绍
1.2.1 销售功效
本功效关键是针对消费者用户使用。在购置商品时,用户得输入所要购置商品编号和商品数量,然后系统会自动在库存当中查找该商品相关信息,假如在库存中还有库存量,则用户接着进行下一步操作,依据提醒输入要购置商品数量,进行对应计算。假如库存量不够,则系统会给出提醒信息,然后问询用户是否重新购置,又回到系统页面主菜单。
1.2.2 商品管理功效
商品管理功效关键是针对超市管理人员使用,对库存商品进行简单管理。本功效当中关键能够实现商品添加、查询、修改、删除等功效。
(1)添加商品
经过主页面提醒菜单键入相对应数字进入添加商品选项,然后依据提醒添加商品信息,关键包含商品名称、商品编号、商品品牌、商品价格、商品生产厂家、和商品库存量等。
(2)删除商品
经过主页面提醒菜单键入对应数字进入删除商品选项,完成最商品信息删除。选择输入要删除商品编号,依据查询结果删除商品统计,假如该商品在库存物品当中不存在,则系统给出对应提醒,该商品不存在。
(3)修改商品
经过主页面提醒菜单键入对应数字进入修改商品选项,对商品信息进行修改。可依据查询结果对对应商品信息进行修改,包含商品名称、品牌、价格、生产厂家和库存量等。
(5)查询商品
经过主页面提醒菜单键入对应数字进入查询商品选项,对商品信息进行查询。可依据对应提醒选择查询方法,按商品编号,商品名称进行查询商品全部信息。假如存在对应商品信息,则输出所查询商品信息,假如不存在该商品统计,则系统自动提醒该商品统计不存在。
1.2.3 排序功效
此功效关键是提供显示功效。用户可经过主页面显示菜单键入对应数字进入统计选项,能够输出目前库存当中全部商品总数及对应商品具体信息,能够根据商品进价格、库存量、净利润进行统计,输出商品信息时能够根据商品对应信息根据从大到小次序进行排序输出。
1.3 界面介绍和要求
图1.3.1 系统欢迎页面介绍
图1.3.2 系统首页面介绍
本系统软件界是使用C++编译生成一个系统操作菜单。操作菜单界面总共有9个选项能够供用户操作选择,分别为增加商品、显示商品、排序商品、查找商品、删除商品、修改商品、售出商品、保留商品信息、安全退出。菜单页面下方有可供用户选择操作项目标指令,当用户选择并输入0-8中任意数字,系统便会进入对应功效操作。假如出现错误操作,系统会该处输入错误请从新输入等提醒或自动跳出回到主菜单界面。
页面组织和设计要求先构思好系统功效模块和结构框架,分析系统中各个实体和它们间具体联络关系,依据问题描述先设计好系统类层次,完成类层次中各个组员函数定义,实现每一个模块层次之间衔接,从而设计出工整漂亮管理系统,要求整个系统界面设计简练、美观,让用户使用起来方便快捷。
1.4 数据结构要求
在整个系统当中除了使用类层次结构、继承机制、模板等,还使用了数据结构当中链表结构,关键用来进行商品管理功效。包含商品添加、修改、删除、查询等。能够经过链表进行存放、访问操作。经过动态申请链表空间,用指针操作数据节点完成商品信息一系列操作。
2 系统分析和设计
2.1 系统分析
系统关键工作步骤图以下,当进入操作主菜单界面时,会有对应不一样操作选项供用户选择,但操作完成后就返回到系统主菜单。
2.1.1 类设计关系
商品基类
食品类
饮料类
化妆品类
生活用具类
图2.1 系统类设计关系图
2.1.2 主功效函数步骤图
欢迎界面
9.安全退出
8.保留信息
7.售出商品
6.修改商品
5.删除商品
4.查找商品
3.排序商品
2.显示信息
1.
增加商品
选择操作项
图2.2 首页面功效关系图
2.3 系统算法设计
2.3.1 购置商品程序算法
当用户选择操作时,便进入购置商品函数。其步骤图以下:
选择编号和数量
种类类
确定购置信息
购置商品
输出购置后商品信息
购置结束
图2.3 商品购置操作步骤图
2.3.2 添加商品程序算法
其步骤图以下
选择种类
种类类
1.食品
2.饮料
3.日用具
4.化妆品
输入编号、价格、库存、品牌、厂家
添加成功
添加商品
输入名称
图2.4 商品添加操作步骤图
2.3.3 修改商品程序算法
其步骤图以下:修改商品信息
8.修改生产场地
7.修改净利润
5.修改售出价
4.修改善货价
3.修改编号
2.修改种类
1.修改商品名
选择操作项
9.修改生产商品牌
6.修改剩下商品量
图2.5 商品修改操作步骤图
2.3.4 排序商品程序算法
排序商品信息
其步骤图以下:
选择操作项
3.按净利润排序
2.按库存量排序
1.按进货价排序
排序结束
图2.6 商品统计功效步骤图
3 软件实现
3.1 主系统头文件和基类定义
#include <iostream>
#include <fstream>
#include <string.h>
#include <stdio.h>
#include <conio.h>//用getch();
using namespace std;
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌Goods类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
class Goods
{
public:
Goods()
{
}
int kind;
char name[20];//哇哈哈
char Id[20];
char place[10];
char brand[10];
float buyprice; //进货价;
float saleprice; //卖出价;
int amount; //存货数量;
int amount1; //售货数量;
int profit; //净利润;
Goods * Next;
void InputAll()
{
InputName();
InputKind();
InputID();
InputOther();
};
3.2 售出商品代码解释
void Goodsmessage::Saleprice()
{
char Id[20];int i;
Goods * p=NULL;
Goods * temp=NULL;
cout<<"\t\t请输入要售出商品编号和数量:"<<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();
}
else
{
cout<<"\t\t没有找到您需要商品!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
}
该函数实现了对商品购置功效,而且计算出此次购置所消费金额和净利润。
3.3 添加商品代码解释
void AddItem()//从键盘输入商品信息
{
system("cls");
End->InputName();
showMenu(1);
End->InputKind();
do
{
End->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 Id[20];
Goods * p=NULL,*temp=NULL;
cout<<"\t\t请输入要删除商品编号:"<<endl;cin>>Id;
if(p=FindID(Id))
{
temp=p->Next;
p->Next=p->Next->Next;
delete temp;
cout<<"\t\t删除成功!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
else
{
cout<<"\t\t没有找到您需要商品!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
}
3.5 修改商品代码解释
void Goodsmessage::ModifyItem() //修改商品信息
{
showMenu(3);
int x;
cin>>x;
switch(x)
{
case 1:
{
char Id[20];
Goods * p=NULL;
cout<<"\t\t请输入要修改商品编号:";cin>>Id;
if(p=FindID(Id))
{
cout<<"\t\t已找到商品信息,请输入新信息!"<<endl;
p->Next->InputName();
cout<<"修改成功!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
else
{
cout<<"\t\t没有找到您需要商品!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
break;
}
case 2:
{
char Id[20];
Goods * p=NULL;
cout<<"\t\t请输入要修改商品编号:";cin>>Id;
if(p=FindID(Id))
{
cout<<"\t\t已找到商品信息,请输入新信息!"<<endl;
p->Next->InputKind();
cout<<"修改成功!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
else
{
cout<<"\t\t没有找到您需要商品!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
break;
}
}
3.6 查询商品代码解释
void Goodsmessage::Find() //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌查找函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
{
system("cls");
char name[20] ,Id[10];
int x;
Goods * p=NULL;
showMenu(5);
cin>>x;
switch(x)
{
case 1:{cout<<"\t\t请输入要查找商品名称:";cin>>name;
if(p=FindItem(name))
{
p->Next->Show();
cout<<"输入任意字符!继续……";
getch();
}
else
{
cout<<"\t\t没有找到该名称商品!"<<'\n'<<endl;
cout<<"输入任意字符!继续……";
getch();
}
}break;
case 2:
{
cout<<"\t\t请输入要查找商品编号:";cin>>Id;
if(p=FindID(Id))
{
p->Next->Show();
cout<<"输入任意字符!继续……";
getch();
}
else
{
cout<<"\t\t没有找到该编号商品!"<<'\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 <<"\t\t排序中..."<<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 系统功效主菜单界面实现
图4.1 系统主菜单页面
4.2 商品售出界面实现
图4.2 购置商品操作界面
4.3 商品添加界面实现
图4.3 添加商品操作界面
4.4 商品修改界面实现
图4.4 修改商品操作界面
4.5 商品排序界面实现
图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 name[20];//哇哈哈
char Id[20];
char place[10];
char brand[10];
float buyprice; //进货价;
float saleprice; //卖出价;
int amount; //存货数量;
int amount1; //售货数量;
int profit; //净利润;
Goods * Next;
void InputAll()
{
InputName();
InputKind();
InputID();
InputOther();
}
void InputKind()
{
cout<<"\t\t请选择种类:";cin>>kind;
}
void InputName()
{
cout<<"\t\t请输入商品名称:"; cin>>name;
}
void InputID()
{
cout<<"\t\t请输入商品编号:"; cin>>Id;
}
void InputBuyprice()
{
cout<<"\t\t请输入进货价:"; cin>>buyprice;
}
void InputSaleprice()
{
cout<<"\t\t请输入售出价:"; cin>>saleprice;
}
void InputAmount()
{
cout<<"\t\t请输入剩下商品数量:"; cin>>amount;
}
void InputProfit()
{
cout<<"\t\t请输入净利润:"; cin>>profit;
}
void InputPlace()
{
cout<<"\t\t请输入商品产地:"; cin>>place;
}
void Inputbrand()
{
cout<<"\t\t请输入生产商品牌:"; cin>>brand;
}
void InputOther()
{
cout<<"\t\t请输入进货价:"; cin>>buyprice;
cout<<"\t\t请输入售出价:"; cin>>saleprice;
cout<<"\t\t请输入存货数量:"; cin>>amount;
cout<<"\t\t请输入商品产地:"; cin>>place;
cout<<"\t\t请输入生产商品牌:"; 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();
do
{
End->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;
return NULL;
}
};
Goodsmessage::Goodsmessage() //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌结构函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
{
Head=new Goods;
Head->Next=new Goods;
End=Head->Next;
in.open("supermarket.txt");
if(!in)
cout<<"无商品信息。请优异货。"<<endl;
else
{
while(!in.eof())
{
End->ReadFile(in);
if(End->name[0]=='\0')break;
End->Next=new Goods;
End=End->Next;
}
in.close();
cout<<"\t\t\t\t读取商品信息成功!
展开阅读全文