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

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

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

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

超市商品管理系统+含报告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"

*

(1)添加商品记录cout<

*

(2)显示商品清单cout<

*(3)删除一条商品记录cout<

*(4)修改一条商品记录cout<

*(5)查询

*(6)保存至文档

*(7)退出

cout<

"

\n"

查询功能的分菜单如下:

*主菜单->

查询

商品信息管理系统

*

(1)按商品编号查询

*

(2)按商品名称查询

*(3)按商品价格查询

*(4)按商品分类查询

*(5)返回

***********************************************\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&

//从终端接收数据ProductsInfo&

SetproductsInfo1(ProductsInfo&

productsInfo,FuncTypefunc);

功能函数调用关系图如下:

附:

源程序清单

//products.h

//文件功能:

定义超市商品的数据结构及其相关操作#include<

iostream>

#include<

iomanip>

fstream>

string>

structnode//定义数据链表结点

structQueryRes

node*pnode;

QueryRes*pnext;

node*phead=NULL;

//定义数据链表头指针

QueryRes*pqueryres=NULL;

//查询指定数据条目node*Add(ProductsInfo&

//添加数据项boolDelete();

//删除指定条目

//products.h文件结束

//products.cpp

products.h文件中操作的具体实现及主函数部分#include"

products.h"

usingnamespacestd;

FuncTypePrintMenu(MenuTypewhich){

FuncTypefunc=NONE;

intchoice=0;

switch(which){

caseMAINMENU:

//主菜单选项

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;

}

caseSUBMENU:

//分菜单选项

*

(1)按商品编号查询cout<

*

(2)按商品名称查询cout<

*(3)按商品价格查询cout<

*(4)按商品分类查询cout<

*请选择(1-6):

&

func=QB_NO;

func=QB_NAME;

func=QB_price;

func=QB_sort;

没有查询到该条商品记录!

!

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;

6

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->

productsInfo.no<

;

cout<

productsInfo.name<

productsInfo.price<

productsInfo.num<

productsInfo.sort<

voidPrint(QueryRes*pnode){

for(QueryRes*p=pnode;

pnode->

7

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:

//按名称查询if(!

productsInfo.name,productsInfo.name)){

caseQB_price:

//按价格查询if(p->

productsInfo.price==productsInfo.price){

caseQB_sort:

//按分类查询if(!

productsInfo.sort,productsInfo.sort)){

if(hasRes){

if(pquery=newQueryRes()){

pquery->

pnode=p;

pnext=pqueryres;

pqueryres=pquery;

hasRes=0;

returnpqueryres;

node*Add(ProductsInfo&

productsInfo){//添加数据项

strcpy(p->

productsInfo.no,productsInfo.no);

productsInfo.name,productsInfo.name);

productsInfo.price=productsInfo.price;

productsInfo.num=productsInfo.num;

productsInfo.sort,productsInfo.sort);

boolDelete(){//删除指定数据项cout<

请输入商品编号:

cin>

no;

if(phead==NULL){cout<

不存在商品记录!

returnfalse;

node*p=phead;

productsInfo.no,no))

phead=phead->

returntrue;

for(phead;

pnext)

pnext->

productsInfo.no,no))break;

if(p->

pnext==NULL){cout<

不存在商品记录!

}p->

pnext=p->

pnext->

deletep->

voidmodify()//修改指定条目{

if(p==NULL)

9

请输入要修改的商品编号:

for(p=phead;

不存在该编号的商品!

请重新输入该商品信息:

GetproductsInfo(p->

productsInfo);

productsInfo){//从终端接收数据

请输入商品编号:

productsInfo.no;

请输入商品名称:

productsInfo.name;

请输入商品价格:

productsInfo.price;

请输入商品数量:

productsInfo.num;

请输入商品类别:

productsInfo.sort;

returnproductsInfo;

productsInfo,FuncTypefunc){switch(func){

10

caseQB_num:

intmain()

intcont=1;

intcont1=1;

ph

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

当前位置:首页 > 总结汇报

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

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