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

下載本文檔

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

文檔簡介

1.1編寫目的

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

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

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

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

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

A硬件支持

此軟件沒有進行遠程訪問的功能,也就是說軟件和數(shù)據(jù)庫服務(wù)器均運行與一臺及其上面,因此,建議機器至少能順暢運行SQL服務(wù)器。

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

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

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

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

B軟件支持

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

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

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

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

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

Notnull實體名稱gxcIDInt4PNotnull實體號gxcMoneySmallmoney4

Notnull進貨\銷售金額gxcRemarkVarchar1000

Null

備注說明gxcTrueNameVarchar10

Notnull真實姓名

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

Notnull商品名稱AmountDecimal19

Notnull庫存數(shù)量UnitNamegxcCaption100

Notnull單位名稱TypeIDgxcID4

Notnull商品類型號SupplierIDgxcID4

Notnull商品供貨商號IntroducegxcRemark1000

Null商品介紹RemarkgxcRemark1000

Null備注

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

Notnull用戶名稱PasswordgxcCaption100

Notnull用戶密碼TrueNamegxcTrueName10

Null真實姓名LastLoginTimeDatetime8

Notnull最近登錄時間UserTypeBit1

NotNull用戶類型

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

Notnull銷售數(shù)量UnitPricegxcMoney4

Notnull單價registrarIDgxcID4

Notnull錄入人員號regDateDatetime8

Null登記時間RemarkgxcRemark10001Null備注

進貨信息表(Buy)字段名字段類型長度主/外鍵字段值約束對應(yīng)中文名BuyIDgxcID4PNotnull進貨編號GoodsIDgxcID4

Notnull商品編號AmountDecimal9

Notnull數(shù)量UnitPricegxcMoney4

Notnull進貨單價DeliverergxcTrueName10

Null送貨員TransactorgxcTrueName10

Null辦理員RegistrarIDgxcID4FNotnull錄入人員號RegdateDatetime8

Notnull登記時間RemarkgxcRemark1000

Null備注

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

Notnull數(shù)量ReportorgxcTrueName10

Notnull報損人ReasongxcRemark1000

null損壞原因RegistrarIDgxcID4

NotNull錄入人員號Regdatedatetime8

Datetime登記時間

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

Notnull供貨商名稱ContactgxcRemark1000

Null聯(lián)系方式IntroducegxcRemark1000

Null簡要介紹RemakrgxcRemark1000

Null備注

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

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

查看存在ID字段不為某個值但某個字符型字段等于某個值/*查看某個數(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)

--主語句

DECLARE@nCountint

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

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

IFOBJECT_ID('dbo.#tmpTable')ISNULL

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

ELSE

TRUNCATETABLE#tmpTable

--清空臨時表

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

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

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

EXEC(@strSQL)

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

SELECTTOP1@nCount=tmpFieldFROM#tmpTableORDERBYtmpField

/*刪除臨時表*/

DROPTABLE#tmpTable

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

IF@nCount>0

SELECT@bitResult=1

ELSE

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

@GoodsName

varchar(100),

--商品名稱

@Amount

decimal(18,2),

--庫存數(shù)量

@TypeID

int,

--類型編號

@UnitName

varchar(100),

--單位

@SupplierID

int,

--供貨商編號

@Introduce

varchar(1000),

--商品介紹

@Remark

varchar(1000),

--備注

@ID

intOUTPUT,

--商品編號

@ReturnValue

intOUTPUT

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

DECLARE@ErrNoint

--保存錯誤號

BEGINTRANSACTION

--開始事務(wù)

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

DECLARE@ExistNamebit

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

IF@ExistName=1

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

BEGIN

ROLLBACKTRANSACTION

--回滾事務(wù)

SELECT@ReturnValue=3

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

RETURN

--結(jié)束存儲過程

END

/*添加記錄*/

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

--記錄當(dāng)前的錯誤號

SELECT@ErrNo=@@ERROR

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

IF@ErrNo=0

--沒有發(fā)生錯誤

BEGIN

SELECT@ID=(SELECTMAX(GoodsID)FROMGoods)

SELECT@ReturnValue=0

END

ELSEIF@ErrNo=2627

--違反唯一約束

BEGIN

ROLLBACKTRANSACTION

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

SELECT@ReturnValue=3

RETURN

END

ELSE

--其他未知錯誤

BEGIN

ROLLBACKTRANSACTION

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

SELECT@ReturnValue=1

RETURN

END

COMMITTRANSACTION

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

@GoodsID

int,

--商品編號

@ReturnValue

intOUTPUT

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

DECLARE@ErrNoint

--保存錯誤號

BEGINTRANSACTION

--開始事務(wù)

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

DECLARE@ExistIDbit

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

IF@ExistID=0

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

BEGIN

ROLLBACKTRANSACTION

--回滾事務(wù)

SELECT@ReturnValue=2

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

RETURN

--結(jié)束存儲過程

END

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

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

IF@ExistID=1

BEGIN

ROLLBACKTRANSACTION

SELECT@ReturnValue=3

RETURN

END

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

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

IF@ExistID=1

BEGIN

ROLLBACKTRANSACTION

SELECT@ReturnValue=3

RETURN

END

/*刪除記錄*/

DELETEFROMGoodsWHEREGoodsID=@GoodsID

--記錄當(dāng)前的錯誤號

SELECT@ErrNo=@@ERROR

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

IF@ErrNo=0

--沒有發(fā)生錯誤

SELECT@ReturnValue=0

ELSEIF@ErrNo=547

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

BEGIN

ROLLBACKTRANSACTION

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

SELECT@ReturnValue=3

RETURN

END

ELSE

--其他未知錯誤

BEGIN

ROLLBACKTRANSACTION

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

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

問題1:無法進入數(shù)據(jù)庫

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

添加字符型數(shù)據(jù)的時候,如果該數(shù)據(jù)飲食了單引號,則會造成字符的意外截斷而產(chǎn)生錯誤。

問題3:個別觸發(fā)器無作用

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

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

OnErrorGoToErrHandler

Setg_Conn=NewConnection

DimServerNameAsString,DBNameAsString,UserNameAsString,strPasswordAsString

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

ServerName="(local)"

DBName="BuySaleStorage"

UserName="sa"

strPassword=""

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

\DB\MDF\BuySaleStorage_Data.MDF

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

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

登錄名:

sa

密碼:

無解決問題2:當(dāng)添加字符型數(shù)據(jù)的時候,如果該數(shù)據(jù)飲食了單引號,則會造成字符的意外截斷而產(chǎn)生錯誤。解決方法是把字符數(shù)據(jù)中的單引號替換為兩個單引號,使用了RealString函

溫馨提示

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

評論

0/150

提交評論