PB課程設(shè)計(jì)—員工培訓(xùn)管理系統(tǒng)_第1頁(yè)
PB課程設(shè)計(jì)—員工培訓(xùn)管理系統(tǒng)_第2頁(yè)
PB課程設(shè)計(jì)—員工培訓(xùn)管理系統(tǒng)_第3頁(yè)
PB課程設(shè)計(jì)—員工培訓(xùn)管理系統(tǒng)_第4頁(yè)
PB課程設(shè)計(jì)—員工培訓(xùn)管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩16頁(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、課程名稱: PowerBuilder10.5程序設(shè)計(jì)基礎(chǔ) 設(shè)計(jì)題目: 學(xué)生選課管理系統(tǒng) 專 業(yè):信息與計(jì)算科學(xué) 班級(jí): 信122 姓 名: 郭倩 學(xué)號(hào):2012314203指導(dǎo)教師: 孫宏凱 河北建筑工程學(xué)院數(shù)理系 2015年 1月課程設(shè)計(jì)題目(問題)描述現(xiàn)代的社會(huì)是信息化的社會(huì),信息無(wú)所不在。在生產(chǎn)領(lǐng)域、流通領(lǐng)域、各個(gè)部門每天都和信息打交道,如何處理如此多的信息成為了一個(gè)重要的課題。學(xué)生在學(xué)期開始選課是教學(xué)活動(dòng)中的一個(gè)重要環(huán)節(jié),該環(huán)節(jié)如果能管理好,它不僅能加快學(xué)生的選課速度,也提高了整個(gè)教學(xué)活動(dòng)的效率。 大學(xué)一般都有上萬(wàn)名學(xué)生,每學(xué)期開始學(xué)生都要選課,因而產(chǎn)生了大量的課程信息。通過(guò)學(xué)習(xí)pow

2、erbuilder10.5程序設(shè)計(jì)基礎(chǔ),利用powerbuilder10.5軟件開發(fā)學(xué)生選課管理系統(tǒng)程序??紤]到用戶使用的方便和處理的信息量系統(tǒng)要完成錄入,保存,查詢,修改和刪除課程信息的各種過(guò)程,所以系統(tǒng)的基本體系結(jié)構(gòu)采用C/S模式。以便能夠使學(xué)生更好的完成選課,讓老師更好的完成管理。本 組 成 員 情 況姓 名學(xué)號(hào)承 擔(dān) 的 任 務(wù)成 績(jī)崔永翠2012314202登陸界面、密碼修改、窗口管理、查詢子窗口的創(chuàng)建、設(shè)計(jì)、屬性的設(shè)置,并編寫相應(yīng)的腳本、調(diào)試。郭倩2012314203數(shù)據(jù)庫(kù)的建立與連接,查詢子窗口,數(shù)據(jù)管理子系統(tǒng)的創(chuàng)建、設(shè)計(jì)、屬性的設(shè)置,并編寫相應(yīng)的腳本、調(diào)試教 師 評(píng) 語(yǔ)簽名:

3、一、本 組 設(shè) 計(jì) 的 功 能 描 述學(xué)生選課管理系統(tǒng)功能如下:教師功能:1)對(duì)學(xué)生成績(jī)的錄入2)對(duì)課程信息的管理:添加、刪除、刷新、查找以及數(shù)據(jù)的恢復(fù)和修改、另存為等等3)對(duì)學(xué)生信息的管理:添加、刪除、查找、刷新以及數(shù)據(jù)的恢復(fù)4)密碼的修改學(xué)生功能1)課程信息的查詢2)個(gè)人信息的查看3)個(gè)人成績(jī)的查詢4)選課退課的實(shí)現(xiàn)5)密碼的修改 二、本 組 設(shè) 計(jì) 的 主 要 特 色菜單是在窗口中與用戶直接接觸的一個(gè)重要對(duì)象,菜單必須依附于窗口,除了子窗口和響應(yīng)窗口外,其他類型的窗口都可以帶有菜單。窗口是應(yīng)用程序的圖形用戶界面的基本元素,其他的應(yīng)用程序組件往往是通過(guò)窗口聯(lián)系起來(lái)的,所以對(duì)于一個(gè)應(yīng)用程序來(lái)

4、說(shuō),創(chuàng)建窗口對(duì)象是極其基本的一步工作。繼承是面向?qū)ο缶幊痰囊粋€(gè)重要概念,它是自動(dòng)共享各個(gè)類、子類中的方法和數(shù)據(jù)的有效機(jī)制。作為過(guò)程式系統(tǒng)所沒有的一個(gè)有力機(jī)制,繼承使得我們可以通過(guò)從父類中繼承公共方法和數(shù)據(jù),進(jìn)而通過(guò)添加新的數(shù)據(jù)和方法定義一個(gè)新的類。在此程序設(shè)計(jì)中,設(shè)計(jì)了一些窗口和數(shù)據(jù)窗口,還有2個(gè)菜單對(duì)象。數(shù)據(jù)窗口的顯示風(fēng)格是Grid和freedom,數(shù)據(jù)源類型有Quick Select,SQL Select等。在生成數(shù)據(jù)窗口時(shí),還定義了String型檢索參數(shù)變量來(lái)分別表示其中的內(nèi)容,在數(shù)據(jù)窗口中還改變了一些控件的編輯風(fēng)格和屬性并在其中添加了圖片控件和文本控件。在設(shè)計(jì)窗口時(shí),用到了窗口直接創(chuàng)建

5、的方法,減少了與其他窗口的關(guān)聯(lián),創(chuàng)建窗口或者窗口有所改變后不會(huì)影響其他的窗口,各自保持相互獨(dú)立性。三、系 統(tǒng) 分 析 與 設(shè) 計(jì)3.1業(yè)務(wù)流程分析1)學(xué)生選課前要登錄系統(tǒng),查看所有課程的詳細(xì)信息,包括課程代號(hào)、授課教師、教室、上課時(shí)間、學(xué)分、剩余名額等。根據(jù)課程代號(hào),學(xué)生可以查詢相應(yīng)的課程,并添加課程(即選課)。并能發(fā)現(xiàn)是否存在沖突課程,如果存在,可以刪除該課程,并重新選擇。最后所有課程無(wú)沖突之后完成選課。學(xué)生選課的數(shù)據(jù)基本流程如圖所示老師首先也要登錄系統(tǒng),完成對(duì)已選課程信息的查詢,以及對(duì)學(xué)生成績(jī)的錄入,對(duì)學(xué)生個(gè)人信息情況的瀏覽等等操作,更好的完成學(xué)生選課后的工作。3.2各部分功能簡(jiǎn)要說(shuō)明1、

6、w_login登錄窗口1)“登錄”代碼:String xusername,xpassword,ls_username,ls_password,xl_js,xl_xsxusername=Trim(sle_1.Text)xpassword=Trim(sle_2.Text)xl_js="教師"xl_xs="學(xué)生"if sle_1.text="" or sle_2.text="" thenmessagebox("錯(cuò)誤!","用戶名或密碼不能為空!")elseif rb_1.check

7、ed = true then SELECT 用戶名,密碼 INTO :ls_username,:ls_password FROM 登錄表 WHERE (用戶名 = :xusername ) AND (密碼 = :xpassword ) AND (權(quán)限代號(hào) = :xl_js); if xusername=trim(ls_username) and xpassword=trim(ls_password) then messagebox("通過(guò)驗(yàn)證!","用戶名和密碼正確,歡迎您使用本系統(tǒng)!")open(w_login1) close(w_login) els

8、e messagebox("錯(cuò)誤!","用戶名或密碼錯(cuò)誤,請(qǐng)重新輸入!") end ifelseif rb_2.checked=true then SELECT 用戶名,密碼 INTO :ls_username,:ls_password FROM 登錄表 WHERE (用戶名 = :xusername ) AND (密碼 = :xpassword ) AND (權(quán)限代號(hào) = :xl_xs); if xusername=trim(ls_username) and xpassword=trim(ls_password) then messagebox(&qu

9、ot;通過(guò)驗(yàn)證!","用戶名和密碼正確,歡迎您使用本系統(tǒng)!") gs_xh = trim(ls_username) as_name=trim(ls_username) open(w_login2) close(w_login) else messagebox("錯(cuò)誤!","用戶名或密碼錯(cuò)誤,請(qǐng)重新輸入!") end if end if end if2)“退出”代碼:close(w_login)3)“幫助”代碼:open(w_bz)“幫助”即為登陸者答疑解惑,圖示如下:2主菜單(此系統(tǒng)分教師和學(xué)生登錄兩部分)不同的菜單界面如下

10、:教師菜單界面:學(xué)生菜單界面:3.老師菜單下的功能1)課程信息管理A.“添加”代碼:int g1g1=dw_1.InsertRow(0)dw_1.ScrollToRow(g1)B.“刪除”代碼:dw_1.DeleteRow(0)C.“保存修改”代碼:if messagebox("提示信息","是否保存修改?",Question!,YesNo!,1)=1 thendw_1.update()messagebox("提示信息","保存完成")else messagebox("提示信息","保

11、存失敗")end ifD.“另存為”代碼:dw_1.SaveAs()E.“刷新”代碼:dw_1.retrieve()F.“退出”代碼:close(jsckggxxkcxxb)G.“查詢”代碼:string ls_course_id,ls_course_name/變量定義ls_course_id=sle_course_id.textls_course_name=sle_course_name.textif sle_course_id.text="" and sle_course_name.text="" thenmessagebox("

12、提示信息","請(qǐng)輸入課程代碼或者課程名稱") elseif sle_course_id.text<>"" and sle_course_name.text="" thendw_1.setfilter("kcdh='"+ls_course_id+"' ")dw_1.filter()elseif sle_course_name.text<>"" and sle_course_id.text="" thendw_

13、1.setfilter("kcmc='"+ls_course_name+"' ")dw_1.filter()elseif sle_course_id.text<>"" and sle_course_name.text<>"" thendw_1.setfilter("kcmc='"+ls_course_name+"' and kcdh='"+ls_course_id+"' ")dw_1.

14、filter()end ifH.“顯示全部”代碼:dw_1.setfilter('')dw_1.filter()與之相連的數(shù)據(jù)窗口:2)學(xué)生信息管理A.“查找”代碼:string ls_stu_id,ls_stu_name/變量定義ls_stu_id=sle_8.textls_stu_name=sle_9.textif sle_8.text="" and sle_9.text="" thenmessagebox("提示信息","請(qǐng)輸入學(xué)號(hào)或者姓名") elseif sle_8.text<>

15、;"" and sle_9.text="" thendw_1.setfilter("xh='"+ls_stu_id+"' ")dw_1.filter()elseif sle_9.text<>"" and sle_8.text="" thendw_1.setfilter("xm='"+ls_stu_name+"' ")dw_1.filter()elseif sle_8.text<>&

16、quot;" and sle_9.text<>"" thendw_1.setfilter("xm='"+ls_stu_name+"' and xh='"+ls_stu_id+"' ")dw_1.filter()end ifB.“顯示全部”代碼:dw_1.setfilter('')dw_1.filter()C.“刷新數(shù)據(jù)”代碼:dw_1.retrieve()D.“添加”代碼:if(sle_1.text="" or sle_2.t

17、ext="" or sle_3.text="" or sle_4.text="" or sle_5.text="" or sle_6.text="" or sle_7.text="") thenmessagebox("提示信息","信息未填完整")else if messagebox("提示信息","是否添加此學(xué)生?",Question!,YesNo!,1)=1 theninsert into 學(xué)

18、生基本信息表(學(xué)生基本信息表.xh,學(xué)生基本信息表.xm,學(xué)生基本信息表.xb,學(xué)生基本信息表.bj,學(xué)生基本信息表.zy,學(xué)生基本信息表.zzmm,學(xué)生基本信息表.zw)values(:sle_1.text,:sle_2.text,:sle_3.text,:sle_4.text,:sle_5.text,:sle_6.text,:sle_7.text);commit;messagebox("提示信息","添加完成") else messagebox("提示信息","添加失敗") end ifend ifE.“刪除”

19、代碼:dw_1.DeleteRow(0)F.“修改”代碼:if messagebox("提示信息","是否保存修改?",Question!,YesNo!,1)=1 thendw_1.update()messagebox("提示信息","保存完成")else messagebox("提示信息","保存失敗")end ifG.“退出”代碼:close(w_xsxxgl)與之相連的數(shù)據(jù)窗口:3)成績(jī)錄入“保存”代碼:if messagebox("提示信息",&q

20、uot;是否保存錄入?",Question!,YesNo!,1)=1 thendw_1.update()messagebox("提示信息","保存完成")else messagebox("提示信息","保存失敗")end if“退出”代碼:close(w_cjlr)與之相連的數(shù)據(jù)窗口:4)修改密碼:“確認(rèn)”代碼:string ll_password,ll_passwordold,ll_username,ll_usernameoldll_password=trim(sle_1.text)Select 密碼i

21、nto :ll_passwordoldFrom 登錄表where 密碼=:ll_password;if trim(sle_1.text)<>trim(ll_passwordold)thenmessagebox("提示","原密碼錯(cuò)誤")else if trim(sle_2.text)=(sle_3.text) then ll_password=trim(sle_2.text) UPDATE 登錄表 SET 密碼 = :ll_password WHERE (密碼 = :ll_passwordold); if sqlca.sqlcode<&

22、gt;0 then messagebox("提示","密碼修改不成功")elseclose(parent)messagebox("提示","密碼修改完成")end ifelse messagebox("提示","兩次密碼不相同")end if end if4.學(xué)生菜單下的功能1)課程查詢A.“查找”代碼:string ss=sle_1.textchoose case ddlb_1.textcase "課程代號(hào)"dw_1.setfilter("kc

23、dh='"+sle_1.text+"'")dw_1.filter()case "課程名稱"dw_1.setfilter("kcmc='"+sle_1.text+"'")end choosedw_1.retrieve()B.選課按鈕即連接選課功能的窗口,使之能較快的跳轉(zhuǎn)至“選課”界面。代碼為:open(w_xsxk)C.“確定”代碼:close(w_xsckkcxx)與之相連的數(shù)據(jù)窗口:2)查看個(gè)人信息“確定”代碼:close(w_xsgrxx)與之相連的數(shù)據(jù)窗口:3)查詢成

24、績(jī)“確定”代碼:close(w_cjck)與之相連的數(shù)據(jù)窗口:4)選課退課A.查找或預(yù)覽要選擇的課程,相應(yīng)代碼:string as_dhas_dh=trim(ddlb_1.text)if as_dh="" then messagebox("提示","請(qǐng)輸入正確的查詢條件!")elsedw_1.retrieve(as_dh)end ifB.其次進(jìn)入選課階段,代碼:int li_sqlca=0int rntstring user_name,cour_no,student_no,cour_name,cour_sel_leastnornt=m

25、essagebox("注意!","你是否確定選擇該課程?",Information!,YesNo! )if rnt = 1 and ddlb_1.text<> "" then /根據(jù)登錄的用戶名,檢索出用戶的學(xué)號(hào) SELECT 登錄表.學(xué)號(hào) INTO :student_no FROM 登錄表 WHERE ( 登錄表.用戶名 = :as_name ); li_sqlca=li_sqlca+sqlca.sqlcode;/查詢選課信息表,看是否此學(xué)生已經(jīng)選擇這門課程 SELECT 選課信息表.kcdh INTO :cour_no

26、 FROM 選課信息表 WHERE ( 選課信息表.xh = :student_no) AND ( 選課信息表.kcdh= :ddlb_1.text ) ; /li_sqlca=li_sqlca+sqlca.sqlcode; SELECT 公共選修課程信息表.syme INTO :cour_sel_leastno FROM 公共選修課程信息表, 選課信息表 WHERE ( 公共選修課程信息表.kcdh = 選課信息表.kcdh ) and ( ( 公共選修課程信息表.kcdh = :ddlb_1.text ) ) ;li_sqlca=li_sqlca+sqlca.sqlcode; if cou

27、r_no<>"" thenmessagebox("提示","你已經(jīng)選擇過(guò)此門課程") elseif cour_sel_leastno ="0" then messagebox("提示","該課程的剩余名額為0,請(qǐng)選擇其他課程!")else /插入用戶選擇課程到stu_select表 INSERT INTO 選課信息表2 ( xh, xm, kcdh ) VALUES ( :student_no, :as_name , :ddlb_1.text); / messag

28、ebox("提示","恭喜你,添加課程成功!"); li_sqlca=li_sqlca+sqlca.sqlcode; /學(xué)生選定該課程后,在該課程的剩余名額中減少一人 int li_number li_number=integer(cour_sel_leastno) - 1 UPDATE 公共選修課程信息表 SET syme = :li_numberwhere 公共選修課程信息表.kcdh=:ddlb_1.text;li_sqlca=li_sqlca+sqlca.sqlcode; if li_sqlca=0 thencommit;messagebox(&

29、quot;提示","恭喜你,添加課程成功!");elserollback;messagebox("提示","很遺憾,添加課程失??!");end ifend ifelseif ddlb_1.text= "" then messagebox("提示","你還沒有選課!")end ifC.選擇完課程后可以瀏覽自己的選課情況,相應(yīng)代碼如下:open(dw_tuike)close(w_xsxk2)D.瀏覽完畢此頁(yè),即點(diǎn)擊確定退出,相應(yīng)代碼:close(w_xsxk2)與選課相

30、連的數(shù)據(jù)窗口:在瀏覽自己選課情況時(shí)如有需要也可以完成退課E.“退課”代碼:int ll_sqlca=0string ls_kcdh,cour_sel_leastno select kcdhinto :ls_kcdhfrom 選課信息表2where xm=:as_name;ll_sqlca=ll_sqlca+sqlca.sqlcode SELECT 公共選修課程信息表.syme INTO :cour_sel_leastno FROM 公共選修課程信息表 WHERE kcdh=:ls_kcdh;ll_sqlca=ll_sqlca+sqlca.sqlcodeint li_renshuli_rensh

31、u=integer(cour_sel_leastno )+1 update 公共選修課程信息表 set syme=:li_renshuwhere kcdh=:ls_kcdh;ll_sqlca=ll_sqlca+sqlca.sqlcodedelete from 選課信息表2where xm=:as_name;ll_sqlca=ll_sqlca+sqlca.sqlcodeif ll_sqlca=0 then commit;messagebox("提示","恭喜你,退課成功!")dw_1.settransobject(sqlca)dw_1.retrieve()

32、dw_1.setfilter("xm='"+as_name+"'")dw_1.filter()elserollback;messagebox("提示","不好意思,退課失??!")end if與之相連的數(shù)據(jù)窗口:5)密碼修改學(xué)生修改密碼同老師相同,相應(yīng)密碼同上四、系 統(tǒng) 調(diào) 試 出 現(xiàn) 的 問 題 及 解 決 情 況1.學(xué)生按照各自的用戶名登陸之后查詢自己成績(jī)或者個(gè)人信息無(wú)法顯示,始終顯示表中第一個(gè)人的信息。如下圖(用戶名為“崔永翠”,顯示的卻為表中第一個(gè)人的信息)解決方法:詢問老師得知在登錄時(shí)沒有根據(jù)用戶名檢索到相關(guān)的個(gè)人身份信息,通過(guò)在數(shù)據(jù)窗口中做相應(yīng)的操作以及定義全局變量之后問題得以解決,可以根據(jù)登陸者的用戶名查詢到相關(guān)信息。改正后:2.選課按鈕下的代碼正確,但是學(xué)生選課后的數(shù)據(jù)無(wú)法更新到相應(yīng)的表中。(在程序運(yùn)行中以及顯示“選課成功”,但是表中未更新。如下圖)解決方法:通過(guò)咨詢以及請(qǐng)教同學(xué),得知代碼中存在缺陷,確實(shí)相應(yīng)更新的內(nèi)容,補(bǔ)充相應(yīng)的代碼后功能得以實(shí)現(xiàn)。改正后:3開始在登錄時(shí)無(wú)論老師還是學(xué)生選擇任意一個(gè)身份按鈕后都可以進(jìn)入系統(tǒng)。如下圖(“崔永翠”為學(xué)生身份,點(diǎn)擊教師

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論