《超市管理系统的设计和实现.doc》由会员分享,可在线阅读,更多相关《超市管理系统的设计和实现.doc(45页珍藏版)》请在三一办公上搜索。
1、目 录摘 要Abstract第1章 概 论11.1现状概述31.2 发展前景31.3可行性分析4第2章 系统需求分析52.1 系统功能需求描述52.1.1基本信息管理功能52.1.2商品信息管理功能52.1.3销售操作管理功能52.1.4统计查询管理功能6第3章 总体设计73.1 功能模块划分73.2 系统流程分析8第4章 系统详细设计及实现94.1 数据库设计94.1.1创建数据库94.1.2 数据库逻辑结构设计104.2 功能模块设计及实现144.2.1设计工程框架144.2.2系统主界面设计214.2.3登录模块设计224.2.4供应商管理模块设计234.2.5 用户管理模块设计264.
2、2.6 商品管理模块设计304.2.7销售操作管理模块324.2.8统计查询管理模块设计35第5章 系统性能测试385.1软件测试概述385.2测试本系统385.2.1 通过单元测试本系统:385.3 测试结果39结束语40致 谢41参考文献42第1章 概 论1.1现状概述随着人们的生活水平和消费水平的提高,超市已成为我们生活中不可缺少的一部分。随着经济文化水平的显著提高,人们对生活质量及工作环境的要求也越来越高。随着社会经济的迅速发展和科学技术的全面进步,计算机事业的飞速发展,以计算机与通信技术为基础的信息系统正处于蓬勃发展的时期。将计算机这一信息处理利器应用于超市的日常管理已是势必所然,与
3、此同时,为了管理大量的超市商品,超市商品超市也大量的出现,超市的管理问题也就提上了日程。随着超市商品的大量增加,其管理难度也越来越大,如何优化超市的日常管理也就成为了一个大众化的课题。在计算机飞速发展的今天,将计算机这一信息处理利器应用于超市的日常管理已是势必所然,而且这也将为超市管理带来前所未有的改变,它可以带来意想不到的效益,同时也会为企业的飞速发展提供无限潜力。采用计算机管理信息系统已成为超市管理科学化和现代化的重要标志,它给企业管理来了明显的经济效益和社会效益。主要体现在:极大提高了超市工作人员的工作效率,大大减少了以往入出存流程繁琐,杂乱,周期长的弊端2。基于超市管理的全面自动化,可
4、以减少入库管理、出库管理及库存管理中的漏洞,可以节约不少管理开支,增加企业收入。超市的管理的操作自动化和信息的电子化,全面提高了超市的管理水平。随着我国改革开放的不断深入,经济飞速的发展,企业要想生存、发展,要想在激烈的市场竞争中立于不败之地,没有现代化的管理是万万不行的,超市管理的全面自动化、信息化则是其中极其重要的部分。为了加快超市管理自动化的步伐,提高超市的管理业务处理效率,建立超市管理系统已变得十分心要。入库、库存、出库还是现在企业超市管理的常规基本模式,虽然,最近又出现了很多新的管理模式,如:基于零库存思想的沃尔玛特管理方式,但这些新的思想在中国大部分企业的管理中还是难以实现的。所以
5、如何设计好超市管理系统,尽可能地减少超市管理的重复性和低效性就成为当前最为重要的问题。超市供销管理的核心是入库、库存和出库之间的联系,如何处理好三者之间的关系是系统最为关键的部分。另外,经办人信息和厂家信息管理也是超市管理中一个必不可少的部分,它提供着与入库和出库相关的地一些信息,使得整个系统更加完整,更加实用。通过对超市管理日常工作的详细调查,搜集了大量的资料,从系统结构的组织,功能的实现,技术的要求以及可行性等多方面进行考虑,认为本课题是一个适应现今超市管理需求的计算机信息管理系统,具有一定的实际开发价值和使用价值。1.2 发展前景明天,我们怎样在超市购物?当然,未来的超市还会有小推车、还
6、会有一排排摆满商品的货架,但你购物的体验将完全不同。IBM零售业解决方案部全球总经理汤姆彼得森近日在上海为记者展示了一段未来超市购物的“现场版”在美国马萨诸塞州,已经有人这样在超市购物了。走进一家名为“停车购买”的大卖场,购物者得到的小手推车的把手上装着一台平板电脑,同时,你会拿到一张会员卡和一个类似于无线红外扫描仪之类的东西。扫描一下你的卡,手推车上平板电脑的屏幕上就会出现你在这家店购物的“历史记录”,电脑甚至提醒你,该买鸡蛋或者餐巾纸了,或者告诉你,你每次都购买的某某品牌的商品现在有优惠。在屏幕上触摸一下,整个超市的货架平面图跃然屏上,屏幕上同时显示你当前的位置,想去买什么,按图索骥就行了
7、。如果你是个连左右都不分的路盲,还是有办法在面积巨大的超市里顺利找到你想要的商品。来到货架前,这个货架的最上面一层并没堆放货物,而是几块电脑触摸屏,在上面查询到你想要的商品后,从你的头顶会有一束光打到脚下,例如你想买奶粉,就会投下三个光柱:脱脂奶粉、无糖奶粉和标准奶粉。踩上“脱脂奶粉”的那个圆点,奇迹发生了:以这个小圆点为起点,出现了一串光束投影在地上的脚印,只要踩着这些脚印走,你就能走到自己所需要的商品面前!感觉像是科幻小说,但在全球17个地方,IBM已经开始实验这样的信息化零售系统,据悉,到明年年底前,在美国将有170家“停车购买”的门店应用上面提到的那套系统。据透露,IBM正在上海兴建其
8、亚太区零售业解决方案展示中心,集中展示全球最先进的零售业信息技术以及针对中国的市场解决方案。此外,IBM明年还将与复旦大学合作建立一个“零售体验创新中心”,到那时,我们可以在上海亲身体验不可思议的购物经历。1.3可行性分析为了提高超市管理自动化进程,降低员工的劳动强度,缩短劳动时间,使超市管理更科学,更快捷,我们开发了这个小型超市管理系统。1.整个系统能在586以上的通用微机上运行;2.操作系统环境为Windows95/98或Windows NT 3.51以上的版本;3.系统工作模式采用C/S;4.数据库采用SQL Server 2000,用Microsoft公司的Visual Basic 6
9、.0版作为软件开发工具;从可维护性分析:1.采用“所见即所得”得Windows视窗界面,便于操作;2.系统具有良好得安全保护措施及高可靠性与稳定性。从社会效应和经济效应分析:1、 超市的管理的操作自动化和信息的电子化,全面提高了超市的管理水平和经营效益。即方便了超市的管理者又方便了消费者。2、 由于小型超市的经济实力有限,着重考虑了经济问题。尽量降低成本、节约开支、提高效率。因此,综合上述超市管理系统的方案是可行的。第2章 系统需求分析2.1 系统功能需求描述本系统所描述的超市管理系统的主要功能包括:基本信息管理功能商品信息管理功能销售操作管理功能统计查询管理功能2.1.1基本信息管理功能基本
10、信息包括供应商信息、会员信息、用户信息。a. 供应商信息包括供应商单位名称、商品和联系人等信息,在入库时需要提供供应商的信息。b. 会员信息包括会员编号、会员名字、积分等信息,在购买商品时会员享受折扣时需要用到。c. 用户信息包括用户名、密码、用户类型等信息。在登录窗口中,根据用户名,判断用户的类型后,根据用户的权限打开相应得用户信息窗口。基本信息模块可以实现以下的功能:1. 供应商信息的录入、修改和删除;2. 会员信息的录入、修改和删除;3. 用户信息的录入、修改和删除。2.1.2商品信息管理功能系统需要对库存商品进行分类管理,用户可以创建和编辑商品类目。本系统采用二级商品类目的方法,一级类
11、目描述商品所属的大致类别,例如日用品、电器、食品等;二级类目则在以及类目的基础上,对商品进行细致的划分,例如食品又可划分为素菜类、荤菜类、水果类、熟食类、南食类等。商品信息管理可以实现以下功能:1. 商品类目的录入(包括商品类目编号、类目名称和类目级别等信息),修改和删除;2. 商品信息的录入(包括商品编号、所属类目、商品名称和商品价格等信息),修改和删除。2.1.3销售操作管理功能销售操作包括入库和销售两个部分。其中入库操作由经理执行,销售由收银员执行。1. 入库操作入库操作需记录相关商品信息、供应商信息、经办人、涉及金额和入库时间等信息。2. 销售操作销售操作需记录相关商品的信息、库存信息
12、、经办人、涉及金额和销售时间、折扣等信息2.1.4统计查询管理功能统计查询管理模块可以对库存商品进行各种类型的统计和查询,从而使用户能全面地了解库存情况。本模块可以实现以下的功能:1. 商品入库统计报表2. 商品销售报表3. 库存商品统计报表第3章 总体设计3.1 功能模块划分从功能描述的内容可以看到,本系统可以实现4个完整的功能。根据这些功能,设计出的系统功能模块如图3-1所示。基本信息管理会员信息管理用户信息管理商品信息管理生成商品入库统计报表生成库存商品统计报表销售操作管理超市管理系统入库操作管理供应商信息管理商品类目管理生成商品销售统计报表商品信息管理销售操作管理理统计查询管理图3-1
13、 超市管理系统功能模块示意图在功能模块示意图的树状结构图中,每一个叶结点都是一个最小的功能模块。每一个功能模块都需要针对不同的表完成相同的数据库操作,即添加记录、修改记录、删除记录、以及查询显示记录。3.2 系统流程分析所谓的系统流程就是用户在使用系统时的工作过程。多用户系统的工作流程是从用户登录开始的,对用户身份进行认证。身份认证可以分为以下两个过程:1 确认用户是否为有效的系统用户2 确定用户类型第一个过程决定用户能否进入系统。第二个过程决定用户的操作权限,从而决定用户的工作界面。本系统的流程分析如图3-2 所示 图3-2 系统流程分析图在系统流程分析图中可以看到,每个用户有3次机会进行身
14、份认证。如果3次输入的用户名和密码都无法与数据库中的数据匹配,则强制退出系统。第4章 系统详细设计及实现4.1 数据库设计4.1.1创建数据库在设计数据库表结构前,首先需创建一个数据库。本系统的数据库为Supermarket。可以在企业管理器中创建,也可以在查询分析器中执行以下Transact-SQL语句:USE masterGOCREATE DATABASE SupermarketONPRIMARY ( NAME = Supermarket1, FILENAME = E:study毕业设计超市dataSupermarketData1.mdf, SIZE = 10MB, MAXSIZE = 2
15、00, FILEGROWTH = 2),( NAME = Supermarket2, FILENAME = E:study毕业设计超市dataSupermarketData2.ndf, SIZE = 10MB, MAXSIZE = 200, FILEGROWTH = 2),( NAME = Supermarket3, FILENAME = E:study毕业设计超市dataSupermarketData3.ndf, SIZE = 10MB, MAXSIZE = 200, FILEGROWTH = 2)LOG ON ( NAME = SupermarketLog1, FILENAME = E:s
16、tudy毕业设计超市dataSupermarketLog1.ldf, SIZE = 1MB, MAXSIZE = 20, FILEGROWTH = 1),( NAME = SupermarketLog2, FILENAME = E:study毕业设计超市dataSupermarketLog2.ldf, SIZE = 1MB, MAXSIZE = 2, FILEGROWTH = 1)GO其中E:study毕业设计超市data是创建数据库的地址。4.1.2 数据库逻辑结构设计数据库Supermarket包含以下8个表:供应商信息表Client、会员信息表Member、用户信息表Users 、商品类
17、目表ProType、商品信息表Product 、 销售操作信息表 Sale、 库存商品信息表 Stock、 入库操作信息表 Storein。下面分别介绍这些表的结构。并且由于要产生报表,还包含了4个视图:v_storein、v_Sale、v_stock、Report3。1. 供应商信息表Client供应商信息表Client用来保存供应商信息,结构如表4-1所示:表4-1 供应商信息表其中ClientId是供应商编号,ClientName是供应商名称,ClientType 是供应商类型,Contact是联系人,Address是地址,Postcode 是邮政编码,Phone 是联系电话,Fax 是
18、传真。2. 会员信息表Member会员信息表Member用来保存会员顾客信息,结构如表4-2所示:表4-2 会员信息表其中MemberId 是会员编号,MemberName 是会员姓名,Address是地址,Phone 是联系电话,Score 是会员积分。3. 用户信息表Users用户信息表Users用来保存用户信息,结构如表4-3所示:表4-3 用户信息表UserName 是用户名,Pwd 是密码,UserType 是用户类型,EmpName 是员工姓名。4. 商品类目表ProType商品类目表ProType用来保存商品类目信息,结构如表4-4所示:表4-4 商品类目表其中TypeId 是类
19、型编号,TypeName 是类型名,UpperId 是上级类型编号。5. 商品信息表Product商品信息表Product用来保存商品基本信息,结构如表4-5所示:表4-5 商品信息表 其中ProId 是商品编号, ProName 是商品名称,TypeId 是商品类型编号,ProStyle 是商品规格,ProUnit 是计量单位,ProLow 是商品数量下限,ProHigh 是商品数量上限,ProPrice是价格(总计15个字节,小数部分2个字节)。6. 销售操作信息表 Sale销售操作信息表 Sale用来保存销售操作信息,结构如表4-6所示:表4-6销售操作信息表其中SaleId是销售编号,
20、OptDate是销售日期,EmpName是经手人名,ProId是商品编号,ProName是商品名称,TypeId是商品类型编号,ProPrice是商品单价,ProNum是单件商品数量,SumNum是商品总数量,MemberId是会员编号,SumPrices是商品总价,Discount 是会员折扣,Remark是备注。7. 库存商品信息表 Stock库存商品信息表 Stock用来保存库存商品信息,结构如表4-7所示:表4-7库存商品信息表其中StoreProId是产品存储编号(自动编号),ProId是商品编号,ProName是商品名称,ProPrice是商品入库单价,ProNum是单件商品数量,
21、TypeId是商品类型编号,SumNum是商品总数量,Describe 是简单描述。8. 入库操作信息表 Storein入库操作信息表 Storein用来保存入库信息,结构如表4-8所示:表4-8入库操作信息表其中StoreinId是入库编号,ProId是入库产品编号,CreateDate Char是生产日期,ProPrice是入库产品单价,ProNum是入库产品数量,ClientId是供应商编号,EmpName是经办人,OptDate 是入库日期。9. 视图v_storeinv_storein的作用是对每种商品统计入库的总数量。结构如图4-1:图4-1 入库视图10. 视图v_Salev_S
22、ale的作用是对每种商品统计销售的总数量和总金额。结构如图4-2:图4-2 销售视图11. 视图v_stockv_stock的作用是对每种商品统计库存总数。结构如图4-3所示:图 4-3 库存视图12. 视图 Report3Report3的作用是统计商品入库和销售的流水记录。代码如下:SELECT StoreinId, ProId, ProPrice, ProNum, ClientId, EmpNameFROM storeinUNIONSELECT SaleId, ProId, ProPrice, ProNum, (ProPrice * ProNum) AS SumPrices, EmpNam
23、eFROM sale4.2 功能模块设计及实现4.2.1设计工程框架首先创建一个名为Supermarket的新工程,并保存生成Supermarket.vbp文件。设主窗体为FormMain.frx。1. 添加模块根据分析创建以下几个模块:1) Const 用来管理工程中的常量;2) DbFunc 用来管理工程中与数据库操作相关的声明、变量和函数;3) GeneralFunc 用来管理工程中一些通用的自定义函数;4) Variable 用来管理工程中的全局变量。(1) Const 模块代码:数据库访问常量Public Const SQL_C_CHAR As Long = 1Public Cons
24、t SQL_COLUMN_LABEL As Long = 18Public Const SQL_DROP As Long = 1Public Const SQL_DRROR As Long = -1Public Const SQL_NO_DATA_FOUND As Long = 100Public Const SQL_SUCCESS As Long = 0Public Const SQL_SUCCESS_WITH_INFO As Long = 1Public Const SQL_ATTR_MAX_LENGTH As Long = 100数据源信息常量Public Const DATABASE
25、As String = SupermarketPublic Const DSN As String = Supermarket一次执行connect操作可以访问数据库的次数Public Const CONNECT_LOOP_MAX = 10(2) Variable 模块代码:保存执行SQL语句的字符串Public SqlStmt As String服务器名称Public SCHOOL As String读取表中列值的变量Public ColVal As String客户名称数组Public Arr_Client() As String商品类目数组Public Arr_ProType() As
26、String商品名称数组Public Arr_Product() As String仓库名称数组Public Arr_Stock() As String库存商品编号和商品数量数组Public Arr_SupermarketProId() As LongPublic Arr_SupermarketProNum() As Integer类模块对象Public Myuser As New user 用户对象Public Curuser As New user 当前用户对象Public MyMember As New Member 会员对象Public MyPro As New Product 商品对
27、象Public MyProType As New ProType 商品类别对象Public MyStorein As New Storein 入库对象Public MySale As New Sale 销售对象Public Mystock As New stock 库存商品对象Public MyClt As New Client 供应商对象2. 添加类模块根据VB功能模块的划分原则,将为每一个表创建一个类模块,将对此表的所有数据库操作封装在类中。1. Client 类(如表4-9所示)表4-9 Client类的成员函数函数名具体说明Init初始化成员变量Delete删除指定客户记录。参数Tmp
28、Id表示要删除的供应商编号GetId根据指定的客户名称,返回供应商的编号。参数TmpName表示指定的供应商名称。GetInfo读取指定的供应商记录。参数TmpId表示要读取的供应商编号。GetName 根据指定的供应商编号读取供应商名称。参数TmpId表示指定的供应商编号。In_DB判断指定的供应商是否已经在数据库中。参数TmpClientName表示指定的供应商名称。Insert插入新的供应商记录Update修改指定的供应商记录。参数TmpId表示要修改的供应商编号。其中Init函数的代码如下:Public Sub Init() ClientId = -1 ClientName = Cli
29、entType = -1 Contact = Address = Postcode = Phone = Fax = Describe = End Sub2. Member类(如表4-10所示)表4-10 Member类的成员函数函数名具体说明Init初始化成员变量Delete删除指定会员记录。参数TmpId表示要删除的会员编号GetId根据指定的会员名字,返回会员的编号。参数TmpName表示指定的会员名字。GetInfo读取指定的会员记录。参数TmpId表示要读取的会员编号。GetName 根据指定的会员编号读取会员名称。参数TmpId表示指定的会员编号。Insert插入新的会员记录Upda
30、te修改指定的会员记录。参数TmpId表示要修改的会员编号。3. Product类(如表4-11所示)表4-11 Product类的成员函数函数名具体说明Init初始化成员变量Delete删除指定商品记录。参数TmpId表示要删除的商品编号GetId根据指定的商品,返回商品的编号。参数TmpName表示指定的商品名称。GetInfo读取指定的商品记录。参数TmpId表示要读取的商品编号。GetName 根据指定的商品编号读取商品名称。In_DB判断指定的商品名称是否已经在数据库中。参数TmpClientName表示指定的商品名称。Insert插入新的商品记录Load_by_Upper根据指定的
31、商品类目,读取所属的商品名称。参数TmpTypeId表示指定商品类目的编号。HaveType判断指定的商品类目中是否包含商品。参数TmpTypeId表示指定的商品类目编号。如果返回True,则表示指定的商品类目下存在商品;否则表示不存在商品。此函数将在删除商品类目数据之前调用,如果返回True,则不能删除指定的数据。Update修改指定的商品记录。参数TmpId表示要修改的商品编号。其中Insert过程的代码如下:Public Sub Insert() 连接数据库 DB_Connect 设置Insert语句 SqlStmt = INSERT INTO Product (ProName, Pro
32、Style, _ + TypeId, ProUnit, ProPrice, ProLow, ProHigh) _ + Values( + Trim(ProName) + , + Trim(ProStyle) _ + , + Trim(Str(TypeId) + , + Trim(ProUnit) + , _ + Trim(ProPrice) + , + Trim(ProLow) + , + Trim(ProHigh) + ) 执行SQL语句 OdbcExt (SqlStmt) Rc = SQLFreeStmt(Hstmt, SQL_DROP) 断开与数据库的连接 DB_DisconnectEn
33、d Sub 4. ProType类(如表4-12所示)表4-12 ProType类的成员函数函数名具体说明Init初始化成员变量Delete删除指定商品类目记录。参数TmpId表示记录编号GetId根据指定的商品类目名称,返回商品类目编号。参数TmpName表示指定的商品类目名称。GetInfo读取指定的商品类目记录。参数TmpId表示要读取的商品类目编号。GetName 根据指定的商品类目编号读取商品类目名称。参数TmpId表示指定的商品类目编号。HaveSon判断指定的商品类目中是否存在下级商品类目。参数TmpUpperId表示指定的商品类目编号。如果返回True,则表示存在下级目录;否则
34、表示没有下级目录。此函数在删除商品类目前调用,如果返回True,则不能删除指定数据。In_DB判断指定的商品类目名称是否已经在数据库中。参数TypeName表示指定的商品类目名称。Insert插入新的商品类目记录Load_by_Upper根据指定的商品类目,读取下一级商品类目。参数UpperId表示指定商品类目的编号。Update修改指定的商品类目记录。参数TmpId表示要修改的商品类目编号。其中HaveSon函数的代码如下:Public Function HaveSon(ByVal TmpUpperId As Long) As Boolean 连接数据库 DB_Connect 设置SQL语句
35、,读取指定的产品类目编号 SqlStmt = SELECT TypeId FROM ProType WHERE UpperId= _ + Trim(Str(TmpUpperId) 执行SQL语句 OdbcExt (SqlStmt) 如果结果集中有数据,则返回True;否则返回False If SQLFetch(Hstmt) = SQL_NO_DATA_FOUND Then HaveSon = False Else HaveSon = True End If Rc = SQLFreeStmt(Hstmt, SQL_DROP) 断开与数据库的连接 DB_DisconnectEnd Function
36、5. Sale类(如表4-13所示)表4-13 Sale类的成员函数函数名具体说明Init初始化成员变量HaveMemberId读取指定的会员记录。参数MemberId表示要读取的会员编号。HavePro判断指定的商品数据是否出现在销售记录中。参数TmpProId表示指定的商品编号GetNewId生成新的销售记录编号。Insert插入新的销售记录其中GetNewId过程的代码如下:Public Function GetNewId() As Long Dim TmpId As Long 连接数据库 DB_Connect 设置要执行的SQL语句 SqlStmt = SELECT SaleId FR
37、OM Sale ORDER BY SaleId 执行SQL语句 OdbcExt (SqlStmt) 读取SELECT语句返回的查询结果 i = 1 Do While SQLFetch(Hstmt) SQL_NO_DATA_FOUND ColVal = String(40, 0) Rc = SQLGetData(Hstmt, 1, 1, ColVal, Len(ColVal), pcblen) TmpId = Val(ColVal) 把读取的编号与自然数序列比较 If TmpId = i Then i = i + 1 Else 如果编号是不连续的,则用新编号来填充 GetNewId = i Rc
38、 = SQLFreeStmt(Hstmt, SQL_DROP) DB_Disconnect Exit Function End If Loop Rc = SQLFreeStmt(Hstmt, SQL_DROP) 断开与数据库的连接 DB_Disconnect 将得到的新编号作为函数的返回值 GetNewId = iEnd Function此函数的功能是生成新的销售编号,在Insert()过程中将调用此函数。生成新的销售编号的算法是:把读取的销售编号与自然数序列比较,如果销售编号是不连续的,则用新的编号来填充;如果销售编号是连续的,则用最大的销售编号加1作为新的编号。6. stock类(如表4-
39、14所示)表4-14 stock类的成员函数函数名具体说明Init初始化成员变量DeleteZero删除数量为0的商品库存记录。GetId根据指定的商品库存信息,返回商品库存编号。参数TmpProId表示指定的商品编号,TmpProPrice表示商品的价格。GetInfo读取指定的记录。参数TmpId表示要读取的商品库存编号。GetSumPro 计算库存商品的总数量。参数TmpProId表示商品编号。HavePro判断指定的商品数据是否出现在库存记录中。参数TmpProId表示指定的商品编号In_DB判断指定的商品库存信息是否已经在数据库中。参数TmpProId表示商品编号参数,TmpProP
40、rice表示商品的价格。Insert插入新的商品库存记录LoadPro将指定的商品信息读取到数组Arr_StoreProNum()中。参数TmpProId表示商品编号。Update修改指定的商品库存记录。参数OriId表示要修改的商品库存记录。UpdateDiff修改指定的商品库存数量,把当前的商品数量增加ProNum,ProNum可以为负。7. Storein类(如表4-15所示)表4-15 Storein类的成员函数函数名具体说明Init初始化成员变量HaveClt判断指定的供应商数据是否出现在入库记录中。参数TmpCltId表示指定的供应商编号HavePro判断指定的商品数据是否出现在入
41、库记录中。参数TmpProId表示指定的商品编号GetNewId生成新的入库编号。Insert插入新的入库记录8. User类(如表4-16所示)表4-16 User类的成员函数函数名具体说明Init初始化成员变量Delete删除指定用户记录。参数TmpUser表示指定的用户名。GetInfo读取指定的用户记录。参数TmpUser表示指定的用户名。In_DB判断指定的用户名是否已经在数据库中。参数TmpUser表示指定的用户名Insert插入新的记录Update修改指定的记录。参数TmpUser表示要修改的用户名。其中In_DB过程的代码如下:Public Function In_DB(ByV
42、al TmpUser As String) As Boolean 连接数据库 DB_Connect 设置SQL语句,读取指定的用户名 SqlStmt = SELECT * FROM Users WHERE UserName= _ + Trim(TmpUser) + 执行SQL语句 OdbcExt (SqlStmt) 如果结果集中有数据,则返回True;否则返回False If SQLFetch(Hstmt) = SQL_NO_DATA_FOUND Then In_DB = False Else In_DB = True End If Rc = SQLFreeStmt(Hstmt, SQL_DR
43、OP) 断开与数据库的连接 DB_DisconnectEnd Function3. 创建数据源为了能够在程序中访问到数据库Supermarket,需要在ODBC中创建一个名为Supermarket的数据源。具体步骤省略。4.2.2系统主界面设计1. 按表4-17设计主窗体的属性:表4-17 主窗体属性表窗体属性设置值具体说明名称FrmMain设置窗体名称BroderStyle1- Fixed Single设置窗体的边框属性Caption超市管理系统窗体的标题条文本MaxButtonFalse取消最大化按钮MinButtonTrue激活最小化按钮PictrueImageMain.gif 设置窗体背景StartUpPosition2- 屏幕中心设置窗体弹出时,位置在屏幕中心。2. 按表4-18设置菜单项设置:表4-18 主窗体菜单项设置表 标题名称标题名称系统设置mn_sys销售mn_Sale户管理mn_user入库mn_StoreinPro供应商管理mn_Client销售商品mn_SalePro会员管理mn_Member统计查询mn_static退出系统mn_exit商品销售统计表mn_Report1商品管理mn_product