Visual FoxPro 程序設計實驗報告.doc
《Visual FoxPro 程序設計實驗報告.doc》由會員分享,可在線閱讀,更多相關《Visual FoxPro 程序設計實驗報告.doc(23頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 VF程序設計實驗報告 圖書館管理系統(tǒng) 專業(yè): 學號: 姓名: 指導教師: 2010年12月31日 目錄 第一部分 系統(tǒng)概述--------------------------------2 第二部分 系統(tǒng)功能模塊設計------------------------2 第三部分 系統(tǒng)數(shù)據(jù)庫及表設計----------------------2 第四部分 系統(tǒng)
2、菜單設計----------------------------5 第五部分 系統(tǒng)界面設計----------------------------6 第六部分 系統(tǒng)相關程序代碼-----------------------13 第七部分 實驗報告小結---------------------------22 第八部分 參考資料-------------------------------22 一、系統(tǒng)概述 近年來,隨著圖書館規(guī)模的不斷擴大,圖書數(shù)量相應的增加,有關圖書的各種信息量也成倍增加,面對龐大的信息量,傳統(tǒng)的人工管理戶導
3、致圖書管理的混亂,人力與物力過多的浪費,圖書管理費用的增加,從而使圖書館的負擔過重,影響整個圖書館的運作和控制管理。因此,為了充分發(fā)揮了圖書館的功效,最大限度地為讀者服務,必須制定一套合理、有效,規(guī)范和實用的圖書館管理系統(tǒng),對圖書資料進行集中統(tǒng)一的管理。 根據(jù)上述需要,我們建立本圖書館管理系統(tǒng)。 根據(jù)圖書、讀者和管理員三者之間的關系,本系統(tǒng)主要實現(xiàn)讀者對圖書的查詢、個人信息的修改和管理員對讀者、圖書的管理。 本系統(tǒng)采用VF6.0作為開發(fā)工具。 二、系統(tǒng)功能模塊設計 本系統(tǒng)可以完成一般圖書館關于圖書查詢、借閱及書庫管理的主要功能。其中:圖書查詢模塊可以查詢所需要的圖書;讀者管理模塊
4、中,讀者可以查看自己的信息,對登陸密碼進行修改,管理員可以對讀者進行添加和刪除;圖書管理模塊中,管理員可以為讀者進行圖書的借閱和歸還操作,以及對圖書的信息進行修改,如加入新書、刪除不能使用的圖書和更新圖書的信息;報表打印模塊中,實現(xiàn)對需要的信息進行打印輸出。系統(tǒng)結構下圖所示。 圖書館管理系統(tǒng)主界面 系統(tǒng)登陸 圖書查詢 讀者管理 圖書管理 報表打印 退出 讀者信息查看 登陸密碼修改 讀者增添刪除 圖書借閱 圖書歸還 圖書信息修改 三、數(shù)據(jù)庫及表設計 經(jīng)分析,圖書館管理系統(tǒng)主要涉及了學生、管理員和圖書三部分。因此需要建立的實體就是學生、管理員和圖書三個。 根
5、據(jù)系統(tǒng)模塊的設計,可以的到本系統(tǒng)需要建立的基本表為:讀者信息表、管理員信息表、圖書信息表、圖書借閱信息表、圖書信息表。 數(shù)據(jù)庫的相關設計如下: 其中,讀者信息表中證號為主索引,圖書信息表中總編號為主索引,圖書借閱表中對總編號和證號建立普通索引。 表單設計 (1)、讀者信息表.dbf 讀者信息表結構設計 字段名 類型 寬度 索引 證號 字符型 6 主索引 密碼 字符型 6 姓名 字符型 8 專業(yè) 字符型 10 性別 字符型 2 年級 字符型 2 院系 字符型 8 照片 通用性 30
6、備注 備注型 4 (2)管理員信息表.dbf 管理員信息表設計 字段名 類型 寬度 索引 證號 字符型 4 密碼 字符型 6 (3)、圖書信息表.dbf 圖書信息表設計 字段名 類型 寬度 索引 總編號 字符型 6 主索引 分類名 字符型 6 書名 字符型 12 作者 字符型 8 出版社 字符型 20 狀態(tài) 字符型 4 照片 通用型 4 (4)、圖書借閱信息表.dbf 圖書借閱信息表設計 字段名 類型 寬度 索引 總編號 字符型
7、 6 普通索引 證號 字符型 6 普通索引 借出日期 日期型 8 四、系統(tǒng)菜單設計 依據(jù)上述系統(tǒng)功能模塊的設計,可以得到圖書館主界面菜單:主要包括圖書查詢、讀者管理、圖書管理、報表打印和退出。其中,圖書查詢執(zhí)行命do form 圖書查詢.scx;退出執(zhí)行命令_vfp.activeform.release;讀者管理和圖書管理包含子菜單;另外,報表打印的相關設計未能實現(xiàn)。相關設計如下圖: 讀者管理菜單主要包含讀者信息查看、登陸密碼修改、讀者增添刪除三個子菜單。其中,讀者信息查看執(zhí)行命令do form 讀者信息.scx;登陸密碼修改執(zhí)行命令do form 密
8、碼修改.scx;讀者增添刪除執(zhí)行命令do form讀者增刪.scx。 相關設計結果如下圖: 圖書管理菜單包含圖書借閱、圖書歸還、圖書信息修改三個子菜單。其中,圖書歸還執(zhí)行命令do form 圖書借閱.scx;圖書歸還執(zhí)行命令do form 圖書歸還.scx;圖書信息修改執(zhí)行命令do form 圖書信息修改.scx。相關設計結果如下圖: 五、系統(tǒng)界面設計 (1) 登陸界面設計 用戶通過登陸界面進行登陸,選擇自己的用戶類型,輸入證號和密碼,如果輸入的信息與所連接的表中的數(shù)據(jù)相符,則進入圖書館的主界面,否則提示錯誤,直到輸入正確信息方能進入系統(tǒng)。 (2)系
9、統(tǒng)主界面設計 當用戶登陸證號和密碼通過驗證后,進入圖書管理系統(tǒng)的主界面,該界面由一表單及菜單組成。其中,表單上的”歡迎使用圖書館管理系統(tǒng)!”是一向左移動的動畫,以增強界面的友好感。另外,用戶可通過菜單上的各種操作對圖書進行管理。圖書館管理系統(tǒng)的主界面如下: (3)圖書查詢界面設計 用戶可以選擇查詢條件,根據(jù)書名、作者、主題詞、出版社、總編號其中的一種方式對圖書進行查詢,查詢的結果顯示在下邊一個表格中。 (4)讀者信息查看界面設計 管理員可以再次查看讀者的信息,點擊CommandGroup組中的各個圖標可以查看任意一個讀者的信息。 (5)讀者密碼修
10、改界面設計 讀者可以在此修改自己的密碼,修改后的新密碼同時在讀者信息表中對相應密碼進行更新。 (6)讀者增添刪除界面設計 管理員可以在此添加和刪除用戶,添加和刪除的用戶信息同時在讀者信息表中進行更新。 (7)圖書借閱界面設計 管理員對讀者需要借閱的圖書進行借閱操作,輸入圖書總編號及讀者的證號完成圖書的借閱流程。將此借閱的信息保存到圖書借閱信息表中。 (8)圖書歸還界面設計 管理員對讀者需要需要歸還的圖書進行歸還操作,輸入要歸還的圖書編號及讀者證號,在圖書借閱信息中進行查找并刪除,完成圖書歸還的操作。 (9)圖書信息修改界面設計
11、 本界面使用了一個PageCount為3的頁框,主要完成圖書的添加、刪除及信息更新的功能。下圖中,管理員可以對圖書進行登記,新書信息將添加到圖書信息表中,讀者可查閱到。 在本界面中,管理員可以對需要刪除的圖書從圖書信息表中刪除,輸入要刪除的圖書的總編號,系統(tǒng)進行查找,若找到則刪除,找不到則提示錯誤。 在本界面中,管理員可以通過輸入圖書的總編號,查找到需要更新的圖書,進入圖書更新界面中。 當系統(tǒng)找到對應的圖書編號時,進入如下界面。在此,管理員可以更改圖書的各種信息。 六、程序代碼 1、登陸界面 (1)登陸按鈕click事件代碼: if allt
12、rim(thisform.container1.text1.value)=="" messagebox("請輸入用戶名!") return endif if alltrim(thisform.container1.text2.value)=="" messagebox("請輸入密碼!") return endif a=thisform.container1.optiongroup1.value if a=1 use 讀者信息 locate for alltrim(證號)=alltrim(thisform.container1.text1
13、.value) if found() if alltrim(密碼)=alltrim(thisform.container1.text2.value) messagebox("登錄成功",64,"身份驗證通過") do form 圖書館主界面.scx release thisform else messagebox("密碼輸入錯誤!",16,"錯誤提示") endif else messagebox("讀者號不存在!",16,"錯誤提示")
14、 endif else use 管理員 locate for alltrim(證號)= alltrim(thisform.container1.text1.value) if found() if alltrim(密碼)=alltrim(thisform.container1.text2.value) messagebox("登錄成功!",64,"身份驗證通過") do form 圖書館主界面.scx release thisform else message
15、box("密碼輸入錯誤!",16,"錯誤提示") endif else messagebox("用戶名不存在!",16,"錯誤提示") endif endif (2) 退出按鈕click事件代碼: answer=messagebox("你決定退出系統(tǒng)嗎?",4,"提示") do case case answer=6 thisform.release case answer=7 messagebox("請輸入用戶名和密碼",0,"提示") endcase 2、系統(tǒng)主界面 (1)表單的int事件代碼: d
16、o 圖書館主界面.MPR with this,.T. THISFORM.Timer1.Enabled = .T. (2)time1的time事件代碼: IF thisform.Label1.Left+thisform.label1.width>0 thisform.Label1.Left = THIS.Parent.Label1.Left-10 ELSE thisform.Label1.Left = thisform.Width ENDIF 3、圖書查詢界面 (1)查詢按鈕的click事件代碼: OPEN DATABASE 圖書館數(shù)據(jù)庫.dbc SHARED
17、thisform.grid1.recordsource="" m=allt(thisform.text1.value) n=thisform.optiongroup1.value do case case n=1 select * from 圖書信息 where 書名==m into cursor temp thisform.grid1.recordsource="temp" case n=2 select * from 圖書信息 where alltrim(作者)==m into cursor temp thisform.grid1.recordsource
18、="temp" case n=3 select * from 圖書信息 where alltrim(書名) like "%"+m+"%" into cursor temp thisform.grid1.recordsource="temp" case n=4 select * from 圖書信息 where alltrim(出版社)==m into cursor temp thisform.grid1.recordsource="temp" case n=5 select * from 圖書信息 where alltrim(總編號)==m into cursor
19、 temp thisform.grid1.recordsource="temp" endcase thisform.refresh (2)返回按鈕的click事件代碼:thisform.release 4、讀者信息查看界面 Commandgroup組的click事件代碼: n=this.value do case case n=1 go top mandgroup1.buttons(1).enabled=.f. mandgroup1.buttons(2).enabled=.f. mandgroup1.buttons(3).enabled=.t. man
20、dgroup1.buttons(4).enabled=.t. case n=2 skip-1 if bof() go top mandgroup1.buttons(1).enabled=.f. mandgroup1.buttons(2).enabled=.f. endif mandgroup1.buttons(3).enabled=.t. mandgroup1.buttons(4).enabled=.t. case n=3 skip 1 if eof() go bottom mandgroup1.buttons(3).enable
21、d=.f. mandgroup1.buttons(4).enabled=.f. endif mandgroup1.buttons(1).enabled=.t. mandgroup1.buttons(2).enabled=.t. case n=4 go bottom mandgroup1.buttons(4).enabled=.f. mandgroup1.buttons(3).enabled=.f. mandgroup1.buttons(1).enabled=.t. mandgroup1.buttons(2).enabled=.t. case n=5
22、 thisform.release endcase thisform.refresh 5、密碼修改界面: (1)修改按鈕的click事件密碼: a=thisform.text4.value b=thisform.text1.value c=thisform.text2.value d=thisform.text3.value if alltrim(a)=="" messagebox("請輸入賬號!") thisform.text4.setfocus return endif if alltrim(b)=="" messagebox("請輸
23、入密碼!") thisform.text1.setfocus return endif if alltrim(c)=="" messagebox("請輸入新密碼!") thisform.text2.setfocus return endif if alltrim(d)=="" messagebox("請再次輸入新密碼!") thisform.text3.setfocus return endif use 讀者信息 locate for alltrim(證號)==alltrim(a) if found() if alltri
24、m(密碼)==alltrim(b) if c==d e=messagebox("確定要修改嗎?",32+1+0,"提示") if e=1 replace 密碼 with c for alltrim(證號)==alltrim(a) messagebox("密碼修改成功!") endif else messagebox("確認密碼不正確!請重新輸入!") thisform.text2.value="
25、" thisform.text3.value="" thisform.text2.setfocus endif else messagebox("密碼輸入錯誤!請重新輸入密碼!",16,"錯誤提示") thisform.text1.value="" thisform.text2.value="" thisform.text3.value="" thisform.text1.setfocus endif else messagebox("證號
26、不存在!",16,"錯誤提示") thisform.text1.value="" thisform.text2.value="" thisform.text3.value="" thisform.text4.value="" endif (2)返回按鈕的click事件代碼:release thisform 6、讀者增刪界面 (1)command1按鈕的click事件代碼: open database 圖書館數(shù)據(jù)庫.dbc shared a=allt(thisform.text1.value) b=allt(thisform.text2.valu
27、e) if a=="" messagebox("證號不能為空!",0,"提示") thisform.text1.setfocus return endif if b=="" messagebox("密碼不能為空!",0,"提示") thisform.text2.setfocus return endif use 讀者信息 locate for 證號=a if found() messagebox("該用戶已經(jīng)存在!",0,"提示") thisform.text1.value="" thisform.
28、text2.value="" thisform.text1.setfocus else insert into 讀者信息(證號,密碼) values (a,b) thisform.text1.value="" thisform.text2.value="" messagebox("恭喜你注冊成功!",0,"提示") thisform.text1.setfocus endif use (2)command2的click事件代碼: open database 圖書館數(shù)據(jù)庫.dbc shared a=allt(t
29、hisform.text3.value) if a=="" messagebox("證號不能為空!",0,"提示") return endif use 讀者信息 locate for 證號=a if found() b=messagebox("確定要刪除該用戶嗎?",1,"提示") if b=1 delete pack thisform.text3.value="" messagebox("刪除成功!",0,"提示") thisform.text3.setfocus endif
30、 else messagebox("沒有該用戶!請重新輸入!",0,"提示") thisform.text3.value="" thisform.text3.setfocus endif use (3) command3的click事件代碼:thisform.release 7、圖書借閱界面 (1)借出按鈕的click事件代碼: OPEN DATABASE 圖書館數(shù)據(jù)庫.dbc SHARED a=allt(thisform.text1.value) b=allt(thisform.text2.value) c=date() use 圖書借
31、閱信息 locate for 總編號=a if found() insert into 借書信息 values (a,b,c) messagebox("借書成功!",0,"提示") else answer=messagebox("沒有該書!是否繼續(xù)?",1,"提示") if answer=1 thisform.text1.value="" thisform.text2.value="" else thisform.release endif endif use close data
32、base (2)返回按鈕的click事件代碼:release thisform 8、圖書歸還界面 (1)歸還按鈕的click事件代碼: OPEN DATABASE 圖書館數(shù)據(jù)庫.dbc SHARED a=allt(thisform.text1.value) b=allt(thisform.text2.value) use 圖書借閱信息 locate for 總編號=a and 證號=b if found() delete answer=messagebox("確認是否還書?",1,"提示") if answer=1 pack t
33、hisform.text1.value="" thisform.text2.value="" else recall endif else messagebox("你輸入的信息不對,請確認后重新輸入!",0,"提示") endif close database (2)返回按鈕的click事件代碼:release thisform 9、圖書信息修改界面 (1)page1中的command1按鈕的click事件代碼: open database 圖書館數(shù)據(jù)庫.dbc shared zbh=allt(thisfor
34、m.pageframe1.page1.text1.value) flm=allt(thisform.pageframe1.page1.text2.value) sm=allt(thisform.pageframe1.page1.text3.value) zz=allt(thisform.pageframe1.page1.text4.value) cbs=allt(thisform.pageframe1.page1.text5.value) dj=val(allt(thisform.pageframe1.page1.text6.value)) zt=allt(thisform.pag
35、eframe1.page1.text7.value) use 圖書信息 answer=messagebox("確認添加新書嗎?",1,"提示") if answer=1 insert into 圖書信息 values (zbh,flm,sm,zz,cbs,dj,zt) messagebox("添加成功!",0,"提示") else thisform.pageframe1.page1.text1.value="" thisform.pageframe1.page1.text2.value="" thisform.pageframe1.page1.t
36、ext3.value="" thisform.pageframe1.page1.text4.value="" thisform.pageframe1.page1.text5.value="" thisform.pageframe1.page1.text6.value="" thisform.pageframe1.page1.text7.value="" endif use close database (2)page1中的command2按鈕的click事件代碼: release thisform (3)page2中的command1按鈕的click
37、事件代碼: open database 圖書館數(shù)據(jù)庫.dbc shared zbh=allt(thisform.pageframe1.page2.text1.value) use 圖書信息 locate for 書名=zbh if found() answer=messagebox("確定要刪除該書嗎?",1,"提示") if answer=1 delete pack thisform.pageframe1.page1.text1.value="" messagebox("刪除成功!",0,"提示")
38、 endif else messagebox("沒有此書!請檢查重新輸入!",0,"提示") thisform.pageframe1.page1.text1.value="" endif use close database (4)page2中的command2按鈕的click事件代碼: release thisform (5)page3中的command1按鈕的click事件代碼: open database 圖書館數(shù)據(jù)庫.dbc shared zbh=allt(thisform.pageframe1.page3.text1.value) use
39、 圖書信息 locate for 總編號=zbh if found() DO FORM 圖書信息更新.scx thisform.release else messagebox("沒有該書!請檢查重新輸入!",0,"提示") thisform.pageframe1.page1.text1.value="" endif use close database (6)page3中的command2按鈕的click事件代碼: release thisform 10、圖書信息更新界面 (1)command1的click事件代碼: ope
40、n database 圖書館數(shù)據(jù)庫.dbc shared zbh_new=allt(thisform.text1.value) flm_new=allt(thisform.text2.value) sm_new=val(allt(thisform.text3.value)) zz_new=allt(thisform.text4.value) cbs_new=allt(thisform.text5.value) dj_new=allt(thisform.text6.value) zt_new=allt(thisform.text7.value) use 圖書信息 locate
41、for 總編號=zbh if found() if !empty(zbh_new) replace 總編號 with zbh_new endif if !empty(flm_new) replace 分類名 with flm_new endif if !empty(sm_new) replace 書名 with sm_new endif if !empty(zz_new) replace 作者 with zz_new endif
42、 if !empty(cbs_new) replace 出版社 with cbs_new endif if !empty(dj_new) replace 單價 with val(dj_new) endif if !empty(zt_new) replace 狀態(tài) with zt_new endif messagebox("更新成功!",0,"提示") else messagebox("數(shù)據(jù)請輸入完整!",0,"提示") endif
43、 use (2)command2的click事件代碼: release thisform 七、實驗報告小結 經(jīng)過近兩周的設計和開發(fā),本圖書館管理系統(tǒng)基本實現(xiàn)了一個圖書館所必須的簡單功能。讀者可以進行圖書查詢、密碼修改、信息查看;管理員可以對圖書進行借閱、歸還及更新操作,對讀者進行添加和刪除。 由于我個人的水平及時間所限,本系統(tǒng)的各項功能都比較簡單,數(shù)據(jù)庫設計還有很多缺陷,如數(shù)據(jù)表的索引、視圖的應用等等,其中原先設想的報表打印這一功能由于時間限制未能予以實現(xiàn)。 下面簡單談一下,這此實驗報告給我的感想: 首先,通過本次實驗報告,我深切的認識到了開發(fā)一個系統(tǒng)原來是這么的不
44、簡單:大到整個系統(tǒng)的整體規(guī)劃,如各項功能上的設計、所需數(shù)據(jù)庫的設計,小到一個細節(jié)的具體設計,如編寫相應代碼實現(xiàn)某一功能,甚至為美化界面調整字體的字號大小,或者插入一些圖片等等都凝聚了設計人員的心血。 其次,我充分的認識到了我所學的東西,用來設計一個系統(tǒng)是多么的微不足道,設計一個相對好一些的系統(tǒng),我都還有很東西需要學習。 最后,通過這次實驗,我對所學到的知識有了一個系統(tǒng)的梳理,將所學的理論用于最終的實踐,進行了一次有益的嘗試,還有,這次實驗讓我對開發(fā)系統(tǒng)有了更進一步的認識。雖然有很多遺憾和不足,但畢竟讓我認識到自己的真實水平和實際應用中的差距,這必將督促著我更加努力學習。 八、參考資料 [1] 《Visual FoxPro程序設計教程》 第二版 劉瑞新 汪遠征 曹歡歡 等編著 機械工業(yè)出版社 [2] 《Visual FoxPro 項目開發(fā)案例教程》 李政 趙瑞 李穎 王海燕 等編著 中國水利水電出版社 [3] 《Visual FoxPro 數(shù)據(jù)庫通用模塊及典型系統(tǒng)開發(fā)實例導航》 求是科技編著 人民郵電出版社 [4] 《Visual FoxPro 數(shù)據(jù)庫系統(tǒng)項目開發(fā)實踐》 韓中孝 王凌志主編 科學出版社 [5] 一些網(wǎng)絡上的關于圖書管理的論文報告 - 22 -
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中西方家庭教育的對比ppt課件
- 《運籌學教程》第五版運籌學6對策論矩陣對策課件
- (部編版)統(tǒng)編版四年級語文下冊第2課《鄉(xiāng)下人家》ppt課件
- 全等三角形1--公開課一等獎ppt課件
- 《會跳舞樹葉娃娃》課件
- 9兒童詩兩首_人教版五年級的語文下冊課件
- 綠色植物是食物之源(我的課件)0
- 河南專版2022春八年級語文下冊第四單元16慶祝奧林匹克運動復興25周年習題課件新人教版
- 全國xx杯說課大賽機械類一等獎作品:鉗工車模的制作說課ppt課件
- 六年級下冊數(shù)學ppt課件-總復習(1)數(shù)的認識-整數(shù)∣北師大版
- 牛頓第二定律優(yōu)秀完整公開課ppt課件
- 調脂與卒中防治課件
- 點到平面的距離課件
- 聚焦新醫(yī)改形勢下的醫(yī)院發(fā)展戰(zhàn)略
- 四肢血管超聲基礎