



版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
安徽工业大学毕业设计(论文)任务书课题名称超市库存管理系统系 别 计算机系 专业班级软件工程0741班姓 名 XXX字 号 Oxxxxxxxx毕业设计(论文)的工作内容:ー、进行调研工作,了解、分析用户对“超市库存管理系统”的功能需求。二、熟练掌握一种程序设计语言,掌握其数据库开发、访问技术、编程设计技术。三、根据课题要求,软件完成如下功能:1,对商品、商家基本信息的增删改查等操作的实现;2,对商品进行入库、出库的操作;3,对高于库存上限的商品或者低于库存下限是的商品进行显示,以提醒操作人员及时处理;4,显示操作日志,便于查询操作员所操作的事物。四、要求软件设计界面友好、使用方便,程序执行安全、可靠。五、完成与设计内容有关的外文资料翻译,译文约5000字。六、撰写毕业论文并提交设计软件及清单一份。日期:指导教师签字:日期:摘要超市库存管理的内容是商品的入库、出库和库存管理,它是商品管理的中间环节,是用数据描述货物的收入、发出和储存的状态,及时有效地反映了商品在超市内流动的客观过程,与库存管理和商品管理的其他环节都有直接联系。可以说它在商品配送管理中起着枢纽和基础的重要作用。本系统以VisualC++6.0为开发工具,采用了SQLServer2000为后台数据库。该系统主要分为五大模块:库存管理模块、显示查询模块、商品信息模块、商家模块、系统模块。关键词:超市库存管理系统;VisualC++6.0;SQLServer2000AbstractThecontentsofthesupermarketinventorymanagementofgoodsoutofwarehouseandinventorymanagement,productmanagement,itisthemiddlepartistheuseofdatadescribingtheincomeofthegoods,issueandstorageofthestate,reflectingthetimelyandeffectiveflowofgoodsinthesupermarketobjectiveprocess,andinventorymanagementandmerchandisemanagementhavedirectcontactwiththeotherlinks.Managementcansaythatitplaysinthecommoditydistributionhubandthebasisofanimportantrole.ThesystemfortheVisualC++6.0developmenttool,theSQLServer2000databaseforthebackgroundThesystemconsistsoffivemodules:InventoryManagementmodule,displayquerymodule,productinformationmodule,thebusinessmodule,thesystemmodule.Keywords:SupermarketStorageManagementSystem;VisualC++2005;SQLServer2000目录TOC\o"1-5"\h\z\o"CurrentDocument"!系统概述 1\o"CurrentDocument".!开发背景 1\o"CurrentDocument"1.2开发环境 1\o"CurrentDocument"1VisualC++6.0特点 1\o"CurrentDocument"2SQLServer2000特点 2\o"CurrentDocument"3AD0的特性 2\o"CurrentDocument"需求分析 3\o"CurrentDocument"2.I系统需求分析 3\o"CurrentDocument"2.2可行性分析 3\o"CurrentDocument"2.I技术可行性 3\o"CurrentDocument"经济可行性 3\o"CurrentDocument"操作可行性 4\o"CurrentDocument"数据描述 4\o"CurrentDocument"系统运行需求 5\o"CurrentDocument"4.1用户界面 5\o"CurrentDocument"4.2 硬件要求 5\o"CurrentDocument"软件要求 5\o"CurrentDocument"使用方法 5\o"CurrentDocument"故障处理 5\o"CurrentDocument"3概要设计 6\o"CurrentDocument"1E-R模型的建立 6\o"CurrentDocument"3.2数据库的设计 7\o"CurrentDocument"4详细设计 11\o"CurrentDocument"系统总体框架设计 11\o"CurrentDocument"系统具体功能设计 11\o"CurrentDocument"4.2.1 登陆界面 11\o"CurrentDocument"4.2.2 主界面 12\o"CurrentDocument"4.2.3 库存商品 12\o"CurrentDocument"4.2.4供货商家 13\o"CurrentDocument"4.2.5商口口入库 13\o"CurrentDocument"4.2.6 商品出库 14\o"CurrentDocument"4.2.7 查询 14\o"CurrentDocument"4.2.8 修改密码 17\o"CurrentDocument"4.2.9 库存报警 17\o"CurrentDocument"5调试运行及测试 18\o"CurrentDocument"5.1调试运行 18\o"CurrentDocument"5.2测试 18\o"CurrentDocument"总结 27\o"CurrentDocument"致谢 28\o"CurrentDocument"参考文献 29\o"CurrentDocument"附录ー:部分程序代码 30\o"CurrentDocument"附录二:外文资料/译文 46\o"CurrentDocument"外文文献原文 46\o"CurrentDocument"外文文献翻译 531系统概述开发背景在当今这个快速发展的社会,计算机产业兴起,已经成为各行业必不可少的工具,他实现了不同程度的自动化操作,给人们的工作和生活带来了极大的便利。现在我们的周围出现了大量的超市、便利店等,长期以来人们使用传统的人ェ方式管理仓库中的各种物资设备,这样的管理方式不仅效率低,而且时间ー长,将产生大量的数据和文件,这给查找。更新和维护都带来了不便。而对于这些企业而言资源管理、信息的存储和处理显得迫切重要,要适应市场竞争,就需要有高效的处理方式和管理方法,因此加快超市库存管理的信息化进程是必可少的。所以开发该系统是必要的,使用该系统不仅能提高商品的信息化程度,减轻管理人员的管理、统计商品负担,也可以及时获取商品入出库信息,并同时提高管理效率和公司利益最大化。开发环境前台应用程序开发使用的是VisualC++6.0,后台数据库的建立和维护使用的是SQLServer2000oVisualC++6.0特点VisualC++6.0是功能最为强大的可视化开发工具之一,它不仅支持传统的软件开发方法更重要的是它能支持面向对象、可视化的开发风格。因此VisualC++6.0又称作是ー个集成开发工具,它提供了软件代码自动生成和可视化资源编辑功能。VisualC++6.0具有的优点:提供了面向对象的应用程序框架MFC(MicrosoftFoundationClass),简化了程序员的编程工作,提高了模块的可重用性;提供了基于CASE技术的可视化软件的自动生成和维护工具AppWizard、ClassWizard,VisualStudio,WizardBar等,实现了直观、可视的程序设计风格,方便的编译和管理各种类,维护程序的源代码;封装了Windows的API函数、USER、KERNEL.GDI函数,简化了编程时创建、维护窗口的许多复杂的工作。其中MFC是ー个很大的、扩展了的C++类层次结构,它能使开发Windows应用程序变得更加容易。MFC是在整个Windows家族中都是兼容的,也就是说,无论是Windows3.x、Windows95还是WindowsNT)所使用的MFC是兼容的。每当新的Windows版本出现时,MFC也会得到修改以便使旧的编译器和代码能在新的系统中工作。MFC也回得到扩展,添加新的特性、变得更加容易建立应用程序。使用MFC的最大优点是它为你做了所有最难做的事。MFC中包含了上成千上万行正确、优化和功能强大的Windows代码。你所调用的很多成员函数完成了你自己可能很难完成的工作。从这点上将,MFC极大地加快了你的程序开发速度。由于MFC编程方法充分利用了面向对象技术的优点,它使得我们编程时极少需要关心对象方法的实现细节,同时类库中的各种对象的强大功能足以完成我们程序中的绝大部分所需功能,这使得应用程序中程序员所需要编写的代码大为减少,有力地保证了程序的良好的可调试性。SQLServer2000特点SQLServer是一种关系数据库(relationaldatabase),它除了支持传统关系数据库组件(如数据库、表)和特性(如表的join)タト,也支持当今关系数据库常用的组件,如存储过程(storedprocedure)、视图(view)等。另外,它还支持,目前关系数据库都支持的标准查询语言 SQL(StructuredQueryLanguage)〇SQLServer另外…项重要的特点是它支持数据库复制(replication)功能,也就是当你在ー个数据库上执行操作时,可以将其操作结果传至远程SQLServer相同的数据库上,让两边的数据保持同步。SQLServer2000是Microsoft公司推出的SQLServer数据库管理系统,该版本继承了SQLServer7.0版本的优点同时又在可靠性、质量和易用性、可伸缩性、业务智能功能和对MXL的支持,以及与微软BACK-OFFICE系列产品的无缝集成等方面增加了几种新的功能,由此成为大规模联机事物处理(OLTP)、数据仓库和电子商务应用程序的优秀数据库平台。ADO的特性ADO(ActiveXDataObject)是ー个用于存取数据源的COM组件。它提供了编程语言和统ー数据访问方式OLEDB的一个中间层,也就是说它是建立在OLEDB之上的高层数据库访问技术。它封装了OLEDB所提供的接口,比起OLEDB提供者,ADO的接口可以使程序员在更高级别上进行数据交互。ADO技术不仅可以应用于关系数据库,也可以应用于非关系数据库。可以用统ー的方法对不同的文件系统进行访问,大大简化了程序编制,增加了程序的可移植性。通过ADO连接SQLServer数据库可以分为有源数据库连接和无源数据库连接,我做的这个超市管理系统使用的是有源数据库连接,也就是说首先要注册数据源名称(DSN),通过配置ODBC环境,进行数据源的注册,然后才能在对数据库编程时,对数据源进行连接、访问和操作。2需求分析.I系统需求分析在现在有的超市企业也有自己的管理系统,但是不是操作繁琐就是功能不够齐全,所以我们要开发ー个操作简单、功能齐全的管理系统,让具有一般计算机水平的员工也能方便使用。因此该系统的界面要友好,还要实现比较完整的功能。其主要包括以下儿个功能:库存商品:显示商品信息,并实现对商品信息的增删改功能。供货商家:显示商家信息,并实现对商家信息的增删改功能。商品入库:对商品进行入库操作。商品出库:对商品进行出库操作。商品信息:显示所有商品信息,并显示商品总数。商家信息:显示所有商家信息,并显示商品总数。入库信息:显示所有的入库信息。出库信息:显示所有的出库信息。库存报警:显示高于最高预警线或者最低于低预警线先的商品的详细信息。修改密码:修改登录密码。日志查看:方便査看操作日志信息。.2可行性分析.2.I技术可行性现在的社会计算机普及应用,各种软件应运而生,不管是一般的应用软件,还是开发软件,都能在一般操作系统(Windows2000以上的版本或相应的WindowsNT版本)上工作,当然也包括VisualC++2005和SQLServer2000,所以用这两种开发平台开发出来的应用软件操作系统在Windows2000以上的版本或相应的WindowsNT版本系统上也是可以运行的。而且现在计算机技术已经很成熟,设计人员不用自己编写繁琐的代码,很多都是库类中已经存在的,编程人员在需要使用的时候只要调用就可以了。所以综上所述,在技术方面考虑是可行的。.2.2经济可行性虽然开发该软件是需要一定成本的,比如人力和物力,但是通过该软件的使用可以减少企业管理费用和人力开支,而其它ー些繁琐的事物都通过新系统来加
以分析解决,不仅节省了大量的时间,还为企业的各项决策提供了宝贵的资料,为企业带来的是更大的经济效益。从根本上提高了超市的经济效益,所以从经济上完全是可行的。2.3操作可行性本系统采用基于Windows的图形用户界面,所以不必具备计算机的专业技能,只要有…般的计算机知识的人员就可以轻松上手。而整个超市库存管理系统采用友好的交互界面,简洁明了,不需要对数据库进行深入的了解。由此,该系统的操作是可行的,有必要开发该系统。综合以上三方面,该系统具有很高的开发可行性,无论是从技术上或者经济上还是操作上。数据描述由上述分析和根据对系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程的分析,可画数据流图2.1所示。商品入库商品信息 ]査询入库信息 I出库信息库存报警修改管理员留码系统操作日志系统帮助退出图2.1系统总体数据流图
系统运行需求2.4.I用户界面本系统的用户交互界面采用的是基于Windows的窗口界面,便于操作。2.4.2硬件要求运行本系统的硬件基本要求如下:CPU:IntelP3及以上;内存:256MB及以上;硬盘:10GB及以上。2.4.3软件要求操作系统使用Windows2000以上的版本或相应的WindowsNT版本。数据库系统采用:SQLServer2000〇2.4.4使用方法本系统已生成可执行文件,使用时打开GMS.exe即可。2.4.5故障处理正常使用时不易出错,对于用户的输入错误应给出适当的改正提示,若运行时遇到不可恢复的系统错误,也必须保证数据库完好无损。3概要设计E-R模型的建立根据需求分析的结果(数据流图、数据字典等)对现实世界的数据进行抽象,然后设计出本系统的E-R图,如图3.1、3.2、3.3所示。图3.1出库E-R图图3.2入库E-R图
图3.3供应E-R图数据库的设计根据系统功能设计的要求、功能模块的划分以及上面实体以及实体间关系的设计,形成各个表格之间的关系,可设计超市库存管理系统数据库的各个表如下所示。系统用户表的设计:用户(操作员号,操作员姓名,操作员密码)CREATETABLEadmin(Admin_codenvarchar(lO)COLLATEChinese_PRC_CI_ASNOTNULL,Admin_namenvarchar(30)COLLATEChinese_PRC_CI_ASNULL,Admin_passwdnvarchar(50)COLLATEChinese_PRC_CI_ASNULL表3.1系统用户表列名数据类型长度允许空说明是否主键Admin_codenvarchar10否操作员号是Admin_namenvarchar30是操作员姓名否Admin_passwdnvarchar50是操作员密码否商品信息表的设计:商品(商品编号,商品名,当前数量,库存上限,库存下限)CREATETABLEgoods(G_codenvarchar(50)COLLATEChinese_PRC_CI_ASNOTNULL,G_namenvarchar(50)COLLATEChinese_PRC_CI_ASNULL,CurrentnumberintNULL,Max_numberintNULL,MinnumberintNULL);表3.2商品イ信息表列名数据类型长度允许空说明是否主键G_codenvarchar50否商品编号是G_namenvarchar50是商品名否Current_numberint4是当前数量否Max_numberint4是库存上限否Min_numberint4是库存下限春入库信息表设计:入库(商品编号,供应商号,入库数量,入库价格,入库日期)CREATETABLEinlib(Goods_codenvarchar(50)COLLATEChinese_PRC_CI_ASNULL,Provider_codenvarchar(50)COLLATEChinese_PRC_CI_ASNULL,In_numberintNULL,In_PricerealNULL,In_datenvarchar(50)COLLATEChinese_PRC_CI_ASNULL):表3.3入库信息表列名数据类型长度允许空说明是否主键Goods_codenvarchar50否商品编号否Provider_codenvarchar50是供应商号否In_numberint4是入库数量否In_Pricereal4是入库价格否In_datedatetime8是入库日期否出库信息表设计:出库(商品编号,出库数量,出库人,出库时间)CREATETABLEoutlib(Goods_codenvarchar(50)COLLATEChinese_PRC_CI_ASNULL,Outnumbernvarchar(50)COLLATEChinese_PRC_CI_ASNULL,ut_personnvarchar(50)COLLATEChinese_PRC_CI_ASNULL,takernvarchar(50)COLLATEChinese_PRC_CI_ASNULL,out_datenvarchar(50)COLLATEChinese_PRC_CI_ASNULL);表3.4出库イ信息表列名数据类型长度允许空说明是否主键Goods_codenvarchar50是商品编号否Outnumbernvarchar50是出库数量否Out_personnvarchar50是出库人否out_dateSmalldatetime4是出库时间否日志表设计:日志(操作员姓名,操作类型,操作日期)CREATETABLElog(Admin_namenvarchar(30)COLLATEChinese_PRC_CI_ASNULL,do_whatnvarchar(50)COLLATEChinese_PRC_CI_ASNULL,do.datenvarchar(50)COLLATEChinese_PRC_CI_ASNULL);表3.5日志表列名数据类型长度允许空说明是否主键Admin_namenvarchar30是操作员姓名否do_whatnvarchar50ノよ操作类型否do_datesmalldatetime4江操作日期否供应商信息表设计:供应商(供应商号,供应商名,供应商地址,联系人,电话,Email)CREATETABLEprovider(Provider_codenvarchar(50)COLLATEChinese_PRC_CI_ASNOTNULL,Provider_namenvarchar(30)COLLATEChinese_PRC_CI_ASNULL,Provider_addressnvarchar(50)COLLATEChinese_PRC_CI_ASNULL,Provider_personnvarchar(20)COLLATEChinese_PRC_CI_ASNULL,Provider.telphonenvarchar(13)COLLATEChinese_PRC_CI_ASNULL,Provider_emailnvarchar(50)COLLATEChinese_PRC_CI_ASNULL);表3.6供应商信息表列名数据类型长度允许空说明是否主键Provider_codenvarchar50否供应商号是Provider_namenvarchar30是供应商名否Provider_addressnvarchar50是供应商地址看Provider_personnvarchar20是联系人否Provider_telphonenvarchar13是电话否Provider_emailnvarchar50是Email否4详细设计系统总体框架设计依据需求分析阶段得到的数据流图,在保证系统基本功能要求的前提下,可画出库存管理系统功能模块图如图4.1所示。超市库存管理系统库存商品供货商家商品入库商品出库存商品供货商家商品入库商品出库查询库存报警系统ュ退出_」測ッ「-T-修改_厂増加_,退出_I-_出商家售心图4.1系统功能模块图系统具体功能设计2.I登陆界面运行系统后出现如图4.2所示的登陆界面,输入admin表中已经存在的操作员名和正确的密码后方能进入主界面。用户笥厂密码,F回JRSMj图4.2登陆界面
4.2.2主界面主界面包括系统所有的功能实现,点击不同功能,进入不同功能的实现界面,成功登陆后将进入主界面,主界面如图4.3所示。图4.3主界面4.2.3库存商品单击主界面中的“库存商品”按钮进入库存商品界面,如图4.4所示。GO7O8...羊果544GO7O8...羊果544300100G0708...香・500122100G0713...乒乓球130200015GO713...棒棒樗6485000G07S952桃子6220050G32U饼干41100100G395839电R»第079020G712345方便面0400100G723456采石茶干020050竺改(出!・除(D)
退出(X)4.2.4供货商家在主界面点击“供货商家”按钮,进入供货商家界面,如图4.5所示。图4.5供货商家界面4.2.5商品入库在主界面中点击'‘商品入库”按钮,进入商品出库界面,如图4.6所示。其中“入库商品”为下拉列表框,只可以选择商品表中已经存在的商品进行入库操作,供应商也只能选择供应商表中已经存在的记录进行入库。确定| 取消图4.6入库界面
4.2.6商品出库在主界面中点击“商品出库”按钮,就进入商品出库界面,如图4.7所示。图4.7出库界面4.2.7查询单击主界面的“商品信息”按钮进入商品信息界面,如图4.8所示,显示所有商品的具体信息。商品信息 区商品端言I商品名称1当前库存|最大库容最小库容607083704100300100G07084004500122100G071338012501000100G07133902124200015G071340035095000G0789525020050G089340120100G321401100100G395839电风扇079020-1k■ ,记录总数|5—确定
单击主界面的“商家信息”按钮进入商品信息界面,如图4.9所不,显示所有商家的具体信息。P0709110I 汇源P0709U02 药P0709110I 汇源P0709U02 药方果BSP07091103 余的茶行P07091202 文具批发P07091203 棗师傅山鞍涂山京京马当黄南对三四五六七強李王紀朱1234567 zhangsan®...2345678 lisi€3456789 wangwu«si...4567890 zhengliu®...5678901 zhuqi«126...定4.记录总数定4.图4.9商家信息单击主界面的“入库信息”按钮进入商品信息界面,如图4.10所示,显示所有入库信息。商品编号 I商家编号 I入库数量: I购入价格 国人日翘G07083704P07091101222205312011...G07083704P07091101222205312011...G07134003P07091102120205312011...G07S952P070911021210612011...G07134003P07091101906220111...G3214P07091101423406220111...G07133902P070912023122011-06-022...G07133902P070912023122011-06-022...G07134003P070911011212011-06-052...图4.10入库信息
单击主界面的“出库信息”按钮进入商品信息界面,如图4.1I所示,显示所有出库信息。图4.11出库信息单击主界面的“操作日志”按钮进入操作日志界面,如图4.12所示,显示所有操作信息。图4.12操作日志
4.2.8修改密码在主界面中点击“修改密码”按钮,进入修改密码界面,两次输入想要修改的密码,即可修改成功。界面如图4.13所示。图4.13修改密码界面4.2.9库存报警在主界面中点击“库存报警”按钮,进入库存报警界面,直接显示当前库存中低于最低预警线和高于最高预警线的商品信息,便于管理人员及时处理,如图4.14所示。匸存预審 「£31低于最低预警线的商品下列商品库存过低,请及时购买入库!商品编号 I商品名称 I当前库存I最大库容 I最小库容|G07083704G078952G08934G3214G395839G07083704G078952G08934G3214G395839明果子刷干风苹桃牙tw电□〇〇15000〇〇〇OOOOO15112高于最高预警线的商品下列商品库存过盛,请尽快出库消售!商品,扁号1商品名称1当前库存1最大库答1最小库容G07084004香薫500122100G07134003檯檯惚5095000确定(0)图4.14库存报警5调试运行及测试调试运行调试运行时出现了很多错误,在老师和同学的帮助以及自己查阅资料、网上搜索之后都一•解决了。主要是数据库连接的问题和变量的问题。测试测试1名称:登陆测试目的:测试登陆界面内容:合理性检查、合法性检查,是否能成功登陆的测试步骤及操作:驱动模块调用之后,看是否能进入主界面允许偏差:不允许任何偏差条件:admin表结果:如下所示若输入的用户名或密码错误将出现下图5.1所示的提示。图5.1登陆不成功若输入的用户名和密码正确的话将进入主操作界面,如图5.2所示。主界面(商品库存告理系统) 亶操作库存商品 供货商家 商品ハ库 商品出屋查询商品信息商家信息 入库信息ー ー出库信息特殊功能库存报警| 修改密码|系统操作日志 帮助 关于 汜出图5.2主界面测试2名称:商品的增加、删除、修改记录测试目的:测试商品操作界面。内容:合理性检查、合法性检查,商品操作界面显示控制步骤及操作:驱动模块调用之后,看是否能实现各个功能,并且查看数据库中的数据是否做了相应的改变。允许偏差:不允许任何偏差条件:goods表结果:如下所示点击左边列表框中的任意ー个行将会在右边显示,如图5.3所示。商品操作商品ー.!商品.一I当刖ー.丨最大...I最小..G0G0G0G0G0G0G0G3G3果蕉珠乓搬子刷干风苹香图乒商品操作商品ー.!商品.一I当刖ー.丨最大...I最小..G0G0G0G0G0G0G0G3G3果蕉珠乓搬子刷干风苹香图乒棒桃牙饼电0005900520015215500015050〇〇〇〇〇112rs-i操作商品煽号 ゆ78952商品名称 偎子最大库容[200商品I商品「当前 大i最小.…GO708一G0708..G0713..G0713..G0713..G078952G08934G3214G395839果蕉珠乓棒子刷干风
苹香图乒檯桃牙胡电笔球糖扇3001221000200050020012011007901001001001505010010020操作商品编号 !*303525商品名称 麻不一最大库容 (2000最小库容 卩90増加S)I修改(M)]删除〇))最小库容⑸0増加(A)|修改(M)|删除(D)退出COnr图5.3商品操作的显示功能在商品右边的文本框中输入想要增加的商品信息,点击“增加”按钮就可以添加商品,如图5.4所小。商品增加成功后将显布在左边的窗口中。l~a~l商品揍l~a~l退出里图5.4增加商品
由图5.6我们可以看到,刚刚我们添加的商品“袜子”,已经在左边的窗口中显示出来了。但如果我们增加一个新的商品,商品号是商品表中已经存在的话,将会提示错误。比如我们加入商品号为G3214的商品(已经存在,为饼干商品的商品号),点击’‘添加"按钮后将提示如下图5.5错误。原因是商品号是主键,主键是不能重复的。图5.5不能重复插入选中窗口中的某一列,比如“袜子”,将在右边显示其相应信息。在相应的文本框中修改其数值,点击“修改”按钮后,新数值将显示在左边的窗口中。我们将其最大容量修改为300。具体如图5.6、5.7所示。商品操作'XI3525[190操作商品编号商品名称最大库容最小库容商品商品 当前..最大最小0000〇〇9000500001111105112〇〇〇02000000002000021931«1*2521*1i7000590052000152155000笔球糖扇子果蕉珠其棒子刷干风袜苹香图乒棒桃牙饼电003525G0708..GO708一60713..00713..G0713..GO78952608934G3214G395839nr商品操作新品.!商品.一I当刖.."T最大...;最小...003525G0708...GO708.一G0713...G0713...G0713...GO78952G08934G3214G395839子果蕉珠乓棒子刷干风秣苹香图乒棒桃牙饼电笔球糖扇000590052000152155000〇〇〇0020000000002000021933112521170000〇〇900050000♦・・・・・・・・4ーーー・一・・操作商品编号商品名称最大库容最小库容增加色)Iー删除色)修改色)I图5.7商品修改成功点击选中左边的某个商品,单击“删除”按钮,左边将不再显示该商品,说明该商品已被删除,我们这里选“袜子”商品,结果如图5.8所示。三三[三’三商品..商品..丨当前...最大最小.G0708..¢0708..G0713..G0713..G0713..G078Q52G08934G321463gs83g扇果蕉珠乓棒子刷干FL苹香图兵檯桃牙tff电00059005200152155000操作商品徧号 r商品名称 r最大库容「最小库容「ー里加S)|修改例)I则除〇))]_退出〇〇测试3名称:商家的增加、删除、修改记录测试。目的:测试商家操作界面。内容:是否存在该记录、合理性检查、合法性检查商家对话框显示控制等步骤及操作:驱动模块调用之后,看是否能实现各个功能,并且查看数据库中的数据是否做了相应的改变。允许偏差:不允许任何偏差条件:provider表结果:如下所示同样,点击上面列表框中的信息将显示在下面各个文本框中。点击“增加”、“修改”、“删除”、“退出”按钮将实现相应的功能,与“库存商品”界面类似,测试结果都正常,这里不再赘述。测试4名称:商品入库测试。目的:测试入库功能。内容:入库商品检查、合理性检查、合法性检查,数据库修改。步骤及操作:驱动模块调用之后,看是否能进行入库操作,并打开数据库直接察看是否做了相应的改变。允许偏差:不允许任何偏差条件:inlib表结果:如下所示填入所有信息后单击“确定”按钮将提示入库成功,具体操作如图5.9、5.10所示。单击“取消”按钮将返回主界面。
图5.10入库成功测试5名称:商品出库测试。目的:测试出库功能。内容:出库的商品及其现有库存量、出库后的商品数量。步骤及操作:驱动模块调用之后,看是否能实现出库,并打开数据库直接察看结果是否正确允许偏差:不允许任何偏差条件:outlib表结果:如下所示选择要出库的商品,会自动显示其现有数量,如图5.11所示。确定取消
确定取消当我们在“出库数量”中输入50时,点击确定按钮,将出现如图5.12所示的界面,再次点击“采石茶干”时我们发现现有数量已经变成了100.如图5.13所示。图5.12出库成功图5.13出库后的结果现在我们再将“采石茶干”出库200,将会显示如图5.14所示的提示。GMS ,江!库存不足,请重新购入出库数量诵疋图5.14库存不足测试6名称:显示测试。目的:测试显示功能。内容:显示界面显示控制,能否显示相应的信息。步骤及操作:驱动模块调用之后,看是否能正确显示各个模块的信息允许偏差:不允许任何偏差条件:log、goods、provider、inlib、outlib表结果:如下所示各个模块都能正常显示数据。其具体界面见4.2.7总结通过这次毕业设计,我体会到了很多,首先要把大学这四年所学的东西全部学以致用,在有限的时间内,ー个人完成一个独立的项目,的确是ー个极大的挑战。但是在这个挑战中我学习到了很多,不会的就到图书管翻阅资料、或者去网上搜索,或者请教老师和同学,特别是老师和同学们,给予了我很大的帮助。在程序的设计中遇到了很多问题,印象深刻的就是开始的时候数据库连接,怎么也连接不上总是提示用户登录失败,以为是连接字符串的问题,但是改来改去也没能解决问题,后来尝试性的改了DSN的服务器,还有登录用户名,オ发现是服务器连接错误,改了之后就运行起来了。毕业设计给我带来的不仅仅是挑战,更是机遇,他教会我如何去发现问题,然后如何解决问题,教我不能放弃,要一直的努力才能得到最后的胜利。通过毕业设计我不仅仅知道了更多的软件方面的知识,也学会了一些新的思考方式。致谢毕业设计是大学四年最后的ー个综合能力设计应用的总结。它给我们提供了ー个将自己平时所学的理论知识转化成实际工作成果的机会,它让我们灵活的运用所学过的知识,去解决实际中的问题。通过本次学习,我在理论知识和实践知识方面都有了很大的收获。在本次毕业设计中,我特别要感谢的是我的指导老师孙国华老师!在论文题目的选定、资料查阅、收集和写作的整个过程中,孙老师都给予我细心指导和耐心帮助。孙老师认真负责的工作态度,扎实严谨的治学精神和精益求精的理论水平都使我受益匪浅。在孙老师的帮助下,我的专业知识和专业能力达到了质的飞跃。这一切对于我在以后的工作和学习中都有着巨大的帮助。在此,我在这里再次忠心的感谢孙老师在系统开发过程中给予我的大力帮助,使我有信心解决难题,ー步步的完成毕业设计,使得系统能及时开发完成。同时还要向给予我无微不至的关心和帮助的学校各级领导和教师以及同学表达最诚挚的谢意。参考文献!谢勇.VisualC++6.0实例精通.北京:科学出版社,20002杨章伟.21天学通VisualC++.北京:电子工业出版社,20093赵松涛.中文版SQLServer2000应用及实例集锦.北京:人民邮电出版社,20024林福泉.SQLServer2000中小企业实务应用.北京:中国铁道出版社,20015文龙,张自辉,胡开胜等.SQLServer2005中文版入门与提高.北京:清华大学出版社,20076明日科技.VisualC++项目开发实例自学手册.北京:人民邮电出版社,20087李博宣.VisualC++6.0数据库开发指南.北京:清华大学出版社,20008黄明,梁旭,周绍斌.VisualC++信息系统设计与开发实例.北京:机械工业出版社,20059龙帅.深入浅出SQLServer数据库开发.北京:中国青年出版社,200610三扬科技.VisualC++开发入行真功夫.北京:电子工业出版社,2009(美)CJDate.AnIntroductiontoDATABASESYSTEMS.北京:机械工业出版社,2002(美)萨维奇(SavitchW).PROBLEMSOLVINGWITHC++:TheObjectofProgramming(FifthEdition).北京:高等教育出版社,2006(美)ThinkinginC++(SecondEdition),北京:机械工业出版社,200214特别感谢百度知道、CSDN、MSDN、豆丁网等论坛给予的帮助。附录一:部分程序代码1数据库连接数据库连接采用的是ADO形式,主要实现代码如下所示:CGMSApp::CGMSApp()(]CGMSApptheApp;CStringstrAdminName;BOOLCGMSApp::InitInstance()(AfxEnableControlContainer();#ifdef_AFXDLLEnable3dControls(); //CallthiswhenusingMFCinasharedDLL#elseEnable3dControlsStatic();//CallthiswhenlinkingtoMFCstatically#endifif(FAILED(::CoInitialize(NULL))){AfxMessageBox(nADOInitfailed");returnfalse;m_pConn.CreateInstance(_uuidof(Connection)); 〃初始化连接指针m_pConn->Open(,,Provider=MSDASQL;DSN=smn,',sa,,,,n',adConnectUnspecified); 〃设置连接字符串}//CatchExceptionscatch(_com_error&e){CStringerr;err.Format("%s”,(char*)(e.Description()));AfxMessageBox(err);)catch(...)AfxMessageBox("UnknownError...");}//InitADORecordSetm_pRs.CreateInstance(_uuidof(Recordset));CGMSDlgdig;m_pMainWnd=&dlg;intnResponse=dlg.DoModal();if(nResponse==IDOK)(//dismissedwithOK}elseif(nResponse=IDCANCEL)(//dismissedwithCancel}//Sincethedialoghasbeenclosed,returnFALSEsothatweexitthe//application,ratherthanstarttheapplication'smessagepump.returnFALSE;)boolCGMSApp::ADOExecute(_RecordsetPtr&ADOSet,_variant_t&strSQL){if(ADOSet->State==adStateOpen)〃获取连接状态,若为打开状态则关闭ADOSet->Close();try(ADOSet->Open(strSQL,m_pConn.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdUnknown);returntrue;)catch(_com_error&e)(CStringerr;err.Format("ADOError:%s”,(char*)e.Description。);AfxMessageBox(err);returnfalse;}}
2主界面其主要实现代码如下:voidCMainDlg::OnButtonOut() 〃隐藏主窗口,进入出库信息界而CViewDlgdig;this->ShowWindow(SW_HIDE);dlg.Init(3);dlg.DoModal();this->ShowWindow(SW_SHOW);)〃隐藏上窗口,进入库存报警界voidCMainDlg::OnButtonAlert()〃隐藏上窗口,进入库存报警界CAlertDlgdig;dlg.DoModal();)voidCMainDlg::OnButtonAdmin()CAlertDlgdig;dlg.DoModal();)voidCMainDlg::OnButtonAdmin()改密码界面(CPasswdDlgdig;dlg.DoModal();}voidCMainDlg::OnButtonLog()日志界面(CViewDlgdig;this->ShowWindow(SW_HIDE);dlg.Init(5);dlg.DoModal();this->ShowWindow(SW_SHOW);)voidCMainDlg::OnButtonHelp()助界面〃隐藏主窗口,进入修〃隐藏主窗口,进入操作〃隐藏主窗口,进入帮WinExecCnotepad.exeGPS.HEP",SW_SHOW);}voidCMainDIg::OnButtonAbout() 〃隐藏主窗口,进入关于界面CAboutDlgdig;dlg.DoModal();)voidCMainDIg::OnButtonExit() 〃隐藏主窗口,然后退出系统{OnOK();}3库存商品其主要实现代码如下所示:BOOLCGoodsDlg::OnInitDialog() 〃初始化对话框{CDialog::OnInitDialog();m」istDisp.InsertColumn(〇,”商品编号");m」istDisp.InsertColumn(1商品名称”);m」istDisp.InsertCohimn(2当前库存");11I」1§1ロ1§卩.1115©11(ス11I0!11(3,“最大库存”);m_listDisp.!nsertColumn(4J最小库存");RECTrect;m_listDisp.GetWindowRect(&rect);intwid=rect.right-rect.left;m_listDisp.SetColumnWidth(0,wid/5);m_listDisp.SetColumnWidth(1,wid/5);m_listDisp.SetColumnWidth(2,wid/5);m_listDisp.SetColumnWidth(3,wid/5);m_listDisp.SetColumnWidth(4,wid/5);mJistDisp.SetExtendedStyle(LVS_EX_FULLROWSELECT);RefreshData();returnTRUE;//returnTRUEunlessyousetthefocustoacontrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSE}voidCGoodsDlg::ClearTxt() 〃清空各个文本控件(m_strCodeゴ";m_strName="";m_strMaxNum="";m__strMinNum=nu;UpdateData(false);)voidCGoodsDlg::RefreshData() 〃更新数据(m」istDisp.DeleteAHItems();m」istDisp.SetRedraw(FALSE);_variant_tHolder,strQuery;strQuery="select*fromgoods'1;theApp.ADOExecute(theApp.m_pRs,strQuery);intiCount=theApp.m_pRs->GetRecordCount();if(0==iCount)return;theApp.m_pRs->MoveFirst();inti=0;while(!theApp.m_pRs->adoEOF)(Holder=theApp.m_pRs->GetCollect("G_code");if(Holder.vt!=VT_NULL)m_listDisp.InsertItem(i,(char*)(_bstr_t)Holder);Holder=theApp.m_pRs->GetCollect("G_name");if(Holder.vt!=VT_NULL)m_listDisp.SetItemText(i,l,(char*)(_bstr_t)Holder);Holder=theApp.m_pRs->GetCollect("Current_number");if(Holder.vt!=VT_NULL)m_listDisp.SetItemText(i,2,(char*)Cbstr_t)Holder);Holder=theApp.m_pRs->GetCollect("Max_number");if(Holder.vt!=VT_NULL)m_listDisp.SetItemText(i,3,(char*)(_bstr_t)Holder);Holder=theApp.m_pRs->GetCollect("Min_number");if(Holder.vt!=VT_NULL)m_listDisp.SetItemText(i,4,(char*)(_bstr_t)Holder);theApp.m_pRs->MoveNext();i++;)m_listDisp.SetRedraw(TRUE);}voidCGoodsDIg::OnButtonExit() 〃退出商品操作界面OnOK();)voidCGoodsDlg::OnClickListDisp(NMHDR*pNMHDR,LRESULT*pResult)〃单击选中左边列表框中的某行在右边现实(inti=m_listDisp.GetSelectionMark();m_strCode=m_listDisp.GetItemText(i,O);m_strName=m_listDisp.GetItemText(i,1);m_strMaxNum=m_listDisp.GetItemText(i,3);m_strMinNum=m」istDisp.GetItemText(i,4);UpdateData(FALSE);*pResult=0;}4供货商家其主要实现代码如下:voidCProviderDlg::RefreshData() 〃更新数据{m_listDisp.DeleteAHItems();m_listDisp.SetRedraw(FALSE);_variant_tHolder,strQuery;strQuery="select*fromprovider";theApp.ADOExecute(theApp.m_pRs,strQuery);intiCount=theApp.m_pRs->GetRecordCount();if(0==iCount)return;theApp.m_pRs->MoveFirst();inti=0;while(!theApp.m_pRs->adoEOF)(Holder=theApp.m_pRs->GetCollect("Provider_code");if(Holder.vt!=VT_NULL)m_listDisp.InsertItem(i,(char*)Qbstr_t)Holder);Holder=theApp.m_pRs->GetCollect("Provider_name");if(Holder.vt!=VT_NULL)m_listDisp.SetItemText(i,l,(char*)(_bstr_t)Holder);Holder=theApp.m_pRs->GetCollect("Provider_address");if(Holder.vt!=VT_NULL)m」istDisp.Set!temText(i,2,(char*)(_bstr_t)Holder);Holder=theApp.m_pRs->GetCollect(nProvider_personu);if(Holder.vt!=VT_NULL)m_listDisp.SetItemText(i,3,(char*)(_bstr_t)Holder);Holder=theApp.m_pRs->GetCollect(',Provider__telphoneH);if(Holder.vt!=VT_NULL)m_listDisp.SetItemText(i,4,(char*)(_bstr_t)Holder);Holder=theApp.m_pRs->GetCollect(',Provider_emair,);if(Holder.vt!=VT_NULL)mJistDisp.SetItemText(i,5,(char*)(_bstr_t)Holder);theApp.m_pRs->MoveNext();i++;}m_listDisp.SetRedraw(TRUE);}BOOLCProviderDlg::OnInitDialog() 〃初始供应商化对话框(CDialog::OnInitDialog();m」istDisp.InsertColumn(〇,"编号”);mJistDisp.InsertColumn(1,"名称”);m」istDisp.InsertColumn(2,“地址”);m」istDisp.InsertColumn(3,”负责人”);m」istDisp.InsertColumn(4,”电话”);m_listDisp.InsertColumn(5,"Email'1);RECTrect;m」istDisp.GetWindowRect(&rect);intwid=rect.right-rect.left;m」istDisp.SetColumnWidth(0,wid/6);m_listDisp.SetColumnWidth(1,wid/6);m_listDisp.SetColumnWidth(2,wid/6);m_listDisp.SetColumnWidth(3,wid/6);m」istDisp.SetColumnWidth(4,wid/6);m」istDisp.SetColumnWidth(5,wid/6);mJistDisp.SetExtendedStyle(LVS_EX_FULLROWSELECT);RefreshData();returnTRUE;//returnTRUEunlessyousetthefocustoacontrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSEvoidCProviderDlg::ClearTxt() 〃清空供应商对话框中的各个文本控件(m_strAddress=,M,;m_strCode=,M,;m_strName=,M,;m_strEmail=,n,;m_strPerson=,,M;m_strPhone="u;UpdateData(false);}voidCProviderDlg::OnClickListDisp(NMHDR*pNMHDR,LRESULT*pResult) 〃单击左边列表框中的某行,将在右边文本框中显示{inti=m」istDisp.GetSelectionMark();m_strCode=m」istDisp.GetItemText(i,〇);m_strName=m_listDisp.GetItemText(i,1);m_strAddress=m_listDisp.GetItemText(i,2);m_strPerson=m」istDisp.GetItemText(i,3);m_strPhone=m」istDisp.GetItemText(i,4);m_strEmail=m_listDisp.GetItemText(i,5);UpdateData(FALSE);*pResult=0;}5商品入库其主要实现代码如下所示:BOOLCInDlg::OnInitDialog() 〃初始化入库对话框(CDialog::OnInitDialog();m_Date=CTime::GetCurrentTime();m_Time=m_Date;m_cbGoods.SetRedraw(false);m_cbProvider.SetRedraw(false);_variant_tHolder,strQuery;strQuery="select*fromgoods";theApp.ADOExecute(theApp.m_pRs,strQuery);intiCount=theApp.m_pRs->GetRecordCount();if(0==iCount)returnTRUE;theApp.m_pRs->MoveFirst();inti=0;while(!theApp.m_pRs->adoEOF)(Holder=theApp.m_pRs・>GetCollect("G_name");if(Holder.vt!=VT_NULL)m_cbProvider.AddString((LPCTSTR)(_bstr_t)Holder);theApp.m_pRs->MoveNext();i++;}strQuery="select*fromprovider";theApp.ADOExecute(theApp.m_pRs,strQuery);iCount=theApp.m_pRs->GetRecordCount();if(0==iCount)returnTRUE;theApp.m_pRs->MoveFirst();i=0;while(!theApp.m_pRs->adoEOF)(Holder=theApp.m_pRs->GetCollect("Provider_name");if(Holder.vt!=VT_NULL)m_cbProvider.AddString((LPCTSTR)(_bstr_t)Holder);theApp.m_pRs->MoveNext();i++;)m_cbGoods.SetRedraw(true);m_cbProvider.SetRedraw(true);UpdateData(FALSE);returnTRUE;//returnTRUEunlessyousetthefocustoacontrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSE)voidCInDig::OnButtonOk() 〃获取商品号、供应商号(UpdateData();m_cbGoods.GetWindowText(m_strGoodsName);m_cbProvider.GetWindowText(m_strProviderName);CStringstrGcode,strPcode;GetGoodsCode(m_strGoodsName,strGcode);GetProviderCode(m_strProviderName,strPcode);AddIn(strGcode,strPcode);AddGoods(atoi(m_strNum));)voidClnDlg::GetGoodsCode(CStringstrName,CString&strCode)现商品显不在下拉列表的功能(_variant_tHolder,strQuery;strQuery="select*fromgoodswhereG_name士”+strName+”'“;theApp.ADOExecute(theApp.m_pRs,strQuery);theApp.m_pRs->MoveFirst();Holder=theApp.m_pRs->GetCollect("G_code");if(Holder.vt!=VT_NULL)strCode=Holder.bstrVal;)voidCInDlg::GetProviderCode(CStringstrName,CString&strCode)//实现商家显示在下拉列表的功能(.variant」Holder,strQuery;strQuery="select*fromproviderwhereProvider_name士"+strName+"”';theApp.ADOExecute(theApp.m_pRs,strQuery);theApp.m_pRs->MoveFirst();Holder=theApp.m_pRs->GetCollect("Provider_code");if(Holder.vt!=VT_NULL)strCode=Holder.bstrVal;)voidClnDlg::OnButtonCancel() 〃退出入库界面(OnCancel();}6商品出库其主要实现代码如下所示:voidCOutDlg::OnButtonCancel() 〃退出出库界面
OnCancel();BOOLCOutDlg::OnInitDialog() 〃初始化出库对话框{CDialog::OnInitDialog();m_Date=CTime::GetCurrentTime();m_Time=m_Date;m_cbGoods.SetRedraw(false);_variant_tHolder,strQuery;strQuery="select*fromgoods";theApp.ADOExecute(theApp.m_pRs,strQuery);intiCount=theApp.m_pRs->GetRecordCount();if(0==iCount)returnTRUE;theApp.m_pRs->MoveFirst();inti=0;while(!theApp.m_pRs->adoEOF)(Holder=theApp.m_pRs->GetCollect("G_name");if(Holder.vt!=VT_NULL)m_cbGoods.AddString((LPCTSTR)(_bstr_t)Holder);theApp.m_pRs->MoveNext();i++;)m_cbGoods.SetRedraw(true);UpdateData(FALSE);returnreturnTRUE;//returnTRUEunlessyousetthefocustoacontrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSE}voidCOutDlg::OnCancelMode()(CDialog::OnCancelMode();)voidCOutDlg::OnSelchangeComboGoods()〃获取商品当前数量UpdateData();m_cbGoods.GetLBText(m_cbGoods.Ge
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 期中和中考动员会校长讲话:5大战略3个保障1个目标决胜期中冲刺中考
- 2025-2030糖果市场前景分析及投资策略与风险管理研究报告
- 2025-2030湖南省餐饮行业市场发展分析及发展前景与投资研究报告
- 2025-2030杜松子酒行业市场发展分析及前景趋势与投资研究报告
- 2025-2030智能牙刷行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030旱冰曲棍球溜冰鞋行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030成都家装行业市场发展现状及发展趋势与投资前景研究报告
- 2025-2030影视公司行业竞争格局分析及投资前景与战略规划研究报告
- 沙漠小球藻胞内多糖提取工艺优化与抗氧化活性检测
- 浙江省台州市山海协作体2024-2025学年高二下学期4月期中联考试题生物
- 2025-2030年中国小麦加工产业运行动态及发展可行性分析报告
- 乾坤未定皆有可能-2025届高三百日誓师班会课件
- 台达DELTA变频器VFD-EL系列使用说明书和手册(完整中文版)VFD007EL23A
- 2025年山西汾西矿业集团公司招聘笔试参考题库含答案解析
- 2024年度英语课件容貌焦虑
- 神经外科质量与安全管理工作计划
- 城市违建拆除施工方案
- 复色激光光谱分析研究
- 农药代销协议书模板
- 《电力中长期交易合同示范文本(2022年修订版)》
- 小学班会 世界知识产权日知识产权宣传周主题班会 课件
评论
0/150
提交评论