程序设计实验报告课题名称:仓库货物管理系统山西大学计算机与科学技术学院-2-学生姓名:解腾黄帅胡杰李德洪指导教师:马千里完成日期:2011年9月目录第1章程序设计背景1.1货物管理系统的意义····························································-1-1.2仓库管理有关理论··································································11.3程序准备实现的目标·······························································1第2章功能分析2.1系统的功能分析22.2.系统性能要求:2第3章程序设计思路3.1模块流程图··············································································33.2各模块功能简介33.3类、函数的说明········································································8第4章总结4.1不足分析94.2总结9附录一参考文献10山西大学计算机与科学技术学院-3-附录二程序源代码11第1章程序设计背景1.1货物管理系统的意义仓库管理系统是企业信息管理的主要部分,当库存管理实现计算机辅助核算后,大量的库存信息资源可以得到及时记录,汇总和分析并可通过网络系统迅速传递,提高库存信息的及时性,系统性,全面性和共享程度,有利于形成整个企业的管理信息系统网络,促进整个企业管理向现代化迈进。一直以来人们使用传统人工的方式管理仓库中的各种物资设备,这种管理方式存在着许多缺点,如:效率低、另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。作为计算机应用的一部分,使用计算机对产品仓库信息进行管理,具有着人工管理无法比拟的优点,它检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等,可减少更多的人力物力,这些都能够极大地提高货品仓库的管理效率,也是企业仓库管理科学化、正规化,与世界接轨的重要条件。因此,开发一个仓库管理系统是很有必要的,具有其特有的技术意义和管理意义。1.2仓库管理有关理论仓库是物流物流系统中企业储存原料、半成品、产成品的场所。仓库经常将大批量的货物在仓库中存放较长时间,而现代物流仓库更强调货物的动态进出,尽量少的货物在仓库中存放尽可能少的时间。仓库在物流系统中的作用主要有运输整合、产品组合、直接转运、服务、偶发事件的防范和缓冲。仓库管理的核心探讨——库存。虽然“库存”不会记入月度损益,但它是资产负债表不可缺少的组成元素。有很多关于“时间”的财务绩效参数和非财务性绩效参数,例如,及时客户订单交付、现金周转、库存持有天数等等。对于企业来说,这些周转时间能反映出企业当前的经营状况。它们的改进必然有助于提高供应链的整体竞争力。1.3程序准备实现目标1、设计内容:制作仓库货物管理系统,实现数据录入、数据输出、数据查询等功。2、设计要求:1)可以对货物的存入、取出等操作记录2)货物信息的查询3)简单的计算统计功能山西大学计算机与科学技术学院-2-第2章功能分析2.1系统的功能分析:1.数据录入:商品入库和商品出库2.数据查询:货物的查询3.维护系统:货物数据的修改级删除2.2.系统性能要求:1.系统安全、可靠;2.功能齐全;3.操作方便、界面友好;4.易于维护和扩充。山西大学计算机与科学技术学院-3-第3章程序设计思路3.1模块框架图仓库货物管理系统有:商品入库、商品出库、货物查询、维护系统3.2各模块功能简介1货物入库按任意键返回仓库货物管理系统数据录入数据查询其他维护系统查询所有货物货物入/出库数据的删除货物查询物品信息管理系统选择界面输入数字:1输入入库项目的数量输入项目编号输入项目品名输入商品单价数据的修改山西大学计算机与科学技术学院-4-2查询全部货物按任意键返回物品信息管理系统选择界面输入数字:2显示结果界面山西大学计算机与科学技术学院-5-3货物查询返回输入数字:1输入编号查询按任意键返回输入数字:2输入品名查询输入数字:3输入数量范围查询输入数字:4输入单价范围查询输入数字:5输入总价范围查询输入数字:0物品信息管理系统选择界面输入数字:3查找菜单山西大学计算机与科学技术学院-6-4货物数据的修改返回输入数字:1输入编号修改按任意键返回输入数字:2输入品名修改输入数字:3输入数量范围修改输入数字:4输入单价范围修改输入数字:5输入总价范围修改输入数字:0物品信息管理系统选择界面输入数字:4修改菜单山西大学计算机与科学技术学院-7-5数据的删除返回输入数字:1输入编号删除按任意键返回输入数字:2输入品名删除输入数字:3输入数量范围删除输入数字:4输入单价范围删除输入数字:5输入总价范围删除输入数字:0输入数字:5删除菜单物品信息管理系统选择界面山西大学计算机与科学技术学院-8-3.3类、函数及说明classInventory{public:Stock*pHead;//定义一个头结点intcount;//定义数量Inventory();//构造函数~Inventory();//析构函数intSave(charfileName[]);//保存所有项目信息到文件intLoad(charfileName[]);//从文件中读取项目信息voidMenu();//处理项目信息模块菜单private:friendclassOutStocks;//声明友元类voidDisplay();voidAddStock(Stock*);//添加一个项目voidAddStocks();//添加多个项目intMenuSelect();//显示和处理项目信息模块菜单};classStock{protected:intprice;//单价intamount;//数量charnum[20];//编号charname[20];//品名public:Stock(void);//构造函数Stock*next;//定义next指针voidSetNum(char[]);//声明初始化编号函数char*GetNum();//获得编号函数voidSetName(char[]);//初始化名称函数char*GetName();//获得名称函数voidSetPrice(int);//声明初始化价格函数intGetPrice();//获得价格函数voidSetAmount(int);//初始化数量函数intGetAmount();//获得数量函数voidInput(char*a);//声明输入函数voidAdd(int);//声明添加函数voidOut(int);//声明出库函数voidUpdate();//声明更新函数voidDisplay();//声明打印函数};山西大学计算机与科学技术学院-9-第4章不足分析与总结4.1不足分析1.界面不够美观(界面编辑不是特别熟悉,暂时不制作界面)2.程序只适应与单机,与网络无关联,建议以后增加网络功能3.可能会有部分漏洞,需要修补改进4.2总结经过三周的课程设计,虽然完成了仓库管理系统的设计,但是不可否认,其中还有有很多的不足,在本次设计中,只实现了其基本功能,很多强大的功能还没有实现,仓库管理系统是企业信息管理中不可缺少的一部分,所以要实现它完整的功能还需要很多的改进,比如运用数据库。在这次课设中运用了面向对象的编程语言C++,通过定义类和对象,以及类的属性和方法实现基本功能,如出库和入库。这使得我们更进一步熟悉了面向对象机制。在这次课程设计中,由于对专业知识的掌握不够,我们遇到了很多问题,得到了老师和同学的帮助,借此感谢帮助过我们的老师和同学。总之,通过课程设计,使我们能把理论知识运用于实践,做出符合实际要求的软件.山西大学计算机与科学技术学院-10-附录一参考资料《C++程序设计》清华大学出版社《标准c++库大全》电子工业出版社《VisualC++6.0编程基础与范例》电子工业出版社《VisualC++库大全》电子工业出版社山西大学计算机与科学技术学院-11-附录二源代码头文件Inventory.h:#pragmaonce#includeStock.hclassInventory{public:Stock*pHead;//定义一个头结点intcount;//定义数量Inventory();//构造函数~Inventory();//析构函数intSave(charfileName[]);//保存所有项目信息到文件intLoad(charfileName[]);//从文件中读取项目信息voidMenu();//处理项目信息模块菜单private:friendclassOutStocks;//声明友元类voidDisplay();voidAddStock(Stock*);//添加一个项目voidAddStocks();//添加多个项目intMenuSelect();//显示和处理项目信息模块菜单};头文件:Stock.h:#pragmaonceclassStock{protected:intprice;//单价intamount;//数量charnum[20];//编号charname[20];//品名public:Stock(void);//构造函数Stock*next;//定义next指针voidSetNum(char[]);//声明初始化编号函数char*GetNum();//获得编号函数voidSetName(char[]);//初始化名称函数char*GetName();//获得名称函数voidSetPrice(int);//声明初始化价格函数intGetPrice();//获得价格函数voidSetAmount(int);//初始化数量函数intGetAmount();//获得数量函数山西大学计算机与科学技术学院-12-voidInput(char*a);//声明输入函数voidAdd(int);//声明添加函数voidOut(int);//声明出库函数voidUpdate();//声明更新函数voidDisplay();//声明打印函数};Inventory.cpp:#includeSearch.h#includefstream#includeiomanip#includeiostreamusingnamespacestd;externSearchSearch;//寻找Search的定义Inventory::Inventory(){count=0;pHead=newStock();//给头结点分配储存空间pHead-next=NULL;//头结点的下一个节点置空}Inventory::~Inventory()//析构函数{//要将所有节点释放掉Stock*pCurrent;//定义一个当前指针pCurrent=pHead;//把头结点赋给当前指针while(pCurrent-next!=NULL)//当当前指针指向的下一个节点不为空{pHead=pHead-next;//头结点后移一个单位free(pCurrent);//释放当前节点pCurrent=pHead;//头结点赋给当前指针}free(pCurrent);//释放当前节点}voidInventory::AddStock(Stock*pCurrent){charn[5];while(pCurrent-next!=NULL)//当pCurrent下一个节点不为空pCurrent=pCurrent-next;//pCurrent结点后移一个单位cout\t\t编号:;cinn;pCurrent-Input(n);//调用输入函数pCurrent-next=newStock();//给pCurrent下一