超市商品管理系统含报告

上传人:无*** 文档编号:100964602 上传时间:2022-06-04 格式:DOC 页数:26 大小:299.50KB
收藏 版权申诉 举报 下载
超市商品管理系统含报告_第1页
第1页 / 共26页
超市商品管理系统含报告_第2页
第2页 / 共26页
超市商品管理系统含报告_第3页
第3页 / 共26页
资源描述:

《超市商品管理系统含报告》由会员分享,可在线阅读,更多相关《超市商品管理系统含报告(26页珍藏版)》请在装配图网上搜索。

1、超市商品管理的设计与实现1. 系统描述1.1 问题说明要求设计并实现一个简单超市商品管理系统,至少实现数据的增加、修改、删除、查询和显示相应结果,存数据用链表组织,数据文件用文本文件,用户界面用字符界面,枚举量用枚举类型表示。1.2 数据需求编号数据项数据类型数据长度描述1编号字符串14商品的唯一标识2名称字符串25商品的名称3价格浮点型8商品的售价4数量整型4商品的库存数量5类别字符串12商品类别1.3 功能需求编号功能描述1添加商品若该编号的商品在文件中不存在,则将该商品记录添加到文件中。2删除商品若该编号的商品存在文件中,则将该商品记录从文件中删除。3修改商品若该编号的商品存在文件中,则

2、重新录入该商品记录。4显示清单显示商品清单5查询商品查询商品是否在文件中,若在则输出详细信息。查询操作可按多个数据项进行2.系统设计2.1 开发平台计算机系统:Microsoft Windows XP;开发工具:Microsoft Visual Studio 6.0;语言:C+2.2存数据结构设计用单链表表示商品数据记录,链表接点定义为:struct node ProductsInfo productsInfo;node *pnext;其中自定义数据类型ProductsInfo定义为:struct ProductsInfo /定义超市商品的相关属性char no14;char name25;f

3、loat price;int num;char sort12;枚举菜单类型与操作类型:enum MenuType MAINMENU, SUBMENU; /枚举菜单类型enum FuncType 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用户界面设计用户界面为控制台字符模式,根据功能为用户设计了主菜

4、单与分菜单,界面友好,易于操作,主菜单如下:cout *&*&*&*&*&*&*&*欢迎使用商品管理系统*&*&*&*&*&*&*n;cout * *n;cout * 请按下面的选单进行功能选择: *n;cout * 添加商品记录 *n;cout * 显示商品清单 *n;cout * 删除一条商品记录 *n;cout * 修改一条商品记录 *n;cout * 查询 *n;cout * 保存至文档 *n;cout * 退出 *n;cout*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&n;查询功能的分菜单如下:cout *&*&*&*&*&*&*&

5、*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*n;cout * 商品信息管理系统 *n;cout 查询 *n;cout * 按商品编号查询 *n;cout * 按商品名称查询 *n;cout * 按商品价格查询 *n;cout * 按商品分类查询 *n;cout * 返回 *n;cout *n;2.5具体功能设计根据功能需求分析,定义了如下功能函数:FuncType PrintMenu; /菜单选择函数node * CreateProList; /读取数据文件,建立数据链表void RemoveProList; /撤销存空间void RemoveQueryRes;void

6、Save; /保存至文件void Print; /显示数据信息void Print;void modify; /修改指定数据条目QueryRes * Query;/查询指定数据条目node * Add; /添加数据项bool Delete; /删除指定条目ProductsInfo& GetproductsInfo; /从终端接收数据ProductsInfo& SetproductsInfo1; 功能函数调用关系图如下:mainCreateProListPrintMenuAddprintdeletemodifyquerysaveRemoveProListGetproductsInfoSetpro

7、ductsInfo1附:源程序清单/products.h/文件功能:定义超市商品的数据结构及其相关操作#include #include #include #include struct ProductsInfo /定义超市商品的相关属性char no14;char name25;float price;int num;char sort12;struct node /定义数据链表结点ProductsInfo productsInfo;node *pnext;struct QueryRes node * pnode;QueryRes * pnext;node *phead = NULL; /定

8、义数据链表头指针QueryRes *pqueryres = NULL; enum MenuType MAINMENU, SUBMENU; /枚举菜单类型enum FuncType NONE, ADD, PRINT, DELETE, MODIFY,QUERY, QB_NO, QB_NAME, QB_price,QB_num, QB_sort, SAVE, EXIT; /枚举操作类型FuncType PrintMenu; /菜单选择函数node * CreateProList; /读取数据文件,建立数据链表void RemoveProList; /撤销存空间void RemoveQueryRes;

9、void Save; /保存至文件void Print; /显示数据信息void Print;void modify; /修改指定数据条目QueryRes * Query; /查询指定数据条目node * Add; /添加数据项bool Delete; /删除指定条目ProductsInfo& GetproductsInfo; /从终端接收数据ProductsInfo& SetproductsInfo1; / products.h文件结束/products.cpp/文件功能:products.h文件中操作的具体实现及主函数部分#include products.husing namespace

10、 std;FuncType PrintMenu FuncType func = NONE;int choice = 0;switch case MAINMENU: /主菜单选项cout *&*&*&*&*&*&*&*欢迎使用商品管理系统*&*&*&*&*&*&*n;cout * *n;cout * 请按下面的选单进行功能选择: *n;cout * 添加商品记录 *n;cout * 显示商品清单 *n;cout * 删除一条商品记录 *n;cout * 修改一条商品记录 *n;cout * 查询 *n;cout * 保存至文档 *n;cout * 退出 *n;cout*&*&*&*&*&*&*&

11、*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&n;cout * 请选择 :;cin choice;switch case 1: func = ADD; break;case 2: func = PRINT; break;case 3: func = DELETE; break;case 4: func = MODIFY; break;case 5: func = QUERY; break;case 6: func = SAVE; break;case 7: func = EXIT;break;default: func = NONE; break;break;case S

12、UBMENU: /分菜单选项cout*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*n;cout * 商品信息管理系统 *n;cout 查询 *n;cout * 按商品编号查询 *n;cout * 按商品名称查询 *n;cout * 按商品价格查询 *n;cout * 按商品分类查询 *n;cout * 返回 *n;cout *n;cout * 请选择:;cin choice;cout &*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&n;switch case 1: func = QB_NO; break;case

13、 2: func = QB_NAME; break;case 3: func = QB_price; break;case 4: func = QB_sort; break;case 5: func = EXIT; break;default: func = NONE; break;break;default:cout 没有查询到该条商品记录!n;break;return func;node * CreateProList node * p=NULL;ifstream products;if cerr文件不存在!请添加商品记录!endl;return NULL;while!products.e

14、of /装载数据文件ifp = new node products p-productsInfo.no;products p-productsInfo.name;products p-productsInfo.price;products p-productsInfo.num;products p-productsInfo.sort;p-pnext = phead;phead = p;products.close;return phead;void RemoveProList /撤销存空间for p2 = p1-pnext;delete p1;phead = NULL;void RemoveQ

15、ueryRes for p2 = p1-pnext;delete p1;pqueryres = NULL;void Save /保存至文档node * p;ofstream products;if return;forpnext products productsInfo.no;products productsInfo.name;products productsInfo.price;products productsInfo.num;products productsInfo.sortendl;products.close;void Print /输出数据forpnext coutprod

16、uctsInfo.no ;coutproductsInfo.name ;coutproductsInfo.price ;coutproductsInfo.num ;coutproductsInfo.sort n;void Print forpnext cout pnode-productsInfo.no ;cout pnode-productsInfo.name ;cout pnode-productsInfo.price ;cout pnode-productsInfo.num ;cout pnode-productsInfo.sort n;QueryRes * Query /查询功能实现i

17、nt hasRes = 0;QueryRes *pquery = NULL;forpnext switch case QB_NO: /按编号查询if!strcmpproductsInfo.no, productsInfo.no hasRes = 1;break;case QB_NAME: /按名称查询if!strcmpproductsInfo.name, productsInfo.name hasRes = 1;break;case QB_price: /按价格查询ifproductsInfo.price = productsInfo.price hasRes = 1;break;case Q

18、B_sort: /按分类查询if!strcmpproductsInfo.sort, productsInfo.sort hasRes = 1;break;default:break;if ifpquery = new QueryRes pquery-pnode = p;pquery-pnext = pqueryres;pqueryres = pquery;hasRes = 0;return pqueryres;node * Add /添加数据项node * p;ifp = new node strcpyproductsInfo.no, productsInfo.no;strcpyproduct

19、sInfo.name, productsInfo.name;p-productsInfo.price = productsInfo.price;p-productsInfo.num = productsInfo.num;strcpyproductsInfo.sort, productsInfo.sort;p-pnext = phead;phead = p;return phead; bool Delete /删除指定数据项cout请输入商品编号:no;if cout 不存在商品记录!endl; return false;node *p=phead;if!strcmpproductsInfo.n

20、o, no phead=phead-pnext; return true;forpnext;p = p-pnext if!strcmppnext-productsInfo.no, no break;ifpnext=NULLcout不存在商品记录!pnext=p-pnext -pnext;delete p-pnext;return true;void modify /修改指定条目node *p=phead;if cout不存在商品记录!;return;char no14;coutno;forpnext if!strcmpproductsInfo.no, no break;if cout不存在该编

21、号的商品!n;return;cout请重新输入该商品信息:;GetproductsInfoproductsInfo;ProductsInfo& GetproductsInfo /从终端接收数据cout productsInfo.no;cout productsInfo.name;cout productsInfo.price;cout productsInfo.num;cout productsInfo.sort;return productsInfo;ProductsInfo& SetproductsInfo1 switchcase QB_NO:cout productsInfo.no;br

22、eak;case QB_NAME:cout productsInfo.name;break;case QB_price:cout productsInfo.price;break;case QB_num:cout productsInfo.num;break;case QB_sort:cout productsInfo.sort;break;return productsInfo;int main ProductsInfo productsInfo;int cont = 1;int cont1 = 1;phead = CreateProList; /装载数据文件while switchPrin

23、tMenu case ADD: /添加数据条目GetproductsInfo; phead = Add; break;case PRINT: /显示商品清单cout *&*&*&*&*&*&*&*以下是商品清单*&*&*&*&*&*&*&n;Print;break;case DELETE: /删除指定条目ifDeletecout 已删除!n;else cout 删除失败!n; break;case MODIFY: /修改指定条目modify;break;case QUERY: /查询操作cont1 = 1;while FuncType func;func = PrintMenu;switch

24、case QB_NO: case QB_NAME: case QB_price: case QB_sort: SetproductsInfo1;PrintQuery;RemoveQueryRes;break;case EXIT: cont1 = 0;break;default: break;break;case SAVE: /保存至文件Save;break;case EXIT: /退出RemoveProList;cont = 0;break;default:break;return 0;3.系统测试3.1 程序调试多个功能在执行时均出现健壮性较差的问题,输入非法数据后程序容易出错而停止运行,或

25、是在查询、修改一条数据链表中记录时,也回出现类似情况,发现该问题后加入了检查输入数据非法性的语句,程序运行正常;另在int strcmp函数使用时,未弄清该函数的返回值问题,相关功能便会出现相反的结果;再者便是一些常见的语法上的错误,一一改正之后,程序运行正常。3.2结果测试分析运行程序,结果如下:输入1后进行添加操作,如下:系统返回主菜单后再添加两条商品记录,输入2显示清单:返回主菜单后输入3进行删除操作,如下:选择修改功能,运行如下:如选择查询功能各项功能运行正常,达到预期要求。4.心得体会通过本次训练,在编程的过程中对抽象建模、算法设计、计算过程规划与实施有了更深切认识,更重要的还培养严

26、谨认真的科学态度和严谨务实的工作作风。一个程序完成之初难免有很多漏洞甚至错误需要修正,语法错误相对来说要容易调试一些,但有两点需要特别指出:一是应该用规化的格式输入源程序,函数体、循环体等都应该缩进一个TAB位,相应的块语句的两个大括号都应保持在同一列上,函数体之间、模块之间都应用空行隔开,这就解决了各种匹配的问题,更重要的是它极大的增强的程序的可读性。二是应该注意函数的实参与形参的传递问题,要尽量保持两者类型的匹配,当不匹配又可通过编译时会发生数据类型的隐式转换,这样会产生很多不安全且又很难找到的错误当不需要改变形参时,只需传入变量,如果想在函数体改变函数的外部变量,则传入指针。在编译错误为

27、0的情况下,不要高兴的太早,此时也要关注一下警告warning,每一个warning都有他一定的道理。当修改的只剩下一些无关紧要的时,才可以连接运行。这其中出现的一些逻辑错误才是调试的难点所在。在连接程序时可能出现的问题可能是,库连接不上、标志符有问题如函数名不应该以数字开头命名,定义的标志符与编译器部或库部定义的标识符相冲突。5.参考文献1严蔚敏 吴伟民.数据结构C语言版.清华大学.1997.042莉,董渊,瑞丰.C+程序设计第三版.清华大学.20033 钟珞.计算机科学导论第二版.理工大学.2004.014闵联营,何克右. C+程序设计教程第二版.理工大学.2005.075力.Visual c+高级编程.人民邮电.2002.0326 / 26

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!