pb學(xué)生成績管理系統(tǒng)1_第1頁
pb學(xué)生成績管理系統(tǒng)1_第2頁
pb學(xué)生成績管理系統(tǒng)1_第3頁
pb學(xué)生成績管理系統(tǒng)1_第4頁
pb學(xué)生成績管理系統(tǒng)1_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、學(xué)生成績管理系統(tǒng)一、系統(tǒng)分析與設(shè)計(jì)在任何高等院校,學(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)可以實(shí)現(xiàn)的功能由用戶確認(rèn)。本例中的學(xué)生成績管理系統(tǒng)需要完成的主要功能如下。 班級信息的輸入和存儲,包括班級編號、班級名稱、所屬院系、入校時間和學(xué)制等。 對已經(jīng)輸入的班級信息的修改、查詢。 學(xué)生基本信

2、息的輸入和存儲,包括學(xué)號、姓名、性別、出生日期、班級等。 學(xué)生基本信息的修改和查詢。 每學(xué)期初各班所開設(shè)課程的輸入,包括課程名、學(xué)期、學(xué)時等。 各班所開設(shè)課程信息的修改和查詢。 學(xué)期末輸入每個學(xué)生的考試成績。 學(xué)生成績的修改。 查詢某個學(xué)生某學(xué)期的各科成績。 查詢并打印某班某學(xué)期所有學(xué)生的各科成績。 查詢并打印某班某學(xué)期某科成績。 系統(tǒng)具有用戶和密碼的管理。2、系統(tǒng)功能模塊設(shè)計(jì)通過對上述各項(xiàng)功能的分析、分類、綜合,按照模塊化程序設(shè)計(jì)的要求,得到如圖1所示的功能模塊圖。二、數(shù)據(jù)庫設(shè)計(jì)與實(shí)現(xiàn)數(shù)據(jù)庫在一個管理信息系統(tǒng)中占有非常重要的地位,數(shù)據(jù)庫結(jié)構(gòu)的好壞將直接影響到應(yīng)用系統(tǒng)的實(shí)現(xiàn)效果和數(shù)據(jù)操作效率以

3、及能否保證數(shù)據(jù)的一致性、完成性和安全性。圖1 系統(tǒng)功能模塊1、數(shù)據(jù)庫設(shè)計(jì)根據(jù)學(xué)生成績管理系統(tǒng)的功能要求,通過分析系統(tǒng)要涉及的相關(guān)實(shí)體以及要收集、存儲和操縱的數(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)系

4、模式,確定需要建立的數(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主鍵

5、: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ù)

6、據(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è)計(jì)和系統(tǒng)功能設(shè)計(jì)之后,可以開始各個功能模塊的實(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è)為

7、“d:xscjxscj.pbt”。(3) 為應(yīng)用對象xscj的Open事件編寫代碼如下。SQLCA.DBMS = "ODBC"SQLCA.AutoCommit = FalseSQLCA.DBParm = "ConnectString='DSN=student;UID=dba;PWD=sql'"CONNECT;if SQLCA.sqlcode<>0 thenmessagebox("提示","數(shù)據(jù)庫連接失敗!")elseopen(w_main)end if四、設(shè)計(jì)系統(tǒng)管理模塊本模塊實(shí)現(xiàn)用戶登

8、錄控制、學(xué)生能查詢自己的個人成績,教師能錄入班級的課程信息,管理員能實(shí)現(xiàn)對用戶管理的控制以及對一些基本信息的錄入。1、設(shè)計(jì)登錄窗口圖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_1text"&

9、quot;sle_2text""cb_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分別存儲登錄用戶的賬號、密碼和用戶類型。 定義實(shí)例變量。int li_n存儲登錄時用戶輸入密碼錯誤的嘗試次數(shù),控制在最多3次機(jī)會不能是局部變量。 登錄窗口w_login的Ope

10、n事件腳本如下。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("提示","賬號,密碼,用戶類

11、型不能為空")elseSELECT "users"."name","users"."password","users"."admin"INTO :gs_username,:gs_password,:gs_adminFROM "users"WHERE ("users"."name" = :ls_username ) AND ("users"."password" = :

12、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_n<>0 then messagebox("提示","賬號或密碼錯誤") else messagebox("提示","錯誤超過3次,自動退出") halt end if end if【退出】按鈕cb_2的Clicked事件腳本

13、如下。halt/退出程序2、設(shè)計(jì)密碼修改窗口密碼修改窗口如圖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新密碼passwordT

14、RUEst_3text重新輸入新密碼sle_1text""passwordTRUEsle_2text""passwordTRUEsle_3text""passwordTRUEcb_1text確定cb_2text取消表 22) 編寫腳本(1)【確定】按鈕cb_1的Clicked事件腳本如下。string ls_passwordif trim(sle_1.text)<>gs_password thenmessagebox("提示","舊密碼錯誤")elseif trim(sle_2.te

15、xt)=(sle_3.text) thenls_password=trim(sle_2.text) UPDATE "users" SET"password" = :ls_password WHERE ("users"."name" = :gs_username ) AND ("users"."password" = :gs_password); if sqlca.sqlcode<>0 then messagebox("提示","密碼修

16、改不成功")elseclose(parent)messagebox("提示","密碼修改完成")end ifelsemessagebox("提示","兩次密碼不相同")end if end if (2)【取消】按鈕cb_2的Clicked事件腳本如下。close(parent)3、設(shè)計(jì)用戶管理的數(shù)據(jù)窗口和窗口1) 設(shè)計(jì)數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口“d_yhgl”,顯示風(fēng)格為“Grid”,數(shù)據(jù)源類型為“Quick Select”,布局如圖6所示。數(shù)據(jù)窗口d_yhgl生成的SQL Select語句為:SELECT&q

17、uot;users"."name","users"."password","users"."admin"FROM"users"圖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所示,其對象屬

18、性取值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的Clos

19、equery事件腳本如下。 integer rtdw_1.accepttext()if dw_1.modifiedcount() =0 and dw_1.deletedcount()=0 thenreturn 0elsert=messagebox("提示","添加修改內(nèi)容未保存,確實(shí)退出嗎?",Question!,YesNo!)if rt=1 then return 0end ifend ifreturn 1 (3) 數(shù)據(jù)窗口控件dw_1的Itemchanged事件腳本如下。cb_3.enabled=true/激活“保存”按鈕(4)【添加】按鈕控件cb_

20、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ù)失敗!")en

21、d if(7)【退出】按鈕控件cb_4的Clicked事件腳本如下。close(parent)五、設(shè)計(jì)主窗口和菜單主窗口和菜單是系統(tǒng)工作的主界面。1、創(chuàng)建菜單對象菜單結(jié)構(gòu)如圖8所示。菜單對象名為“m_main”,菜單欄中的菜單項(xiàng)設(shè)置了訪問鍵(AccessKey),菜單項(xiàng)在工具條上建立了圖標(biāo)按鈕。 (1)【系統(tǒng)】菜單下【密碼修改】菜單項(xiàng)的Clicked事件腳本如下。open(w_mmxg)(2)【系統(tǒng)】菜單下【用戶管理】菜單項(xiàng)的Clicked事件腳本如下。open(w_yhgl)(3)【系統(tǒng)】菜單下【退出系統(tǒng)】菜單項(xiàng)的Clicked事件腳本如下。close(parentwindow)(4)【班級

22、管理】菜單下【錄入班級信息】菜單項(xiàng)的Clicked事件腳本如下。opensheet(w_banji_shuru)(5)【班級管理】菜單下【修改班級信息】菜單項(xiàng)的Clicked事件腳本如下。opensheet(w_banji_xiugai)圖8 菜單m_main(6)【班級管理】菜單下【瀏覽班級信息】菜單項(xiàng)的Clicked事件腳本如下。open(w_banji_liulan)(7)【學(xué)生管理】菜單下【錄入學(xué)生信息】菜單項(xiàng)的Clicked事件腳本如下。open(w_student_shuru)(8)【學(xué)生管理】菜單下【修改學(xué)生信息】菜單項(xiàng)的Clicked事件腳本如下。open(w_student_

23、xiugai)(9)【學(xué)生管理】菜單下【查詢學(xué)生信息】菜單項(xiàng)的Clicked事件腳本如下。open(w_student_chaxun)(10)【課程管理】菜單下【錄入/修改開設(shè)課程】菜單項(xiàng)的Clicked事件腳本如下。open(w_subject_shuruxiugai)(11)【課程管理】菜單下【查詢開設(shè)課程信息】菜單項(xiàng)的Clicked事件腳本如下。open(w_subject_chaxun)(12)【成績管理】菜單下【錄入修改成績】菜單項(xiàng)的Clicked事件腳本如下。open(w_xscj_shuru)(13)【成績管理】菜單下【查詢個人成績】菜單項(xiàng)的Clicked事件腳本如下。open(

24、w_xscj_grcx)(14)【成績管理】菜單下【查詢班級成績】菜單項(xiàng)的Clicked事件腳本如下。open(w_xscj_bjcx)(15)【成績管理】菜單下【查詢課程成績】菜單項(xiàng)的Clicked事件腳本如下。open(w_xscj_kccx)(16)【窗口】菜單下【層疊窗口】菜單項(xiàng)的Clicked事件腳本如下。/w_main.arrangesheets(cascade!) (17)【幫助】菜單下【關(guān)于】菜單項(xiàng)的Clicked事件腳本如下。open(w_about)2、設(shè)計(jì)主窗口 創(chuàng)建主窗口w_main如圖9所示,其需要設(shè)置的屬性如表4所示,表中未列出的屬性保留其默認(rèn)值。圖9主窗口w_ma

25、in對象屬性取值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_錄入修改成績.enable

26、d=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è)計(jì)班級管理模塊本模塊實(shí)現(xiàn)班級信息的輸入、修改和查詢。1、設(shè)計(jì)訪問班級信息的數(shù)據(jù)窗口1) 設(shè)計(jì)輸入班級信息的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_clas

27、s_shuru,顯示風(fēng)格為“Freeform”,數(shù)據(jù)源類型為“Quick Select”,其布局如圖10所示。數(shù)據(jù)窗口d_class_shuru生成的SQL Select語句為:SELECT"class"."bjbh","class"."bjmc","class"."xbmc","class"."xz","class"."rxsj","class"."rs"

28、 FROM "class"圖10 數(shù)據(jù)窗口d_class_shuru2) 設(shè)計(jì)修改班級信息的數(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語句為:SELECT"class"."bjbh","class"."bjmc","class"."xbmc","cl

29、ass"."xz","class"."rxsj","class"."rs" FROM "class"ORDER BY"class"."bjbh"ASC2、設(shè)計(jì)訪問班級信息的窗口首先設(shè)計(jì)兩個通用的輸入窗口和修改窗口作為父對象,實(shí)現(xiàn)一般輸入和修改的功能,窗口中的數(shù)據(jù)窗口控件不設(shè)定具體的數(shù)據(jù)窗口對象,在繼承的窗口對象中再設(shè)定。通過繼承可以簡化程序設(shè)計(jì),實(shí)現(xiàn)代碼重用。1) 設(shè)計(jì)輸入窗口創(chuàng)建窗口對象w_shuru,調(diào)整其大小,放置1個數(shù)

30、據(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_6text<cb_7text>cb_8text>>|dw_1VscrollBarTRUE表5設(shè)置完屬性后開始編寫腳本代碼,其中窗口w_shuru的Open事件和Closequery事件、命令按鈕(【添加】、【刪除】、

31、【保存】和【退出】)的Clicked事件同窗口w_yhgl的相應(yīng)事件腳本,在此不再重復(fù)。其他命令按鈕的事件腳本如下。(1)【|<<】按鈕的Clicked事件腳本如下。dw_1.scrolltorow(1)(2)【<】按鈕的Clicked事件腳本如下。dw_1.scrollpriorrow()(3)【>】按鈕的Clicked事件腳本如下。dw_1.scrollnextrow()(4)【>>|】按鈕的Clicked事件腳本如下。dw_1.scrolltorow(dw_1.rowcount()2) 設(shè)計(jì)修改窗口創(chuàng)建窗口對象w_xiugai,調(diào)整其大小,放置1個數(shù)據(jù)

32、窗口控件(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è)計(jì)輸入班級信息窗口通過繼承輸入窗口w_shuru生成輸入班級信息窗口w_class_shuru,將數(shù)據(jù)控件dw_1的DataObject屬性設(shè)置為d_class_shuru,將窗口的Title屬

33、性改為“錄入班級信息”,此窗口設(shè)計(jì)便完成了。4) 設(shè)計(jì)修改班級信息窗口通過繼承修改窗口w_xiugai生成修改班級信息窗口w_class_xiugai,將數(shù)據(jù)控件dw_1的DataObject屬性設(shè)置為d_class_xiugai,將窗口的Title屬性改為“修改班級信息”,此窗口設(shè)計(jì)便完成了。5) 設(shè)計(jì)瀏覽班級信息窗口創(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.settransobj

34、ect(sqlca)dw_1.retrieve()七、設(shè)計(jì)學(xué)生基本信息管理模塊本模塊實(shí)現(xiàn)學(xué)生基本信息的輸入、修改和查詢。1、設(shè)計(jì)訪問學(xué)生基本信息的數(shù)據(jù)窗口1) 設(shè)計(jì)輸入學(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è)

35、置為“bjbh”,Width of DropDown(%)屬性設(shè)置為“300”,Lines in DropDown屬性設(shè)置為“6”,VScrollBar屬性設(shè)置為“True”。數(shù)據(jù)窗口d_jiben_shuru生成的SQL Select語句為:SELECT"student"."xh","student"."xm","student"."xb","student"."csrq","student"."jtzz

36、","student"."bjbh"FROM"student"圖15 數(shù)據(jù)窗口d_student_shuru2) 設(shè)計(jì)修改學(xué)生基本信息的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_student_xiugai,顯示風(fēng)格為“Grid”,數(shù)據(jù)源類型為“Quick Select”,其布局如圖16所示。其中,列控件“xb”的編輯風(fēng)格改為“DropDownListBox”,列表項(xiàng)為“男”,“女”;列控件“bjbh”的編輯風(fēng)格改為“DropDownDW”,其DataWindow屬性設(shè)置為“d_banji_xiugai”,Display Column屬性和D

37、ata Column屬性都設(shè)置為“bjbh”,Width oDropDown(%)屬性設(shè)置為“300”,Lines in DropDown屬性設(shè)置為“6”,VScrollBar屬性設(shè)置為“True”。數(shù)據(jù)窗口d_student_xiugai生成的SQL Select語句為:SELECT"student"."xh","student"."xm","student"."xb","student"."csrq","student&q

38、uot;."jtzz","student"."bjbh"FROM"student"ORDER BY"student"."xh"ASC圖16 數(shù)據(jù)窗口d_student_xiugai3) 設(shè)計(jì)查詢學(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ù)窗口的修改

39、屬性為默認(rèn)值即“不允許修改”。數(shù)據(jù)窗口d_student_chaxun生成的SQL Select語句為: SELECT "student"."xh", "student"."xm", "class"."bjmc", "student"."xb", "student"."csrq", "student"."jtzz" FROM "class"

40、;, "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è)計(jì)訪問學(xué)生基本信息的窗口1) 設(shè)計(jì)輸入學(xué)生基本信

41、息的窗口通過繼承輸入窗口w_shuru生成輸入學(xué)生基本信息窗口w_student_shuru,如圖18所示,將數(shù)據(jù)控件dw_1的DataObject屬性設(shè)置為d_student_shuru,將窗口的Title屬性改為“錄入學(xué)生基本信息”,此窗口設(shè)計(jì)便完成了。圖18 窗口w_student_shuru2) 設(shè)計(jì)修改學(xué)生基本信息的窗口通過繼承修改窗口w_xiugai生成修改學(xué)生基本信息窗口w_student_xiugai,如圖19所示,將數(shù)據(jù)控件dw_1的DataObject屬性設(shè)置為d_student_xiugai,將窗口的Title屬性改為“修改學(xué)生基本信息”,此窗口設(shè)計(jì)便完成了。圖19 窗口

42、w_student_xiugai3) 設(shè)計(jì)查詢學(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_chaxunTitl

43、e查詢學(xué)生信息Window Typeresponse!dw_1DataObjectd_student_chaxunVScrollbarTRUEHScrollbarTRUEst_1text選擇檢索條件st_2text輸入檢索的內(nèi)容ddplb_1items學(xué)號,姓名,班級名稱sle_1text""cb_1text查詢表7窗口的Open事件腳本。dw_1.settransobject(sqlca)【查詢】按鈕的click事件腳本如下。dw_1.settransobject(sqlca)if ddplb_1.text="" or sle_1.text="

44、;" 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("&q

45、uot;,"",str)end choose代碼中根據(jù)查詢依據(jù)的不同,以不同參數(shù)方式檢索數(shù)據(jù)。八、設(shè)計(jì)課程管理模塊本模塊實(shí)現(xiàn)各班開設(shè)課程的輸入、修改和查詢。1、 設(shè)計(jì)訪問課程信息的數(shù)據(jù)窗口1)、設(shè)計(jì)輸入班級課程信息的數(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 Col

46、umn屬性都設(shè)置為“bjbh”,Widthof DropDown(%)屬性設(shè)置為“300”,Lines in DropDown屬性設(shè)置為“6”,VScrollBar屬性設(shè)置為“True”。數(shù)據(jù)窗口d_subject_shuru生成的SQL Select語句為:SELECT"subject"."bjbh","subject"."xq","subject"."kcmc","subject"."xs","subject".

47、"jsxm"FROM"subject"2) 、設(shè)計(jì)查詢班級課程信息的數(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".

48、"xs", "subject"."jsxm" FROM "class", "subject" WHERE ( "subject"."bjbh" = "class"."bjbh" ) and ( ( "subject"."xq" = :mxq ) AND ("class"."bjmc"=:mbjmc) 圖22 數(shù)據(jù)窗口d_subject_c

49、haxun2、 設(shè)計(jì)訪問課程信息的窗口1)、設(shè)計(jì)輸入修改班級課程信息的窗口班級課程的輸入和修改都通過此窗口完成,輸入修改班級課程信息的窗口的布局如圖23所示。首先,從祖先窗口w_xiugai繼承生成窗口對象w_subject_shuruxiugai,調(diào)整其大小。然后將數(shù)據(jù)窗口控件dw_1的DataObject屬性設(shè)置為d_subject_shuru,此窗口設(shè)計(jì)即完成。2)、設(shè)計(jì)查詢班級開設(shè)課程的窗口要求此窗口能夠根據(jù)輸入的學(xué)期和班級查詢出該班此學(xué)期開設(shè)的課程。查詢班級開設(shè)課程的窗口如圖24所示。 首先創(chuàng)建一個窗口對象w_subject_chaxun, 調(diào)整其大小,在窗口中放置2個靜態(tài)文本控件(

50、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_

51、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é)期下拉列表框的列表項(xiàng)select count(distinct xq)into :li_xqfrom subject;declare xqcursor cursor forselect xq from subject group by xq;open x

52、qcursor;for n=1 to li_xq fetch next xqcursor into :ls_xq; ddplb_1.additem(ls_xq)nextclose xqcursor;/動態(tài)生成班級下拉列表框的列表項(xiàng)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;

53、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(

54、s1,s2) end if九、設(shè)計(jì)成績管理模塊本模塊實(shí)現(xiàn)成績的輸入、修改和多種方式的查詢與打印。1、 設(shè)計(jì)訪問成績信息的數(shù)據(jù)窗口1)、設(shè)計(jì)輸入成績的數(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

55、)可以在數(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è)計(jì)狀態(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"

56、."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 (

57、 "xscj"."kcmc" = :mkcmc ) ) 2)、設(shè)計(jì)查詢學(xué)生個人某學(xué)期各科成績的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_xscj_grcx,顯示風(fēng)格為“Grid”,數(shù)據(jù)源類型為“SQL Select”,其布局如圖27所示。在【Summary】條中添加一個計(jì)算域控件,計(jì)算數(shù)據(jù)窗口中成績總和。數(shù)據(jù)窗口的檢索參數(shù)為mxh、mxq,分別對應(yīng)于學(xué)號和學(xué)期。數(shù)據(jù)窗口d_xscj_grcx生成的SQL Select語句為: SELECT "xscj"."kcmc", "xscj"."cj"

58、FROM "xscj" WHERE ( "xscj"."xh" = :mxh ) AND ( "xscj"."xq" = :mxq ) 圖27 數(shù)據(jù)窗口d_xscj_grcx3)、設(shè)計(jì)查詢某班級某學(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個計(jì)算

59、域控件,對應(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", &qu

60、ot;xscj" WHERE ( "v_1"."xh" = "xscj"."xh" ) and ( ( "xscj"."xq" = :mxq ) AND ("v_1"."bjmc"=:mbjmc) 4)、設(shè)計(jì)查詢某班級某學(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)槌煽儽韝

61、scj的列,姓名是視圖xsbj的列。在【Header】條中添加2個計(jì)算域控件對應(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" = &

溫馨提示

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

最新文檔

評論

0/150

提交評論