




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 應(yīng)急疏散系統(tǒng)施工方案
- 肇慶教資考試試題及答案
- 2025年江西職考數(shù)學(xué)試題及答案
- 5年級下冊的字
- 5s建設(shè)新聞通稿
- 礦山交叉作業(yè)施工方案
- amh低調(diào)理成功案例
- 2025年內(nèi)蒙古機電職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性測試題庫學(xué)生專用
- 2025年重慶應(yīng)用技術(shù)職業(yè)學(xué)院單招職業(yè)技能考試題庫必考題
- 2025年湖南安全技術(shù)職業(yè)學(xué)院單招職業(yè)技能測試題庫完美版
- 高邊坡施工危險源辨識及分析
- 【李建西醫(yī)案鑒賞系列】三當(dāng)歸四逆湯治療頸腫案
- 安全文明施工管理(EHS)方案(24頁)
- 結(jié)構(gòu)化思維PPT通用課件
- 劉姥姥進大觀園課本劇劇本3篇
- 新湘教版中考數(shù)學(xué)總復(fù)習(xí)教案
- 2022年拖拉機駕駛?cè)丝荚噮⒖碱}庫(含答案)
- 產(chǎn)品承認(rèn)書客(精)
- 長方體和正方體的認(rèn)識(動畫)(課堂PPT)
- 磷石膏堆場污染防治技術(shù)指南
- 鐵路建設(shè)項目施工企業(yè)信用評價辦法(鐵總建設(shè)〔2018〕124號)
評論
0/150
提交評論