【正文】
括課程信息查詢修改,課程信息輸入。(4)成績(jī)信息管理 包括成績(jī)查詢,成績(jī)修改,成績(jī)輸入第四章 系統(tǒng)實(shí)現(xiàn)[第4章 第1節(jié) 創(chuàng)建數(shù)據(jù)庫(kù)]在PowerBuilder開發(fā)環(huán)境中打開數(shù)據(jù)庫(kù)畫板,使用[ODB ODBC]接口建立Adaptive Server Anywhere (ASA )的數(shù)據(jù)庫(kù),然后建立5個(gè)表和1個(gè)視圖。分別為“班級(jí)”表、“學(xué)生基本信息”表、“課程”表、“成績(jī)”表、“用戶”表。各表之間的關(guān)系如下圖1所示:圖1 各表的關(guān)聯(lián)關(guān)系[第4章 第1節(jié) 創(chuàng)建應(yīng)用對(duì)象](1) 創(chuàng)建新的工作空間。(2) 創(chuàng)建應(yīng)用對(duì)象,應(yīng)用對(duì)象名設(shè)為“ylq”。(3) :// Profile student = ODBC = False = ConnectString=39。DSN=student39。connect。if 0 then messagebox(提示,數(shù)據(jù)庫(kù)連接失敗!)else open(w_denglu)else open(w_login)end if執(zhí)行此應(yīng)用時(shí),首先鏈接數(shù)據(jù)庫(kù)“ylq”,成功后打開登錄窗口。[第4章 第3節(jié)設(shè)計(jì)系統(tǒng)管理模塊1)設(shè)計(jì)登錄窗口登錄窗口如圖2所示:圖2 登錄窗口為登錄窗口編寫腳本。(1)定義全局變量string gs_username,gs_password,gs_admin 分別存儲(chǔ)登錄用戶的姓名、密碼和權(quán)限。(2)定義實(shí)例變量 int li_n 存儲(chǔ)登錄時(shí)用戶輸入密碼錯(cuò)誤的嘗試次數(shù),控制在最多3次機(jī)會(huì)。(3)登錄窗口w_denglu的open事件腳本如下 li_n=3 初始化變量li_n,限制出錯(cuò)次數(shù)為3次。(4)[確定]按鈕cb_1的Clicked事件腳本如下。string ls_username,ls_passwordls_username=trim()ls_password=trim()if ls_username= or ls_password= then messagebox(提示,用戶名和密碼不能為空)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 = :ls_password )。 if =0 then open(w_main) close(w_denglu) else li_n=li_n 1 if li_n0 then messagebox(提示,用戶名或密碼錯(cuò)誤) else messagebox(提示,錯(cuò)誤超過3次,自動(dòng)退出) halt end if end ifend if(5)[放棄]按鈕cb_2的Clicked事件腳本如下.halt 2) 設(shè)計(jì)密碼修改窗口創(chuàng)建窗口并設(shè)置屬性創(chuàng)建密碼修改窗口w_xgmm,調(diào)整其大小,在窗口上放置3個(gè)靜態(tài)文本控件(st_1,st_2,st_3)、2個(gè)命令按鈕控件(cb_1,cb_2),設(shè)計(jì)完后如圖3所示:圖3 密碼修改窗口為密碼窗口編寫腳本(1)[確定]按鈕cb_1的Clicked事件腳本如下。 string ls_passwordif trim()gs_password then messagebox(提示,舊密碼錯(cuò)誤)else if trim()=() thenls_password=trim() UPDATE users SET password = :ls_password WHERE (users.name = :gs_username ) AND (users.password = :ls_password)。 if 0 then messagebox(提示,密碼修改不成功) else close(parent) messagebox(提示,密碼修改完成) end if else messagebox(提示,兩次密碼不相同) end if end if(2)[取消]按鈕cb_2的Clicked事件腳本如下。 Close(parent)[第4章 第4節(jié)設(shè)計(jì)用戶管理的數(shù)據(jù)窗口和窗口1)設(shè)計(jì)數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口“d_yhgl”,顯示風(fēng)格為“Grid”,數(shù)據(jù)源類型為“Quick Select”,布局如圖4所示。圖4 數(shù)據(jù)窗口d_yhgl數(shù)據(jù)窗口d_yhgl生成的SQL Select語(yǔ)句為:SELECTusers. name, users. password, users. admin FROM users 創(chuàng)建窗口并設(shè)置屬性創(chuàng)建用戶管理窗口w_yhgl,調(diào)整其大小,在窗口上放置1個(gè)數(shù)據(jù)窗口控件(dw_1)、4個(gè)命令按鈕控件( cb_cb_cb_cb_4),設(shè)計(jì)完后的窗口如圖5所示:圖5 用戶管理窗口為窗口編寫腳本(1)用戶管理窗口w_yhgl的Open事件腳本如下。( sqlca )()(2)用戶管理窗口w_yhgl的Closequery事件腳本如下。integer rt()if () =0 and ()=0 then return 0else rt=messagebox(提示,添加修改內(nèi)容未保存,確實(shí)退出嗎?,Question!,YesNo!) if rt=1 then return 0 end ifend ifreturn 1(3)數(shù)據(jù)窗口控件dw_1的Itemechanged事件腳本如下。=true //激活“保存”按鈕(4)[添加]按鈕控件cb_1的Clicked事件腳本如下。integer rowrow=(0)(row)(5)[刪除]按鈕控件cb_2的Clicked事件腳本如下。(0)=true(6)[保存]按鈕控件cb_3的Clicked事件腳本如下。if (true,false)=1 then () mit。 =falseelse rollback。 messagebox(提示,保存數(shù)據(jù)失敗!)end if(7)[退出]按鈕控件cb_4的Clicked事件腳本如下。close(parent)[第4章 第5節(jié)設(shè)計(jì)主窗口和菜單1)創(chuàng)建菜單對(duì)象菜單結(jié)構(gòu)如圖6所示。菜單對(duì)象名為“m_main”,菜單欄中的菜單項(xiàng)設(shè)置了訪問鍵(AccessKey),常用的菜單項(xiàng)設(shè)置了快捷鍵(如[退出系統(tǒng)]的快捷鍵為[Alt+F4],最常用的菜單項(xiàng)在工具條上建立了按鈕。)下面編寫各個(gè)菜單項(xiàng)的腳本。對(duì)于這些代碼,在對(duì)應(yīng)的窗口沒有建立之前先注釋掉,在建立之后再去掉注釋。(1)[系統(tǒng)]菜單下[密碼修改]菜單的Clicked事件腳本如下。Open(w_mmxg)(2)[系統(tǒng)]菜單下[用戶管理]菜單的Clicked事件腳本如下。Open(w_yhgl)(3)[系統(tǒng)]菜單下[退出系統(tǒng)]菜單的Clicked事件腳本如下。Close(parentwidow)(4)[班級(jí)管理]菜單下[錄入班級(jí)信息] 菜單的Clicked事件腳本如下。opensheet(w_banji_shuru,w_main,6,Original!)5)[班級(jí)管理]菜單下[修改班級(jí)信息]菜單的Clicked事件腳本如下。opensheet(w_banji_xiugai,w_main,6,Original!)(6)[班級(jí)管理]菜單下[瀏覽班級(jí)信息]菜單的Clicked事件腳本如下。opensheet(w_banji_liulan