商品销售管理系统_第1页
商品销售管理系统_第2页
商品销售管理系统_第3页
商品销售管理系统_第4页
商品销售管理系统_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

PAGE第1页共18页论文题目:商品销售管理系统目录TOC\o"1-3"\h\u30176论文题目:商品销售管理系统 018149一、系统简介 430727二、系统整体分析 417726(一)系统功能分析 55174(二)系统结构分析 514885(三)系统需求分析 611206三、数据库设计 76345(一)数据库需求分析 719123.1.1系统管理 7266123.1.2商品管理 761033.1.3商品销售 720319(二)数据库逻辑结构设计 824996四、系统设计 105355(一)公用模块 1016064(二)主窗体模块 1012405(三)部分功能模块及程序说明 1279754.3.1系统登录模块 1249484.3.2系统管理模块 1448534.3.3商品管理模块 16268234.3.5系统帮助模块 2128063五、结束语 2132479【参考文献】 22

商品销售管理系统摘要:运用现代信息技术再造的组织结构,建立一个适应知识经济创新时代需要的科学化、正规化管理方式,显得尤为重要。售货员站柜台的形式,已不能满足现有销售的发展,就迫切的必要引入新的思想技术和管理技术进入到超市管理中。超市销售管理系统是指以提供较手工方式下更高的效率和更低的出错率。超市销售管理系统可对输入的商品信息进行添加、修改、查找、删除,商品销售汇总、前台销售等操作,这种集约化的管理模式,便于超市销售信息的汇总,整理和加工,在日常生活中提高生活效率,提供更好的优质的服务。作为计算机应用的一部分,使用计算机对超市销售管理进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高商场超市销售管理的效率,也是科学化、正规化管理的重要条件因此,开发这样一套管理软件成为很有必要的事情,在下面的各章中我们将以开发一套超市销售管理系统为例,谈谈其开发过程和所涉及到的问题及解决方法。关键字:超市销售管理系统;isual;Basic工具;Access数据库;DAO接口

一、系统简介随着社会信息量的与日俱增,生活各方面都必要使用方便而有效的方式来管理自己的信息,对计算机日益普及的今天,对小型超市而言若采用一个行之有效的超市管理系统来管理自己的超市,会方便许多。以前单一的手工检索已不能满足人们的要求,为了便于超市和管理更为必要有效的超市管理软件。本设计所完成的超市管理系统软件是一功能比较完善的数据管理软件,有数据操作方便高效等优点,本系统采用的是VisualBasic用为开发工具,系统使用Access97作为后台的数据管理系统,而在前端使用DAO作为数据访问接口。引用MicrosoftDAO3.51ObjectLibrary具有很好的可移植性,可在应用范围较广的Windows系列操作系统上使用。数据访问对象DAO(DatabaseAccessObject)是VisualBasic提供的对数据库的完整支持,与之相比Data控件虽不需要编程就能访问数据库,但其功能有限,只不过是封装了某些功能的DAO控件Access数据库最重要的是不必编写程序。使用Access与VisualBasic结合开发。最主要的优点是两者使用相同的数据引擎,即MicrosoftJet由于Access和VisualBasic使用相同的数据引擎MicrosoftJet。因此可以建立即包括Access组件又包括VisualBasic组件的应用程序,这样就提高了程序的稳定性、充分发挥了两者各自的优点。二、系统整体分析本系统是根据现代超市销售管理的需要面开发的,方便、易操作及美观的界面给用户节省了不少宝贵的时间,全面实现对超市的商品的入库、销售、修改、删除、查找管理,大大减轻了管理人员的工作量,全面提高了超市的销售效率及服务质量。(一)系统功能分析在传统的零售业工作中,往往是用人工清点的方式来掌握仓库中现有的商品、使用手工记账的方式来掌握商品的进货销售情况。这种方式在商品数量较少、商品库存变换少的情况下,不失为一种较好的方法。但是,在目前的大中型零售业中,往往需要外理的商品种类数以千计,而且每天所发生的进货和销售情况纷繁复杂。如果要借助人工来实现这一系列数据的记录和管理,工作量将极为巨大,而且容易出现错误,造成管理上的混乱;更何况还需要对商品的数据进行统计和分析。具体而言超市销售管理系统要实现以下的功能:(1)系统管理:以实现对密码的合法修改、用户的合法注册、全部用户的查看以及对不需要的用户进行合法的删除。(2)商品管理:以实现商品的入库,如已存在此商品则只是将其入库的数量与库存的数量相加。商品的列表,利用外部控件:”MicrosoftFlexGridControl6.0”列出库存的全部商品,利用外部控件:”MicrosoftChartControl6.0(OLEDB)”用图形的方式列出商品的库存数量。商品的查询,在其中包含了商品的删除、商品的修改,根据商品的编号查询、删除、修改相应的商品。(3)商品销售:以实现商品的销售以及商品销售汇总。商品销售是指根据商品编号来销售商品,每销售一件商品自动从商品库存中减去相应的销售数量,并列出该商品的详细信息。如库存数量小于销售数量,则不能销售此商品。销售汇总是将当天的销售情况按商品编号和商品名称进行汇总。(二)系统结构分析通过对系统功能的分析,我们可以分析出超市管理系统大致可以分为四个模块:系统管理模块、商品管理模块、商品销售模块、系统帮助模块。各模块之间的结构关系如图:系统登录系统登录系统管理体制帮助商品管理用户管理修改密码商品入库商品列表商品查询帮助关于商品销售前台销售销售汇总(三)系统需求分析为了提高管理水平和工作效率,同时也可以最大限度地减少手工操作带来的错误。于是超市销售管理系统便应运而生。实现超市管理工作系统化规范化、自动化正确的进货和库存控制及批货。系统开发的总体任务是实现超市商品销售的系统化、规范化和自动化。本超市销售管理系统需要完成的功能主要是用计算机对超市销售管理进行日常的管理如:销售收款、商品查询、商品入库等。具体而言,超市销售管理系统需要实现以下的需求:(1)能够对超市所拥有和各种商品的基础信息进行维护和管理。商品的基础信息包括:商品编号、商品名称、商品规格、计量单位、备注信息、库存数量等。系统必要能够对商品信息进行添加、修改、删除。也可以按照一定的条件来进行查询,而且还必要随时掌握库存商品的数量,并且能够以图形的形式显示出现有商品的库存数量。(2)跟踪各种商品的销售信息。商品的销售信息包括:商品编号、商品名称、销售规格、销售单位、销售单价、销售总价、销售日期等。系统能够对每销售一件商品,就从数据库中对该商品的数量减去该商品的销售单位。并且对该天的销售商品进行汇总。三、数据库设计(一)数据库需求分析数据库是数据库应用程序和重要组成部分。设计结构合理、功能齐全的数据库对于提高数据库应用程序的开发效率和程序的性能都是非常重要的。针对一般超市销售管理系统的需求,通过对商品销售的数据流程分析,设计如下面所示的数据项和数据结构:3.1.1系统管理包括的数据项有:用户名、密码。3.1.2商品管理包括的数据项有:商品编号、商品名称、商品规格、商品价格、商品库存、商品备注等。3.1.3商品销售包括的数据项有:商品编号、商品名称、销售单价、销售单位、销售规格、销售日期、销售总额。(二)数据库逻辑结构设计数据库逻辑设计的任务是建立数据库管理系统,能够处理的数据表。根据实际情况分别确定数据表中各字段的名称数据类型和值域范围等,并对各表进行数据结构设计、关键字设计和约束设计等。本系统建立如建立如:系统管理表:frmpass商品管理表:frmspadd商品销售表:frmspss

系统管理表frmpass字段名称数据类型字段大小必须字段用户名文本15否密码文本15否商品管理表frmspadd字段名称数据类型字段大小必须字段小数位数默认值商品编号文本10否\\商品名称文本50否\\商品规格文本20否\\商品价格货币\\自动0商品库存数字整型否\\备注备注\否\\商品销售表frmspss字段名称数据类型字段大小必须字段默认值商品编号文本50否\商品名称文本50否\商品规格文本50否0销售单价货币\\0销售单位数字长整型\0销售日期日期/时间\否\销售总额货币\\\四、系统设计(一)公用模块公用模块需求分析:建立超市销售管理系统工程后,其中不同的窗体都可能要访问数据库文件,即不同的窗体可能要使用相同的函数、变量等,所以需创建一个公用模块用来存放这些公用的函数、全局变量等,这样可以在工程中的任何地方调用它们。公用模块功能实现:新建一个模块,命名为Module1。访问数据文件的公用函数,定义公用变量:PublicdbeAsDatabase、PublicrstAsRecordset。定义Dbe为数据库对象,用来打开数据库。定义rst为数据集对象,用来打开指定数据库中数据集。(二)主窗体模块主窗体模块需求分析:使用VisualBasic创建多文档程序界面(MDI)。MDI窗体是父窗体,可以包含其他窗体。超市销售管理系统中各个功能窗体之间是相互,如果做成相互之间直接链接起来会使窗体变得很复杂,所以做一个MDI界面的主窗体,这样可以自然、整齐有序地衔接各个功能窗体。主窗体模块功能实现:窗体名为:frmmain。在此窗体中添加了两个外部控件:Microsoftwindowscommoncontrol6.0中的Toolbor、Imagelis。这两个控件实现工具条。Imagelis是存储工具条(Toolbor)上的ICO图标的控件。PrivateSubMDIForm_Load()OnErrorResumeNextSetdbe=OpenDatabase(App.Path&"\data\db2.mdb")Setrst=dbe.OpenRecordset("frmspadd")rst.MoveFirstDoWhileNotrst.EOF IfVal(rst!商品库存)<=10ThenText1.Text="请注意:"&rst!商品编号+rst!商品_名称+"_库存为:"+Str(rst!商品库存)+"_"+Text1.Text EndIf rst.MoveNextLoopEndSubMDIForm_load是指主窗体加载时实现当中代码的功能。利用dbe数据库对象将db2.mdb数据库打开。利用rst数据集对象将db2中的”frmspadd”表打开。用Dowhile循环语句查看数据库中”商品库存”小于或等于10的商品在主窗体加载时,提示工作人员注意商品的库存。PrivateSubmnusplist_Click()frmsplist.Top=500frmsplist.Left=500frmsplist.Height=5865frmsplist.Width=7380frmsplist.ShowEndSubMnusplist_click是指当用户单击”商品管理”菜单中的”商品列表”子菜单,将在相对于主窗体高500左500的位置显示高为:5865宽为:7280的frmsplist(商品列表)窗体。PrivateSubToolbar1_ButtonClick(ByValButtonAsMSComctlLib.Button)SelectCaseButton.KeyCase"add"mnuspadd_ClickCase"list"mnusplist_ClickCase"sql"mnuspsql_ClickCase"xs"mnuxsqt_ClickCase"fz"mnuxsfz_ClickCaseElsemnusystemquit_ClickEndSelectEndSubToolbar1_ButtonClick是指在Toolbar1(工具条)上的按钮单击则调用相应的过程。例如:case“add”则调用mnuspadd_Click过程。(三)部分功能模块及程序说明4.3.1系统登录模块系统登录模块需求分析:系统登录不从属于主界面,所以它使用的是一个普通窗体而不是主窗体的子窗体。它的作用是录入用户名及用户密码,并将其与数据库中的用户信息进行比较或匹配,是合法用户则允许登录。设计时须对于用户使用时可能出现的错误做出提示;防止非法登录。本系统不区分大小写。用户密码中很可能由于用户输入的错误,在密码中误加了空格,为防止这样的错误,应该去掉密码中的空格。系统登录模块功能实现:窗体的名称(frmlogin)。在此窗体中共有combo、text、commandButton三种控件。实现用户的合法登录。PrivateSubCommand1_Click()Setdbe=OpenDatabase(App.Path&"\data\db2.mdb")Setrst=dbe.OpenRecordset("select用户名,密码_fromfrmpasswhere用户名='"&Trim(Combo1.Text)_&"'and密码='"&Trim(Text2.Text)&"'")IfCombo1.Text<>""ThenIfrst.EOF=TrueAndrst.BOF=TrueThen n=MsgBox("密码或用户名错误!",0+48+0,"系统提示") Combo1.SelLength=0 Combo1.SelLength=15 Text2.Text="" Combo1.SetFocus Else frmmain.Show Me.Hide EndIf rst.CloseElse n=MsgBox("请选择用户名",0+48+0,"系统提示")EndIfCommand1_Click指command1(确定)按钮单击时进行输入的用户名和密码的判断,如果数据库中有此用户名并且密码且与输入的用户名和密码相同,则登录成功。Frmmain.show是指将主窗体显示。Me.hide是指将登录窗体隐藏。如登录不成功,则不能登录。PrivateSubForm_Load()OnErrorResumeNextSetdbe=OpenDatabase(App.Path&"\data\db2.mdb")Setrst=dbe.OpenRecordset("frmpass")DimiAsStringFort=0ToVal(rst.RecordCount)-1i=Trim(rst.Fields("用户名").Value)rst.MoveNextCombo1.AddItemiNexttrst.CloseEndSubForm_Load是指当窗体加载时利用”fort=0toval(rst.recordcount)-1”将db2.mdb数据库中的frmpass表中的”用户名”字段全部添加到”用户名”(combo1)输入框中。4.3.2系统管理模块系统管理模块需求分析:合法用户登录系统需要用户名和密码,那么系统管理模块中肯定要包含能让合法用户修改密码的功能,在修改密码时,要求用户输入用户名和旧密码才能修改密码,可以防止非法用户修改合法用户的密码。新用户的添加的比不可少的,那么对于某些不再使用或需要禁止其使用的用户名要能够删除。对系统中已存在的合法用户要可以查询其用户名。本模块中包括用户管理、修改密码和退出系统三个子菜单,为减少复杂性将添加用户、查询用户和删除用户这三项功能集中到用户管理菜单中。此模块名为系统管理模块当然要包括一个退出系统的子菜单。系统管理模块功能实现:此模块中包含了修改密码(frmmodpass)和用户管理(frmuser)两个窗体。在修改密码(frmmodpass)窗体中添加了Combo、text、commandButton三种控件,以实现密码的合法修改。而在用户管理(frmuser)窗体中共添加了MSFlexGrid、Frame、text、commandButton四种控件,以实现用户合法注册、用户合法删除、用户查看。PrivateSubForm_Load() OnErrorResumeNextSetdbe=OpenDatabase(App.Path&"\data\db2.mdb")Setrst=dbe.OpenRecordset("frmpass")FlexGrid1.ClearFlexGrid1.Cols=2FlexGrid1.FixedCols=0FlexGrid1.FixedRows=1FlexGrid1.ColWidth(0)=FlexGrid1.Width/2FlexGrid1.ColWidth(1)=FlexGrid1.Width/2FlexGrid1.TextMatrix(0,0)="用户名"FlexGrid1.TextMatrix(0,1)="密码"FlexGrid1.Rows=2rst.MoveFirstDoWhileNotrst.EOFFlexGrid1.TextMatrix(FlexGrid1.Rows-1,0)=rst!用户名FlexGrid1.TextMatrix(FlexGrid1.Rows-1,1)=rst!密码FlexGrid1.Rows=FlexGrid1.Rows+1rst.MoveNextLoopEndSub以上代码是系统管理模块中用户管理中窗体加载的代码。将db2.mdb数据库中的frmpassr表中的用户名以及密码利用DoWhileNotrst.EOF循环语句在外部引用的控件”MicrosoftFlexGridControl6.0”中显示出来PrivateSubCommand1_Click()Setdbe=OpenDatabase(App.Path&"\data\db2.mdb")Setrst=dbe.OpenRecordset("frmpass")rst.MoveFirstDoWhileNotrst.EOFIfTrim(Text1.Text)=Trim(rst!用户名)ThenMsgBox"已注册了此用户名",vbOKOnly,"系统提示"Text1.SelLength=0Text1.SelLength=10Text2.Text=""Text3.Text=""Text1.SetFocusrst.CloseExitSubEndIfrst.MoveNextLoopIfText1.Text<>""AndText2.Text<>""ThenIfText2.Text=Text3.TextThenrst.AddNewrst!用户名=Trim(Text1.Text)rst!密码=Trim(Text2.Text)rst.UpdateMsgBox"注册成功",vbOKOnly,"系统提示"ElseMsgBox"两次输入的密码不一样",vbOKOnly,"系统提示"EndIfElseMsgBox"用户名或密码不能为空",vbOKOnly,"系统提示"EndIfrst.CloseForm_LoadEndSub以上代码是系统管理模块中用户注册的部分代码。在一个比较完整的系统是不能出现有两个相同的用户名,进行登录系统的。所以在程序中先利用”IfTrim(Text1.Text)=Trim(rst!用户名)Then”语句进行判断。如已注册此用户名则”MsgBox"已注册了此用户名",vbOKOnly,"系统提示"”,弹出信息框,“已注册了此用户名”。如没有系统中没有注册此用户名,在判断是否密码框中是否为空,和判断密码与确认密码是否一样。如条件成立,则”MsgBox"注册成功",vbOKOnly,"系统提示"”,弹出信息框“注册成功”。4.3.3商品管理模块商品管理模块需求分析:能够对超市所拥有和各种商品的基础信息进行维护和管理。商品的基础信息包括:商品编号、商品名称、商品规格、计量单位、备注信息、库存数量等。系统必要能够对商品信息进行添加、修改、删除。也可以按照一定的条件来进行查询,而且还必要随时掌握库存商品的数量,并且能够以图形的形式显示出现有商品的库存数量.在此模块包含了商品入库、商品列表、商品查询。在商品查询中又集成了商品修改、商品删除。商品管理模块功能实现:此模块中共包含了商品入库(frmspadd)窗体、商品列表(frmsplist)窗体、商品查询(frmsql)窗体。商品入库(frmspadd)窗体中添加了text、commandButton控件,以实现商品的入库。商品列表(frmsplist)窗体中添加了Sstab、Frame、MSFlexGrid、Chart、CommandButton五种控件以实现商品以网格的形式显示出来和以图形的格形显示商品的库存数量。商品查询(frmsql)窗体添加了CommandButton、Frame、Text三种控件以实现商品的查询、删除、修改。DoWhileNotrst.EOF Ifrst!商品编号=Trim(Text1.Text)Thenrst.Editrst!商品库存=Val(rst!商品库存)+Val(Text5.Text)rst.UpdateMsgBox"商品添加成功",0+48+0,"系统提示”ExitSubEndIfrst.MoveNextLoopIfTrim(Text1.Text)<>""Thenrst.AddNewrst!商品编号=Trim(Text1.Text)rst!商品名称=Trim(Text2.Text)rst!商品价格=Trim(Text3.Text)rst!商品规格=Trim(Text4.Text)rst!商品库存=Trim(Text5.Text)rst!备注=Trim(Text6.Text)rst.UpdateMsgBox"商品添加成功",0+48+0,"系统提示" Endif以上代码是商品管理模块中商品入库的分部代码。在商品入库时,先对”商品编号”判断入库的是新商品还是库存已有的商品。如是”rst!商品编号=Trim(Text1.Text)”则只是将”rst!商品库存=Val(rst!商品库存)+Val(Text5.Text)”,商品库存加上入库的数量。如果”商品编号”不等于数据库中的”商品编号”则将所有的商品信息添加到数据库,完成新的商品添加。rst.MoveFirstj=1k=4DoWhileNotrst.EOFAndk>0Chart1.Column=1Chart1.Row=jChart1.RowLabel=rst.Fields("商品名称")+"("_+Str(rst!商品库存)+")"Chart1.Data=rst.Fields("商品库存")rst.MoveNextj=j+1k=k–1Loop以上代码是商品管理模块中商品列表的分部代码。在商品列表中除了以网格的形式列出所有商品的数量。还可以用最为直接的图形形式,商品数量就可以一目了然。商品列表窗体引用了外部控件:MicrosoftChartControl6.0(OLEDB)。当窗体加载时先显示前面四个商品的库存数量。可以使用其窗体上的”上一页”和”下一页”进行分页的显示所有商品库存。Setdbe=OpenDatabase(App.Path&"\data\db2.mdb")Setrst=dbe.OpenRecordset("frmspadd")rst.MoveFirstDoWhileNotrst.EOFIfTrim(Text7.Text)=rst!商品编号ThenText1.Text=rst!商品编号Text2.Text=rst!商品名称Text3.Text=rst!商品价格Text4.Text=rst!商品规格Text5.Text=rst!商品库存Text6.Text=rst!备注ExitSubEndIfrst.MoveNextLoop以上代码是商品管理模块中商品查询中的部分代码。在商品列表中是用了外部控件:FlexGrid来列出相应的商品。这在商品数量不多的情况下,的确是一种很好的方法;但是一旦商品数量增多,单单靠FlexGrid来寻找相应的商品渐渐变得不实际,此时就需要提供一个查找功能,使得用户能够查询满足一定条件的商品。先将指针移到第一条记录(rst.MoveFirst).如果frmspadd表中有”商品编号”(text7)中的值,则在窗体的各个控件中将记录为此”商品编号”的其他的字段显示出来。(4)商品销售模块商品销售模块需求分析:商品的销售信息包括:商品编号、商品名称、销售规格、销售单位、销售单价、销售总额、销售日期等。系统能够对每销售一件商品,就从数据库中对该商品的数量减去该商品的销售单位。并且对该天的销售商品进行汇总。该模块中包含了前台销售、销售汇总。商品销售模块功能实现:此模块中包含了前台销售(frmxs)、销售汇总(frmfz)两个窗体。前台销售(frmxs)窗体中添加了Trmer、Frame、MSFlexGrid三种控件,以实现商品的前台销售。销售汇总(frmfz)窗体中添加了Treeview、Label、Frame三种控件,以实现当天商品销售的汇总。在前台销售中每销售一件商品,则自动在商品库存中减去相应销售数量,如库存数量小于销售数量,则不能销售该商品,并弹出信息框提示该商品的库存数量(MsgBox"库存数量不够!"+"库存为:"+Str(rr!商品库存))。如销售成功,则在外部控件”MicrosoftFlexGridControl6.0”中显示出来。并可以实现多种商品同时销售,且计算销售总额。根据实际付款算出找零。对每种销售情况存入数据库中,以便销售汇总。Setdbe=OpenDatabase(App.Path&"\data\db2.mdb")Setrst=dbe.OpenRecordset("frmspss")Setnodex=TreeView1.Nodes.Add(,,"r","今日汇总")TreeView1.LineStyle=tvwRootLinesrst.MoveFirstDoWhileNotrst.EOFSetnodex=TreeView1.Nodes.Add("r",tvwChild,,rst!商品名称+_rst!商品编号)rst.MovenextLoop以上代码是销售管理模块中销售汇总的部分代码,代码实现的功能是将商品销售表(frmspss)中根据表中的商品名称和商品编号依次添加到外部控件:microsof

温馨提示

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

评论

0/150

提交评论