已閱讀5頁,還剩58頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
學(xué)生成績管理系統(tǒng)一、系統(tǒng)分析與設(shè)計在任何高等院校,學(xué)生的成績管理都是學(xué)校教務(wù)管理的重要環(huán)節(jié)之一。隨著學(xué)校學(xué)生人數(shù)的增加,學(xué)生成績管理的任務(wù)更加繁重,必須借助現(xiàn)代化的管理工具和手段提高學(xué)生成績管理效率。學(xué)生成績管理系統(tǒng)廣泛適用于高校教務(wù)管理部門的學(xué)生成績管理。1、系統(tǒng)功能分析系統(tǒng)功能分析階段的任務(wù)就是確定該系統(tǒng)所要解決的問題及其具體要求。需要通過與用戶的交流和溝通明確用戶對系統(tǒng)的功能要求,最終列出系統(tǒng)可以實現(xiàn)的功能由用戶確認(rèn)。本例中的學(xué)生成績管理系統(tǒng)需要完成的主要功能如下。 班級信息的輸入和存儲,包括班級編號、班級名稱、所屬院系、入校時間和學(xué)制等。 對已經(jīng)輸入的班級信息的修改、查詢。 學(xué)生基本信息的輸入和存儲,包括學(xué)號、姓名、性別、出生日期、班級等。 學(xué)生基本信息的修改和查詢。 每學(xué)期初各班所開設(shè)課程的輸入,包括課程名、學(xué)期、學(xué)時等。 各班所開設(shè)課程信息的修改和查詢。 學(xué)期末輸入每個學(xué)生的考試成績。 學(xué)生成績的修改。 查詢某個學(xué)生某學(xué)期的各科成績。 查詢并打印某班某學(xué)期所有學(xué)生的各科成績。 查詢并打印某班某學(xué)期某科成績。 系統(tǒng)具有用戶和密碼的管理。2、系統(tǒng)功能模塊設(shè)計通過對上述各項功能的分析、分類、綜合,按照模塊化程序設(shè)計的要求,得到如圖1所示的功能模塊圖。二、數(shù)據(jù)庫設(shè)計與實現(xiàn)數(shù)據(jù)庫在一個管理信息系統(tǒng)中占有非常重要的地位,數(shù)據(jù)庫結(jié)構(gòu)的好壞將直接影響到應(yīng)用系統(tǒng)的實現(xiàn)效果和數(shù)據(jù)操作效率以及能否保證數(shù)據(jù)的一致性、完成性和安全性。圖1 系統(tǒng)功能模塊1、數(shù)據(jù)庫設(shè)計根據(jù)學(xué)生成績管理系統(tǒng)的功能要求,通過分析系統(tǒng)要涉及的相關(guān)實體以及要收集、存儲和操縱的數(shù)據(jù)信息,得到如圖2所示的系統(tǒng)E-R圖。根據(jù)系統(tǒng)E-R圖得到以下關(guān)系模式。班級(班級編號,班級名稱,所屬院系,學(xué)制,入學(xué)時間,人數(shù))。學(xué)生基本信息(學(xué)號,姓名,性別,出生日期,家庭住址,班級編號)。課程(班級編號,學(xué)期,課程名稱,學(xué)時,教師)。成績(學(xué)號,學(xué)期,課程名稱,成績)。為了系統(tǒng)的使用安全,要建立用戶管理,而用戶使用權(quán)限分為管理員和一般用戶兩類,因此需要建立一個存儲用戶信息的關(guān)系。用戶(姓名,密碼,用戶類型)。2、創(chuàng)建數(shù)據(jù)庫根據(jù)關(guān)系模式,確定需要建立的數(shù)據(jù)庫和表。在PowerBuilder開發(fā)環(huán)境中打開數(shù)據(jù)庫畫板,使用【ODB ODBC】接口建立Adaptive Server Anywhere 9.0(ASA 9.0)的數(shù)據(jù)庫D:xscjdataxscj.db,然后依次建立以下5個表和1個視圖。圖2 系統(tǒng)E_R圖1) “class”表表名:banji 主鍵:bjbh班級表2) “student”表表名:jiben主鍵:xh學(xué)生表3) “subject”表表名:bjkc主鍵:(bjbh,xq,kcmc)課程表4) “xscj”表表名:xscj主鍵:(xh,xq,kcmc)學(xué)生成績表5) “users”表表名:users主鍵:xm用戶表各個表之間通過外鍵形成如圖3所示的關(guān)聯(lián)關(guān)系。6) 視圖為了訪問數(shù)據(jù)庫方便,還建立了1個視圖“v_1”,該視圖由學(xué)生基本信息表和班級表連接而成,對應(yīng)的SQL語句如下。CREATE VIEW v_1(xh,xm,xb,csrq,bjbh,bjmc,zymc)ASSELECTstudent.xh,student.xm,student.xb,student.csrq,student.bjbh,class.bjmc,class.xbmcFROM student,classWHERE(class.bjbh=student.bjbh);完成數(shù)據(jù)庫和表的創(chuàng)建后,可以在數(shù)據(jù)庫畫板中向數(shù)據(jù)庫輸入部分?jǐn)?shù)據(jù)。其中,“用戶”表中必須輸入一條記錄(“900001”,“123456”,“管理員”),作為進(jìn)入系統(tǒng)默認(rèn)的管理員,即賬號為“900001”,密碼為“123456”,用戶類型“管理員”。圖3、各表的關(guān)聯(lián)關(guān)系三、創(chuàng)建應(yīng)用對象完成數(shù)據(jù)庫的設(shè)計和系統(tǒng)功能設(shè)計之后,可以開始各個功能模塊的實現(xiàn)。在PowerBuilder中開發(fā)應(yīng)用程序時,就是創(chuàng)建各種對象、為對象設(shè)置屬性以及編寫事件腳本的過程。 創(chuàng)建新的工作空間,工作空間文件路徑及名稱設(shè)為“d:xscjworkplace.pbw”。 創(chuàng)建應(yīng)用對象,應(yīng)用對象名設(shè)為“xscj”,應(yīng)用庫文件路徑及名稱設(shè)為“d:xscjxscj.pbl”,目標(biāo)文件路徑及名稱設(shè)為“d:xscjxscj.pbt”。(3) 為應(yīng)用對象xscj的Open事件編寫代碼如下。SQLCA.DBMS = ODBCSQLCA.AutoCommit = FalseSQLCA.DBParm = ConnectString=DSN=student;UID=dba;PWD=sqlCONNECT;if SQLCA.sqlcode0 thenmessagebox(提示,數(shù)據(jù)庫連接失敗!)elseopen(w_main)end if四、設(shè)計系統(tǒng)管理模塊本模塊實現(xiàn)用戶登錄控制、學(xué)生能查詢自己的個人成績,教師能錄入班級的課程信息,管理員能實現(xiàn)對用戶管理的控制以及對一些基本信息的錄入。1、設(shè)計登錄窗口圖4 窗口w_load1) 創(chuàng)建窗口并設(shè)置屬性創(chuàng)建登錄窗口w_load,調(diào)整其大小,在窗口上放置1個圖片控件(p_1)、4個靜態(tài)文本對象屬性取值w_mainTitle登錄Window TypeResponse!p_1picture name登錄.jpgst_1text賬號st_2text密碼passwordTRUEst_3text用戶類型st_4text歡迎登錄學(xué)生管理學(xué)系統(tǒng)TextColorLink HoveFaceName華文斜體sle_1textsle_2textcb_1text登錄cb_2text退出表 1控件(st_1、st_2、st_3、st_4)、2個單行編輯器控件(sle_1、sle_2)、1個下拉列表控件(ddlb_1)、2個命令按鈕控件(cb_1、cb_2),各個控件的屬性如表1所示,表中未列出的采用默認(rèn)值 2) 編寫腳本 定義全局變量。string gs_username,gs_password,gs_admin分別存儲登錄用戶的賬號、密碼和用戶類型。 定義實例變量。int li_n存儲登錄時用戶輸入密碼錯誤的嘗試次數(shù),控制在最多3次機會不能是局部變量。 登錄窗口w_login的Open事件腳本如下。li_n=3初始化變量li_n,限制出錯次數(shù)為3次?!镜卿洝堪粹ocb_1的Clicked事件腳本如下。string ls_username,ls_password,ls_adminls_username=trim(sle_1.text)ls_password=trim(sle_2.text)ls_admin=ddlb_1.textif ls_username= or ls_password= or ls_admin= thenmessagebox(提示,賬號,密碼,用戶類型不能為空)elseSELECT ,users.password,users.adminINTO :gs_username,:gs_password,:gs_adminFROM usersWHERE ( = :ls_username ) AND (users.password = :ls_password )AND(users.admin=:ls_admin); if sqlca.sqlcode=0 then open(w_main) close(w_load) else li_n=li_n - 1 if li_n0 then messagebox(提示,賬號或密碼錯誤) else messagebox(提示,錯誤超過3次,自動退出) halt end if end if【退出】按鈕cb_2的Clicked事件腳本如下。halt/退出程序2、設(shè)計密碼修改窗口密碼修改窗口如圖5所示。1) 創(chuàng)建窗口并設(shè)置屬性創(chuàng)建密碼修改窗口w_mmxg,調(diào)整其大小,在窗口上放置3個靜態(tài)文本控件(st_1、st_2、st_3)、3個單行編輯器控件(sle_1、sle_2、sle_3)、2個命令按鈕控件(cb_1、cb_2),各個控件的位置和大小參照圖5調(diào)整。其他需要修改的屬性見表2,表中未列出的屬性保留其默認(rèn)值。圖5 窗口w_mmxg對象屬性取值w_mmxgTitle用戶密碼設(shè)置Window TypeResponse!p_1picture name密碼修改.jpgst_1text舊密碼st_2text新密碼passwordTRUEst_3text重新輸入新密碼sle_1textpasswordTRUEsle_2textpasswordTRUEsle_3textpasswordTRUEcb_1text確定cb_2text取消表 22) 編寫腳本(1)【確定】按鈕cb_1的Clicked事件腳本如下。string ls_passwordif trim(sle_1.text)gs_password thenmessagebox(提示,舊密碼錯誤)elseif trim(sle_2.text)=(sle_3.text) thenls_password=trim(sle_2.text) UPDATE users SETpassword = :ls_password WHERE ( = :gs_username ) AND (users.password = :gs_password); if sqlca.sqlcode0 then messagebox(提示,密碼修改不成功)elseclose(parent)messagebox(提示,密碼修改完成)end ifelsemessagebox(提示,兩次密碼不相同)end if end if (2)【取消】按鈕cb_2的Clicked事件腳本如下。close(parent)3、設(shè)計用戶管理的數(shù)據(jù)窗口和窗口1) 設(shè)計數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口“d_yhgl”,顯示風(fēng)格為“Grid”,數(shù)據(jù)源類型為“Quick Select”,布局如圖6所示。數(shù)據(jù)窗口d_yhgl生成的SQL Select語句為:SELECT,users.password,users.adminFROMusers圖6 數(shù)據(jù)窗口d_yhgl其中列控件“admin”的編輯風(fēng)格改為“DropDownListBox”,碼表(CodeTable)下圖所示。2) 創(chuàng)建窗口并設(shè)置屬性創(chuàng)建用戶管理窗口w_yhgl,調(diào)整其大小,在窗口上放置1個數(shù)據(jù)窗口控件(dw_1)、4個命令按鈕控件(cb_1、cb_2、cb_3、cb_4),各個控件的位置和大小如圖7所示,其對象屬性取值w_mmxgTitle用戶密碼設(shè)置Window TypeResponse!p_1picture name用戶管理.jpgdw_1DataObjectd_yhglVScrollbarTRUEHScrollbarTRUEcb_1text添加cb_2text刪除cb_3text保存EnabledFALSEcb_4text退出表3他需要修改的屬性見表3,表中未列出的屬性保留其默認(rèn)值。圖7 窗口w_yhgl3) 編寫腳本(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=messagebox(提示,添加修改內(nèi)容未保存,確實退出嗎?,Question!,YesNo!)if rt=1 then return 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事件腳本如下。if dw_1.update(true,false)=1 thendw_1.resetupdate()commit;cb_3.enabled=falseelserollback;messagebox(提示,保存數(shù)據(jù)失敗!)end if(7)【退出】按鈕控件cb_4的Clicked事件腳本如下。close(parent)五、設(shè)計主窗口和菜單主窗口和菜單是系統(tǒng)工作的主界面。1、創(chuàng)建菜單對象菜單結(jié)構(gòu)如圖8所示。菜單對象名為“m_main”,菜單欄中的菜單項設(shè)置了訪問鍵(AccessKey),菜單項在工具條上建立了圖標(biāo)按鈕。 (1)【系統(tǒng)】菜單下【密碼修改】菜單項的Clicked事件腳本如下。open(w_mmxg)(2)【系統(tǒng)】菜單下【用戶管理】菜單項的Clicked事件腳本如下。open(w_yhgl)(3)【系統(tǒng)】菜單下【退出系統(tǒng)】菜單項的Clicked事件腳本如下。close(parentwindow)(4)【班級管理】菜單下【錄入班級信息】菜單項的Clicked事件腳本如下。opensheet(w_banji_shuru)(5)【班級管理】菜單下【修改班級信息】菜單項的Clicked事件腳本如下。opensheet(w_banji_xiugai)圖8 菜單m_main(6)【班級管理】菜單下【瀏覽班級信息】菜單項的Clicked事件腳本如下。open(w_banji_liulan)(7)【學(xué)生管理】菜單下【錄入學(xué)生信息】菜單項的Clicked事件腳本如下。open(w_student_shuru)(8)【學(xué)生管理】菜單下【修改學(xué)生信息】菜單項的Clicked事件腳本如下。open(w_student_xiugai)(9)【學(xué)生管理】菜單下【查詢學(xué)生信息】菜單項的Clicked事件腳本如下。open(w_student_chaxun)(10)【課程管理】菜單下【錄入/修改開設(shè)課程】菜單項的Clicked事件腳本如下。open(w_subject_shuruxiugai)(11)【課程管理】菜單下【查詢開設(shè)課程信息】菜單項的Clicked事件腳本如下。open(w_subject_chaxun)(12)【成績管理】菜單下【錄入修改成績】菜單項的Clicked事件腳本如下。open(w_xscj_shuru)(13)【成績管理】菜單下【查詢個人成績】菜單項的Clicked事件腳本如下。open(w_xscj_grcx)(14)【成績管理】菜單下【查詢班級成績】菜單項的Clicked事件腳本如下。open(w_xscj_bjcx)(15)【成績管理】菜單下【查詢課程成績】菜單項的Clicked事件腳本如下。open(w_xscj_kccx)(16)【窗口】菜單下【層疊窗口】菜單項的Clicked事件腳本如下。/w_main.arrangesheets(cascade!) (17)【幫助】菜單下【關(guān)于】菜單項的Clicked事件腳本如下。open(w_about)2、設(shè)計主窗口 創(chuàng)建主窗口w_main如圖9所示,其需要設(shè)置的屬性如表4所示,表中未列出的屬性保留其默認(rèn)值。圖9主窗口w_main對象屬性取值w_mainTitle學(xué)生成績管理系統(tǒng)Window Typemain!MenuNamem_mainMaxBoxFALSEp_1picture name主界面.jpg表4窗口對象w_main的Open事件腳本如下。if gs_admin=學(xué)生 thenm_main.m_系統(tǒng).m_用戶管理.enabled=falsem_main.m_學(xué)生管理.enabled=falsem_main.m_班級管理.enabled=falsem_main.m_課程管理.m_錄入修改開設(shè)課程信息.enabled=falsem_main.m_成績管理.m_錄入修改成績.enabled=falsem_main.m_成績管理.m_查詢班級成績.enabled=falsem_main.m_成績管理.m_查詢課程成績.enabled=falseelseif gs_admin=教師 thenm_main.m_系統(tǒng).m_用戶管理.enabled=false m_main.m_學(xué)生管理.enabled=false m_main.m_班級管理.enabled=falseend ifend if其功能是對用戶進(jìn)行權(quán)限控制。六、設(shè)計班級管理模塊本模塊實現(xiàn)班級信息的輸入、修改和查詢。1、設(shè)計訪問班級信息的數(shù)據(jù)窗口1) 設(shè)計輸入班級信息的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_class_shuru,顯示風(fēng)格為“Freeform”,數(shù)據(jù)源類型為“Quick Select”,其布局如圖10所示。數(shù)據(jù)窗口d_class_shuru生成的SQL Select語句為:SELECTclass.bjbh,class.bjmc,class.xbmc,class.xz,class.rxsj,class.rs FROM class圖10 數(shù)據(jù)窗口d_class_shuru2) 設(shè)計修改班級信息的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_class_xiugai,顯示風(fēng)格為“Grid”,數(shù)據(jù)源類型為“Quick Select”,其布局如圖11所示。圖11 數(shù)據(jù)窗口d_class_xiugai數(shù)據(jù)窗口d_class_xiugai生成的SQL Select語句為:SELECTclass.bjbh,class.bjmc,class.xbmc,class.xz,class.rxsj,class.rs FROM classORDER BYclass.bjbhASC2、設(shè)計訪問班級信息的窗口首先設(shè)計兩個通用的輸入窗口和修改窗口作為父對象,實現(xiàn)一般輸入和修改的功能,窗口中的數(shù)據(jù)窗口控件不設(shè)定具體的數(shù)據(jù)窗口對象,在繼承的窗口對象中再設(shè)定。通過繼承可以簡化程序設(shè)計,實現(xiàn)代碼重用。1) 設(shè)計輸入窗口創(chuàng)建窗口對象w_shuru,調(diào)整其大小,放置1個數(shù)據(jù)窗口控件(dw_1)、8個命令按鈕控件(cb_1cb_8),窗口布局如圖12所示。窗口及其控件的屬性設(shè)置見表5。圖12 窗口w_shuru對象屬性取值w_shuruTitleWindow Typeresponse!cb_1text添加cb_2text刪除cb_3text保存EnabledFALSEcb_4text退出cb_5text|cb_6textcb_8text|dw_1VscrollBarTRUE表5設(shè)置完屬性后開始編寫腳本代碼,其中窗口w_shuru的Open事件和Closequery事件、命令按鈕(【添加】、【刪除】、【保存】和【退出】)的Clicked事件同窗口w_yhgl的相應(yīng)事件腳本,在此不再重復(fù)。其他命令按鈕的事件腳本如下。(1)【|】按鈕的Clicked事件腳本如下。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),窗口布局如圖13所示。窗口及其控件的屬性設(shè)置見表6,表中未列出的采用默認(rèn)值。圖13 窗口w_xiugai對象屬性取值w_shuruTitleWindow Typeresponse!cb_1text添加cb_2text刪除cb_3text保存EnabledFALSEcb_4text退出表6窗口和控件的事件腳本與以上輸入窗口的對應(yīng)部分相同。3) 設(shè)計輸入班級信息窗口通過繼承輸入窗口w_shuru生成輸入班級信息窗口w_class_shuru,將數(shù)據(jù)控件dw_1的DataObject屬性設(shè)置為d_class_shuru,將窗口的Title屬性改為“錄入班級信息”,此窗口設(shè)計便完成了。4) 設(shè)計修改班級信息窗口通過繼承修改窗口w_xiugai生成修改班級信息窗口w_class_xiugai,將數(shù)據(jù)控件dw_1的DataObject屬性設(shè)置為d_class_xiugai,將窗口的Title屬性改為“修改班級信息”,此窗口設(shè)計便完成了。5) 設(shè)計瀏覽班級信息窗口創(chuàng)建窗口對象w_class_liulan,調(diào)整其大小,放置1個數(shù)據(jù)窗口控件dw_1,調(diào)整窗口布局如圖14所示。設(shè)置窗口的屬性為Response!,“text”屬性為“瀏覽班級信息”圖14窗口w_class_liulan窗口的Open事件腳本如下。dw_1.settransobject(sqlca)dw_1.retrieve()七、設(shè)計學(xué)生基本信息管理模塊本模塊實現(xiàn)學(xué)生基本信息的輸入、修改和查詢。1、設(shè)計訪問學(xué)生基本信息的數(shù)據(jù)窗口1) 設(shè)計輸入學(xué)生基本信息的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_student_shuru,顯示風(fēng)格為“Freeform”,數(shù)據(jù)源類型為“Quick Select”,其布局如圖15所示。其中,列控件“xb”的編輯風(fēng)格改為“RadioButtons”,碼表如圖15中所示;列控件“bjbh”的編輯風(fēng)格改為“DropDownDW”,其DataWindow屬性設(shè)置為“d_banji_xiugai”,Display Column屬性和Data Column屬性都設(shè)置為“bjbh”,Width of DropDown(%)屬性設(shè)置為“300”,Lines in DropDown屬性設(shè)置為“6”,VScrollBar屬性設(shè)置為“True”。數(shù)據(jù)窗口d_jiben_shuru生成的SQL Select語句為:SELECTstudent.xh,student.xm,student.xb,student.csrq,student.jtzz,student.bjbhFROMstudent圖15 數(shù)據(jù)窗口d_student_shuru2) 設(shè)計修改學(xué)生基本信息的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_student_xiugai,顯示風(fēng)格為“Grid”,數(shù)據(jù)源類型為“Quick Select”,其布局如圖16所示。其中,列控件“xb”的編輯風(fēng)格改為“DropDownListBox”,列表項為“男”,“女”;列控件“bjbh”的編輯風(fēng)格改為“DropDownDW”,其DataWindow屬性設(shè)置為“d_banji_xiugai”,Display Column屬性和Data Column屬性都設(shè)置為“bjbh”,Width oDropDown(%)屬性設(shè)置為“300”,Lines in DropDown屬性設(shè)置為“6”,VScrollBar屬性設(shè)置為“True”。數(shù)據(jù)窗口d_student_xiugai生成的SQL Select語句為:SELECTstudent.xh,student.xm,student.xb,student.csrq,student.jtzz,student.bjbhFROMstudentORDER BYstudent.xhASC圖16 數(shù)據(jù)窗口d_student_xiugai3) 設(shè)計查詢學(xué)生基本信息的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_student_chaxun,顯示風(fēng)格為“Grid”,數(shù)據(jù)源類型為“SQL Select”,其布局如圖17所示。其中,定義3個String型檢索參數(shù)變量mxh、mxm、mbjmc,分別表示學(xué)號、姓名、班級,形成帶檢索參數(shù)的數(shù)據(jù)窗口。該數(shù)據(jù)窗口的修改屬性為默認(rèn)值即“不允許修改”。數(shù)據(jù)窗口d_student_chaxun生成的SQL Select語句為: SELECT student.xh, student.xm, class.bjmc, student.xb, student.csrq, student.jtzz FROM class, student WHERE ( student.bjbh = class.bjbh ) and ( ( student.xh = :mxh ) OR (student.xm=:mxm)OR(class.bjmc=:mbjbc) 圖17 數(shù)據(jù)窗口d_student_chaxun2、設(shè)計訪問學(xué)生基本信息的窗口1) 設(shè)計輸入學(xué)生基本信息的窗口通過繼承輸入窗口w_shuru生成輸入學(xué)生基本信息窗口w_student_shuru,如圖18所示,將數(shù)據(jù)控件dw_1的DataObject屬性設(shè)置為d_student_shuru,將窗口的Title屬性改為“錄入學(xué)生基本信息”,此窗口設(shè)計便完成了。圖18 窗口w_student_shuru2) 設(shè)計修改學(xué)生基本信息的窗口通過繼承修改窗口w_xiugai生成修改學(xué)生基本信息窗口w_student_xiugai,如圖19所示,將數(shù)據(jù)控件dw_1的DataObject屬性設(shè)置為d_student_xiugai,將窗口的Title屬性改為“修改學(xué)生基本信息”,此窗口設(shè)計便完成了。圖19 窗口w_student_xiugai3) 設(shè)計查詢學(xué)生基本信息的窗口要求此窗口中能夠根據(jù)學(xué)生的姓名或?qū)W號查詢出學(xué)生的基本信息,能夠根據(jù)班級名稱查詢出該班所有學(xué)生的基本信息。查詢學(xué)生基本信息窗口如圖20所示。圖20 w_student_chaxun首先創(chuàng)建一個窗口對象w_student_chaxun,調(diào)整其大小,在窗口中放置2個靜態(tài)文本控件(st_1,st_2)、1個下拉圖片列表框控件(ddplb_1)、1個單行編輯器控件(sle_1)、1個命令按鈕(cb_1)、1個數(shù)據(jù)窗口控件(dw_1),調(diào)整各個控件的位置和大小。設(shè)置窗口及其控件的屬性見表7。對象屬性取值w_student_chaxunTitle查詢學(xué)生信息Window Typeresponse!dw_1DataObjectd_student_chaxunVScrollbarTRUEHScrollbarTRUEst_1text選擇檢索條件st_2text輸入檢索的內(nèi)容ddplb_1items學(xué)號,姓名,班級名稱sle_1textcb_1text查詢表7窗口的Open事件腳本。dw_1.settransobject(sqlca)【查詢】按鈕的click事件腳本如下。dw_1.settransobject(sqlca)if ddplb_1.text= or sle_1.text= thenmessagebox(提示,查詢列和查詢內(nèi)容不能為空!)returnend if string strstr=trim(sle_1.text)choose case ddplb_1.textcase 學(xué)號dw_1.retrieve(str,)case 姓名dw_1.retrieve(,str,)case 班級名稱dw_1.retrieve(,str)end choose代碼中根據(jù)查詢依據(jù)的不同,以不同參數(shù)方式檢索數(shù)據(jù)。八、設(shè)計課程管理模塊本模塊實現(xiàn)各班開設(shè)課程的輸入、修改和查詢。1、 設(shè)計訪問課程信息的數(shù)據(jù)窗口1)、設(shè)計輸入班級課程信息的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_subject_shuru,顯示風(fēng)格為“Grid”,數(shù)據(jù)源類型為“Quick Select”,其布局如圖21所示。圖21 數(shù)據(jù)窗口d_subject_shuru其中,列控件“bjbh”的編輯風(fēng)格改為“DropDownDW”,其DataWindow屬性設(shè)置為“d_banji_xiugai”,Display Column屬性和Data Column屬性都設(shè)置為“bjbh”,Widthof DropDown(%)屬性設(shè)置為“300”,Lines in DropDown屬性設(shè)置為“6”,VScrollBar屬性設(shè)置為“True”。數(shù)據(jù)窗口d_subject_shuru生成的SQL Select語句為:SELECTsubject.bjbh,subject.xq,subject.kcmc,subject.xs,subject.jsxmFROMsubject2) 、設(shè)計查詢班級課程信息的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_subject_chaxun,顯示風(fēng)格為“Grid”,數(shù)據(jù)源類型為“SQL Select”,其布局如圖22所示。其中,定義2個String型檢索參數(shù)變量mxq、mbjmc,分別表示學(xué)期、班級,形成帶檢索參數(shù)的數(shù)據(jù)窗口。該數(shù)據(jù)窗口的修改屬性為默認(rèn)值即“不允許修改”。數(shù)據(jù)窗口d_subject_chaxun生成的SQL Select語句為:SELECT subject.kcmc, subject.xs, subject.jsxm FROM class, subject WHERE ( subject.bjbh = class.bjbh ) and ( ( subject.xq = :mxq ) AND (class.bjmc=:mbjmc) 圖22 數(shù)據(jù)窗口d_subject_chaxun2、 設(shè)計訪問課程信息的窗口1)、設(shè)計輸入修改班級課程信息的窗口班級課程的輸入和修改都通過此窗口完成,輸入修改班級課程信息的窗口的布局如圖23所示。首先,從祖先窗口w_xiugai繼承生成窗口對象w_subject_shuruxiugai,調(diào)整其大小。然后將數(shù)據(jù)窗口控件dw_1的DataObject屬性設(shè)置為d_subject_shuru,此窗口設(shè)計即完成。2)、設(shè)計查詢班級開設(shè)課程的窗口要求此窗口能夠根據(jù)輸入的學(xué)期和班級查詢出該班此學(xué)期開設(shè)的課程。查詢班級開設(shè)課程的窗口如圖24所示。 首先創(chuàng)建一個窗口對象w_subject_chaxun, 調(diào)整其大小,在窗口中放置2個靜態(tài)文本控件(st_1,st_2)、2個下拉圖片列表框控件(ddplb_1,ddplb_2)、1個命令按鈕(cb_1)、1個數(shù)據(jù)窗口控件(dw_1),調(diào)整各個控件的位置和大小。設(shè)置窗口及其控件的屬性見表8,表中未列出的采用默認(rèn)值。圖23 窗口w_subject_shuruxiugai圖24 窗口w_subject_chaxun對象屬性取值w_student_chaxunTitle查詢班級開課信息Window Typeresponse!dw_1DataObjectd_subject_chaxunVScrollbarTRUEHScrollbarTRUEst_1text選擇學(xué)期st_2text輸入班級ddplb_1items學(xué)期ddplb_2items班級名稱cb_1text查詢表8下面書寫各個對象的事件腳本。(1)窗口w_subject_chaxun的Open事件腳本如下。dw_1.settransobject(sqlca)/連接事務(wù)對象sqlca/定義局部變量int li_xq,li_bjmc,nstring ls_xq,ls_bjmc/動態(tài)生成學(xué)期下拉列表框的列表項select count(distinct xq)into :li_xqfrom subject;declare xqcursor cursor forselect xq from subject group by xq;open xqcursor;for n=1 to li_xq fetch next xqcursor into :ls_xq; ddplb_1.additem(ls_xq)nextclose xqcursor;/動態(tài)生成班級下拉列表框的列表項select count(distinct bjbh) into :li_bjmcfrom subject;declare bjmccursor cursor forselect class.bjmcfrom subject, classwhere subject.bjbh=class.bjbh group by class.bjmc;open bjmccursor;for n=1 to li_bjmc fetch next bjmccursor into :ls_bjmc; ddplb_2.additem(ls_bjmc)nextclose bjmccursor; (2)【查詢】按鈕的Clicked事件腳本如下。if ddplb_1.text= or ddplb_1.text= thenmessagebox(提示,查詢內(nèi)容不能為空!)else string s1,s2 s1=ddplb_1.text s2=ddplb_2.text dw_1.retrieve(s1,s2) end if九、設(shè)計成績管理模塊本模塊實現(xiàn)成績的輸入、修改和多種方式的查詢與打印。1、 設(shè)計訪問成績信息的數(shù)據(jù)窗口1)、設(shè)計輸入成績的數(shù)據(jù)窗口圖25 數(shù)據(jù)窗口d_xscj_shuru創(chuàng)建數(shù)據(jù)窗口d_xscj_shuru,顯示風(fēng)格為“Grid”,數(shù)據(jù)源類型為“SQL Select”,其局如圖25所示。數(shù)據(jù)來源于成績表xscj和視圖v-1,其中,學(xué)號、學(xué)期、課程名稱成績?yōu)槌煽儽韝scj的列,姓名是視圖v_1的列。選擇【Rows】|【Update Properties】命令,打開數(shù)據(jù)窗口的修改屬性對話框,如圖26所示,設(shè)置數(shù)據(jù)窗口的修改屬性,即只有成績表xscj的成績列(xscj_cj)可以在數(shù)據(jù)窗口中修改,關(guān)鍵字為成績表xscj的主關(guān)鍵字(xh,xq,kcmc)。然后,單擊工具條上的【Tab Orde圖標(biāo),將列控件xscj_cj的Tab Order值設(shè)為10,再單擊【Tab Order】圖標(biāo)回到原設(shè)計狀態(tài)。圖26 數(shù)據(jù)窗口d_xscj_shuru的設(shè)置數(shù)據(jù)窗口的檢索參數(shù)為mxq、mbjmc、mkcmc,分別對應(yīng)于學(xué)期、班級名稱和課程名稱。數(shù)據(jù)窗口d_xscj_shuru生成的SQL Select語句為:SELECT xscj.xh,v_1.xm,xscj.xq,xscj.kcmc,xscj.cj FROM v_1, xscj WHERE ( v_1.xh = xscj.xh ) and ( ( xscj.xq = :mxq ) AND ( v_1.bjmc = :mbjmc ) AND ( xscj.kcmc = :mkcmc ) ) 2)、設(shè)計查詢學(xué)生個人某學(xué)期各科成績的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_xscj_grcx,顯示風(fēng)格為“Grid”,數(shù)據(jù)源類型為“SQL Select”,其布局如圖27所示。在【Summary】條中添加一個計算域控件,計算數(shù)據(jù)窗口中成績總和。數(shù)據(jù)窗口的檢索參數(shù)為mxh、mxq,分別對應(yīng)于學(xué)號和學(xué)期。數(shù)據(jù)窗口d_xscj_grcx生成的SQL Select語句為: SELECT xscj.kcmc, xscj.cj FROM xscj WHERE ( xscj.xh = :mxh ) AND ( xscj.xq = :mxq ) 圖27 數(shù)據(jù)窗口d_xscj_grcx3)、設(shè)計查詢某班級某學(xué)期全體學(xué)生各科成績的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_xscj_bjcx,顯示風(fēng)格為“Cross Tab”,數(shù)據(jù)源類型為“SQL Select”,其布局如圖28所示。數(shù)據(jù)來源于成績表xscj和視圖v_1,其中,學(xué)號、課程名稱和成績?yōu)槌煽儽韝scj的列,姓名是視圖xsbj的列。在【Header1】條中添加2個計算域控件,對應(yīng)的表達(dá)式分別為mbjmc和mxq,3個文本控件,其文本分別為“成績單”、“班級:”和“學(xué)期:”。數(shù)據(jù)窗口的檢索參數(shù)為mxq和mbjmc,分別對應(yīng)于學(xué)期和班級名稱。修改屬性取默認(rèn)值(不允許修改)。數(shù)據(jù)窗口d_xscj_bjcx生成的SQL Select語句為: SELECT xscj.xh, v_1.xm, xscj.kcmc, xscj.cj FROM v_1, xscj WHERE ( v_1.xh = xscj.xh ) and ( ( xscj.xq = :mxq ) AND (v_1.bjmc=:mbjmc) 4)、設(shè)計查詢某班級某學(xué)期全體學(xué)生某科成績的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_xscj_kccx,顯示風(fēng)格為“Grid”,數(shù)據(jù)源類型“SQL Select”,其布局如圖29所示。數(shù)據(jù)來源于成績表xscj和視圖v_1,其中,學(xué)號和成績?yōu)槌煽儽韝scj的列,姓名是視圖xsbj的列。在【Header】條中添加2個計算域控件對應(yīng)的表達(dá)式分別為mbjmc和mkcmc,3個文本控件,其文本分別為“成績單”、“班級:”和“課程:”。數(shù)據(jù)窗口的檢索參數(shù)為mxq、mbjmc和mkcmc,分別對應(yīng)于學(xué)期、班級名稱和課程名稱。修改屬性取默圖28 數(shù)據(jù)窗口d_xscj_bjcx認(rèn)值(不允許修改)。數(shù)據(jù)窗口d_bjkc_shuru生成的SQL Select語句為: SELECT xscj.xh, v_1.xm, xscj.cj FROM v_1, xscj WHERE ( v_1.xh = xscj.xh ) and ( ( xscj.xq = :mxq ) AND ( v_1.bjmc = :mbjmc ) AND ( xscj.kcmc = :mkcmc ) ) 圖29 數(shù)據(jù)窗口d_xs
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 溫州職業(yè)技術(shù)學(xué)院《創(chuàng)新創(chuàng)業(yè)能力訓(xùn)練》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五版?zhèn)€人車位出租及車位租賃平臺合作合同3篇
- 二零二五年度貨物買賣合同涉及特定技術(shù)轉(zhuǎn)讓與售后服務(wù)2篇
- 2024版商場環(huán)保節(jié)能改造合同協(xié)議
- 二零二五版粉煤灰運輸合同規(guī)范范本下載6篇
- 個性化房產(chǎn)代理合作協(xié)議樣本(2024)版B版
- 2024版房地產(chǎn)經(jīng)紀(jì)人與傭金合同3篇
- 二零二五年度適用于工程項目的自卸車租賃服務(wù)合同范本3篇
- 二零二五版基金代持及風(fēng)險控制合作協(xié)議2篇
- 二零二五年餐飲店食品安全培訓(xùn)與認(rèn)證協(xié)議2篇
- 船形烏頭提取工藝優(yōu)化
- 財務(wù)總監(jiān)個人述職報告
- 居家養(yǎng)老護(hù)理人員培訓(xùn)方案
- 江蘇省無錫市2024年中考語文試卷【附答案】
- 管理者的九大財務(wù)思維
- 四年級上冊數(shù)學(xué)應(yīng)用題練習(xí)100題附答案
- 2024年度中國電建集團(tuán)北京勘測設(shè)計研究院限公司校園招聘高頻難、易錯點500題模擬試題附帶答案詳解
- 有關(guān)企業(yè)會計人員個人工作總結(jié)
- 人教版高中數(shù)學(xué)必修二《第十章 概率》單元同步練習(xí)及答案
- 干部人事檔案專項審核工作情況報告(8篇)
- 智慧校園信息化建設(shè)項目組織人員安排方案
評論
0/150
提交評論