版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> PB課程設(shè)計(jì)</b></p><p><b> 學(xué)</b></p><p><b> 生</b></p><p><b> 成</b></p><p><b> 績(jī)</b></p>
2、<p><b> 管</b></p><p><b> 理</b></p><p><b> 系</b></p><p><b> 統(tǒng)</b></p><p><b> 學(xué) 號(hào):</b></p>
3、<p><b> 姓 名:</b></p><p><b> 指導(dǎo)老師: </b></p><p><b> 引言</b></p><p> Powerbuilder 是目前最有代表性的數(shù)據(jù)庫前端開發(fā)工具之一。它具有強(qiáng)大的數(shù)據(jù)庫管理功能,以特有的數(shù)據(jù)窗口技術(shù)和簡(jiǎn)單易用功能強(qiáng)大
4、的powerscript語言滿足了快速開發(fā)和實(shí)施的需要。</p><p> 在這個(gè)學(xué)期學(xué)習(xí)的powerbuilder結(jié)合數(shù)據(jù)庫原理進(jìn)行了本系統(tǒng)的設(shè)計(jì),本系統(tǒng)為學(xué)生成績(jī)管理系統(tǒng),制作了一個(gè)小型的系統(tǒng),實(shí)現(xiàn)了基本的學(xué)生成績(jī)管理功能,在實(shí)踐中進(jìn)一步理解和掌握了數(shù)據(jù)庫技術(shù),并使所學(xué)的知識(shí)有一定的應(yīng)用價(jià)值。</p><p> 學(xué)生成績(jī)管理系統(tǒng)能夠有效運(yùn)行,從而完成自動(dòng),高效,科學(xué)的學(xué)生和老師信息
5、的輸入和維護(hù),以及老師對(duì)學(xué)生成績(jī)的錄入。系統(tǒng)開發(fā)的總體任務(wù)是實(shí)現(xiàn)學(xué)生成績(jī)管理的系統(tǒng)化,規(guī)范化和自動(dòng)化,同時(shí)這是對(duì)學(xué)完powerbuilder之后開發(fā)的第一次完整實(shí)踐。</p><p> 本學(xué)生成績(jī)管理系統(tǒng)主要包括三大模塊:</p><p> 一、管理員模塊,管理員可對(duì)教師和學(xué)生的基本信息進(jìn)行輸入和維護(hù),對(duì)學(xué)校課程進(jìn)行錄入、修改,對(duì)學(xué)生成績(jī)的查看等。</p><p&g
6、t; 二、教師模塊,教師可查看自己的基本信息,以及對(duì)錄入學(xué)生成績(jī)和登陸密碼的修改等。</p><p> 三、學(xué)生模塊,學(xué)生可查看自己的基本信息、課表,以及選課、退課和修改登陸密碼等。</p><p> 本系統(tǒng)中,基本滿足對(duì)學(xué)生成績(jī)的管理,沒有對(duì)學(xué)生成績(jī)進(jìn)行統(tǒng)計(jì)分析。通過做這次的學(xué)生成績(jī)管理系統(tǒng),自己受益匪淺,由于水平有限,不當(dāng)之處在所難免,懇請(qǐng)老師批評(píng)指正。</p>&
7、lt;p><b> 目錄</b></p><p> 一、系統(tǒng)分析與設(shè)計(jì)1</p><p> 1.1 系統(tǒng)功能分析1</p><p> 1.2 系統(tǒng)功能模塊設(shè)計(jì)1</p><p> 二、數(shù)據(jù)庫設(shè)計(jì)與實(shí)現(xiàn)4</p><p> 2.1 數(shù)據(jù)庫設(shè)計(jì)4</p>&l
8、t;p> 2.2 創(chuàng)建數(shù)據(jù)庫4</p><p> 2.3 創(chuàng)建應(yīng)用7</p><p> 2.4 創(chuàng)建窗口8</p><p> 2.4.1創(chuàng)建登陸窗口8</p><p> 2.4.2創(chuàng)建學(xué)生窗口11</p><p> 2.4.3創(chuàng)建教師窗口15</p><p> 2
9、.4.4創(chuàng)建管理員窗口21</p><p> 2.5 創(chuàng)建選單25</p><p> 2.5.1創(chuàng)建學(xué)生選單25</p><p> 2.5.2創(chuàng)建教師選單26</p><p> 2.6 創(chuàng)建數(shù)據(jù)窗口28</p><p> 2.6.1創(chuàng)建學(xué)生數(shù)據(jù)窗口28</p><p>
10、2.6.2創(chuàng)建教師數(shù)據(jù)窗口30</p><p> 2.6.3創(chuàng)建管理員數(shù)據(jù)窗口32</p><p><b> 2.7 小結(jié)34</b></p><p><b> 三、使用說明34</b></p><p> 3.1 學(xué)生模塊使用說明34</p><p> 3
11、.2 教師模塊使用說明34</p><p> 3.3 管理員模塊使用說明35</p><p> 3.4 登陸模塊使用說明35</p><p> 四、系統(tǒng)優(yōu)缺點(diǎn)分析35</p><p> 4.1優(yōu)點(diǎn)分析35</p><p> 4.2 缺點(diǎn)分析35</p><p> 五、 心
12、得體會(huì)35</p><p> 六、 參考文獻(xiàn)35</p><p><b> 系統(tǒng)分析和設(shè)計(jì)</b></p><p> 學(xué)生成績(jī)管理是學(xué)校教務(wù)管理的重要環(huán)節(jié)之一。近年來,隨著高校的不斷擴(kuò)招,學(xué)生人數(shù)越來越多,學(xué)生成績(jī)管理的任務(wù)更加繁重,必須借助現(xiàn)代化的管理工具和手段提高學(xué)生成績(jī)管理效率。學(xué)生成績(jī)管理系統(tǒng)廣泛應(yīng)用于高校教務(wù)管理部門的學(xué)生成
13、績(jī)管理,其作用和功能也是學(xué)生比較熟悉和容易理解的。</p><p> 一個(gè)應(yīng)用系統(tǒng)的開發(fā)過程包括分析、設(shè)計(jì)、實(shí)現(xiàn)、調(diào)試和發(fā)布等階段。以下是分析說明。</p><p><b> 系統(tǒng)功能分析</b></p><p> 本系統(tǒng)可以實(shí)現(xiàn)的功能主要包括以下幾點(diǎn):</p><p> 管理員對(duì)學(xué)生基本信息的輸入和維護(hù),包括學(xué)
14、號(hào)、姓名、性別、專業(yè)、總學(xué)分等。</p><p> 管理員對(duì)教師基本信息的輸入和維護(hù),包括職工號(hào)、姓名、年齡、性別、所授的課程號(hào)等。</p><p> 管理員對(duì)用戶權(quán)限的設(shè)置,包括用戶名、密碼、和登陸權(quán)限等。</p><p> 管理員對(duì)課程信息的輸入和修改,包括課程號(hào)、課程名、開課學(xué)期、學(xué)時(shí)、學(xué)分等。</p><p> 管理員對(duì)學(xué)生成
15、績(jī)的查詢等。</p><p> 教師對(duì)學(xué)生成績(jī)的錄入以及登陸密碼的修改等。</p><p> 學(xué)生對(duì)自己基本信息、課表和成績(jī)查詢,快速選課,修改登陸密碼等。</p><p><b> 系統(tǒng)功能模塊設(shè)計(jì)</b></p><p> 通過對(duì)上述功能的分析、分類、綜合,按照模塊化程序設(shè)計(jì)的要求,得到如圖</p>
16、;<p> 2-1所示的功能模塊圖。</p><p><b> 圖2-1</b></p><p><b> 數(shù)據(jù)庫設(shè)計(jì)與實(shí)現(xiàn)</b></p><p> 數(shù)據(jù)庫在學(xué)生成績(jī)管理系統(tǒng)中占有非常重要的地位,數(shù)據(jù)庫結(jié)構(gòu)的好壞將直接影響到應(yīng)用系統(tǒng)操作效率已經(jīng)能否保證數(shù)據(jù)的一致性、完成性和安全性。</p>
17、;<p><b> 2.1 數(shù)據(jù)庫設(shè)計(jì)</b></p><p> 根據(jù)學(xué)生成績(jī)管理系統(tǒng)的功能要求,通過分析系統(tǒng)要設(shè)計(jì)的相關(guān)實(shí)體一集要收集、存儲(chǔ)和操縱數(shù)據(jù)信息,得到如下圖所示的系統(tǒng)E-R圖。</p><p><b> 關(guān)系模式如下:</b></p><p> 學(xué)生基本信息(學(xué)號(hào),姓名,性別,專業(yè),總學(xué)分
18、)</p><p> 教師基本信息(職工號(hào),姓名,年齡,性別,所授課程)</p><p> 課程(課程號(hào),課程名,開課學(xué)期,學(xué)時(shí),學(xué)分)</p><p> 成績(jī)(學(xué)號(hào),課程號(hào),成績(jī),所獲學(xué)分)</p><p> 用戶(用戶賬號(hào),密碼,權(quán)限)</p><p> E-R圖如圖3-1:</p><
19、;p><b> 1</b></p><p><b> n</b></p><p><b> n</b></p><p><b> 1</b></p><p><b> 1</b></p><p>
20、;<b> 1</b></p><p><b> 圖3-1</b></p><p> 2.2 創(chuàng)建數(shù)據(jù)庫 </p><p> 開始,在E盤根目錄下建立本實(shí)例的工作文件夾“workspace”再在”E:\workspace”文件夾下建立文件夾”data”,用于存儲(chǔ)數(shù)據(jù)文件。</p><p>
21、 選擇ODB ODBC----Utilities---Create ASA Database,如圖4-1</p><p><b> 圖4-1</b></p><p> 選擇table----new table設(shè)置參數(shù)如圖4-2到圖5-4。</p><p><b> 圖4-2</b></p><p&
22、gt;<b> 圖4-3</b></p><p><b> 圖5-1</b></p><p><b> 圖5-2</b></p><p><b> 圖5-3</b></p><p><b> 圖5-4</b></p&g
23、t;<p><b> 1.“學(xué)生”表</b></p><p> 表名:student</p><p><b> 主鍵:xh</b></p><p><b> 2.“教師”表</b></p><p> 表名:teacher</p><p
24、><b> 主鍵:zgh</b></p><p><b> 外鍵:kch</b></p><p><b> 3.“課程”表</b></p><p><b> 表名:kc</b></p><p><b> 主鍵:kch</b&
25、gt;</p><p><b> 4.“成績(jī)”表</b></p><p><b> 表名:xs_cj</b></p><p><b> 主鍵:xh和kch</b></p><p><b> 外鍵:xh和kch</b></p><
26、p><b> 5.“用戶”表</b></p><p><b> 表名:user</b></p><p><b> 主鍵:id</b></p><p> 表之間的具體聯(lián)系如圖6-1:</p><p><b> 圖6-1</b></p&g
27、t;<p><b> 2.3創(chuàng)建應(yīng)用</b></p><p> 在”E:\workspace”文件夾下建立工作空間命名為“workspace”,如圖7-1和7-2:</p><p><b> 圖7-1</b></p><p><b> 圖7-2</b></p>&l
28、t;p> 創(chuàng)建新的應(yīng)用,打開new,選擇“target”頁中的應(yīng)用“Application”,單擊ok,彈出保存文件對(duì)話框,選擇到新建的目錄E:\workspace,輸入文件名為“project”,單擊finish,具體如圖8-1:</p><p><b> 圖8-1</b></p><p> 創(chuàng)建應(yīng)用之后,在project的open事件中編寫代碼:<
29、;/p><p> // Profile student</p><p> SQLCA.DBMS = "ODBC"</p><p> SQLCA.AutoCommit = False</p><p> SQLCA.DBParm = "ConnectString='DSN=student;UID=dba;
30、PWD=sql'"</p><p><b> connect;</b></p><p> if sqlca.sqlcode<>0 then</p><p> messagebox("提示","數(shù)據(jù)庫連接失??!")</p><p><b>
31、; else </b></p><p> open(w_load)</p><p><b> end if</b></p><p><b> 2.4 創(chuàng)建窗口</b></p><p> 2.4.1 創(chuàng)建登陸窗口</p><p> 1.單擊new,選擇P
32、B Object,點(diǎn)擊window,然后單擊ok,窗口如下:</p><p> 保存窗口為“w_load”。</p><p> 2.添加控件并設(shè)置屬性</p><p> 在窗口上放置1個(gè)圖片控件,5個(gè)靜態(tài)文本控件,2個(gè)單行編輯控件,1個(gè)</p><p><b> 圖9-1</b></p><p
33、> 下拉列表控件,2個(gè)按鈕控件,各個(gè)控件的位置和大小如圖9-1所示。</p><p><b> 3.編寫腳本</b></p><p><b> ?。?)定義全局變量</b></p><p> string qj_id,qj_password,qj_qx,qj_kch,qj_xf</p><p
34、> string s_kch,s_xh</p><p><b> ?。?)定義實(shí)例變量</b></p><p><b> int l_n;</b></p><p> string l_id,l_password,l_qx</p><p> ?。?)w_load的open事件腳本為:<
35、;/p><p> st_4.text=string(today(),"yyyy-mm-dd")</p><p> st_5.text =string(now(),"hh:mm:ss")</p><p><b> Timer(1)</b></p><p> 在timer()中腳本
36、為:</p><p> st_5.text=string(now())</p><p> (4)在sle_1中的getfocus中的腳本為:</p><p> this.selecttext(1,len(this.text))</p><p> ?。?)在sle_2中的getfocus中的腳本為:</p><p>
37、; l_id=trim(sle_1.text)</p><p> if l_id=""then</p><p> messagebox("error","用戶名不能為空,請(qǐng)輸入!")</p><p> sle_1.setfocus();</p><p><b>
38、else</b></p><p> select "user"."id"</p><p> into :qj_id</p><p> from "user"</p><p> where ("user"."id"=:l_id
39、);</p><p> if sqlca.sqlcode<>0 then</p><p> messagebox("error","用戶名不存在,請(qǐng)重新輸入!")</p><p> sle_1.setfocus();</p><p><b> else</b>&
40、lt;/p><p> sle_2.setfocus();</p><p><b> end if</b></p><p><b> end if</b></p><p> this.selecttext(1,len(this.text))</p><p> (6)在dd
41、plb_1的selecttionchanged中的腳本為:</p><p> l_id=trim(sle_1.text)</p><p> l_password=trim(sle_2.text)</p><p> if l_password=""then</p><p> messagebox("erro
42、r","密碼不能為空,請(qǐng)輸入!")</p><p> sle_2.setfocus();</p><p><b> else</b></p><p> select "user"."id","user"."password"<
43、;/p><p> into :qj_id,:qj_password</p><p> from "user"</p><p> where ("user"."id"=:l_id and "user"."password"=:l_password);</p>
44、;<p> if sqlca.sqlcode<>0 then</p><p> messagebox("error","密碼錯(cuò)誤,請(qǐng)重新輸入!")</p><p> sle_2.setfocus();</p><p><b> else</b></p>&l
45、t;p> ddplb_1.setfocus();</p><p><b> end if</b></p><p><b> end if</b></p><p> ?。?)在cb_1的clicked中的腳本為:</p><p> l_id=trim(sle_1.text)</p&
46、gt;<p> l_password=trim(sle_2.text)</p><p> l_qx=trim(ddplb_1.text)</p><p> select "user"."id","user"."password","user"."qx"
47、</p><p> into :qj_id,:qj_password,:qj_qx</p><p> from "user"</p><p> where ("user"."id"=:l_id and "user"."password"=:l_password
48、and "user"."qx"=:l_qx);</p><p> if sqlca.sqlcode<>0 then</p><p> messagebox("error","用戶類型不匹配,請(qǐng)重新選擇!")</p><p> ddplb_1.setfocus();<
49、;/p><p><b> else</b></p><p> choose case l_qx</p><p> case "管理員"</p><p> open(w_admin)</p><p> close(w_load)</p><p>&l
50、t;b> case "教師"</b></p><p> open(w_teacher)</p><p> close(w_load)</p><p><b> case "學(xué)生"</b></p><p> open(w_student)</p>
51、;<p> close(w_load)</p><p> end choose</p><p><b> end if</b></p><p> (8)給cb_1定義一個(gè)用戶事件u_keydown,事件號(hào)為pbm_keydown,u_keydown中的腳本為:</p><p> if keydow
52、n(keyenter!) then</p><p> this.triggerevent(clicked!)</p><p><b> end if</b></p><p> ?。?)cb_2的clicked腳本為:</p><p> close(parent)</p><p> (10)
53、給cb_2定義一個(gè)用戶事件u_2,事件號(hào)為pbm_keydown,u_2中的腳本為:</p><p> if keydown(keyenter!) then</p><p> this.event clicked()</p><p><b> end if</b></p><p> 2.4.2 創(chuàng)建學(xué)生窗口<
54、;/p><p> 1 創(chuàng)建窗口,命名為“w_student”:</p><p><b> 圖11-1</b></p><p><b> ?。?)添加控件</b></p><p> 在窗口上放置一個(gè)數(shù)據(jù)窗口控件,一個(gè)選單,如圖11-1</p><p> 創(chuàng)建學(xué)生快速選課窗口
55、</p><p> 創(chuàng)建學(xué)生選課窗口命名為“w_ksxk”;</p><p><b> 圖12-1</b></p><p><b> 添加控件</b></p><p> 在窗口上放置一個(gè)數(shù)據(jù)窗口控件,2個(gè)靜態(tài)文本控件,1個(gè)單行編輯文本控件,三個(gè)按鈕控件,給數(shù)據(jù)窗口控件添加個(gè)數(shù)據(jù)窗口對(duì)象d_k
56、sxk,如圖12-1。</p><p> 在w_ksxk的open事件中的腳本為:</p><p> dw_1.settransobject(sqlca)</p><p> dw_1.retrieve()</p><p> 在cb_1的clicked中的腳本為:</p><p><b> strin
57、g m</b></p><p> m=trim(sle_1.text)</p><p> insert xs_cj(xh,kch)</p><p> values (:qj_id,:m)</p><p> using sqlca;</p><p> if sqlca.sqlcode<>
58、0 then</p><p> messagebox("error","選課失敗:此課程不是可選課程或已被選,請(qǐng)檢查!")</p><p> sle_1.setfocus()</p><p> sle_1.selecttext(1,len(m))</p><p><b> else&l
59、t;/b></p><p> messagebox("選課成功","你已成功選定課程號(hào)"+m)</p><p> sle_1.text=""</p><p><b> end if</b></p><p> 在cb_2中的clicked的腳本為:&
60、lt;/p><p> sle_1.text=""</p><p> 在cb_3中的clicked的腳本為:</p><p> close(parent)</p><p><b> 3創(chuàng)建快速退課窗口</b></p><p> 創(chuàng)建學(xué)生退課窗口,命名為“w_tuike”:&
61、lt;/p><p><b> 圖13-1</b></p><p><b> (2)添加控件</b></p><p> 在窗口上放置一個(gè)數(shù)據(jù)窗口控件,2個(gè)靜態(tài)文本控件,1個(gè)單行編輯文本控件,三個(gè)按鈕控件,給數(shù)據(jù)窗口控件添加個(gè)數(shù)據(jù)窗口對(duì)象d_kc。如圖13-1.</p><p> ?。?)在w_tui
62、ke的open事件中的腳本為:</p><p> dw_1.settransobject(sqlca)</p><p> dw_1.retrieve()</p><p> ?。?)在cb_1的clicked中的腳本為:</p><p> string m,cj_kch</p><p> m=trim(sle_1
63、.text)</p><p> select "xs_cj"."kch"</p><p> into :cj_kch</p><p> from "xs_cj"</p><p> where("xs_cj"."xh"=:qj_id);&
64、lt;/p><p> if cj_kch<>m then</p><p> messagebox("error","課程表中沒有此課程,請(qǐng)重新輸入!")</p><p> sle_1.setfocus()</p><p> sle_1.selecttext(1,len(m))</p
65、><p><b> else</b></p><p> delete from xs_cj</p><p> where("xs_cj".kch=:m)</p><p> using sqlca;</p><p> messagebox("退選成功",
66、"你已成功退選課程號(hào)"+m)</p><p> w_tuike.dw_1.retrieve(qj_id)</p><p> sle_1.text=""</p><p><b> end if</b></p><p> (5)在cb_2中的clicked的腳本為:</p
67、><p> sle_1.text=""</p><p> ?。?)在cb_3中的clicked的腳本為:</p><p> close(parent)</p><p> 4 創(chuàng)建修改密碼窗口</p><p> ?。?)創(chuàng)建學(xué)生登錄密碼修改窗口,命名為“w_password”:</p>
68、<p><b> 圖14-1</b></p><p><b> 添加控件</b></p><p> 在窗口上放置2個(gè)靜態(tài)文本框控件,1個(gè)單行編輯控件,2個(gè)按鈕控件。如圖14-1.</p><p> 在cb_1的clicked事件中的腳本為:</p><p><b>
69、string l</b></p><p><b> int n</b></p><p> l=trim(sle_1.text)</p><p> n=len(sle_1.text)</p><p> if l=""or n>10 then</p><p&g
70、t; messagebox("提示","新密碼為空或長(zhǎng)度大于10,請(qǐng)檢查!")</p><p><b> else</b></p><p> update "user"</p><p> set "user"."password"=:l&
71、lt;/p><p> where "user"."id"=:qj_id</p><p> using sqlca;</p><p> if sqlca.sqlcode = 0 then</p><p> messagebox("提示","密碼修改成功!請(qǐng)記住新密碼:&q
72、uot;+l)</p><p> close(w_password)</p><p><b> else</b></p><p> messagebox("提示","密碼修改失敗:~n長(zhǎng)度過長(zhǎng)或有特殊字符!")</p><p><b> return</b&
73、gt;</p><p><b> end if</b></p><p><b> end if</b></p><p> (4) 在cb_2的clicked事件中的腳本為:</p><p> sle_1.text=""</p><p> 5
74、創(chuàng)建幫助窗口,命名為“w_guanyu”:如圖15-1.</p><p><b> 圖15-1</b></p><p> 2.4.3 創(chuàng)建教師窗口</p><p> 創(chuàng)建窗口,命名為“w_teacher“:</p><p><b> 圖16-1</b></p><p>
75、; (1) 在窗口上放置1個(gè)數(shù)據(jù)窗口控件,給數(shù)據(jù)窗口控件添加一個(gè)數(shù)據(jù)窗口對(duì) 象。如圖16-1.</p><p> (2) 在w_teacher的open事件中的腳本為:</p><p> dw_1.settransobject(sqlca)</p><p> dw_1.retrieve(qj_id)</p>&
76、lt;p> 2創(chuàng)建進(jìn)入錄入學(xué)生成績(jī)窗口,命名為“w_srkch”:</p><p><b> 圖16-2</b></p><p> ?。?)窗口上放置1個(gè)靜態(tài)文本框控件,一個(gè)單行編輯框控件,2個(gè)按鈕控件。如圖16-2.</p><p> ?。?)在cb_1中的clicked中的腳本為:</p><p><
77、b> string m</b></p><p><b> int n</b></p><p> m=trim(sle_1.text)</p><p> n=len(sle_1.text)</p><p> select "teacher"."kch"&l
78、t;/p><p> into :qj_kch</p><p> from "teacher"</p><p> where("teacher"."zgh"=:qj_id);</p><p> if qj_kch<>m then</p><p>
79、 messagebox("error","你輸入的課程號(hào)不在你的授課范圍!請(qǐng)重新輸入!")</p><p> sle_1.setfocus()</p><p> sle_1.selecttext(1,n)</p><p><b> else</b></p><p> op
80、en(w_lrcj)</p><p> close(w_srkch)</p><p><b> end if</b></p><p> ?。?)在cb_2中的clicked的腳本為:</p><p> sle_1.text=""</p><p> 3 創(chuàng)建錄入成績(jī)窗口,
81、命名為“w_lrcj”</p><p><b> 圖17-1</b></p><p> 在窗口上放置2個(gè)靜態(tài)文本框控件,2個(gè)單行編輯框控件,3個(gè)按鈕控件。如圖17-1.</p><p> 給sle_2中的getfocus的腳本為:</p><p><b> string m</b></
82、p><p> m=trim(sle_1.text)</p><p> if m="" or len(m)>10 then</p><p> messagebox("error","學(xué)號(hào)格式不正確,請(qǐng)重新輸入!")</p><p> sle_1.setfocus()</
83、p><p> sle_1.selecttext(1,len(m))</p><p><b> else</b></p><p> select "xs_cj"."xh","xs_cj"."kch"</p><p> into :s_xh
84、,:s_kch</p><p> from "xs_cj"</p><p> where("xs_cj"."xh"=:m and "xs_cj"."kch"=:qj_kch);</p><p> if sqlca.sqlcode<>0 then&l
85、t;/p><p> messagebox("你沒有權(quán)限錄入","此學(xué)生沒有選擇此門課程")</p><p> sle_1.setfocus()</p><p> sle_1.selecttext(1,len(m))</p><p><b> else</b></p>
86、<p> sle_2.setfocus()</p><p><b> end if</b></p><p><b> end if</b></p><p> 給cb_1中的clicked的腳本為:</p><p> int m,n,chengji</p><
87、;p> n=integer(sle_2.text)</p><p> if sle_1.text="" or sle_2.text="" then</p><p> messagebox("error","學(xué)號(hào)或成績(jī)不能為空")</p><p><b> else
88、</b></p><p> select "kc"."xf"</p><p><b> into :m</b></p><p><b> from "kc"</b></p><p> where ("kc&qu
89、ot;."kch"=:s_kch);</p><p> if n>=0 and n<=100 then</p><p> select "xs_cj"."cj"</p><p> into :chengji</p><p> from "xs_cj&q
90、uot;</p><p> where("xs_cj"."xh"=:s_xh and "xs_cj"."kch"=:s_kch);</p><p> if string(chengji)="" then</p><p> if n>=60 then<
91、/p><p> update xs_cj set cj=:n,xf=:m</p><p> where ("xs_cj"."xh"=:s_xh and "xs_cj"."kch"=:s_kch);</p><p> messagebox("成功","學(xué)號(hào)&
92、quot;+s_xh+"的成績(jī)已錄入!")</p><p><b> else </b></p><p> update xs_cj set cj=:n,xf=0</p><p> where ("xs_cj"."xh"=:s_xh and "xs_cj".&
93、quot;kch"=:s_kch);</p><p> messagebox("成功","學(xué)號(hào)"+s_xh+"的成績(jī)已錄入!")</p><p><b> end if</b></p><p> sle_1.text=""</p>&l
94、t;p> sle_2.text=""</p><p><b> else </b></p><p> messagebox("error","此學(xué)生此門課成績(jī)已存在,不能重復(fù)錄入!")</p><p> sle_2.setfocus()</p><p&
95、gt; sle_2.selecttext(1,len(sle_2.text))</p><p><b> end if</b></p><p><b> else </b></p><p> messagebox("error","錄入成績(jī)格式錯(cuò)誤,請(qǐng)檢查!")</p&
96、gt;<p> sle_2.setfocus()</p><p> sle_2.selecttext(1,len(sle_2.text))</p><p><b> end if</b></p><p><b> end if</b></p><p> 給cb_2的click
97、ed的腳本為:</p><p> sle_1.text=""</p><p> sle_2.text=""</p><p> 給cb_3的clicked的腳本為:</p><p> close(parent)</p><p><b> 創(chuàng)建查詢成績(jī)窗口<
98、/b></p><p> 創(chuàng)建查詢成績(jī)窗口,命名為“w_tcj”</p><p><b> 圖19-1</b></p><p> 在窗口上放置1個(gè)靜態(tài)文本框按鈕,1個(gè)單行編輯框控件,2個(gè)按鈕控件。如圖19-1.</p><p> 給cb_1的clicked的腳本為:</p><p>
99、<b> string m</b></p><p><b> int n</b></p><p> m=trim(sle_1.text)</p><p> n=len(sle_1.text)</p><p> select "teacher"."kch&quo
100、t;</p><p> into :qj_kch</p><p> from "teacher"</p><p> where("teacher"."zgh"=:qj_id);</p><p> if qj_kch<>m then</p><p
101、> messagebox("error","你的輸入有誤!請(qǐng)重新輸入!")</p><p> sle_1.setfocus()</p><p> sle_1.selecttext(1,n)</p><p><b> else</b></p><p> w_teach
102、er.dw_1.dataobject="d_tcj"</p><p> w_teacher.dw_1.settransobject(sqlca)</p><p> w_teacher.dw_1.retrieve(m)</p><p> close(w_tcj)</p><p><b> end if<
103、;/b></p><p> 給cb_2的clicked的腳本為:</p><p> close(parent)</p><p> 5 創(chuàng)建修改密碼窗口</p><p> (1)創(chuàng)建教師登錄密碼修改窗口,命名為“w_password”:</p><p><b> 圖20-1</b>&
104、lt;/p><p><b> ?。?)添加控件</b></p><p> 在窗口上放置2個(gè)靜態(tài)文本框控件,1個(gè)單行編輯控件,2個(gè)按鈕控件。如圖20-1.</p><p> (3)在cb_1的clicked事件中的腳本為:</p><p><b> string l</b></p>&
105、lt;p><b> int n</b></p><p> l=trim(sle_1.text)</p><p> n=len(sle_1.text)</p><p> if l=""or n>10 then</p><p> messagebox("提示",&
106、quot;新密碼為空或長(zhǎng)度大于10,請(qǐng)檢查!")</p><p><b> else</b></p><p> update "user"</p><p> set "user"."password"=:l</p><p> where &qu
107、ot;user"."id"=:qj_id</p><p> using sqlca;</p><p> if sqlca.sqlcode = 0 then</p><p> messagebox("提示","密碼修改成功!請(qǐng)記住新密碼:"+l)</p><p> c
108、lose(w_password)</p><p><b> else</b></p><p> messagebox("提示","密碼修改失敗:~n長(zhǎng)度過長(zhǎng)或有特殊字符!")</p><p><b> return</b></p><p><b&g
109、t; end if</b></p><p><b> end if</b></p><p> (4) 在cb_2的clicked事件中的腳本為:</p><p> sle_1.text=""</p><p> 6創(chuàng)建幫助窗口,命名為“w_guanyu”:如圖21-1</p
110、><p><b> 圖21-1</b></p><p> 2.4.4 創(chuàng)建管理員窗口</p><p> 1 創(chuàng)建管理員窗口,命名為“w_admin”:</p><p><b> 圖21-2</b></p><p> 在窗口上放置1個(gè)按鈕控件和1個(gè)選項(xiàng)卡控件,在選項(xiàng)卡上創(chuàng)
111、建5個(gè)子選項(xiàng),每個(gè)子選項(xiàng)上添加1個(gè)數(shù)據(jù)窗口控件,和5個(gè)按鈕控件。如圖21-2</p><p> 編寫tab_1.tabpage_1(用戶管理)中的代碼:</p><p> ?。?)給tab_1.tabpage_1的constructor中的腳本為:</p><p> w_admin.tab_1.tabpage_1.dw_1.settransobject(sqlc
112、a)</p><p> w_admin.tab_1.tabpage_1.dw_1.retrieve()</p><p> ?。?)給tab_1.tabpage_1.dw_1定義一個(gè)用戶事件u_key,事件號(hào)為pbm_dwnprocessenter,當(dāng)焦點(diǎn)落在該控件時(shí),按回車將觸發(fā)u_key,給u_key編寫代碼:</p><p><b> int co
113、l</b></p><p><b> long row</b></p><p> col=getcolumn()</p><p> row=getrow()</p><p> if col<3 then</p><p> setcolumn(col+1)</p&g
114、t;<p><b> else</b></p><p> if row<rowcount() then</p><p> setrow(row+1)</p><p> scrolltorow(row+1)</p><p> setcolumn(1)</p><p>&
115、lt;b> else</b></p><p> row=insertrow(0)</p><p> setrow(row)</p><p> scrolltorow(row)</p><p> setcolumn(1)</p><p><b> end if</b>&
116、lt;/p><p><b> end if</b></p><p> return 1 </p><p> (3)給tab_1.tabpage_1.dw_1定義一個(gè)用戶事件u_keyarrow,事件號(hào)為pbm_dwntabdownout,當(dāng)焦點(diǎn)落在該控件時(shí),按回車將觸發(fā)u_keyarrow,給u_keyarrow編寫代碼:<
117、;/p><p><b> long row</b></p><p> row=insertrow(0)</p><p> setrow(row)</p><p> scrolltorow(row)</p><p> ?。?)給添加記錄的命令按鈕cb_1的clicked事件編寫代碼:</p
118、><p><b> long row</b></p><p> row=w_admin.tab_1.tabpage_1.dw_1.insertrow(0)</p><p> w_admin.tab_1.tabpage_1.dw_1.setrow(row)</p><p> w_admin.tab_1.tabpage_
119、1.dw_1.scrolltorow(row)</p><p> w_admin.tab_1.tabpage_1.dw_1.setfocus()</p><p> (5) 給cb_1定義一個(gè)用戶事件u_1,事件號(hào)為pbm_keydown,當(dāng)焦點(diǎn)落在該焦點(diǎn)時(shí),按任意鍵都將觸發(fā)u_1。給u_1編寫代碼:</p><p> if keydown(keyenter!)
120、 then</p><p> w_admin.tab_1.tabpage_1.cb_1.event clicked()</p><p><b> end if</b></p><p> (6)給更新記錄的命令按鈕cb_2的clicked事件編寫代碼:</p><p> w_admin.tab_1.tabpage_
121、1.dw_1.update()</p><p> w_admin.tab_1.tabpage_1.dw_1.reset()</p><p> ?。?)給cb_2定義一個(gè)用戶事件u_2,事件號(hào)為pbm_keydown,當(dāng)焦點(diǎn)落在該焦點(diǎn)時(shí),按任意鍵都將觸發(fā)u_2。給u_2編寫代碼:</p><p> if keydown(keyenter!) then</p&
122、gt;<p> w_admin.tab_1.tabpage_1.cb_2.event clicked()</p><p><b> end if</b></p><p> ?。?)給刪除記錄的命令按鈕cb_3的clicked事件編寫代碼:</p><p> w_admin.tab_1.tabpage_1.dw_1.delet
123、erow(dw_1.getrow())</p><p> ?。?)給cb_3定義一個(gè)用戶事件u_3,事件號(hào)為pbm_keydown,當(dāng)焦點(diǎn)落在該焦點(diǎn)時(shí),按任意鍵都將觸發(fā)u_3。給u_3編寫代碼: </p><p> if keydown(keyenter!) then</p><p> w_admin.tab_1.tabpage_1.cb_3
124、.event clicked()</p><p><b> end if</b></p><p> ?。?0)給插入記錄的命令按鈕cb_4的clicked事件編寫代碼:</p><p><b> long row</b></p><p> row=w_admin.tab_1.tabpage_1
125、.dw_1.insertrow(dw_1.getrow())</p><p> w_admin.tab_1.tabpage_1.dw_1.setrow(row)</p><p> w_admin.tab_1.tabpage_1.dw_1.scrolltorow(row)</p><p> w_admin.tab_1.tabpage_1.dw_1.setfocu
126、s()</p><p> (11)給cb_4定義一個(gè)用戶事件u_4,事件號(hào)為pbm_keydown,當(dāng)焦點(diǎn)落在該焦點(diǎn)時(shí),按任意鍵都將觸發(fā)u_4。給u_4編寫代碼:</p><p> if keydown(keyenter!) then</p><p> w_admin.tab_1.tabpage_1.cb_4.triggerevent (clicked!)&l
127、t;/p><p> end if </p><p> (12) 給顯示記錄的命令按鈕cb_5的clicked事件編寫代碼:</p><p> w_admin.tab_1.tabpage_1.dw_1.retrieve()</p><p> (13)給cb_5定義一個(gè)用戶事件u_5,事件號(hào)為pbm_keydown,當(dāng)焦點(diǎn)落在該焦點(diǎn)時(shí)
128、,按任意鍵都將觸發(fā)u_5。給u_5編寫代碼:</p><p> if keydown(keyenter!) then</p><p> w_admin.tab_1.tabpage_1.cb_5.event clicked()</p><p><b> end if</b></p><p> 編寫tab_1.tab
129、page_2(教師管理)中的代碼:</p><p> ?。?)給tab_1.tabpage_2的constructor中的腳本為:</p><p> w_admin.tab_1.tabpage_2.dw_2.settransobject(sqlca)</p><p> w_admin.tab_1.tabpage_2.dw_2.retrieve() </p&
130、gt;<p> ?。?)給添加記錄的命令按鈕cb_8的clicked事件編寫代碼:</p><p><b> long row</b></p><p> row=w_admin.tab_1.tabpage_2.dw_2.insertrow(0)</p><p> w_admin.tab_1.tabpage_2.dw_2.se
131、trow(row)</p><p> w_admin.tab_1.tabpage_2.dw_2.scrolltorow(row)</p><p> w_admin.tab_1.tabpage_2.dw_2.setfocus() </p><p> ?。?)給更新記錄的命令按鈕cb_10的clicked事件編寫代碼:</p><p>
132、w_admin.tab_1.tabpage_2.dw_2.update()</p><p> w_admin.tab_1.tabpage_2.dw_2.reset()</p><p> ?。?)給刪除記錄的命令按鈕cb_11的clicked事件編寫代碼:</p><p> w_admin.tab_1.tabpage_2.dw_2.deleterow(dw_2.g
133、etrow())</p><p> ?。?)給插入記錄的命令按鈕cb_9的clicked事件編寫代碼:</p><p><b> long row</b></p><p> row=w_admin.tab_1.tabpage_2.dw_2.insertrow(dw_2.getrow())</p><p> w_ad
134、min.tab_1.tabpage_2.dw_2.setrow(row)</p><p> w_admin.tab_1.tabpage_2.dw_2.scrolltorow(row)</p><p> w_admin.tab_1.tabpage_2.dw_2.setfocus() </p><p> (6) 給顯示記錄的命令按鈕cb_6的clicked事件編寫
135、代碼:</p><p> w_admin.tab_1.tabpage_2.dw_2.retrieve()</p><p> 編寫tab_1.tabpage_3(學(xué)生管理)中的代碼:</p><p> ?。?)給tab_1.tabpage_3的constructor中的腳本為:</p><p> w_admin.tab_1.tabpage
136、_3.dw_3.settransobject(sqlca)</p><p> w_admin.tab_1.tabpage_3.dw_3.retrieve() </p><p> ?。?)給添加記錄的命令按鈕cb_13的clicked事件編寫代碼:</p><p><b> long row</b></p><p>
137、 row=w_admin.tab_1.tabpage_3.dw_3.insertrow(0)</p><p> w_admin.tab_1.tabpage_3.dw_3.setrow(row)</p><p> w_admin.tab_1.tabpage_3.dw_3.scrolltorow(row)</p><p> w_admin.tab_1.tabpag
138、e_3.dw_3.setfocus() </p><p> ?。?)給更新記錄的命令按鈕cb_15的clicked事件編寫代碼:</p><p> w_admin.tab_1.tabpage_3.dw_3.update()</p><p> w_admin.tab_1.tabpage_3.dw_3.reset()</p><p> ?。?/p>
139、4)給刪除記錄的命令按鈕cb_16的clicked事件編寫代碼:</p><p> w_admin.tab_1.tabpage_3.dw_3.deleterow(dw_3.getrow())</p><p> ?。?)給插入記錄的命令按鈕cb_14的clicked事件編寫代碼:</p><p><b> long row</b></p
140、><p> row=w_admin.tab_1.tabpage_3.dw_3.insertrow(dw_3.getrow())</p><p> w_admin.tab_1.tabpage_3.dw_3.setrow(row)</p><p> w_admin.tab_1.tabpage_3.dw_3.scrolltorow(row)</p><
141、;p> w_admin.tab_1.tabpage_3.dw_3.setfocus() </p><p> (6) 給顯示記錄的命令按鈕cb_12的clicked事件編寫代碼:</p><p> w_admin.tab_1.tabpage_3.dw_3.retrieve()</p><p> 編寫tab_1.tabpage_4(課程管理)中的代碼:&l
溫馨提示
- 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. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)
- 課程設(shè)計(jì)——學(xué)生成績(jī)管理系統(tǒng)
- 課程設(shè)計(jì)---學(xué)生成績(jī)管理系統(tǒng)
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)
- 學(xué)生成績(jī)管理系統(tǒng) 課程設(shè)計(jì)
- 課程設(shè)計(jì)--學(xué)生成績(jī)管理系統(tǒng)
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)
- 課程設(shè)計(jì)-- 學(xué)生成績(jī)管理系統(tǒng)
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)9
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)10
- vfp課程設(shè)計(jì)--- 學(xué)生成績(jī)管理系統(tǒng)
- java課程設(shè)計(jì)--學(xué)生成績(jī)管理系統(tǒng)
- vfp課程設(shè)計(jì)--學(xué)生成績(jī)管理系統(tǒng)
- 學(xué)生成績(jī)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- vb課程設(shè)計(jì)---學(xué)生成績(jī)管理系統(tǒng)
- vb課程設(shè)計(jì)----學(xué)生成績(jī)管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論