5 圖書(shū)管理和查詢(xún)系統(tǒng)課程設(shè)計(jì)任務(wù)書(shū)_第1頁(yè)
5 圖書(shū)管理和查詢(xún)系統(tǒng)課程設(shè)計(jì)任務(wù)書(shū)_第2頁(yè)
5 圖書(shū)管理和查詢(xún)系統(tǒng)課程設(shè)計(jì)任務(wù)書(shū)_第3頁(yè)
5 圖書(shū)管理和查詢(xún)系統(tǒng)課程設(shè)計(jì)任務(wù)書(shū)_第4頁(yè)
5 圖書(shū)管理和查詢(xún)系統(tǒng)課程設(shè)計(jì)任務(wù)書(shū)_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、課程設(shè)計(jì)任務(wù)書(shū)1、 設(shè)計(jì)題目和功能 題目:圖書(shū)管理和查詢(xún)系統(tǒng) 功能:(1)圖書(shū)信息的錄入和刪除,出版社信息管理等;(2)圖書(shū)的檢索(包括按作者姓名、出版時(shí)間、出版社名稱(chēng)、圖書(shū)類(lèi)別、書(shū)名、關(guān)鍵字等);(3)圖書(shū)的租借(包括借書(shū)登記、限借數(shù)量控制、還書(shū)登記、過(guò)期罰款計(jì)算等);(4)借書(shū)證件的管理(包括辦新證件,掛失、注銷(xiāo)等)(5)系統(tǒng)設(shè)置(主要是不同類(lèi)型證件的可借書(shū)的總量和借書(shū)時(shí)間等)(6)統(tǒng)計(jì)資料(包括惜出數(shù)量與庫(kù)存數(shù)量的比例,各類(lèi)圖書(shū)數(shù)量與總數(shù)量的比例,熱門(mén)圖書(shū)統(tǒng)計(jì)數(shù)據(jù)等各種信息資料的統(tǒng)計(jì));(7)圖書(shū)測(cè)覽(包括對(duì)圖書(shū)摘要的測(cè)覽和新書(shū)測(cè)覽);(8)幫助信息(包括對(duì)系統(tǒng)功能的說(shuō)明、使用說(shuō)明、使用

2、注意事項(xiàng)以及系統(tǒng)的版權(quán)和版本信息等)。2、 實(shí)習(xí)目的(1)培養(yǎng)綜合應(yīng)用powerbuilder進(jìn)行應(yīng)用程序設(shè)計(jì)和解決實(shí)際問(wèn)題的能力;(2)加深對(duì)powerbuilder編程環(huán)境和編程方法的理解;(3)發(fā)揮各人的想像能力和分析能力,拓展思維空間;(4)掌握應(yīng)用程序設(shè)計(jì)的基本方法;(5)鞏固已經(jīng)學(xué)到的編程技術(shù),學(xué)會(huì)在編程中學(xué)習(xí)編程。3、 實(shí)習(xí)思路要完成該程序的設(shè)計(jì),必須先策劃好各項(xiàng)模塊與功能之間的關(guān)系,搞清楚需要完成什么功能,這些功能是由那些用戶(hù)完成的,以及一些具體功能是怎么實(shí)現(xiàn)的。下面就是我完成該程序的思路:首先要完成er圖的設(shè)計(jì):e-r圖為實(shí)體-聯(lián)系圖,提供了表示實(shí)體型、屬性和聯(lián)系的方法,用來(lái)

3、描述現(xiàn)實(shí)世界的概念模型。書(shū)名出版日期isbn號(hào)書(shū)號(hào)種類(lèi)字?jǐn)?shù)圖書(shū)定價(jià)種類(lèi)出版社借閱摘要應(yīng)還日期借出日期性別借書(shū)證號(hào)最多本數(shù)系別讀者班級(jí)最大天數(shù)身份然后要完成的是數(shù)據(jù)庫(kù)的設(shè)計(jì):1) 對(duì)圖書(shū)信息表的設(shè)計(jì):2)對(duì)出版社表的設(shè)計(jì):3)對(duì)借閱證表的設(shè)計(jì):4)對(duì)借閱記錄表的設(shè)計(jì):5) 對(duì)用戶(hù)權(quán)限表的設(shè)計(jì):本次實(shí)習(xí)是為了實(shí)踐pwerbuider的使用以及數(shù)據(jù)庫(kù)的建立與連接。根據(jù)老師提出的要求,大概分析這次的程序至少完成以下幾個(gè)功能:1. 新書(shū)入庫(kù)與舊書(shū)銷(xiāo)毀2. 圖書(shū)證的申請(qǐng),掛失以及注銷(xiāo)3. 借書(shū)還書(shū)的功能4. 用戶(hù)分類(lèi),分管理員、學(xué)生和教師三類(lèi)用戶(hù)(基本上教師與學(xué)生所能實(shí)現(xiàn)的功能大體一致,不同的是教師所借圖

4、書(shū)最大數(shù)量及借出的最大天數(shù)與學(xué)生有所不同,這點(diǎn)需要在程序中能進(jìn)行修改)5. 出版社的添加與修改要實(shí)現(xiàn)以上各種功能,首先要完成的是用戶(hù)的管理,管理員可以對(duì)教師和學(xué)生兩類(lèi)用戶(hù)的權(quán)限進(jìn)行修改,也可以申請(qǐng),刪除之類(lèi)的。所以,該程序一開(kāi)始就對(duì)此功能進(jìn)行了設(shè)定。選擇用戶(hù)分類(lèi),可以根據(jù)自己的需要登錄不同用戶(hù)中,對(duì)所要完成的功能進(jìn)行操作:選擇要登陸的用戶(hù),然后點(diǎn)擊登錄就能切換到對(duì)應(yīng)的頁(yè)面。此窗口并沒(méi)有復(fù)雜的編程,只用到簡(jiǎn)單的open函數(shù)。接下來(lái)先進(jìn)行管理員登陸的設(shè)置。管理員登陸之后要完成的有如下功能:新書(shū)入庫(kù)與銷(xiāo)毀,證件申請(qǐng)掛失注銷(xiāo),用戶(hù)權(quán)限的設(shè)定,出版社的添加與修改??捎貌藛螜趯?duì)所要進(jìn)行的功能進(jìn)行選擇,這樣

5、比較簡(jiǎn)便:圖書(shū)證件的申請(qǐng),需要把信息插入數(shù)據(jù)庫(kù)中,需要填寫(xiě)的信息有圖書(shū)證號(hào),用戶(hù)類(lèi)型,以及姓名,班級(jí),系別。當(dāng)必要的數(shù)據(jù)未被輸入時(shí)會(huì)彈出窗口提示并重新進(jìn)行操作,申請(qǐng)成功的話(huà)就把填寫(xiě)的信息加入certificateinfo表中。申請(qǐng)按鈕的代碼如下:long ll_id,ll_istring ls_name,ls_sex,ls_banji,ls_depart,ls_flag,is_id/if sle_id.text= or isnull(sle_id.text)thenmessagebox(錯(cuò)誤,請(qǐng)輸入您的借書(shū)證號(hào)!) sle_id.setfocus()returnelseif sle_name.

6、text= or isnull(sle_name.text)thenmessagebox(錯(cuò)誤,請(qǐng)輸入申請(qǐng)人姓名!)sle_name.setfocus()returnend ifif rb_1.checked=true thenls_flag=0elseif rb_2.checked=true thenls_flag=1end ifis_id=trim(sle_id.text)ll_id=long(is_id)ls_name=trim(sle_name.text)ls_sex=trim(sle_sex.text)ls_banji=trim(sle_banji.text)ls_depart=tr

7、im(sle_depart.text)insert into certificateinfo(cert_id,name,sex,banji,depart,flag)values(: ll_id,: ls_name,: ls_sex,: ls_banji,: ls_depart,: ls_flag);sle_id.text=sle_name.text=sle_sex.text=sle_banji.text=sle_depart.text=messagebox(成功,恭喜你,申請(qǐng)圖書(shū)證成功!)運(yùn)行窗口一覽:在輸入信息時(shí),選擇了學(xué)生,加入表中時(shí)會(huì)在flag一欄填入0,選擇教師,會(huì)在flag一欄中填入

8、1。因此在掛失的時(shí)候就把flag的信息改為2,意味著證件已掛失,不能再進(jìn)行借書(shū)還書(shū)功能了。到此,申請(qǐng)圖書(shū)證及掛失注銷(xiāo)的功能已基本實(shí)現(xiàn)。接下來(lái)要實(shí)現(xiàn)的是新書(shū)入庫(kù),根據(jù)bookinfo表中的信息,在加入信息的時(shí)候需要填寫(xiě)圖書(shū)編號(hào),書(shū)名,isdn號(hào),作者,出版日期等。在點(diǎn)擊確認(rèn)按鈕時(shí),和申請(qǐng)證件的一樣,需要把必要的信息填上才能進(jìn)行下一步操作,否則會(huì)提示并返回,正確的話(huà)系統(tǒng)會(huì)把該表中所填入的信息添加到bookinfo表中相應(yīng)的欄中。代碼如下:long ll_id,ll_idate ld_publishinteger li_words,li_price,li_numberstring ls_isdn,l

9、s_name,ls_author,ls_publisher,ls_kind,is_idif sle_id.text= or isnull (sle_id.text) then /messagebox(失敗,請(qǐng)輸入圖書(shū)編號(hào)!)sle_id.setfocus()returnelseif sle_name.text= or isnull(sle_name.text) then /messagebox(失敗,請(qǐng)輸入圖書(shū)名字!)sle_name.setfocus()returnend ifif sle_publish.text and not isnull(sle_publish) thenif isd

10、ate(sle_publish.text)thenld_publish=date(sle_publish.text)elsemessagebox(錯(cuò)誤,請(qǐng)使用“年-月-日”的日期格式)sle_publish.setfocus()returnend ifend ifif ddplb_kind. text=none thenls_kind=elsels_kind=trim(ddplb_kind.text)end if/is_id=trim(sle_id.text)ll_id=long(is_id)ls_name=trim(sle_name.text)ls_isdn=trim(sle_isdn.te

11、xt)ls_author=trim(sle_author.text)ls_publisher=trim(sle_publisher.text)li_words=integer(sle_words.text)li_price=integer(sle_price.text)li_number=integer(sle_number.text)ld_publish=date(sle_publish.text)ls_kind=ddplb_kind.text/insert into bookinfo(bookid,isdn,title,publish,author,words,publisher,pric

12、e,number,abstract,kind)values(: ll_id,: ls_isdn,: ls_name,: ld_publish,: ls_author,: li_words,: ls_publisher,: li_price,: li_number,: mle_zhaiyao.text,: ls_kind);sle_id.text=sle_isdn.text=sle_name.text=sle_publish.text=mle_zhaiyao.text=sle_publisher.text=sle_price.text=sle_number.text=sle_words.text

13、=sle_author.text=sle_id.setfocus()messagebox(成功,添加圖書(shū)信息成功!)填加完新書(shū)以后,還有可能有需要把以前囤積或太舊的圖書(shū)銷(xiāo)毀,因此就要進(jìn)行圖書(shū)銷(xiāo)毀的功能了,由于此功能也很簡(jiǎn)單,根據(jù)輸入的圖書(shū)證編號(hào)在bookinfo表中刪除相應(yīng)的行。在此就不再多做介紹。當(dāng)進(jìn)的圖書(shū)多時(shí),就有可能與出版社有所聯(lián)系,因此,出版社的信息也是必不可少的,鑒于過(guò)多出版社電話(huà)地址等因素經(jīng)常發(fā)生變化,就需要進(jìn)行修改的功能,此功能由管理員用戶(hù)完成。出版社添加對(duì)應(yīng)的表是publisherinfo表,如果想修改的話(huà)可直接在數(shù)據(jù)查詢(xún)窗口里修改,這樣便于操作,而且簡(jiǎn)單名了。點(diǎn)擊確認(rèn)是要查找

14、出版社信息,如果修改數(shù)據(jù)的話(huà),點(diǎn)擊修改按鈕,就可保存。此項(xiàng)功能用到的代碼也很簡(jiǎn)單:if dw_chashe.update()=1 thencommit;messagebox(成功,已完成修改!)elserollback;messagebox(失敗,輸入有誤!)end if運(yùn)行窗口一覽:完成了這幾項(xiàng)相對(duì)簡(jiǎn)單的功能之后,管理員還需進(jìn)行修改用戶(hù)權(quán)限的操作,該操作需要修改quanxian表中的數(shù)據(jù)即可,我做的是修改學(xué)生何老師的窗口是分開(kāi)的,即點(diǎn)擊修改學(xué)生用戶(hù)權(quán)限彈出一個(gè)窗口,點(diǎn)擊修改教師用戶(hù)權(quán)限彈出的是另一個(gè)窗口。不過(guò)他們代碼和窗口設(shè)計(jì)大體一樣,以修改學(xué)生權(quán)限為例,代碼如下:long a,ba=lon

15、g(sle_1.text)b=long(sle_2.text)if sle_1.text=or isnull(sle_1.text) thenmessagebox(失敗,請(qǐng)輸入您要修改的本數(shù)!) sle_1.setfocus() returnelseif sle_2.text=or isnull(sle_1.text) thenmessagebox(失敗,請(qǐng)輸入您要修改的天數(shù)!) sle_2.setfocus() returnend ifupdate quanxianset quanxian.benshu=:a,quanxian.tianshu=:bwhere quanxian.leixing

16、=0;messagebox(成功,修改學(xué)生借書(shū)權(quán)限成功!)sle_1.text=sle_2.text=sle_1.setfocus()在上面已經(jīng)講過(guò),學(xué)生的標(biāo)記為0,在這里就修改標(biāo)記為0的那行即可。修改教師權(quán)限類(lèi)似。這樣,管理員的功能差不多已經(jīng)實(shí)現(xiàn)完畢,接下來(lái)還要進(jìn)行的就是學(xué)生和教師的功能了,他們的功能大體一樣,而且相應(yīng)的借書(shū)證號(hào)也有標(biāo)記加以區(qū)別,因此他們都可用同樣的窗口來(lái)完成所要進(jìn)行的操作。在登錄窗口下無(wú)論選擇學(xué)生還是教師,都會(huì)彈出選擇用戶(hù)操作窗口。用戶(hù)可以在查找圖書(shū)的下方就可借閱書(shū)籍,這樣簡(jiǎn)化了操作,往往都是用戶(hù)先要找自己喜歡的書(shū)籍,然后記住書(shū)號(hào)才能借閱,所以我把查找和租借圖書(shū)放在一個(gè)窗口

17、,歸還則是另一個(gè)窗口。首先進(jìn)行查找租借圖書(shū)的功能。查找圖書(shū)的功能比較麻煩,但由于以前做過(guò)相同的例子,因此還能夠完整的進(jìn)行下去,有按作者姓名查找,按出版日期查找,按出版社查找,按圖書(shū)分類(lèi)查找,按書(shū)名查找。每個(gè)查找方式都要新建一個(gè)數(shù)據(jù)查詢(xún)窗口,根據(jù)數(shù)據(jù)庫(kù)對(duì)應(yīng)表中數(shù)值類(lèi)型建立相應(yīng)的查詢(xún)窗口,再把他們統(tǒng)一到一個(gè)分頁(yè)欄里面。以按出版日期查找為例,因?yàn)閿?shù)據(jù)庫(kù)表中出版日期為date型的,查詢(xún)?nèi)掌谟植皇前凑找粋€(gè)日期查詢(xún)的,要有個(gè)起始日期和一個(gè)終止日期。要查詢(xún)的出版日期要=起始日期,并且=終止日期,同時(shí)還要注意輸入的時(shí)候一定要按照日期類(lèi)型來(lái)輸入,否則系統(tǒng)會(huì)提示錯(cuò)誤并要求重新就行操作。查到相應(yīng)的行并顯示該行的所有

18、信息,這樣就完成了按日期查詢(xún)的功能,代碼如下:string ls_start,ls_enddate ld_start,ld_endif isdate(sle_datestart.text) thenif isdate(sle_dateend.text) thenld_start=date (sle_datestart.text)ld_end=date (sle_dateend.text)dw_date.retrieve (ld_start,ld_end)elsemessagebox(錯(cuò)誤,請(qǐng)按照年-月-日格式輸入結(jié)束日期!)end ifelsemessagebox(錯(cuò)誤,請(qǐng)按照年-月-日格式輸

19、入開(kāi)始日期!)end ifsle_datestart.setfocus()通過(guò)各種方式,用戶(hù)查找到自己想要借閱的書(shū)籍,然后在下方輸入自己的圖書(shū)證號(hào)和所要借閱的圖書(shū)編號(hào)就可完成借書(shū)的功能。運(yùn)行窗口一覽:借閱此書(shū)按鈕代碼為:long bookid,cert_id,i,s,ff,b,flag,a,couflag=1 string fdate loandates,yinghuan,hbookid=long(sle_1.text)cert_id=long(sle_2.text)loandates=today()select certificateinfo.cert_idinto :ifrom certi

20、ficateinfowhere certificateinfo.cert_id=:cert_id;select certificateinfo.flaginto :ffrom certificateinfowhere certificateinfo.cert_id=:cert_id;ff=long(f)/select loan.flaginto :sfrom loanwhere loan.bookid=:bookid;select quanxian.benshu into:bfrom quanxianwhere quanxian.leixing=:f;/select quanxian.tian

21、shuinto :afrom quanxianwhere quanxian.leixing=:f;/select count(*)into :coufrom loanwhere cert_id=:sle_1.text and flag=1;if ff2 and cou=b thenmessagebox(失敗,您借書(shū)本數(shù)已到最大數(shù)量,請(qǐng)先還書(shū)!)elseif i0 and ff2 and s1 thenh=relativedate(loandates,a)insert into loan (bookid,cert_id,loandates,yinghuan,flag)values(:bookid

22、,:cert_id,:loandates,:h,:flag);messagebox(成功,借書(shū)已成功,請(qǐng)按時(shí)還書(shū)!)sle_1.text= sle_2.text= sle_1.setfocus()elseif s=1 and i0 thenmessagebox(失敗,此書(shū)已借出!)sle_1.text=sle_1.setfocus()/elseif i0 and ff=2 thenmessagebox(失敗,此證已掛失!)sle_2.text=sle_2.setfocus()elsemessagebox(失敗,此證件無(wú)效!)sle_2.text=sle_2.setfocus()end if首先

23、還是判斷必要信息是不是填了,此項(xiàng)功能比較麻煩,首先要判斷借書(shū)證id對(duì)不對(duì),對(duì)的話(huà)就賦值給i,如果有的話(huà)就要判斷是不是掛失的,接下來(lái)就是看看所借書(shū)是尚未被還,被還之后才能借,在此我還設(shè)計(jì)了一點(diǎn)人性化的東西,當(dāng)借書(shū)證id不對(duì)或掛失就會(huì)id那一欄清空,把鼠標(biāo)放到id欄中讓其重新輸入。如果要借的書(shū)若是在別人借走的期間那就把圖書(shū)id欄清空,讓其再次尋找,就不用頻繁的輸入借書(shū)證id。最后在都符合的情況下,檢查下該借閱者所借的本數(shù)夠不夠該類(lèi)用戶(hù)的最大限度,如果夠了的話(huà)就提示失敗,請(qǐng)先還書(shū)。不夠的話(huà)就能借出。還書(shū)是教師學(xué)生的最后一個(gè)功能了,也是該系統(tǒng)的最后一個(gè)功能,還書(shū)的時(shí)候還要檢查借的該書(shū)是不是到了該還的時(shí)

24、候沒(méi)有還,如果沒(méi)有在應(yīng)還日期之前還書(shū)的話(huà)就提示要繳納一定的滯納金,以做警示。讀者要還書(shū)的時(shí)候可直接還,也可先查閱自己的借閱檔案(在此就還要用到一個(gè)數(shù)據(jù)查詢(xún)窗口,連接到loan表中根據(jù)cert_id查詢(xún)),看自己還有哪幾本書(shū)沒(méi)有歸還的(標(biāo)記為0的說(shuō)明已經(jīng)歸還,留作檔案,標(biāo)記為1的書(shū)說(shuō)明還未歸還)。運(yùn)行窗口一覽:還書(shū)代碼如下:long bookid,readerid,c,daysstring bid,rid,flagbid=trim(sle_huan.text)bookid=long(bid)date bor,ret,yh/select loandates into:borfrom loan wh

25、ere bookid=:bid;select yinghuan into:yhfrom loan where bookid=:bid;select cert_id into:readeridfrom loanwhere bookid=:bid;rid=string(readerid)select flaginto:flagfrom certificateinfo where cert_id=:readerid;select tianshu into:days from quanxian where leixing=:flag;/ret=today()c=daysafter(ret,yh)if

26、sle_huan.text=or isnull(sle_huan.text) thenmessagebox(失敗,請(qǐng)輸入您要還的圖書(shū)編號(hào)!) sle_huan.setfocus()elseif c=0 thenmessagebox(提示,您借的書(shū)沒(méi)有及時(shí)歸還,請(qǐng)繳費(fèi)1元!)end if/update loanset flag=0where loan.bookid=:bookid;messagebox(成功,還書(shū)已成功!)sle_huan.text=dw_huanshu.retrieve(bid)到此,這個(gè)實(shí)驗(yàn)算是徹底完成。已實(shí)現(xiàn)了預(yù)期實(shí)現(xiàn)的目的。4、 問(wèn)題解析在做實(shí)驗(yàn)時(shí)我遇到過(guò)很多問(wèn)題,比如在

27、借書(shū)時(shí),系統(tǒng)需要把應(yīng)還日期計(jì)算出來(lái),而借書(shū)天數(shù)是一個(gè)變量,如果是30的話(huà)就能實(shí)現(xiàn),我一直用日期直接加上天數(shù)的變量,最終總是實(shí)現(xiàn)不了:insert into loan (bookid,cert_id,loandates,yinghuan,flag)values(:bookid,:cert_id,:loandates,:loandates+tianshu,:flag);在別人的幫助之下,我知道了日期于長(zhǎng)整形的數(shù)不能相加(tianshu是個(gè)長(zhǎng)整形的),因此需要增加一個(gè)函數(shù),把他們相加起來(lái):h=relativedate(loandates,a)最后在應(yīng)還日期那一欄中填入的是 h,之后就是在判斷本數(shù)的時(shí)候,需要統(tǒng)計(jì)該證件已借的書(shū)數(shù)與最大數(shù)量相比,此項(xiàng)也比較難,我也是在別人幫助

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論