華北科技學院powerbuilder課程設計報告學生成績數據_第1頁
華北科技學院powerbuilder課程設計報告學生成績數據_第2頁
華北科技學院powerbuilder課程設計報告學生成績數據_第3頁
華北科技學院powerbuilder課程設計報告學生成績數據_第4頁
華北科技學院powerbuilder課程設計報告學生成績數據_第5頁
已閱讀5頁,還剩27頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、 2021-2021學年第1學期PowerBuilder程序設計專業選修課學號: 姓名: 班級: 答 辯 情 況:1、程序難易程度:難 ,較難 ,一般 ,簡單 ;2、程序工作量: 大 ,較大 ,一般 ,較小 ;3、根本操作: 熟練 ,較熟練 ,一般 ,不熟練 ,極不熟練 ;4、代碼理解: 準確 ,較準確 ,一般 ,不準確 ,極不準確 ;平 時 成 績: 優秀 ,良好 ,中等 ,一般 總 評 成 績: 任 課 教 師:2021年12月5日學生成績數據庫管理系統一、 系統結構設計 XSCJ數據庫中包含有三個表,XS表用來存放學生根本信息,KC表用來存放課程根本信息,XSCJ表用來存放學生課程成績信

2、息。根據學校教育管理的實際要求,可以設計以下主要的交互窗口:1 登陸窗口w_load2 控制臺窗口w_main3 查詢子系統窗口w_query4 數據管理子系統窗口w_data5 幫助系統窗口w_help其中查詢子系統包括學生成績查詢,學生根本情況查詢,學生選課信息查詢和交互式查詢。而數據管理子系統窗口包括資源管理,數據的更新,數據的刪除,數據插入等。二、 系統開發方案(1) 檢查系統硬件和軟件環境是否符合要求。(2) 檢查XSCJ數據庫的三個樣本數據表,觀察是否滿足系統的需求。(3) 為工程創立磁盤存儲區域,并創立新的工作空間。(4) 逐一創立組成系統的各個模塊。(5) 采用面向對象的方式,

3、實現模塊的可重用性。(6) 完成各個模塊的代碼,并進行單個模塊的測試。(7) 進行整個系統的測試。(8) 生成可執行文件。(9) 軟件發布。整個系統的體系結構圖如圖1-1所示:三、 設計步驟1創立工作空間、應用與數據庫表1啟動PowerBuilder 10.0,創立工作空間和應用project12創立的ASA數據庫XSCJ.db,數據源名稱Xscj,創立xs數據表,kc數據表,xs_cj數據表,其結構如:表1 XS表結構表2 KC表結構表3 XS_CJ表結構2 新建主窗口對象1建一個主窗口w_load,在窗口上放置了三個靜態文本,兩個單行文本編輯框和兩個命令按鈕。在w_load窗口中新建了一個

4、用于連接數據庫的窗口函數load_connect,函數腳本為:String Is_userid,Is_password,Is_database /定義形參/將實參的值賦給形參Is_userid=trim (userid)Is_password= (password)IF Is_password="" THEN /輸入密碼非空 RETURN -1END IFSQLCA.DBMS="ODBC"SQLCA.AutoCommit=FALSEIs_database="ConnectString='DSN=xscj;"SQLCA.dbpa

5、rm=Is_database+"UID="+Is_userid+"PWD="+Is_password+"'"CONNECT USING SQLCA; /與數據庫連接定義cb_ok中的Click事件的腳本為:SetPointer (hourglass!)IF PARENT.load_connect (sle_userid.text,sle_password.text)=-1 THEN MessageBox ("連接數據庫錯誤","連接失敗"+sqlca.sqlerrtext) HALTEL

6、SEClose (PARENT)Open (w_main)END IF保存并測試登錄窗口2創立控制臺窗口w_main放置了一個靜態文本框,六個命令按紐,放置了背景圖片并且將其放在底部。按鈕“退出的Clicked事件的腳本為:Close (PARENT)3創立了一個新選單,該選單的樹型結構如下列圖并且編寫各個選單按鈕的腳本。4創立子系統的根本窗口并利用繼承關系派生出各子系統的窗口1.創立根本窗口w_base,設置窗口的WindowsType類型為midhelp!、MenuName=manue,其他屬性采用系統默認。2.在w_base的根底上,通過繼承的方式創立子系統窗口w_query,w_dat

7、a,w_help,w_pipe,w_statistic.分別在子系統窗口上添加控件。編輯完成后的窗口如下列圖。窗口W_query圖在窗口w_main中的“查詢子系統命令按鈕的clicked事件中編寫代碼:Open(w_query)保存所做工作,運行應用程序進行測試。窗口W_data圖在窗口w_main中的“數據管理子系統命令按鈕的clicked事件中編寫代碼:Open(w_data)保存所做工作,運行應用程序進行測試。窗口W_help圖在窗口w_main中的“幫助子系統命令按鈕的clicked事件中編寫代碼:Open(w_help)保存所做工作,運行應用程序進行測試。窗口W_pipe圖在窗口w

8、_main中的“數據通道命令按鈕的clicked事件中編寫代碼:Open(w_pipe)保存所做工作,運行應用程序進行測試。窗口W_statistic圖在窗口w_statistic的Open事件中輸入一下腳本:gr_1.Elevation=33/將三維圖形視角旋轉33度gr_1.Spacing=150/條形圖數據之間距離為本條本身寬度的150%gr_1.AddCategory("第一學期") /設置分類軸gr_1.AddCategory("第二學期")gr_1.AddCategory("第三學期")gr_1.AddCategory(&

9、quot;第四學期")gr_1.AddCategory("第五學期")gr_1.AddCategory("第六學期")gr_1.AddCategory("第七學期")gr_1.AddSeries("計算機根底")/設置系列軸gr_1.AddSeries("程序設計語言")gr_1.AddSeries("數據結構")gr_1.AddSeries("操作系統")gr_1.AddSeries("程序設計與語言")gr_1.AddSe

10、ries("計算機原理")gr_1.AddSeries("數據庫原理")gr_1.AddSeries("軟件工程")gr_1.AddData(1,80,1)/添加數據ta(2,68,2)gr_1.AddData(4,68,5)gr_1.AddData(5,68,6)gr_1.AddData(6,85,5)gr_1.AddData(7,68,7)gr_1.AddData(9,51,7)在窗口w_main中的“統計分析命令按鈕的clicked事件中編寫代碼:Open(w_statistic)保存所做工作,運行應用程序進行測試。5創立查詢子

11、系統的子窗口在w_base根本窗口的根底上,通過繼承的方式創立w_stu,w_select,w_achievement,w_custom。分別添加控件!窗口W_stu圖窗口W_select圖窗口W_achievement圖窗口W_custom圖3為查詢子系統的字窗口編寫腳本,并建立各窗口之間的聯接。(1) 建立各窗口之間的連接A. 在窗口w_query中的“學生根本信息查詢命令按鈕clicked的事件中編寫代碼:Open (w_stu)B. 在w_query窗口中的“學生選課查詢命令按鈕的clicked事件中編寫代碼:Open (w_select)C. 在w_query窗口中的“學生成績查詢命

12、令按鈕的clicked事件中編寫代碼:Open (w_achievement)D. 在w_query窗口中的“自定義查詢命令按鈕的clicked事件中編寫代碼:Open (w_custom)E. 在窗口w_main中的“查詢子系統命令按鈕的clicked事件中編寫代碼:Open (w_query)(2) 編寫窗口s_tu的腳本 OPEN事件:dw_1.SetTransObject (SQLCA) 查詢按鈕的clicked事件:String xuehaoxuehao=Trim (sle_1.text)IF xuehao="" THEN MessageBox ("沒有

13、輸入學號","請輸入正確的查詢條件!")ELSEdw_1.Retrieve (xuehao)END IF sle_1.SetFocus ()去除按鈕的clicked事件:dw_1.ReSet ()sle_1.text=" "sle_1.SetFocus ()3編寫窗口w_achievement的腳本 OPEN事件:dw_1.SetTransObject (SQLCA) 查詢按鈕clicked事件:String xh,kcxh=Trim (sle_1.text)kc=Trim (sle_2.text)IF xh="" AND

14、kc="" THEN MessageBox ("非法的條件輸入","請輸入正確的查詢條件!")ELSE dw_1.Retrieve (xh,kc)END IFsle_1.SetFocus ()去除按鈕clicked事件:dw_1.ReSet ()sle_1.text=""sle_1.text=""sle_1.SetFocus()4編寫定義查詢窗口w_custom的腳本 命令按鈕:Int m,nString mysql,strmysql=mle_1.text /讀取查詢語句lb_1.reset (

15、) /重置Ib_1DECLARE mycur DYNAMIC CURSOR FOR sqlsa;PREPARE sqlsa FROM : mysql USING sqlca;DESCRIBE sqlsa INTO sqlda;OPEN DYNAMIC mycur USING DESCRIPTOR sqlda;FETCH mycur USING DESCRIPTOR sqlda;m=sqlda.numoutputs /獲取輸出參數的個數,即Select中列的個數DO WHILE sqlca.sqlcode=0 /測試查詢是否成功str="" /將查詢結果變為一個串FOR n=

16、1 TO m /處理所有輸出參數CHOOSE CASE sqlda.outparmtypen /判斷每個輸出參數的類型CASE typeinteger!,typedecimal!,TypeDouble! /輸出參數為Integer,decimal,Double型 str=str+string (sqlda.getdynamicnumber(n) +"" CASE typestring! /輸出參數為String型 str=str+trim (sqlda.getdynamicstring(n) +""CASE typedate! /輸出參數為Date型 s

17、tr=str+string (sqlda.getdynamicdate(n) +""END CHOOSENEXTlb_1.additem (str) /顯示查詢結果FETCH mycur USING DESCRIPTOR sqlda;/處理下一條記錄 LOOP CLOSE mycur; /關閉游標4 . 創立數據管理子系統的子窗口在根本窗口的根底上,通過繼承的方式創立學生信息管理窗口w_stuupdata,在窗口上添加八個命令按鈕和一個靜態文本控件和一個分組框控件。通過繼承w_stuupdata創立w_course.在根本窗口w_base的 根底上通過繼承的的方式創立窗口w

18、_achieveupdata.窗口W_stuupdata圖窗口W_course圖窗口W_achieveupdata圖5為數據管理的子系統的子窗口編寫腳本,并建立各窗口之間的連接。創立幫助子系統的子窗口,并建立各窗口之間的連接及相應的腳本.1建立各窗口之間的連接A.在窗口w_data中的“學生信息管理命令按鈕clicked的事件中編寫代碼:Open (w_stuupdata)B.在w_data窗口中的“課程信息管理命令按鈕的clicked事件中編寫代碼:Open (w_course)C.在w_data窗口中的“學生成績信息管理命令按鈕的clicked事件中編寫代碼:Open (w_achieve

19、updata)2編寫窗口w_stuupdata的腳本OPEN事件:dw_1.SetTransObject (SQLCA)增加記錄按鈕cb_2的clicked事件:Long rowRow=dw_1.InsertRow(0)dw_1.SetRow(row)dw_1.ScrollToRow(row)dw_1.SetFocus()插入記錄按鈕cb_5的clicked事件:Long rowrow=dw_1.InsertRow(dw_1.GetRow()dw_1.SetRow(row)dw_1.ScrollToRow(row)dw_1.SetFocus()刪除記錄按鈕cb_4的clicked事件:dw_1

20、.DeleteRow(dw_1.GetRow()顯示記錄按鈕cb_6的clicked事件:dw_1.Retrieve()更新記錄按鈕cb_3的clicked事件:dw_1.Update()dw_1.ReSet()返回按鈕cb_1的clicked事件:close(parent)下一記錄按鈕cb_7的clicked事件:dw_1.ScrollNextRow()dw_1.SelectRow(dw_1.GetRow() -1,false)dw_1.SelectRow(dw_1.GetRow() ,true)上一記錄按鈕cb_8的clicked事件:dw_1.ScrollPriorRow()dw_1.S

21、electRow(dw_1.GetRow() +1,false)dw_1.SelectRow(dw_1.GetRow() ,true)6創立數據窗口對象一共創立了5個數據窗口對象(1) 在w_stu的dw_1的數據窗口對象d_12在w_select的dw_1的數據窗口對象d_2 3在W_achievement中新建了一個數據窗口d_3,主要用于XS_CJ表,KC表及XS中按學號和課程號檢索學生的課程與成績信息.4在窗口w_stuupdata中新建一個數據窗口對象d_4主要用于管理XS表中的信息。5在w_course窗口中新建一個數據窗口d_5對象,主要用于管表KC中的信息。7創立幫助子系統的子

22、窗口,并建立各窗口之間的連接及編寫相應的腳本1建立幫助子系統的子窗口:在根本窗口的根底之上,通過繼承的方式創立使用幫助窗口。窗口W_help圖2建立窗口之間的連接。 在窗口w_main中的“使用幫助命令按鈕clicked的事件中編寫代碼:Open (w_help)。8 . 創立數據通道系統的子窗口,并編寫相應的腳本 窗口w_pipe圖編寫窗口w_pipe的腳本 1在窗口w_mian中的“數據通道命令按鈕clicked事件中編寫代碼:Open(w_pipe) 2創立效勞器數據庫cour_pro,并配置其數據源。創立兩個數據管道:pipe_0,pipe_1。Pipe_0:將XSCJ數據庫中的表XS

23、中的數據上傳到數據庫cour_pro中以更新數據;Pipe_1:將cour_pro中的表stu中的數據下載到XSCJ數據庫中。3在窗口w_pipe中定義函數Connectserver表示連接效勞器數據庫、errorinteger ret錯誤處理、sartpipeTransation sourcetrans, Transaction desttrans,string p_object開始管道操作。4編寫代碼在窗口w_pipe中,聲明以下InstanceVariables對象實例:/定義事務處理對象serverdb/serverdb用來連接效勞器數據庫Transaction serverdb/定義

24、數據管道對象u_pipePipeline u_pipe在窗口w_pipe的open事件中編寫代碼:/定義事務處理對象實例變量serverdbserverdb=Create Transaction/定義數據管道對象實例變量u_pipe=Create pipeline在窗口w_pipe的close事件中編寫代碼:/釋放數據管道對象DESTROY u_pipe;/釋放事務處理對象DISCONNECT USING sqlca;DESTROY sqlca;DISCONNECT USING serverdb;DESTROY serverdb;在“取消命令的clicked事件中編寫代碼:Int retret

25、=u_pipe.Cancel() /終止管道運行IF ret=1 THENMessageBox("取消操作成功","終止管道運行")ELSE MessageBox("取消操作失敗","未能終止管道運行")END IF在“返回命令按鈕cb_return的clicked事件中編寫代碼:Close(PARENT)在連接效勞器數據庫的函數Connectserver中編寫代碼:/該函數無參數,返回值為sqlcode/連接效勞器數據庫/這里為方便實驗,選用了另一個本地庫cour_proserverdb.autocommit=t

26、rueserverdb.DBMS = "odbc"serverdb.database = "cour_pro"serverdb.userid = "dba"serverdb.dbpass = "sql"serverdb.servername = ""serverdb.logid=""serverdb.logpass=""serverdb.dbparm = "CONNECTstring='dsn=stu;uid=dba;pwd=sql

27、9;"CONNECT USING serverdb;在錯誤處理函數errorinteger ret中編寫代碼:/該函數的入口參數ret,表示執行數據管道操作返回的錯誤代碼。/該函數無返回值。String msgCHOOSE CASE retCASE -1 msg = "打不開數據管道"CASE -2 msg = "列數太多" CASE -3msg = "要創立的表已經存在"CASE -4msg = "要增加數據的表不存在"CASE -5msg = "未建立與數據庫的連接"CASE -6

28、msg = "參數錯誤"CASE -7msg = "列不匹配"CASE -8msg = "訪問源數據庫的SQL語句致命錯誤"CASE -9msg = "訪問目標數據庫的SQL語句致命錯誤"CASE -10msg = "已經到達指定的最大錯誤數"CASE -12msg = "不正確的表語法"CASE -13msg = "需要關鍵字、但未指定關鍵字"CASE -15msg = "數據管道已經在運行"CASE -16msg = "源數據庫出錯"CASE -17msg = "目標數據

溫馨提示

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

評論

0/150

提交評論