PB9.0課程設(shè)計學(xué)生成績管理系統(tǒng)_第1頁
PB9.0課程設(shè)計學(xué)生成績管理系統(tǒng)_第2頁
PB9.0課程設(shè)計學(xué)生成績管理系統(tǒng)_第3頁
PB9.0課程設(shè)計學(xué)生成績管理系統(tǒng)_第4頁
PB9.0課程設(shè)計學(xué)生成績管理系統(tǒng)_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、學(xué)生成績管理系統(tǒng)1.1系統(tǒng)分析與設(shè)計在任何高等學(xué)校,學(xué)生的成績管理都是學(xué)校教務(wù)管理的重要環(huán)節(jié)之一。隨著學(xué)校學(xué)生人數(shù)的增加,學(xué)生成績管理的任務(wù)更加繁重,必須借助現(xiàn)代化的管理工具和手段提高學(xué)生成績管理效率。學(xué)生成績管理系統(tǒng)廣泛適用于高校教務(wù)管理部門的學(xué)生成績管理,其作用和功能也是學(xué)生比較熟悉和容易理解的。一個應(yīng)用系統(tǒng)的開發(fā)過程包括分析、設(shè)計、實現(xiàn)、調(diào)試和發(fā)布等階段。以下是分析說明。1.2系統(tǒng)功能分析系統(tǒng)功能分析階段的任務(wù)就是確定該系統(tǒng)要解決的問題及其具體要求。需要通過與用戶的交流和溝通明確對系統(tǒng)的功能要求,最終列出系統(tǒng)可以實現(xiàn)的功能由用戶確認(rèn)。(1)班級信息的輸入和儲存,包括班級編號、班級名稱、所

2、屬專業(yè)、入校時間和學(xué)制等。(2)對已經(jīng)輸入的班級信息和修改、查詢。(3)學(xué)生基本信息的輸入和儲存,包括學(xué)號、姓名、性別、出生日期、班級等。(4)學(xué)生基本信息的修改和查詢。(5)每學(xué)期初各班所開設(shè)課程的輸入,包括課程名、學(xué)期、學(xué)時等。(6)各班所開設(shè)課程信息的修改和查詢。(7)學(xué)期末輸入每個學(xué)生的考試成績。(8)學(xué)生成績的修改。(9)查詢每個學(xué)生某學(xué)期的各科成績。(10)查詢并打印某班某學(xué)期所有學(xué)生的各科成績。(11)查詢并打印某班某學(xué)期所有學(xué)生的各科成績。(12)系統(tǒng)具有用戶和密碼的管理。1.3系統(tǒng)功能模塊設(shè)計通過通過對上述各項功能的分析、分類、綜合,按照模塊化程序設(shè)計的要求,得到如圖1所示的

3、功能模塊圖。學(xué)生成績管理系統(tǒng)系統(tǒng)管理班級信息管理學(xué)生基本信息管理課程信息管理成績信息管理登陸控制用戶管理密碼修改班級信息輸入班級信息查詢班級信息修改學(xué)生基本信息輸入學(xué)生基本信息修改學(xué)生基本信息查詢課程信息輸入課程信息查詢修改成績輸入成績修改成績查詢圖12數(shù)據(jù)庫設(shè)計與實現(xiàn)數(shù)據(jù)庫在一個管理信息系統(tǒng)中占有非常重要的地位,數(shù)據(jù)庫結(jié)構(gòu)的好壞將直接影響到應(yīng)用系統(tǒng)操作效率已經(jīng)能否保證數(shù)據(jù)的一致性、完成性和安全性。2.1 數(shù)據(jù)庫設(shè)計根據(jù)學(xué)生成績管理系統(tǒng)的功能要求,通過分析系統(tǒng)要設(shè)計的相關(guān)實體一集要收集、存儲和操縱數(shù)據(jù)信息,得到如圖2所示的系統(tǒng)e-r圖。根據(jù)系統(tǒng)e-r圖得到以下關(guān)系模式。班級(班級編號,班級名稱

4、,所屬專業(yè),學(xué)制,入學(xué)時間,人數(shù))學(xué)生基本信息(學(xué)號,姓名,性別,出生日期,家庭住址,班級編號)課程(班級編號,學(xué)期,課程名稱,學(xué)時,教師)成績(學(xué)號,課程名稱,成績)為了系統(tǒng)的使用安全,要建立用戶管理,而使用權(quán)限分為管理員和一般用戶兩類,因此需要建立一個存儲用戶信息的關(guān)系。用戶(姓名,密碼,權(quán)限)2.2 創(chuàng)建數(shù)據(jù)庫根據(jù)關(guān)系模式,確定要建立的數(shù)據(jù)庫和表。首先,在d盤根目錄下建立本實例的工作文件夾“xscj”再在”d:xscj”文件夾下建立文件夾”data”,用于存儲數(shù)據(jù)文件。在powerbuilder開發(fā)環(huán)境中打開數(shù)據(jù)庫面板,實用odb odbc接口建立adaptive server anyw

5、here 8.0(asa 8.0)的數(shù)據(jù)庫d:xscjdataxscj.db,然后依次建立以下5個表和1個視圖。ctrl+n 新建shift+f7打開數(shù)據(jù)面板 選擇odb odbc-utilities-create asa database選擇table-new table設(shè)置參數(shù)如圖 其他表設(shè)置如圖1.“班級”表表名:banji主鍵:bjbh2.“學(xué)生基本信息”表表名:jiben主鍵:xh3.“課程”表表名:bjkc主鍵:(bjbh,xq,kcmc)4.“成績”表表名:xscj主鍵:(xh,xqkcmc)5.“用戶”表表名:users主鍵:xm依次建立好主鍵和外鍵如圖所示6.視圖為了訪問數(shù)據(jù)

6、庫方便,還建立一個視圖“xsbj”,該視圖由學(xué)生基本信息表和班級表連接而成,對應(yīng)的sql語句如下:create view xsbj (xh,xm,xb,csrq,bjbh,bjmc,zymc) as select jiben.xh,jiben.xm,jiben.xb,jiben.csrq,banji.bjbh,banji.bjmc,banji.zymc from dba.banji,dba.jiben where(jiben.bjbh = banji.bjbh)然后保存就可以了。3創(chuàng)建應(yīng)用對象完成數(shù)據(jù)庫的設(shè)計和系統(tǒng)功能設(shè)計之后,可以開始各個功能模塊的實現(xiàn)。在powerbuilder中開發(fā)應(yīng)用程

7、序是時,就是創(chuàng)建各種對象、為對象設(shè)置屬性以及編寫事件腳本的過程。但不是簡單的順序過程,有時需要返回為前面創(chuàng)建的對象補充腳本。(1)創(chuàng)建新的工作空間,工作空間文件路徑及名稱設(shè)為“d:xscjxscj.pbw”(2)創(chuàng)建應(yīng)用對象,應(yīng)用對象名設(shè)置為“app_xscj”,應(yīng)用庫文件路徑及名稱設(shè)為“d:xscjpbl”,目標(biāo)文件路徑及名稱設(shè)為“d:xscjxscj.pbt”(3)打開應(yīng)用對象面板,應(yīng)用對象app_xscj的icon屬性設(shè)置為“d:xscjbook.iso”。books.ico是預(yù)先準(zhǔn)備的圖標(biāo)文件。(4)為應(yīng)用對象app_xscj的open事件編寫代碼如下。/ profile xscjsq

8、lca.dbms = odbcsqlca.autocommit = falsesqlca.dbparm = connectstring=dsn=xscjconnect;if sqlca.sqlcode0 thenmessagebox(提示,數(shù)據(jù)庫連接失??!)elseopen(w_logion)end if執(zhí)行此應(yīng)用時,首先鏈接數(shù)據(jù)庫“xscj”,成功后打開登陸窗口。4創(chuàng)建應(yīng)用對象本模塊實現(xiàn)用戶登陸控制、用戶自己的密碼修改和用戶管理,其中用戶管理包括修改用戶信息,添加新用戶,刪除用戶,只有管理員級用戶有此權(quán)限。4.1 設(shè)計管理登陸窗口登陸窗口如圖所示1.創(chuàng)建窗口并設(shè)置屬性創(chuàng)建登陸窗口w_logi

9、n,調(diào)整其大小,在窗口上放置1個圖片控件,3個靜態(tài)文本控件,1個成組框控件,2個單行編輯器控件,2個命令控制按鈕控件,各個控件的位置和大小如圖所示。對象屬性取值w_logintitle登陸window typeresponse!sle_2passwordtrue2.編寫腳本(1)定義全局變量string gs_username , gs_password , gs_admin (2) 定義實例變量int li_n存儲登錄時用戶輸入密碼錯誤的嘗試次數(shù),控制在最多3次機會。必須圍實例變量,不能是局部變量。(3)登陸窗口w_logind 的open 事件腳本如下:int li_n=3初始化變量li_

10、n,限制出錯次數(shù)為3次。(4)【確定】按鈕cb_1的clicked事件腳本如下。string ls_username, ls_passwordls_username=trim(sle_1.text)ls_password=trim(sle_2.text)if ls_username= or ls_password= thenmessagebox(提示,用戶名和密碼不能為空)else select , users.password, users.admin into :gs_username, :gs_password, :gs_admin from users where

11、( = :ls_username ) and ( users.password = :ls_password ); if sqlca.sqlcode=0 thenopen(w_main)close(w_logion)elseli_n=li_n - 1if li_n0 thenmessagebox(提示,用戶名密碼錯誤)elsemessagebox(提示,錯誤超過3次,自動退出)haltend ifend ifend if(5)【放棄】按鈕cb_2的clicked事件腳本如下:halt4.2 設(shè)計密碼修改窗口密碼修改窗口如圖所示:1.創(chuàng)建窗口并設(shè)置屬性創(chuàng)建密碼修改窗口w_m

12、mxg,調(diào)整其大小,在窗口上放置3個靜態(tài)文本控件(st_1,st_2,st_2)3個單行編輯器控件(sle_1,sle_2,sle_3)2個命令按鈕控件(cb_1,cb_2)各個控件的位置和大小參照圖調(diào)整。w_mmxgtitle修改密碼windows typeresponse!sle_2passwordtruesle_3passwordtrue2.【確定】按鈕cb_1的clicked事件腳本如下:string ls_passwordif trim(sle_1.text)=trim(sle_3.text) thenmessagebox(提示,舊密碼錯誤)elseif trim(sle_2.tex

13、t)=trim(sle_3.text) thenls_password=trim(sle_2.text)update usersset password = :ls_passwordwhere ( = :gs_username) and( users.password = :gs_password ) ;if sqlca.sqlcode0 thenmessagebox(提示,密碼修改不成功)elseclose(parent)messagebox(提示,密碼修改成功)end ifelsemessagebox(提示,兩次新密碼不相同)end ifend if(2)【取消】按鈕

14、cb_2的clicked事件腳本如下close(parent)4.3設(shè)計用戶管理的數(shù)據(jù)窗口和窗口用戶管理窗口如圖所示:1.設(shè)計數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口“d_yhgl”,顯示風(fēng)格圍“grid”,數(shù)據(jù)源類型圍”quick select”,發(fā)布如圖所示。其中控件“admin”的編輯風(fēng)格改為“dropdownlistbox”,碼表(code table)如圖。數(shù)據(jù)窗口d_yhgl生成的sql select語句為: select , users.password, users.admin from users 2.創(chuàng)建窗口并設(shè)置屬性創(chuàng)建用戶管理窗口w_yhgl,調(diào)整其大小,在窗口上位置1

15、個數(shù)據(jù)窗口控件(dw_1)、4個命令按鈕控件(cb_1,cb_2,cb_3,cb_4)各個控件的位置和大小參照如圖調(diào)整。cb_3text保存enabledtrue3.編寫腳本(1)用戶管理窗口w_yhgl的open事件腳本如下。dw_1.settransobject( sqlca )dw_1.retrieve()(2)用戶管理窗口w_yhgl的closequery事件腳本如下:integer rtdw_1.accepttext()if dw_1.modifiedcount( ) =0 and dw_1.deletedcount( )=0 thenreturn 0elsert=messagebo

16、x(提示,添加修改內(nèi)容未保存,確定要退出嗎?,question!,yesno!)if rt=1 thenreturn 0end ifend ifreturn 1(3)數(shù)據(jù)窗口控件dw_1的itemchanged事件腳本如下cb_3.enabled=true(4)【添加】按鈕控制cb_1的clicked事件腳本如下:integer rowrow=dw_1.insertrow(0)dw_1.scrolltorow(row)(5)【刪除】按鈕控件cb_2的clicked事件腳本如下:dw_1.deleterow(0)cb_3.enabled=true(6)【保存】按鈕控件cb_3的clicked事件

17、腳本如下:if dw_1.update(true,false )=1 thendw_1.resetupdate()commit;cb_3.enabled=falseelserollback;messagebox(錯誤,保存數(shù)據(jù)失敗!)end if(7)【退出】按鈕控件cb_4的clickedclose(patent)5設(shè)計主窗口和菜單主窗口和菜單是系統(tǒng)工具的主界面。5.1菜單結(jié)構(gòu)如圖所示。菜單對象名為“m_main”,菜單欄中的菜單項設(shè)置了訪問鍵,常用的菜單項設(shè)置了快捷鍵,最常用的菜單項在工具條上建立了按鈕。(1)【系統(tǒng)】菜單下【密碼修改】菜單項的clicked事件腳本如下open(w_mmx

18、g)(2)【系統(tǒng)】菜單下【用戶管理】菜單項的clicked事件腳本如下:open(w_yhgl)(3)【系統(tǒng)】菜單下【退出系統(tǒng)】菜單項的clicked事件腳本如下:close(parentwindow)(4)【班級管理】菜單【錄入班級信息】菜單項clicked事件腳本如下:opensheet(w_banji_shuru,w_main,6,original!)其功能是在主窗口(w_main)中,以輸入班級信息窗口w_banji_shuru的原來大?。╫riginal!參數(shù)指定)打開,并在第6個菜單(即【窗口】菜單)下列出該窗口的名稱。(5)【班級管理】菜單需愛修改【修改班級信息】菜單項的clic

19、ked事件腳本如下:opensheet(w_xiugai,w_main,6,original! )(6)【班級管理】菜單下【修改班級信息】菜單項的菜單項的clicked事件腳本如下:opensheet(w_banji_liulan,w_main,6,original!) (7)【學(xué)生管理】菜單下【錄入學(xué)生信息】菜單項的clicked事件腳本如下:opensheet(w_jiben_shuru,w_main,6,original!) (8)【學(xué)生管理】菜單下【修改學(xué)生信息】菜單項的clicked事件腳本如下:opensheet(w_jiben_xiugai,w_main,6,original!)

20、 (9)【學(xué)生管理】菜單下【查詢學(xué)生信息】菜單項的clicked事件腳本如下:opensheet(w_jiben_chaxun,w_main,6,original! )(10)【課程管理】菜單下【錄入/修改開設(shè)課程】菜單項的clicked事件腳本如下:opensheet(w_bjkc_shuruxiugai,w_main,6,original! )(11)【課程管理】菜單下【查詢開設(shè)課程信息】菜單項的clicked事件腳本如下:opensheet(w_bjkc_chaxun,w_main,6,original! )(12)【成績管理】菜單下【錄入修改成績】菜單項的clicked事件腳本如下:o

21、pensheet(w_xscj_shuru,w_main,6,original! )(13)【成績管理】菜單下【查詢個人成績】菜單項的clicked事件腳本如下:opensheet(w_xscj_grcx,w_main,6,original! )(14)【成績管理】菜單下【查詢班級成績】菜單項的clicked事件腳本如下:opensheet(w_xscj_bjcx,w_main,6,original! )(15)【成績管理】菜單下【查詢課程成績】菜單項的clicked事件腳本如下:opensheet(w_xscj_kccx,w_main,6,original! )(16)【窗口】菜單下【層疊窗

22、口】菜單項的clicked事件腳本如下:w_main.arrangesheets (cascade!)(17)【幫助】菜單下【關(guān)于】菜單項的clicked事件腳本如下:open(w_about)(18)【幫助】菜單下【聯(lián)機幫助】菜單項的clicked事件腳本如下:showhelp(xscjhelp.chm,index!)5.2設(shè)計主窗口設(shè)計窗口如圖所示創(chuàng)建窗口對象w_main,w_maintitle學(xué)生成績管理系統(tǒng)window typemdihelp!menunamem_mainwindowstatemaximized窗口對象w_main的open事件腳本如下if gs_admin=n the

23、nm_main.m_系統(tǒng)s.m_用戶管理.enabled=falseend if其功能是非管理員用戶計入系統(tǒng)時關(guān)閉【用戶管理】菜單項6設(shè)計班級管理模塊本模塊實現(xiàn)班級信息的輸入、修改和查詢。6.1設(shè)計訪問班級信息的數(shù)據(jù)窗口1.設(shè)計輸入班級信息的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_banji_shuru,顯示風(fēng)格為“freeform”,數(shù)據(jù)源類型為“quick select”如圖所示。數(shù)據(jù)窗口d_banji_shuru生成的sql select語句為: select banji.bjbh, banji.bjmc, banji.zymc, banji.xz, banji.rxsj, banji.rs from

24、banji 2.設(shè)計修改班級信息的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_banji_xiugai,顯示風(fēng)格為“grid”數(shù)據(jù)源類型為“quick select”數(shù)據(jù)窗口d_banjid_banji_xiugai生成的sql select 語句為: select banji.bjbh, banji.bjmc, banji.zymc, banji.xz, banji.rxsj, banji.rs from banji order by banji.bjbh asc 6.2設(shè)計訪問班級信息的窗口首先設(shè)計兩個通用的輸入窗口和修改窗口作為父對象,實現(xiàn)一般輸入和修改的功能,窗口中的數(shù)據(jù)窗口控件不設(shè)定具體的數(shù)據(jù)窗口對象,

25、在繼承的窗口對象中再設(shè)定。通過繼承可以簡化程序設(shè)計,實現(xiàn)代碼重用。1.設(shè)計輸入窗口創(chuàng)建窗口對象w_shuru,調(diào)整其大小,放置1個數(shù)據(jù)窗口控件(dw_1)、8個命令按鈕控件(cb_1cb_8)窗口布局如圖所示。w_shurutitle錄入window typemain!resizablefalsecenterfalsemaxboxfalseminboxfalse設(shè)置完屬性后開始編寫腳本代碼,其中窗口w_shuru的open事件closequery事件、命令按鈕(【添加】、【刪除】、【保存】和【退出】)的clicked事同前面的窗口w_yhgl的相應(yīng)事件腳本。(1)【|】按鈕的clicked事件

26、腳本如下:dw_1.scrolltorow(1)(2)【】按鈕的clicked事件腳本如下:dw_1.scrollnextrow()(4)【|】按鈕的clicked事件腳本如下:dw_1.scrolltorow( dw_1.rowcount()2.設(shè)計修改窗口創(chuàng)建窗口對象w_xiugai,調(diào)整大小,放置1個數(shù)據(jù)窗口控件(dw_1),4個命令控件(cb_1cb_4),窗口布局如圖所示。w_xiugaititle修改window typemain!resizablefalsecenterfalsemaxboxfalseminboxfalse3設(shè)計輸入班級信息窗口通過繼承輸入窗口w_shuru生成輸

27、入班級信息窗口w_banji_shuru,將數(shù)據(jù)控件dw_1的dataobject屬性設(shè)置為d_banji_shuru,將窗口的title屬性改為“錄入班級信息”,此窗口設(shè)計便完成了。4.設(shè)計修改班級信息窗口通過繼承修改窗口w_xiugai生成修改班級信息窗口w_banji_xiugai,將數(shù)據(jù)控件dw_1的dataobject屬性設(shè)置為d_banji_xiugai,將窗口的title屬性改為“修改班級信息”,此窗口設(shè)計便完成了。5.設(shè)計瀏覽班級信息窗口創(chuàng)建窗口對象w_banji_liulan,調(diào)整大小,放置1個數(shù)據(jù)窗口控件dw_1,調(diào)整窗口布局如圖所示。w_banji_liulantitle

28、瀏覽班級信息window typemain!reizablefalsecenterfalsemaxboxfalseminboxfalsedw_1vscrollbarturedataobjectd_banji_xiugaienabledfalse窗口的open事件腳本如下:dw_1.settransobject( sqlca)dw_1.retrieve()7設(shè)計學(xué)生基本信息管理模塊本模塊實現(xiàn)學(xué)生基本信息的輸入,修改和查詢。7.1設(shè)計訪問學(xué)生基本信息的數(shù)據(jù)窗口1.設(shè)計輸入學(xué)生基本信息的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_jiben_shuru,顯示風(fēng)格為“freeform”,數(shù)據(jù)源類型為“quick sele

29、ct”,布局如圖所示其中,列控件“xb”的編輯風(fēng)格為“radiobuttons”,列表控件“bjbh”的編輯風(fēng)格改為“dropdowndw”,其datawindow屬性設(shè)置為“d_banji_xiugai”,display column屬性和data colum屬性都設(shè)置為“bjbh”,width of dropdown(%)屬性設(shè)置為“300”,lines in dropdown的屬性設(shè)置為“6”vscrollbar屬性設(shè)置為“true”。數(shù)據(jù)窗口d_jiben_shuru生成的sql select 語句為: select jiben.xh, jiben.xm, jiben.xb, jibe

30、n.csrq, jiben.jtzz, jiben.bjbh from jiben 2.設(shè)計修改學(xué)生基本信息的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_jiben_xiugai,顯示風(fēng)格為“grid”,數(shù)據(jù)源類型為“quick select”,布局如圖所示:其中,列控件“xb”的編輯風(fēng)格改為“dropdownlistbox”,列表項為“男”,“女”;列表控件“bjbh”的編輯風(fēng)格改為“dropdowndw”,其datawindow屬性設(shè)置為“d_jiebn_xiugai”,display columm屬性和data colum屬性都設(shè)置為“bjbh”,width of dropdown(%)屬性設(shè)置為“300”

31、,lines in dropdown屬性設(shè)置為“6”,vscrollbar屬性設(shè)置為“true”數(shù)據(jù)窗口d_jiben_xiugai生成的sql select語句為: select jiben.xh, jiben.xm, jiben.xb, jiben.csrq, jiben.jtzz, jiben.bjbh from jiben 3.設(shè)計查詢學(xué)生基本信息的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_jiebn_chaxun,顯示風(fēng)格為“grid”,數(shù)據(jù)源類型為“sql select”其中布局如圖所示其中,定義3個string型檢索參數(shù)變量mxh,mxm,mbj,分別表示學(xué)號、姓名班級,形成帶檢索參數(shù)的數(shù)據(jù)窗口。

32、該數(shù)據(jù)窗口的修改屬性默認(rèn)值即“不允許修改”數(shù)據(jù)窗口d_jiben_chaxun生成的sql select語句為: select banji.bjmc, jiben.xh, jiben.xm, jiben.xb, jiben.csrq, jiben.jtzz, jiben.bjbh from banji, jiben where ( jiben.bjbh = banji.bjbh ) and ( ( jiben.xh like :mxh ) and ( jiben.xm like :mxm ) and ( banji.bjmc like :mbj ) ) order by jiben.xh as

33、c 7.2設(shè)計訪問學(xué)生基本信息的窗口1.設(shè)計輸入學(xué)生基本信息的窗口通過繼承輸入窗口w_shuru生成輸入學(xué)生基本信息窗口w_jiben_shru,將數(shù)據(jù)控件dw_1的dataobject屬性設(shè)置為d_jiben_shuru,將窗口的title屬性改為“錄入學(xué)生基本信息”,此窗口就完成了。2.設(shè)計修改學(xué)生基本信息的窗口通過繼承輸入窗口w_xiugai生成輸入學(xué)生基本信息窗口w_jiben_xiugai,將數(shù)據(jù)控件dw_1的dataobject屬性設(shè)置為d_jiben_xiugai,將窗口的title屬性改為“修改學(xué)生基本信息”,此窗口就完成了。3.設(shè)計查詢學(xué)生基本信息的窗口要求此窗口中能夠根據(jù)學(xué)

34、生的姓名或?qū)W號查詢出學(xué)生的基本信息,能夠根據(jù)班級名稱查詢出該班所有學(xué)生的基本信息。查詢學(xué)生基本信息窗口如圖所示:首先創(chuàng)建一個窗口對象w_jiben_chaxun,調(diào)整大小,在窗口中放置2個靜態(tài)文本控件(st_1,st_2)、1個下拉表框控件(ddlb_1)、1個單行編輯器控件(sle_1)1個命令按鈕(cb_1)、1個數(shù)據(jù)窗口控件(dw_1)和一個線形控件(ln_1),調(diào)整各個控件的位置和大小?!静樵儭堪粹o的clicked事件腳本如下:dw_1.settransobject( sqlca)if ddlb_1.text= or sle_1.text= thenmessagebox(提示,查詢列和

35、查詢內(nèi)容不能空!)returnend ifstring strstr=trim(sle_1.text)choose case ddlb_1.textcase 學(xué)號dw_1.retrieve(str,%,%)case 姓名dw_1.retrieve(%,str,%)case 班級名稱dw_1.retrieve(%,%,str)end choose代碼中根據(jù)查詢依據(jù)的不同,以不同參數(shù)方式檢索數(shù)據(jù)。8設(shè)計課程管理模塊本模塊實現(xiàn)各班開設(shè)課程的輸入、修改和查詢。8.1設(shè)計訪問課程信息的數(shù)據(jù)窗口1設(shè)計輸入班級課程信息的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_bjkc_shuru,顯示風(fēng)格為“grid”,數(shù)據(jù)源類型為“qu

36、ick select”,如圖:其中,列控件“bjbh”的編輯風(fēng)格改為“dropdowndw”,其datawindow屬性設(shè)置為“d_banji_xiugai”,display columm屬性和data colum屬性都設(shè)置為“bjbh”,width of dropdown(%)屬性設(shè)置為“300”,lines in dropdown屬性設(shè)置為“6”,vscrollbar屬性設(shè)置為“true”數(shù)據(jù)窗口d_bjkc_shuru生成的sql select語句為: select bjkc.bjbh, bjkc.xq, bjkc.kcmc, bjkc.xs, bjkc.jsxm from bjkc 2

37、.設(shè)計查詢班級課程信息的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_bjkc_chaxun,顯示風(fēng)格為“grid”數(shù)據(jù)源類型為“sql select”,如圖所示:其中,定義2個string型檢索參數(shù)變量mxq,mbjmc,分別表示學(xué)期、班級,形成帶檢索參數(shù)的數(shù)據(jù)窗口。該數(shù)據(jù)窗口的修改屬性為默認(rèn)值即“不允許修改”。數(shù)據(jù)窗口d_bjkc_chaxun生成的sql select語句為: select bjkc.kcmc, bjkc.xs, bjkc.jsxm, banji.bjmc from bjkc, banji where ( banji.bjbh = bjkc.bjbh ) and ( ( bjkc.xq = :

38、mxq ) and ( banji.bjmc = :mbjmc ) ) 8.2設(shè)計訪問課程信息的窗口1.設(shè)計輸入修改班級課程信息的窗口班級課程的輸入和修改都通過此窗口完成,輸入修改禪機課程信息的窗口的布局如圖:首先,從祖先窗口w_iugai繼承生成窗口對象w_bjkc_shuruxiugai,調(diào)整其大小。然后將數(shù)據(jù)窗口控件dw_1的dataobject屬性設(shè)置為d_bjkc_shru,此窗口設(shè)計完成。2.設(shè)計查詢班級開設(shè)課程的窗口要求此窗口能夠根據(jù)輸入的學(xué)期和班級查詢出該班此學(xué)期開設(shè)的課程。查詢班級開設(shè)課程的窗口如圖:首先創(chuàng)建一個窗口對象w_bjkc_chaxun,在窗口中放置2個靜態(tài)文本控件

39、(st_1,st_2)2個下拉列表框控件(ddlb_1,ddlb_2)、1個命令按鈕(cb_1)、1個數(shù)據(jù)庫窗口控件(dw_1),調(diào)整各個控件的位置和大小。(1)窗口w_bjkc_chaxun的open事件腳本如下:dw_1.settransobject( sqlca)int li_xq, li_bjmc, nstringls_xq, ls_bjmcselect count (distinct xq) into :li_xqfrom bjkc;declare xqcursor cursor forselect xq from bjkc group by xq;open xqcursor ;fo

40、r n=1 to li_xqfetch next xqcursor into :ls_xq;ddlb_1.additem( ls_xq)nextclose xqcursor;select count (distinct bjmc) into :li_bjmcfrom banji;declare bjmccursor cursor forselect banji.bjmcfrom bjkc,banjiwhere bjkc.bjbh = banji.bjbh group by banji.bjmc;open bjmccursor;for n=1 to li_bjmcfetch next bjmcc

41、ursor into :ls_bjmc;ddlb_2.additem( ls_bjmc)nextclose bjmccursor ;(2)【查詢】按鈕的clicked事件腳本如下:dw_1.retrieve( ddlb_1.text , ddlb_2.text)9設(shè)計成績管理模塊本模塊實現(xiàn)成績的輸入、修改和多種方式的查詢與打印。9.1設(shè)計訪問成績信息的數(shù)據(jù)窗口1.設(shè)計輸入成績的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_xscj_shuru,顯示風(fēng)格為“grid”,數(shù)據(jù)源類型為“sql select”,布局如圖所示。數(shù)據(jù)來源于成績表xscj和視圖xsbj,其中,學(xué)號、學(xué)期、課程名稱和成績?yōu)槌煽儽韝scj的列,姓名

42、是視圖xsbj的列。選擇【rows】|【update properties】命令,打開數(shù)據(jù)窗口的修改屬性對話框,如圖所示,設(shè)置數(shù)據(jù)窗口的修改屬性,即只有成績表(xscj_cj)可以在數(shù)據(jù)窗口中修改,關(guān)鍵字為成績表xscj的主關(guān)鍵字(xh,xq,kcmc)。然后,單機工具條上的【tab order 】圖標(biāo),將列控件xscj_cj的tab order值設(shè)為10,再單擊【tab order】圖標(biāo)回到原設(shè)計狀態(tài)。數(shù)據(jù)窗口的檢索參數(shù)為mxq,mbjmc,mkmc,分別對應(yīng)于學(xué)期、班級名稱和課程名稱。數(shù)據(jù)窗口d_bjkc_shuru生成的sql select 語句為: select xscj.xh, xs

43、bj.xm, xscj.cj, xscj.xq, xscj.kcmc from xsbj, xscj where ( xsbj.xh = xscj.xh ) order by xscj.xh asc 2.設(shè)計查詢學(xué)生個人某學(xué)期各科成績的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_xscj_grcx,顯示風(fēng)格為“grid”,數(shù)據(jù)源類型為“quick select”,其布局如圖所示。在【summary】條中添加一個計算機域控件,計算機數(shù)據(jù)窗口中成績總和。數(shù)據(jù)窗口的檢索參數(shù)為mxh、mxq,分別對應(yīng)于學(xué)號和學(xué)期。數(shù)據(jù)窗口d_bjkc_shuru,生成的ssql select語句為: select xscj.kcmc,

44、xscj.cj from xscj where ( xscj.xh = :mxh ) and ( xscj.xq = :mxq ) 3.設(shè)計查詢班級某班級某學(xué)期全體學(xué)生各科成績的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_xscj_bjcx,顯示風(fēng)格為“cross tab”,數(shù)據(jù)源類型為“sql select”,布局如圖所示。數(shù)據(jù)來源于成績表xscj和視圖xsbj,其中,學(xué)號、課程名稱和成績?yōu)槌煽儽韝scj的列,姓名是視圖xsbj的列。在【header1】條中添加2個計算機域控件,對應(yīng)的表達(dá)式分別為mbjmc和mxq,3個文本控件,其文本分別為“成績單”、“班級:”和“學(xué)期:”。數(shù)據(jù)窗口的檢索參數(shù)為mxq和mbj

45、mc,分別對應(yīng)于學(xué)期和班級名稱。修改屬性取默認(rèn)值(不允許修改)。數(shù)據(jù)窗口d_bjkc_shuru生成的sql select語句為: select xscj.xh, xsbj.xm, xscj.kcmc, xscj.cj, xscj.xq, xsbj.bjmc from xsbj, xscj where ( xsbj.xh = xscj.xh ) and ( ( xscj.xq = :mxq ) and ( xsbj.bjmc = :mbjmc ) ) order by xscj.xh asc 4.設(shè)計查詢班級某學(xué)期全體學(xué)生某科成績的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_xscj_kccx,顯示風(fēng)格為“n-u

46、p”,欄數(shù)為2,數(shù)據(jù)源類型為“sql select”,其布局如圖所示。數(shù)據(jù)來源域成績表xscj和視圖xsbj。其中,學(xué)號和成績?yōu)槌煽儽韝scj的列,姓名是視圖xsbj的列。在【header】條中添加2個計算機域控件對應(yīng)的表達(dá)式分別為mbjmc和mkcmc,3個文本控件,其文本分別為“成績單”“班級:”和“課程”數(shù)據(jù)庫窗口的檢索參數(shù)為mxq、mbjmc、和mkcmc,分別對應(yīng)于學(xué)期、班級名稱和課程名稱。修改屬性取默認(rèn)值。數(shù)據(jù)窗口d_bjkc_shuru生成的sql select語句為: select xscj.xh, xsbj.xm, xscj.cj from xsbj, xscj where

47、( xsbj.xh = xscj.xh ) and ( ( xscj.xq = :mxq ) and ( xsbj.bjmc = :mbjmc ) and ( xscj.kcmc = :mkcmc ) ) order by xscj.xh asc 9.2設(shè)計王文成績信息的窗口1.設(shè)計輸入成績的窗口輸入成績的窗口如圖。首先創(chuàng)建窗口對象w_xscj_shuru,在窗口上放置1個分組框控件,3個靜態(tài)文本控件,3個下拉列表框控件,3個命令按鈕控件和1個數(shù)據(jù)窗口控件。根據(jù)圖所示的布局調(diào)整數(shù)據(jù)窗口和控件大小、位置及有關(guān)屬性。其中,【保存】按鈕的enabled屬性設(shè)置為false;數(shù)據(jù)窗口控件調(diào)整到只顯示學(xué)

48、號、姓名和成績3列,vscrollbar屬性設(shè)為ture,數(shù)據(jù)窗口對象為d_xscj_shru,3個下拉列表框控件的列表項為空,由代碼動態(tài)生成。各個窗口和控件的事件腳本如下:(1)窗口的open事件腳本如下dw_1.settransobject( sqlca)intli_xq, li_bjmc, li_kcmc,nstringls_xq, ls_bjmc, ls_kcmcselect count(distinct xq) into :li_xqfrom bjkc;declare xqcursor cursor forselect xq from bjkc group by xq;open xq

49、cursor ;for n=1 to li_xqfetch next xqcursor into :ls_xq;ddlb_1.additem( ls_xq)nextclose xqcursor ;select count(distinct bjbh) into :li_bjmcfrom bjkc;declare bjmccursor cursor forselect banji.bjmcfrom bjkc, banjiwhere bjkc.bjbh = banji.bjbh group by banji.bjmc;open bjmccursor ;for n=1 to li_bjmcfetch next bjmccursor into :ls_bjmc;ddlb_2.additem( ls_bjmc)nextclose bjmccursor;(2)窗口的closequery事件腳本如下。integer rtdw_1.accepttext()if dw_1.modifiedcount() =0 thenreturn 0elsert=messagebox(提示,添加修改內(nèi)容未保存,確實要退出嗎?,question!,yesno!)if rt=1 thenreturn 0end ifend ifreturn 1(3)課程的下拉列表框

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論