超市商品管理系统+含报告Word文档下载推荐.docx
《超市商品管理系统+含报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《超市商品管理系统+含报告Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。
假设该编号的商品存在文件中,那么将该商品记录从文件中删除。
修改商品
假设该编号的商品存在文件中,那么重新录入该商品记录。
显示清单
显示商品清单
查询商品
查询商品是否在文件中,假设在那么输出详细信息。
查询操作可按多个数据项进行
2.系统设计
2.1开发平台
运算机系统:
MicrosoftWindowsXP;
开发工具:
MicrosoftVisualStudio6.0;
语言:
C++
2.2内存数据结构设计
用单链表表示商品数据记录,链表接点定义为:
structnode
{
ProductsInfoproductsInfo;
node*pnext;
};
其中自定义数据类型ProductsInfo定义为:
structProductsInfo//定义超市商品的相关属性
charno[14];
charname[25];
floatprice;
intnum;
charsort[12];
枚举菜单类型与操作类型:
enumMenuType{MAINMENU,SUBMENU};
//枚举菜单类型
enumFuncType{NONE,ADD,PRINT,DELETE,MODIFY,QUERY,QB_NO,QB_NAME,QB_price,QB_num,QB_sort,SAVE,EXIT};
//枚举操作类型
2.3数据文件设计
数据记录储存在文本文件productsInfo.txt里,利用C++流类库进行数据读写操作,每条数据记录之间换行分隔开。
2.4用户界面设计
用户界面为操纵台字符模式,依照功能为用户设计了主菜单与分菜单,界面友好,易于操作,主菜单如下:
cout<
<
"
*&
*欢迎使用商品治理系统*&
*\n"
;
**\n"
*请按下面的选单进行功能选择:
*\n"
*
(1)添加商品记录*\n"
*
(2)显示商品清单*\n"
*(3)删除一条商品记录*\n"
*(4)修改一条商品记录*\n"
*(5)查询*\n"
*(6)储存至文档*\n"
*(7)退出*\n"
cout<
"
\n"
查询功能的分菜单如下:
*商品信息治理系统*\n"
*主菜单->
查询*\n"
*
(1)按商品编号查询*\n"
*
(2)按商品名称查询*\n"
*(3)按商品价格查询*\n"
*(4)按商品分类查询*\n"
*(5)返回*\n"
***********************************************\n"
2.5具体功能设计
依照功能需求分析,定义了如下功能函数:
FuncTypePrintMenu(MenuTypewhich);
//菜单项选择择函数
node*CreateProList(charfilename[]);
//读取数据文件,建立数据链表
voidRemoveProList();
//撤销内存空间
voidRemoveQueryRes();
voidSave(charfilename[]);
//储存至文件
voidPrint(node*pnode);
//显示数据信息
voidPrint(QueryRes*pnode);
voidmodify();
//修改指定数据条目
QueryRes*Query(ProductsInfo&
productsInfo,FuncTypefunc);
//查询指定数据条目
node*Add(ProductsInfo&
productsInfo);
//添加数据项
boolDelete();
//删除指定条目
ProductsInfo&
GetproductsInfo(ProductsInfo&
//从终端接收数据
SetproductsInfo1(ProductsInfo&
productsInfo,FuncTypefunc);
功能函数调用关系图如下:
附:
源程序清单
//products.h
//文件功能:
定义超市商品的数据结构及其相关操作
#include<
iostream>
iomanip>
fstream>
string>
structnode//定义数据链表结点
structQueryRes
node*pnode;
QueryRes*pnext;
node*phead=NULL;
//定义数据链表头指针
QueryRes*pqueryres=NULL;
FuncTypePrintMenu(MenuTypewhich);
//查询指定数据条目
//products.h文件终止
//products.cpp
products.h文件中操作的具体实现及主函数部分
#include"
products.h"
usingnamespacestd;
FuncTypePrintMenu(MenuTypewhich){
FuncTypefunc=NONE;
intchoice=0;
switch(which){
caseMAINMENU:
//主菜单项选择项
cout<
cout<
*请选择(1-6):
cin>
>
choice;
switch(choice){
case1:
func=ADD;
break;
case2:
func=PRINT;
case3:
func=DELETE;
case4:
func=MODIFY;
case5:
func=QUERY;
case6:
func=SAVE;
case7:
func=EXIT;
break;
default:
func=NONE;
}
break;
caseSUBMENU:
//分菜单项选择项
cout<
cout<
*请选择(1-6):
cin>
&
switch(choice){
case1:
func=QB_NO;
case2:
func=QB_NAME;
case3:
func=QB_price;
case4:
func=QB_sort;
case5:
default:
}
break;
cout<
没有查询到该条商品记录!
!
break;
}
returnfunc;
}
node*CreateProList(charfilename[]){
node*p=NULL;
ifstreamproducts(filename);
if(!
products)
{
cerr<
文件不存在!
请添加商品记录!
endl;
returnNULL;
while(!
products.eof()){//装载数据文件
if(p=newnode()){
products>
p->
productsInfo.no;
productsInfo.name;
productsInfo.price;
productsInfo.num;
productsInfo.sort;
p->
pnext=phead;
phead=p;
products.close();
returnphead;
voidRemoveProList(){//撤销内存空间
for(node*p2,*p1=phead;
p1;
p1=p2){
p2=p1->
pnext;
deletep1;
phead=NULL;
voidRemoveQueryRes(){
for(QueryRes*p2,*p1=pqueryres;
pqueryres=NULL;
voidSave(charfilename[]){//储存至文档
node*p;
ofstreamproducts(filename);
products){
return;
for(p=phead;
p;
p=p->
pnext){
products<
<
productsInfo.sort<
voidPrint(node*pnode){//输出数据
for(node*p=pnode;
p=p->
p->
productsInfo.no<
;
productsInfo.name<
productsInfo.price<
productsInfo.num<
productsInfo.sort<
voidPrint(QueryRes*pnode){
for(QueryRes*p=pnode;
pnode->
productsInfo,FuncTypefunc){//查询功能实现
inthasRes=0;
QueryRes*pquery=NULL;
for(node*p=phead;
switch(func){
caseQB_NO:
//按编号查询
if(!
strcmp(p->
productsInfo.no,productsInfo.no)){
hasRes=1;
caseQB_NAME:
//按名称查询
productsInfo.name,productsInfo.name)){
caseQB_price:
//按价格查询
if(p->
productsInfo.price==productsInfo.price){
caseQB_sort:
//按分类查询
productsInfo.sort,productsInfo.sort)){
if(hasRes){
if(pquery=newQueryRes()){
pquery->
pnode=p;
pnext=pqueryres;
pqueryres=pquery;
hasRes=0;
returnpqueryres;
productsInfo){//添加数据项
if(p=newnode()){
strcpy(p->
productsInfo.no,productsInfo.no);
productsInfo.name,productsInfo.name);
p->
productsInfo.price=productsInfo.price;
productsInfo.num=productsInfo.num;
productsInfo.sort,productsInfo.sort);
phead=p;
}
boolDelete(){//删除指定数据项
请输入商品编号:
cin>
no;
if(phead==NULL){cout<
不存在商品记录!
returnfalse;
node*p=phead;
productsInfo.no,no))
phead=phead->
returntrue;
for(phead;
pnext)
if(!
pnext->
productsInfo.no,no))break;
if(p->
pnext==NULL){cout<
不存在商品记录!
pnext=p->
pnext->
deletep->
returntrue;
voidmodify()//修改指定条目
if(p==NULL)
请输入要修改的商品编号:
for(p=phead;
不存在该编号的商品!
请重新输入该商品信息:
GetproductsInfo(p->
productsInfo);
productsInfo){//从终端接收数据
请输入商品编号:
cin>
productsInfo.no;
请输入商品名称:
productsInfo.name;
请输入商品价格:
productsInfo.price;
请输入商品数量:
productsInfo.num;
请输入商品类别:
productsInfo.sort;
returnproductsInfo;
productsInfo,FuncTypefunc){
switch(func){
caseQB_NO:
caseQB_NAME:
caseQB_price:
caseQB_num:
productsIn