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

下載本文檔

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

文檔簡介

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

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

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

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

5、建立Adaptive Server Anywhere 8.0(ASA 8.0)的數(shù)據(jù)庫D:xscjdataxscj.db,然后依次建立以下5個(gè)表和1個(gè)視圖。CTRL+N 新建SHIFT+F7打開數(shù)據(jù)面板 選擇ODB ODBC-Utilities-Create ASA Database選擇table-new table設(shè)置參數(shù)如圖 其他表設(shè)置如圖1.“班級(jí)”表表名:banji主鍵:bh2.“學(xué)生基本信息”表表名:jiben主鍵:xh3.“課程”表表名:bjkc主鍵:(bh,xq,kcmc)4.“成績”表表名:xscj主鍵:(xh,xqkcmc)5.“用戶”表表名:users主鍵:xm依次建立好主

6、鍵和外鍵如圖所示6.視圖為了訪問數(shù)據(jù)庫方便,還建立一個(gè)視圖“XSBJ”,該視圖由學(xué)生基本信息表和班級(jí)表連接而成,對(duì)應(yīng)的SQL語句如下:CREATE VIEW xsbj (xh,xm,xb,csrq,bh,bjmc,zymc) AS select jiben.xh,jiben.xm,jiben.xb,jiben.csrq,banji.bh,banji.bjmc,banji.zymc from DBA.banji,DBA.jiben where(jiben.bh = banji.bh)然后保存就可以了。3創(chuàng)建應(yīng)用對(duì)象完成數(shù)據(jù)庫的設(shè)計(jì)和系統(tǒng)功能設(shè)計(jì)之后,可以開始各個(gè)功能模塊的實(shí)現(xiàn)。在PowerBui

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

8、ile XscjSQLCA.DBMS = "ODBC"SQLCA.AutoCommit = FalseSQLCA.DBParm = "Connectstring='DSN=xscj'"CONNECT;if SQLCA.sqlcode<>0 thenmessagebox("提示","數(shù)據(jù)庫連接失?。?quot;)elseopen(w_logion)end if執(zhí)行此應(yīng)用時(shí),首先數(shù)據(jù)庫“xscj”,成功后打開登陸窗口。4創(chuàng)建應(yīng)用對(duì)象本模塊實(shí)現(xiàn)用戶登陸控制、用戶自己的密碼修改和用戶管理,其中用戶管理包括

9、修改用戶信息,添加新用戶,刪除用戶,只有管理員級(jí)用戶有此權(quán)限。4.1 設(shè)計(jì)管理登陸窗口登陸窗口如圖所示1.創(chuàng)建窗口并設(shè)置屬性創(chuàng)建登陸窗口w_login,調(diào)整其大小,在窗口上放置1個(gè)圖片控件,3個(gè)靜態(tài)文本控件,1個(gè)成組框控件,2個(gè)單行編輯器控件,2個(gè)命令控制按鈕控件,各個(gè)控件的位置和大小如圖所示。對(duì)象屬性取值W_loginTitle登陸Window typeResponse!Sle_2Passwordtrue2.編寫腳本(1)定義全局變量string gs_username , gs_password , gs_admin (2) 定義實(shí)例變量int li_n存儲(chǔ)登錄時(shí)用戶輸入密碼錯(cuò)誤的嘗試次數(shù)

10、,控制在最多3次機(jī)會(huì)。必須圍實(shí)例變量,不能是局部變量。(3)登陸窗口w_logind 的OPEN 事件腳本如下:int li_n=3初始化變量li_n,限制出錯(cuò)次數(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("提示","用戶名和密碼不能為

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"."password&quo

12、t; = :ls_password ); if SQLCA.sqlcode=0 thenopen(w_main)close(w_logion)elseli_n=li_n - 1if li_n<>0 thenmessagebox("提示","用戶名密碼錯(cuò)誤")elsemessagebox("提示","錯(cuò)誤超過3次,自動(dòng)退出")haltend ifend ifend if(5)放棄按鈕cb_2的clicked事件腳本如下:Halt4.2 設(shè)計(jì)密碼修改窗口密碼修改窗口如圖所示:1.創(chuàng)建窗口并設(shè)置屬性創(chuàng)建密碼修

13、改窗口w_mmxg,調(diào)整其大小,在窗口上放置3個(gè)靜態(tài)文本控件(st_1,st_2,st_2)3個(gè)單行編輯器控件(sle_1,sle_2,sle_3)2個(gè)命令按鈕控件(cb_1,cb_2)各個(gè)控件的位置和大小參照?qǐng)D調(diào)整。W_mmxgTitle修改密碼Windows typeResponse!Sle_2PasswordTrueSle_3PasswordTrue2.確定按鈕cb_1的Clicked事件腳本如下:string ls_passwordif trim(sle_1.text)=trim(sle_3.text) thenmessagebox("提示","舊密碼錯(cuò)誤

14、")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.sqlcode<>0 thenmessag

15、ebox("提示","密碼修改不成功")elseclose(parent)messagebox("提示","密碼修改成功")end ifelsemessagebox("提示","兩次新密碼不一樣")end ifend if(2)取消按鈕cb_2的Clicked事件腳本如下Close(parent)4.3設(shè)計(jì)用戶管理的數(shù)據(jù)窗口和窗口用戶管理窗口如圖所示:1.設(shè)計(jì)數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口“d_yhgl”,顯示風(fēng)格圍“grid”,數(shù)據(jù)源類型圍”Quick Select”,發(fā)布如圖所示。

16、其中控件“admin”的編輯風(fēng)格改為“DropDOWNListBox”,碼表(Code Table)如圖。數(shù)據(jù)窗口d_yhgl生成的SQL Select語句為: SELECT "users"."name", "users"."password", "users"."admin" FROM "users" 2.創(chuàng)建窗口并設(shè)置屬性創(chuàng)建用戶管理窗口w_yhgl,調(diào)整其大小,在窗口上位置1個(gè)數(shù)據(jù)窗口控件(dw_1)、4個(gè)命令按鈕控件(cb_1,cb_2,cb_3,

17、cb_4)各個(gè)控件的位置和大小參照如圖調(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=messagebox("提示","添加修改容未保存,確定要退出嗎

18、?",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事件腳本如下:if dw_1.update(t

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

20、2)系統(tǒng)菜單下用戶管理菜單項(xiàng)的Clicked事件腳本如下:Open(w_yhgl)(3)系統(tǒng)菜單下退出系統(tǒng)菜單項(xiàng)的Clicked事件腳本如下:Close(parentwindow)(4)班級(jí)管理菜單錄入班級(jí)信息菜單項(xiàng)Clicked事件腳本如下:Opensheet(w_banji_shuru,w_main,6,Original!)其功能是在主窗口(w_main)中,以輸入班級(jí)信息窗口w_banji_shuru的原來大小(Original!參數(shù)指定)打開,并在第6個(gè)菜單(即窗口菜單)下列出該窗口的名稱。(5)班級(jí)管理菜單需愛修改修改班級(jí)信息菜單項(xiàng)的Clicked事件腳本如下:opensheet(w

21、_xiugai,w_main,6,Original! )(6)班級(jí)管理菜單下修改班級(jí)信息菜單項(xiàng)的菜單項(xiàng)的Clicked事件腳本如下:opensheet(w_banji_liulan,w_main,6,Original!) (7)學(xué)生管理菜單下錄入學(xué)生信息菜單項(xiàng)的Clicked事件腳本如下:opensheet(w_jiben_shuru,w_main,6,Original!) (8)學(xué)生管理菜單下修改學(xué)生信息菜單項(xiàng)的Clicked事件腳本如下:opensheet(w_jiben_xiugai,w_main,6,Original!) (9)學(xué)生管理菜單下查詢學(xué)生信息菜單項(xiàng)的Clicked事件腳本如

22、下:opensheet(w_jiben_chaxun,w_main,6,Original! )(10)課程管理菜單下錄入/修改開設(shè)課程菜單項(xiàng)的Clicked事件腳本如下:opensheet(w_bjkc_shuruxiugai,w_main,6,Original! )(11)課程管理菜單下查詢開設(shè)課程信息菜單項(xiàng)的Clicked事件腳本如下:opensheet(w_bjkc_chaxun,w_main,6,Original! )(12)成績管理菜單下錄入修改成績菜單項(xiàng)的Clicked事件腳本如下:opensheet(w_xscj_shuru,w_main,6,Original! )(13)成績管

23、理菜單下查詢個(gè)人成績菜單項(xiàng)的Clicked事件腳本如下:opensheet(w_xscj_grcx,w_main,6,Original! )(14)成績管理菜單下查詢班級(jí)成績菜單項(xiàng)的Clicked事件腳本如下:opensheet(w_xscj_bjcx,w_main,6,Original! )(15)成績管理菜單下查詢課程成績菜單項(xiàng)的Clicked事件腳本如下:opensheet(w_xscj_kccx,w_main,6,Original! )(16)窗口菜單下層疊窗口菜單項(xiàng)的Clicked事件腳本如下:w_main.arrangesheets (cascade!)(17)幫助菜單下關(guān)于菜單項(xiàng)

24、的Clicked事件腳本如下:open(w_about)(18)幫助菜單下聯(lián)機(jī)幫助菜單項(xiàng)的Clicked事件腳本如下:showhelp("xscjhelp.chm",index!)5.2設(shè)計(jì)主窗口設(shè)計(jì)窗口如圖所示創(chuàng)建窗口對(duì)象W_main,W_mainTitle學(xué)生成績管理系統(tǒng)Window typeMdihelp!MenunameM_mainWindowstatemaximized窗口對(duì)象w_main的Open事件腳本如下if gs_admin='n' thenm_main.m_系統(tǒng)s.m_用戶管理.enabled=falseend if其功能是非管理員用戶計(jì)

25、入系統(tǒng)時(shí)關(guān)閉用戶管理菜單項(xiàng)6設(shè)計(jì)班級(jí)管理模塊本模塊實(shí)現(xiàn)班級(jí)信息的輸入、修改和查詢。6.1設(shè)計(jì)訪問班級(jí)信息的數(shù)據(jù)窗口1.設(shè)計(jì)輸入班級(jí)信息的數(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"."bh", "banji"."bjmc", "banji"."zymc", "banji".&

26、quot;xz", "banji"."rxsj", "banji"."rs" FROM "banji" 2.設(shè)計(jì)修改班級(jí)信息的數(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"."bh", "banji"."bjmc", "

27、;banji"."zymc", "banji"."xz", "banji"."rxsj", "banji"."rs" FROM "banji" ORDER BY "banji"."bh" ASC 6.2設(shè)計(jì)訪問班級(jí)信息的窗口首先設(shè)計(jì)兩個(gè)通用的輸入窗口和修改窗口作為父對(duì)象,實(shí)現(xiàn)一般輸入和修改的功能,窗口中的數(shù)據(jù)窗口控件不設(shè)定具體的數(shù)據(jù)窗口對(duì)象,在繼承的窗口對(duì)象中再設(shè)定。通過繼承可以簡化程序

28、設(shè)計(jì),實(shí)現(xiàn)代碼重用。1.設(shè)計(jì)輸入窗口創(chuàng)建窗口對(duì)象w_shuru,調(diào)整其大小,放置1個(gè)數(shù)據(jù)窗口控件(dw_1)、8個(gè)命令按鈕控件(cb_1···cb_8)窗口布局如圖所示。W_shuruTitle錄入Window typeMain!ResizableFalseCenterFalseMaxboxFalseMinboxFalse設(shè)置完屬性后開始編寫腳本代碼,其中窗口w_shuru的open事件Closequery事件、命令按鈕(添加、刪除、保存和退出)的Clicked事同前面的窗口W_yhgl的相應(yīng)事件腳本。(1)|<<按鈕的clicked事件腳本如下:dw

29、_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)建窗口對(duì)象w_xiugai,調(diào)整大小,放置1個(gè)數(shù)據(jù)窗口控件(dw_1),4個(gè)命令控件(cb_1···cb_4),窗口布局如圖所示。W_xiugaiTitle修改Window typeMain!ResizableFal

30、seCenterFalseMaxboxFalseMinboxFalse3設(shè)計(jì)輸入班級(jí)信息窗口通過繼承輸入窗口w_shuru生成輸入班級(jí)信息窗口w_banji_shuru,將數(shù)據(jù)控件dw_1的DataObject屬性設(shè)置為d_banji_shuru,將窗口的Title屬性改為“錄入班級(jí)信息”,此窗口設(shè)計(jì)便完成了。4.設(shè)計(jì)修改班級(jí)信息窗口通過繼承修改窗口w_xiugai生成修改班級(jí)信息窗口w_banji_xiugai,將數(shù)據(jù)控件dw_1的DataObject屬性設(shè)置為d_banji_xiugai,將窗口的Title屬性改為“修改班級(jí)信息”,此窗口設(shè)計(jì)便完成了。5.設(shè)計(jì)瀏覽班級(jí)信息窗口創(chuàng)建窗口對(duì)象w

31、_banji_liulan,調(diào)整大小,放置1個(gè)數(shù)據(jù)窗口控件dw_1,調(diào)整窗口布局如圖所示。W_banji_liulanTitle瀏覽班級(jí)信息Window typeMain!ReizableFalseCenterFalseMaxboxFalseMinboxFalseDw_1VscrollbarTureDataobjectD_banji_xiugaiEnabledFalse窗口的open事件腳本如下:dw_1.settransobject( sqlca)dw_1.retrieve()7設(shè)計(jì)學(xué)生基本信息管理模塊本模塊實(shí)現(xiàn)學(xué)生基本信息的輸入,修改和查詢。7.1設(shè)計(jì)訪問學(xué)生基本信息的數(shù)據(jù)窗口1.設(shè)計(jì)輸入

32、學(xué)生基本信息的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_jiben_shuru,顯示風(fēng)格為“freeform”,數(shù)據(jù)源類型為“Quick Select”,布局如圖所示其中,列控件“xb”的編輯風(fēng)格為“radiobuttons”,列表控件“bh”的編輯風(fēng)格改為“dropdowndw”,其datawindow屬性設(shè)置為“d_banji_xiugai”,display column屬性和Data colum屬性都設(shè)置為“bh”,width of dropdown(%)屬性設(shè)置為“300”,lines in dropdown的屬性設(shè)置為“6”vscrollbar屬性設(shè)置為“true”。數(shù)據(jù)窗口d_jiben_shuru

33、生成的sql select 語句為: SELECT "jiben"."xh", "jiben"."xm", "jiben"."xb", "jiben"."csrq", "jiben"."jtzz", "jiben"."bh" FROM "jiben" 2.設(shè)計(jì)修改學(xué)生基本信息的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_jiben_xiugai,顯示風(fēng)格為“

34、grid”,數(shù)據(jù)源類型為“quick select”,布局如圖所示:其中,列控件“xb”的編輯風(fēng)格改為“dropdownlistbox”,列表項(xiàng)為“男”,“女”;列表控件“bh”的編輯風(fēng)格改為“dropdowndw”,其datawindow屬性設(shè)置為“d_jiebn_xiugai”,display columm屬性和Data colum屬性都設(shè)置為“bh”,width of dropdown(%)屬性設(shè)置為“300”,lines in dropdown屬性設(shè)置為“6”,vscrollbar屬性設(shè)置為“true”數(shù)據(jù)窗口d_jiben_xiugai生成的sql select語句為: SELECT

35、 "jiben"."xh", "jiben"."xm", "jiben"."xb", "jiben"."csrq", "jiben"."jtzz", "jiben"."bh" FROM "jiben" 3.設(shè)計(jì)查詢學(xué)生基本信息的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_jiebn_chaxun,顯示風(fēng)格為“grid”,數(shù)據(jù)源類型為“sql select”其

36、中布局如圖所示其中,定義3個(gè)string型檢索參數(shù)變量mxh,mxm,mbj,分別表示學(xué)號(hào)、班級(jí),形成帶檢索參數(shù)的數(shù)據(jù)窗口。該數(shù)據(jù)窗口的修改屬性默認(rèn)值即“不允許修改”數(shù)據(jù)窗口d_jiben_chaxun生成的sql select語句為: SELECT "banji"."bjmc", "jiben"."xh", "jiben"."xm", "jiben"."xb", "jiben"."csrq",

37、"jiben"."jtzz", "jiben"."bh" FROM "banji", "jiben" WHERE ( "jiben"."bh" = "banji"."bh" ) and ( ( "jiben"."xh" like :mxh ) AND ( "jiben"."xm" like :mxm ) AND ( &

38、quot;banji"."bjmc" like :mbj ) ) ORDER BY "jiben"."xh" ASC 7.2設(shè)計(jì)訪問學(xué)生基本信息的窗口1.設(shè)計(jì)輸入學(xué)生基本信息的窗口通過繼承輸入窗口w_shuru生成輸入學(xué)生基本信息窗口w_jiben_shru,將數(shù)據(jù)控件dw_1的dataobject屬性設(shè)置為d_jiben_shuru,將窗口的title屬性改為“錄入學(xué)生基本信息”,此窗口就完成了。2.設(shè)計(jì)修改學(xué)生基本信息的窗口通過繼承輸入窗口w_xiugai生成輸入學(xué)生基本信息窗口w_jiben_xiugai,將數(shù)據(jù)控件d

39、w_1的dataobject屬性設(shè)置為d_jiben_xiugai,將窗口的title屬性改為“修改學(xué)生基本信息”,此窗口就完成了。3.設(shè)計(jì)查詢學(xué)生基本信息的窗口要求此窗口中能夠根據(jù)學(xué)生的或?qū)W號(hào)查詢出學(xué)生的基本信息,能夠根據(jù)班級(jí)名稱查詢出該班所有學(xué)生的基本信息。查詢學(xué)生基本信息窗口如圖所示:首先創(chuàng)建一個(gè)窗口對(duì)象w_jiben_chaxun,調(diào)整大小,在窗口中放置2個(gè)靜態(tài)文本控件(st_1,st_2)、1個(gè)下拉表框控件(ddlb_1)、1個(gè)單行編輯器控件(sle_1)1個(gè)命令按鈕(cb_1)、1個(gè)數(shù)據(jù)窗口控件(dw_1)和一個(gè)線形控件(ln_1),調(diào)整各個(gè)控件的位置和大小。查詢按鈕的clicke

40、d事件腳本如下:dw_1.settransobject( sqlca)if ddlb_1.text="" or sle_1.text="" thenmessagebox("提示","查詢列和查詢?nèi)莶荒芸眨?quot;)returnend ifstring strstr=trim(sle_1.text)choose case ddlb_1.textcase "學(xué)號(hào)"dw_1.retrieve(str,"%","%")case ""dw_1.retr

41、ieve("%",str,"%")case "班級(jí)名稱"dw_1.retrieve("%","%",str)end choose代碼中根據(jù)查詢依據(jù)的不同,以不同參數(shù)方式檢索數(shù)據(jù)。8設(shè)計(jì)課程管理模塊本模塊實(shí)現(xiàn)各班開設(shè)課程的輸入、修改和查詢。8.1設(shè)計(jì)訪問課程信息的數(shù)據(jù)窗口1設(shè)計(jì)輸入班級(jí)課程信息的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_bjkc_shuru,顯示風(fēng)格為“grid”,數(shù)據(jù)源類型為“quick select”,如圖:其中,列控件“bh”的編輯風(fēng)格改為“dropdowndw”,其datawindow屬性設(shè)

42、置為“d_banji_xiugai”,display columm屬性和Data colum屬性都設(shè)置為“bh”,width of dropdown(%)屬性設(shè)置為“300”,lines in dropdown屬性設(shè)置為“6”,vscrollbar屬性設(shè)置為“true”數(shù)據(jù)窗口d_bjkc_shuru生成的sql select語句為: SELECT "bjkc"."bh", "bjkc"."xq", "bjkc"."kcmc", "bjkc"."

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

44、c"."xs", "bjkc"."jsxm", "banji"."bjmc" FROM "bjkc", "banji" WHERE ( "banji"."bh" = "bjkc"."bh" ) and ( ( "bjkc"."xq" = :mxq ) AND ( "banji"."bjmc"

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

46、ddlb_1,ddlb_2)、1個(gè)命令按鈕(cb_1)、1個(gè)數(shù)據(jù)庫窗口控件(dw_1),調(diào)整各個(gè)控件的位置和大小。(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 ;FOR n=1 TO li_xqFETCH N

47、EXT 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.bh = banji.bh GROUP BY banji.bjmc;OPEN bjmccursor;FOR n=1 TO li_bjmcFETCH NEXT bjmccursor INTO :ls_bjmc;ddlb_

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

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

50、;."xm", "xscj"."cj", "xscj"."xq", "xscj"."kcmc" FROM "xsbj", "xscj" WHERE ( "xsbj"."xh" = "xscj"."xh" ) ORDER BY "xscj"."xh" ASC 2.設(shè)計(jì)查詢學(xué)生個(gè)人某學(xué)期各科成績的數(shù)據(jù)窗

51、口創(chuàng)建數(shù)據(jù)窗口d_xscj_grcx,顯示風(fēng)格為“grid”,數(shù)據(jù)源類型為“quick select”,其布局如圖所示。在summary條中添加一個(gè)計(jì)算機(jī)域控件,計(jì)算機(jī)數(shù)據(jù)窗口中成績總和。數(shù)據(jù)窗口的檢索參數(shù)為mxh、mxq,分別對(duì)應(yīng)于學(xué)號(hào)和學(xué)期。數(shù)據(jù)窗口d_bjkc_shuru,生成的ssql select語句為: SELECT "xscj"."kcmc", "xscj"."cj" FROM "xscj" WHERE ( "xscj"."xh" = :mx

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

53、性取默認(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

54、 ( "xsbj"."xh" = "xscj"."xh" ) and ( ( "xscj"."xq" = :mxq ) AND ( "xsbj"."bjmc" = :mbjmc ) ) ORDER BY "xscj"."xh" ASC 4.設(shè)計(jì)查詢班級(jí)某學(xué)期全體學(xué)生某科成績的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_xscj_kccx,顯示風(fēng)格為“N-UP”,欄數(shù)為2,數(shù)據(jù)源類型為“SQL select”,其布局如

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

56、"cj" FROM "xsbj", "xscj" WHERE ( "xsbj"."xh" = "xscj"."xh" ) and ( ( "xscj"."xq" = :mxq ) AND ( "xsbj"."bjmc" = :mbjmc ) AND ( "xscj"."kcmc" = :mkcmc ) ) ORDER BY "x

57、scj"."xh" ASC 9.2設(shè)計(jì)王文成績信息的窗口1.設(shè)計(jì)輸入成績的窗口輸入成績的窗口如圖。首先創(chuàng)建窗口對(duì)象w_xscj_shuru,在窗口上放置1個(gè)分組框控件,3個(gè)靜態(tài)文本控件,3個(gè)下拉列表框控件,3個(gè)命令按鈕控件和1個(gè)數(shù)據(jù)窗口控件。根據(jù)圖所示的布局調(diào)整數(shù)據(jù)窗口和控件大小、位置與有關(guān)屬性。其中,保存按鈕的enabled屬性設(shè)置為false;數(shù)據(jù)窗口控件調(diào)整到只顯示學(xué)號(hào)、和成績3列,vscrollbar屬性設(shè)為ture,數(shù)據(jù)窗口對(duì)象為d_xscj_shru,3個(gè)下拉列表框控件的列表項(xiàng)為空,由代碼動(dòng)態(tài)生成。各個(gè)窗口和控件的事件腳本如下:(1)窗口的open事件

58、腳本如下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 xqcursor ;FOR n=1 TO li_xqFETCH NEXT xqcursor INTO :ls_xq;ddlb_1.additem( ls_xq)NEXTCLOSE xqcursor ;S

59、ELECT count(distinct bh) INTO :li_bjmcFROM bjkc;DECLARE bjmccursor CURSOR FORSELECT banji.bjmcFROM bjkc, banjiWHERE bjkc.bh = banji.bh 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("提示","添加修改容未保存,確實(shí)要退出嗎?",Question!,YesNo!)if rt=1 thenreturn 0end ifend i

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論