<output id="r87xx"></output>
    1. 
      
      <mark id="r87xx"><thead id="r87xx"><input id="r87xx"></input></thead></mark>
        •   

               當(dāng)前位置:首頁>軟件介紹>pb學(xué)生成績管理系統(tǒng) 查詢:
               
          pb學(xué)生成績管理系統(tǒng)

                  一、系統(tǒng)分析與設(shè)計

                  在任何高等院校,學(xué)生的成績管理都是學(xué)校教務(wù)管理的重要環(huán)節(jié)之一。隨著學(xué)校學(xué)生人數(shù)的增加,學(xué)生成績管理的任務(wù)更加繁重,必須借助現(xiàn)代化的管理工具和手段提高學(xué)生成績管理效率。學(xué)生成績管理系統(tǒng)廣泛適用于高校教務(wù)管理部門的學(xué)生成績管理。

                  、系統(tǒng)功能分析

                  系統(tǒng)功能分析階段的任務(wù)就是確定該系統(tǒng)所要解決的問題及其具體要求。需要通過與用戶的交流和溝通明確用戶對系統(tǒng)的功能要求,最終列出系統(tǒng)可以實現(xiàn)的功能由用戶確認(rèn)。本例中的學(xué)生成績管理系統(tǒng)需要完成的主要功能如下。

                  ⑴ 班級信息的輸入和存儲,包括班級編號、班級名稱、所屬院系、入校時間和學(xué)制等。

                  ⑵ 對已經(jīng)輸入的班級信息的修改、查詢。

                  ⑶ 學(xué)生基本信息的輸入和存儲,包括學(xué)號、姓名、性別、出生日期、班級等。

                  ⑷ 學(xué)生基本信息的修改和查詢。

                  ⑸ 每學(xué)期初各班所開設(shè)課程的輸入,包括課程名、學(xué)期、學(xué)時等。

                  ⑹ 各班所開設(shè)課程信息的修改和查詢。

                  ⑺ 學(xué)期末輸入每個學(xué)生的考試成績。

                  ⑻ 學(xué)生成績的修改。

                  ⑼ 查詢某個學(xué)生某學(xué)期的各科成績。

                  ⑽ 查詢并打印某班某學(xué)期所有學(xué)生的各科成績。

                  ⑾ 查詢并打印某班某學(xué)期某科成績。

                  ⑿ 系統(tǒng)具有用戶和密碼的管理。

                  、系統(tǒng)功能模塊設(shè)計

                  通過對上述各項功能的分析、分類、綜合,按照模塊化程序設(shè)計的要求,得到如圖1所示的功能模塊圖。

                  二、數(shù)據(jù)庫設(shè)計與實現(xiàn)

                  數(shù)據(jù)庫在一個管理信息系統(tǒng)中占有非常重要的地位,數(shù)據(jù)庫結(jié)構(gòu)的好壞將直接影響到應(yīng)用系統(tǒng)的實現(xiàn)效果和數(shù)據(jù)操作效率以及能否保證數(shù)據(jù)的一致性、完成性和安全性。

                  、數(shù)據(jù)庫設(shè)計

                  根據(jù)學(xué)生成績管理系統(tǒng)的功能要求,通過分析系統(tǒng)要涉及的相關(guān)實體以及要收集、存儲和操縱的數(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)系。

                  用戶(姓名,密碼,用戶類型)。

                  、創(chuàng)建數(shù)據(jù)庫

                  根據(jù)關(guān)系模式,確定需要建立的數(shù)據(jù)庫和表。 在PowerBuilder開發(fā)環(huán)境中打開數(shù)據(jù)庫畫板,使用【ODB ODBC】接口建立Adaptive Server Anywhere 9.0(ASA 9.0)的數(shù)據(jù)庫D:.db,然后依次建立以下5個表和1個視圖。 

                  為了訪問數(shù)據(jù)庫方便,還建立了1個視圖“v_1”,該視圖由學(xué)生基本信息表和班級

                  表連接而成,對應(yīng)的SQL語句如下。

                  VIEW v_1(xh,xm,xb,csrq,bjbh,bjmc,zymc)AS SELECT

                  .xh,student.xm,student.xb,student.csrq,stude

                  .bjbh,class.bjmc,class.xbmc

                  student,class

                  (class.bjbh=student.bjbh);

                  完成數(shù)據(jù)庫和表的創(chuàng)建后,可以在數(shù)據(jù)庫畫板中向數(shù)據(jù)庫輸入部分?jǐn)?shù)據(jù)。其中,“用戶”表中必須輸入一條記錄(“900001”,“123456”,“管理員”),作為進入系統(tǒng)默認(rèn)的管理員,即賬號為“900001”,密碼為“123456”,用戶類型“管理員”。

                  三、創(chuàng)建應(yīng)用對象

                  完成數(shù)據(jù)庫的設(shè)計和系統(tǒng)功能設(shè)計之后,可以開始各個功能模塊的實現(xiàn)。在PowerBuilder中開發(fā)應(yīng)用程序時,就是創(chuàng)建各種對象、為對象設(shè)置屬性以及編寫事件腳本的過程。

                  ⑴ 創(chuàng)建新的工作空間,工作空間文件路徑及名稱設(shè)為“d:.pbw”。

                  ⑵ 創(chuàng)建應(yīng)用對象,應(yīng)用對象名設(shè)為“xscj”,應(yīng)用庫文件路徑及名稱設(shè)為“d:.pbl”,目標(biāo)文件路徑及名稱設(shè)為“d:.pbt”。

                  (3) 為應(yīng)用對象xscj的Open事件編寫代碼如下。

                  四、設(shè)計系統(tǒng)管理模塊

                  本模塊實現(xiàn)用戶登錄控制、學(xué)生能查詢自己的個人成績,教師能錄入班級的課程信息,管理員能實現(xiàn)對用戶管理的控制以及對一些基本信息的錄入。

                  、設(shè)計登錄窗口

                  創(chuàng)建登錄窗口w_load,調(diào)整其大小,在窗口上放置1個圖片控件(p_1)、4個靜態(tài)文本

                  ) 編寫腳本

                  ⑴ 定義全局變量。

                  gs_username,gs_password,gs_admin分別存儲登錄用戶的賬號、密碼和用戶類型。

                   ⑵ 定義實例變量。

                  li_n

                  存儲登錄時用戶輸入密碼錯誤的嘗試次數(shù),控制在最多3次機會不能是局部變量。

                  ⑶ 登錄窗口w_login的Open事件腳本如下。初始化變量li_n,限制出錯次數(shù)為3次。

                  ⑷【登錄】按鈕cb_1的Clicked事件腳本如下。  

                  、設(shè)計密碼修改窗口

                  密碼修改窗口如圖5所示。

                  ) 創(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)值。

                  (2)【取消】按鈕cb_2的Clicked事件腳本如下。

                  、設(shè)計用戶管理的數(shù)據(jù)窗口和窗口

                  ) 設(shè)計數(shù)據(jù)窗口

                  創(chuàng)建數(shù)據(jù)窗口“d_yhgl”,顯示風(fēng)格為“Grid”,數(shù)據(jù)源類型為“Quick Select”,布局如圖6所示。數(shù)據(jù)窗口d_yhgl生成的SQL Select語句為:

                  ) 創(chuàng)建窗口并設(shè)置屬性

                  創(chuàng)建用戶管理窗口w_yhgl,調(diào)整其大小,在窗口上放置1個數(shù)據(jù)窗口控件(dw_1)、

                  個命令按鈕控件(cb_1、cb_2、cb_3、cb_4),各個控件的位置和大小如圖7所示,其

                  (1) 用戶管理窗口w_yhgl的Open事件腳本如下。

                  (2) 用戶管理窗口w_yhgl的Closequery事件腳本如下。

                   (3) 數(shù)據(jù)窗口控件dw_1的Itemchanged事件腳本如下。

                  _3.enabled=true//激活“保存”按鈕

                  (4)【添加】按鈕控件cb_1的Clicked事件腳本如下。

                  row

                  row=dw_1.insertrow(0)

                  _1.scrolltorow(row)

                  (5)【刪除】按鈕控件cb_2的Clicked事件腳本如下。

                  _1.deleterow(0)

                  _3.enabled=true

                  (6)【保存】按鈕控件cb_3的Clicked事件腳本如下。 if dw_1.update(true,false)=1 then

                  _1.resetupdate()

                  _3.enabled=false

                  (7)【退出】按鈕控件cb_4的Clicked事件腳本如下。

                  五、設(shè)計主窗口和菜單

                  主窗口和菜單是系統(tǒng)工作的主界面。

                  、創(chuàng)建菜單對象

                  菜單結(jié)構(gòu)如圖8所示。菜單對象名為“m_main”,菜單欄中的菜單項設(shè)置了訪問

                  鍵(AccessKey),菜單項在工具條上建立了圖標(biāo)按鈕。

                  (1)【系統(tǒng)】菜單下【密碼修改】菜單項的Clicked事件腳本如下。

                  (w_mmxg)

                  (2)【系統(tǒng)】菜單下【用戶管理】菜單項的Clicked事件腳本如下。

                  (w_yhgl)

                  (3)【系統(tǒng)】菜單下【退出系統(tǒng)】菜單項的Clicked事件腳本如下。

                  (parentwindow)

                  (4)【班級管理】菜單下【錄入班級信息】菜單項的Clicked事件腳本如下。

                  (w_banji_shuru)

                  (5)【班級管理】菜單下【修改班級信息】菜單項的Clicked事件腳本如下。

                  (w_banji_xiugai)

                  (6)【班級管理】菜單下【瀏覽班級信息】菜單項的Clicked事件腳本如下。

                  (w_banji_liulan)

                  (7)【學(xué)生管理】菜單下【錄入學(xué)生信息】菜單項的Clicked事件腳本如下。

                  (w_student_shuru)

                  (8)【學(xué)生管理】菜單下【修改學(xué)生信息】菜單項的Clicked事件腳本如下。

                  (9)【學(xué)生管理】菜單下【查詢學(xué)生信息】菜單項的Clicked事件腳本如下。

                  (w_student_chaxun)

                  (10)【課程管理】菜單下【錄入/修改開設(shè)課程】菜單項的Clicked事件腳本如下。

                  (w_subject_shuruxiugai)

                  (11)【課程管理】菜單下【查詢開設(shè)課程信息】菜單項的Clicked事件腳本如下。

                  (w_subject_chaxun)

                  (12)【成績管理】菜單下【錄入修改成績】菜單項的Clicked事件腳本如下。

                  (w_xscj_shuru)

                  (13)【成績管理】菜單下【查詢個人成績】菜單項的Clicked事件腳本如下。

                  (w_xscj_grcx)

                  (14)【成績管理】菜單下【查詢班級成績】菜單項的Clicked事件腳本如下。

                  (w_xscj_bjcx)

                  (15)【成績管理】菜單下【查詢課程成績】菜單項的Clicked事件腳本如下。

                  (w_xscj_kccx)

                  (16)【窗口】菜單下【層疊窗口】菜單項的Clicked事件腳本如下。

                  //w_main.arrangesheets(cascade!)

                  (17)【幫助】菜單下【關(guān)于】菜單項的Clicked事件腳本如下。

                  (w_about)

                  、設(shè)計主窗口

                  創(chuàng)建主窗口w_main如圖9所示,其需要設(shè)置的屬性如表4所示,表中未列出的屬性保留其默認(rèn)值。

                  表4 窗口對象w_main的Open事件腳本如下。

                  gs_admin=學(xué)生 then

                  _main.m_系統(tǒng).m_用戶管理.enabled=false   m_main.m_學(xué)生管理.enabled=false

                  _main.m_班級管理.enabled=false

                  _main.m_課程管理.m_錄入修改開設(shè)課程信息.enabled=false

                  _main.m_成績管理.m_錄入修改成績.enabled=false

                  _main.m_成績管理.m_查詢班級成績.enabled=false

                  _main.m_成績管理.m_查詢課程成績.enabled=false

                   gs_admin=教師 then

                  _main.m_系統(tǒng).m_用戶管理.enabled=false       

                  m_main.m_學(xué)生管理.enabled=false

                  m_main.m_班級管理.enabled=false

                  其功能是對用戶進行權(quán)限控制。

                  六、設(shè)計班級管理模塊

                  本模塊實現(xiàn)班級信息的輸入、修改和查詢。

                  、設(shè)計訪問班級信息的數(shù)據(jù)窗口

                  ) 設(shè)計輸入班級信息的數(shù)據(jù)窗口

                  創(chuàng)建數(shù)據(jù)窗口d_class_shuru,顯示風(fēng)格為“Freeform”,數(shù)據(jù)源類型為“Quick Select”, 其布局如圖10所示。 

                  創(chuàng)建數(shù)據(jù)窗口d_class_xiugai,顯示風(fēng)格為“Grid”,數(shù)據(jù)源類型為“Quick Select”,其布局如圖11所示。

                  、設(shè)計訪問班級信息的窗口

                  首先設(shè)計兩個通用的輸入窗口和修改窗口作為父對象,實現(xiàn)一般輸入和修改的功能,窗口中的數(shù)據(jù)窗口控件不設(shè)定具體的數(shù)據(jù)窗口對象,在繼承的窗口對象中再設(shè)定。通過繼承可以簡化程序設(shè)計,實現(xiàn)代碼重用。

                  創(chuàng)建窗口對象w_shuru,調(diào)整其大小,放置1個數(shù)據(jù)窗口控件(dw_1)、8個命令按鈕控件(cb_1~cb_8),窗口布局如圖12所示。窗口及其控件的屬性設(shè)置見表5。

                  表5 設(shè)置完屬性后開始編寫腳本代碼,其中窗口w_shuru的Open事件和Closequery事件、命令按鈕(【添加】、【刪除】、【保存】和【退出】)的Clicked事件同窗口w_yhgl的相應(yīng)事件腳本,在此不再重復(fù)。其他命令按鈕的事件腳本如下。

                  通過繼承輸入窗口w_shuru生成輸入班級信息窗口w_class_shuru,將數(shù)據(jù)控件dw_1的DataObject屬性設(shè)置為d_class_shuru,將窗口的Title屬性改為“錄入班級信息”,此窗口設(shè)計便完成了。

                  ) 設(shè)計修改班級信息窗口

                  通過繼承修改窗口w_xiugai生成修改班級信息窗口w_class_xiugai,將數(shù)據(jù)控件dw_1的DataObject屬性設(shè)置為d_class_xiugai,將窗口的Title屬性改為“修改班級信息”,此窗口設(shè)計便完成了。

                  ) 設(shè)計瀏覽班級信息窗口

                  創(chuàng)建窗口對象w_class_liulan,調(diào)整其大小,放置1個數(shù)據(jù)窗口控件dw_1,調(diào)整窗口布局如圖14所示。設(shè)置窗口的屬性為Response!,“text”屬性為“瀏覽班級信息”

                  七、設(shè)計學(xué)生基本信息管理模塊

                  本模塊實現(xiàn)學(xué)生基本信息的輸入、修改和查詢。

                  、設(shè)計訪問學(xué)生基本信息的數(shù)據(jù)窗口

                  ) 設(shè)計輸入學(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è)置為“bjbh”,Width of DropDown(%)屬性設(shè)置為“300”,Lines in DropDown屬性設(shè)置為“6”,VScrollBar屬性設(shè)置為“True”。數(shù)據(jù)窗口d_jiben_shuru生成的SQL Select語句為:

                  圖15 數(shù)據(jù)窗口d_student_shuru

                  ) 設(shè)計修改學(xué)生基本信息的數(shù)據(jù)窗口

                  創(chuàng)建數(shù)據(jù)窗口d_student_xiugai,顯示風(fēng)格為“Grid”,數(shù)據(jù)源類型為“Quick Select”,其布局如圖16所示。

                  其中,列控件“xb”的編輯風(fēng)格改為“DropDownListBox”,列表項為“男”,“女”;

                  列控件“bjbh”的編輯風(fēng)格改為“DropDownDW”,其DataWindow屬性設(shè)置為“d_banji_xiugai”,Display Column屬性和Data Column屬性都設(shè)置為“bjbh”,Width o

                  (%)屬性設(shè)置為“300”,Lines in DropDown屬性設(shè)置為“6”,VScrollBar屬性

                  設(shè)置為“True”。

                  數(shù)據(jù)窗口d_student_xiugai生成的SQL Select語句為: 

                  圖16 數(shù)據(jù)窗口d_student_xiugai

                  ) 設(shè)計查詢學(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ù)窗口的修改屬性為默認(rèn)值即“不允許修改”。 數(shù)據(jù)窗口d_student_chaxun生成的SQL Select語句為:  

                  、設(shè)計訪問學(xué)生基本信息的窗口

                  ) 設(shè)計輸入學(xué)生基本信息的窗口

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

                  ) 設(shè)計修改學(xué)生基本信息的窗口

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

                  ) 設(shè)計查詢學(xué)生基本信息的窗口

                  要求此窗口中能夠根據(jù)學(xué)生的姓名或?qū)W號查詢出學(xué)生的基本信息,能夠根據(jù)班級名稱查詢出該班所有學(xué)生的基本信息。

                  查詢學(xué)生基本信息窗口如圖20所示。

                  首先創(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。

                  代碼中根據(jù)查詢依據(jù)的不同,以不同參數(shù)方式檢索數(shù)據(jù)。

                  八、設(shè)計課程管理模塊

                  本模塊實現(xiàn)各班開設(shè)課程的輸入、修改和查詢。

                  、 設(shè)計訪問課程信息的數(shù)據(jù)窗口

                  )、設(shè)計輸入班級課程信息的數(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è)置

                  ) 、設(shè)計查詢班級課程信息的數(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è)計訪問課程信息的窗口

                  )、設(shè)計輸入修改班級課程信息的窗口

                  班級課程的輸入和修改都通過此窗口完成,輸入修改班級課程信息的窗口的布局如圖所示。首先,從祖先窗口w_xiugai繼承生成窗口對象w_subject_shuruxiugai,調(diào)整其大小。然后將數(shù)據(jù)窗口控件

                  _1的DataObject屬性設(shè)置為

                  d_subject_shuru,此窗口設(shè)計即完成。

                  )、設(shè)計查詢班級開設(shè)課程的窗口

                  要求此窗口能夠根據(jù)輸入的學(xué)期和班級查詢出該班此學(xué)期開設(shè)的課程。查詢班級開設(shè)課程的窗口如圖24所示。 首先創(chuàng)建一個窗口對象w_subject_chaxun, 調(diào)整其大小,在窗口中放置2個靜態(tài)文本控件(st_1,st_2)、2個下拉圖片列表框控件(ddplb_1,ddplb_2)、1個命令按鈕(cb_1)、1個數(shù)據(jù)窗口控件(dw_1),調(diào)整各個控件的位置和大小。

                  設(shè)置窗口及其控件的屬性見表8,表中未列出的采用默認(rèn)值。

                  (1)窗口w_subject_chaxun的Open事件腳本如下。 dw_1.settransobject(sqlca)//連接事務(wù)對象sqlca //定義局部變量

                  li_xq,li_bjmc,n

                  ls_xq,ls_bjmc

                  //動態(tài)生成學(xué)期下拉列表框的列表項

                  count(distinct xq)into :li_xq

                  subject;

                  xqcursor cursor for

                  xq from subject group by xq;

                  xqcursor;

                  n=1 to li_xq

                  next xqcursor into :ls_xq;

                  _1.additem(ls_xq)

                  xqcursor;

                  //動態(tài)生成班級下拉列表框的列表項

                  count(distinct bjbh) into :li_bjmc

                  from subject;

                  bjmccursor cursor for

                  class.bjmc

                  subject, class

                  subject.bjbh=class.bjbh group by class.bjmc; open bjmccursor;

                  n=1 to li_bjmc

                  next bjmccursor into :ls_bjmc;

                  _2.additem(ls_bjmc)

                  bjmccursor;

                  (2)【查詢】按鈕的Clicked事件腳本如下

                  九、設(shè)計成績管理模塊

                  本模塊實現(xiàn)成績的輸入、修改和多種方式的查詢與打印。

                  、 設(shè)計訪問成績信息的數(shù)據(jù)窗口

                  )、設(shè)計輸入成績的數(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)可以在數(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è)計狀態(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語句為:

                  )、設(shè)計查詢學(xué)生個人某學(xué)期各科成績的數(shù)據(jù)窗口

                  創(chuàng)建數(shù)據(jù)窗口d_xscj_grcx,顯示風(fēng)格為“Grid”,數(shù)據(jù)源類型為“SQL Select”,其

                  布局如圖27所示。在【Summary】條中添加一個計算域控件,計算數(shù)據(jù)窗口中成績

                  總和。數(shù)據(jù)窗口的檢索參數(shù)為mxh、mxq,分別對應(yīng)于學(xué)號和學(xué)期。

                  )、設(shè)計查詢某班級某學(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的列。在【Header[1]】條中添加2個計算域控件,對應(yīng)的表達式分別為mbjmc和mxq,3個文本控件,其文本分別為“成績單”、“班級:”和“學(xué)期:”。數(shù)據(jù)窗口的檢索參數(shù)為mxq和mbjmc,分別對應(yīng)于學(xué)期和班級名稱。修改屬性取默認(rèn)值(不允許修改)。

                  )、設(shè)計查詢某班級某學(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)槌煽儽韝scj的列,姓名是視圖xsbj的列。在【Header】條中添加2個計算域控件對應(yīng)的表達式分別為mbjmc和mkcmc,3個文本控件,其文本分別為“成績單”、“班級:”和“課程:”。數(shù)據(jù)窗口的檢索參數(shù)為mxq、mbjmc和mkcmc,分別對應(yīng)于學(xué)期、班級名稱和課程名稱。修改屬性取默認(rèn)值(不允許修改)。

                  、 設(shè)計訪問成績信息的窗口

                  )、設(shè)計輸入成績的窗口

                  輸入成績的窗口如圖30所示。首先創(chuàng)建窗口對象w_xscj_shuru,在窗口上放置1

                  個分組框控件、3個靜態(tài)文本控件、3個下拉列表框控件、3個命令按鈕控件和1個數(shù)據(jù)窗口控件。根據(jù)圖30的布局調(diào)整窗口和控件的大小、位置及有關(guān)屬性。其中,【保存】按鈕

                  的enabled屬性設(shè)為False;數(shù)據(jù)窗口控件調(diào)整到只顯示學(xué)號、姓名和成績3列,VScrollBar

                  屬性設(shè)為True,數(shù)據(jù)窗口對象為d_xscj_shuru;3個下拉列表框控件的列表項為空,由代碼動態(tài)生成。

                  各個窗口和控件的事件腳本如下。

                  (1)窗口的Open事件腳本如下:

                  _1.settransobject(sqlca)

                  //定義局部變量

                  li_xq,li_bjmc,li_kcmc,n

                  ls_xq,ls_bjmc,ls_kcmc

                  //生成學(xué)期下拉列表框的列表項

                  count(distinct xq)into :li_xq

                  subject;

                  xqcursor cursor for

                  xq from subject group by xq;

                  open xqcursor;

                  n=1 to li_xqparnext xqcursor into :ls_xq;

                  _1.additem(ls_xq)

                  xqcursor;

                  //生成班級下拉列表框的列表項

                  count(distinct bjbh) into :li_bjmc

                  subject;

                  bjmccursor cursor for

                  class.bjmc

                  subject, class

                  subject.bjbh=class.bjbh group

                  .bjmc;

                  bjmccursor;

                  n=1 to li_bjmc

                  next bjmccursor into :ls_bjmc;

                  _2.additem(ls_bjmc)

                  窗口的Closequery事件腳本如下。

                  (3)課程的下拉列表框的Getfocus事件腳本如下。

                  li_kcmc,n

                  ls_kcmc,ls_xq,ls_bjmc

                  _xq=ddplb_1.text

                  _bjmc=ddplb_2.text

                  not(ls_xq=or ls_bjmc=)then

                  //求選定班級和學(xué)期的課程門數(shù)

                  count(distinct subject.kcmc)into :li_kcmc

                  subject,class

                  (subject.bjbh=class.bjbh)and(class.bjmc=:ls_bjmc)and(subject.xq=:ls_xq);

                  //生成課程的下拉列表框的列表項

                  kcmccursor cursor for

                  subject.kcmc

                  class,subject

                  (subject.bjbh=class.bjbh)and

                  (class.bjmc=:ls_bjmc)and(subject.xq=:ls_xq)

                  by subject.kcmc;

                  _3.reset()

                  kcmccursor;

                  n=1 to li_kcmc

                  next kcmccursor into :ls_kcmc;

                  _3.additem(ls_kcmc)

                  kcmccursor;

                  if

                  (4)【確定】按鈕的Clicked事件腳本如下。 int li_xh,n

                  ls_kcmc,ls_xq,ls_bjmc,ls_xh

                  _xq=ddlb_1.text

                  _bjmc=ddlb_2.text

                  _kcmc=ddlb_3.text

                  ls_xq=or ls_bjmc=or ls_kcmc=then

                  messagebox(提示,選擇項不能空!)

                  //用SQL語句插入所選班級每個學(xué)生的選定課程和學(xué)期的成績記錄

                  //成績列為空值,由數(shù)據(jù)窗口輸入

                  li_xh,n

                  ls_kcmc,ls_xq,ls_bjmc,ls_xh

                  _xq=ddplb_1.text

                  _bjmc=ddplb_2.text

                  _kcmc=ddplb_3.text

                  ls_xq= or ls_bjmc= or ls_kcmc= then

                  (提示,選擇項不能空!)

                  count(distinct xh)into :li_xh

                  v_1

                  v_1.bjmc=:ls_bjmc;

                  xhcursor cursor for

                  xh

                  v_1

                  v_1.bjmc=:ls_bjmc;

                  xhcursor;

                  n=1 to li_xh

                  fetch next xhcursor into:ls_xh;

                  into xscj

                  (xh,xq,kcmc,cj)

                  (:ls_xh,:ls_xq,:ls_kcmc,null);

                  xhcursor;

                  _1.retrieve(ls_xq,ls_bjmc,ls_kcmc)

                  if

                  (5)【保存】按鈕的Clicked事件腳本如下。

                  dw_1.update(true,false)=1 then

                  _1.resetupdate()

                  _2.enabled=false

                  (提示,保存數(shù)據(jù)失敗!)

                  if

                  (6)【退出】按鈕的Clicked事件腳本如下。

                  (parent)

                  (7)數(shù)據(jù)窗口的Itemchanged事件腳本如下。

                  _2.enabled=true

                  ) 、設(shè)計查詢學(xué)生個人成績的窗口

                  查詢學(xué)生個人成績的窗口如圖31所示。數(shù)據(jù)窗口控件連接的數(shù)據(jù)窗口

                  對象為d_xscj_grcx。

                  (1)【查詢】按鈕的Clicked事件腳本如下。 string l_xh

                  l_xq

                  _xh=trim(sle_1.text)

                  _xq=trim(sle_2.text)

                  l_xh=or l_xq=  then

                  (提示,學(xué)號,學(xué)期不能為空)

                  _1.retrieve(l_xh,l_xq)

                  if

                  (2)【打印】按鈕的Clicked事件腳本如下。 dw_1.print(true)

                  (3)【退出】按鈕的Clicked事件腳本如下。 close(parent)

                  _xscj_grcx

                  、 設(shè)計查詢班級成績的窗口

                  查詢班級成績的窗口如圖32所示。數(shù)據(jù)窗口控件的DataObject屬性為d_xscj_bjcx。

                  此窗口的Open事件腳本與輸入成績窗口的Open事件腳本相同,【打印】按鈕和【退出】按鈕的Clicked事件腳本略。

                  、 設(shè)計查詢課程成績的窗口

                  查詢課程成績的窗口如圖33所示。

                  圖33 窗口w_xscj_kccx

                  數(shù)據(jù)窗口控件的DataObject屬性為d_xscj_kccx。此窗口的Open事件腳本、“課程”的下拉列表框的Getfocus事件腳本與輸入成績窗口的對應(yīng)事件腳本相同,【打印】按鈕和【退出】按鈕的Clicked事件腳本略。【查詢】按鈕的Clicked事件腳本如下。

                  _1.settransobject(sqlca)

                  ddplb_1.text=or ddplb_2.text=or ddplb_3.text= then

                  (提示,班級 學(xué)期和課程不能為空)

                  _1.retrieve(ddplb_1.text,ddplb_2.text,ddplb_3.text)

                  _2.enabled=true

                  if

                  十、系統(tǒng)的編譯和發(fā)布

                  、創(chuàng)建工程對象

                  單擊工具條上的【New】圖標(biāo),打開【New】對話框,在對話框中選擇【Project】標(biāo)

                  簽頁,再選擇【Application Wizard】圖標(biāo),單擊【Ok】按鈕,開始工程的向?qū)?,最后出現(xiàn),如圖34所示的工程對象。

                  2、編譯生成可執(zhí)行程序

                  單擊工程畫板工具條上的【Deploy】圖標(biāo),開始編譯過程。編譯通過后,生成可執(zhí)行文件xscj.exe。

                  、測試分布

                  對可執(zhí)行程序做系統(tǒng)的測試,最后便可發(fā)布了。 十一、小結(jié)

                  第一次自己一個人完成了一個簡單的管理系統(tǒng)的開發(fā),其中遇到的困難,通過上網(wǎng)搜索資料,同學(xué)的幫助的很好的解決了,例如在對學(xué)生成績班級成績查詢時,數(shù)據(jù)窗口的顯示風(fēng)格crasstab不知道該怎么實現(xiàn),期間花了很多時間查資料才弄明白應(yīng)該怎么一步一步的實現(xiàn),什么做行,什么做列,統(tǒng)計什么都需要明白。

                  通過此次對學(xué)生成績管理系統(tǒng)的開發(fā),讓我對PowerBuilder中各個常用的窗口控件的用法、屬性、數(shù)據(jù)庫的操作有了個大致的了解,讓我對使用PowerBuilder進行數(shù)據(jù)庫應(yīng)用程序的開發(fā)過程有了個全面的了解,明白了一個軟件系統(tǒng)開發(fā)所需要的的步驟,系統(tǒng)分析、功能設(shè)計、數(shù)據(jù)庫設(shè)計以及數(shù)據(jù)庫的實現(xiàn)等。

                  


          真實ERP選型過程ERP系統(tǒng)管理制度
          生產(chǎn)無紙化項目規(guī)劃國內(nèi)ERP排行榜
          ERP知識點整理ERP系統(tǒng)實施的失敗與成功原因分析
          MRP - 制造業(yè)模型ERP與MES中的相關(guān)名詞解釋
          淺談內(nèi)部控制與ERP管理系統(tǒng)的關(guān)系學(xué)院課程安排管理系統(tǒng)
          學(xué)生選課系統(tǒng)排課子系統(tǒng)報告VB學(xué)生成績管理系統(tǒng)
          學(xué)生成績管理系統(tǒng)實驗報告高校圖書館管理系統(tǒng)數(shù)據(jù)庫設(shè)計
          高校教職工信息管理系統(tǒng)基于jsp的高校宿舍管理系統(tǒng)
          信息發(fā)布:廣州名易軟件有限公司 http://www.jetlc.com
          • 勁爆價:
            不限功能
            不限用戶
            1998元/年

          • 微信客服

            <output id="r87xx"></output>
          1. 
            
            <mark id="r87xx"><thead id="r87xx"><input id="r87xx"></input></thead></mark>
              • 国产 在线观看免费视频今夜 | 操逼网在线视频 | 毛片性爱视屏 | 天堂AV免费观看 | 亚洲黄色电影网站 | 51午夜福利 | 天天日天天日天天干 | 国产高潮视频在线观看 | 天美传媒69成人影片 | 色五月婷婷在线 |