數(shù)據(jù)庫(kù)超市管理系統(tǒng)_第1頁(yè)
數(shù)據(jù)庫(kù)超市管理系統(tǒng)_第2頁(yè)
數(shù)據(jù)庫(kù)超市管理系統(tǒng)_第3頁(yè)
數(shù)據(jù)庫(kù)超市管理系統(tǒng)_第4頁(yè)
數(shù)據(jù)庫(kù)超市管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1.1編寫(xiě)目的

從該階段開(kāi)發(fā)正式進(jìn)入軟件的實(shí)際開(kāi)發(fā)階段,本階段完成系統(tǒng)的大致設(shè)計(jì)并明確系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)與軟件結(jié)構(gòu)。在軟件設(shè)計(jì)階段主要是把一個(gè)軟件需求轉(zhuǎn)化為軟件表示的過(guò)程,這種表示只是描繪出軟件的總的概貌。本概要設(shè)計(jì)說(shuō)明書(shū)的目的就是進(jìn)一步細(xì)化軟件設(shè)計(jì)階段得出的軟件總體概貌,把它加工成在程序細(xì)節(jié)上非常接近于源程序的軟件表示。1.2背景a.

待開(kāi)發(fā)軟件系統(tǒng)的名稱:小型超市后臺(tái)管理系統(tǒng)b.

任務(wù)的提出者:梁永霖老師c.

開(kāi)發(fā)者:馬文勇李耀初鄭偉清1.3參考資料陶宏才.《數(shù)據(jù)庫(kù)原理及設(shè)計(jì)》.第1版.北京.清華大學(xué)出版社.2004年范立南《SQLServer2000實(shí)用教程》第2版.北京.清華大學(xué)出版社.2005年李香敏《SQLServer2000編程員指南》第1版.北京.希望電子出版社RebeccaM.Riordan《輕松搞定SQLServer2000程序設(shè)計(jì)》第2版.北京工業(yè)出版社.2003年WattsS.Humphrey《軟件工程規(guī)范》第1版.清華大學(xué)出版社.2004年

2.總體設(shè)計(jì)2.1需求規(guī)定

A硬件支持

此軟件沒(méi)有進(jìn)行遠(yuǎn)程訪問(wèn)的功能,也就是說(shuō)軟件和數(shù)據(jù)庫(kù)服務(wù)器均運(yùn)行與一臺(tái)及其上面,因此,建議機(jī)器至少能順暢運(yùn)行SQL服務(wù)器。

本程序?qū)⒃谝韵掠布到y(tǒng)進(jìn)行測(cè)試:a.

處理器芯片為:IntelCeleron2.66GHz,內(nèi)存為:512MB,硬盤(pán)為:80GB。b.

處理器芯片為:IntelP4,主頻1.8GHz,內(nèi)存為:256MB,硬盤(pán)為:40GBc.

處理器芯片為:AMDSempron2500+,內(nèi)存為:512MB,硬盤(pán)為:80GB

B軟件支持

本軟件將在以下環(huán)境下編寫(xiě)完成:操作系統(tǒng):WindowsXPprofessional編程軟件:MicrosoftVisualBasic6.0中文版SQL服務(wù)器:Microsoft?SQLServer?2000數(shù)據(jù)庫(kù)查詢器::SQL查詢分析器2.2運(yùn)行環(huán)境操作系統(tǒng):Windows98以上系統(tǒng)測(cè)試系統(tǒng):WindowsXPSp23.接口設(shè)計(jì)3.2外部接口本系統(tǒng)設(shè)有人機(jī)操作界面,考慮到操作簡(jiǎn)單,易于管理方面,主要硬件接口設(shè)備為PC,鼠標(biāo),鍵盤(pán)。而軟件接口主要以Windows平臺(tái)為基本平臺(tái)。系統(tǒng)業(yè)務(wù)邏輯的獨(dú)步一時(shí)幾乎完全封閉在數(shù)據(jù)存儲(chǔ)層實(shí)現(xiàn),中間組件層主要通過(guò)調(diào)用遠(yuǎn)程數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程或用戶自定交函數(shù)的方式來(lái)實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)。數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí),在sqlserver2000大型數(shù)據(jù)庫(kù)提供的技術(shù)下,充分利用約束,視圖,存儲(chǔ)過(guò)程,用戶自定義函數(shù)及觸發(fā)器等技術(shù)約束業(yè)務(wù)規(guī)則、維護(hù)數(shù)據(jù)完整性和唯一性,并實(shí)現(xiàn)市郊的數(shù)據(jù)存儲(chǔ)與訪問(wèn)。3.3內(nèi)部接口程序利用VB下的構(gòu)造ADO的連接對(duì)象的ConnectionString的配置,各cls模塊之間相互獨(dú)立又彼此關(guān)聯(lián),主要通過(guò)函數(shù)調(diào)用實(shí)現(xiàn)各部分的連接。

4.系統(tǒng)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)4.1邏輯結(jié)構(gòu)設(shè)計(jì)要點(diǎn)

針對(duì)一般小型超市后臺(tái)信息管理系統(tǒng)的需求,通過(guò)對(duì)商品進(jìn)出過(guò)程的內(nèi)容和數(shù)據(jù)流程分析,設(shè)計(jì)如下面所示的數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu),各模塊標(biāo)示符說(shuō)明如下:系統(tǒng)數(shù)據(jù)庫(kù)表結(jié)構(gòu)數(shù)據(jù)庫(kù)表索引

表名中文名Userifo系統(tǒng)用戶表Supplier供貨商信息表GoodsType商品類型表Goods商品信息表Buy進(jìn)貨表Sale銷售表Spoilage損壞商品表

自定義數(shù)據(jù)類型(custem)字段名數(shù)據(jù)類型長(zhǎng)度主/外鍵字段值約束對(duì)應(yīng)中文名gcxCaptionVarchar100

Notnull實(shí)體名稱gxcIDInt4PNotnull實(shí)體號(hào)gxcMoneySmallmoney4

Notnull進(jìn)貨\銷售金額gxcRemarkVarchar1000

Null

備注說(shuō)明gxcTrueNameVarchar10

Notnull真實(shí)姓名

商品信息表(Goods)字段名數(shù)據(jù)類型長(zhǎng)度主/外鍵字段值約束對(duì)應(yīng)中文名GoodsIDgxcID4PNotnull商品號(hào)碼GoodsNamegxcCaption100

Notnull商品名稱AmountDecimal19

Notnull庫(kù)存數(shù)量UnitNamegxcCaption100

Notnull單位名稱TypeIDgxcID4

Notnull商品類型號(hào)SupplierIDgxcID4

Notnull商品供貨商號(hào)IntroducegxcRemark1000

Null商品介紹RemarkgxcRemark1000

Null備注

用戶表(UserInfo)字段名字段類型長(zhǎng)度主/外鍵字段值約束對(duì)應(yīng)中文名UserIDgcxID4PNotnull用戶號(hào)UserNamegxcCaption100

Notnull用戶名稱PasswordgxcCaption100

Notnull用戶密碼TrueNamegxcTrueName10

Null真實(shí)姓名LastLoginTimeDatetime8

Notnull最近登錄時(shí)間UserTypeBit1

NotNull用戶類型

銷售表(Sale)字段名字段類型長(zhǎng)度主/外鍵字段值約束對(duì)應(yīng)中文名SaleIDgxcID4PNotnull銷售號(hào)GoodsIDgxcID1FNotnull商品號(hào)AmountDecimal9

Notnull銷售數(shù)量UnitPricegxcMoney4

Notnull單價(jià)registrarIDgxcID4

Notnull錄入人員號(hào)regDateDatetime8

Null登記時(shí)間RemarkgxcRemark10001Null備注

進(jìn)貨信息表(Buy)字段名字段類型長(zhǎng)度主/外鍵字段值約束對(duì)應(yīng)中文名BuyIDgxcID4PNotnull進(jìn)貨編號(hào)GoodsIDgxcID4

Notnull商品編號(hào)AmountDecimal9

Notnull數(shù)量UnitPricegxcMoney4

Notnull進(jìn)貨單價(jià)DeliverergxcTrueName10

Null送貨員TransactorgxcTrueName10

Null辦理員RegistrarIDgxcID4FNotnull錄入人員號(hào)RegdateDatetime8

Notnull登記時(shí)間RemarkgxcRemark1000

Null備注

損壞商品表(Spoilage)字段名字段類型長(zhǎng)度主/外鍵字段值約束對(duì)應(yīng)中文名SpoilageIDgxcID4PNotnull損壞事件號(hào)BuyIDgxcID4FNotnull商品編號(hào)AmoutDecimal9

Notnull數(shù)量ReportorgxcTrueName10

Notnull報(bào)損人ReasongxcRemark1000

null損壞原因RegistrarIDgxcID4

NotNull錄入人員號(hào)Regdatedatetime8

Datetime登記時(shí)間

供貨商表(Supplier)字段名字段類型長(zhǎng)度主/外鍵字段值約束對(duì)應(yīng)中文名SupplierIDgxcID4PNotnull供貨商編號(hào)SupplierNamegxcCaption100

Notnull供貨商名稱ContactgxcRemark1000

Null聯(lián)系方式IntroducegxcRemark1000

Null簡(jiǎn)要介紹RemakrgxcRemark1000

Null備注

4.2關(guān)系圖約束設(shè)計(jì)數(shù)據(jù)庫(kù)關(guān)系圖如下:

4.3.物理結(jié)構(gòu)設(shè)計(jì)系統(tǒng)的存儲(chǔ)物理結(jié)構(gòu)由數(shù)據(jù)庫(kù)來(lái)生成。以下為幾個(gè)例子

查看存在ID字段不為某個(gè)值但某個(gè)字符型字段等于某個(gè)值/*查看某個(gè)數(shù)據(jù)表中*/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)

--主語(yǔ)句

DECLARE@nCountint

--返回記錄行數(shù)

/*創(chuàng)建存儲(chǔ)符合條件的記錄數(shù)的臨時(shí)表*/

IFOBJECT_ID('dbo.#tmpTable')ISNULL

CREATETABLE#tmpTable(tmpFieldint)--創(chuàng)建臨時(shí)表

ELSE

TRUNCATETABLE#tmpTable

--清空臨時(shí)表

/*在數(shù)據(jù)庫(kù)表中檢索符合條件的記錄數(shù)并存儲(chǔ)在臨時(shí)表中*/

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

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

EXEC(@strSQL)

/*在臨時(shí)表中返回存儲(chǔ)的記錄數(shù)*/

SELECTTOP1@nCount=tmpFieldFROM#tmpTableORDERBYtmpField

/*刪除臨時(shí)表*/

DROPTABLE#tmpTable

/*輸出參數(shù)*/

IF@nCount>0

SELECT@bitResult=1

ELSE

SELECT@bitResult=0GOSETQUOTED_IDENTIFIEROFFGOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOSETANSI_NULLSONGO添加一條商品信息/*添加一條商品信息,輸出商品編號(hào)和執(zhí)行結(jié)果*/CREATEPROCdbo.GoodsAddNew(

@GoodsName

varchar(100),

--商品名稱

@Amount

decimal(18,2),

--庫(kù)存數(shù)量

@TypeID

int,

--類型編號(hào)

@UnitName

varchar(100),

--單位

@SupplierID

int,

--供貨商編號(hào)

@Introduce

varchar(1000),

--商品介紹

@Remark

varchar(1000),

--備注

@ID

intOUTPUT,

--商品編號(hào)

@ReturnValue

intOUTPUT

--執(zhí)行結(jié)果(VB組件的自定義枚舉值))AS

DECLARE@ErrNoint

--保存錯(cuò)誤號(hào)

BEGINTRANSACTION

--開(kāi)始事務(wù)

/*手動(dòng)維護(hù)數(shù)據(jù)唯一性的代碼。*/

DECLARE@ExistNamebit

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

IF@ExistName=1

--當(dāng)前商品名稱已存在

BEGIN

ROLLBACKTRANSACTION

--回滾事務(wù)

SELECT@ReturnValue=3

--返回VB組件的自定義枚舉值

RETURN

--結(jié)束存儲(chǔ)過(guò)程

END

/*添加記錄*/

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

--記錄當(dāng)前的錯(cuò)誤號(hào)

SELECT@ErrNo=@@ERROR

/*輸出參數(shù)*/

IF@ErrNo=0

--沒(méi)有發(fā)生錯(cuò)誤

BEGIN

SELECT@ID=(SELECTMAX(GoodsID)FROMGoods)

SELECT@ReturnValue=0

END

ELSEIF@ErrNo=2627

--違反唯一約束

BEGIN

ROLLBACKTRANSACTION

--遇到錯(cuò)誤則回滾事務(wù)

SELECT@ReturnValue=3

RETURN

END

ELSE

--其他未知錯(cuò)誤

BEGIN

ROLLBACKTRANSACTION

--遇到錯(cuò)誤則回滾事務(wù)

SELECT@ReturnValue=1

RETURN

END

COMMITTRANSACTION

--提交事務(wù)GOSETQUOTED_IDENTIFIEROFFGOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOSETANSI_NULLSONGO刪除一條商品信息/*刪除一條商品信息,輸出執(zhí)行結(jié)果*/CREATEPROCdbo.GoodsDelete(

@GoodsID

int,

--商品編號(hào)

@ReturnValue

intOUTPUT

--執(zhí)行結(jié)果(VB組件的自定義枚舉值))AS

DECLARE@ErrNoint

--保存錯(cuò)誤號(hào)

BEGINTRANSACTION

--開(kāi)始事務(wù)

/*驗(yàn)證是否存在當(dāng)前商品編號(hào),若否則不能刪除*/

DECLARE@ExistIDbit

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

IF@ExistID=0

--當(dāng)前商品編號(hào)不存在

BEGIN

ROLLBACKTRANSACTION

--回滾事務(wù)

SELECT@ReturnValue=2

--返回VB組件的自定義枚舉值

RETURN

--結(jié)束存儲(chǔ)過(guò)程

END

/*手動(dòng)維護(hù)數(shù)據(jù)完整性的代碼*/

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

IF@ExistID=1

BEGIN

ROLLBACKTRANSACTION

SELECT@ReturnValue=3

RETURN

END

/*驗(yàn)證銷售信息是否包含當(dāng)前商品,若是則不能刪除*/

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

IF@ExistID=1

BEGIN

ROLLBACKTRANSACTION

SELECT@ReturnValue=3

RETURN

END

/*刪除記錄*/

DELETEFROMGoodsWHEREGoodsID=@GoodsID

--記錄當(dāng)前的錯(cuò)誤號(hào)

SELECT@ErrNo=@@ERROR

/*輸出參數(shù)*/

IF@ErrNo=0

--沒(méi)有發(fā)生錯(cuò)誤

SELECT@ReturnValue=0

ELSEIF@ErrNo=547

--發(fā)生外鍵沖突

BEGIN

ROLLBACKTRANSACTION

--遇到錯(cuò)誤則回滾事務(wù)

SELECT@ReturnValue=3

RETURN

END

ELSE

--其他未知錯(cuò)誤

BEGIN

ROLLBACKTRANSACTION

--遇到錯(cuò)誤則回滾事務(wù)

SELECT@ReturnValue=1

RETURN

END

COMMITTRANSACTION

--提交事務(wù)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.運(yùn)行測(cè)試5.1.運(yùn)行模塊的組合具體軟件的運(yùn)行模塊組合為程序多窗口的運(yùn)行環(huán)境,各個(gè)模塊在軟件運(yùn)行過(guò)程中能較好的交換信息,并能夠獨(dú)立的處理各自的數(shù)據(jù)。5.2.測(cè)試及問(wèn)題提出

軟件運(yùn)行時(shí)有較友好的界面,基本能夠?qū)崿F(xiàn)用戶的數(shù)據(jù)處理要求。

問(wèn)題1:無(wú)法進(jìn)入數(shù)據(jù)庫(kù)

問(wèn)題2:字段名稱與SQL關(guān)鍵字沖突

添加字符型數(shù)據(jù)的時(shí)候,如果該數(shù)據(jù)飲食了單引號(hào),則會(huì)造成字符的意外截?cái)喽a(chǎn)生錯(cuò)誤。

問(wèn)題3:個(gè)別觸發(fā)器無(wú)作用

在Buy表上的delete觸發(fā)器中,不能完成刪除商品信息的時(shí)候同步更新商品庫(kù)存的功能。5.3.問(wèn)題解決系統(tǒng)的運(yùn)行時(shí)間基本可以達(dá)到用戶所提出的要求。問(wèn)題解決如下

解決問(wèn)題1:'設(shè)置服務(wù)器名稱,數(shù)據(jù)庫(kù)名稱,登錄名(此時(shí)假設(shè)密碼為空)PublicFunctionConnectToDatabase()AsBoolean

OnErrorGoToErrHandler

Setg_Conn=NewConnection

DimServerNameAsString,DBNameAsString,UserNameAsString,strPasswordAsString

'連接SqlServer的連接字符串設(shè)置

ServerName="(local)"

DBName="BuySaleStorage"

UserName="sa"

strPassword=""

'連接到SQLServer數(shù)據(jù)庫(kù)根據(jù)DB文件夾中的內(nèi)容,創(chuàng)建數(shù)據(jù)庫(kù),推薦用MDF文件附加數(shù)據(jù)庫(kù);

\DB\MDF\BuySaleStorage_Data.MDF

\DB\MDF\BuySaleStorage_LOG.LDF連接參數(shù):

數(shù)據(jù)庫(kù)名:BuySaleStorage

登錄名:

sa

密碼:

無(wú)解決問(wèn)題2:當(dāng)添加字符型數(shù)據(jù)的時(shí)候,如果該數(shù)據(jù)飲食了單引號(hào),則會(huì)造成字符的意外截?cái)喽a(chǎn)生錯(cuò)誤。解決方法是把字符數(shù)據(jù)中的單引號(hào)替換為兩個(gè)單引號(hào),使用了RealString函

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論