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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

5、b odbc接口建立adaptive server anywhere 8.0(asa 8.0)的數據庫d:xscjdataxscj.db,然后依次建立以下5個表和1個視圖。ctrl+n 新建shift+f7打開數據面板 選擇odb odbc-utilities-create asa database選擇table-new table設置參數如圖 其他表設置如圖1.“班級”表表名:banji主鍵:bjbh2.“學生基本信息”表表名:jiben主鍵:xh3.“課程”表表名:bjkc主鍵:(bjbh,xq,kcmc)4.“成績”表表名:xscj主鍵:(xh,xqkcmc)5.“用戶”表表名:user

6、s主鍵:xm依次建立好主鍵和外鍵如圖所示6.視圖為了訪問數據庫方便,還建立一個視圖“xsbj”,該視圖由學生基本信息表和班級表連接而成,對應的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)建應用對象完成數據庫的設計和系統(tǒng)功能設計之后,可以開

7、始各個功能模塊的實現(xiàn)。在powerbuilder中開發(fā)應用程序是時,就是創(chuàng)建各種對象、為對象設置屬性以及編寫事件腳本的過程。但不是簡單的順序過程,有時需要返回為前面創(chuàng)建的對象補充腳本。(1)創(chuàng)建新的工作空間,工作空間文件路徑及名稱設為“d:xscjxscj.pbw”(2)創(chuàng)建應用對象,應用對象名設置為“app_xscj”,應用庫文件路徑及名稱設為“d:xscjpbl”,目標文件路徑及名稱設為“d:xscjxscj.pbt”(3)打開應用對象面板,應用對象app_xscj的icon屬性設置為“d:xscjbook.iso”。books.ico是預先準備的圖標文件。(4)為應用對象app_xscj

8、的open事件編寫代碼如下。/ profile xscjsqlca.dbms = "odbc"sqlca.autocommit = falsesqlca.dbparm = "connectstring='dsn=xscj'"connect;if sqlca.sqlcode<>0 thenmessagebox("提示","數據庫連接失?。?quot;)elseopen(w_logion)end if執(zhí)行此應用時,首先鏈接數據庫“xscj”,成功后打開登陸窗口。4創(chuàng)建應用對象本模塊實現(xiàn)用戶登陸控制、用

9、戶自己的密碼修改和用戶管理,其中用戶管理包括修改用戶信息,添加新用戶,刪除用戶,只有管理員級用戶有此權限。4.1 設計管理登陸窗口登陸窗口如圖所示1.創(chuàng)建窗口并設置屬性創(chuàng)建登陸窗口w_login,調整其大小,在窗口上放置1個圖片控件,3個靜態(tài)文本控件,1個成組框控件,2個單行編輯器控件,2個命令控制按鈕控件,各個控件的位置和大小如圖所示。對象屬性取值w_logintitle登陸window typeresponse!sle_2passwordtrue2.編寫腳本(1)定義全局變量string gs_username , gs_password , gs_admin (2) 定義實例變量int

10、li_n存儲登錄時用戶輸入密碼錯誤的嘗試次數,控制在最多3次機會。必須圍實例變量,不能是局部變量。(3)登陸窗口w_logind 的open 事件腳本如下:int li_n=3初始化變量li_n,限制出錯次數為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("

11、提示","用戶名和密碼不能為空")else select "users"."name", "users"."password", "users"."admin" into :gs_username, :gs_password, :gs_admin from "users" where ( "users"."name" = :ls_username ) and ( "users&

12、quot;."password" = :ls_password ); if sqlca.sqlcode=0 thenopen(w_main)close(w_logion)elseli_n=li_n - 1if li_n<>0 thenmessagebox("提示","用戶名密碼錯誤")elsemessagebox("提示","錯誤超過3次,自動退出")haltend ifend ifend if(5)【放棄】按鈕cb_2的clicked事件腳本如下:halt4.2 設計密碼修改窗口密

13、碼修改窗口如圖所示:1.創(chuàng)建窗口并設置屬性創(chuàng)建密碼修改窗口w_mmxg,調整其大小,在窗口上放置3個靜態(tài)文本控件(st_1,st_2,st_2)3個單行編輯器控件(sle_1,sle_2,sle_3)2個命令按鈕控件(cb_1,cb_2)各個控件的位置和大小參照圖調整。w_mmxgtitle修改密碼windows typeresponse!sle_2passwordtruesle_3passwordtrue2.【確定】按鈕cb_1的clicked事件腳本如下:string ls_passwordif trim(sle_1.text)=trim(sle_3.text) thenmessagebo

14、x("提示","舊密碼錯誤")elseif trim(sle_2.text)=trim(sle_3.text) thenls_password=trim(sle_2.text)update "users"set "password" = :ls_passwordwhere ( "users"."name" = :gs_username) and( "users"."password" = :gs_password ) ;if sqlca

15、.sqlcode<>0 thenmessagebox("提示","密碼修改不成功")elseclose(parent)messagebox("提示","密碼修改成功")end ifelsemessagebox("提示","兩次新密碼不相同")end ifend if(2)【取消】按鈕cb_2的clicked事件腳本如下close(parent)4.3設計用戶管理的數據窗口和窗口用戶管理窗口如圖所示:1.設計數據窗口創(chuàng)建數據窗口“d_yhgl”,顯示風格圍“grid

16、”,數據源類型圍”quick select”,發(fā)布如圖所示。其中控件“admin”的編輯風格改為“dropdownlistbox”,碼表(code table)如圖。數據窗口d_yhgl生成的sql select語句為: select "users"."name", "users"."password", "users"."admin" from "users" 2.創(chuàng)建窗口并設置屬性創(chuàng)建用戶管理窗口w_yhgl,調整其大小,在窗口上位置1個數據窗口控件(

17、dw_1)、4個命令按鈕控件(cb_1,cb_2,cb_3,cb_4)各個控件的位置和大小參照如圖調整。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=messagebox("

18、提示","添加修改內容未保存,確定要退出嗎?",question!,yesno!)if rt=1 thenreturn 0end ifend ifreturn 1(3)數據窗口控件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)【保存】按鈕

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

20、【系統(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,w_main,6,original!)其功能是在主窗口(w_main)中,以輸入班級信息窗口w_banji_shuru的原來大?。╫riginal!參數指定)打開,并在第6個菜單(即【窗口】菜單)下

21、列出該窗口的名稱。(5)【班級管理】菜單需愛修改【修改班級信息】菜單項的clicked事件腳本如下:opensheet(w_xiugai,w_main,6,original! )(6)【班級管理】菜單下【修改班級信息】菜單項的菜單項的clicked事件腳本如下:opensheet(w_banji_liulan,w_main,6,original!) (7)【學生管理】菜單下【錄入學生信息】菜單項的clicked事件腳本如下:opensheet(w_jiben_shuru,w_main,6,original!) (8)【學生管理】菜單下【修改學生信息】菜單項的clicked事件腳本如下:open

22、sheet(w_jiben_xiugai,w_main,6,original!) (9)【學生管理】菜單下【查詢學生信息】菜單項的clicked事件腳本如下:opensheet(w_jiben_chaxun,w_main,6,original! )(10)【課程管理】菜單下【錄入/修改開設課程】菜單項的clicked事件腳本如下:opensheet(w_bjkc_shuruxiugai,w_main,6,original! )(11)【課程管理】菜單下【查詢開設課程信息】菜單項的clicked事件腳本如下:opensheet(w_bjkc_chaxun,w_main,6,original! )

23、(12)【成績管理】菜單下【錄入修改成績】菜單項的clicked事件腳本如下:opensheet(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_

24、kccx,w_main,6,original! )(16)【窗口】菜單下【層疊窗口】菜單項的clicked事件腳本如下:w_main.arrangesheets (cascade!)(17)【幫助】菜單下【關于】菜單項的clicked事件腳本如下:open(w_about)(18)【幫助】菜單下【聯(lián)機幫助】菜單項的clicked事件腳本如下:showhelp("xscjhelp.chm",index!)5.2設計主窗口設計窗口如圖所示創(chuàng)建窗口對象w_main,w_maintitle學生成績管理系統(tǒng)window typemdihelp!menunamem_mainwindow

25、statemaximized窗口對象w_main的open事件腳本如下if gs_admin='n' thenm_main.m_系統(tǒng)s.m_用戶管理.enabled=falseend if其功能是非管理員用戶計入系統(tǒng)時關閉【用戶管理】菜單項6設計班級管理模塊本模塊實現(xiàn)班級信息的輸入、修改和查詢。6.1設計訪問班級信息的數據窗口1.設計輸入班級信息的數據窗口創(chuàng)建數據窗口d_banji_shuru,顯示風格為“freeform”,數據源類型為“quick select”如圖所示。數據窗口d_banji_shuru生成的sql select語句為: select "banj

26、i"."bjbh", "banji"."bjmc", "banji"."zymc", "banji"."xz", "banji"."rxsj", "banji"."rs" from "banji" 2.設計修改班級信息的數據窗口創(chuàng)建數據窗口d_banji_xiugai,顯示風格為“grid”數據源類型為“quick select”數據窗口d_ban

27、jid_banji_xiugai生成的sql select 語句為: select "banji"."bjbh", "banji"."bjmc", "banji"."zymc", "banji"."xz", "banji"."rxsj", "banji"."rs" from "banji" order by "banji&quo

28、t;."bjbh" asc 6.2設計訪問班級信息的窗口首先設計兩個通用的輸入窗口和修改窗口作為父對象,實現(xiàn)一般輸入和修改的功能,窗口中的數據窗口控件不設定具體的數據窗口對象,在繼承的窗口對象中再設定。通過繼承可以簡化程序設計,實現(xiàn)代碼重用。1.設計輸入窗口創(chuàng)建窗口對象w_shuru,調整其大小,放置1個數據窗口控件(dw_1)、8個命令按鈕控件(cb_1···cb_8)窗口布局如圖所示。w_shurutitle錄入window typemain!resizablefalsecenterfalsemaxboxfalseminboxfalse設置

29、完屬性后開始編寫腳本代碼,其中窗口w_shuru的open事件closequery事件、命令按鈕(【添加】、【刪除】、【保存】和【退出】)的clicked事同前面的窗口w_yhgl的相應事件腳本。(1)【|<<】按鈕的clicked事件腳本如下:dw_1.scrolltorow(1)(2)【<】按鈕的clicked事件腳本如下:dw_1.scrollpriorrow()(3)【>】按鈕的clicked事件腳本如下:dw_1.scrollnextrow()(4)【>>|】按鈕的clicked事件腳本如下:dw_1.scrolltorow( dw_1.rowco

30、unt()2.設計修改窗口創(chuàng)建窗口對象w_xiugai,調整大小,放置1個數據窗口控件(dw_1),4個命令控件(cb_1···cb_4),窗口布局如圖所示。w_xiugaititle修改window typemain!resizablefalsecenterfalsemaxboxfalseminboxfalse3設計輸入班級信息窗口通過繼承輸入窗口w_shuru生成輸入班級信息窗口w_banji_shuru,將數據控件dw_1的dataobject屬性設置為d_banji_shuru,將窗口的title屬性改為“錄入班級信息”,此窗口設計便完成了。4.設計修改班

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

32、anji_xiugaienabledfalse窗口的open事件腳本如下:dw_1.settransobject( sqlca)dw_1.retrieve()7設計學生基本信息管理模塊本模塊實現(xiàn)學生基本信息的輸入,修改和查詢。7.1設計訪問學生基本信息的數據窗口1.設計輸入學生基本信息的數據窗口創(chuàng)建數據窗口d_jiben_shuru,顯示風格為“freeform”,數據源類型為“quick select”,布局如圖所示其中,列控件“xb”的編輯風格為“radiobuttons”,列表控件“bjbh”的編輯風格改為“dropdowndw”,其datawindow屬性設置為“d_banji_xiu

33、gai”,display column屬性和data colum屬性都設置為“bjbh”,width of dropdown(%)屬性設置為“300”,lines in dropdown的屬性設置為“6”vscrollbar屬性設置為“true”。數據窗口d_jiben_shuru生成的sql select 語句為: select "jiben"."xh", "jiben"."xm", "jiben"."xb", "jiben"."csrq&qu

34、ot;, "jiben"."jtzz", "jiben"."bjbh" from "jiben" 2.設計修改學生基本信息的數據窗口創(chuàng)建數據窗口d_jiben_xiugai,顯示風格為“grid”,數據源類型為“quick select”,布局如圖所示:其中,列控件“xb”的編輯風格改為“dropdownlistbox”,列表項為“男”,“女”;列表控件“bjbh”的編輯風格改為“dropdowndw”,其datawindow屬性設置為“d_jiebn_xiugai”,display colum

35、m屬性和data colum屬性都設置為“bjbh”,width of dropdown(%)屬性設置為“300”,lines in dropdown屬性設置為“6”,vscrollbar屬性設置為“true”數據窗口d_jiben_xiugai生成的sql select語句為: select "jiben"."xh", "jiben"."xm", "jiben"."xb", "jiben"."csrq", "jiben&qu

36、ot;."jtzz", "jiben"."bjbh" from "jiben" 3.設計查詢學生基本信息的數據窗口創(chuàng)建數據窗口d_jiebn_chaxun,顯示風格為“grid”,數據源類型為“sql select”其中布局如圖所示其中,定義3個string型檢索參數變量mxh,mxm,mbj,分別表示學號、姓名班級,形成帶檢索參數的數據窗口。該數據窗口的修改屬性默認值即“不允許修改”數據窗口d_jiben_chaxun生成的sql select語句為: select "banji"."

37、;bjmc", "jiben"."xh", "jiben"."xm", "jiben"."xb", "jiben"."csrq", "jiben"."jtzz", "jiben"."bjbh" from "banji", "jiben" where ( "jiben"."bjbh

38、" = "banji"."bjbh" ) and ( ( "jiben"."xh" like :mxh ) and ( "jiben"."xm" like :mxm ) and ( "banji"."bjmc" like :mbj ) ) order by "jiben"."xh" asc 7.2設計訪問學生基本信息的窗口1.設計輸入學生基本信息的窗口通過繼承輸入窗口w_shuru生成輸

39、入學生基本信息窗口w_jiben_shru,將數據控件dw_1的dataobject屬性設置為d_jiben_shuru,將窗口的title屬性改為“錄入學生基本信息”,此窗口就完成了。2.設計修改學生基本信息的窗口通過繼承輸入窗口w_xiugai生成輸入學生基本信息窗口w_jiben_xiugai,將數據控件dw_1的dataobject屬性設置為d_jiben_xiugai,將窗口的title屬性改為“修改學生基本信息”,此窗口就完成了。3.設計查詢學生基本信息的窗口要求此窗口中能夠根據學生的姓名或學號查詢出學生的基本信息,能夠根據班級名稱查詢出該班所有學生的基本信息。查詢學生基本信息窗口

40、如圖所示:首先創(chuàng)建一個窗口對象w_jiben_chaxun,調整大小,在窗口中放置2個靜態(tài)文本控件(st_1,st_2)、1個下拉表框控件(ddlb_1)、1個單行編輯器控件(sle_1)1個命令按鈕(cb_1)、1個數據窗口控件(dw_1)和一個線形控件(ln_1),調整各個控件的位置和大小?!静樵儭堪粹o的clicked事件腳本如下:dw_1.settransobject( sqlca)if ddlb_1.text="" or sle_1.text="" thenmessagebox("提示","查詢列和查詢內容不能空!&

41、quot;)returnend ifstring strstr=trim(sle_1.text)choose case ddlb_1.textcase "學號"dw_1.retrieve(str,"%","%")case "姓名"dw_1.retrieve("%",str,"%")case "班級名稱"dw_1.retrieve("%","%",str)end choose代碼中根據查詢依據的不同,以不同參數方式檢索

42、數據。8設計課程管理模塊本模塊實現(xiàn)各班開設課程的輸入、修改和查詢。8.1設計訪問課程信息的數據窗口1設計輸入班級課程信息的數據窗口創(chuàng)建數據窗口d_bjkc_shuru,顯示風格為“grid”,數據源類型為“quick select”,如圖:其中,列控件“bjbh”的編輯風格改為“dropdowndw”,其datawindow屬性設置為“d_banji_xiugai”,display columm屬性和data colum屬性都設置為“bjbh”,width of dropdown(%)屬性設置為“300”,lines in dropdown屬性設置為“6”,vscrollbar屬性設置為“tr

43、ue”數據窗口d_bjkc_shuru生成的sql select語句為: select "bjkc"."bjbh", "bjkc"."xq", "bjkc"."kcmc", "bjkc"."xs", "bjkc"."jsxm" from "bjkc" 2.設計查詢班級課程信息的數據窗口創(chuàng)建數據窗口d_bjkc_chaxun,顯示風格為“grid”數據源類型為“sql selec

44、t”,如圖所示:其中,定義2個string型檢索參數變量mxq,mbjmc,分別表示學期、班級,形成帶檢索參數的數據窗口。該數據窗口的修改屬性為默認值即“不允許修改”。數據窗口d_bjkc_chaxun生成的sql select語句為: select "bjkc"."kcmc", "bjkc"."xs", "bjkc"."jsxm", "banji"."bjmc" from "bjkc", "banji&q

45、uot; where ( "banji"."bjbh" = "bjkc"."bjbh" ) and ( ( "bjkc"."xq" = :mxq ) and ( "banji"."bjmc" = :mbjmc ) ) 8.2設計訪問課程信息的窗口1.設計輸入修改班級課程信息的窗口班級課程的輸入和修改都通過此窗口完成,輸入修改禪機課程信息的窗口的布局如圖:首先,從祖先窗口w_iugai繼承生成窗口對象w_bjkc_shuruxiugai,

46、調整其大小。然后將數據窗口控件dw_1的dataobject屬性設置為d_bjkc_shru,此窗口設計完成。2.設計查詢班級開設課程的窗口要求此窗口能夠根據輸入的學期和班級查詢出該班此學期開設的課程。查詢班級開設課程的窗口如圖:首先創(chuàng)建一個窗口對象w_bjkc_chaxun,在窗口中放置2個靜態(tài)文本控件(st_1,st_2)2個下拉列表框控件(ddlb_1,ddlb_2)、1個命令按鈕(cb_1)、1個數據庫窗口控件(dw_1),調整各個控件的位置和大小。(1)窗口w_bjkc_chaxun的open事件腳本如下:dw_1.settransobject( sqlca)int li_xq, l

47、i_bjmc, nstringls_xq, ls_bjmcselect count (distinct xq) into :li_xqfrom bjkc;declare xqcursor cursor forselect xq from bjkc group by xq;open xqcursor ;for 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

48、 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)【查詢】按鈕的clicked事件腳本如下:dw_1.retrieve( ddlb_1.text , ddlb_2.text)9設計成績管理模塊本模塊實現(xiàn)成績

49、的輸入、修改和多種方式的查詢與打印。9.1設計訪問成績信息的數據窗口1.設計輸入成績的數據窗口創(chuàng)建數據窗口d_xscj_shuru,顯示風格為“grid”,數據源類型為“sql select”,布局如圖所示。數據來源于成績表xscj和視圖xsbj,其中,學號、學期、課程名稱和成績?yōu)槌煽儽韝scj的列,姓名是視圖xsbj的列。選擇【rows】|【update properties】命令,打開數據窗口的修改屬性對話框,如圖所示,設置數據窗口的修改屬性,即只有成績表(xscj_cj)可以在數據窗口中修改,關鍵字為成績表xscj的主關鍵字(xh,xq,kcmc)。然后,單機工具條上的【tab orde

50、r 】圖標,將列控件xscj_cj的tab order值設為10,再單擊【tab order】圖標回到原設計狀態(tài)。數據窗口的檢索參數為mxq,mbjmc,mkmc,分別對應于學期、班級名稱和課程名稱。數據窗口d_bjkc_shuru生成的sql select 語句為: select "xscj"."xh", "xsbj"."xm", "xscj"."cj", "xscj"."xq", "xscj"."kcm

51、c" from "xsbj", "xscj" where ( "xsbj"."xh" = "xscj"."xh" ) order by "xscj"."xh" asc 2.設計查詢學生個人某學期各科成績的數據窗口創(chuàng)建數據窗口d_xscj_grcx,顯示風格為“grid”,數據源類型為“quick select”,其布局如圖所示。在【summary】條中添加一個計算機域控件,計算機數據窗口中成績總和。數據窗口的檢索參數為mxh、

52、mxq,分別對應于學號和學期。數據窗口d_bjkc_shuru,生成的ssql select語句為: select "xscj"."kcmc", "xscj"."cj" from "xscj" where ( "xscj"."xh" = :mxh ) and ( "xscj"."xq" = :mxq ) 3.設計查詢班級某班級某學期全體學生各科成績的數據窗口創(chuàng)建數據窗口d_xscj_bjcx,顯示風格為“cross

53、tab”,數據源類型為“sql select”,布局如圖所示。數據來源于成績表xscj和視圖xsbj,其中,學號、課程名稱和成績?yōu)槌煽儽韝scj的列,姓名是視圖xsbj的列。在【header1】條中添加2個計算機域控件,對應的表達式分別為mbjmc和mxq,3個文本控件,其文本分別為“成績單”、“班級:”和“學期:”。數據窗口的檢索參數為mxq和mbjmc,分別對應于學期和班級名稱。修改屬性取默認值(不允許修改)。數據窗口d_bjkc_shuru生成的sql select語句為: select "xscj"."xh", "xsbj".

54、"xm", "xscj"."kcmc", "xscj"."cj", "xscj"."xq", "xsbj"."bjmc" from "xsbj", "xscj" where ( "xsbj"."xh" = "xscj"."xh" ) and ( ( "xscj"."xq

55、" = :mxq ) and ( "xsbj"."bjmc" = :mbjmc ) ) order by "xscj"."xh" asc 4.設計查詢班級某學期全體學生某科成績的數據窗口創(chuàng)建數據窗口d_xscj_kccx,顯示風格為“n-up”,欄數為2,數據源類型為“sql select”,其布局如圖所示。數據來源域成績表xscj和視圖xsbj。其中,學號和成績?yōu)槌煽儽韝scj的列,姓名是視圖xsbj的列。在【header】條中添加2個計算機域控件對應的表達式分別為mbjmc和mkcmc,3個文本控件,

56、其文本分別為“成績單”“班級:”和“課程”數據庫窗口的檢索參數為mxq、mbjmc、和mkcmc,分別對應于學期、班級名稱和課程名稱。修改屬性取默認值。數據窗口d_bjkc_shuru生成的sql select語句為: select "xscj"."xh", "xsbj"."xm", "xscj"."cj" from "xsbj", "xscj" where ( "xsbj"."xh" = &qu

57、ot;xscj"."xh" ) and ( ( "xscj"."xq" = :mxq ) and ( "xsbj"."bjmc" = :mbjmc ) and ( "xscj"."kcmc" = :mkcmc ) ) order by "xscj"."xh" asc 9.2設計王文成績信息的窗口1.設計輸入成績的窗口輸入成績的窗口如圖。首先創(chuàng)建窗口對象w_xscj_shuru,在窗口上放置1個分組框控件,3

58、個靜態(tài)文本控件,3個下拉列表框控件,3個命令按鈕控件和1個數據窗口控件。根據圖所示的布局調整數據窗口和控件大小、位置及有關屬性。其中,【保存】按鈕的enabled屬性設置為false;數據窗口控件調整到只顯示學號、姓名和成績3列,vscrollbar屬性設為ture,數據窗口對象為d_xscj_shru,3個下拉列表框控件的列表項為空,由代碼動態(tài)生成。各個窗口和控件的事件腳本如下:(1)窗口的open事件腳本如下dw_1.settransobject( sqlca)intli_xq, li_bjmc, li_kcmc,nstringls_xq, ls_bjmc, ls_kcmcselect c

59、ount(distinct xq) into :li_xqfrom bjkc;declare xqcursor cursor forselect xq from bjkc group by xq;open xqcursor ;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=messa

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論