版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
圖書管理系統(tǒng)目錄1.問題描述 、概述:舊的手工紀(jì)錄的宿舍管理方式已經(jīng)不能適應(yīng)高速發(fā)展的信息化時(shí)代,新的宿舍管理系統(tǒng)開發(fā)出來之后,學(xué)校的現(xiàn)有的宿舍信息管理將有很大的改觀,由過去的人工方式轉(zhuǎn)變?yōu)橛?jì)算機(jī)方式,由效率低、數(shù)據(jù)冗余、易產(chǎn)生錯(cuò)誤轉(zhuǎn)變?yōu)闄z索迅速、查找方便、可靠性高、存儲(chǔ)量大。這些優(yōu)點(diǎn)能夠極大地提高效率,也是學(xué)??茖W(xué)化、正規(guī)化管理的重要條件。學(xué)生宿舍管理系統(tǒng)采用的是計(jì)算機(jī)化管理,系統(tǒng)做的盡量人性化,使用者會(huì)感到操作非常方便,管理人員需要做的就是將數(shù)據(jù)輸入到系統(tǒng)的數(shù)據(jù)庫中去。由于數(shù)據(jù)庫的存儲(chǔ)容量相當(dāng)大,而且比較穩(wěn)定,適合較長(zhǎng)時(shí)間的保存,也不容易丟失。這無疑是為信息存儲(chǔ)量比較大的學(xué)校提供了一個(gè)方便、快捷的操作方式。2、課程設(shè)計(jì)的需求分析2.1、設(shè)計(jì)任務(wù):學(xué)生宿舍是同學(xué)最為熟悉的領(lǐng)域,假定學(xué)校有多棟宿舍樓,每棟樓有多層,每層有多個(gè)寢室,每個(gè)寢室可住多名學(xué)生,學(xué)生宿舍管理系統(tǒng)對(duì)學(xué)校的學(xué)生宿舍進(jìn)行規(guī)范管理,其管理的對(duì)象如下:·宿舍信息:編號(hào)、樓層、床位數(shù)、單價(jià)等。·學(xué)生:學(xué)號(hào)、姓名、性別、年齡、所在院系、年級(jí)、電話等。每個(gè)宿舍最多可以住4位同學(xué),每個(gè)同學(xué)只能在一個(gè)宿舍,不同宿舍的費(fèi)用標(biāo)準(zhǔn)可以不同。不同院系、年級(jí)的同學(xué)可以住同一間宿舍。2.1、設(shè)計(jì)要求:系統(tǒng)要能夠?qū)λ奚?、學(xué)生、住宿信息進(jìn)行登記、調(diào)整,并能隨時(shí)進(jìn)行各種查詢、統(tǒng)計(jì)等處理。包括:·寢室分配:根據(jù)院系、年級(jí)分配寢室。·學(xué)生管理:實(shí)現(xiàn)入住學(xué)生信息的登記、維護(hù)和查詢功能。·信息查詢:按公寓樓號(hào)、學(xué)生姓名等查詢住宿信息。·出入登記(可選):對(duì)學(xué)生進(jìn)出公寓的情況進(jìn)行登記、實(shí)現(xiàn)基本的出入監(jiān)控功能3、概念結(jié)構(gòu)設(shè)計(jì)3.1、概念結(jié)構(gòu)設(shè)計(jì)工具(E-R模型)3.2、入住登記子系統(tǒng)(局部)3.2.1、子系統(tǒng)描述主要是學(xué)生入住的管理,包括學(xué)生入住的申請(qǐng),查詢是否存在該學(xué)生,查詢是否有空余的宿舍以及宿舍的分配3.2.2、分E-R圖3.2.3、說明可以通過這個(gè)系統(tǒng)來解決學(xué)生入住的申請(qǐng)和分配等各種問題3.3、外出登記子系統(tǒng)3.3.1、子系統(tǒng)描述主要是學(xué)生外出的管理問題,包括學(xué)生外出的申請(qǐng),外出的審核,外出的等級(jí)等為題。3.3.2、分E-R圖3.3.3、說明可以通過這個(gè)系統(tǒng)解決學(xué)生外出的登記的各種問題。3.4、調(diào)整宿舍子系統(tǒng)3.4.1、子系統(tǒng)描述主要是學(xué)生宿舍的調(diào)整,宿舍表的更新問題。3.4.2、分E-R圖3.4.3、說明可以通過這個(gè)系統(tǒng)解決學(xué)生宿舍的調(diào)整問題,包括宿舍的申請(qǐng)調(diào)整,調(diào)整原因的判斷以及調(diào)整后宿舍表的更新問題。3.5、宿舍智能分配子系統(tǒng)3.5.1、子系統(tǒng)描述主要是學(xué)生宿舍的分配問題。3.5.2、分E-R圖3.5.3、說明可以通過這個(gè)子系統(tǒng)來分配學(xué)生的宿舍,包括按學(xué)院分配以及按年級(jí)分配。3.6、信息查詢子系統(tǒng)3.6.1、子系統(tǒng)描述主要是查詢學(xué)生宿舍的問題。3.6.2、分E-R圖3.6.3、說明可以通過子系統(tǒng)來查詢學(xué)生的宿舍包括按公寓查詢以及按學(xué)生名字查詢。3.7、總體E-R圖4、邏輯結(jié)構(gòu)設(shè)計(jì)4.1、關(guān)系數(shù)據(jù)模式4.1.1、學(xué)生信息(stu_info)字段描述數(shù)據(jù)類型數(shù)據(jù)長(zhǎng)度NULLPrimarykey約束Stu_num學(xué)號(hào)IntNYname姓名varchar12NNsex性別varchar4NN男/女a(chǎn)ge年齡intNN0-99fac所在學(xué)院varchar50NNclass所在班級(jí)varchar50NNcelphone電話varchar16NNEntry_date入學(xué)日期dateNN4.1.2、宿舍信息(dorm_info)字段描述數(shù)據(jù)類型數(shù)據(jù)長(zhǎng)度NULLPrimarykey約束dorm_num宿舍編號(hào)intNYflo所在樓層intNN0-20Bad_amount床位數(shù)IntNN<=4Avi_bad可用床位數(shù)IntYN<=4unit_price單價(jià)floatNN4.1.3、出入信息(inout_info)字段描述數(shù)據(jù)類型數(shù)據(jù)長(zhǎng)度NULLPrimarykey約束stu_num學(xué)號(hào)intNforeignkeydorm_num所住宿舍intNforeignkeyleft_time離開時(shí)間DatetimeNNback_time回來時(shí)間DatetimeNNreason離開原因varchar50NNover_time是否晚歸varchar2NN是/否4.1.4、入住信息(stay_info)字段描述數(shù)據(jù)類型數(shù)據(jù)長(zhǎng)度NULLPrimarykey約束dorm_num宿舍編號(hào)intNforeignkeystu_num學(xué)號(hào)intNforeignkeyHave_in已住人數(shù)intNN<=4in_date入住日期dateNN4.1.5、調(diào)整信息字段描述數(shù)據(jù)類型數(shù)據(jù)長(zhǎng)度NULLPrimarykey約束stu_num學(xué)號(hào)intNYsrc原宿舍intNNdst調(diào)后宿舍intNNch_date調(diào)整日期dateNNch_reason調(diào)整原因varchar50NN4.2視圖的設(shè)計(jì)4.2.1宿舍信息表視圖創(chuàng)建查看宿舍信息表的視圖,其中應(yīng)該包含宿舍的所有信息。并且應(yīng)該按可用床位數(shù)遞減createviewview_dormASSELECTtop100[dorm_num],[flo],[bad_amount],[unit_price],[avi_bad]FROMdorm_infoorderbyavi_baddesc創(chuàng)建按宿舍號(hào)查看住宿信息的視圖,其中應(yīng)包含住宿登記時(shí)的所有信息,并且按照宿舍號(hào)遞減排列createviewview_stay_bydormASSELECTtop100dorm_num,stu_num,have_in,in_dateFROMstay_infoorderbydorm_numdesc創(chuàng)建按學(xué)號(hào)查看住宿信息的視圖,其中應(yīng)包含住宿登記時(shí)的所有信息,并且按照宿舍號(hào)遞減排列createviewview_stay_bystuASSELECTtop100dorm_num,stu_num,have_in,in_dateFROMstay_infoorderbystu_numdesc創(chuàng)建查看出入信息的視圖,其中應(yīng)包含出入登記時(shí)的所有信息,并且按照離開時(shí)間遞減排列createviewview_io_infoasSELECTtop100stu_num,dorm_num,left_time,back_time,reason,over_timeFROMdbo.inout_infoorderbyleft_time5、數(shù)據(jù)庫物理設(shè)計(jì)與實(shí)施5.1、數(shù)據(jù)庫應(yīng)用的硬件、軟件環(huán)境介紹電腦配置為AMDAthlon(速龍)IIX2260雙核處理器,2G內(nèi)存,WindowsXP專業(yè)版32位SP3(DirectX9.0c)操作系統(tǒng),安裝mysql數(shù)據(jù)庫服務(wù)做測(cè)試。5.2、物理結(jié)構(gòu)設(shè)計(jì)考慮到索引能加快查詢的速度,所以在需要經(jīng)常進(jìn)行查詢的列創(chuàng)建索引。其中學(xué)生信息的學(xué)號(hào)、宿舍信息的宿舍編號(hào)、入住信息中學(xué)生的學(xué)號(hào)和宿舍的編號(hào),這幾個(gè)列都需要?jiǎng)?chuàng)建索引。由于前兩項(xiàng)已經(jīng)是主鍵,所以無需額外創(chuàng)建索引?,F(xiàn)在為后兩項(xiàng)創(chuàng)建索引。5.3、索引的設(shè)計(jì)為入住信息中學(xué)生的學(xué)號(hào)和宿舍的編號(hào)創(chuàng)建索引:createuniqueindex入住信息中學(xué)生的學(xué)號(hào)ix_stay_info1onstay_info(stu_num)createindex宿舍的編號(hào)ix_stay_info2onstay_info(dorm_num)5.4、建立數(shù)據(jù)庫首先創(chuàng)建名為sdms的學(xué)生宿舍管理數(shù)據(jù)庫,createdatabasesdms.5.4.1、創(chuàng)建宿舍信息表usesdmscreatetabledorm_info(dorm_numintnotnullprimarykey,flo intnotnull,bad_amountintnotnull,avi_badintnull,unit_pricefloatnotnull)并且創(chuàng)建約束,使床位數(shù)和可用床位數(shù)不能大于4個(gè),因?yàn)橐粋€(gè)宿舍最多能住四個(gè)人,并且樓層數(shù)在0-20之間。altertabledorm_infoaddconstraintck_badcheck(bad_amount<=4)altertabledorm_infoaddconstraintck_avicheck(avi_bad<=4)altertabledorm_infoaddconstraintck_flocheck(flo>=0andflo<=20)5.4.2、創(chuàng)建學(xué)生信息表createtablestu_info(stu_numintnotnullprimarykey,namevarchar(12)notnull,sexvarchar(4)notnull,ageintnotnull,facvarchar(50)notnull,classvarchar(50)notnull,celphonevarchar(16)notnull,entry_datedatenotnull)創(chuàng)建約束,性別只能是男或女,并且年齡只能在0-99之間altertablestu_infoaddconstraintch_sexcheck(sexin('男','女'))ALTERTABLEstu_infoADDconstraintck_agecheck(age>=0andage<=99)5.4.3、創(chuàng)建出人登記信息表createtableinout_info( stu_numintnotnullreferencesstu_info(stu_num), dorm_numintnotnullreferencesdorm_info(dorm_num), left_timedatetimenotnull, back_timedatetimenotnull, reasonvarchar(50)notnull, over_timevarchar(2)notnull)創(chuàng)建約束,是否晚歸字段這能選擇是或者否。altertableinout_infoaddconstraintck_otcheck(over_timein('是','否'))5.4.4、創(chuàng)建入住信息登記表createtablestay_info(dorm_numintnotnullreferencesdorm_info(dorm_num),stu_numintnotnullreferencesstu_info(stu_num),have_inintnotnull,in_datedate)創(chuàng)建約束,已住人數(shù)不能超過4個(gè).altertablestay_infoaddconstraintck_incheck(have_in<=4)5.4.5、創(chuàng)建宿舍調(diào)整登記表createtablechange_info( stu_numintnotnullprimarykey, srcintnotnull, dstintnotnull, ch_datedatenotnull, ch_reasonvarchar(50)notnull)5.5、加載測(cè)試數(shù)據(jù)5.5.1、加載住宿信息創(chuàng)建一個(gè)存儲(chǔ)過程用于錄入住宿信息。USE[sdms]GOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATEPROCEDURE[dbo].[insert_stay_info]@dorm_numint,@stu_numint,@have_inintASBEGIN SETNOCOUNTON; insertintostay_infovalues(@dorm_num,@stu_num,@have_in,GETDATE())END其中包括要住宿的宿舍號(hào),要住宿的學(xué)生學(xué)號(hào),該宿舍應(yīng)經(jīng)住了多少人。如圖所示:?jiǎn)螕舸_定后數(shù)據(jù)成功的錄入到數(shù)據(jù)庫的住宿信息表中,如圖:學(xué)號(hào)為1104402302的學(xué)號(hào)已經(jīng)插入到住宿信息表中。5.5.2、記載學(xué)生信息創(chuàng)建一個(gè)存儲(chǔ)過程用于錄入學(xué)生信息。USE[sdms]GOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATEPROCEDURE[dbo].[insert_stu_info]@stu_numint,@namevarchar(12),@sexvarchar(4),@facvarchar(50),@classvarchar(50),@celphonevarchar(16),@ageintASBEGIN SETNOCOUNTON; insertintostu_infovalues(@stu_num,@name,@sex,@fac,@class,@celphone,GETDATE(),@age)END其中包括要住宿的學(xué)號(hào)、姓名、性別、所在學(xué)院、班級(jí)、電話、年齡。如圖所示:?jiǎn)螕舸_定后數(shù)據(jù)成功的錄入到數(shù)據(jù)庫的學(xué)生信息表中,如圖:學(xué)號(hào)為1104402304的學(xué)生已經(jīng)成功錄入到學(xué)生信息表中。5.5.3、加載宿舍信息創(chuàng)建一個(gè)存儲(chǔ)過程用于錄入宿舍信息。SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATEPROCEDUREinsert_dorm_info@dorm_numint,@floint,@bad_amountint,@unit_pricefloat,@avi_badintASBEGIN SETNOCOUNTON;insertintodorm_infovalues(@dorm_num,@flo,@bad_amount,@unit_price,@avi_bad)ENDGO其中包括要住宿的宿舍號(hào)、所在樓層、床位位數(shù)、單價(jià)、空余床位。如圖所示:擊確定后數(shù)據(jù)成功的錄入到數(shù)據(jù)庫的宿舍信息表中,如圖:6、數(shù)據(jù)操作與實(shí)現(xiàn)根據(jù)需求中給出的數(shù)據(jù)處理要求,設(shè)計(jì)訪問數(shù)據(jù)庫的具體要求,并用SQL語言加以實(shí)現(xiàn)。運(yùn)行SQL語句進(jìn)行測(cè)試。6.1、數(shù)據(jù)查詢操作創(chuàng)建存儲(chǔ)過程view_dorm_bydrom,實(shí)現(xiàn)按公寓查找宿舍的住宿信息。CREATEPROCEDUREview_dorm_bydrom@dorm_numint//定義變量用于等待用戶輸入宿舍號(hào)ASBEGIN SETNOCOUNTON; SELECT*fromdorm_infowheredorm_num=@dorm_num//查詢出與輸入宿舍號(hào)相符的結(jié)果END結(jié)果如圖:?jiǎn)螕舸_定后:創(chuàng)建存儲(chǔ)過程view_dorm_bystu,實(shí)現(xiàn)按學(xué)號(hào)查詢學(xué)生的住宿信息。CREATEPROCEDUREview_dorm_bystu@stu_numintASBEGIN SETNOCOUNTON; SELECT*fromstay_infowherestu_num=@stu_numEND執(zhí)行存儲(chǔ)過程結(jié)果如圖所示:?jiǎn)螕簟按_定”,顯示出學(xué)生在哪個(gè)宿舍住,該宿舍住著幾個(gè)人,什么時(shí)候入住6.2、數(shù)據(jù)更新操作宿舍調(diào)整登記。創(chuàng)建一個(gè)存儲(chǔ)過程用于登記個(gè)別學(xué)生調(diào)整宿舍的記錄。同時(shí)跟新原來的住宿信息表,使得調(diào)整后學(xué)生的宿舍信息表能同步進(jìn)行。這里避免創(chuàng)建觸發(fā)器的繁雜,只使用了更新的語句。CREATEPROCEDUREchange_dorm@stu_numint,@dst_dormint,@reasonvarchar(50)ASBEGIN SETNOCOUNTON; declarecur1cursorfor SELECTdorm_numfromstay_infowherestu_num=@stu_num--查詢需要調(diào)整的人員的原來住的宿舍 opencur1 declare@srcint--聲明游標(biāo)以獲取查詢結(jié)果 fetchcur1into@src insertintochange_info(stu_num,src,dst,ch_date,ch_reason)values(@stu_num,@src,@dst_dorm,GETDATE(),@reason)updatestay_infosetdorm_num=@dst_dormwherestu_num=@stu_num--將調(diào)整的信息插入到調(diào)整登記信息表中 closecur1 END執(zhí)行存儲(chǔ)過程如下:需要登記的信息成功錄入到調(diào)整信息表中原住宿信息表數(shù)據(jù)。調(diào)整宿舍后:6.3、數(shù)據(jù)維護(hù)操作6.3.1同步更新觸發(fā)器是系統(tǒng)使用過程中,需要使用一個(gè)觸發(fā)器來同步信息。例如當(dāng)有學(xué)生要住宿時(shí),該宿舍已住人數(shù)要增加1,而宿舍信息中的相應(yīng)空余床位數(shù)要減1。所以在住宿登記表中使用以下觸發(fā)器。SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATETRIGGERtri1ONstay_infoAFTERINSERTASBEGIN SETNOCOUNTON; declare@dorm_numint,@have_inint declarecur2cursorfor selectdorm_num,have_infromstay_info opencur2 fetchcur2 while(@@FETCH_STATUS<>-1) begin fetchnextfromcur2into@dorm_num,@have_in updatestay_infosethave_in=(@have_in+1)wheredorm_num=@dorm_num--更新相應(yīng)宿舍的已住人數(shù),增加1. updatedorm_infosetavi_bad=((selectavi_badfromdorm_infowheredorm_num=@dorm_num)-1)wheredorm_num=@dorm_num--更新宿舍信息表中的可用床位數(shù)(空余床位數(shù)) end closecur2ENDGO執(zhí)行登記住宿信息表的存儲(chǔ)過程插入前:插入后:6.3.2、按學(xué)院分配宿舍存儲(chǔ)過程創(chuàng)建一個(gè)存儲(chǔ)過程,用于按學(xué)院分配宿舍。使得能按同學(xué)院的學(xué)生能盡量的在同一宿舍住。USE[sdms]GOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATEPROCEDURE[dbo].[allowdorm_byfac] @facvarchar(20)ASBEGIN declare@offsetint,@bad_amountint,@sumint set@offset=1 set@bad_amount=1 set@sum=(selectdistinct(stu_num)fromstu_infowherefac=@fac) while(@sum>0) begin declare@stu_numint,@dorm_numint set@stu_num=(SELECTtop(@bad_amount)stu_numfrom
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)生會(huì)文藝部工作計(jì)劃文藝部個(gè)人工作計(jì)劃書
- 2025年定點(diǎn)扶貧工作計(jì)劃
- 2025學(xué)校總務(wù)處工作計(jì)劃例文
- 葫蘆絲教學(xué)計(jì)劃
- 幼兒園學(xué)前班個(gè)人計(jì)劃
- 如何寫好一份商業(yè)計(jì)劃書
- 銷售后勤工作計(jì)劃范文
- 《骨關(guān)節(jié)創(chuàng)傷圖》課件
- 《民法基礎(chǔ)知識(shí)》課件
- 《外匯儲(chǔ)備》課件
- 大數(shù)據(jù)+治理智慧樹知到期末考試答案章節(jié)答案2024年廣州大學(xué)
- 工貿(mào)行業(yè)重大生產(chǎn)安全事故隱患判定標(biāo)準(zhǔn)2022版(含重大安全事故隱患檢查表)
- T-SDDA 0002-2021 住宅裝飾裝修工程質(zhì)量驗(yàn)收標(biāo)準(zhǔn)
- 《涂裝工程安全設(shè)計(jì)規(guī)范》噴漆室
- 門診、住院業(yè)務(wù)流程和數(shù)據(jù)流
- 全國(guó)各省關(guān)氏輩分收集
- 壓圈沖壓模具設(shè)計(jì)說明書(終極版) 2
- 蘇教版五下數(shù)學(xué)思維訓(xùn)練7 枚舉法(原卷+解析版)
- 預(yù)防接種門診流程
- WXZ196系列微機(jī)消諧裝置說明書
- 震雄注塑機(jī)Ai_01操作說明書(中文)
評(píng)論
0/150
提交評(píng)論