學生成績管理系統(tǒng)pb課程設計_第1頁
已閱讀1頁,還剩39頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  PB課程設計</b></p><p><b>  學</b></p><p><b>  生</b></p><p><b>  成</b></p><p><b>  績</b></p>

2、<p><b>  管</b></p><p><b>  理</b></p><p><b>  系</b></p><p><b>  統(tǒng)</b></p><p><b>  學 號:</b></p>

3、<p><b>  姓 名:</b></p><p><b>  指導老師: </b></p><p><b>  引言</b></p><p>  Powerbuilder 是目前最有代表性的數(shù)據(jù)庫前端開發(fā)工具之一。它具有強大的數(shù)據(jù)庫管理功能,以特有的數(shù)據(jù)窗口技術和簡單易用功能強大

4、的powerscript語言滿足了快速開發(fā)和實施的需要。</p><p>  在這個學期學習的powerbuilder結合數(shù)據(jù)庫原理進行了本系統(tǒng)的設計,本系統(tǒng)為學生成績管理系統(tǒng),制作了一個小型的系統(tǒng),實現(xiàn)了基本的學生成績管理功能,在實踐中進一步理解和掌握了數(shù)據(jù)庫技術,并使所學的知識有一定的應用價值。</p><p>  學生成績管理系統(tǒng)能夠有效運行,從而完成自動,高效,科學的學生和老師信息

5、的輸入和維護,以及老師對學生成績的錄入。系統(tǒng)開發(fā)的總體任務是實現(xiàn)學生成績管理的系統(tǒng)化,規(guī)范化和自動化,同時這是對學完powerbuilder之后開發(fā)的第一次完整實踐。</p><p>  本學生成績管理系統(tǒng)主要包括三大模塊:</p><p>  一、管理員模塊,管理員可對教師和學生的基本信息進行輸入和維護,對學校課程進行錄入、修改,對學生成績的查看等。</p><p&g

6、t;  二、教師模塊,教師可查看自己的基本信息,以及對錄入學生成績和登陸密碼的修改等。</p><p>  三、學生模塊,學生可查看自己的基本信息、課表,以及選課、退課和修改登陸密碼等。</p><p>  本系統(tǒng)中,基本滿足對學生成績的管理,沒有對學生成績進行統(tǒng)計分析。通過做這次的學生成績管理系統(tǒng),自己受益匪淺,由于水平有限,不當之處在所難免,懇請老師批評指正。</p>&

7、lt;p><b>  目錄</b></p><p>  一、系統(tǒng)分析與設計1</p><p>  1.1 系統(tǒng)功能分析1</p><p>  1.2 系統(tǒng)功能模塊設計1</p><p>  二、數(shù)據(jù)庫設計與實現(xiàn)4</p><p>  2.1 數(shù)據(jù)庫設計4</p>&l

8、t;p>  2.2 創(chuàng)建數(shù)據(jù)庫4</p><p>  2.3 創(chuàng)建應用7</p><p>  2.4 創(chuàng)建窗口8</p><p>  2.4.1創(chuàng)建登陸窗口8</p><p>  2.4.2創(chuàng)建學生窗口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)建學生選單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)建學生數(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 小結34</b></p><p><b>  三、使用說明34</b></p><p>  3.1 學生模塊使用說明34</p><p>  3

11、.2 教師模塊使用說明34</p><p>  3.3 管理員模塊使用說明35</p><p>  3.4 登陸模塊使用說明35</p><p>  四、系統(tǒng)優(yōu)缺點分析35</p><p>  4.1優(yōu)點分析35</p><p>  4.2 缺點分析35</p><p>  五、 心

12、得體會35</p><p>  六、 參考文獻35</p><p><b>  系統(tǒng)分析和設計</b></p><p>  學生成績管理是學校教務管理的重要環(huán)節(jié)之一。近年來,隨著高校的不斷擴招,學生人數(shù)越來越多,學生成績管理的任務更加繁重,必須借助現(xiàn)代化的管理工具和手段提高學生成績管理效率。學生成績管理系統(tǒng)廣泛應用于高校教務管理部門的學生成

13、績管理,其作用和功能也是學生比較熟悉和容易理解的。</p><p>  一個應用系統(tǒng)的開發(fā)過程包括分析、設計、實現(xiàn)、調試和發(fā)布等階段。以下是分析說明。</p><p><b>  系統(tǒng)功能分析</b></p><p>  本系統(tǒng)可以實現(xiàn)的功能主要包括以下幾點:</p><p>  管理員對學生基本信息的輸入和維護,包括學

14、號、姓名、性別、專業(yè)、總學分等。</p><p>  管理員對教師基本信息的輸入和維護,包括職工號、姓名、年齡、性別、所授的課程號等。</p><p>  管理員對用戶權限的設置,包括用戶名、密碼、和登陸權限等。</p><p>  管理員對課程信息的輸入和修改,包括課程號、課程名、開課學期、學時、學分等。</p><p>  管理員對學生成

15、績的查詢等。</p><p>  教師對學生成績的錄入以及登陸密碼的修改等。</p><p>  學生對自己基本信息、課表和成績查詢,快速選課,修改登陸密碼等。</p><p><b>  系統(tǒng)功能模塊設計</b></p><p>  通過對上述功能的分析、分類、綜合,按照模塊化程序設計的要求,得到如圖</p>

16、;<p>  2-1所示的功能模塊圖。</p><p><b>  圖2-1</b></p><p><b>  數(shù)據(jù)庫設計與實現(xiàn)</b></p><p>  數(shù)據(jù)庫在學生成績管理系統(tǒng)中占有非常重要的地位,數(shù)據(jù)庫結構的好壞將直接影響到應用系統(tǒng)操作效率已經(jīng)能否保證數(shù)據(jù)的一致性、完成性和安全性。</p>

17、;<p><b>  2.1 數(shù)據(jù)庫設計</b></p><p>  根據(jù)學生成績管理系統(tǒng)的功能要求,通過分析系統(tǒng)要設計的相關實體一集要收集、存儲和操縱數(shù)據(jù)信息,得到如下圖所示的系統(tǒng)E-R圖。</p><p><b>  關系模式如下:</b></p><p>  學生基本信息(學號,姓名,性別,專業(yè),總學分

18、)</p><p>  教師基本信息(職工號,姓名,年齡,性別,所授課程)</p><p>  課程(課程號,課程名,開課學期,學時,學分)</p><p>  成績(學號,課程號,成績,所獲學分)</p><p>  用戶(用戶賬號,密碼,權限)</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盤根目錄下建立本實例的工作文件夾“workspace”再在”E:\workspace”文件夾下建立文件夾”data”,用于存儲數(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ù)如圖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.“學生”表</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.“成績”表</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)建應用</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)建新的應用,打開new,選擇“target”頁中的應用“Application”,單擊ok,彈出保存文件對話框,選擇到新建的目錄E:\workspace,輸入文件名為“project”,單擊finish,具體如圖8-1:</p><p><b>  圖8-1</b></p><p>  創(chuà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,點擊window,然后單擊ok,窗口如下:</p><p>  保存窗口為“w_load”。</p><p>  2.添加控件并設置屬性</p><p>  在窗口上放置1個圖片控件,5個靜態(tài)文本控件,2個單行編輯控件,1個</p><p><b>  圖9-1</b></p><p

33、>  下拉列表控件,2個按鈕控件,各個控件的位置和大小如圖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>  (2)定義實例變量</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> ?。?)在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","用戶名不能為空,請輸入!")</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","用戶名不存在,請重新輸入!")</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","密碼不能為空,請輸入!")</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","密碼錯誤,請重新輸入!")</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","用戶類型不匹配,請重新選擇!")</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 "學生"</b></p><p>  open(w_student)</p>

51、;<p>  close(w_load)</p><p>  end choose</p><p><b>  end if</b></p><p> ?。?)給cb_1定義一個用戶事件u_keydown,事件號為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定義一個用戶事件u_2,事件號為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)建學生窗口<

54、;/p><p>  1 創(chuàng)建窗口,命名為“w_student”:</p><p><b>  圖11-1</b></p><p><b> ?。?)添加控件</b></p><p>  在窗口上放置一個數(shù)據(jù)窗口控件,一個選單,如圖11-1</p><p>  創(chuàng)建學生快速選課窗口

55、</p><p>  創(chuàng)建學生選課窗口命名為“w_ksxk”;</p><p><b>  圖12-1</b></p><p><b>  添加控件</b></p><p>  在窗口上放置一個數(shù)據(jù)窗口控件,2個靜態(tài)文本控件,1個單行編輯文本控件,三個按鈕控件,給數(shù)據(jù)窗口控件添加個數(shù)據(jù)窗口對象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","選課失敗:此課程不是可選課程或已被選,請檢查!")</p><p>  sle_1.setfocus()</p><p>  sle_1.selecttext(1,len(m))</p><p><b>  else&l

59、t;/b></p><p>  messagebox("選課成功","你已成功選定課程號"+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)建學生退課窗口,命名為“w_tuike”:&

61、lt;/p><p><b>  圖13-1</b></p><p><b> ?。?)添加控件</b></p><p>  在窗口上放置一個數(shù)據(jù)窗口控件,2個靜態(tài)文本控件,1個單行編輯文本控件,三個按鈕控件,給數(shù)據(jù)窗口控件添加個數(shù)據(jù)窗口對象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","課程表中沒有此課程,請重新輸入!")</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、"你已成功退選課程號"+m)</p><p>  w_tuike.dw_1.retrieve(qj_id)</p><p>  sle_1.text=""</p><p><b>  end if</b></p><p> ?。?)在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>  (1)創(chuàng)建學生登錄密碼修改窗口,命名為“w_password”:</p>

68、<p><b>  圖14-1</b></p><p><b>  添加控件</b></p><p>  在窗口上放置2個靜態(tài)文本框控件,1個單行編輯控件,2個按鈕控件。如圖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("提示","新密碼為空或長度大于10,請檢查!")</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

72、uot;+l)</p><p>  close(w_password)</p><p><b>  else</b></p><p>  messagebox("提示","密碼修改失敗:~n長度過長或有特殊字符!")</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個數(shù)據(jù)窗口控件,給數(shù)據(jù)窗口控件添加一個數(shù)據(jù)窗口對 象。如圖16-1.</p><p> ?。?) 在w_teacher的open事件中的腳本為:</p><p>  dw_1.settransobject(sqlca)</p><p>  dw_1.retrieve(qj_id)</p>&

76、lt;p>  2創(chuàng)建進入錄入學生成績窗口,命名為“w_srkch”:</p><p><b>  圖16-2</b></p><p> ?。?)窗口上放置1個靜態(tài)文本框控件,一個單行編輯框控件,2個按鈕控件。如圖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","你輸入的課程號不在你的授課范圍!請重新輸入!")</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)建錄入成績窗口,

81、命名為“w_lrcj”</p><p><b>  圖17-1</b></p><p>  在窗口上放置2個靜態(tài)文本框控件,2個單行編輯框控件,3個按鈕控件。如圖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","學號格式不正確,請重新輸入!")</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("你沒有權限錄入","此學生沒有選擇此門課程")</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","學號或成績不能為空")</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("成功","學號&

92、quot;+s_xh+"的成績已錄入!")</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("成功","學號"+s_xh+"的成績已錄入!")</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","此學生此門課成績已存在,不能重復錄入!")</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","錄入成績格式錯誤,請檢查!")</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)建查詢成績窗口<

98、/b></p><p>  創(chuàng)建查詢成績窗口,命名為“w_tcj”</p><p><b>  圖19-1</b></p><p>  在窗口上放置1個靜態(tài)文本框按鈕,1個單行編輯框控件,2個按鈕控件。如圖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","你的輸入有誤!請重新輸入!")</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>  (2)添加控件</b></p><p>  在窗口上放置2個靜態(tài)文本框控件,1個單行編輯控件,2個按鈕控件。如圖20-1.</p><p> ?。?)在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;新密碼為空或長度大于10,請檢查!")</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("提示","密碼修改成功!請記住新密碼:"+l)</p><p>  c

108、lose(w_password)</p><p><b>  else</b></p><p>  messagebox("提示","密碼修改失敗:~n長度過長或有特殊字符!")</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個按鈕控件和1個選項卡控件,在選項卡上創(chuàng)

111、建5個子選項,每個子選項上添加1個數(shù)據(jù)窗口控件,和5個按鈕控件。如圖21-2</p><p>  編寫tab_1.tabpage_1(用戶管理)中的代碼:</p><p>  (1)給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定義一個用戶事件u_key,事件號為pbm_dwnprocessenter,當焦點落在該控件時,按回車將觸發(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> ?。?)給tab_1.tabpage_1.dw_1定義一個用戶事件u_keyarrow,事件號為pbm_dwntabdownout,當焦點落在該控件時,按回車將觸發(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定義一個用戶事件u_1,事件號為pbm_keydown,當焦點落在該焦點時,按任意鍵都將觸發(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> ?。?)給更新記錄的命令按鈕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定義一個用戶事件u_2,事件號為pbm_keydown,當焦點落在該焦點時,按任意鍵都將觸發(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>  (8)給刪除記錄的命令按鈕cb_3的clicked事件編寫代碼:</p><p>  w_admin.tab_1.tabpage_1.dw_1.delet

123、erow(dw_1.getrow())</p><p> ?。?)給cb_3定義一個用戶事件u_3,事件號為pbm_keydown,當焦點落在該焦點時,按任意鍵都將觸發(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> ?。?1)給cb_4定義一個用戶事件u_4,事件號為pbm_keydown,當焦點落在該焦點時,按任意鍵都將觸發(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> ?。?3)給cb_5定義一個用戶事件u_5,事件號為pbm_keydown,當焦點落在該焦點時

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>  (5)給插入記錄的命令按鈕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(學生管理)中的代碼:</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>  (3)給更新記錄的命令按鈕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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論