版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度綠色家居產(chǎn)品免責(zé)任協(xié)議書(shū)3篇
- 2025年度農(nóng)村土地租賃與農(nóng)業(yè)廢棄物資源化利用項(xiàng)目合作合同2篇
- 二零二五年度全新音樂(lè)節(jié)演出活動(dòng)承辦服務(wù)合同3篇
- 2025年度年度合伙開(kāi)設(shè)中式快餐連鎖店合同3篇
- 2025年度農(nóng)村土地互換與農(nóng)業(yè)綠色發(fā)展合作協(xié)議
- 二零二五年度建筑用石材采購(gòu)與加工合作協(xié)議3篇
- 二零二五年度現(xiàn)代化工廠生產(chǎn)線整體轉(zhuǎn)讓協(xié)議3篇
- 2025年度養(yǎng)老院老人外出社區(qū)活動(dòng)安全保障合同3篇
- 二零二五年度金融科技基金公司投資合作協(xié)議3篇
- 二零二五年度房地產(chǎn)開(kāi)發(fā)企業(yè)借款合同3篇
- 2021年貴安新區(qū)產(chǎn)業(yè)發(fā)展控股集團(tuán)有限公司招聘筆試試題及答案解析
- 安全文化培訓(xùn) (注冊(cè)安工再培訓(xùn))課件
- 色粉-MSDS物質(zhì)安全技術(shù)資料
- 骨科學(xué)研究生復(fù)試真題匯總版
- 石油化工鋼結(jié)構(gòu)工程施工及驗(yàn)收規(guī)范
- 遼海版六年級(jí)音樂(lè)上冊(cè)第8單元《3. 演唱 姐妹們上場(chǎng)院》教學(xué)設(shè)計(jì)
- 形勢(shì)任務(wù)教育宣講材料第一講——講上情
- 物業(yè)安全員考核實(shí)施細(xì)則
- 中國(guó)地質(zhì)大學(xué)(武漢)教育發(fā)展基金會(huì)籌備成立情況報(bào)告
- 第四章破產(chǎn)法(破產(chǎn)法)教學(xué)課件
- PE拖拉管施工方案標(biāo)準(zhǔn)版
評(píng)論
0/150
提交評(píng)論