题目:超市库存管理院系:专业:姓名:学号:指导教师:日期:实训报告2目录一、课题设计1.设计目的2.设计要求二、需求分析三、系统设计1.系统采用的关键技术2.主要类的说明3.系统模块图4.函数清单5.详细设计五、测试六、设计心得七、附录(源程序)1一.课题设计1.设计目的:(1)熟悉C++中类的概念、类的封装、继承的实现方式。(2)了解系统开发的需求分析、类层次设计、模块分析、编码测试、模块组装与整体调试的全过程。(3)深对C++的理解与VisualC++环境的使用。(4)逐步熟悉程序设计的方法,并养成良好的编程习惯。2.设计要求:(1)源程序要有适当的注释,使程序容易阅读。(2)必须用C++中的类,要求命令行界面用文件保存,不得把用数组保存和文件保存相混淆。(3)设计系统要求用C++语言。(4)设计的系统不仅要具备四个基本功能—增、删、改、查,还要具备“货物的有关信息数据存盘”的功能。因此,货物的有关信息数据既可以保存到磁盘文件,今后也可以从磁盘文件随时读出货物的有关信息。这样做,不仅方便用户使用,也可以避免数据录入。同时为了考虑到系统实现简洁,货物数据文件采用文本文件,货物数据文件名:date.dat。2二、需求分析随着现代生活水平的提高,超市这种便利的服务逐渐与我们的生活息息相关,如何更便利地对超市进行系统和有序的操作,成为了我们需要考虑的问题。本程序运用C++程序设计了一个超市库存管理系统。作为一个完整的系统,除了具有增加货物,删除货物的信息模块,还应该具有修改货物相关信息的功能。所以本系统具备了“商品入库”、“商品出库”、“查询统计”、“商品破损”、“退出系统”这5个基本功能,还可以在相应的硬盘上进行存盘以防止部分数据的丢失。这样一来,就可以用最简洁的方式实现对货物的管理,也就实现了系统的要求。三、系统设计1.系统采用的关键技术a.仓库管理员类classadmin{public:admin();private:stringname;};3b.仓库货架类classshelf{public:shelf();private:adminmen;//管理员stringstoreNo;//仓库编号stringkinds;//商品大类stringshelfNo;//货架号};2.主要类的说明(1)使用面向对象的程序设计进行分析,整个系统涉及两大类可操作,仓库、商品。所以系统主要涉及两大类:仓库类、商品类。(2)系统框架就是仓库类和商品类的定义。(3)主函数中定义一个仓库对象,循环显示主菜单并根据用户选择调用仓库类的相应方法(成员函数)。(4)考虑系统操作的货物信息具有不确定性,所以考虑使用链表保存、处理货物信息。(5)仓库类包含:所有货物信息的一个不带头结点的链表及可以对货物信息进行增,改,删除,查询,数量设置,数据存盘等操作的相关模块为成员函数。所有货物都具有的公共信息及操作可以使用仓库类进行描述。(6)仓库类包含:所有货物信息的一个不带头结点的链表及可以对货物信息进行增,改,删除,查询,数量设置,数据存盘等操作的相关模块为成员函数。所有货物都具有的公共信息及操作可以使用仓库类进行描述。(7)退出系统:选择该项,自动退出该系统。43.系统模块图4.函数清单:(1)首页函数:first_face();(2)入库函数:in_storage();(3)出库函数:out_storage();(4)查询函数:voidselect_ele();//查询A.按商品名称查函数:voidselect_name();B.按商品价格查询函数:select_price();C.按大类查询函数:call_break();(5)商品报损函数:call_break();商场库存货物管理系统商品入库查询统计退出系统商品信息商品分类信息按名称查询按类别查询商品出库商品报损直接退出报损商品信息55.详细设计1、首页函数:[charfirst_face()……]2.新购商品入库函数:[voidin_storage()……]3.商品信息删除函数:[voidout_storage()……]4.商品信息查询函数:[voidselect_ele()……]5.商品报损函数:[voidcall_break()……]五、测试1.系统选择界面2.商品入库:63.商品信息存盘:4.商品查询统计:785.商品破损:96.商品出库:107.系统退出:11六、设计心得在短短几天的时间里,完成了该系统的设计,对自己来说确实是一个不小的挑战。本系统的主要功能是管理员对超市库存商品的管理,可以进行查询、删除、添加、修改等操作。在设计这个超市库存管理系统的过程中,认识到自己所学的知识确实少得有点可怜,编写代码的时候有时会连最基本的语句都想不起来,只有通过查找课本还有网上的一些资料才慢慢进入设计状态。通过本次超市库存管理系统的设计,认识到了自身C++的基础知识并不扎实,不过也让我再次熟悉数据库的设计过程。同时,我也能够基本掌握C++程序设计的方法,并且在此基础上掌握类的构造方法,明确类中构造函数、成员函数的建立以及调用,此外,另外,当我结合C++中字符串函数的编译系统给定的库函数,采用一定的逻辑编译,就可以实现系统设计的各项要求,达到设计目的,进而提高自己的C++语言使用水平。学习是无止境的,要想有所建树就必须要付出比别人更多的努力,希望在以后的学习中可以有更深的认识,以取得更好的成绩!12七、附录(源程序)//main.cpp#includeiostream#includestring#includefstream#includecassert#includeiomanip#includeconio.husingnamespacestd;//仓库管理员类classadmin{public:admin();private:stringname;};//仓库货架类13classshelf{public:shelf();private:adminmen;//管理员stringstoreNo;//仓库编号stringkinds;//商品大类stringshelfNo;//货架号};//electricalclassclassele{public:ele();private:stringname;//商品名doubleprice;//介格shelfsh;//所属货架longcount;//商品数量};14//管理(组合类)classmana{public:mana();charfirst_face();//首页voidin_storage();//入库voidout_storage();//出库voidselect_ele();//查询voidselect_name();//按商品名称查询voidselect_price();//按商品价格查询voidselect_kind();//按大类查询voidcall_break();//商品报损private:eleaele;shelfashelf;adminabs;};//电器类默认构造函数ele::ele():sh(){15name=xxx;//商品名price=0.0;//介格count=0;//商品数量}//仓库货架类默认构造函数shelf::shelf():men(){storeNo=xxx;//仓库编号kinds=xxx;//商品大类shelfNo=xxx;;//货架号}//仓库管理员类admin::admin(){name=xxx;}//管理类默认构造函数16mana::mana():aele(),ashelf(),abs(){}charmana::first_face(){system(cls);coutendl;coutendl\t\t超市库存货物管理系统\t\tendl\t--------------------------系统菜单显示如下---------------------\tendl\t\t¥¥endl\t\t¥¥1.商品入库¥¥endl\t\t¥¥2.商品出库¥¥endl\t\t¥¥3.查询统计¥¥endl\t\t¥¥4.商品报损¥¥endl\t\t¥¥5.退出系统¥¥endl\t\t---------------------------------------------------endlendl\t\t;17returngetch();}//入库voidmana::in_storage(){system(cls);stringname;//商品名doubleprice;//介格stringstoreNo;//仓库编号stringkinds;//商品大类stringshelfNo;//货架号longcount=0;//商品数量coutendl商品入库,请输入相关信息:endlendl;cout\t商品名称:;cinname;coutendl\t商品介格:;cinprice;coutendl\t商品数量:;cincount;coutendl\t仓库编号:;18cinstoreNo;coutendl\t商品大类:;cinkinds;coutendl\t货架编号:;cinshelfNo;ofstreamstoreFile(store.txt,ios::app);storeFilesetiosflags(ios::left)setw(20)namesetw(15)pricesetw(10)countsetw(10)storeNosetw(20)kindsshelfNoendl;storeFile.close();coutendlendl\t该商品已经入库.......endlendl\t;system(pause);}//出库voidmana::out_storage()19{system(cls);stringname;//商品名coutendl\t商品出库,输入出库商品信息:endlendl;cout\t商品名称:;cinname;ifstreamstoreFile(store.txt);if(!storeFile){ofstreamstoreFile1(store.txt);storeFile1.close();coutendlendl\t仓存为空!!!!endlendl\t;system(pause);return;}boolflag=false;stringname1;//商品名20doubleprice1;//介格stringstoreNo1;//仓库编号stringkinds1;//商品大类stringshelfNo1;//货架号longcount1=0;//商品数量ofstreamtempFile(temp.txt);while(storeFilename1price1count1storeNo1kinds1shelfNo1){if(name1==name)flag=true;else{tempFilesetiosflags(ios::left)setw(20)name1setw(15)price1setw(10)count1setw(10)storeNo1setw(20)kinds1shelfNo1endl;}}21tempFile.close();storeFile.close();if(!flag){coutendlendl\t仓库中没有这种商品!!!endlendl\t;s