華北科技學(xué)院powerbuilder課程設(shè)計(jì)報(bào)告學(xué)生成績(jī)數(shù)據(jù)_第1頁(yè)
華北科技學(xué)院powerbuilder課程設(shè)計(jì)報(bào)告學(xué)生成績(jī)數(shù)據(jù)_第2頁(yè)
華北科技學(xué)院powerbuilder課程設(shè)計(jì)報(bào)告學(xué)生成績(jī)數(shù)據(jù)_第3頁(yè)
華北科技學(xué)院powerbuilder課程設(shè)計(jì)報(bào)告學(xué)生成績(jī)數(shù)據(jù)_第4頁(yè)
華北科技學(xué)院powerbuilder課程設(shè)計(jì)報(bào)告學(xué)生成績(jī)數(shù)據(jù)_第5頁(yè)
已閱讀5頁(yè),還剩27頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 2021-2021學(xué)年第1學(xué)期PowerBuilder程序設(shè)計(jì)專(zhuān)業(yè)選修課學(xué)號(hào): 姓名: 班級(jí): 答 辯 情 況:1、程序難易程度:難 ,較難 ,一般 ,簡(jiǎn)單 ;2、程序工作量: 大 ,較大 ,一般 ,較小 ;3、根本操作: 熟練 ,較熟練 ,一般 ,不熟練 ,極不熟練 ;4、代碼理解: 準(zhǔn)確 ,較準(zhǔn)確 ,一般 ,不準(zhǔn)確 ,極不準(zhǔn)確 ;平 時(shí) 成 績(jī): 優(yōu)秀 ,良好 ,中等 ,一般 總 評(píng) 成 績(jī): 任 課 教 師:2021年12月5日學(xué)生成績(jī)數(shù)據(jù)庫(kù)管理系統(tǒng)一、 系統(tǒng)結(jié)構(gòu)設(shè)計(jì) XSCJ數(shù)據(jù)庫(kù)中包含有三個(gè)表,XS表用來(lái)存放學(xué)生根本信息,KC表用來(lái)存放課程根本信息,XSCJ表用來(lái)存放學(xué)生課程成績(jī)信

2、息。根據(jù)學(xué)校教育管理的實(shí)際要求,可以設(shè)計(jì)以下主要的交互窗口:1 登陸窗口w_load2 控制臺(tái)窗口w_main3 查詢子系統(tǒng)窗口w_query4 數(shù)據(jù)管理子系統(tǒng)窗口w_data5 幫助系統(tǒng)窗口w_help其中查詢子系統(tǒng)包括學(xué)生成績(jī)查詢,學(xué)生根本情況查詢,學(xué)生選課信息查詢和交互式查詢。而數(shù)據(jù)管理子系統(tǒng)窗口包括資源管理,數(shù)據(jù)的更新,數(shù)據(jù)的刪除,數(shù)據(jù)插入等。二、 系統(tǒng)開(kāi)發(fā)方案(1) 檢查系統(tǒng)硬件和軟件環(huán)境是否符合要求。(2) 檢查XSCJ數(shù)據(jù)庫(kù)的三個(gè)樣本數(shù)據(jù)表,觀察是否滿足系統(tǒng)的需求。(3) 為工程創(chuàng)立磁盤(pán)存儲(chǔ)區(qū)域,并創(chuàng)立新的工作空間。(4) 逐一創(chuàng)立組成系統(tǒng)的各個(gè)模塊。(5) 采用面向?qū)ο蟮姆绞剑?/p>

3、實(shí)現(xiàn)模塊的可重用性。(6) 完成各個(gè)模塊的代碼,并進(jìn)行單個(gè)模塊的測(cè)試。(7) 進(jìn)行整個(gè)系統(tǒng)的測(cè)試。(8) 生成可執(zhí)行文件。(9) 軟件發(fā)布。整個(gè)系統(tǒng)的體系結(jié)構(gòu)圖如圖1-1所示:三、 設(shè)計(jì)步驟1創(chuàng)立工作空間、應(yīng)用與數(shù)據(jù)庫(kù)表1啟動(dòng)PowerBuilder 10.0,創(chuàng)立工作空間和應(yīng)用project12創(chuàng)立的ASA數(shù)據(jù)庫(kù)XSCJ.db,數(shù)據(jù)源名稱(chēng)Xscj,創(chuàng)立xs數(shù)據(jù)表,kc數(shù)據(jù)表,xs_cj數(shù)據(jù)表,其結(jié)構(gòu)如:表1 XS表結(jié)構(gòu)表2 KC表結(jié)構(gòu)表3 XS_CJ表結(jié)構(gòu)2 新建主窗口對(duì)象1建一個(gè)主窗口w_load,在窗口上放置了三個(gè)靜態(tài)文本,兩個(gè)單行文本編輯框和兩個(gè)命令按鈕。在w_load窗口中新建了一個(gè)

4、用于連接數(shù)據(jù)庫(kù)的窗口函數(shù)load_connect,函數(shù)腳本為:String Is_userid,Is_password,Is_database /定義形參/將實(shí)參的值賦給形參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; /與數(shù)據(jù)庫(kù)連接定義cb_ok中的Click事件的腳本為:SetPointer (hourglass!)IF PARENT.load_connect (sle_userid.text,sle_password.text)=-1 THEN MessageBox ("連接數(shù)據(jù)庫(kù)錯(cuò)誤","連接失敗"+sqlca.sqlerrtext) HALTEL

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

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

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

9、quot;第四學(xué)期")gr_1.AddCategory("第五學(xué)期")gr_1.AddCategory("第六學(xué)期")gr_1.AddCategory("第七學(xué)期")gr_1.AddSeries("計(jì)算機(jī)根底")/設(shè)置系列軸gr_1.AddSeries("程序設(shè)計(jì)語(yǔ)言")gr_1.AddSeries("數(shù)據(jù)結(jié)構(gòu)")gr_1.AddSeries("操作系統(tǒng)")gr_1.AddSeries("程序設(shè)計(jì)與語(yǔ)言")gr_1.AddSe

10、ries("計(jì)算機(jī)原理")gr_1.AddSeries("數(shù)據(jù)庫(kù)原理")gr_1.AddSeries("軟件工程")gr_1.AddData(1,80,1)/添加數(shù)據(jù)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中的“統(tǒng)計(jì)分析命令按鈕的clicked事件中編寫(xiě)代碼:Open(w_statistic)保存所做工作,運(yùn)行應(yīng)用程序進(jìn)行測(cè)試。5創(chuàng)立查詢子

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

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

13、輸入學(xué)號(hào)","請(qǐng)輸入正確的查詢條件!")ELSEdw_1.Retrieve (xuehao)END IF sle_1.SetFocus ()去除按鈕的clicked事件:dw_1.ReSet ()sle_1.text=" "sle_1.SetFocus ()3編寫(xiě)窗口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 ("非法的條件輸入","請(qǐng)輸入正確的查詢條件!")ELSE dw_1.Retrieve (xh,kc)END IFsle_1.SetFocus ()去除按鈕clicked事件:dw_1.ReSet ()sle_1.text=""sle_1.text=""sle_1.SetFocus()4編寫(xiě)定義查詢窗口w_custom的腳本 命令按鈕:Int m,nString mysql,strmysql=mle_1.text /讀取查詢語(yǔ)句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 /獲取輸出參數(shù)的個(gè)數(shù),即Select中列的個(gè)數(shù)DO WHILE sqlca.sqlcode=0 /測(cè)試查詢是否成功str="" /將查詢結(jié)果變?yōu)橐粋€(gè)串FOR n=

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

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

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

19、updata)2編寫(xiě)窗口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創(chuàng)立數(shù)據(jù)窗口對(duì)象一共創(chuàng)立了5個(gè)數(shù)據(jù)窗口對(duì)象(1) 在w_stu的dw_1的數(shù)據(jù)窗口對(duì)象d_12在w_select的dw_1的數(shù)據(jù)窗口對(duì)象d_2 3在W_achievement中新建了一個(gè)數(shù)據(jù)窗口d_3,主要用于XS_CJ表,KC表及XS中按學(xué)號(hào)和課程號(hào)檢索學(xué)生的課程與成績(jī)信息.4在窗口w_stuupdata中新建一個(gè)數(shù)據(jù)窗口對(duì)象d_4主要用于管理XS表中的信息。5在w_course窗口中新建一個(gè)數(shù)據(jù)窗口d_5對(duì)象,主要用于管表KC中的信息。7創(chuàng)立幫助子系統(tǒng)的子

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

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

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

25、=u_pipe.Cancel() /終止管道運(yùn)行IF ret=1 THENMessageBox("取消操作成功","終止管道運(yùn)行")ELSE MessageBox("取消操作失敗","未能終止管道運(yùn)行")END IF在“返回命令按鈕cb_return的clicked事件中編寫(xiě)代碼:Close(PARENT)在連接效勞器數(shù)據(jù)庫(kù)的函數(shù)Connectserver中編寫(xiě)代碼:/該函數(shù)無(wú)參數(shù),返回值為sqlcode/連接效勞器數(shù)據(jù)庫(kù)/這里為方便實(shí)驗(yàn),選用了另一個(gè)本地庫(kù)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;在錯(cuò)誤處理函數(shù)errorinteger ret中編寫(xiě)代碼:/該函數(shù)的入口參數(shù)ret,表示執(zhí)行數(shù)據(jù)管道操作返回的錯(cuò)誤代碼。/該函數(shù)無(wú)返回值。String msgCHOOSE CASE retCASE -1 msg = "打不開(kāi)數(shù)據(jù)管道"CASE -2 msg = "列數(shù)太多" CASE -3msg = "要?jiǎng)?chuàng)立的表已經(jīng)存在"CASE -4msg = "要增加數(shù)據(jù)的表不存在"CASE -5msg = "未建立與數(shù)據(jù)庫(kù)的連接"CASE -6

28、msg = "參數(shù)錯(cuò)誤"CASE -7msg = "列不匹配"CASE -8msg = "訪問(wèn)源數(shù)據(jù)庫(kù)的SQL語(yǔ)句致命錯(cuò)誤"CASE -9msg = "訪問(wèn)目標(biāo)數(shù)據(jù)庫(kù)的SQL語(yǔ)句致命錯(cuò)誤"CASE -10msg = "已經(jīng)到達(dá)指定的最大錯(cuò)誤數(shù)"CASE -12msg = "不正確的表語(yǔ)法"CASE -13msg = "需要關(guān)鍵字、但未指定關(guān)鍵字"CASE -15msg = "數(shù)據(jù)管道已經(jīng)在運(yùn)行"CASE -16msg = "源數(shù)據(jù)庫(kù)出錯(cuò)"CASE -17msg = "目標(biāo)數(shù)據(jù)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論