毕业设计(论文)vb超市管理系统_第1页
毕业设计(论文)vb超市管理系统_第2页
毕业设计(论文)vb超市管理系统_第3页
毕业设计(论文)vb超市管理系统_第4页
毕业设计(论文)vb超市管理系统_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘要本系统是实现一个超市运营管理管理的超市POS管理系统,本系统分为前台收银系统和后台管理系统两部分,分做两个项目开发。前台主要实现商品销售功能,在输入商品条码后自动从数据库中获取商品相关信息,完成销售后,自动将商品销售信息保存到系统数据库中。后台管理系统主要实现用户管理、商品管理、库存管理、销售统计等功能。本系统采用Visual Basic 6.0中文版和 MS SQL 2000数据库作为平台进行开发。利用本系统,中小型超市可以实现商品的收银管理,库存管理,销售统计等功能,可以提高顾客的满意度,节约人力物力,提高工作效率。关键字:POS管理系统;收银系统;销售功能;SQL 目 录摘要I1.绪

2、论11.1.课题的目的及意义11.2.国内外文献综述22系统分析3需求分析3开发环境4可行性分析52.4 结论63.系统概要设计7系统总体设计8数据库设计94.系统详细设计13前台收银系统13后台管理系统设计175.系统实现与测试27前台收银程序测试27后台管理系统测试27系统整体测试306.结束语31参考文献32致 谢33附 录34A.主要源程序清单34B.用户手册571.绪论随着计算机技术的高速发展,人们对计算机的依赖性越来越强,特别是用计算机开发的数据库以及数据管理系统在生活应用中表现得更为突出。使用计算机对商品的销售进行管理,具有检索迅速、查找方便、可靠性高、存储量大、保密性好等优点,

3、这些优点能够极大的提高商品销售的效率,也是企业科学化、正规化管理的重要条件。因此,开发这样一套超市POS管理系统,通过使用超市POS管理系统,使超市店的管理工作系统化、规范化、自动化、简易化、智能化,从而达到提高超市进销存管理效率的目的。1.1. 课题的目的及意义1.1.1. 课题研究目的随着现代科学技术的迅猛发展,计算机技术已经渗透到各个领域,成为各行业必不可少的工具,特别是Internet技术的推广和信息高速公路的建立,使IT产业在市场竞争中越发显示出其独特的优势,步入信息化时代,有巨大的数据信息等待加工处理和传输,这使得对数据库的进一步开发和利用显得尤为迫切。超市形态具有很多优点,但在目

4、前状况下,它仍存在零售企业所固有的落后的一面,如:不能有效地管理每种商品,收款结算速度慢,容易出现营业差错,不宜进行商品调价,盘点效率低等,而且在超市日常管理中,商品的进、销、存等决策以经验为主,缺乏实时分析功能,管理人员对及时传递资料的要求始终得不到满足。随着超市形态的高速发展,其经营管理也变得愈加复杂,日常所需要处理的数据量也逐渐扩大,商业运转的中间环节也越来越多,原始的人工管理已无法应对这复杂的市场。因此,需要开发一套能够使用超市现代化管理的系统。1.1.2. 意义本课题目,依靠现代化的计算机信息处理技术来管理超市,从而节省了大量的人力、物力,改善了员工的工作条件,减轻了劳动强度,并且能

5、够快速反映出商品的进、销、存等状况和各种反馈信息分析,使管理人员快速对市场的变化做出相应的决策,加快超市经营管理效率。提高顾客的满意度顾和企业形象,为消费者提供更加满意的服务。 1.2. 国内外文献综述1.2.1. 国外情况信息管理系统(MIS)是一个由人、计算机及其他外围设备等组成的能进行信息的收集、传递、存贮、加工、维护和使用的系统是一门新兴的科学,其主要任务是最大限度的利用现代计算机及网络通讯技术加强企业的信息管理,通过对企业拥有的人力、物力、财力、设备、技术等资源的调查了解,建立正确的数据,加工处理并编制成各种信息资料及时提供给管理人员,以便进行正确的决策,不断提高企业的管理水平和经济

6、效益。国外信息管理系统(MIS)在超市等零售企业中已经有相当长的历史。1.2.2 国内情况随着超市高速的发展,其经营管理也变得愈加复杂,早期的售货员站柜台的形式早已不能满足现有销售也的发展。在我国超市形成在20世纪90年代初期,现在已经成为我国零售业的一种重要形态,为国民经济的发展起发挥了极大的作用。开发应用现代化的超市销售管理系统在我国有相当广阔的市场前景。2系统分析需求分析通过与超市负责人,销售经理,各连锁店负责人以及超市收银员等进行沟通,详细了解了本系统的需求。概述本系统主要为超市等零售型企业解决一下主要问题:超市收银员通过扫描或手工输入商品条形码,系统自动从数据库中调出该商品的信息,并

7、对顾客购买的所有商品进行汇总,完成收银。超市管理人员通过对后台数据更新,来完成新商品的上架。通过对库存功能的使用,了解商品的库存状况。通过销售功能使用,来了解商品销售。前台需求分析1.使用密码来控制收银员登录;2.操作尽量简单,可在无鼠标状态下完成操作;3.支持条码的手工输入与扫描器扫描;4.商品单价等信息自动从数据中获取;5.能查询当班当天销售金额用于对账;后台需求分析1.方便快捷的管理销售商品信息;2.管理进货计划、商品进货入库;3.可以设置促销价格时间、允许禁止商品销售;4.可以对销售状况进行统计;5.界面简洁、框架清晰、美观大方;性能需求分析2.数据计算要准确有效3.数据存储要安全有效

8、,防止非法用户获得数据2.2 开发环境本设计软件开发共分为两大部分:前台收银系统和后台管理系统。运行环境为windows xp/2003操作系统。本系统采用Visual Basic 6.0中文企业版和MS SQL 2000 企业版数据库系统进行开发。Visual Basic 6.0 + MS SQL 2000开发环境,是非常成熟的开发平台,能够保证程序开发环境的稳定有效。可行性分析经济可行性分析因为通过网络传递销售信息可以不受距离的限制,因此可以节约许多的人力和物力,减少了以往入出存流程繁琐,杂乱,周期长的弊端,可以减少入库管理、出库管理及库存管理中的漏洞,可以节约不少管理开支,增加企业的收入

9、,方便了管理,由此可以减少不必要的开支,同时该系统可以提高超市的销售效率,即提高了超市的经济效益,所以从经济上完全是可行的。开发新系统的工作是一项艰巨复杂的工作,它的投资主要是人力和物力的投资。对于本系统的开发者来说,其主要的投资还是在人力和物力两个方面。如果是企业自己安排人手开发系统的话,其主要的投资还是在人力资源上,从系统的业务需求调查到系统的分析编码制作都是需要巨大的人力投入的。软件企业作为一个先进的高科技产业,其员工要求都比一般企业的要求要高,而且对系统开发及软件产业了解比较多,所以在自我开发管理系统的过程中,企业自己比较容易安排人手,这样就可以为企业节约大部分的额外开支。同时软件就其

10、它产品来说,属于高端行业,无论是产品的价格还是质量都比较高,而经营产品的经销商或者是商家都要求有雄厚的资金支持。所以,在系统的开发过程中,企业完全有能力承担开发费用。技术可行性分析本系统使用Visual Basic 6.0 + MS SQL 2000 作为开发环境,这是非常成熟的开发平台,在业界已经有相当多的成功开发案例可供参考,开发者具有类似开发经验,可以在规定时间内完成系统开发设计。本系统操作界面简单,一般超市员工都具有一定的计算机基础知识,只要对员工进行少量的培训,在掌握了系统的功能和使用方法时,就基本上能够使系统顺利的运行,为超市提供服务。因此,在现有的技术条件下是可以实现本设计的。社

11、会因素分析本系统完全独立开发设计,是按照完全独立的开发体系结构进行的,在法律方面没有任何侵权行为,符合相关法律法规规定。2.4 结论根据以上分析,本项目在技术上没有问题,开发时间充裕。经济和社会因素上完全可行。因此认为该项目可以开发。3.系统概要设计本系统主要由两部分构成,为前台收银系统和后台管理系统。数据存采用MS SQL Server 2000 数据库存储。前台收银系统应用于超市收银结算,主要使用人员为超市收银员。前台收银系统的主要功能有用户登录、录入商品、挂单取单、账务查询等。超市前台收银管理系统结构图如 图 3.1所示。超市POS前台收银系统用户登录录入商品挂单取单打印小票账务查询图

12、3.1前台收银系统结构图后台管理系统主要使用对象为超市管理人员,主要功能有用户管理、商品管理、进货管理、销售管理、厂商/供货商管理等功能。超市后台管理系统结构图如图3.2所示。超市后台管理系统厂商供货商管理销售管理进货管理商品管理用户管理图 3.2超市后台管理系统系统总体设计设计的指导思想(1)系统分成几个相对独立的模块,但这些模块都进行集中式管理。(2)分层的模块化程序设计思想,整个系统采用模块化结构设计。作为应用程序有较强的可操作性和扩展性。(3)合理的数据流设计,在应用系统设计中,相对独立的模块间以数据流相互连接,使各模块间的耦合性较低,方便系统运行,提高系统安全性。功能模块划分设计分为

13、两个部分:前台POS收银系统:通过输入商品编码完成收银等工作。后台管理系统:完成商品管理、销售管理、库存管理等功能。数据库设计在本系统中,需要保存大量的数据(包括商品信息、供应商信息、厂商信息、销售信息、库存信息等),通过使用数据库技术,将这些数据保存到数据库中,可以方便对这些数据的管理。本系统的前台收银系统与后台管理系统共用一个数据库,下面介绍数据库的主要内容。.1数据分析本系统采用VB6+MS SQL Server 2000数据库构成,本项目选择使用MS SQL Server 2000 数据库的主要原因有:(1)MS SQL Server 2000 作为一个大型数据库系统,具备现代数据库管

14、理系统所要求的各种强大功能。(2)本项目需要保存海量数据,使用MS SQL Server 2000可以完成对海量数据进行安全、快速保存、查询操作。(3)MS SQL Server 2000 支持客户机/服务器的结构,可以方便的将数据库部署到企业机房中,各收银机只运行前台收银系统即可。数据项及数据结构本设计中部分主要表如下:1user表(操作员表)该表用于存储用户的登录用户名、密码、权限的相关信息。2googs表(商品表)该表用户保存超市销售商品的编号、单价、数量、条形码等信息。3 sale表(销售表)该表主要用来保存商品的销售时间、商品编号、销售日期、数量、单价、销售单号、收银员等信息。4st

15、ock表(进货信息表)该表主要用于保存进货计划和进货数据的商品编号、数量、单价、金额、状态等信息。数据库逻辑结构设计在本系统中,共使用了10张表:分别是user(操作员)表、goods(商品)表、sale(销售)表、saletemp(临时销售)表、pso_base(超市信息)表、factory(厂商)表、provide(供应商)表、stock(进货信息)表、stcoktemp(进货信息表)。下面列出主要表的字段作用。1 user (操作员):用户保存允许使用本系统的操作员(收银员)信息。该表包括4个字段,分别用来保存一个操作员的名称、密码、用户类型等相关信息,各字段的参数如表3.1 所示。表

16、3.1 user (操作员)表字段名数据类型字段大小是否主键允许空说明UserIDInt是否操作员序号UserNameChar25否否操作员姓名UserPWChar50否否密码UserStyleInt否否用户类型2 goods (商品)表:用于保存超市销售商品信息。该表包括15个字段,分别用来保存商品的编号、名称、单价、数量、条形码等信息,各字段的参数如表3.2 所示。表3-2 goods(商品)表字段名称数据类型字段大小是否主键允许空说明GoodIDInt是否商品序号GoodNameChar25否否商品名称GoodPriceChar50否否单价GoodNumInt否否数量CautionNum

17、Int否否报警数量PlanNumInt否否计划数量BarCodeVarchar20否否条形码SaleProPriceMomey否是促销价SaleprodatesDatetime否是促销开始日期SaleprodateeDatetime否是促销结束日期AllowabateInt否是允许打折AllowsaleInt否否允许促销FactoryidInt否否厂家编号ProvideidInt否否供应商编号3Sale(销售)表:用户保存商品的每笔销售数据。该表包含7个字段,分别用来保存商品序号、商品编码、销售日期、数量、单价、销售单号、收银员。表3-3 Sale(销售)表字段名称数据类型字段大小是否主键允许

18、空说明SaleidInt是否商品序号GoodsidInt否否商品编号SaledateDatetime否否销售日期SalenumInt否否数量SalepriceMoney否否单价SalenoInt否是销售单号CashierVarchar10否是收银员4stock(进货信息)表:用于保存进货计划和进货的数据。该表包括8个字段,分别用于保存商品编号、数量、单价、金额、日期、等信息,各字段的参数如表3-4所示。表3-4 stcok(进货信息)表字段名称数据类型字段大小是否主键允许空说明StockIdInt是否进货序号GoodsIdInt否否商品编号GoodsNumInt否否数量GoodsPriceMo

19、ney否是单价TotalPriceMoney否是总金额PlanDateDatetime否是计划日期StockDateDatetime否是进货日期StockstateInt否是进货状态4.系统详细设计本设计主要分为两部分,其中一部分为前台收银管理系统,另一部分为后台管理系统。前台收银系统前台收银系统运行于收银POS机种,该系统可以实现超市商品销售中的收银计算功能。登录界面设计登录窗体用来验证用户身份,为了方便收银员快速登录,该窗体将所有合法用户的名称添加到“用户名”组合框中,供用户选择,以减少用户的输入量。登录窗体frmLogin 如图 所示,该窗体各控件的属性如表4.1所示。图 4.1登录窗体

20、表4.1“登录”窗体属性表控件名称属性属性值控件名称属性属性值Form名称FrmloginCommandbutton1名称CmdokCaption超市POS系统登录Caption登录Combox1(用户名)名称CmdnameDefaultTureStyle2-dropdown listCommandbutton2名称CmdexitTextbox1名称TxtpwdCaption退出Passwordchar*CancelTure用户选择下拉框中的用户名后,键入密码,单击登录按钮,系统自动验证用户输入的密码是否与数据库中保持的密码一致。如果密码正确,则登录成功,进入收银主界面。若密码错误,提示用户密

21、码不正确,重新进行密码输入。收银主窗体设计收银主窗体是前台系统最主要的界面,系统中的大部分操作都在此窗体中完成。下面介绍主窗体的设计过程。收银主窗体如图4.2所示,左上角的大部分是一个表格,用来显示已经输入的商品信息。右侧的“合计”显示出左侧表格中各种商品的金额,“条码”输入部分用来扫描或输入商品条码,然后由系统自动查询该商品的单价,自动添加到左侧表格中,等待用户输入下一商品的条码。图 4.2收银主窗体在窗体的下方有一个“上单收款”框架,显示上一单的收款情况,因为打印收银小票返回后,系统将自动进入新的一单收款状态,通过“上单收款”框架可以了解上一单的情况,以便方便和顾客对账。而窗体下面的一排按

22、钮,分别用来完成不同的工作,因为一般POS机都不用鼠标,因此为每个按钮都设置了一个功能键作为快捷键,在按钮的标题文字中有提示。下面先介绍一下各按钮的作用。1)完成SPACE:当完成顾客所有商品输入后,按空格键即可弹出“打印”窗体,收钱找零,打印收银小票,完成一单收银过程。2)条码F2:当进行了其他操作鼠标焦点没有回到“条码/简码”按钮文本框中时,按快捷键“F2”可以将输入焦点定位到“条码/简码”文本框,等待输入下一商品条码。3)作废F3:作废当前输入的所有商品,重新开始输入新的内容。挂单F4:当一个顾客购买完的商品还未录入完成,又需要录入另一个顾客的商品时,按快捷键“F4”可对为输入完的销售单

23、进行挂单处理。4)取单F5:当需要对已挂单的销售单进行收银时,按快捷键“F5”可以打开“取单”窗体,从中选择要取出的单,即可继续对挂单进行收银。5)财务F6:按快捷键“F6”可以查看收银员当日收银金额。结账打印窗体 在收银主窗体中输入完一个顾客购买的商品后,按空格键可以显示“结账打印”窗体,该窗体如图4.3所示,在该窗体中将显示应收金额,收银员在“收款”文本框中输入顾客预付金额后,下方的“找零”文本框自动计算找零金额。如果文本框中输入的金额小于应收款时,系统弹出提示“实收金额小于商品金额”。单击“打印ENTER”按钮或按回车键将打印收银小票。图4.3 结账打印窗体取单窗体设计“取单”窗体用来从

24、挂单的数据表中取出需要继续收银的销售单,该窗体如图4.4所示,在该窗体中还将显示所有挂单的商品数据,收银员在表中用键盘的上下光标键移动选择,下方的文本框中将显示选中商品的单号。一个销售单中可能会有多个商品显示在表格中,只要选中其中一个商品后,单击“提取ENTER”按钮或按回车键即可提取该商品所在的销售单的所有数据,并显示到收银主窗体中。图4.4 取单窗体后台管理系统设计后台管理系统可以实现系统用户管理、商品管理、进货管理、销售管厂商管理和供货商管理等功能。设计主窗体超市POS后台管理系统有菜单驱动,将菜单设计到主窗体中,用户通过菜单调用各子模块完成相应的功能。所示,各控件属性如表4.2所示。图

25、4.5 主窗体选择菜单“工具/菜单编辑器”命令,打开“菜单编辑器”对话框,逐个创建系统的菜单,如图4.6所示。图4.6 菜单编辑器表4.2 应用程序菜单表菜单子菜单菜单名快捷键系统(&S)Mnusystem重新登录(&R)MnuginCtrl+R用户管理(&U)MnuuserCtrl+U退出(&X)MnuexitCtrl+X业务Mnubuss商品管理(&M)MnugoodsCtrl+G进货管理(&I)MnuinCtrl+I销售管理(&U)MnuoutCtrl+O辅助(&A)Mnuaux厂商供货商管理(&S)MnumemberCtrl+M帮助(&H)Mnuhelp关于(&A)Mnuabout商品

26、管理模块设计“商品管理”模块用来管理超市销售的所有商品的数据。通过该模块可以添加、修改、删除商品资料,可设置禁止或允许某件商品的销售,可设置商品的促销、打折。该模块用三个窗体来完成相应的功能。1)商品管理“商品管理”窗体如图4.7所示,该窗体分页显示系统中已有的资料商品,可以通过上方的三个按钮添加、修改、删除商品资料,也可通过右侧各框架查询、过滤,使左侧列表中只显示部分商品资料,通过右下角大的三个按钮可以允许/禁止商品销售、可提交选中商品的进货计划。当系统中的商品数量较多时,可以使用右侧“商品查找”框架中的控件查询指定商品的信息。在“商品查询”的三个文本框中输入查询(可同时输入一个或多个条件)

27、,然后单击“查找”按钮,即可在左侧表格中显示指定条件的商品信息。在“商品过滤”框架中有3个组合框,通过这3个组合框可设置不同的过滤条件(如显示指定厂商的商品、显示指定供应商的商品、显示指定状态的商品)。在窗体右上角有4个导航按钮,可在分页显示的记录集中进行导航。2)添加商品 在“商品管理”窗体中单击“添加按钮”,将打开如图4.8所示的“添加商品”窗体,另外,在“商品管理”窗体中选中商品后单击“修改”按钮也将打开窗体,对商品的数据进行修改。在“添加商品”窗体中输入商品的各种信息,并可以在窗体右侧设置商品的销售状态、促销情况等数据。图4.8 添加商品3)计划进货在“商品管理”窗体中选中一个或多个准

28、备进货的商品后,单击右侧的“提交进货”按钮,将打开如图4.9所示的“计划进货”窗体。在该窗体的ListView控件中将显示计划进货大的商品信息,选中某个商品后,可以在下方的文本框中修改计划进货的数量和日期,单击“确定”按钮将保存计划进货的情况。“计划进货”窗体frmPlanStock各控件的属性如表 4.3所示图4.9 计划进货表 计划进货窗体控件属性表控件名称属性属性值控件名称属性属性值Form名称FrmplanstockCommandbutton1名称CmdokCaption计划进货Caption确定Listview1名称List1DefaultTrueTextbox1(计划数量)Capt

29、iontxtnumCommandbutton2名称CmdexitCaption取消Textbox2(计划日期)名称TxtdateCancelTrue进货管理模块设计“进货管理”模块用来管理超市的进货情况。该模块由两个窗体组成,主窗体为“进货管理”,可以显示计划进货的列表,单击其中的”入库”按钮将显示“入库”窗体。1) 进货管理“进货管理”窗体运行效果如图4.10所示,表格中显示的是计划进货的商品,可以通过上方的按钮添加、修改、删除计划进货商品。选中某个商品后,单击“入库”按钮将打开“入库”对话框,可以完成商品的入库操作。单击“报表”按钮可以输出计划进货报表。单击“需要进货”按钮将打开“计划进货

30、”窗体,显示需要进货的商品信息。图4.10 进货管理运行界面“进货管理”窗体frmstock在设计界面如图4.11所示,其中用于显示计划的ListView控件和用于显示入库记录的MSHFlexGrid控件重叠在一起。在该窗体中,由于要在“计划进货”和“入库记录”之间切换显示数据,因此,要显示这两项数据的ListView和MSHFlexGrid控件将重叠放置。图1 进货管理设计界面2)入库界面设计在“进货管理”窗体中单击“入库”按钮,将打开如图2所示“入库”窗体。该窗体中的数据由其调用窗体“进货管理”中的代码填充,可以输入入库数量、价格、日期等参数,然后单击“确定”按钮,即可完成入库操作。图2

31、入库窗体其他模块1)销售管理模块“销售管理”模块用来查询统计商品销售状况,生成报表。销售管理模块运行时如图4.12所示。单击不同按钮可以执行相应的功能。图4.12 销售管理窗体2)厂商/供货商模块“厂商/供货商”模块用来管理商品的厂商/供货商资料。厂商/供货商窗体如图4.13所示。在该窗体中可分别添加、修改、删除厂商/供货商的名称、 、地址等资料。2) 帮助窗体帮助窗体简单介绍程序版本作者等信息,调用系统信息查看器查看系统信息。运行结果如图4.14所示。4关于超市管理系统窗体5.系统实现与测试整个系统的采用Visual Basic 6.0 + MS SQL 2000开发。经过前文的分析和设计,

32、在本章中将对整个系统功能进行测试。成对流程的编码后,最重要的事情就是对系统的测试工作了,对照系统需求分析说明书,进行模块测试。测试在系统设计阶段有两个时期:通常在编写每个模块后都进行单元模块测试;另一个时期是对系统进行整体综合测试。前台收银程序测试在前文中已经详细介绍了前台收银程序的开发过程,现在对前台程序在windows xp 环境下进行测试。为了保证系统能在复杂苛刻环境下运行,采用在极端环境下对前台程序进行测试,一次性在条码框中输入100个商品进行测试,测试结果前台收银程序运行结果正确无误,没有出现卡死等现象,数据库读取写入正确。运行稍有延时,为系统计算读取大量数据正常延迟时间。但是在账务

33、功能中,核对账务时发现,账务计算结果不正确。经仔细检查程序源代码后发现,在销售完成后对数据进行数据库写入时,在sale表中商品销售时间误写成now应为day。经过修改代码后,账务功能正确运行。测试结果前台程序员顺利完成所有功能。后台管理系统测试后台管理系统功能模块较多,结构复杂。为顺利完成测试,采用模块测试方法进行测试。1)用户管理模块测试用管理员账户登录系统对用户的添加删除修改等功能进行测试,运行结果正确无误。如图5.1所示。图5.1 用户管理功能测试2)进货管理模块测试对商品管理、进货管理、销售管理等功能进行测试。分别对商品进行加添加、修改、删除等共能进行测试,测试所有功能均可运行。对进货

34、管理功能进行测试,对计划进货功能进行添加、修改、删除等功能进行测试,测试所有功能都可以运行。对商品进行入库,入库功能可以运行,运行结果无误。运行结果如图5.2所示。3)销售管理功能测试销售管理功能对销售状况进行测试,对销售管理功能中的按月查询报表、按季度查询报表、按年进行查询报表。测试功能可以顺利运行,结果正确。运行结果如图5.3所示。图 5.3 销售管理功能测试系统整体测试在完成了系统所有部分的开发及测试工作之后将进行系统的整体运行测试。总体测试是组装软件的系统技术,本系统测试采用渐增集成测试,即测试单一模块,将测试完的模块加入系统中,进行一次系统测试,依次类推将所有模块加入系统中,在具体测

35、试时,采用自顶向下的结合方式。6.结束语本论文主要论述的是超市管理系统的设计和实现。该系统主要应用于超市等零售企业销售管理。本课题研究过程中,首先对超市销售管理业务进行了解,然后进行系统需求分析与可行性论证。之后对系统进行总体设计,指定系统基本目标与大体框架结构。之后进行系统详细功能设计与实现,最后对系统进行测试,完善系统。经过测试证明,该系统基本完成了超市等零售企业正常业务的处理工作,前台收银系统运行流畅,操作简便。后台管理系统界面简洁,操作简单。但系统中也存在一定的不足之处,如对销售数据的分析功能不够强大等。该系统采用分为前台和后台两个独立系统开发,在收银机上只需运行前台收银程序,后台管理

36、程序由超市管理人员运行。可以有效避免收银人员对系统数据进行误操作或恶意修改破坏。增强了系统的安全性。该系统采用SQL Server 2000数据库进行开发,SQL Server 2000 非凡的数据处理能力保证了系统稳定高速运行,可以存储大型超市数以千万计的商品信息。经过测试证明,该系统基本完成了超市等零售企业正常业务的处理工作,前台收银系统运行流畅,操作简便。后台管理系统界面简洁,操作简单。但系统中也存在一定的不足之处,如对销售数据的分析功能不够强大等。参考文献1 陶宏才数据库原理及设计M 北京:2 杨晶 VB6.0程序设计M34 李春葆5 刘志妩VB和SQL的数据库编程技术M北京:清华大学

37、工业出版社,20067 曾慧8910 Roger S. Pressman .软件工程实践者的研究方法M北京:机械工业出版社,2007.611 Karl E. Wingers 致 谢经过一个多月的毕业设计,在指导老师和同学的帮助下,最终顺利完成了毕业设计。此次毕业设计是对我对大学所学知识的系统综合,在此次设计中,自身能力有了相当程度的提高。并且对所学知识有了新的认识。在此我非常感谢张清菊老师在我大学的最后学习阶段毕业设计阶段给自己的指导,从最初的定题,到资料收集,到写作、修改,到论稿,她们给了我耐心的指导和无私的帮助,张老师广博的学识和严谨的治学态度将使我受益终生。还要感谢和我同一设计小组的几位

38、同学,是你们在我平时设计中和我一起探讨问题,并指出我设计上的误区,使我能及时的发现问题把设计顺利的进行下去,没有你们的帮助我不可能这样顺利地结稿,在此表示深深的谢意。通过指导老师和同学们的共同帮助,我的毕业设计最终得以顺利完成,这也意味着我的大学生活即将结束。大学阶期间,我在学习上和思想上都受益非浅,这除了自身的努力外,与各位老师、同学和朋友的关心、支持和鼓励是分不开的。在此,祝愿各位老师身体健康,工作顺利。祝愿同学们事业有成。感谢各位老师和同学们的指导,谢谢大家!附 录A. 主要源程序清单前台收银端主要代码1. 登录窗体代码Private Sub cmdOK_Click() “登录”按钮 s

39、trSQL = SELECT * FROM User WHERE username= & Trim(cmbName.Text) & Set rs = QueryExt(strSQL) 查询选择用户的资料 UserName = Trim(cmbName.Text) 保存用户名 If Not rs.EOF Then 记录集不为空 If rs(UserPW) = Trim(txtPWD.Text) Then 密码正确 Unload Me 卸载当前窗体 frmMain.Show 显示主窗体 Else MsgBox 密码错误!, vbCritical + vbOKOnly, 警告 txtPWD.Text

40、 = 清空密码框 txtPWD.SetFocus 设置输入焦点 End If Else 若记录集不为空,表示系统中无此用户 MsgBox 系统中无此用户!, vbCritical + vbOKOnly, 警告 cmbName.SetFocus 设置输入焦点,重新选择用户 End If End Sub2. 前台主窗体代码Private Sub cmdESC_Click() 退出 Unload MeEnd SubPrivate Sub cmdF2_Click() 输入条码/简称 With txtComm(0) .Text = 输入栏设置初始值 txtComm(1).Text = 100 txtCo

41、mm(2).Text = 0 txtComm(3).Text = 1 .SelStart = 0 .SelLength = Len(.Text) .SetFocus End WithEnd SubPrivate Sub cmdF3_Click()If Grid1.Rows = 1 Then Exit Sub 若表格只有标题行,则退出 If MsgBox(确定要删除整个单据吗(Y/N)? , vbQuestion + vbYesNo, 删除) = vbYes Then Grid1.Rows = 1 设置表格总行数为1 iRow = 1 保存新增数据到第1行 txtSum.Text = Forma

42、t(0, 0.00) 清空“合计”文本框 End IfEnd SubPrivate Sub cmdF4_Click() Dim strTemp As String, i As Integer Dim rs As ADODB.Recordset, strSQL As String If Grid1.Rows = 1 Then Exit Sub 若表格只有标题行,则退出 strTemp = Date 保存当前日期 For i = 1 To Grid1.Rows - 1 循环将当前表格中的数据保存到临时表中 strSQL = INSERT INTO saletemp(saleno,GoodsID,s

43、aledate,salenumt,SaleMoneyT) VALUES ( & _ txtSaleID.Text & , & Grid1.TextMatrix(i, 6) & , & strTemp & , & _ Trim(Grid1.TextMatrix(i, 3) & , & Trim(Grid1.TextMatrix(i, 2) & ) SQLExt strSQL 执行SQL语句 Next Grid1.Rows = 1 设置表格总行数为1 txtSum.Text = Format(0, 0.00) 清空“合计”文本框 txtSaleID.Text = txtSaleID.Text +

44、1 生成新的销售单号 Call cmdF2_Click 设置输入焦点到“条码”框End SubPrivate Sub cmdF5_Click()frmF5.Show 1 显示“取单”窗体End SubPrivate Sub cmdF6_Click()Dim strTemp As String, dCur As Double strTemp = Date 当前日期 strSQL = SELECT SUM(salenum*saleprice) FROM sale WHERE saledate= & strTemp & _ AND cashier= & lblCashier.Caption & 查询

45、当天指定收银员收款情况 Set rs = QueryExt(strSQL) 执行SQL语句 dCur = 0 销售金额清0 If Not IsNull(rs.Fields(0) Then dCur = rs.Fields(0) 获取销售金额 MsgBox 当前销售员在本班次销售额为: & Format(dCur, 0.00) & 元。, vbInformation + vbOKOnly, 提示 Call cmdF2_Click 调用过程设置输入焦点到“条码”框End SubPrivate Sub cmdModify_Click() Dim i As Integer For i = 1 To 3

46、 判断三个文本框中的内容是否为数字 If Not IsNumeric(txtComm(i).Text) Then MsgBox 折扣、单价、数量都必须输入数字!, vbCritical + vbOKOnly, 警告 With txtComm(i) .SetFocus 设置输入焦点 .SelStart = 0 .SelLength = Len(.Text) 选中文本框中的内容 End With Exit Sub End If Next cursum = CCur(txtComm(2) * CDbl(txtComm(3).Text) * (CDbl(txtComm(1).Text) / 100)

47、计算商品金额 If iRow = 0 Then Exit Sub With Grid1 .TextMatrix(iRow, 2) = txtComm(2).Text 更新表格中的单价 .TextMatrix(iRow, 3) = txtComm(3).Text 更新表格中的数据 .TextMatrix(iRow, 5) = cursum 更新表格中的金额 End With bChange = False 取消修改模式 Call Summary 调用过程汇总合计金额 Call cmdF2_Click 调过用过程将输入焦点设置到“条码”框End SubPrivate Sub cmdOK_Click

48、() “完成”按钮 If Grid1.Rows 2 Then MsgBox 对不起,没有销售信息! Else Call SaveData 调用过程,保存销售数据 frmAcc.Show 1 显示收款对话框 End If Call cmdF2_ClickEnd SubPrivate Sub Form_Activate() Call cmdF2_ClickEnd SubPrivate Sub Grid1_SelChange() With Grid1 If .Rows 1 Then Exit Sub 若表格无数据,则退出过程 iRow = .Row 保存当前选中行 If iRow 1 Then Ex

49、it Sub 选中的不是数据,则退出过程 txtComm(0).Text = .TextMatrix(iRow, 0) 将条码填到右侧文本框 txtComm(1).Text = .TextMatrix(iRow, 4) 折扣 txtComm(2).Text = .TextMatrix(iRow, 2) 单价 txtComm(3).Text = .TextMatrix(iRow, 3) 数量 strName = .TextMatrix(iRow, 1) 商品名称保存到模块变量 strID = .TextMatrix(iRow, 6) 商品ID保存到模块变量 End WithEnd SubPriv

50、ate Sub txtComm_KeyPress(Index As Integer, KeyAscii As Integer) If KeyAscii = 13 Then 如果按了回车键 If Index 3 Then 前2个文本框 txtComm(Index + 1).SetFocus 设置输入焦点到下一个文本框 Else 若是第3个文本框 cmdModify.SetFocus 设置输入焦点到“修改”按钮 End If End IfEnd SubPrivate Sub txtComm_LostFocus(Index As Integer) Dim rs As New Recordset, s

51、trSQL As String, str1 As String If bChange Then Exit Sub 修改模式,退出 If Index = 0 Then 条码/简码 On Error GoTo err 错误处理 Beep 鸣笛,提示录入一个商品条码 If Trim(txtComm(0).Text) = Then Exit Sub 若条码为空,则退出 strSQL = SELECT * FROM goods WHERE barcode= & txtComm(0).Text & Set rs = QueryExt(strSQL) 从商品库中查询该条码的商品 If rs.EOF Then

52、 若无此条码的商品 MsgBox 该商品还未上账,请联系商场管理人员!, vbCritical + vbOKOnly, 警告 Call cmdF2_Click 设置输入焦点到“条码”框 Exit Sub 退出过程 End If strName = rs!GoodsName 商品名称 strID = rs!GoodsID 商品编号 txtComm(2).Text = rs!GoodsPrice 单价 txtComm(3).Text = 1 数量 cursum = CCur(txtComm(2) * CDbl(txtComm(3).Text) * (CDbl(txtComm(1).Text) /

53、100) 单价*数量*折扣 rs.Close 关闭记录集 str1 = txtComm(0).Text & vbTab 条码 str1 = str1 & strName & vbTab 商品名称 str1 = str1 & txtComm(2).Text & vbTab 单价 str1 = str1 & txtComm(3).Text & vbTab 数量 str1 = str1 & txtComm(1).Text & vbTab 折扣 str1 = str1 & cursum & vbTab & strID 商品编号 Grid1.AddItem str1 添加显示的内容 Call Summa

54、ry 调用过程汇总金额 Call cmdF2_Click 设置焦点到“条码”框 End Iferr:End SubPrivate Sub SaveData() 保存表格中的销售数据 Dim strSQL As String, i As Integer, GoodsID As Integer strSQL = SELECT * FROM sale WHERE SaleID=0 获取销售表中的一个空记录集 Set rs = QueryExt(strSQL) 执行SQL语句 With Grid1 For i = 1 To .Rows - 1 保存表格中的每一行数据 rs.AddNew 添加新记录 r

55、s!saleno = txtSaleID.Text 单号 GoodsID = .TextMatrix(i, 6) 商品编号 rs!GoodsID = GoodsID 商品编号 rs!saledate = Date 销售时间 rs!salenum = .TextMatrix(i, 3) 数量 rs!saleprice = .TextMatrix(i, 2) 单价 rs!cashier = lblCashier.Caption 收银员 rs.Update 保存数据 strSQL = UPDATE goods SET GoodsNum=GoodsNum- & .TextMatrix(i, 3) &

56、_ WHERE GoodsID= & GoodsID 减去商品库中的库存数 SQLExt strSQL 更新商品数据 Next End WithEnd Sub#include GpsResolver.hGPS_DATA_DATE GetGpsDate(BYTE *pbytNemaData);GPS_DATA_TIME GetGpsTime(BYTE *pbytNemaData);float GetCoordinate(BYTE *pbytNemaData,UINT uLength);float GetFloat(BYTE *pbytNemaData,UINT uLength);BOOL Res

57、olveRMC(GPS_DATA_RMC *pgdrGpsDataRMC, BYTE *pbytRmcData, UINT uLength)if(pbytRmcData0 != $ | pbytRmcDatauLength-1 != n)return FALSE;BYTE bytSegment2016;UINT uSegmentLength20;for(UINT i=0,j=0,k=0; i fLatitude = GetCoordinate(&bytSegment30,uSegmentLength3);pgdrGpsDataRMC-fLatitude *= bytSegment40 = N?

58、1:-1;pgdrGpsDataRMC-fLongitude = GetCoordinate(&bytSegment50,uSegmentLength5);pgdrGpsDataRMC-fLongitude *= bytSegment60 = E?1:-1;pgdrGpsDataRMC-fSpeed = GetFloat(&bytSegment70,uSegmentLength7);pgdrGpsDataRMC-fTrack = GetFloat(&bytSegment80,uSegmentLength8);pgdrGpsDataRMC-gdTime = GetGpsTime(&bytSegm

59、ent10);pgdrGpsDataRMC-gdDate = GetGpsDate(&bytSegment90);pgdrGpsDataRMC-bValid = bytSegment20 = A?TRUE:FALSE;return TRUE;GPS_DATA_DATE GetGpsDate(BYTE *pbytNemaData)/, UINT uLength)GPS_DATA_DATE gdDate;gdDate.bytDay = (pbytNemaData0 - 0) * 10) + (pbytNemaData1 - 0);gdDate.bytMonth = (pbytNemaData2 -

60、 0) * 10) + (pbytNemaData3 - 0);gdDate.bytYear = (pbytNemaData4 - 0) * 10) + (pbytNemaData5 - 0);return gdDate;GPS_DATA_TIME GetGpsTime(BYTE *pbytNemaData)/, UINT uLength)GPS_DATA_TIME gdTime;gdTime.bytHour = (pbytNemaData0 - 0) * 10) + (pbytNemaData1 - 0);gdTime.bytMinute = (pbytNemaData2 - 0) * 10

温馨提示

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

评论

0/150

提交评论