关于超市文题目2023年

毕业论文(设计)

题目:超市管理信息系统设计与实现

学生姓名:

学号:200516030102

专业班级:计算机信管05201班

指导教师:

完成时间:2016年6月

摘 要

超市管理信息系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面.

本系统使用MICROSOFT公司的VISUALBASIC开发工具,主要完成对超市的管理,包括进货管理,销售管理,库存管理和员工管理四个方面.系统可以完成对各类信息的浏览,查询,添加,删除,修改等功能.系统的核心是,和三者之间的联系,每一个表的修改都将联动的影响其它的表,当完成或操作时系统会自动地完成的修改.系统有完整的用户添加,删除和修改功能,系统采用MicrosoftOffice中的Access2000来设计数据库,它有着最为灵活的数据库结构,对数据库应用有着良好的支持. 论文主要介绍了本课题的开发背景,所要完成的功能和开发的过程.重点说明了系统设计的重点,设计思想,难点技术和解决方案.visualbasic语言,超市,商品

ABSTRACT

Thesupermarketmanagementinformationsystemisthetypicalinformationmanagementsystem(MIS),Itsdevelopmentmainlyincludesthebackenddatabasetheestablishmentandthesafeguardingaswellarontendtheapplicationprogramdevelopmenttwoaspects.

ThissystemuseMICROSOFTCorporationVISUALBASICdevelopmentkit,mainlypletestothesupermarketcontrol,includingstockswithgoodsthecontrol,thesalescontrol,thestockmanagementandthestaffcontrolouraspects.Thesystemmaypletetoeachcategoryoffunctionandsooninformationbrowse,inquiry,increase,deletion,modification.Thesystemcoreisthesale,thestockinquiresandstockswithgoodscontrolsthreebetweentherelation,eachtablemodificationalllinkageinfluenceothertables,whenpletesthesaleorstockswithgoodstheoperationthesystemtobeableautomatedlytopletecorrespondstheinformationthemodification.Thesystemhastheintegritytheusertoadd,thedeletionandthepasswordmodificationfunction,thesystemusesinMicrosoftOfficeAccess2,000todesignthedatabase,ithasthemostflexibledatabasestructure,hasthegoodsupporttothedatabaseapplication.

Thepapermainlyintroducedthistopicdevelopmentbackground,mustpletefunctionanddevelopmentprocess.Keyexplanationsystemdesignkeypoint,designthought,difficulttechnologyandsolution.

Keyword:widget,forms,thedata-base,visualbasiclanguage,theWarehousemanagement,menchandise.

目录

摘 要II

ABSTRACTIII

目录IV

引言1

第一章系统需求分析2

1.1开发背景2

1.2系统分析3

1.3系统可行性分析4

1.4系统开发环境与运行环境6

1.5系统开发应用的关键技术及软件说明6

第二章系统功能设计10

2.1系统功能10

2.2程序流程图和E-R图设计10

第三章系统数据库设计13

3.1数据库的概念13

3.2创建数据库文件14

3.3怎样创建一个数据表15

3.4VB连接ACCESS2000数据库16

3.5数据库设计17

第四章详细设计20

系统功能的详细设计与实现20

4.1窗体设计20

4.2主界面设计21

4.3交易管理单元设计22

4.4进货,销货统计管理单元设计24

4.5查看数据表单元设计26

4.6系统管理单元设计28

第五章系统测试与设计要点30

5.1本次毕业设计的重点,难点,与创新点30

5.2测试实例的选择研究30

5.3测试环境33

5.4测试结果及测试结果分析33

总结34

致谢36

进行交易,比如:进货登记时,如果商品编号相同,则自动添加该商品的其它属性,销货登记时,用户只要输入商品编号,该商品的其它属性即可自动出现.退货登记时,只要输入正确的销货编号,其销售信息也将自动列出,尽量的方便了用户的操作,同时对于登陆的员工编号程序也自动的将其列在进货登记,销货登记中,以防止员工进行非正常的交易.

(2)进货统计:包括今日进货统计,本月进货统计,本季度进货统计,本年度进货统计等.其中每次进货统计都是按进货厂商和进货总金额统计显示的.使用一个表格显示所选时间段的全部进货数据,包括进货编号,商品名称等.再使用另一个表格显示分别从各个厂商进货的金额,还有一个文本框用于显示次时间段的进货总金额.

(3)销货统计:包括今日销售统计,本月销售统计,本季度销售统计,本年度销售统计等,其中每次销售统计都是按生产厂商和销售总金额统计显示的.使用一个表格显示所选时间段的全部销售数据,包括销货编号,商品名称等.再使用另一个表格显示分别从各个厂商进货的金额,还有一个文本框用于显示次时间段的销售总金额.

(4)查看数据表:实现各种数据表的浏览,包括进货表,商品库存表,销售表,退货表,员工表,进货商表等.对于员工表管理员还可以对其进行删除或添加用户操作.

(5)系统管理:包括更换用户,修改,退出系统等.更换用户的操作方便了用户的使用,同时更加方便了管理员对于系统数据的查询,可以做到随时查看,以使管理员对帐目一目了然,同时方便了普通用户的交接班使用本系统.修改和退出系统都是对于系统管理的辅助功能,再这里就不详细说明了.

(6)其它窗体:包括主窗体,登陆窗体,系统初始化窗体.主窗体就是将各个模块的大意列在菜单中,然后通过每一个菜单将其它的窗体逐个对应的连到主窗体中.登陆窗体为本系统的启动窗体,其功能是让合法的用户使用本系统,已防止其它的非法人员使用该系统.并对登陆的用户做一下权限的区别:分为管理员和普通员工.系统初始化窗体的主要目的是:在本系统的试运行阶段成功后是管理员可以直接把除了员工表以外的所有数据表的内容清零.登陆窗体中设计了一个权限,可以区分是员工登陆还是管理员登陆,如果是管理员则提示是否进行系统初始化,否则直接进入主窗体.

1.3系统可行性分析

1.管理可行性分析

超市的经营者大多具备电脑基本操作知识,对于必要的专业操作经短期培训即可,管理基础工作和各项管理制度比较健全,执行严格,原始数据采集完整,保存良好.

2.经济可行性分析

超市管理系统的投入,能够提高工作效率,减少工作人员,从而减少人力资本的投入,就能够基本收回开发系统的投资,从经济角度来说,本系统开发完全必要.

.技术可行性分析(1)硬件:PC机(奔3CPU,128M内存,64M显卡,40G硬盘)

(2)软件:Windows98/2000/XP,VISUALBASIC6.0,Access2003

系统本身对硬件和软件的要求都不高且系统兼容性很强,平台的移植性也很好,因此无论在系统的硬件及软件上都满足开发的要求.

()运行上的可行性:●操作简单:简单的操作规则使操作人员能轻松掌握.

●查询方便:用户可设定任意条件和任意的查询项目进行检索.

●统计灵活:任意条件下任意项目的产品入库时间,数量等的统计及查询项目均可进行交叉统计.

●数据维护:供应商或销售商信息的录入及商品类别,规格,颜色,名称的输入,可修改,删除,查询.

●工作方式:非实时联网.在单机联网系统和多机联网系统中,计算机工作时仍和独立式系统一样,单机完全独立运行.系统工作与网络无关,因此系统非常可靠和稳定,避免了因网络故障而导致不能操作的局面.

.社会可行性分析

目前超市管理信息系统已经得到了广泛的应用,超市管理需要现代化和信息化,只有合理地运用信息化的管理,才能在市场竞争中立于不败.超市管理信息系统不仅能够提高经营者的回报,而且能够随时掌握市场的动向,为经营者提供必要的市场信息,解决了经营者最需要解决的迫切问题,同时管理信息系统对操作人员的素质要求不高,也合理地节约了成本的投入.

.可行性研究结论

该拟开发的管理信息系统操作方便灵活,便于学习,因此,该系统具有可行性.

通过经济,技术,和社会等方面的可行性研究,可以确定本系统的开发完全必要,而且是可行的,可以立项开发.

软件,Windows98/2000/XP,VISUALBASIC6.0,Access2000

2.系统运行环境

Windows98/2000/XP

1.5系统开发应用的关键技术及软件说明

1.VISUALBASIC6.0简介

VisualBasic作为当今社会功能强大的可视化开发工具具有以下几大特点:

(1)成功的简化了界面的设计过程.它在Windows平台上提供了图形用户界面(GUI)的集成开发环境(IDE).在集成开发环境中,你可以选择想要显示的工具栏,将按钮添加并移动到工具栏中,在不固定的或固定的工具栏中以及SDI或MDI界面中进行选择,VisualBasic的IDE就像飞机的坐舱,完成你工作所需的所有量表和仪器都已经配备好了.采用简单易学的Basic语言,它既适用于没有任何编程经验的开发者学习,也适合于开发各种复杂的底层应用程序,使用Basic语言编写的应用程序简洁灵巧易于维护,可以说它是一种"天生结构化"的语言.

(2)提供了多种向导.利用这些向导,可以快速地完成一般性的任务,例如生成其控件不绑定到数据控件上的纯代码窗体,建立查询,添加工具,制作图表,以及发布创建的应用程序等,这样可以大大加快应用程序的开发过程.3)具有强大的数据和字符串处理功能.VisualBasic还是一种易于扩充功能的开发系统.一方面,它可以使用第三方厂家提供的各种VisualBasic使用的控件,另一方面,开发者也可以使用其他编程语言编写自己所需的控件,因此它是一种可以不断扩充功能的开发系统.

(3)提供了IntelliSense技术.当你在VisualBasic的代码窗口敲进对象名称的时候,IntelliSense技术会自动向你显示一些相关的信息,例如对象的属性和方法等.当一种方法或函数的参数被输入时,IntelliSense有助于确保开发者们为VisualBasic提供正确的变量以及帮助用户自己编写正确的函数.IntelliSense也有助于提高开发者们的开发能力,因为他们此时不必再记忆那些复杂的对象属性及函数参数了.

2.ACCESS数据库介绍

MicrosoftAccess是微软公司开发的第一个面向Windows平台的桌面数据库管理系统,它充分利用了Windows平台的优越性,如图形界面和Windows的事件驱动机制等.

作为Microsoft的office套件产品之一,access已经卖出了近700万份,成为世界上最流行的桌面数据库系统.Access与许多优秀的关系数据库一样,可以让你很容易地连接相关的信息而且还对其他的数据库系统有所补充.它能操作其它来源的资料,包括许多流行的PC数据库程序(如dBASE,Paradox,MicrosoftFoxPro)和服务器,小型积极大型机上的许多SQL数据库.Access还完全支持Microsoft的OLE技术.Access还提供windows操作系统的高级应用程序开发系统.Access与其它数据库开发系统之间相当显着的区别就是:您不用写一行代码,就可以在很短的时间里开发出一个功能强大而且相当专业的数据库应用程序,并且这一愉快的过程是完全可视的!如果您能给它加上简短的VBA代码,那么您的程序决不比专业程序员潜心开发的程序差.

3.ADO技术

ActiveDataObjects(ADO)微软最新的数据库访问技术,它被设计用来同新的数据访问层OLEDBProvider一起协同工作,以提高通用数据访问(UniversalDataAccess).OLED B是一个低层的数据访问接口,用它可以访问各种数据源,包括传统的关系型数据库,以及电子邮件系统及自定义的商业对象.

ADO向我们提供了一个熟悉的,高层的对OLEDB的Automation的封装接口.对那些熟悉RAO的程序员来说,可以把OLEDB比作是ODBC驱动程序.如同RAO对象是ODBC驱动程序接口一样,不同的数据源要求它们自己的OLEDB提供者(OLEDBProvider).

ADO最重要的三个对象是:Connection,Command,RecordsetConnection对象 Connection对象用于建立与数据库的连接通过连接可从应用程序访问数据源它保存诸如指针类型,连接字符串,查询超时,连接超时和缺省数据库这样的连接信息(2)Command对象 在建立Connection后,可以发出命令操作数据源一般情况下,Command对象可以在数据库中添加,删除或更新数据,或者在表中进行数据查询Command对象在定义查询参数或执行一个有输出参数的存储过程时非常有用(3)Recordset对象 Recordset对象只代表一个记录集,这个记录集是一个连接的数据库中的表,或者是Command对象的执行结果返回的记录集在ADO对象模型中,是在行中检查和修改数据的最主要的方法,所有对数据的操作几乎都是在Recordset对象中完成的Record对象用于指定行,移动行添加更改删除记录

SQL语言是一种介于关系代数与关系演算之间的结构化查询语言,其功能不仅仅是查询.SQL是一个通用的,功能极强的关系数据库语言.

SQL语言之所以能够为用户和业界所接受,并成为国际标准,是因为它是一个综合的,功能极强同时有简单易学的语言.SQL语言集数据查询(DataQuery),数据操纵(DataManipulation),数据定义(DataDefinition)和数据控制(DataControl)功能于一体,主要特点包括:

(1)综合统一

数据库系统的主要功能是通过数据库支持的数据语言来实现的.SQL语言集数据定义语言DDL,数据操纵语言DML,数据控制语言DCL的功能于一体,语言风格统一,可以独立完成数据库生命周期中的全部活动,包括定义关系模式,建立数据库,插入数据,查询,更新,维护,数据库重构,数据库安全性控制等一系列操作要求,这就为数据库应用系统的开发提供了良好的环境.用户在数据库系统投入运行后,还可根据需要随时地逐步地修改模式,且并不影响数据库的运行,从而是系统具有良好的可扩展性.

(2)高度非过程化

非关系数据模型的数据操纵语言是面向过程的语言,用其完成某项请求,必须指定存取路径.而用SQL语言进行数据操作,只要提出"做什么",而无须指明"怎么做",因此无须了解存取路径,存取路径的选择以及SQL语句的操作过程由系统自动完成.这不但大大减轻了用户负担,而且有利于提高数据独立性.

(3)面向集合的操作方式

非关系数据模型采用的是面向记录的操作方式,操作对象是一记录.例如查询所有平均成绩在80分以上的产品姓名,用户必须一条一条地把满足条件的产品记录找出来(通常要说明具体处理过程,即按照哪条路径,如何循环等).而SQL语言采用集合操作方式,不仅操作对象,查找结果可以是元组的集合,而且一次插入,删除,更新操作的对象也可以是元组的集合.

(4)以同一种语法结构提出两种使用方式

SQL语言既是自含试语言,又是嵌入式语言.作为自含式语言,它能够独立地用于联机交互的使用方式,用户可以在终端键盘上直接键入SQL命令对数据库进行操作,作为嵌入式语言,SQL语言能够嵌入到高级语言(例如C,COBOL,FORTRAN)程序中,供程序员设计程序时使用.而在两中不同的使用方式下,SQL语言的语法结构基本上是一致的.这种以统一的语法结构提供两种不同的使用方式的做法,提供了极大的灵活性与方便性.

(5)语言简捷,易学易用

SQL语言功能极强,但由于设计巧妙,语言十分简捷,完成核心功能只使用了9个动词:数据查询(SELECT),数据定义(CREATE,DROP,ALTER),数据操作(INSERT,UPDATE,DELETE)和数据控制(GRANT,REVOKE).SQL语言接近英语口语,因此容易学习,容易使用.

第二章系统功能设计

2.1系统功能

1.可以进行文本操作,

2.添加一个数据库项目,

3.删除一个数据库项目,

4.修改一个数据库项目,

5.查询信息,

6.用户添加和修改.

2.2程序流程图和E-R图设计

图2.1程序流程E-R图

各模块的E-R图设计:

1.交易管理模块:

用于管理商品的进货,销售,退货登记的操作.实体E-R图如下:

图2.2交易管理模块E-R图

2.进货统计管理:

主要用于对商品每日,每月,第季度,每年的进货情况进行统计管理,此功能只有以管理员的身份进入时才为可用状态.实体E-R图如下:

图2.3进货统计管理E-R图

3.销售统计管理:

主要用于对商品每日,每月,第季度,每年的销售情况进行统计管理,此功能只有以管理员的身份进入时才为可用状态.实体E-R图如下:

图2.4销货统计管理E-R图

4.查看数据表:

主要能查看进货表,商品信息表,销售表,退货表等进行查看,以实现对商品信息的及时了解.实体E-R图如下:

图2.5查看数据表E-R图

第三章系统数据库设计

3.1数据库的概念

数据库处理在信息系统的研究中一直是非常重要的主题,然而,近年来,随着WorldWideWeb(WWW)的猛增及Inter技术的迅速发展,使得数据库技术之时成为最热门技术之一.数据库技术能使Inter应用超越具有早期应用特点的简单的发布.同时,Inter技术提供了一种向用户发布数据库内容的标准化的访问方法.这些技术没有脱离经典数据库技术的要求.它们只是加重了数据库技术的重要性.

数据库的设计和开发及包括艺术有包括工程.理解用户的需求,然后,把它们转变为有效的数据库设计是一个艺术过程.把设计转变为实际的数据库,并且这些数据库带有功能完备,高效能的应用,是一个工程过程.

数据库的目的是帮助人们跟踪事务.经典的数据库应用涉及诸如订单,顾客,工作,员工,学生,之类的项,或其它数据量较大,需要密切关注的事务.最近,由于数据库的普及,数据库技术已经被应用到了新的领域,诸如用于Inter的数据库或用于公司内联网的数据库.数据库也被越来越多地应用于生成和维护多媒体应用程序上.

计算机的数据处理应用,首先要把大量的信息以数据形式存放在存储器中.存储器的容量,存储速率直接影响到数据管理技术的发展.从1956年生产出第一台计算机到现在,存储器的发展,为数据库技术提供了良好的物质基础.

使用计算机以后,数据处理的速度和规模,无论是相对于手工方式,还是机械方式,都有无可比拟的优势.通常在数据处理中,计算是比较简单的而数据的管理却比较复杂.数据管理是指数据的收集,整理,组织,存储,维护,检索,传送等操作,这部分操作是数据处理业务的基本环节,而且是任何数据处理业务中必不可少的共有部分.数据管理技术的优劣,将直接影响数据处理的效率.

数据库在一个管理信息系统中占有非常重要的位置,数据库结构设计的好坏将直接对应用系统的效果产生影响.合理的数据库设计可以提高数据库存储效率,保证数据的完整和一致.同时合理的数据结构也将有利于程序的实现.

设计数据库系统时,应该首先了解用户的各个方面的需求,包括现有的以及将来可能增加的.

3.2创建数据库文件

如果操作系统中安装了ACCESS2000的话,可以在开始菜单的程序菜单中可以找到.如下所示:

图3.1

打开ACCESS2000之 后,会开启一个窗口,可选择是打开以前的数据库文件还是新建一个新的空数据库文件,如果选择空ACCESS数据库,然后点击确定按钮.这些就新建了一个数据库文件.

图3.2

最后一步就是要选择一个要保存数据库文件的名字和位置.点击创建就完成.

图3.3

3.3怎样创建一个数据表

上面已经讲了如何创建一个数据库文件,按照上面的步骤建立一个数据库文件后,需要在数据库文件中建立一个数据表.

在下面的对话框中选"使用设计器创建表",上面还有三个按钮,一个是打开,一个是设计,一个是新建,点击设计,就可以开始设计数据表了.

图3.4

出现设计的界面后,就可以开始设计数据表了!

图3.5

3.4VB连接ACCESS2000数据库

用vb编写一个管理软件,如果不能连接数据库,那也没有什么用处.先看看VB是如何与ACCESS2000数据库相连接的.

SubConnStr()

'连接数据库

Setconn等于CreateObject("ADODB.Connection")'建立数据库连接对像

DBpath等于App.Path&,"\"&,"data.mdb"'设置数据的路径

conn.Open"Provider等于Microsoft.Jet.OLEDB.4.0,DataSource等于"&,DBpath'打开数据库连接

Setrs等于CreateObject("ADODB.Recordset")'设置数据库对像

EndSub

上面的一段代码就是连接数据库的.上面用到了三个变量conn,Dbpath,rs.其中有两个变量要定义为公用的变量,因为这段代码是放在一个模块中的,为了在每一个窗体中能够使用这个变量,所以必须要声明为公用变量.声明公用变量的方法如下:

Publicconn

Publicrs

上面就是声明为公用变量,上面的声明一定要放在模块的最上面.如果声明在下面,那就成了局部变量,那么作用范围就会不同了,作用就更不同,而且在其它窗体中使用到了这个变量,程序会出错.

3.5数据库设计

上面提到的各种功能的实现都离不开数据库的支持,因此数据库设计作为本系统设计的一部分不可缺少.开发本系统中使用的数据库系统是WindowsAccess2000.从上面的功能分析不难看出本系统需要建立以下几个数据表:buy表(进货表),goods表(现存商品表),sell表(销售表),retreat表(退货表),employee表(员工表),manufacturer表(进货商表).由于数据量比较小,所以这些数据表都存在一个数据库下:sellsystem.mdb

下面对各个数据表的结构做一下简单介绍:

在系统的数据库设计中,进货表,销货表,商品库存表和退货表涉及了交易管理三个子菜单的绝大部分数据,是本系统数据库的核心,所以将对其部分表的设置列表显示.

Manufacturer表(进货商表)中包括有厂商编号,厂商名称,联系人姓名,,厂商地址等字段,表略.

employee(员工表)中包括有员工编号,员工姓名,员工,员工,员工地址等字段,表略.

buy表(进货表)中包括有进货编号,商品编号,商品名称,生产厂商,型号,数量,进货价,进货年,进货月,进货日,总金额,业务员编号等.设计该数据表的主要目的是方便管理员的查看,使系统的数据管理能够更加层次化.具体设置如表3-1所示.

表3-1buy表

字段名数据类型说明进货编号文本字段大小为20商品名称文本字段大小为20生产厂商文本字段大小为20型号文本字段大小为20数量数字长整型进货价货币货币进货年数字整型进货月数字整型进货日数字整型业务员编号文本字段大小为20总金额货币货币goods表(现存商品表)中包括有商品编号,生产厂商,商品名称,型号,进货价,销货价,数量,进货年,进货月,进货日,业务员编号,总金额等字段.具体设置如表3-2所示.

表3-2goods表

字段名数据类型说明商品编号文本字段大小为20商品名称文本字段大小为20生产厂商文本字段大小为20型号文本字段大小为20数量数字长整型进货价货币货币销货价货币货币sell表(销货表)中包括有销货编号,商品编号,商品名称,生产厂商,型号,数量等字段,由于篇幅有限,其表略.

retreat表(退货表)中包括有退货编号,销货编号,生产厂商,商品名称,型号,单价,数量,总金额,退货年,退货月,退货日,业务员编号等.具体设置如表3-3所示.

表3-3retreat表

字段名数据类型说明退货编号文本字段大小为20销货编号文本字段大小为20商品名称文本字段大小为20生产厂商文本字段大小为20型号文本字段大小为20单价货币货币数量数字长整型总金额货币货币退货年数字整型退货月数字整型退货日数字整型业务员编号文本字段大小为20

第四章详细设计

系统功能的详细设计与实现

4.1窗体设计

登陆窗体设计

图4.1登陆窗体

该登陆窗体对用户登陆做了一个简单的判断,如果是管理员登陆则可进入初始化界面,然后再进入主界面.具体做法是:先在窗体级中定义一个记录集,用于打开employee表,打开后将该表中的字段:员工姓名,依次加到bo1中.全加入后关闭记录集,然后对bo1和text1中的内容做一下简单判断:如果bo1和text1中的数据正好和employee表中的某个记录相同,则通过登陆窗体,否则提示用户用户名或有误.在通过登陆窗体中还要对用户名做一下判断:如果是管理员登陆,则进入主界面.

实现代码如下:

DimstremployeeAsString

Dimrs_employeeAsNewADODB.Recordset

PrivateSubForm_Activate()

stremployee等于"select*fromemployee"

rs_employee.Openstremployee,n,adOpenStatic,adLockOptimistic

DimiAsInteger

Fori等于0Tors_employee.RecordCount-1

Combo1.AddItem(rs_employee.Fields("员工姓名"))

rs_employee.MoveNext

Next

rs_employee.Close

EndSub

PrivateSubForm_Load()

n.Provider等于"microsoft.jet.oledb.4.0"

n.ConnectionString等于App.Path&,"\sellsystem.mdb"

n.Open

EndSub

PrivateSubPicture1_Click()

EndSub

PrivateSubLabel3_Click()

IfCombo1.Text等于""Then

MsgBox"请输入用户名!",vbOKOnly+vbInformation,"注意"

Combo1.SetFocus

ExitSub

ElseIfText1.Text等于""Then

MsgBox"请输入!",vbOKOnly+vbInformation,"注意"

Text1.SetFocus

ExitSub

EndIf

stremployee等于"select*fromemployeewhere员工姓名等于'"&,Combo1.Text&,"'and员工等于'"&,Text1.Text&,"'"

rs_employee.Openstremployee,n,adOpenStatic,adLockOptimistic

Ifrs_employee.EOF等于TrueThen

MsgBox"用户名或错误,请从新输入!",vbOKOnly+vbInformation,"注意"

Combo1.SetFocus

rs_employee.Close

ExitSub

Else

strs等于rs_employee.Fields("员工编号")

rs_employee.Close

EndIf

IfCombo1.Text等于"administrator"Then

frminitial.Show

Else

frmMain.Show

frmMain.mnBuyAll.Enabled等于False

frmMain.mnSellAll.Enabled等于False

frmMain.mnTable.Enabled等于False

EndIf

UnloadMe

EndSub

PrivateSubLabel4_Click()

UnloadMe

n.Close

EndSub

PrivateSubPicture2_Click()

EndSub

4.2主界面设计

图4.3主界面

主窗体的建立十分简单,只需将所要实现的功能编辑成菜单即可.该窗体的运行过程为:用户首先进入登陆窗体,如果是管理员登陆,则先进入初始化窗体,经过判断是否需要初始化后,进入主窗体.其权限为:销货统计,进货统计,查看数据表和系统管理.其权限的设置使管理员能够方便的查看任何时间段内的所有信息,还可以对员工表进行管理.如果是普通用户登陆,则直接进入主窗体,其授予的权限只有交易管理和系统管理,也就是说员工只能负责对商品进行入库登记,销货登记和退货登记,另外在一个员工对本系统使用的整个期间内,进货登记,销货登记和退货登记三个窗体中的显示的业务员编号都由系统自动给出 340;该员工的员工编号.

4.3交易管理单元设计

1.进货登记窗体

图4.4进货登记窗体

本窗体用来实现商品进货功能,将进货信息添加到buy表,再将该信息选择性的加入goods表.如果是新的进货厂商,可以在此入库登记.其具体实现过程如下所述:先在窗体及变量中定义三个记录集:rs_buy,rs_goods,rs_manufacture用来控制三个数据表:buy表,goods表,manufacturer表.在用户点击添加商品中的添加入库操作之前,程序先会检查是否有用户是否有个别属性为空,并做出提示.然后将商品添加到buy表中,再添加到goods表.在添加到goods表时,程序会先判断该商品编号是否已经存在,如果存在则直接将该添加信息的数量加到goods表中相应的记录上.为此,进货编号,商品编号是buy表,goods表中不可重复的属性.为方便用户操作,程序特在商品编号的文本框:text2的Change事件中做了一个判断,即如果该商品编号存在的话直接显示该商品的其他属性.另外,对于总金额文本框也是由数量和进货价两个文本框的Change事件计算入内的.如果是新的进货商,可以将它的信息添加到进货商表.其过程和上面所说的添加到buy表基本相同,这里就不做介绍了.

添加商品与厂商的实现代码如下:

Dimrs_goodsAsNewADODB.Recordset

Dimrs_buyAsNewADODB.Recordset

Dimrs_manufacturerAsNewADODB.Recordset

Dimstr_goodsAsString

Dimstr_buyAsString

Dimstr_manufacturerAsString

DimNumgooodsAsInteger

PrivateSubCommand1_Click()

'对入库时做的一些屏蔽操作!

IfText1.Text等于""Then

MsgBox"请填写进货编号!",vbOKOnly+vbInformation,"注意"

Text1.SetFocus

ExitSub

ElseIfText2.Text等于""Then

MsgBox"请填写商品编号!",vbOKOnly+vbInformation,"注意"

Text2.SetFocus

ExitSub

ElseIfText3.Text等于""Then

MsgBox"请填写商品名称!",vbOKOnly+vbInformation,"注意"

Text3.SetFocus

ExitSub

ElseIfText4.Text等于""Then

MsgBox"请填写生产厂商!",vbOKOnly+vbInformation,"注意"

Text4.SetFocus

ExitSub

ElseIfText5.Text等于""Then

MsgBox"请填写商品型号!",vbOKOnly+vbInformation,"注意"

Text5.SetFocus

ExitSub

ElseIfText6.Text等于""Then

MsgBox"请填写商品数量!",vbOKOnly+vbInformation,"注意"

Text6.SetFocus

ExitSub

ElseIfText7.Text等于""Then

MsgBox"请填写商品进货!",vbOKOnly+vbInformation,"注意"

Text7.SetFocus

ExitSub

ElseIfText8.Text等于""Then

MsgBox"请填写商品销货!",vbOKOnly+vbInformation,"注意"

Text8.SetFocus

ExitSub

ElseIfText13.Text等于""Then

MsgBox"请填写进货总金额!",vbOKOnly+vbInformation,"注意"

Text13.SetFocus

ExitSub

EndIf

'下面是对进货表进行添加记录操作!

str_buy等于"select*frombuywhere进货编号等于'"&,Text1.Text&,"'"

rs_buy.Openstr_buy,n,adOpenStatic,adLockOptimistic'打开进货表

Ifrs_buy.EOF等于TrueThen

rs_buy.AddNew

rs_buy.Fields("进货编号")等于Text1.Text

rs_buy.Fields("商品名称")等于Text3.Text

rs_buy.Fields("生产厂商")等于Text4.Text

rs_buy.Fields("型号")等于Text5.Text

rs_buy.Fields("数量")等于Val(Text6.Text)

rs_buy.Fields("进货价")等于Val(Text7.Text)

rs_buy.Fields("进货年")等于Text9.Text

rs_buy.Fields("进货月")等于Text10.Text

rs_buy.Fields("进货日")等于Text11.Text

rs_buy.Fields("业务员编号")等于Text12.Text

rs_buy.Fields("总金额")等于Val(Text13.Text)

rs_buy.Update

rs_buy.Close'关闭进货表

Else

MsgBox"此进货编号已存在,请重添!",vbOKOnly+vbInformation,"注意"

Text1.Text等于""

Text1.SetFocus

rs_buy.Close

ExitSub'关闭进货表

EndIf

'下面是对商品库存表进行入库操作!

DimsqlAsString

sql等于"select*fromgoodswhere商品编号等于'"&,Text2.Text&,"'"

rs_goods.Opensql,n,adOpenStatic,adLockOptimistic

Ifrs_goods.EOF等于TrueThen

rs_goods.Close

str_goods等于"select*fromgoods"

rs_goods.Openstr_goods,n,adOpenStatic,adLockOptimistic'打开库存表

rs_goods.AddNew

rs_goods.Fields("商品编号")等于Text2.Text

rs_goods.Fields("商品名称")等于Text3.Text

rs_goods.Fields("生产厂商")等于Text4.Text

rs_goods.Fields("型号")等于Text5.Text

rs_goods.Fields("数量")等于Val(Text6.Text)

rs_goods.Fields("进货价")等于Val(Text7.Text)

rs_goods.Fields("销货价")等于Val(Text8.Text)

rs_goods.Update

MsgBox"商品入库成功",vbOKOnly+vbExclamation,""

rs_goods.Close'关闭库存表

Else

numgoods等于rs_goods.Fields("数量")

rs_goods.Fields("数量")等于Val(Text6.Text)+numgoods

rs_goods.Update

MsgBox"商品入库成功",vbOKOnly+vbExclamation,""

rs_goods.Close'关闭库存表

EndIf

EndSub

PrivateSubCommand3_Click()

'对入库时做的一些屏蔽操作!

IfText14.Text等于""Then

MsgBox"请填写厂商编号!",vbOKOnly+vbInformation,"注意"

Text14.SetFocus

ExitSub

ElseIfText15.Text等于""Then

MsgBox"请填写厂商名称!",vbOKOnly+vbInformation,"注意"

Text15.SetFocus

ExitSub

ElseIfText16.Text等于""Then

MsgBox"请填写厂商联系人姓名!",vbOKOnly+vbInformation,"注意"

Text16.SetFocus

ExitSub

ElseIfText17.Text等于""Then

MsgBox"请填写!",vbOKOnly+vbInformation,"注意"

Text17.SetFocus

ExitSub

ElseIfText18.Text等于""Then

MsgBox"请填写厂商地址! ",vbOKOnly+vbInformation,"注意"

Text18.SetFocus

ExitSub

EndIf

'下面是对进货商表进行入库操作!

str_manufacturer等于"select*frommanufacturerwhere厂商编号等于'"&,Text14.Text&,"'"

rs_manufacturer.Openstr_manufacturer,n,adOpenStatic,adLockOptimistic

Ifrs_manufacturer.EOF等于TrueThen

rs_manufacturer.AddNew

rs_manufacturer.Fields("厂商编号")等于Text14.Text

rs_manufacturer.Fields("厂商名称")等于Text15.Text

rs_manufacturer.Fields("联系人姓名")等于Text16.Text

rs_manufacturer.Fields("")等于Text17.Text

rs_manufacturer.Fields("厂商地址")等于Text18.Text

rs_manufacturer.Update

MsgBox"添加厂商成功",vbOKOnly+vbExclamation,""

rs_manufacturer.Close

Else

MsgBox"该编号已存在,请确认!",vbOKOnly+vbInformation,""

Text14.Text等于""

Text14.SetFocus

rs_manufacturer.Close

ExitSub

EndIf

EndSub

PrivateSubForm_Load()

Text9.Enabled等于False

Text10.Enabled等于False

Text11.Enabled等于False

Text12.Enabled等于False

Text9.Text等于Year(Date)

Text10.Text等于Month(Date)

Text11.Text等于Day(Date)

Text12.Text等于strs

EndSub

PrivateSubText2_Change()

'如果商品编号存在,则直接出现本商品的相关数据

str_goods等于"select*fromgoodswhere商品编号等于'"&,Text2.Text&,"'"

rs_goods.Openstr_goods,n,adOpenStatic,adLockOptimistic

Text3.Text等于rs_goods.Fields("商品名称")

Text4.Text等于rs_goods.Fields("生产厂商")

Text5.Text等于rs_goods.Fields("型号")

Text7.Text等于rs_goods.Fields("进货价")

Text8.Text等于rs_goods.Fields("销货价")

rs_goods.Close

EndSub

PrivateSubText6_Change()

'总金额的直接出现操作

IfText7.Text<,>,""Then

Text13.Text等于Val(Text6.Text)*Val(Text7.Text)

EndIf

EndSub

PrivateSubText7_Change()

'总金额的直接出现操作

IfText6.Text<,>,""Then

Text13.Text等于Val(Text6.Text)*Val(Text7.Text)

EndIf

EndSub

2.销货登记窗体

图4.5销货登记窗体

本窗体主要功能是对商品进行销售,首先对员工输入的销货信息进行完整条件的判断,条件符合后进行销售.然后将销售信息存入sell表,并对goods表的数量做相应修改.具体实现过程为:先在窗体集中定义两个记录集:rs_sell,rs_goods,用来控制两个数据表:sell表和goods表.在销货窗体中,如果用户输入的商品编号已经存在,则该商品的其它属性将随着text2(即商品编号)的Change事件出现在其对应的位置上.而销售日期和业务员编号已经是程序默认给出的系统时间和登陆员工的编号.在判断没有空缺属性后该商品将顺利添加如库,而且该商品在goods表中的数量也将随之做相应的改变,使goods表和sell表的总和保持原来goods表中的数量值.

销售按钮代码实现如下:

Dimrs_goodsAsNewADODB.Recordset

Dimrs_sellAsNewADODB.Recordset

Dimstr_goodsAsString

Dimstr_sellAsString

DimnumgoodsAsInteger

PrivateSubCommand1_Click()

IfText1.Text等于""Then

MsgBox"请填写销货编号!",vbOKOnly+vbInformation,"注意"

Text1.SetFocus

ExitSub

ElseIfText2.Text等于""Then

MsgBox"请填写商品编号!",vbOKOnly+vbInformation,"注意"

Text2.SetFocus

ExitSub

EndIf

str_goods等于"select*fromgoodswhere商品编号等于'"&,Text2.Text&,"'"

rs_goods.Openstr_goods,n,adOpenStatic,adLockOptimistic

Ifrs_goods.EOF等于TrueThen

MsgBox"对不起,此商品型号已无货!请选择其他型!",vbOKOnly+vbInformation,"注意"

rs_goods.Close

ExitSub

EndIf

rs_goods.Close

IfText11.Text等于""Then

MsgBox"请填写销货数量!",vbOKOnly+vbInformation,"注意"

Text11.SetFocus

ExitSub

EndIf

Text12.Text等于Val(Text6.Text)*Val(Text11.Text)

'下面是对销售表进行入库操作!

str_sell等于"select*fromsellwhere销货编号等于'"&,Text1.Text&,"'"

rs_sell.Openstr_sell,n,adOpenStatic,adLockOptimistic

Ifrs_sell.EOF等于TrueThen

rs_sell.AddNew

rs_sell.Fields("销货编号")等于Text1.Text

rs_sell.Fields("商品编号")等于Text2.Text

rs_sell.Fields("商品名称")等于Text3.Text

rs_sell.Fields("生产厂商")等于Text4.Text

rs_sell.Fields("型号")等于Text5.Text

rs_sell.Fields("单价")等于Text6.Text

rs_sell.Fields("销售年")等于Text7.Text

rs_sell.Fields("销售月")等于Text8.Text

rs_sell.Fields("销售日")等于Text9.Text

rs_sell.Fields("业务员编号")等于Text10.Text

rs_sell.Fields("数量")等于Val(Text11.Text)

rs_sell.Fields("总金额")等于Val(Text12.Text)

rs_sell.Fields("销售时")等于Text13.Text

rs_sell.Fields("销售分")等于Text14.Text

rs_sell.Fields("销售秒")等于Text15.Text

rs_sell.Update

rs_sell.Close

Else

MsgBox"此销货编号已存在,请重添!",vbOKOnly+vbInformation,"注意"

Text1.Text等于""

Text1.SetFocus

rs_sell.Close

ExitSub

EndIf

'下面是对商品库存表的减货操作!

str_goods等于"select*fromgoodswhere商品编号等于'"&,Text2.Text&,"'"

rs_goods.Openstr_goods,n,adOpenStatic,adLockOptimistic

numgoods等于rs_goods.Fields("数量")

rs_goods.Fields("数量")等于numgoods-Val(Text11.Text)

rs_goods.Update

rs_goods.Close

MsgBox"销售成功!",vbOKOnly+vbExclamation,"注意" ;

EndSub

3.退货窗体

图4.6退货窗体

本窗体的功能是实现商品退货功能,当人为判断某商品可以退货时即可将该商品退货.其数据库实现为:先将该信息加入retreat表,然后从sell表中减掉,最后对goods表的数量做一下调整即可.其具体实现过程是:先在窗体集中定义三个记录集:rs_sell,rs_goods,rs_retreat用来控制三个数据表:sell表,goods和retreat表.在退货窗体中,如果用户输入的销货编号存在,则关于该商品的销售信息将依次出现在相应的对话框中.退货成功后,该退货信息先添加到退货表,然后将其退货数量从相应的sell表中减掉,并添加到goods表中.


退货按钮的代码实现如下:

Dimrs_retreatAsNewADODB.Recordset

Dimrs_goodsAsNewADODB.Recordset

Dimrs_sellAsNewADODB.Recordset

Dimstr_retreatAsString

Dimstr_goodsAsString

Dimstr_sellAsString

DimnumsellAsInteger

DimnumgoodsAsInteger

DimcountsellAsInteger

PrivateSubCommand1_Click()

IfText1.Text等于""Then

MsgBox"请填写退货编号!",vbOKOnly+vbInformation,"注意"

Text1.SetFocus

ExitSub

ElseIfText2.Text等于""Then

MsgBox"请填写销货编号!",vbOKOnly+vbInformation,"注意"

Text2.SetFocus

ExitSub

ElseIfText11.Text等于""Then

MsgBox"请填写商品数量!",vbOKOnly+vbInformation,"注意"

Text11.SetFocus

ExitSub

EndIf

'下面是对销售表进行操作!

str_sell等于"select*fromsellwhere销货编号等于'"&,Text2.Text&,"'"

rs_sell.Openstr_sell,n,adOpenStatic,adLockOptimistic

Ifrs_sell.EOF等于TrueThen

MsgBox"对不起,没有销售此商品型号!无法退货!",vbOKOnly+vbInformation,"注意"

rs_sell.Close

ExitSub

ElseIfrs_sell.Fields("数量")<,Val(Text11.Text)Then

MsgBox"对不起,退货数量过大,无法退货!",vbOKOnly+vbInformation,"注意"

rs_sell.Close

ExitSub

EndIf

rs_sell.Close'加入退货表

str_retreat等于"select*fromretreatwhere退货编号等于'"&,Text1.Text&,"'"

rs_retreat.Openstr_retreat,n,adOpenStatic,adLockOptimistic

Ifrs_retreat.EOF等于TrueThen

rs_retreat.AddNew

rs_retreat.Fields("退货编号")等于Text1.Text

rs_retreat.Fields("销货编号")等于Text2.Text

rs_retreat.Fields("商品名称")等于Text3.Text

rs_retreat.Fields("生产厂商")等于Text4.Text

rs_retreat.Fields("型号")等于Text5.Text

rs_retreat.Fields("单价")等于Val(Text6.Text)

rs_retreat.Fields("退货年")等于Text7.Text

rs_retreat.Fields("退货月")等于Text8.Text

rs_retreat.Fields("退货日")等于Text9.Text

rs_retreat.Fields("业务员编号")等于Text10.Text

rs_retreat.Fields("数量")等于Val(Text11.Text)

rs_retreat.Fields("总金额")等于Val(Text12.Text)

rs_retreat.Update

rs_retreat.Close

Else

MsgBox"此退货编号已存在,请重添!",vbOKOnly+vbInformation,"注意"

Text1.Text等于""

Text1.SetFocus

rs_retreat.Close

ExitSub

EndIf

'从销售商品表中减去

str_sell等于"select*fromsellwhere销货编号等于'"&,Text2.Text&,"'"

rs_sell.Openstr_sell,n,adOpenStatic,adLockOptimistic

numsell等于rs_sell.Fields("数量")

countsell等于rs_sell.Fields("总金额")

rs_sell.Fields("数量")等于numsell-Val(Text11.Text)

rs_sell.Fields("总金额")等于countsell-Val(Text12.Text)

rs_sell.Update

rs_sell.Close

'加入现存商品表中

DimsqlAsString

sql等于"select*fromgoodswhere商品编号等于'"&,Text16.Text&,"'"

rs_goods.Opensql,n,adOpenStatic,adLockOptimistic

Ifrs_goods.EOF等于TrueThen

rs_goods.Close

str_goods等于"select*fromgoods"

rs_goods.Openstr_goods,n,adOpenStatic,adLockOptimistic'打开库存表

rs_goods.AddNew

rs_goods.Fields("商品编号")等于Text2.Text

rs_goods.Fields("商品名称")等于Text3.Text

rs_goods.Fields("生产厂商")等于Text4.Text

rs_goods.Fields("型号")等于Text5.Text

rs_goods.Fields("数量")等于Val(Text11.Text)

rs_goods.Fields("进货价")等于Val(Text7.Text)

rs_goods.Fields("销货价")等于Val(Text8.Text)

rs_goods.Update

MsgBox"退货成功",vbOKOnly+vbExclamation,""

rs_goods.Close'关闭库存表

Else

numgoods等于rs_goods.Fields("数量")

rs_goods.Fields("数量")等于Val(Text11.Text)+numgoods

rs_goods.Update

MsgBox"退货成功",vbOKOnly+vbExclamation,""

rs_goods.Close

EndIf

EndSub

PrivateSubCommand2_Click()

Text1.Text等于""

Text2.Text等于""

Text3.Text等于""

Text4.Text等于""

Text5.Text等于""

Text6.Text等于""

Text11.Text等于""

Text12.Text等于""

EndSub

PrivateSubForm_Load()

Text7.Text等于Year(Date)

Text8.Text等于Month(Date)

Text9.Text等于Day(Date)

Text3.Enabled等于False

Text4.Enabled等于False

Text5.Enabled等于False

Text6.Enabled等于False

Text7.Enabled等于False

Text8.Enabled等于False

Text9.Enabled等于False

Text10.Enabled等于False

Text12.Enabled等于False

Text13.Enabled等于False

Text14.Enabled等于False

Text15.Enabled等于False

Text16.Enabled等于False

EndSub

PrivateSubText11_Change()

IfText6.Text<,>,""Then

Text12.Text等于Val(Text6.Text)*Val(Text11.Text)

EndIf

EndSub

PrivateSubText2_Change()

str_sell等于"select*fromsellwhere销货编号等于 '"&,Text2.Text&,"'"

rs_sell.Openstr_sell,n,adOpenStatic,adLockOptimistic

Text3.Text等于rs_sell.Fields("商品名称")

Text4.Text等于rs_sell.Fields("生产厂商")

Text5.Text等于rs_sell.Fields("型号")

Text6.Text等于rs_sell.Fields("单价")

Text10.Text等于rs_sell.Fields("业务员编号")

Text13.Text等于rs_sell.Fields("销售年")

Text14.Text等于rs_sell.Fields("销售月")

Text15.Text等于rs_sell.Fields("销售日")

Text16.Text等于rs_sell.Fields("商品编号")

rs_sell.Close

EndSub

4.4进货,销货统计管理单元设计

1.进货统计菜单

图4.7进货统计菜单

进货统计菜单下有4个子菜单,分别是今日进货统计,本月进货统计,本季度进货统计,今年进货统计.由于他们的界面非常相似,本程序中使用了一个SSTab控件以选项卡的形式在一个窗体中实现以上4个子菜单.这样做使窗体显得更加美观.为项目添加了必要的控件之后,开始进行界面设计.先在窗体上添加一个SSTab控件,单击鼠标右键在快捷菜单中选择"属性"命令.将其选项卡的数目定为4个,标题分别为:今日进货,本月进货,本季度进货,本年度进货.由于每个选项卡的界面都一样,现以"今日进货"选项卡为例,加入两个datagrid控件,两个Adodc控件,一个Label控件,一个textbox控件和8个mand控件.其中两个Adodc的数据源连接都是才用的相对路径与sellsystem的buy表连接的,两个Adodc连接的SQL语句分别如下:

select*frombuy

select生产厂商,sum(总金额)as各厂商进货总金额frombuygroupby生产厂商.

其日进货实现代码如下:

PrivateSubmnBuyToday_Click()

frmBuyall.Text1.Enabled等于False

frmBuyall.SSTab1.Tab等于0

frmBuyall.SSTab1.TabEnabled(0)等于True

frmBuyall.SSTab1.TabEnabled(1)等于False

frmBuyall.SSTab1.TabEnabled(2)等于False

frmBuyall.SSTab1.TabEnabled(3)等于False

frmBuyall.Show

strbuy等于"select*frombuywhere进货年等于"&,inty&,"and进货月等于"&,intm&,"and进货日等于"&,intd&,""

rs_buy.Openstrbuy,n,adOpenKeyset,adLockPessimistic

frmBuyall.Adodc1.RecordSource等于strbuy

frmBuyall.Adodc1.Refresh

frmBuyall.DataGrid1.ReBind

Ifrs_buy.EOF等于TrueThen

frmBuyall.Adodc5.RecordSource等于strbuy

frmBuyall.Adodc5.Refresh

frmBuyall.DataGrid5.ReBind

MsgBox"您今日没有进货记录!",vbOKOnly+vbInformation,"注意"

frmBuyall.Command1.Enabled等于False

frmBuyall.Command2.Enabled等于False

frmBuyall.Command3.Enabled等于False

frmBuyall.Command4.Enabled等于False

frmBuyall.Command5.Enabled等于False

frmBuyall.Command6.Enabled等于False

frmBuyall.Command7.Enabled等于False

frmBuyall.Command8.Enabled等于False

rs_buy.Close

ExitSub

EndIf

rs_buy.Close

strfctotal等于"select生产厂商,sum(总金额)as各厂商进货总金额frombuywhere进货年等于"&,inty&,"and进货月等于"&,intm&,"and进货日等于"&,intd&,"groupby生产厂商"

rs_fctotal.Openstrfctotal,n,adOpenKeyset,adLockPessimistic

frmBuyall.Adodc5.RecordSource等于strfctotal

frmBuyall.Adodc5.Refresh

frmBuyall.DataGrid5.ReBind

rs_fctotal.Close

strtotal等于"selectsum(总金额)as进货总金额frombuywhere进货年等于"&,inty&,"and进货月等于"&,intm&,"and进货日等于"&,intd&,""

rs_total.Openstrtotal,n,adOpenKeysetm,adLockPessimistic

frmBuyall.Text1.Text等于rs_total.Fields("进货总金额")

rs_total.Close

'frmMain.Show

EndSub

2.销货统计菜单

图4.8销货统计菜单

销售统计菜单下有4个子菜单,分别是今日销货,本月销货,本季度销货,今年销货.由于它们的界面非常相似,本程序中使用一个SSTab控件以选项卡形式在一个窗体中实现4个子菜单.其界面设计和窗体说明与进货统计大同小异,也一样一个选项卡为例进行说明,现以"今日销货"为例:加入两个datagrid控件,两个Adodc控件,一个Label控件,一个textbox控件和8个mand控件.其中两个Adodc的数据源连接都是采用的相对路径与sell表连接的,两个Adodc连接的SQL语句分别如下:

select*fromsell

select生产厂商,sum(总金额)as各厂商销货总金额fromsellgroupby生产厂商.

其日销售代码实现如下:

PrivateSubmnSellToday_Click()

frmSellall.SSTab1.Tab等于0

frmSellall.Text1.Enabled等于False

frmSellall.SSTab1.TabEnabled(0)等于True

frmSellall.SSTab1.TabEnabled(1)等于False

frmSellall.SSTab1.TabEnabled(2)等于False

frmSellall.SSTab1.TabEnabled(3)等于False

frmSellall.Show

strsell等于"select*fromsellwhere销售年等于"&,inty&,"and销售月等于"&,intm&,"and销售日等于"&,intd&,""

rs_sell.Openstrsell,n,adOpenKeyset,adLockPessimistic

frmSellall.Adodc1.RecordSource等于strsell

frmSellall.Adodc1.Refresh

frmSellall.DataGrid1.ReBind

Ifrs_sell.EOF等于TrueThen

frmSellall.Adodc5.RecordSource等于strsell

frmSellall.Adodc5.Refresh

frmSellall.DataGrid5.ReBind

MsgBox"您今日没有销售记录!",vbOKOnly+vbInformation,"注意"

frmSellall.Command1.Enabled等于False

frmSellall.Command2.Enabled等于False

frmSellall.Command3.Enabled等于False

frmSellall.Command4.Enabled等于False

frmSellall.Command5.Enabled等于False

frmSellall.Command6.Enabled等于False

frmSellall.Command7.Enabled等于False

frmSellall.Command8.Enabled等于False

rs_sell.Close

ExitSub

EndIf

rs_sell.Close

strfctotal等于"select生产厂商,sum(总金额)as各厂商销售总金额fromsellwhere销售年等于"&,inty&,"and销售月等于"&,intm&,"and销售日等于"&,intd&,"groupby生产厂商"

rs_fctotal.Openstrfctotal,n,adOpenKeyset,adLockPessimistic

frmSellall.Adodc5.RecordSource等于strfctotal

frmSellall.Adodc5.Refresh

frmSellall.DataGrid5.ReBind

rs_fctotal.Close

strtotal等于"selectsum(总金额)as销售总金额fromsellwhere销售年等于"&,inty&,"and销售月等于"&,intm&,"and销售日等于"&,intd&,""

rs_total.Openstrtotal,n,adOpenKeysetm,adLockPessimistic

frmSellall.Text1.Text等于rs_total.Fiel ds("销售总金额")

rs_total.Close

EndSub

4.5查看数据表单元设计

1.查看进货表

图4.9查看进货表

其界面的设计比较简单,只是一个datagrid控件,一个Adodc控件(已隐藏)和四个Command控件.本窗体的主要设计在于其四个命令按纽在进货表为空时不可用.

2.商品仓库存表

图4.10商品仓库存表

本窗体的主要设计目的是设置一个查询商品库存表的条件.具体操作为:为查询现存商品表设立了一个简单的查询条件,一个是直接显示现存的全部商品表,一个是按条件对现存商品进行查询,用户可以根据自己需要按商品名称或生产厂商分别进行查找.该窗体的实现是要在窗体集的变量中设置一个记录集rs_goods,用来控制goods表,然后将记录集在打开窗体时的select语句设为与本窗体的text1和text2有关的SQL语句.然后让现存商品表显示出来.

3.管理员工表

图4.11管理员工表

本窗体的制作目的在于方便对管理员用户的管理,本节前面曾经提过系统初始化的功能,但其初始化并不能对员工表进行操作,当管理员登陆本系统时,可以访问此窗体,对用户表进行维护.但不能对管理员进行删除操作,此操作已被本人屏蔽.

4.6系统管理单元设计

1.更换用户功能

在一个超市可能会存在员工交接班的现象,为了方便用户交接班的操作顺利进行,在系统管理模块中做了一个更换用户子菜单,该子菜单便顺利的实现了此功能,而且它也方便了管理员的登陆管理.

2.修改

图4.12修改

为了方便用户使用,在本模块中还设置了一个修改窗体,该窗体主要包括一个用户名输入,一个原输入和两个新输入.此窗体实现的功能是显而易见的,方便了用户的操作,增加了系统使用的安全性.具体做法是:先要求用户将四个必填项填写完整,然后对两个新进行相同判断,如果相同,则将记录集rs_employee打开,对用户名和原进行核对,如果相同,就将老替换为新.

本节总结:对于本超市管理信息系统功能的实现,重点和难点有以下几处:交易管理模块:在本模块中,对于商品的进货,销货和退货操作时,都要注意其操作过程中商品数量及其它属性的变化,本人在制做此模块时,采用了指导教师提供给我的思想:进货登记时,将进货信息添加到进货表中.然后对商品库存表的编号进行判断,如果进货信息的商品编号存在,则将商品库存表中相应记录的商品数量做对应调整,如果商品编号不存在,则直接将进货信息添加到商品库存表中.销货登记时,先将商品的销货信息添加到销货表中,然后将商品库存表中响应的商品的数量做相对调整,保证商品数量的一致性.退货登记时将退货信息添加到退货表中,然后将退货数量从销售表中减掉,最后将退货数量加到商品库存表中.在本系统管理员登陆时,显示给管理员的第一个界面:系统初始化也是本系统的又一大功能特色,其实现过程中要严格控制每一个记录集对相应数据表的打开与关闭操作.

第五章系统测试与设计要点

5.1本次毕业设计的重点,难点,与创新点

本人通过概述设计过程来说明本次毕业设计的重点,难点,与创新点,这样反而使读者更容易明白.

1.如何确立目标:对信息进行日常业务的需要.高效性通过系统的实用,能够改变旧的管理模式,使对的管理,更加方便有效.2测试实例的选择研究

1.安全性测试.登陆系统时,选择使用者输入错误看系统是否能够提示错误,并提示用户重新输入.

测试结果:能够实现以上目标,系统安全性好.

测试效果如图5.1:

图5.1安全测试

2.数据库完整性,一致性测试.选择超级管理员登陆系统后,对超市进行管理操作,看是否能够实现数据的添加,删除,查询.当数据输入不完整或者不一致时看系统是否能够提示数据错误.选择数据备份和恢复,看系统是否能够实现对数据备份和恢复.

测试结果:能够实现以上操作,系统数据比较完整,一致性强.

(1)一致性效果如图5.2所示.

图5.2一致性测试

(2)完整性测试如图5.3所示.

图5.3完整性测试

3.运行稳定测试:运行系统后,打开Windows的任务管理器的进程管理,查看本系统内存占有量.

测试结果:本系统能够在所有操作环境中稳定运行,内存占有量为9600k.

图5.4稳定测试

5.3测试环境

测试环境:

硬件:

PC机(奔3CPU,128M内存,64M显卡,40G硬盘)

软件:

操作系统:Windows98/2000/XP

5.4测试结果及测试结果分析

本系统的管理功能全面,性能稳定,可以有效的实现入库管理,出库管理及库存管理功能,从而改善了超市管理信息系统的服务质量,解决了以前单凭手工操作的麻烦,避免了易出错,难查询的数据库问题.系统最大的特点就是可以连续不断的稳定运行,有很强的可靠性,准确性,易操作性.企业可以快速的注册,也可根据其他的信息快速的查询到自己的进货,销货信息.管理员管理机制,提高了本系统的安全性,可靠性,实用性.同时,超市管理模块可以快速进货销货,以最快和最准确的动作完成新货入库,库存管理及销售.全面的管理系统可以让超市的状况一目了然!

本系统操作上简洁方便,界面上直观易懂.用户对本系统功能几分钟的样子就可以熟练的操作.这样就大大的减少了操作所花的时间,将给企业管理来意想不到的经济效益和社会效益,,增加企业收入.与以前手工操作相比较,该系统带来的效率远远大于手工.

总结

本次超市管理信息系统是基于VisualBasic的ADO技术设计的.选择了Access2000作为后端开发工具,开发数据库功能,并选择了VisualBasic6.0作为界面前台开发工具.在该系统开发中我通过建立数据库,以及对各种信息库的开发(如:添加,查询,修改,删除)及设计系统维护安全部分,完成了此次对超市信息管理系统的设计.

在本次的开发过程中,我意识到最重要的环节在于对系统的流程,功能模块,框架结构等方面的把握和设计.在需求分析结束以后,我们对一个系统需要具有哪些功能已经有了一定的认识,而如何以一个简洁,合理的系统结构去实现用户要求的功能就成为系统开发的关键环节.在这方面我可以说是深有体会.由于有些急于求成,在对ADO技术不是很了解的情况下就开始着手程序开发,所以当有时间静下来仔细理一下思路的时候发现走了很大的弯路,可以说是整个思路和设计要求有着非常大的差异.值得庆幸的是,发现的比较及时,还有足够的时间让我转变思路,从头开始.因此,通过这次超市管理信息系统的开发,我深刻认识到系统分析,以及对整个系统的总体设计的重要性.只有走好了这一步,整个系统的开发才能事半功倍,否则就会是"棋差一着,满盘皆输".

同时,在这次的系统开发中我也看到了自己在新知识的学习,新工具的应用方面的不足.开始时,我对VisualBasic和Access可以说只是停留在书面上的了解,还不够深入透彻.系统的开发过程也就成为我对这两种开发工具的深入透彻学习的过程.正因为这样,所以在设计过程中往往会被一些问题卡住.在原地徘徊了一段时间后,我通过查找参考资料,和同学交流,利用互联网向有经验的编程人员请教等各种方式试着克服在设计过程中遇到的困难.随着开发设计的深入,我也逐渐掌握了一部分编程技巧,了解了一些关于编程方面的规律,一些困难也就迎刃而解了.

经过一个多月的设计和开发,超市管理信息系统基本开发完毕.其功能基本符合用户需求,能够实现品质检测的基本信息的录入,更新,修改,删除,查询等基本功能,从而实现产品检测的管理.对于数据的一致性的问题也通过程序进行了有效的解决.但是由于毕业设计时间较短,所以该系统还有许多不尽如人意的地方,比如联机文档比较少,用户界面不够美观,出错处理不够等多方面问题.这些都有待进一步改善.

致谢

在本次毕业设计中,我从指导老师方霞老师身上学到了很多东西.方老师认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅.她无论在理论上 还是在实践中,都给与我很大的帮助,使我得到不少的提高,这对于我以后的工作和学习都有一种巨大的帮助,感谢她耐心的辅导.

另外,在系统开发过程中助手同学也给于我很大的帮助,帮助我解决了不少的难点,使得系统能及时开发完成,还有同组的同学同样给与我不少帮助,这里一并表示感谢.

5;total.Close

EndSub

PrivateSubmnBuyQuarterly_Click()

frmBuyall.Text3.Enabled等于False

frmBuyall.SSTab1.Tab等于2

frmBuyall.SSTab1.TabEnabled(0)等于False

frmBuyall.SSTab1.TabEnabled(1)等于False

frmBuyall.SSTab1.TabEnabled(2)等于True

frmBuyall.SSTab1.TabEnabled(3)等于False

frmBuyall.Show

SelectCaseintm

CaseIs<,4

intm等于3

CaseIs<,7

intm等于6

CaseIs<,10

intm等于9

CaseIs>,10

intm等于12

EndSelect

strbuy等于"select*frombuywhere进货年等于"&,inty&,"and进货月between"&,(intm-2)&,"and"&,intm&,""

rs_buy.Openstrbuy,n,adOpenKeyset,adLockPessimistic

frmBuyall.Adodc2.RecordSource等于strbuy

frmBuyall.Adodc2.Refresh

frmBuyall.DataGrid2.ReBind

Ifrs_buy.EOF等于TrueThen

frmBuyall.Adodc6.RecordSource等于strbuy

frmBuyall.Adodc6.Refresh

frmBuyall.DataGrid6.ReBind

MsgBox"您本季度没有进货记录!",vbOKOnly+vbInformation,"注意"

frmBuyall.Command17.Enabled等于False

frmBuyall.Command18.Enabled等于False

frmBuyall.Command19.Enabled等于False

frmBuyall.Command20.Enabled等于False

frmBuyall.Command21.Enabled等于False

frmBuyall.Command22.Enabled等于False

frmBuyall.Command23.Enabled等于False

frmBuyall.Command24.Enabled等于False

rs_buy.Close

ExitSub

EndIf

rs_buy.Close

strfctotal等于"select生产厂商,sum(总金额)as各厂商进货总金额frombuywhere进货年等于"&,inty&,"and进货月between"&,(intm-2)&,"and"&,intm&,"groupby生产厂商"

rs_fctotal.Openstrfctotal,n,adOpenKeyset,adLockPessimistic

frmBuyall.Adodc6.RecordSource等于strfctotal

frmBuyall.Adodc6.Refresh

frmBuyall.DataGrid6.ReBind

rs_fctotal.Close

strtotal等于"selectsum(总金额)as进货总金额frombuywhere进货年等于"&,inty&,"and进货月between"&,(intm-2)&,"and"&,intm&,""

rs_total.Openstrtotal,n,adOpenKeysetm,adLockPessimistic

frmBuyall.Text3.Text等于rs_total.Fields("进货总金额")

rs_total.Close

intm等于Month(Date)

EndSub

PrivateSubmnBuyTable_Click()

frmBuyTable.Show

EndSub

PrivateSubmnBuyToday_Click()

frmBuyall.Text1.Enabled等于False

frmBuyall.SSTab1.Tab等于0

frmBuyall.SSTab1.TabEnabled(0)等于True

frmBuyall.SSTab1.TabEnabled(1)等于False

frmBuyall.SSTab1.TabEnabled(2)等于False

frmBuyall.SSTab1.TabEnabled(3)等于False

frmBuyall.Show

strbuy等于"select*frombuywhere进货年等于"&,inty&,"and进货月等于"&,intm&,"and进货日等于"&,intd&,""

rs_buy.Openstrbuy,n,adOpenKeyset,adLockPessimistic

frmBuyall.Adodc1.RecordSource等于strbuy

frmBuyall.Adodc1.Refresh

frmBuyall.DataGrid1.ReBind

Ifrs_buy.EOF等于TrueThen

frmBuyall.Adodc5.RecordSource等于strbuy

frmBuyall.Adodc5.Refresh

frmBuyall.DataGrid5.ReBind

MsgBox"您今日没有进货记录!",vbOKOnly+vbInformation,"注意"

frmBuyall.Command1.Enabled等于False

frmBuyall.Command2.Enabled等于False

frmBuyall.Command3.Enabled等于False

frmBuyall.Command4.Enabled等于False

frmBuyall.Command5.Enabled等于False

frmBuyall.Command6.Enabled等于False

frmBuyall.Command7.Enabled等于False

frmBuyall.Command8.Enabled等于False

rs_buy.Close

ExitSub

EndIf

rs_buy.Close

strfctotal等于"select生产厂商,sum(总金额)as各厂商进货总金额frombuywhere进货年等于"&,inty&,"and进货月等于"&,intm&,"and进货日等于"&,intd&,"groupby生产厂商"

rs_fctotal.Openstrfctotal,n,adOpenKeyset,adLockPessimistic

frmBuyall.Adodc5.RecordSource等于strfctotal

frmBuyall.Adodc5.Refresh

frmBuyall.DataGrid5.ReBind

rs_fctotal.Close

strtotal等于"selectsum(总金额)as进货总金额frombuywhere进货年等于"&,inty&,"and进货月等于"&,intm&,"and进货日等于"&,intd&,""

rs_total.Openstrtotal,n,adOpenKeysetm,adLockPessimistic

frmBuyall.Text1.Text等于rs_total.Fields("进货总金额")

rs_total.Close

EndSub

PrivateSubmnBuyYear_Click()

frmBuyall.Text4.Enabled等于False

frmBuyall.SSTab1.Tab等于3

frmBuyall.SSTab1.TabEnabled(0)等于False

frmBuyall.SSTab1.TabEnabled(1)等于False

frmBuyall.SSTab1.TabEnabled(2)等于False

frmBuyall.SSTab1.TabEnabled(3)等于True

frmBuyall.Show

strbuy等于"select*frombuywhere进货年等于"&,inty&,""

rs_buy.Openstrbuy,n,adOpenKeyset,adLockPessimistic

frmBuyall.Adod.RecordSource等于strbuy

frmBuyall.Adod.Refresh

frmBuyall.DataGrid4.ReBind

Ifrs_buy.EOF等于TrueThen

frmBuyall.Adodc8.RecordSource等于strbuy

frmBuyall.Adodc8.Refresh

frmBuyall.DataGrid8.ReBind

MsgBox"您今年没有进货记录!",vbOKOnly+vbInformation,"注意"

frmBuyall.Command25.Enabled等于False

frmBuyall.Command26.Enabled等于False

frmBuyall.Command27.Enabled等于False

frmBuyall.Command28.Enabled等于False

frmBuyall.Command29.Enabled等于False

frmBuyall.Command30.Enabled等于False

frmBuyall.Command31.Enabled等于False

frmBuyall.Command32.Enabled等于False

rs_buy.Close

ExitSub

EndIf

rs_buy.Close

strfctotal等于"select生产厂商,sum(总金额)as各厂商进货总金额frombuywhere进货年等于"&,inty&,"groupby生产厂商"

rs_fctotal.Openstrfctotal,n,adOpenKeyset,adLockPessimistic

frmBuyall.Adodc8.RecordSource等于strfctotal

frmBuyall.Adodc8.Refresh

frmBuyall.DataGrid8.ReBind

rs_fctotal.Close

strtotal等于"selectsum(总金额)as进货总金额 frombuywhere进货年等于"&,inty&,""

rs_total.Openstrtotal,n,adOpenKeysetm,adLockPessimistic

frmBuyall.Text4.Text等于rs_total.Fields("进货总金额")

rs_total.Close

EndSub

PrivateSubmnChangeEmployee_Click()

n.Close

frmLogin.Show

UnloadMe

EndSub

PrivateSubmnChangePwd_Click()

frmChangePwd.Show

EndSub

PrivateSubmnEmployeeTable_Click()

frmEmployeeTable.Show

EndSub

PrivateSubmnExit_Click()

n.Close

UnloadMe

EndSub

PrivateSubmnGoodsTable_Click()

frmShowGoodstable.Show

EndSub

PrivateSubmnlogin_Click()

frmLogin.Show

EndSub

PrivateSubmnManufacturerTable_Click()

frmManufacturerTable.Show

EndSub

PrivateSubmnRetreat_Click()

frmRetreatgoods.Show

EndSub

PrivateSubmnRetreatTable_Click()

frmRetreatTable.Show

EndSub

PrivateSubmnSell_Click()

frmSellgoods.Show

EndSub

PrivateSubmnSellMonth_Click()

frmSellall.SSTab1.Tab等于1

frmSellall.Text2.Enabled等于False

frmSellall.SSTab1.TabEnabled(0)等于False

frmSellall.SSTab1.TabEnabled(1)等于True

frmSellall.SSTab1.TabEnabled(2)等于False

frmSellall.SSTab1.TabEnabled(3)等于False

frmSellall.Show

strsell等于"select*fromsellwhere销售年等于"&,inty&,"and销售月等于"&,intm&,""

rs_sell.Openstrsell,n,adOpenKeyset,adLockPessimistic

frmSellall.Adodc2.RecordSource等于strsell

frmSellall.Adodc2.Refresh

frmSellall.DataGrid2.ReBind

Ifrs_sell.EOF等于TrueThen

frmSellall.Adodc6.RecordSource等于strsell

frmSellall.Adodc6.Refresh

frmSellall.DataGrid6.ReBind

MsgBox"您本月没有销售记录!",vbOKOnly+vbInformation,"注意"

frmSellall.Command9.Enabled等于False

frmSellall.Command10.Enabled等于False

frmSellall.Command11.Enabled等于False

frmSellall.Command12.Enabled等于False

frmSellall.Command13.Enabled等于False

frmSellall.Command14.Enabled等于False

frmSellall.Command15.Enabled等于False

frmSellall.Command16.Enabled等于False

rs_sell.Close

ExitSub

EndIf

rs_sell.Close

strfctotal等于"select生产厂商,sum(总金额)as各厂商销售总金额fromsellwhere销售年等于"&,inty&,"and销售月等于"&,intm&,"groupby生产厂商"

rs_fctotal.Openstrfctotal,n,adOpenKeyset,adLockPessimistic

frmSellall.Adodc6.RecordSource等于strfctotal

frmSellall.Adodc6.Refresh

frmSellall.DataGrid6.ReBind

rs_fctotal.Close

strtotal等于"selectsum(总金额)as销售总金额fromsellwhere销售年等于"&,inty&,"and销售月等于"&,intm&,""

rs_total.Openstrtotal,n,adOpenKeysetm,adLockPessimistic

frmSellall.Text2.Text等于rs_total.Fields("销售总金额")

rs_total.Close

EndSub

PrivateSubmnSellQuarterly_Click()

frmSellall.SSTab1.Tab等于2

frmSellall.Text3.Enabled等于False

frmSellall.SSTab1.TabEnabled(0)等于False

frmSellall.SSTab1.TabEnabled(1)等于False

frmSellall.SSTab1.TabEnabled(2)等于True

frmSellall.SSTab1.TabEnabled(3)等于False

frmSellall.Show

SelectCaseintm

CaseIs<,4

intm等于3

CaseIs<,7

intm等于6

CaseIs<,10

intm等于9

CaseIs>,10

intm等于12

EndSelect

strsell等于"select*fromsellwhere销售年等于"&,inty&,"and销售月between"&,(intm-2)&,"and"&,intm&,""

rs_sell.Openstrsell,n,adOpenKeyset,adLockPessimistic

frmSellall.Adodc2.RecordSource等于strsell

frmSellall.Adodc2.Refresh

frmSellall.DataGrid2.ReBind

Ifrs_sell.EOF等于TrueThen

frmSellall.Adodc6.RecordSource等于strsell

frmSellall.Adodc6.Refresh

frmSellall.DataGrid6.ReBind

MsgBox"您本季度没有销售记录!",vbOKOnly+vbInformation,"注意"

frmSellall.Command17.Enabled等于False

frmSellall.Command18.Enabled等于False

frmSellall.Command19.Enabled等于

类似论文

体育系文题目江苏省,体育系文题目2023年

关于征集体育教学论文参加2016年江苏省优秀教学论文评选的通知各中小学校:根据江苏省教育厅教研室《关于评选2016年江苏省。
更新日期:2024-4-28 浏览量:60202 点赞量:14369

初中历史小文题目2023年

善陶〔2016〕9号关于公布新居民子女学校教师教学论文和案例评比结果的通知全县各新居民子女学校,公办结对学校:根据善陶〔2016〕4。
更新日期:2024-6-19 浏览量:80969 点赞量:17780

德语毕业文题目2023年,德语毕业文题目完整版

国立成功大学策略联盟选送优秀人才赴他国顶尖大学修读博士学位申请文件(封面)申请选送之国外合作学校:美国加州大学柏克莱分校申请人签。
更新日期:2024-10-6 浏览量:21398 点赞量:6719

德语语言学文题目2023年

湘潭大学2016年推免生复试科目(笔试)学科专业代码,名称及研究方向考试科目代码及名称050201英语语言文学01英语文学02西方文论和比较文学050。
更新日期:2024-5-26 浏览量:69645 点赞量:15510

影视文学文题目2023年版

附件2016年省外普通高校艺术类在粤招生校考专业一览表院校代码院校名称校考专业层次考试科目是否涉及省统考10003清华大学美术学类本科色彩,。
更新日期:2024-3-15 浏览量:43531 点赞量:10158