超市商品管理系统+含报告Word文档下载推荐.docx

上传人:b****6 文档编号:20502952 上传时间:2023-01-23 格式:DOCX 页数:19 大小:177.35KB
下载 相关 举报
超市商品管理系统+含报告Word文档下载推荐.docx_第1页
第1页 / 共19页
超市商品管理系统+含报告Word文档下载推荐.docx_第2页
第2页 / 共19页
超市商品管理系统+含报告Word文档下载推荐.docx_第3页
第3页 / 共19页
超市商品管理系统+含报告Word文档下载推荐.docx_第4页
第4页 / 共19页
超市商品管理系统+含报告Word文档下载推荐.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

超市商品管理系统+含报告Word文档下载推荐.docx

《超市商品管理系统+含报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《超市商品管理系统+含报告Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。

超市商品管理系统+含报告Word文档下载推荐.docx

假设该编号的商品存在文件中,那么将该商品记录从文件中删除。

修改商品

假设该编号的商品存在文件中,那么重新录入该商品记录。

显示清单

显示商品清单

查询商品

查询商品是否在文件中,假设在那么输出详细信息。

查询操作可按多个数据项进行

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学反思汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1