




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C++课程设计库房管理系统报告第一章、设计题目第二章、问题剖析
目录........................................................1........................................................32.1问题描绘32.2需求剖析6第三章、整体设计81、功能剖析82、数据抽象83、结构关系9第四章、详尽设计10一、头文件定义10二、库房管理员类10三、库房货架类11四、电器类11五、管理组合类12六、库房电器类默认结构函数12七、库房货架类默认结构函数12八、库房管理员类默认结构函数13九、库房管理组合类默认结构函数13第五章、功能测试14一、录入、保存、显示、读取测试:14二、运转界面:19小结19参照文件20道谢21附录:源代码清单21第一章、设计题目库房管理程序功能设计:1.成立文件1)储存文件能够使用默认文件名或指定文件名。2)能够不保存输出记录,但需要确认能否保存输入记录。3)假如已经有文件,只好在以后追加。4)新增的记录持续存入原文件中。2.文件的存取和显示1)能够独自存取文件。2)能够随时显示内存中记录的所有内容。3)能够直接存取指定文件3.删除记录1)能够按“商品名称”方式删除(报损)并且将记录改正更新。2)能给出被删除记录的信息。3)假如库存已经是空的,删除(报损)时应给出提示信息并返回主菜单。14)假如没有要删除的这个商品信息,输出没有找到的提示信息5)删除操作仅限于内存,只有履行存记录操作时,才能覆盖原记录。4.查问记录1)能够按“商品名称”、“商品价钱”或“商品种类”三种方式查问记录。2)能给出查问记录的信息。3)假如查问的信息不存在,输出“没有找到”的信息。5、使用菜单实现功能的正确选择6、测试程序1)应列出测试纲领对程序进行测试2)应保证测试用例能测试到程序的各样边沿状况。编写此程序起码要用二个以上的以下面向对象工具:类继承与派生友元函数结构函数虚函数2模板文件输入输出经过设计一个较为简单的《商场库存货物管理系统》,进一步熟习C++中类的观点、类的封装、继承的实现方式。认识系统开发的需求剖析、类层次设计、模块剖析、编码测试、模块组装与整体调试的全过程,加深对C++的理解与VisualC++环境的使用;逐渐熟习程序设计的方法,并养成优秀的编程习惯。第二章、问题剖析2.1问题描绘跟着二十一世纪的到来,计算机已成为一块极其活跃的、崇尚发展与创新的领地,并成为我们这一时代决定性的前驱技术。计算机是现代文化不行或缺的级成部分,是现代科学技术发展的先导,并成为世界经济巨量增添的根本引擎。C语言和C++语言是现在世界最流行的两种计算机语言,倍受人们的喜爱。很多有名的系统软件,如DBASEⅢPLUS、DBASEⅣ都是由C语言编写的。用C语言加上一些汇编语言子程序,就更能显示C语言的优势了,像PC-DOS、WORDSTAR等就是用这种方法编写的。3概括起来C语言拥有以下特色:1、C语言简短、紧凑,使用方便、灵巧。有32个重点字。2、运算符丰富。共有34种运算符。3、数据结构丰富,拥有现代化语言的各样数据结构。4、拥有结构化的控制语句。5、语法限制不太严格,程序设计自由度大。6、C语言同意直接接见物理地点,能进位(bit)操作,能实现汇编语言的大多数功能,能够直接对硬件进行操作。7、生成目标代码质量高,程序履行效率高。8、用C语言写的程序可移植性好(与汇编语言比)。C++语言是在C语言的基础上扩展而成的,它保存了C语言原有的所有长处,增添了面向对象的体制。因此C++与C完好兼容。C++是对C的扩大,是C的超集。它既可用于结构化程序设计,又可用于面向对象的程序设计,功能强盛。C++中加入了面向对对象程序设计。C++的多继承体制能更好地描绘对象的属性和行为,它的特色是面向对象程序设计。C++实现了类的封4装、数据隐蔽、继承及多态,它还支持模板、操作符重载、内联函数定义、预办理、宏、全局静态类变量、嵌套类定义等等,使得其代码简单保护及高度可重用。本课程设计要求的功能以下:1、成立文件:储存文件能够使用默认文件名或指定文件名能够不保存输出记录,需要确认能否保存输入记录假如已经有文件,只能在以后追加2、文件存取和显示:能够独自存取文件,能够随时显示内存中记录的所有内容能够直接存取默认文件或指定文件3、删除记录:能够按“商品名称”方式删除记录并更新内存链表内容4、查问记录:能够按“商品名称”、“商品价钱”或“商品种类”三种方式查问记录52.2需求剖析依据题目要求,做出以下的详细剖析:一.继承——是面向对象语言的重要特色之一,它是指从一个或多个基类中继承数据和操作,形成新的派生类的一种体制。该体制自动地为一个类供给来自另一个类的操作和数据,使程序员只需在新类中定义已有类中所没有的成分。在C++中有两种继承:单调继承和多重继承。当一个派生类仅由一个基类派生时,称为单调继承;而当一个派生类由一个以上的基类派生时,称为多重继承。继承不单简化了程序设计方法,明显提升了软件的重用性,并且还使程序拥有一种层次结构,使之变得更简单保护。二.类——是构成面向对象系统的最基本的单位,是面向对象系统中最基本的观点之一。类是创立对象的模板,以操作、表示和算法的形式完好地定义了一组对象的行为,被认为是一种用户自定义的数据种类,它完好地描绘了规范说明和实现。类能够作为面向对象系统的拥有特定功能一个模块,能够作为模块区分的一种手段和依6据。类仍是代码共享的手段。三.输入/输出——是指程序与计算机的外面设施之间所进行的信息互换。在C++中供给了输入/输出流库。C++的流库是一个较复杂的标准类库,它是用继承的方法成立起来的适用流库,不单供给了与C语言标准函数近似的各样I/O操作功能,更重要的是使I/O操作拥有面向对象的特征,功能更灵巧,更强盛。四.标准模板库STL——C++的标准类库STL是C++语言标准库的一个重要构成部分,利用类库来开发的应用软件,有益于减少源程序中的BUG,提升软件的正确性。它往常拥有以下的特点:1、通用性2、可扩大性3、观点性与层次性4、灵巧性五.项目要求与简介此程序是为了更好的办理货物的详尽信息。包含货物的货物的入库、出库、查问、统计。并且能够很好的让使用者认识库存货物的有关信息。系统要求能够按编号显示、查找、增添、删除、和保存各种货物的信息。输入和输出货物的有关信息并且对输入保存文件里确立程序起码具备以下功能:查问模块、增添模块、删除模块、货物的有关信息数据存盘等的基本模块。系统拥有“货物的有关信息数据存盘”的功能,因此货物的有关信息数据能够保存到磁盘7文件,那么也就意味着此后能够从磁盘文件读出货物的有关信息,能够方便用户使用,防止数据重复录入,考虑到系统实现简短,货物数据文件采纳文本文件,货物数据文件名:date.dat。作为一个完好的系统,除了拥有增添货物,删除货物的信息模块,还应当拥有改正货物有关信息的功能,因此本系统具备了“商品入库”、“商品出库”、“查问统计”、“商品报损”、“退出系统”,这5个基本功能,就能够以最简捷的方式实现对货物的管理,也就实现了系统的要求。第三章、整体设计1、功能剖析使用面向对象的程序设计进行剖析,整个系统波及两大类可操作,库房、商品。因此系统主要波及两大类:库房类、商品类。系统框架就是库房类和商品类的定义;主函数中定义一个库房对象,循环显示主菜单并依据用户选择调用库房类的相应方法(成员函数)。考虑系统操作的货物信息拥有不确立性,因此考虑使用链表保存、办理货物信息。库房类包含:所有货物信息的一个不带头结点的链表及能够对货物信息进行增,改,删除,查问,数目设置,数据存盘等操作的有关模块为成员函数。所有货物都拥有的公共信息及操作能够使用库房类进行描绘。因为系统拥有3类货物且3类货物信息数据,操作基真同样,因此能够为他们创办同样的类,并且采纳继承和派生。2、数据抽象a.库房管理员类classadmin{public:admin( );8private:stringname;};b.库房货架类classshelf{public:shelf( );private:adminmen;//管理员stringstoreNo;//库房编号stringkinds;//商品大类stringshelfNo;//货架号};3、结构关系3.1主系统块:库房管商品商品查问商品退出3.2商品入库块:商品商商商仓商货品品品库品架3.3商品出库块:商品商商商仓商货品品品库品架3.4查问统计块:3.5商品报损块:查问查问9按按按输入报损名价大商品报损成3.6退出系统块:退出谢谢第四章、详尽设计一、头文件定义#include<iostream>#include<string>#include<fstream>#include<cassert>#include<iomanip>#include<conio.h>usingnamespacestd;二、库房管理员类classadmin{public:10admin( );private:stringname;};三、库房货架类classshelf{public:shelf( );private:adminmen;//管理员stringstoreNo;//库房编号stringkinds;//商品大类stringshelfNo;//货架号};四、电器类classele{public:ele( );private:stringname;//商品名doubleprice;//价钱shelfsh;//所属货架longcount;//商品数目};11五、管理组合类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( ){name="xxx";//商品名price=0.0;//价钱count=0;//商品数目}七、库房货架类默认结构函数shelf::shelf( ):men( ){storeNo="xxx";//库房编号kinds="xxx";//商品大类shelfNo="xxx";;//货架号12}八、库房管理员类默认结构函数admin::admin( ){name="xxx";}九、库房管理组合类默认结构函数mana::mana( ):aele( ),ashelf( ),abs( ){}13第五章、功能测试一、录入、保存、显示、读取测试:商场库存货物管理系统首页2.商品入库143.商品查问4.按商品名称查问155.按商品价钱查问6.按商品大类查问167.商品报损8.商品出库179.退出系统18二、运转界面:MicrosoftVisualC++6.0小结本次C++课程设计,收获仍是好多的,从刚才拿到课程设计题目后,我就先剖析这个程序的一些基本的功能,从这些基本功能出发来定下一个程序的大概框架结构,这里面主要包含程序中所设计的类,类与类之间的继承关系以及一些主要的函数的设计思想。比方:删除记录函数、增添记录函数等等。从一开始我就从图书室借阅了许多的其余有关的c++资料,这些都是很可贵的参看资料,能够说给我最后顺利的达成程序的编写打下了很扎实的基础。此次的课程设计,是自己独立达成了一个相对照较大的程序,里面用到的面向对象的知识也是比许多的,经过一番实践,很好的总结、加强了以前学习过的知识重点,并且也发现了自己还没好好掌握的知识点,关于没掌握的,我查阅了参照书本实时补上。感觉代码写到也是以后,状态越好,我感觉是因为自己关于一些基本的知识的比较好的掌握了。有些问题固然没碰到过,可是经过查阅资料,只需认识了它们的用法,自己就能够很快的模拟下来,不是照抄。这一点我感觉在此后的程序设计中也是蛮重要的,因为我发现要写出好程序,19第一应当去学习人家的程序,看懂他们的程序并且转变为自己的。其次才有可能去创新。关于程序的编写,用的时间仍是蛮多的,这时期有的是写代码、有的是查阅资料、有的是和同学一同商讨问题。在和同学议论问题的过程中,我发现了合作带来的效率,相互自己要擅长交流,让对方认识自己编程的方法和大概的思想,而后大家一同议论,这样问题会解决的比较快。经过学生的分组设计,使学生能够基本掌握C++程序设计的方法,并且在此基础上掌握类的结构方法,明确类中结构函数、成员函数的成立以及调用,别的,并且,联合C++中,字符串函数的编译系统给定的库函数,采纳必定的逻辑编译,实现题目中要求的各项要求,达到基本实验母的,提升自己的C++语言使用水平。最后希望自己此后能有比许多的时机来做一些这样的课程设计,这样一方面锻炼了自己的编程能力,另一方面又使得自己复习稳固了基础的知识。参照文件面向对象程序设计思想和方法C/C++语言参照手册主要参照文件:[1]谭浩强.C语言程序设计(第二版)清华大学第一版社,2003年[2]吴文虎.程序设计基础清华大学第一版社,2003年[3]钱启平.C语言程序设计基础指导教程铁道第一版社,2000年[4]钱能.C++程序设计教程清华大学第一版社,1999年[5]刘斌,王忠.面向对象程序设计——VisualC++清华大学第一版社,2003年20道谢:此次c++的课程设计,获得了陈群贤老师和同学的帮助,在这里表示感谢!附录:源代码清单#include<iostream>#include<string>#include<fstream>#include<cassert>#include<iomanip>#include<conio.h>usingnamespacestd;21//库房管理员类classadmin{public:admin( );private:stringname;};//库房货架类classshelf{public:shelf( );private:adminmen;//管理员stringstoreNo;//库房编号stringkinds;//商品大类stringshelfNo;//货架号};//electricalclassclassele{22public:ele( );private:stringname;//商品名doubleprice;//价钱shelfsh;//所属货架longcount;//商品数目};//管理(组合类)classmana{public:mana( );charfirst_face( );//首页voidin_storage( );//入库voidout_storage( );//出库voidselect_ele( );//查问voidselect_name( );//按商品名称查问voidselect_price( );//按商品价钱查问voidselect_kind( );//按大类查问voidcall_break( );//商品报损private:23eleaele;shelfashelf;adminabs;};//库房电器类默认结构函数ele::ele( ):sh( ){name="xxx";//商品名price=0.0;//价钱count=0;//商品数目}//库房货架类默认结构函数shelf::shelf( ):men( ){storeNo="xxx";//库房编号kinds="xxx";//商品大类shelfNo="xxx";;//货架号}//库房管理员类默认结构函数admin::admin( ){name="xxx";24}//管理组合类默认结构函数mana::mana( ):aele( ),ashelf( ),abs( ){}charmana::first_face( ){system("cls");//系统清屏cout<<"\n"<<endl<<"\t\t◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆"<<endl<<"\t\t◆◆"<<endl<<"\t\t◆商场库存货物管理系统◆"<<endl<<"\t\t◆◆"<<endl<<"\t\t◆1.商品入库◆"<<endl<<"\t\t◆◆"<<endl<<"\t\t◆2.商品出库◆"<<endl<<"\t\t◆◆"<<endl<<"\t\t◆3.查问统计◆"<<endl<<"\t\t◆◆"<<endl<<"\t\t◆4.商品报损◆"25<<endl<<"\t\t◆◆"<<endl<<"\t\t◆5.退出系统◆"<<endl<<"\t\t◆◆"<<endl<<"\t\t◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆";cout<<"\n\n\t\t";returngetch( );}//入库voidmana::in_storage( ){system("cls");//系统清屏stringname;//商品名doubleprice;//价钱stringstoreNo;//库房编号stringkinds;//商品大类stringshelfNo;//货架号longcount=0;//商品数目cout<<"\n";cout<<"商品入库,请输入有关信息:";cout<<endl<<"\t商品名称:";cin>>name;26cout<<endl<<"\t商品价钱:";cin>>price;cout<<endl<<"\t商品数目:";cin>>count;cout<<endl<<"\t库房编号:";cin>>storeNo;cout<<endl<<"\t商品大类:";cin>>kinds;cout<<endl<<"\t货架编号:";cin>>shelfNo;ofstreamstoreFile("store.txt",ios::app);storeFile<<setiosflags(ios::left)<<setw(20)<<name<<""<<setw(15)<<price<<""<<setw(10)<<count<<""<<setw(10)<<storeNo<<""<<setw(20)<<kinds<<""<<shelfNo<<endl;storeFile.close( );cout<<"\n\n\t该商品已经入库\n\n\t";system("pause");//系统暂停27}出库voidmana::out_storage( ){system("cls");//系统清屏stringname;//商品名cout<<endl<<"\t商品出库,输入出库商品信息:"<<endl;cout<<"\n\t商品名称:";cin>>name;ifstreamstoreFile("store.txt");if(!storeFile){ofstreamstoreFile1("store.txt");storeFile1.close( );cout<<"\n\n\t库存为空\n\n\t";system("pause");return;}boolflag=false;//布尔型列举类,只有一个字节,取值true或false(1或0)stringname1;//商品名28doubleprice1;//价钱stringstoreNo1;//库房编号stringkinds1;//商品大类stringshelfNo1;//货架号longcount1=0;//商品数目ofstreamtempFile("temp.txt");while(storeFile>>name1>>price1>>count1>>storeNo1>>kinds1>>shelfNo1){if(name1==name)flag=true;else{tempFile<<setiosflags(ios::left)<<setw(20)<<name1<<""<<setw(15)<<price1<<""<<setw(10)<<count1<<""<<setw(10)<<storeNo1<<""<<setw(20)<<kinds1<<""<<shelfNo1<<endl;}29}tempFile.close( );storeFile.close( );if(!flag){cout<<"\n\n\t该商品库房没有\n\n\t";system("pause");return;}ofstreamstoreFile1("store.txt");ifstreamtempFile1("temp.txt");storeFile1<<tempFile1.rdbuf( );storeFile1.close( );tempFile1.close( );cout<<"\n\t这些商品已经出库,请认真复查!!!\n\n\t";system("pause");}//查问voidmana::select_ele( ){30while(1){system("cls");cout<<"\n"<<endl;cout<<"\t============================================================="<<endl<<"\t||||"<<endl<<"\t||商品查问||"<<endl<<"\t||||"<<endl<<"\t||1.按商品名称查问||"<<endl<<"\t||||"<<endl<<"\t||2.按商品价钱查问||"<<endl<<"\t||||"<<endl<<"\t||3.按大类查问||"<<endl<<"\t||||"<<endl<<"\t||4.返回||"<<endl<<"\t||||"<<endl31<<"\t============================================================="<<endl;cout<<"\n\t\t";charselect=getch( );switch(select){case'1':select_name( );break;case'2':select_price( );break;case'3':select_kind( );break;case'4':return;default:break;}}}//按商品名称查问voidmana::select_name( ){system("cls");cout<<endl<<"\t按商品名查问:"<<endl;32cout<<"\n\t输入商品名:";stringname;cin>>name;stringname1;//商品名doubleprice1;//价钱stringstoreNo1;//库房编号stringkinds1;//商品大类stringshelfNo1;//货架号longcount1=0;//商品数目ifstreamstoreFile("store.txt");if(!storeFile){cout<<"\n\n\t对不起,你的库存为空\n\n\t";system("pause");return;}boolflag=false;cout<<"\n商品名"<<"价钱"<<"商品数目"<<"库房编号"<<"商品大类"<<"货架号\n"<<endl;33while(storeFile>>name1>>price1>>count1>>storeNo1>>kinds1>>shelfNo1){if(name1==name){flag=true;cout<<setiosflags(ios::left)<<setw(15)<<name1<<""<<setw(10)<<price1<<""<<setw(10)<<count1<<""<<setw(10)<<storeNo1<<""<<setw(15)<<kinds1<<""<<shelfNo1<<endl;}}storeFile.close( );if(!flag)cout<<"\n\n对不起,库存中没有这个商品";cout<<"\n"<<endl;system("pause");34}//按商品价钱查问voidmana::select_price( ){system("cls");cout<<"\n\t按商品价钱查问:"<<endl;cout<<"\n\t输入价钱:";doubleprice;cin>>price;stringname1;//商品名doubleprice1;//价钱stringstoreNo1;//库房编号stringkinds1;//商品大类stringshelfNo1;//货架号longcount1=0;//商品数目ifstreamstoreFile("store.txt");if(!storeFile){cout<<"\n\n\t对不起,你的库存为空\n\n\t";system("pause");return;35}boolflag=false;cout<<"\n商品名"<<"价钱"<<"商品数目"<<"库房编号"<<"商品大类"<<"货架号\n"<<endl;while(storeFile>>name1>>price1>>count1>>storeNo1>>kinds1>>shelfNo1){if(price1==price){flag=true;cout<<setiosflags(ios::left)<<setw(15)<<name1<<""<<setw(10)<<price1<<""<<setw(10)<<count1<<""<<setw(10)<<storeNo1<<""<<setw(15)<<kinds1<<""<<shelfNo1<<endl;}}storeFile.close( );36if(!flag)cout<<"\n\n对不起,库存中无此价钱商品";cout<<"\n"<<endl;system("pause");}//按大类查问voidmana::select_kind( ){system("cls");cout<<"\n\t按商品大类查问:"<<endl;cout<<"\n\t输入大类名:";stringkinds;cin>>kinds;stringname1;//商品名doubleprice1;//价钱stringstoreNo1;//库房编号stringkinds1;//商品大类stringshelfNo1;//货架号longcount1=0;//商品数目ifstreamstoreFile("store.txt");if(!storeFile)37{cout<<"\n\n\t对不起,你的库存为空\n\n\t";system("pause");return;}boolflag=false;cout<<"\n商品名"<<"价钱"<<"商品数目"<<"库房编号"<<"商品大类"<<"货架号\n"<<endl;while(storeFile>>name1>>price1>>count1>>storeNo1>>kinds1>>shelfNo1){if(kinds1==kinds){flag=true;cout<<setiosflags(ios::left)<<setw(15)<<name1<<""<<setw(10)<<price1<<""<<setw(10)<<count1<<""38<<setw(10)<<storeNo1<<""<<setw(15)<<kinds1<<""<<shelfNo1<<endl;}}storeFile.close( );if(!flag)cout<<"\n\n对不起,库存中没有这种商品";cout<<"\n"<<endl;system("pause");}//商品报损voidmana::call_break( ){system("cls");stringname;//商品名cout<<"\n\t商品报损,请输入要报损商品信息:"<<endl;cout<<"\n\t商品名称:";cin>>name;ifstreamstoreFile("store.txt");39if(!storeFile){ofstreamstoreFile1("store.txt");storeFile1.close( );cout<<"\n\n\t库存为空\n\n\t";system("pause");return;}boolflag=false
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 白萝卜栽培技术
- 工程问题的课件
- 工程道德法规课件下载
- 工程进度课件
- 2026届浙江省宁波北仑区东海实验校中考语文最后一模试卷含解析
- 2025版美甲店会员管理系统开发与维护服务合同
- 2025年度农业科技项目技术转让合同
- 内部承包经营合同书
- 小学作文端午节的习俗10篇
- 共享农业技术推广与服务平台协议
- 建筑证书管理培训
- 车间安全用电培训课件
- 2024建安杯信息通信建设行业安全竞赛题库
- 2025至2030中国低压交流接触器行业发展趋势分析与未来投资战略咨询研究报告
- 南门精酿啤酒厂管理制度
- 渐冻人麻醉处理要点
- 2025年山东省高考生物试卷真题(含答案解析)
- 2025年高考数学复习 解题技巧:函数性质(易错点+七大题型)学生版+解析
- GB/T 28583-2025供电服务规范
- 海外项目工程管理
- 恩施市2025届数学三年级第一学期期末达标测试试题含解析
评论
0/150
提交评论