版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、重慶航天職業(yè)技術(shù)學(xué)院課程設(shè)計(jì)說明書課程名稱 數(shù)據(jù)庫技術(shù)課程設(shè)計(jì)(pb) 題 目 學(xué)生成績管理系統(tǒng) 院 系 班 級(jí) 09級(jí)計(jì)算機(jī)網(wǎng)絡(luò) 學(xué)生姓名 指導(dǎo)教師 日 期 2010年1月6號(hào) 課程設(shè)計(jì)任務(wù)書課程設(shè)計(jì)名稱: 數(shù)據(jù)庫技術(shù)課程設(shè)計(jì)(pb) 學(xué)生姓名: 專業(yè)班級(jí): 計(jì)算機(jī)網(wǎng)絡(luò) 設(shè)計(jì)題目: 學(xué)生成績管理系統(tǒng) 一、 課程設(shè)計(jì)目的該課程設(shè)計(jì)是學(xué)習(xí)完pb程序設(shè)計(jì)課程后進(jìn)行的一次集中實(shí)踐環(huán)節(jié)的綜合練習(xí)。其目的是通過本課程設(shè)計(jì)使學(xué)生對(duì)具體問題應(yīng)用pb程序設(shè)計(jì)課程中所學(xué)的方法與技術(shù),進(jìn)行需求分析及軟件設(shè)計(jì)的過程,完成一個(gè)數(shù)據(jù)庫應(yīng)用系統(tǒng)的設(shè)計(jì)全過程,不僅對(duì)pb程序設(shè)計(jì)課程中的所有知識(shí)點(diǎn)進(jìn)行一個(gè)全面的復(fù)習(xí)鞏固,更重
2、要的是增強(qiáng)學(xué)生解決實(shí)際問題的能力。二、 時(shí)間和學(xué)分 (1)時(shí)間:2010-2011學(xué)年第一學(xué)期1周;(2)學(xué)分:20學(xué)時(shí),1個(gè)學(xué)分。三、 設(shè)計(jì)的地點(diǎn)及進(jìn)行方式 (1)地點(diǎn):學(xué)院實(shí)訓(xùn)室01506;(2)方式:分散實(shí)訓(xùn),上機(jī)調(diào)試和測試程序及書寫課程設(shè)計(jì)說明書相結(jié)合的方式。四、 設(shè)計(jì)內(nèi)容、技術(shù)條件和要求(1)本環(huán)節(jié)要求學(xué)生根據(jù)pb程序設(shè)計(jì)整個(gè)課程的所學(xué)內(nèi)容,自己獨(dú)立設(shè)計(jì)完成一個(gè)比較復(fù)雜的小型管理系統(tǒng)。(2)所設(shè)計(jì)的小型管理系統(tǒng)要求功能比較完善,應(yīng)包含輸入輸出、查詢、插入、刪除、打印等基本功能。(3)程序內(nèi)容自己靈活設(shè)計(jì),包括規(guī)劃自己的數(shù)據(jù)庫、設(shè)計(jì)程序功能及界面設(shè)計(jì)。(4)數(shù)據(jù)庫中不能少于兩個(gè)表。(5
3、)程序應(yīng)功能完善,界面友好,容錯(cuò)性好,操作方便。五、 說明書內(nèi)容格式要求 從上到下各組成結(jié)構(gòu):(1)封面及任務(wù)書(見樣張);(2)成績?cè)u(píng)閱頁;(3)目錄;(4)第1章 概述;第2章 系統(tǒng)分析;第3章 功能分析;第4章 系統(tǒng)實(shí)現(xiàn);第6章 結(jié)束語;第7章 參考文獻(xiàn)。紙張大小為b5紙。正文為5號(hào)宋體。一級(jí)標(biāo)題:第1章( 標(biāo)題,2號(hào)宋體,上下空兩行居中,行距為5號(hào)宋體單倍行距)。二級(jí)標(biāo)題:1.1第1章 第1節(jié) (標(biāo)題,3號(hào)黑體居中,上下空一行,行距為5號(hào)宋體單倍行距)。三級(jí)標(biāo)題:1.1.1 第1章 第1節(jié) 第1個(gè)問題(標(biāo)題,4黑左頂,占2行)。六、 完成時(shí)間及要求(1)第18周星期五交到課代表處;(2
4、)字?jǐn)?shù)不少于8000字;(3)嚴(yán)禁抄襲,否則按不及格處理。指導(dǎo)教師:二一年十二月三十日目錄第一章:概述.5第二章:系統(tǒng)分析.6第三章:功能分析.7第四章:系統(tǒng)實(shí)現(xiàn)7第五章:結(jié)束語34第七章:參考文獻(xiàn)35第一章 概述powerbuilder美國sybase公司研制的一種新型、快速開發(fā)工具,是客戶機(jī)/服務(wù)器結(jié)構(gòu)下,基于windows3.x、windows95和windowsnt的一個(gè)集成化開發(fā)工具。它包含一個(gè)直觀的圖形界面和可擴(kuò)展的象面向?qū)ο蟮木幊陶Z言powerscript,提供與當(dāng)前流行的大型數(shù)據(jù)庫的接口,并通過odbc與庫單機(jī)數(shù)據(jù)庫相連。在開始學(xué)習(xí)powerbuilder 之前,首先要弄清楚的
5、問題是什么是powerbuilder,它是用來干什么的,它的特點(diǎn)又是什么。只有知道了powerbuilder的功能和特點(diǎn)所在,我們才能知道什么時(shí)候應(yīng)該選用powerbuilder作為我們的應(yīng)用程序開發(fā)工具。 它支持應(yīng)用系統(tǒng)同時(shí)訪問多種數(shù)據(jù)庫,其中既包括oracel,sybase之類的大型數(shù)據(jù)庫,又包括foxpro之類支持odbc接口的小型數(shù)據(jù)庫,powerbuilder是完全可視化的數(shù)據(jù)庫開發(fā)工具,它提供了大量的控件,大大加快了項(xiàng)目的開發(fā)速度,也使開發(fā)者更容易掌握數(shù)據(jù)庫的開發(fā)。 它使用的編程語言叫做工powerscripr,它也是一種高級(jí)的,結(jié)構(gòu)化的編程語言。powerscript提供了一套完
6、整的嵌入式sql語句,開發(fā)人員可以像使用其它語句一樣自由地使用sql語言,這樣就大大增強(qiáng)了程序操縱和訪問數(shù)據(jù)庫的能力??梢哉fpowerbuilder既適合初學(xué)者快速學(xué)習(xí)數(shù)據(jù)庫的開發(fā),又可以讓有經(jīng)驗(yàn)的開發(fā)人員開發(fā)出功能強(qiáng)大的數(shù)據(jù)庫,是一種適用面非常廣的開發(fā)工具。 powerbuilder是一個(gè)用來進(jìn)行客戶/服務(wù)器開發(fā)的完全的可視化開發(fā)環(huán)境。使用powerbuilder,你可以用一種可視的直觀的方式來創(chuàng)建應(yīng)用程序的用戶界面和數(shù)據(jù)庫接口。這是一個(gè)總的概念,實(shí)際上是開發(fā)人員使用powerbuilder去開發(fā)應(yīng)用程序,由于所開發(fā)的各種應(yīng)用程序充分利用了圖形用戶接口(gui)的優(yōu)點(diǎn),所以powerbuil
7、der被認(rèn)為是一個(gè)圖形工具。 在客戶服務(wù)器結(jié)構(gòu)的應(yīng)用中,powerbuilder具有描述多個(gè)數(shù)據(jù)庫連接與檢索的能力。特別是powerbuilder能從大多數(shù)流行的rdbms中存取數(shù)據(jù),且不管數(shù)據(jù)存放在什么地方;另外,各種應(yīng)用程序又可以獨(dú)立于rdbms,因?yàn)閜owerbuilder可以使用數(shù)據(jù)庫的標(biāo)準(zhǔn)操作語言sql(結(jié)構(gòu)化查詢語言)進(jìn)行。 使用powerbuilder,可以很容易地開發(fā)出功能強(qiáng)大的圖形界面的訪問服務(wù)器數(shù)據(jù)庫的應(yīng)用程序,powerbuilder提供了建立符合工業(yè)標(biāo)準(zhǔn)的應(yīng)用程序(例如訂單登記、會(huì)計(jì)及制造系統(tǒng))所需的所有工具。 powerbuilder應(yīng)用程序由窗口組成,這些窗口包含用
8、戶與之交互的控件。開發(fā)人員可以使用所有標(biāo)準(zhǔn)空間(如按鈕、復(fù)選框、下拉式列表框或編輯框)以及powerbuilder提供的特殊的使應(yīng)用程序更易于開發(fā)和使用的控件。 通常人們把powerbuilder看成是一種開發(fā)工具,實(shí)際上它比其他工具強(qiáng)得多,是一種強(qiáng)有力的開發(fā)環(huán)境。開發(fā)人員不僅能用它來開發(fā)用戶容易使用的各種應(yīng)用程序還可以通過powerbuilder修改數(shù)據(jù)庫,利用400多個(gè)內(nèi)部定義函數(shù),可以開發(fā)能和其他應(yīng)用程序進(jìn)行的各種應(yīng)用程序。 powerbuilder正在成為客戶服務(wù)器應(yīng)用開發(fā)的標(biāo)準(zhǔn)。相對(duì)于其他任何客戶服務(wù)器開發(fā)環(huán)境,powerbuilder使開發(fā)人員的工作更快、成本更低、質(zhì)量更高、功能更
9、強(qiáng)。 powerbuilder為應(yīng)用開發(fā)提供了全面綜合性的支持,可以分別概括為如下幾點(diǎn): 事件驅(qū)動(dòng)的應(yīng)用程序 功能強(qiáng)大的編程語言與函數(shù) 面向?qū)ο蟮木幊?跨平臺(tái)開發(fā) 開放的數(shù)據(jù)庫連結(jié)系統(tǒng) 第二章 系統(tǒng)分析1)系統(tǒng)分析系統(tǒng)分析階段的任務(wù)就是確定該系統(tǒng)所要解決的問題及其具體要求。學(xué)生成績管理系統(tǒng)需要完成的主要功能如下:(1) 班級(jí)信息的輸入和存儲(chǔ),包括班級(jí)編號(hào)、班級(jí)名稱、所屬專業(yè)、入學(xué)時(shí)間和學(xué)制等。(2) 對(duì)已經(jīng)輸入的班級(jí)信息的修改、查詢。(3) 學(xué)生基本信息的輸入和存儲(chǔ)、包括學(xué)號(hào)、姓名、性別、出生日期、班級(jí)等。(4) 學(xué)生基本信息的修改和查詢。(5) 每學(xué)期初各班所開設(shè)課程的輸入,包括課程名、學(xué)期
10、、學(xué)時(shí)等。(6) 各班所開設(shè)課程信息的修改和查詢。(7) 學(xué)期末輸入每個(gè)學(xué)生的考試成績。(8) 學(xué)生成績的修改。(9) 查詢某個(gè)學(xué)生。(10) 查詢并打印某班某學(xué)期所有學(xué)生的各科成績。(11) 查詢并打印某班某學(xué)期某課成績。(12) 系統(tǒng)具有用戶和密碼的管理。第三章 功能分析通過上面各項(xiàng)功能的分析、分類、綜合,按照模塊化程序設(shè)計(jì)的要求,得到它的模塊結(jié)構(gòu):(1)系統(tǒng)管理 它包括密碼修改,用戶管理,登錄控制。(2)班級(jí)信息管理 它包括班級(jí)信息修改,班級(jí)信息查詢,班級(jí)信息輸入。(2)學(xué)生基本信息管理 包括學(xué)生基本信息查詢,學(xué)生基本信息修改,學(xué)生基本信息輸入。(3)課程信息管理 包括課程信息查詢修改,
11、課程信息輸入。(4)成績信息管理 包括成績查詢,成績修改,成績輸入第四章 系統(tǒng)實(shí)現(xiàn)4.1第4章 第1節(jié) 創(chuàng)建數(shù)據(jù)庫在powerbuilder開發(fā)環(huán)境中打開數(shù)據(jù)庫畫板,使用odb odbc接口建立adaptive server anywhere 8.0(asa 8.0)的數(shù)據(jù)庫,然后建立5個(gè)表和1個(gè)視圖。分別為“班級(jí)”表、“學(xué)生基本信息”表、“課程”表、“成績”表、“用戶”表。各表之間的關(guān)系如下圖1所示:圖1 各表的關(guān)聯(lián)關(guān)系4.2第4章 第1節(jié) 創(chuàng)建應(yīng)用對(duì)象(1) 創(chuàng)建新的工作空間。(2) 創(chuàng)建應(yīng)用對(duì)象,應(yīng)用對(duì)象名設(shè)為“ylq”。(3) 打開新的對(duì)象畫板.為應(yīng)用對(duì)象ylq的open事件編寫代碼如
12、下:/ profile studentsqlca.dbms = odbcsqlca.autocommit = falsesqlca.dbparm = connectstring=dsn=studentconnect;if sqlca.sqlcode0 thenmessagebox(提示,數(shù)據(jù)庫連接失??!)elseopen(w_denglu)elseopen(w_login)end if執(zhí)行此應(yīng)用時(shí),首先鏈接數(shù)據(jù)庫“ylq”,成功后打開登錄窗口。4.3第4章 第3節(jié)設(shè)計(jì)系統(tǒng)管理模塊1)設(shè)計(jì)登錄窗口登錄窗口如圖2所示:圖2 登錄窗口為登錄窗口編寫腳本。(1)定義全局變量string gs_user
13、name,gs_password,gs_admin 分別存儲(chǔ)登錄用戶的姓名、密碼和權(quán)限。(2)定義實(shí)例變量 int li_n 存儲(chǔ)登錄時(shí)用戶輸入密碼錯(cuò)誤的嘗試次數(shù),控制在最多3次機(jī)會(huì)。(3)登錄窗口w_denglu的open事件腳本如下 li_n=3 初始化變量li_n,限制出錯(cuò)次數(shù)為3次。(4)確定按鈕cb_1的clicked事件腳本如下。string ls_username,ls_passwordls_username=trim(sle_1.text)ls_password=trim(sle_2.text)if ls_username= or ls_password= thenmessag
14、ebox(提示,用戶名和密碼不能為空)elseselect ,users.password,users.admininto :gs_username,:gs_password,:gs_adminfrom userswhere ( = :ls_username ) and (users.password = :ls_password ); if sqlca.sqlcode=0 then open(w_main) close(w_denglu) else li_n=li_n - 1 if li_n0 then messagebox(提示,用戶名或密碼錯(cuò)誤)
15、else messagebox(提示,錯(cuò)誤超過3次,自動(dòng)退出) halt end if end ifend if(5)放棄按鈕cb_2的clicked事件腳本如下.halt 2) 設(shè)計(jì)密碼修改窗口創(chuàng)建窗口并設(shè)置屬性創(chuàng)建密碼修改窗口w_xgmm,調(diào)整其大小,在窗口上放置3個(gè)靜態(tài)文本控件(st_1,st_2,st_3)、2個(gè)命令按鈕控件(cb_1,cb_2),設(shè)計(jì)完后如圖3所示:圖3 密碼修改窗口為密碼窗口編寫腳本(1)確定按鈕cb_1的clicked事件腳本如下。 string ls_passwordif trim(sle_1.text)gs_password thenmessagebox(提示
16、,舊密碼錯(cuò)誤)elseif trim(sle_2.text)=(sle_3.text) thenls_password=trim(sle_2.text)update users set password = :ls_password where ( = :gs_username ) and (users.password = :ls_password); if sqlca.sqlcode0 then messagebox(提示,密碼修改不成功)elseclose(parent)messagebox(提示,密碼修改完成)end ifelsemessagebox(提示,兩次密碼
17、不相同)end if end if(2)取消按鈕cb_2的clicked事件腳本如下。 close(parent)4.4第4章 第4節(jié)設(shè)計(jì)用戶管理的數(shù)據(jù)窗口和窗口1)設(shè)計(jì)數(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個(gè)數(shù)據(jù)窗口控件(dw_1)、4個(gè)命令
18、按鈕控件( cb_1、cb_2、cb_3、cb_4),設(shè)計(jì)完后的窗口如圖5所示:圖5 用戶管理窗口為窗口編寫腳本(1)用戶管理窗口w_yhgl的open事件腳本如下。dw_1.settransobject( sqlca )dw_1.retrieve()(2)用戶管理窗口w_yhgl的closequery事件腳本如下。integer rtdw_1.accepttext()if dw_1.modifiedcount() =0 and dw_1.deletedcount()=0 thenreturn 0elsert=messagebox(提示,添加修改內(nèi)容未保存,確實(shí)退出嗎?,question!,y
19、esno!)if rt=1 then return 0end ifend ifreturn 1(3)數(shù)據(jù)窗口控件dw_1的itemechanged事件腳本如下。cb_3.enabled=true /激活“保存”按鈕(4)添加按鈕控件cb_1的clicked事件腳本如下。integer rowrow=dw_1.insertrow(0)dw_1.scrolltorow(row)(5)刪除按鈕控件cb_2的clicked事件腳本如下。dw_1.deleterow(0)cb_3.enabled=true(6)保存按鈕控件cb_3的clicked事件腳本如下。if dw_1.update(true,fa
20、lse)=1 thendw_1.resetupdate()commit;cb_3.enabled=falseelserollback;messagebox(提示,保存數(shù)據(jù)失敗!)end if(7)退出按鈕控件cb_4的clicked事件腳本如下。close(parent)4.5第4章 第5節(jié)設(shè)計(jì)主窗口和菜單1)創(chuàng)建菜單對(duì)象菜單結(jié)構(gòu)如圖6所示。菜單對(duì)象名為“m_main”,菜單欄中的菜單項(xiàng)設(shè)置了訪問鍵(accesskey),常用的菜單項(xiàng)設(shè)置了快捷鍵(如退出系統(tǒng)的快捷鍵為alt+f4,最常用的菜單項(xiàng)在工具條上建立了按鈕。)下面編寫各個(gè)菜單項(xiàng)的腳本。對(duì)于這些代碼,在對(duì)應(yīng)的窗口沒有建立之前先注釋掉,在
21、建立之后再去掉注釋。(1)系統(tǒng)菜單下密碼修改菜單的clicked事件腳本如下。open(w_mmxg)(2)系統(tǒng)菜單下用戶管理菜單的clicked事件腳本如下。open(w_yhgl)(3)系統(tǒng)菜單下退出系統(tǒng)菜單的clicked事件腳本如下。close(parentwidow)(4)班級(jí)管理菜單下錄入班級(jí)信息 菜單的clicked事件腳本如下。opensheet(w_banji_shuru,w_main,6,original!)5)班級(jí)管理菜單下修改班級(jí)信息菜單的clicked事件腳本如下。opensheet(w_banji_xiugai,w_main,6,original!)(6)班級(jí)管理菜
22、單下瀏覽班級(jí)信息菜單的clicked事件腳本如下。opensheet(w_banji_liulan,w_main,6,original!)(7)學(xué)生管理菜單下錄入學(xué)生信息菜單的clicked事件腳本如下。opensheet(w_jiben_shuru,w_main,6,original!)(8)學(xué)生管理菜單下修改學(xué)生信息菜單的clicked事件腳本如下。opensheet(w_jiben_xiugai,w_main,6,original!)(9)學(xué)生管理菜單下查詢學(xué)生信息菜單的clicked事件腳本如下。opensheet(w_jiben_chaxun,w_main,6,original!)(
23、10)課程管理菜單下錄入修改開設(shè)課程菜單的clicked事件腳本如下。opensheet(w_bjkc_shurnxiugai,w_main,6,original!)(11)課程管理菜單下查詢開設(shè)課程菜單的clicked事件腳本如下。opensheet(w_bjkc_chaxun,w_main,6,original!)(12)成績管理菜單下錄入修改成績菜單的clicked事件腳本如下。opensheet(w_xscj_shuru,w_main,6,original!) (13)成績管理菜單下查詢個(gè)人成績菜單的clicked事件腳本如下。opensheet(w_xscj_chaxun,w_mai
24、n,6,original!)(14)成績管理菜單下查詢班級(jí)成績菜單的clicked事件腳本如下。opensheet(w_xscj_bjcx,w_main,6,original!)(15)成績管理菜單下查詢課程成績菜單的clicked事件腳本如下。opensheet(w_xscj_kccx,w_main,6,original!)(16)窗口菜單下層疊窗口菜單的clicked事件腳本如下。w_main.arrangesheets (cascade!)(17)幫助菜單下關(guān)于菜單的clicked事件腳本如下。 open(w_about) 圖6 菜單結(jié)構(gòu)(18)幫助菜單下聯(lián)機(jī)幫助菜單的clicked事件
25、腳本如下。showhelp(d:xscjhelpxscjhelp.chm,index!)4.6第4章 第6節(jié)設(shè)計(jì)班級(jí)管理模塊1) 設(shè)計(jì)訪問班級(jí)信息的數(shù)據(jù)窗口設(shè)計(jì)輸入班級(jí)信息的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_banji_shuru,顯示風(fēng)格為“freeform”,數(shù)據(jù)源類型為“quick select”,其布局如圖8所示。圖8 數(shù)據(jù)窗口d_banji_shuru數(shù)據(jù)窗口d_banji_shuru生成的sql select語句為:select banji.bjbh, banji.bjmc, banji.zymc, banji.xz, banji.rxsj, banji.rs from banji 設(shè)計(jì)修改
26、班級(jí)信息的數(shù)據(jù)信息創(chuàng)建數(shù)據(jù)窗口d_banji_xiugai,顯示風(fēng)格為“grid”,數(shù)據(jù)源類型為“quick select”,其布局如圖9所示圖9 數(shù)據(jù)窗口d_banji_xiugai數(shù)據(jù)窗口d_banji_xiugai生成的sql select語句為:select banji.bjbh, banji.bjmc, banji.zymc, banji.xz, banji.rxsj, banji.rs from banji order by banji.bjbh asc 2)設(shè)計(jì)訪問班級(jí)信息的窗口設(shè)計(jì)輸入窗口創(chuàng)建窗口對(duì)象w_shuru,調(diào)整其大小,放置1個(gè)數(shù)據(jù)窗口控件(dw_1)、8個(gè)命令按鈕控件
27、(cb_1cb_8),窗口布局如圖10所示。圖10 輸入窗口設(shè)置完屬性后開始編寫腳本代碼,其中窗口w_shuru的open事件、命令按鈕(添加、刪除、保存、退出)的clicked事件同窗口w_yhgl的相應(yīng)事件腳本。其他命令按鈕的事件腳本如下:(1)|按鈕的clicked事件腳本如下。dw_1.scrolltorow(1)(2)按鈕的clicked事件腳本如下。dw_1.scrollnextrow()(4)|按鈕的clicked事件腳本如下。設(shè)計(jì)修改窗口創(chuàng)建窗口對(duì)象w_xiugai,調(diào)整其大小,放置1個(gè)數(shù)據(jù)窗口控件(dw_1)、4個(gè)命令按鈕控件(cb_1cb_4),窗口布局如圖11所示:圖11
28、 修改窗口窗口和控件的事件腳本與以上輸入窗口的對(duì)應(yīng)部分相同。設(shè)計(jì)輸入班級(jí)信息窗口通過繼承輸入窗口w_shuru生成輸入班級(jí)信息窗口w_banji_shuru,將數(shù)據(jù)控件dw_1的dataobject屬性設(shè)置為d_banji_shuru,將窗口的tile屬性改為“錄入班級(jí)信息”,此窗口設(shè)計(jì)便完成了。如圖12所示:圖12 錄入班信息級(jí)窗口設(shè)計(jì)修改班級(jí)信息窗口通過繼承輸入窗口w_xiugai生成輸入班級(jí)信息窗口w_banji_xiugai,將數(shù)據(jù)控件dw_1的dataobject屬性設(shè)置為d_banji_xiugai,將窗口的tile屬性改為“修改班級(jí)信息”,此窗口設(shè)計(jì)便完成了。如圖13所示:圖13
29、 修改班級(jí)信息窗口設(shè)計(jì)瀏覽班級(jí)信息窗口創(chuàng)建窗口對(duì)象w_banji_liulan,調(diào)整其大小,放置一個(gè)數(shù)據(jù)窗口控件dw_1,調(diào)整窗口布局如圖14所示。圖14 瀏覽班級(jí)信息窗口窗口的open事件腳本如為:dw_1.settransobject(sqlca)dw_1.retrieve()4.7第4章 第7節(jié)設(shè)計(jì)學(xué)生基本信息管理模塊1)設(shè)計(jì)訪問學(xué)生基本信息的數(shù)據(jù)窗口設(shè)計(jì)輸入學(xué)生基本信息的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_jiben_shuru,顯示風(fēng)格為“freeform”,數(shù)據(jù)源類型為“quick select”,其布局如圖15所示:圖15 數(shù)據(jù)窗口d_jiben_shuru數(shù)據(jù)窗口的d_jiben_shur
30、u生成的sql select語句為: select jiben.xh, jiben.xm, jiben.xb, jiben.csrq, jiben.jtzz, jiben.bjbh from jiben 設(shè)計(jì)修改學(xué)生基本信息的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_jiben_xiugai,顯示風(fēng)格為“grid”,數(shù)據(jù)源類型為“quick select”,其布局如圖16所示:圖16 數(shù)據(jù)窗口d_jiben_xiugai數(shù)據(jù)窗口d_jiben_xiugai生成的sql seleect語句為: select jiben.xh, jiben.xm, jiben.xb, jiben.csrq, jiben.jtzz,
31、 jiben.bjbh from jiben order by jiben.xh asc 設(shè)計(jì)查詢學(xué)生基本信息的數(shù)據(jù)窗口 創(chuàng)建數(shù)據(jù)窗口d_jiben_chaxun,顯示風(fēng)格為“grid”,數(shù)據(jù)源類型為“sqlselect”,其布局如圖17所示:圖17 數(shù)據(jù)窗口d_jiben_chaxun其中,定義3個(gè)string型的檢索參數(shù)變量mxh、mxm、mbj,分別表示學(xué)號(hào)、姓名、班級(jí),形成帶檢索參數(shù)的數(shù)據(jù)窗口。2)設(shè)計(jì)訪問學(xué)生基本信息的窗口設(shè)計(jì)輸入學(xué)生基本信息的窗口 通過繼承窗口輸入窗口w_shuru生成輸入學(xué)生基本信息窗口w_jiben_shuru,將數(shù)據(jù)控件dw_1的dataobject屬性設(shè)置為
32、 d_jiben_shuru,將窗口的title屬性改為“錄入學(xué)生基本信息”,如圖18。圖18 錄入學(xué)生基本信息窗口2設(shè)計(jì)輸入學(xué)生基本信息的窗口通過繼承窗口輸入窗口w_xiugai生成修改學(xué)生基本信息窗口w_jiben_xiugai, 將數(shù)據(jù)控件dw_1的dataobject屬性設(shè)置為 d_jiben_xiugai,將窗口的title屬性改為“修改學(xué)生基本信息”,如圖19: 3設(shè)計(jì)查詢學(xué)生基本信息的窗口 要求此窗口中能夠根據(jù)學(xué)生的姓名或?qū)W號(hào)查詢出學(xué)生的基本信息,能夠根據(jù)班級(jí)名稱查詢出該班所有學(xué)生的基本信息。窗口如圖20所示:圖19 修改學(xué)生基本信息窗口圖20 查詢學(xué)生基本信息窗口查詢按鈕的op
33、en事件腳本如下。dw_1.settransobject(sqlca)if ddplb_1.text= or sle_1.text= thenmessagebox(提示,查詢列和查詢內(nèi)容不能為空!)returnend if string strstr=trim(sle_1.text)choose case ddplb_1.textcase 學(xué)號(hào)dw_1.retrieve(str,%,%)case 姓名dw_1.retrieve(%,str,%)case 班級(jí)名稱dw_1.retrieve(%,%,str)end choose代碼中根據(jù)查詢依據(jù)的不同,以不同參數(shù)方式檢索。4.8第4章 第8節(jié)設(shè)計(jì)
34、課程管理模塊1)設(shè)計(jì)訪問課程信息的數(shù)據(jù)窗口設(shè)計(jì)輸入班級(jí)課程信息的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_bjkc_shuru,顯示風(fēng)格為“grid”,數(shù)據(jù)源類型為“quick select”,其布局如圖21所示:圖20 數(shù)據(jù)窗口d_bjkc_shuru數(shù)據(jù)窗口d_bjkc_shuru生成的sql seleect語句為: select bjkc.bjbh, bjkc.xq, bjkc.kcmc, bjkc.xs, bjkc.jsxm from bjkc .設(shè)計(jì)查詢班級(jí)課程信息的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_bjkc_chaxun,顯示風(fēng)格為“grid”,數(shù)據(jù)源類型為“quick select”,其布局如圖21所示。圖
35、21 數(shù)據(jù)窗口d_bjkc_chaxunn其中,定義2個(gè) string型檢索參數(shù)變量mxq、mbjmc,分別表示學(xué)期、班級(jí),形成帶檢索參數(shù)的數(shù)據(jù)窗口。 該數(shù)據(jù)窗口的修改屬性為默認(rèn)值即“不允許修改”。數(shù)據(jù)窗口d_bjkc_chaxun生成的sql select語句為:select bjkc.kcmc, bjkc.xs, bjkc.jsxm, from bjkc , banjiwhere (banji. bjbh= bjkc. bjbh) and (bjkc. xq=:mxq) and(banji . bjmc=:mbjmc)2)設(shè)計(jì)訪問課程信息的窗口設(shè)計(jì)輸入修改班級(jí)課程信息的窗口班級(jí)課程的輸入和
36、修改都通過此窗口完成,輸入修改班級(jí)課程信息的窗口布局如圖22所示。圖22 輸入修改班級(jí)課程信息的窗口首先,從祖先窗口w_xiugai繼承生成窗口對(duì)象w_bjkc_shuruxiugai,調(diào)整其大小。然后將數(shù)據(jù)窗口控件dw_1的dataobject屬性設(shè)置為d_bjkc_shuru,此窗口設(shè)計(jì)即完成。設(shè)計(jì)查詢班級(jí)開設(shè)課程的窗口 首先創(chuàng)建一個(gè)窗口對(duì)象w_bjkc_chaxun,調(diào)整大小,在窗口中放置2個(gè)靜態(tài)文本控件(st_1,st_2)、2個(gè)下拉列表框控件(ddlb_1,ddlb_2)、1個(gè)命令按鈕(cb_1)、1個(gè)數(shù)據(jù)窗口控件(dw_1),調(diào)整各個(gè)控件的位置和大小。如圖23所示:(1)窗口w_b
37、jkc_chaxun的open事件腳本如下dw_1.settransobject(sqlca) int li_xq,li_bjmc,nstring ls_xq,ls_bjmcselect count(distinct xq)into :li_xq圖23 查詢班級(jí)開設(shè)課程的窗口from 課程;declare xqcursor cursor forselect xq from 課程 group by xq;open xqcursor;for n=1 to li_xqfetch next xqcursor into :ls_xq;ddplb_1.additem(ls_xq)nextclose xqc
38、ursor;select count(distinct bjmc) into :li_bjmcfrom 班級(jí);declare bjmccursor cursor forselect 班級(jí).bjmcfrom 課程, 班級(jí)where 課程.bjbh=班級(jí).bjbh group by 班級(jí).bjmc;open bjmccursor;for n=1 to li_bjmcfetch next bjmccursor into :ls_bjmc;ddplb_2.additem(ls_bjmc)nextclose bjmccursor; (2)查詢按鈕的clicked事件腳本如下。dw_1.retrieve(
39、ddplb_1.text,ddplb_2.text) 4.9第4章 第9節(jié)設(shè)計(jì)成績管理模塊1)設(shè)計(jì)訪問成績信息的數(shù)據(jù)窗口設(shè)計(jì)輸入成績信息的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_xscj_shuru,顯示風(fēng)格為“grid”,數(shù)據(jù)源類型為“sql select”,其布局如圖19所示。數(shù)據(jù)來源與成績表xscj和視圖xsjb,其中,學(xué)號(hào)、學(xué)期、課程名稱和成績?yōu)槌煽儽韝scj的列,姓名是視圖xscj的列。選則roes|updata properties命令,打開數(shù)據(jù)窗口的修改屬性對(duì)話框,如圖24所示:圖24 數(shù)據(jù)窗口d_xscj_shuru選擇rows|update properties命令,打開數(shù)據(jù)窗口的修改屬性對(duì)
40、話框,設(shè)置數(shù)據(jù)窗口的修改屬性,即只有成績表xscj的成績列可以在數(shù)據(jù)窗口中修改,關(guān)鍵字為成績表xscj的主關(guān)鍵字(xh,xq,kcmc)。然后,單擊工具條上的tab order圖標(biāo),將列控件sxcj_cj的tab order值設(shè)為10,在單擊tab order圖標(biāo)回到原設(shè)計(jì)狀態(tài)。如圖25:圖25 數(shù)據(jù)窗口d_xscj_shuru的修改屬性設(shè)計(jì)查詢某班級(jí)某學(xué)期全體學(xué)生各科成績的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_xscj_bjcx,顯示風(fēng)格為 “cross tab”,數(shù)據(jù)源類型為 “sql select”,數(shù)據(jù)來源于成績表xscj和視圖xsbj。如圖26:圖26 數(shù)據(jù)窗口d_xscj_grcx設(shè)計(jì)查詢某班級(jí)
41、某學(xué)期全體學(xué)生各科成績的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_xscj_bjcx,顯示風(fēng)格為 “cross tab”,數(shù)據(jù)源類型為 “sql select”,數(shù)據(jù)來源于成績表xscj和視圖xsbj。如圖27:圖27 數(shù)據(jù)窗口d_xscj_bjxc在headeer1條中添加2個(gè)計(jì)算域控件,對(duì)應(yīng)的表達(dá)式分別為mbjmc和mxq,3個(gè)文本控件,其文本分別為 “成績單”、 “班級(jí)” 、和 “學(xué)期”.數(shù)據(jù)窗口的檢索參數(shù)為mxq和mbjmc,分別對(duì)應(yīng)于學(xué)期和班級(jí)名稱,修改屬性取默認(rèn)值(不允許修改)。設(shè)計(jì)查詢某班級(jí)某學(xué)期全體學(xué)生各科成績的數(shù)據(jù)窗口創(chuàng)建數(shù)據(jù)窗口d_xscj_kccx,顯示風(fēng)格為 “n_up”,攔數(shù)為2,數(shù)據(jù)
42、源類型為 “sql select”,數(shù)據(jù)來源于成績表xscj和視圖xsbj.如圖28:圖28 數(shù)據(jù)窗口d_xsch_kccx在header條中添加2個(gè)計(jì)算域控件對(duì)應(yīng)的表達(dá)式分別為mbcme,3個(gè)文本控件,其文本分別為 “成績單”、 “班級(jí)” 、和 “課程”.數(shù)據(jù)窗口的檢索參數(shù)為mxq、mbjmc、mkcme,分別對(duì)應(yīng)于學(xué)期、班級(jí)名稱和課程名稱,修改屬性取默認(rèn)值(不允許修改)。2)設(shè)計(jì)訪問成績信息的窗口設(shè)計(jì)輸入成績的窗口首先創(chuàng)建窗口對(duì)象w_xscj_shuru,在窗口上放置1個(gè)分組框控件、3個(gè)靜態(tài)文本控件、3個(gè)下拉列表框控件、3個(gè)命令按鈕控件和1個(gè)數(shù)據(jù)窗口控件。如圖29:圖29 輸入成績的窗口各
43、個(gè)窗口和控件的事件腳本如下。(1)窗口的open事件腳本如下。 dw_1.settransobject(sqlca)int li_xq,li_bjmc,li_kcmc,nstring ls_xq,ls_bjmc,ls_kcmcselect count(distinct xq)into :li_xqfrom bjkc;declare xqcursor cursor forselect xq from bjkc group by xq;open xqcursor;for n=1 to li_xq fetch next xqcursor into :ls_xq; ddlb_1.additem(ls_
44、xq)nextclose xqcursor;/生成班級(jí)下拉列表框的列表項(xiàng)select count(distinct bjbh) into :li_bjmcfrom bjkc;declare bjmccursor cursor forselect banji.bjmcfrom bjkc, banjiwhere bjkc.bjbh=banji.bjbh group by banji.bjmc;open bjmccursor;for n=1 to li_bjmc fetch next bjmccursor into :ls_bjmc; ddlb_2.additem(ls_bjmc)nextclose
45、 bjmccursor;(2)窗口的closequery事件腳本如下。 integer rt dw_1.accepttext()if dw_1.modifiedcount()=0 then return 0else rt=messagebox(提示,添加修改內(nèi)容未保存,確實(shí)退出嗎?,question!,yesno!)if rt=1 thenreturn 0 end if end ifreturn 1(3)課程的下拉列表框的getfocus事件腳本如下。int li_kcmc,nstring ls_kcmc,ls_xq,ls_bjmcls_xq=ddlb_1.textls_bjmc=ddlb_2
46、.textif not(ls_xq=or ls_bjmc=) thenselect count(distinct bjkc.kcmc)into :li_kcmcfrom bjkc,banjiwhere(bjkc.bjbh=banji.bjbh)and (banji.bjmc=:ls_bjmc)and(bjkc.xq=:ls_xq);declare kcmccursor cursor forselect bjkc.kcmcfrom banji,bjkcwhere(bjkc.bjbh=banji.bjbh)and (banji.bjmc=:ls_bjmc)and(bjkc.xq=:ls_xq)gr
47、oup by bjkc.kcmc;ddlb_3.reset()open kcmccursor;for n=1 to li_kcmcfetch next kcmccursor into :ls_kcmc;ddlb_3.additem(ls_kcmc)nextclose kcmccursor;end if (4)確定按鈕的clicked事件腳本如下。 int li_xh,nstring ls_kcmc,ls_xq,ls_bjmc,ls_xhls_xq=ddlb_1.textls_bjmc=ddlb_2.textls_kcmc=ddlb_3.textif ls_xq= or ls_bjmc= or
48、ls_kcmc= thenmessagebox(提示,選擇項(xiàng)不能空!)elseselect count(distinct xh)into :li_xhfrom xsbjwhere xsbj.bjmc=:ls_bjmc;declare xhcursor cursor forselect xhfrom xsbjwhere xsbj.bjmc=:ls_bjmc;open xhcursor;for n=1 to li_xhfetch next xhcursor into:ls_xh;insert intoxscj(xh,xq,kcmc,cj)values(:ls_xh,:ls_xq,ls_kcmc,n
49、ull);nextclose xhcursor;dw_1.retrieve(ls_xq,ls_bjmc,ls_kcmc)end if設(shè)計(jì)查詢學(xué)生個(gè)人成績窗口 查詢學(xué)生個(gè)人成績的窗口如圖30所示。數(shù)據(jù)窗口控件連接的數(shù)據(jù)窗口對(duì)象為d_xscj_grcx.(1)查詢按鈕的clicked事件腳本如下dw_1.settransobject(sqlca)if sle_1.text=or sle_2.text= then messagebox(提示,班級(jí)學(xué)期和課程不能為空)else dw_1.retrieve(sle_1.text,sle_2.text) cb_2.enabled=trueend if(2)打印按鈕的clicked事件腳本如下dw_1.print(true)(3)退出按鈕的clicked事件腳本如下close(parent)圖30 查詢學(xué)生個(gè)人成績的窗口設(shè)計(jì)查詢班級(jí)成績的窗口查詢班級(jí)成績的窗口如圖31所示。數(shù)據(jù)窗口控件的dataobject屬性為d_xscj_bjcx。此窗口的open 事件腳本與輸入成績窗口的open事件腳本相同。打印按鈕和退出按鈕的clicked事件腳本與d_xscj_grcx中的一樣。(1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 租賃廠房合同協(xié)議
- 招標(biāo)文件評(píng)審的實(shí)踐操作與評(píng)審標(biāo)準(zhǔn)
- 家庭護(hù)理家政工雇傭合同
- 土地居間合作合同書
- 現(xiàn)金贖樓服務(wù)合同還款還款監(jiān)管政策
- 借款保證協(xié)議模板
- 個(gè)人社會(huì)救助借款合同范本
- 河砂礫石采購協(xié)議
- 林業(yè)采伐合作合同
- 抗洪項(xiàng)目論證招標(biāo)
- 小學(xué)英語單詞大全打印
- 2024年信息技術(shù)基礎(chǔ)考試復(fù)習(xí)題庫(含答案)
- 《單片機(jī)項(xiàng)目化教程(C語言版)(第2版)》全套教學(xué)課件
- GB/T 44360-2024風(fēng)能發(fā)電系統(tǒng)智能風(fēng)力發(fā)電場數(shù)據(jù)采集技術(shù)規(guī)范
- 雅馬哈RX-V365使用說明書
- 陽光食品APP培訓(xùn)考核題庫(含答案)食品生產(chǎn)企業(yè)端
- 廣元市2024年專業(yè)技術(shù)人員公需科目繼續(xù)教育試卷及參考答案
- 2024年全國國家版圖知識(shí)競賽題庫及答案
- 部編初中歷史2024年秋季新教材七上歷史《教材分析和教學(xué)建議》
- PLC機(jī)械手臂搬運(yùn)加工標(biāo)準(zhǔn)流程控制
- (正式版)FZ∕T 64111-2024 衛(wèi)生巾(護(hù)墊)用非織造布
評(píng)論
0/150
提交評(píng)論