数据库超市管理系统_第1页
数据库超市管理系统_第2页
数据库超市管理系统_第3页
数据库超市管理系统_第4页
数据库超市管理系统_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1.1编写目的

从该阶段开发正式进入软件的实际开发阶段,本阶段完成系统的大致设计并明确系统的数据结构与软件结构。在软件设计阶段主要是把一个软件需求转化为软件表示的过程,这种表示只是描绘出软件的总的概貌。本概要设计说明书的目的就是进一步细化软件设计阶段得出的软件总体概貌,把它加工成在程序细节上非常接近于源程序的软件表示。1.2背景a.

待开发软件系统的名称:小型超市后台管理系统b.

任务的提出者:梁永霖老师c.

开发者:马文勇李耀初郑伟清1.3参考资料陶宏才.《数据库原理及设计》.第1版.北京.清华大学出版社.2004年范立南《SQLServer2000实用教程》第2版.北京.清华大学出版社.2005年李香敏《SQLServer2000编程员指南》第1版.北京.希望电子出版社RebeccaM.Riordan《轻松搞定SQLServer2000程序设计》第2版.北京工业出版社.2003年WattsS.Humphrey《软件工程规范》第1版.清华大学出版社.2004年

2.总体设计2.1需求规定

A硬件支持

此软件没有进行远程访问的功能,也就是说软件和数据库服务器均运行与一台及其上面,因此,建议机器至少能顺畅运行SQL服务器。

本程序将在以下硬件系统进行测试:a.

处理器芯片为:IntelCeleron2.66GHz,内存为:512MB,硬盘为:80GB。b.

处理器芯片为:IntelP4,主频1.8GHz,内存为:256MB,硬盘为:40GBc.

处理器芯片为:AMDSempron2500+,内存为:512MB,硬盘为:80GB

B软件支持

本软件将在以下环境下编写完成:操作系统:WindowsXPprofessional编程软件:MicrosoftVisualBasic6.0中文版SQL服务器:Microsoft®SQLServer?2000数据库查询器::SQL查询分析器2.2运行环境操作系统:Windows98以上系统测试系统:WindowsXPSp23.接口设计3.2外部接口本系统设有人机操作界面,考虑到操作简单,易于管理方面,主要硬件接口设备为PC,鼠标,键盘。而软件接口主要以Windows平台为基本平台。系统业务逻辑的独步一时几乎完全封闭在数据存储层实现,中间组件层主要通过调用远程数据库存储过程或用户自定交函数的方式来实现对数据库的访问。数据库设计时,在sqlserver2000大型数据库提供的技术下,充分利用约束,视图,存储过程,用户自定义函数及触发器等技术约束业务规则、维护数据完整性和唯一性,并实现市郊的数据存储与访问。3.3内部接口程序利用VB下的构造ADO的连接对象的ConnectionString的配置,各cls模块之间相互独立又彼此关联,主要通过函数调用实现各部分的连接。

4.系统数据结构设计4.1逻辑结构设计要点

针对一般小型超市后台信息管理系统的需求,通过对商品进出过程的内容和数据流程分析,设计如下面所示的数据项和数据结构,各模块标示符说明如下:系统数据库表结构数据库表索引

表名中文名Userifo系统用户表Supplier供货商信息表GoodsType商品类型表Goods商品信息表Buy进货表Sale销售表Spoilage损坏商品表

自定义数据类型(custem)字段名数据类型长度主/外键字段值约束对应中文名gcxCaptionVarchar100

Notnull实体名称gxcIDInt4PNotnull实体号gxcMoneySmallmoney4

Notnull进货\销售金额gxcRemarkVarchar1000

Null

备注说明gxcTrueNameVarchar10

Notnull真实姓名

商品信息表(Goods)字段名数据类型长度主/外键字段值约束对应中文名GoodsIDgxcID4PNotnull商品号码GoodsNamegxcCaption100

Notnull商品名称AmountDecimal19

Notnull库存数量UnitNamegxcCaption100

Notnull单位名称TypeIDgxcID4

Notnull商品类型号SupplierIDgxcID4

Notnull商品供货商号IntroducegxcRemark1000

Null商品介绍RemarkgxcRemark1000

Null备注

用户表(UserInfo)字段名字段类型长度主/外键字段值约束对应中文名UserIDgcxID4PNotnull用户号UserNamegxcCaption100

Notnull用户名称PasswordgxcCaption100

Notnull用户密码TrueNamegxcTrueName10

Null真实姓名LastLoginTimeDatetime8

Notnull最近登录时间UserTypeBit1

NotNull用户类型

销售表(Sale)字段名字段类型长度主/外键字段值约束对应中文名SaleIDgxcID4PNotnull销售号GoodsIDgxcID1FNotnull商品号AmountDecimal9

Notnull销售数量UnitPricegxcMoney4

Notnull单价registrarIDgxcID4

Notnull录入人员号regDateDatetime8

Null登记时间RemarkgxcRemark10001Null备注

进货信息表(Buy)字段名字段类型长度主/外键字段值约束对应中文名BuyIDgxcID4PNotnull进货编号GoodsIDgxcID4

Notnull商品编号AmountDecimal9

Notnull数量UnitPricegxcMoney4

Notnull进货单价DeliverergxcTrueName10

Null送货员TransactorgxcTrueName10

Null办理员RegistrarIDgxcID4FNotnull录入人员号RegdateDatetime8

Notnull登记时间RemarkgxcRemark1000

Null备注

损坏商品表(Spoilage)字段名字段类型长度主/外键字段值约束对应中文名SpoilageIDgxcID4PNotnull损坏事件号BuyIDgxcID4FNotnull商品编号AmoutDecimal9

Notnull数量ReportorgxcTrueName10

Notnull报损人ReasongxcRemark1000

null损坏原因RegistrarIDgxcID4

NotNull录入人员号Regdatedatetime8

Datetime登记时间

供货商表(Supplier)字段名字段类型长度主/外键字段值约束对应中文名SupplierIDgxcID4PNotnull供货商编号SupplierNamegxcCaption100

Notnull供货商名称ContactgxcRemark1000

Null联系方式IntroducegxcRemark1000

Null简要介绍RemakrgxcRemark1000

Null备注

4.2关系图约束设计数据库关系图如下:

4.3.物理结构设计系统的存储物理结构由数据库来生成。以下为几个例子

查看存在ID字段不为某个值但某个字符型字段等于某个值/*查看某个数据表中*/CREATEPROCdbo.ExistNameWithoutID(

@strTableName

varchar(255),

--表名

@strIDName

varchar(255),

--ID字段名

@intIDValue

int,

--ID字段值

@strFieldName

varchar(255),

--字符型字段名

@strFieldValuevarchar(50),

--字符型字段值

@bitResult

bitOUTPUT

--输出值,0为不存在,1为存在)AS

SETNOCOUNTON

DECLARE@strSQLvarchar(3000)

--主语句

DECLARE@nCountint

--返回记录行数

/*创建存储符合条件的记录数的临时表*/

IFOBJECT_ID('dbo.#tmpTable')ISNULL

CREATETABLE#tmpTable(tmpFieldint)--创建临时表

ELSE

TRUNCATETABLE#tmpTable

--清空临时表

/*在数据库表中检索符合条件的记录数并存储在临时表中*/

SELECT@strSQL='SELECTCOUNT(['+@strFieldName+'])FROM['+@strTableName+']WHERE['+@strFieldName+']='''+@strFieldValue+''''+'AND'+@strIDName+'<>'+CONVERT(varchar(50),@intIDValue)

SELECT@strSQl='INSERT#tmpTable'+@strSQL

EXEC(@strSQL)

/*在临时表中返回存储的记录数*/

SELECTTOP1@nCount=tmpFieldFROM#tmpTableORDERBYtmpField

/*删除临时表*/

DROPTABLE#tmpTable

/*输出参数*/

IF@nCount>0

SELECT@bitResult=1

ELSE

SELECT@bitResult=0GOSETQUOTED_IDENTIFIEROFFGOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOSETANSI_NULLSONGO添加一条商品信息/*添加一条商品信息,输出商品编号和执行结果*/CREATEPROCdbo.GoodsAddNew(

@GoodsName

varchar(100),

--商品名称

@Amount

decimal(18,2),

--库存数量

@TypeID

int,

--类型编号

@UnitName

varchar(100),

--单位

@SupplierID

int,

--供货商编号

@Introduce

varchar(1000),

--商品介绍

@Remark

varchar(1000),

--备注

@ID

intOUTPUT,

--商品编号

@ReturnValue

intOUTPUT

--执行结果(VB组件的自定义枚举值))AS

DECLARE@ErrNoint

--保存错误号

BEGINTRANSACTION

--开始事务

/*手动维护数据唯一性的代码。*/

DECLARE@ExistNamebit

EXECExistByName'Goods','GoodsName',@GoodsName,@ExistNameOUTPUT

IF@ExistName=1

--当前商品名称已存在

BEGIN

ROLLBACKTRANSACTION

--回滚事务

SELECT@ReturnValue=3

--返回VB组件的自定义枚举值

RETURN

--结束存储过程

END

/*添加记录*/

INSERTINTOGoodsValues(@GoodsName,@Amount,@UnitName,@TypeID,@SupplierID,@Introduce,@Remark)

--记录当前的错误号

SELECT@ErrNo=@@ERROR

/*输出参数*/

IF@ErrNo=0

--没有发生错误

BEGIN

SELECT@ID=(SELECTMAX(GoodsID)FROMGoods)

SELECT@ReturnValue=0

END

ELSEIF@ErrNo=2627

--违反唯一约束

BEGIN

ROLLBACKTRANSACTION

--遇到错误则回滚事务

SELECT@ReturnValue=3

RETURN

END

ELSE

--其他未知错误

BEGIN

ROLLBACKTRANSACTION

--遇到错误则回滚事务

SELECT@ReturnValue=1

RETURN

END

COMMITTRANSACTION

--提交事务GOSETQUOTED_IDENTIFIEROFFGOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOSETANSI_NULLSONGO删除一条商品信息/*删除一条商品信息,输出执行结果*/CREATEPROCdbo.GoodsDelete(

@GoodsID

int,

--商品编号

@ReturnValue

intOUTPUT

--执行结果(VB组件的自定义枚举值))AS

DECLARE@ErrNoint

--保存错误号

BEGINTRANSACTION

--开始事务

/*验证是否存在当前商品编号,若否则不能删除*/

DECLARE@ExistIDbit

EXECExistByID'Goods','GoodsID',@GoodsID,@ExistIDOUTPUT

IF@ExistID=0

--当前商品编号不存在

BEGIN

ROLLBACKTRANSACTION

--回滚事务

SELECT@ReturnValue=2

--返回VB组件的自定义枚举值

RETURN

--结束存储过程

END

/*手动维护数据完整性的代码*/

EXECExistByID'Buy','BuyID',@GoodsID,@ExistIDOUTPUT

IF@ExistID=1

BEGIN

ROLLBACKTRANSACTION

SELECT@ReturnValue=3

RETURN

END

/*验证销售信息是否包含当前商品,若是则不能删除*/

EXECExistByID'Sale','SaleID',@GoodsID,@ExistIDOUTPUT

IF@ExistID=1

BEGIN

ROLLBACKTRANSACTION

SELECT@ReturnValue=3

RETURN

END

/*删除记录*/

DELETEFROMGoodsWHEREGoodsID=@GoodsID

--记录当前的错误号

SELECT@ErrNo=@@ERROR

/*输出参数*/

IF@ErrNo=0

--没有发生错误

SELECT@ReturnValue=0

ELSEIF@ErrNo=547

--发生外键冲突

BEGIN

ROLLBACKTRANSACTION

--遇到错误则回滚事务

SELECT@ReturnValue=3

RETURN

END

ELSE

--其他未知错误

BEGIN

ROLLBACKTRANSACTION

--遇到错误则回滚事务

SELECT@ReturnValue=1

RETURN

END

COMMITTRANSACTION

--提交事务GOSETQUOTED_IDENTIFIEROFFGOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOSETANSI_NULLSONGO返回所有供货商CREATEVIEWdbo.view_SupplierAS

/*返回所有供货商*/

SELECTSupplierID,SupplierName,Contact,Introduce,RemarkFROMSupplierGOSETQUOTED_IDENTIFIEROFFGOSETANSI_NULLSONGOSETQUOTED_IDENTIFIEROFFGOSETANSI_NULLSONGOCREATEVIEWdbo.view_Buy

AS

SELECTB.BuyID,B.GoodsID,G.GoodsName,

B.UnitPrice,B.Amount,G.UnitName,

B.UnitPrice*B.AmountASTotalPrice,

B.Deliverer,B.Transactor,B.RegistrarID,

B.RegDate,G.TypeID,G.SupplierID,B.Remark

FROMBuyASBLEFTOUTERJOINGoodsASG

ONB.GoodsID=G.GoodsIDGOSETQUOTED_IDENTIFIEROFFGOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOSETANSI_NULLSONGO

5.运行测试5.1.运行模块的组合具体软件的运行模块组合为程序多窗口的运行环境,各个模块在软件运行过程中能较好的交换信息,并能够独立的处理各自的数据。5.2.测试及问题提出

软件运行时有较友好的界面,基本能够实现用户的数据处理要求。

问题1:无法进入数据库

问题2:字段名称与SQL关键字冲突

添加字符型数据的时候,如果该数据饮食了单引号,则会造成字符的意外截断而产生错误。

问题3:个别触发器无作用

在Buy表上的delete触发器中,不能完成删除商品信息的时候同步更新商品库存的功能。5.3.问题解决系统的运行时间基本可以达到用户所提出的要求。问题解决如下

解决问题1:'设置服务器名称,数据库名称,登录名(此时假设密码为空)PublicFunctionConnectToDatabase()AsBoolean

OnErrorGoToErrHandler

Setg_Conn=NewConnection

DimServerNameAsString,DBNameAsString,UserNameAsString,strPasswordAsString

'连接SqlServer的连接字符串设置

ServerName="(local)"

DBName="BuySaleStorage"

UserName="sa"

strPassword=""

'连接到SQLServer数据库根据DB文件夹中的内容,创建数据库,推荐用MDF文件附加数据库;

\DB\MDF\BuySaleStorage_Data.MDF

\DB\MDF\BuySaleStorage_LOG.LDF连接参数:

数据库名:BuySaleStorage

登录名:

sa

密码:

无解决问题2:当添加字符型数据的时候,如果该数据饮食了单引号,则会造成字符的意外截断而产生错误。解决方法是把字符数据中的单引号替换为两个单引号,使用了RealString函

温馨提示

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

评论

0/150

提交评论