【正文】
學(xué)生成績管理系統(tǒng)程序分析一 系統(tǒng)分析與設(shè)計1)系統(tǒng)功能分析系統(tǒng)功能分析階段的任務(wù)就是確定該系統(tǒng)所要解決的問題及其具體要求。學(xué)生成績管理系統(tǒng)需要完成的主要功能如下:(1) 班級信息的輸入和存儲,包括班級編號、班級名稱、所屬專業(yè)、入學(xué)時間和學(xué)制等。(2) 對已經(jīng)輸入的班級信息的修改、查詢。(3) 學(xué)生基本信息的輸入和存儲、包括學(xué)號、姓名、性別、出生日期、班級等。(4) 學(xué)生基本信息的修改和查詢。(5) 每學(xué)期初各班所開設(shè)課程的輸入,包括課程名、學(xué)期、學(xué)時等。(6) 各班所開設(shè)課程信息的修改和查詢。(7) 學(xué)期末輸入每個學(xué)生的考試成績。(8) 學(xué)生成績的修改。(9) 查詢某個學(xué)生。(10) 查詢并打印某班某學(xué)期所有學(xué)生的各科成績。(11) 查詢并打印某班某學(xué)期某課成績。(12) 系統(tǒng)具有用戶和密碼的管理。2)系統(tǒng)功能模塊分析通過上面各項功能的分析、分類、綜合,按照模塊化程序設(shè)計的要求,得到它的模塊結(jié)構(gòu):(1)系統(tǒng)管理 它包括密碼修改,用戶管理,登錄控制。(2)班級信息管理 它包括班級信息修改,班級信息查詢,班級信息輸入。(2)學(xué)生基本信息管理 包括學(xué)生基本信息查詢,學(xué)生基本信息修改,學(xué)生基本信息輸入。(3)課程信息管理 包括課程信息查詢修改,課程信息輸入。(4)成績信息管理 包括成績查詢,成績修改,成績輸入。二、數(shù)據(jù)庫設(shè)計和實現(xiàn)1)創(chuàng)建數(shù)據(jù)庫在PowerBuilder開發(fā)環(huán)境中打開數(shù)據(jù)庫畫板,使用[ODB ODBC]接口建立Adaptive Server Anywhere (ASA )的數(shù)據(jù)庫,然后建立5個表和1個視圖。分別為“班級”表、“學(xué)生基本信息”表、“課程”表、“成績”表、“用戶”表。各表之間的關(guān)系如下圖1所示:圖1 各表的關(guān)聯(lián)關(guān)系2) 創(chuàng)建應(yīng)用對象(1) 創(chuàng)建新的工作空間。(2) 創(chuàng)建應(yīng)用對象,應(yīng)用對象名設(shè)為“app_xscj”。(3) :// Profile liudi = ODBC = False = ConnectString=39。DSN=liudi。UID=。PWD=39。CONNECT。if 0 then messagebox(提示,數(shù)據(jù)庫連接失敗!)else open(w_login)end if執(zhí)行此應(yīng)用時,首先鏈接數(shù)據(jù)庫“xscj”,成功后打開登錄窗口。三、設(shè)計系統(tǒng)管理模塊1) 設(shè)計登錄窗口登錄窗口如圖2所示:圖2 登錄窗口為登錄窗口編寫腳本。(1)定義全局變量string gs_username,gs_password,gs_admin 分別存儲登錄用戶的姓名、密碼和權(quán)限。(2)定義實例變量 int li_n 存儲登錄時用戶輸入密碼錯誤的嘗試次數(shù),控制在最多3次機會。(3)登錄窗口w_login的open事件腳本如下 li_n=3 初始化變量li_n,限制出錯次數(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_login) else li_n=li_n 1 if li_n0 then messagebox(提示,用戶名或密碼錯誤) else messagebox(提示,錯誤超過3次,自動退出) halt end if end ifend if(5)[放棄]按鈕cb_2的Clicked事件腳本如下.halt 2) 設(shè)計密碼修改窗口創(chuàng)建窗口并設(shè)置屬性創(chuàng)建密碼修改窗口w_mmxg,調(diào)整其大小,在窗口上放置3個靜態(tài)文本控件(st_1,st_2,st_3)、2個命令按鈕控件(cb_1,cb_2),設(shè)計完后如圖3所示:圖3 密碼修改窗口為密碼窗口編寫腳本(1)[確定]按鈕cb_1的Clicked事件腳本如下。 string ls_passwordif trim()gs_password then messagebox(提示,舊密碼錯誤)else if trim()=() then ls_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)2) 設(shè)計用戶管理的數(shù)據(jù)窗口和窗口設(shè)計數(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語句為:SELECTusers. name, users. password, users. admin FROM users 創(chuàng)建窗口并設(shè)置屬性創(chuàng)建用戶管理窗口w_yhgl,調(diào)整其大小,在窗口上放置1個數(shù)據(jù)窗口控件(dw_1)、4個命令按鈕控件( cb_cb_cb_cb_4),設(shè)計完后的窗口如圖5所示:圖5 用戶管理窗口為窗口編寫腳本(1)用戶管理窗口w_yhgl的Open事件腳本如下。( sqlca )()(2)用戶管理窗口w_yhgl的Closequery事件腳本如下。integer rt()if () =0 and ()=0 t