數(shù)據(jù)庫選課管理系統(tǒng)課程設計_第1頁
已閱讀1頁,還剩84頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  學 生 選 課 管 理 系 統(tǒng)</p><p><b>  設</b></p><p><b>  計</b></p><p><b>  報</b></p><p><b>  告</b></p><p> 

2、 課題:學生選課管理系統(tǒng)</p><p><b>  一.概要分析</b></p><p>  數(shù)據(jù)庫設計是指對于一個給定的應用環(huán)境,構(gòu)造最優(yōu)的數(shù)據(jù)庫模式。</p><p>  1.數(shù)據(jù)庫設計的目標</p><p>  目標是在DBMS支持下,按照應用的要求,為某一應用設計一個結(jié)構(gòu)合理、使用方便、效率較高的數(shù)據(jù)庫及其應用

3、系統(tǒng)。</p><p>  2.數(shù)據(jù)庫設計的特點</p><p>  ·數(shù)據(jù)庫建設是硬件、軟件和干件的結(jié)合。</p><p>  ·數(shù)據(jù)庫設計過程是結(jié)構(gòu)設計和行為設計的密切結(jié)合。</p><p>  3.數(shù)據(jù)庫設計的過程</p><p>  需求分析階段:可行性分析報告</p><

4、;p>  系統(tǒng)需求 用戶的需求具體體現(xiàn)在選課信息和用戶信息的提供、保存、更新和查詢的方面。這就要求數(shù)據(jù)庫的設計必須合理,使之能夠充分滿足各種信息的輸入和輸出,保證數(shù)據(jù)存儲的可靠性,并且能夠快速取出和存入。而前臺顯示部分,應具有人性化的界面,方便用戶操作。</p><p><b>  功能需求</b></p><p>  概念模型設計階段:ER模型</p

5、><p><b>  局部概念模式設計</b></p><p><b>  步驟:</b></p><p>  ·選擇局部應用:選擇一個適當層次的數(shù)據(jù)流圖。</p><p>  ·逐一設計局部ER模型:定義實體、聯(lián)系、分配屬性、確定實體標識符。</p><p>

6、;<b>  全局概念模式設計</b></p><p><b>  步驟:</b></p><p>  ·合并:集成為一個整體的數(shù)據(jù)概念模型即全局ER模型。</p><p>  ·消除沖突:屬性沖突、命名沖突、結(jié)構(gòu)沖突。</p><p><b>  優(yōu)化</b&g

7、t;</p><p>  ·消除冗余:合并相關(guān)類型實體,消除冗余屬性、冗余聯(lián)系。</p><p>  ·消除冗余的方法:數(shù)據(jù)字典中數(shù)據(jù)項間邏輯關(guān)系的說明,規(guī)范化理論。</p><p>  邏輯模型設計階段:關(guān)系模型</p><p>  ER模型向關(guān)系模型的轉(zhuǎn)換 </p><p>  學生

8、(學號,姓名,性別,班級,出生日期,地址,電話,email)</p><p>  課程(課程號,課程名 ,學分) </p><p>  選課(課程號,學號,成績)</p><p>  數(shù)據(jù)模型的優(yōu)化和規(guī)范處理</p><p>  數(shù)據(jù)庫物理設計階段:數(shù)據(jù)庫</p><p>  數(shù)據(jù)庫實施階段:程序調(diào)試</p>

9、;<p>  數(shù)據(jù)庫運行和維護階段:程序運行</p><p><b>  二.數(shù)據(jù)庫設計</b></p><p>  使用工具:SQL Server 2000</p><p>  目的要求:掌握SQL Server 2000數(shù)據(jù)庫、表的創(chuàng)建</p><p><b>  操作步驟:</b>

10、;</p><p><b>  1.建立數(shù)據(jù)庫</b></p><p>  啟動數(shù)據(jù)庫服務管理器。</p><p><b>  啟動企業(yè)管理器。</b></p><p>  以登錄賬戶sa注冊數(shù)據(jù)庫服務器“59.74.104.180”,密碼為sa。</p><p>  使用S

11、QL-EM:SQL-EM→數(shù)據(jù)庫→右鍵→新建數(shù)據(jù)庫:數(shù)據(jù)庫名xx1420,設計數(shù)據(jù)庫文件 .MDF和 .ndf 文件</p><p><b>  2.建立表結(jié)構(gòu)</b></p><p>  啟動數(shù)據(jù)庫服務管理器。</p><p><b>  啟動企業(yè)管理器。</b></p><p>  以登

12、錄賬戶sa注冊數(shù)據(jù)庫服務器“59.74.104.180”,密碼為zzj。</p><p>  在“xx1420”數(shù)據(jù)庫中創(chuàng)建學生表,表名為“xx1420_29_s”,包括列:sno、char(4),class、char(20),sname、char(8),sex、char(2),birthday、datatime,address、varchar(50),telephone、char(20),email、char(

13、40)。其中,sno為主鍵,要求class、sname非空,sex默認值為“男”,email惟一完整性約束。</p><p>  在“xx1420”數(shù)據(jù)庫中創(chuàng)建課程表,表名為“xx1420_29_c”,包括列:cno、char(4),cname、char(20),credit、tinyint。其中,cno為主鍵。</p><p>  在“xx1420”數(shù)據(jù)庫中創(chuàng)建選課表,表名為“xx142

14、0_29_sc”,包括列:sno、char(4),cno、char(4),score、smallint。其中,sno、cno為主鍵。</p><p>  在“xx1420”數(shù)據(jù)庫中創(chuàng)建選課表,表名為“xx1420_29_u”,包括列:uno、char(10),uname、char(10),password、char(6),u、tinyint,s、tinyint,c、tinyint,sc、tinyint。其中,sn

15、o、cno為主鍵。</p><p>  在“xx1420”數(shù)據(jù)庫中創(chuàng)建選課表,表名為“xx1420_29_tj”,包括列:cno、char(4),fsd、char(10),rs、smallint。其中,sno、cno為主鍵。</p><p>  新建數(shù)據(jù)庫關(guān)系圖,指定選課表sno為外鍵參照學生表的sno,指定選課表cno為外鍵參照課程表的cno,數(shù)據(jù)庫關(guān)系圖名要求為“xx1420_29”。

16、</p><p>  啟動查詢分析器,使用insert語句將表s、c、sc中的數(shù)據(jù)分別插入表“xx1420_29_s”、“xx1420_29_c”、“xx1420_29_sc”。</p><p>  SELECT * FROM s INTO xx1420_29_s</p><p>  SELECT * FROM c INTO xx1420_29_c</p>

17、;<p>  SELECT * FROM sc INTO xx1420_29_sc</p><p>  創(chuàng)建登錄賬戶“xx1420_29”,密碼自行設定。</p><p>  將登錄賬戶“xx1420_29”指定為“xx1420”數(shù)據(jù)庫用戶。</p><p>  設置數(shù)據(jù)庫用戶“xx1420_29”對表“xx1420_29_s”、“xx1420_29_

18、c”、“xx1420_29_sc”的select、insert、delete、update權(quán)限。</p><p>  刪除注冊的數(shù)據(jù)庫服務器,以登錄賬戶“xx1420_29”注冊數(shù)據(jù)庫服務器,測試其權(quán)限。</p><p><b>  三.軟件設計</b></p><p>  使用工具:PowerBuilder 9.0</p>&l

19、t;p>  目的要求:掌握PowerScript程序設計方法</p><p><b>  操作步驟:</b></p><p>  1. 創(chuàng)建應用程序并連接數(shù)據(jù)庫</p><p>  啟動數(shù)據(jù)庫服務管理器。</p><p><b>  注冊數(shù)據(jù)庫服務器:</b></p><p

20、>  服務器名 59.74.104.180</p><p>  用戶名 sa 密碼 sa</p><p>  啟動PowerBuilder 9.0</p><p>  開始→程序→Sybase→PowerBuilder 9.0→PowerBuilder 9.0</p><p>  創(chuàng)建工作區(qū),工作區(qū)名為“xx1420

21、_29” </p><p>  File→New→Workspace:xx1420_29</p><p>  創(chuàng)建應用對象、應用庫和目標,應用對象、應用庫及目標名均為“xx1420_29”,并存放在D盤“xx1420_29”文件夾中。</p><p>  工作區(qū)→右鍵→New→Target→Application:應用對象名xx1420_29、目標名xx1420_2

22、9、應用庫名xx1420_29</p><p><b>  創(chuàng)建數(shù)據(jù)庫配置。</b></p><p><b>  連接數(shù)據(jù)庫服務器。</b></p><p>  將數(shù)據(jù)庫配置代碼復制到應用對象Open事件中。</p><p>  Profile Name→右鍵→Properties→Preview:

23、copy</p><p>  應用對象名→右鍵→Edit→open事件:Ctrl+V</p><p>  然后使用嵌入式SQL語句CONNECT建立連接,書寫腳本:</p><p>  connect using sqlca;</p><p>  if sqlca.sqlcode=-1 then</p><p>  m

24、essagebox(”xx1420_29警告”,”連接失敗!”)</p><p><b>  return</b></p><p><b>  else</b></p><p>  messagebox(”xx1420_29提示”,”連接成功!”)</p><p><b>  end if

25、</b></p><p>  編寫連接數(shù)據(jù)庫以及顯示連接數(shù)據(jù)庫結(jié)果的腳本, messagebox對話框標題為“xx1420_29”。</p><p><b>  運行應用程序。</b></p><p>  2. 主窗口和主菜單設計</p><p>  啟動PowerBuilder 9.0,打開工作區(qū),配置并連

26、接數(shù)據(jù)庫。</p><p><b>  創(chuàng)建登錄窗口</b></p><p>  (File→)New→PB Object→Window→保存:通常窗口命名為“w_<窗口名>”。</p><p><b>  設計登錄窗口。</b></p><p><b>  I 窗口的構(gòu)成:&

27、lt;/b></p><p><b>  使用控件:</b></p><p>  圖片按鈕“p_1“——圖片xx1420_29.JPEG</p><p>  靜態(tài)文本”st_”——賬號、密碼;</p><p>  單行編輯框“sle_1, sle_2“——賬號和密碼輸入框</p><p> 

28、 命令按鈕“cb_“——確定、退出</p><p><b>  屬性:</b></p><p>  p_1 PictureName下拉列表中指定圖片為“文件路徑\xx1420_29.JPG ”</p><p>  sle_1,sle_2 password屬性 </p><p><b>  事件:</

29、b></p><p><b>  設置全局變量</b></p><p>  string g_uno</p><p><b>  設置實例變量</b></p><p><b>  Int i_n=0</b></p><p>  “確定”按鈕觸發(fā)事件

30、腳本</p><p>  select uno into:g_uno</p><p>  from xx1420_29_u</p><p>  where uno=:sle_1.text and password=:sle_2.text;</p><p><b>  i_n=i_n+1</b></p>&l

31、t;p>  if sqlca.sqlcode=0 then</p><p>  open(w_main)</p><p>  close(parent)</p><p>  elseif i_n=3 then</p><p>  messagebox("xx1420_29","對不起您是非法用戶!"

32、;)</p><p>  close(parent)</p><p><b>  else</b></p><p>  messagebox("xx1420_29","賬號或密碼錯誤,請重新輸入!")</p><p>  sle_1.text=""</p&

33、gt;<p>  sle_2.text=""</p><p><b>  end if</b></p><p>  “退出”按鈕觸發(fā)事件腳本</p><p>  close(parent)</p><p>  修改應用對象腳本,將應用對象與登錄窗口連接。</p><p

34、>  // Profile xx1420_29</p><p>  SQLCA.DBMS = "MSS Microsoft SQL Server"</p><p>  SQLCA.Database = "xx1420"</p><p>  SQLCA.LogPass = "123456"</p&

35、gt;<p>  SQLCA.ServerName = "59.74.104.180"</p><p>  SQLCA.LogId = "xx1420_29"</p><p>  SQLCA.AutoCommit = False</p><p>  SQLCA.DBParm = ""</

36、p><p>  connect using SQLCA;</p><p>  if SQLCA.SQLCode=-1 THEN</p><p>  MessageBox("xx1420_29","連接失??!")</p><p><b>  return</b></p>&

37、lt;p><b>  end if</b></p><p>  open(w_login)</p><p><b>  運行應用程序。</b></p><p><b>  菜單的創(chuàng)建</b></p><p><b>  創(chuàng)建菜單</b></p&

38、gt;<p>  (File→)New→PB Object→Menu:右擊Untitled,Insert Submenu Item建菜單項,右擊菜單,Insert Submenu Item建命令項,通常菜單命名為“m_<菜單名>”。</p><p><b>  修改菜單</b></p><p>  指定窗口→單擊右鍵→Edit 或 雙擊指定菜

39、單。</p><p><b>  刪除</b></p><p>  指定菜單→單擊右鍵→Delete。</p><p><b>  設計主菜單。</b></p><p><b>  菜單的屬性:</b></p><p><b>  定義菜單外觀

40、</b></p><p>  General選項卡:Name(名稱)、MicroHelp(微幫助)、Enabled(可用性)等。</p><p><b>  定義菜單項快捷鍵</b></p><p>  General選項卡:Shortcut key(快捷鍵,包括組合鍵:Alt、Ctrl、Shift)。</p><

41、;p>  定義菜單工具欄中 修改密碼、幫助、退出系統(tǒng)的顯示圖片</p><p>  Toolbar選項卡:ToolBarItemText(指向該圖標時文字提示)、ToolBarItemName(圖標所顯示圖片)、ToolBarItemDownName(按住圖標所顯示圖片)、ToolBarItemOrder(圖標在工具欄中位置)等。</p><p>  設計主窗口并捆綁主菜單。<

42、/p><p>  創(chuàng)建窗口w_main,在“MenuName”框中指定捆綁的菜單名m_main,在“WindowType”下拉列表選中 “mdihelp!”,在“WindowState”下拉列表選中“maximized!”。</p><p>  編寫主菜單菜單項“退出”腳本。.</p><p>  close(parent)</p><p>  

43、編寫登錄窗口clicked事件腳本,將登錄窗口與主窗口連接。</p><p><b>  運行應用程序。</b></p><p>  3.系統(tǒng)維護菜單各項的設計與實現(xiàn)</p><p><b> ?。?)修改密碼項</b></p><p>  1.1修改密碼窗口設計</p><p&

44、gt;<b>  1.2事件腳本</b></p><p><b>  確定腳本</b></p><p><b>  int ret</b></p><p>  SELECT uno INTO :g_uno FROM xx1420_29_u WHERE uno=:g_uno and password=:

45、sle_1.text;</p><p>  IF SQLCA.SQLCode=0 THEN</p><p>  IF sle_2.text=sle_3.text THEN</p><p>  UPDATE xx1420_29_u SET password=:sle_2.text WHERE uno=:g_uno;</p><p>  COMM

46、IT USING SQLCA;</p><p>  MessageBox("xx1420_29","保存成功!")</p><p>  Close(PARENT)</p><p><b>  RETURN</b></p><p><b>  ELSE </b>

47、</p><p>  ret=MessageBox("xx1420_29","新密碼有誤,繼續(xù)嗎?",Question!,YesNo!,2)</p><p>  IF ret=1 THEN</p><p>  sle_1.text=""</p><p>  sle_2.text=&q

48、uot;"</p><p>  sle_3.text=""</p><p><b>  ELSE</b></p><p>  Close(PARENT)</p><p><b>  RETURN</b></p><p><b>  EN

49、D IF</b></p><p><b>  END IF</b></p><p><b>  ELSE</b></p><p>  ret=MessageBox("xx1420_29","舊密碼有誤,繼續(xù)嗎?",Question!,YesNo!,2)</p>

50、<p>  IF ret=1 THEN</p><p>  sle_1.text=""</p><p>  sle_2.text=""</p><p>  sle_3.text=""</p><p><b>  ELSE</b></p>

51、<p>  Close(PARENT)</p><p><b>  RETURN</b></p><p><b>  END IF</b></p><p><b>  END IF</b></p><p><b>  關(guān)閉腳本</b><

52、/p><p>  close(parent)</p><p>  “系統(tǒng)維護”菜單標題下“修改密碼”項的觸發(fā)事件腳本</p><p>  Open(w_password)</p><p><b>  1.3運行應用程序</b></p><p><b> ?。?)幫助項</b>&l

53、t;/p><p>  2.1系統(tǒng)幫助窗口設計</p><p><b>  窗口屬性:</b></p><p>  Title中輸入“幫助”,在“WindowType”下拉列表選中 “main!”,在“WindowState”下拉列表選中“normal!”。</p><p>  工具欄—OLE控件,設置“幫助”。</p&

54、gt;<p><b>  2.2 事件腳本</b></p><p>  “系統(tǒng)維護”菜單標題下“幫助”項的觸發(fā)事件腳本</p><p>  Open(w_help)</p><p><b>  2.3運行應用程序</b></p><p><b>  (3)退出系統(tǒng)項</

55、b></p><p>  “系統(tǒng)維護”菜單標題下“退出”項的“關(guān)閉”事件腳本</p><p>  Close(w_main)</p><p>  4. “學生選課管理系統(tǒng)”數(shù)據(jù)窗口的設計與實現(xiàn)</p><p>  <1>“課程管理”菜單欄中的“課程查詢”項</p><p><b>  創(chuàng)建數(shù)

56、據(jù)窗口對象</b></p><p><b>  選擇顯示風格</b></p><p>  (File→)New→DataWindow:選擇顯示Grid風格。</p><p><b>  定義數(shù)據(jù)源</b></p><p><b>  OK:定義數(shù)據(jù)源。</b><

57、;/p><p><b>  控制數(shù)據(jù)</b></p><p>  Next→選擇xx1420_29_c→Open</p><p>  ·選擇列:單擊列名。</p><p>  ·指定排序:單擊Sort選項卡,拖動xx1420_29_c.cno列至右部,復選框Ascending表示升序。</p>

58、<p><b>  保存</b></p><p>  對象名:d_c_locate</p><p><b>  數(shù)據(jù)對象</b></p><p>  設計課程查詢窗口</p><p><b>  創(chuàng)建窗口</b></p><p><

59、;b>  事件腳本:</b></p><p><b>  Open事件腳本</b></p><p>  dw_1.SetTransObject(sqlca)</p><p>  dw_1.Retrieve()</p><p><b>  檢索事件腳本</b></p>

60、<p><b>  string cx</b></p><p>  IF Trim(sle_1.text)="" then</p><p><b>  cx=""</b></p><p><b>  ELSE</b></p><p&

61、gt;  cx="cname like '%"+Trim(sle_1.text)+"%'"</p><p><b>  END IF</b></p><p>  dw_1.SetSort("cno a")</p><p>  dw_1.Sort()</p>

62、<p>  dw_1.SetFilter(cx)</p><p>  dw_1.Filter()</p><p><b>  關(guān)閉事件腳本</b></p><p>  Close(parent)</p><p>  系統(tǒng)主菜單中響應 “課程查詢”窗口的腳本。</p><p>  Ope

63、n(w_c_locate)</p><p><b>  運行應用程序。</b></p><p>  <2>“課程管理”菜單欄中的“課程刪除”項</p><p>  1.創(chuàng)建數(shù)據(jù)窗口對象</p><p><b>  選擇顯示風格</b></p><p>  (Fil

64、e→)New→DataWindow:選擇顯示Grid風格。</p><p>  定義數(shù)據(jù)源SQL select</p><p><b>  OK:定義數(shù)據(jù)源。</b></p><p><b>  控制數(shù)據(jù)</b></p><p>  Next→選擇xx1420_29_c→Open</p>

65、<p>  ·選擇列:單擊列名。</p><p>  ·指定排序:單擊Sort選項卡,拖動xx1420_29_c.cno列至右部,復選框Ascending表示升序。</p><p><b>  保存</b></p><p>  對象名:d_c_delete</p><p><b&g

66、t;  數(shù)據(jù)對象</b></p><p>  設計課程刪除窗口</p><p><b>  創(chuàng)建窗口</b></p><p><b>  事件腳本:</b></p><p><b>  Open事件腳本:</b></p><p>  dw

67、_1.SetTransObject(sqlca)</p><p>  dw_1.Retrieve()</p><p><b>  檢索腳本:</b></p><p><b>  string cx</b></p><p>  cx="cno>='"+sle_1.te

68、xt+"' and cno<='"+sle_2.text+"'"</p><p>  dw_1.SetSort("sno a")</p><p>  dw_1.Sort()</p><p>  dw_1.SetFilter(cx)</p><p>  d

69、w_1.Filter()</p><p><b>  刪除腳本:</b></p><p><b>  long n</b></p><p>  string cno,s</p><p>  cno=dw_1.object.cno[dw_1.GetRow()]</p><p>

70、  select count(*) into :n from xx1420_29_sc where cno=:cno;</p><p>  if n>0 then</p><p>  messagebox("xx1420_29警告","該課程在選課表中已存在,不能刪除!")</p><p><b>  else

71、</b></p><p>  dw_1.deleterow(0)</p><p><b>  end if</b></p><p><b>  確定腳本:</b></p><p>  int ret,ret1</p><p>  IF dw_1.DeletedCo

72、unt()>0 THEN</p><p>  ret=MessageBox("xx1420_29提示","數(shù)據(jù)已更新,是否保存?",Question!,YesNo!)</p><p>  IF ret=1 THEN</p><p>  ret1=dw_1.Update()</p><p>  IF

73、 ret1=1 THEN</p><p>  COMMIT USING SQLCA;</p><p>  MessageBox("xx1420_29提示","保存成功!")</p><p><b>  ELSE</b></p><p>  ROLLBACK USING SQLCA;

74、</p><p>  MessageBox("xx1420_29錯誤","保存失敗!")</p><p><b>  END IF</b></p><p><b>  END IF</b></p><p><b>  END IF</b>

75、</p><p><b>  關(guān)閉腳本:</b></p><p>  Close(PARENT)</p><p>  系統(tǒng)主菜單中響應 “課程刪除”窗口腳本。</p><p>  Open(w_c_delete)</p><p><b>  運行應用程序。</b></p

76、><p>  <3>“課程管理”菜單欄中的“課程修改”項</p><p><b>  創(chuàng)建數(shù)據(jù)窗口對象</b></p><p><b>  選擇顯示風格</b></p><p>  (File→)New→DataWindow:選擇顯示Grid風格。</p><p>&

77、lt;b>  定義數(shù)據(jù)源</b></p><p><b>  OK:定義數(shù)據(jù)源。</b></p><p><b>  控制數(shù)據(jù) </b></p><p>  Next→選擇一個或多個表→Open</p><p>  ·選擇列:單擊列名。</p><p&

78、gt;  ·指定排序:單擊Sort選項卡,拖動xx1420_29_c.cno列至右部,復選框Ascending表示升序。</p><p><b>  保存</b></p><p>  對象名:d_c_edit</p><p><b>  數(shù)據(jù)對象</b></p><p>  設計課程修改窗

79、口</p><p><b>  創(chuàng)建窗口</b></p><p><b>  事件腳本:</b></p><p>  Open事件腳本 :</p><p>  dw_1.SetTransObject(sqlca)</p><p>  dw_1.Retrieve()<

80、/p><p>  closequery事件:</p><p>  int ret,ret1</p><p>  dw_1.AcceptText()</p><p>  IF dw_1.ModifiedCount()>0 THEN</p><p>  ret=MessageBox("xx1420_29提示&q

81、uot;,"數(shù)據(jù)已更新,是否保存?",Question!,YesNoCancel!,3)</p><p>  IF ret=1 THEN</p><p>  ret1=dw_1.Update()</p><p>  IF ret1=1 THEN</p><p>  COMMIT USING SQLCA;</p>

82、<p>  MessageBox("xx1420_29提示","保存成功!")</p><p><b>  ELSE</b></p><p>  ROLLBACK USING SQLCA;</p><p>  MessageBox("xx1420_29錯誤","

83、保存失敗!")</p><p><b>  END IF</b></p><p>  ELSEIF ret=3 THEN</p><p><b>  RETURN 1</b></p><p><b>  END IF</b></p><p>&

84、lt;b>  END IF</b></p><p>  Close(THIS)</p><p><b>  檢索腳本:</b></p><p><b>  string cx</b></p><p>  cx="cno>='"+sle_1.text

85、+"' and cno<='"+sle_2.text+"'"</p><p>  dw_1.SetSort("sno a")</p><p>  dw_1.Sort()</p><p>  dw_1.SetFilter(cx)</p><p>  dw_

86、1.Filter()</p><p><b>  確定腳本:</b></p><p>  int ret,ret1</p><p>  dw_1.AcceptText()</p><p>  IF dw_1.ModifiedCount()>0 THEN</p><p>  ret=Messa

87、geBox("xx1420_29提示","數(shù)據(jù)已更新,是否保存?",Question!,YesNoCancel!,3)</p><p>  IF ret=1 THEN</p><p>  ret1=dw_1.Update()</p><p>  IF ret1=1 THEN</p><p>  COMM

88、IT USING SQLCA;</p><p>  MessageBox("xx1420_29提示","保存成功!")</p><p><b>  ELSE</b></p><p>  ROLLBACK USING SQLCA;</p><p>  MessageBox("

89、;xx1420_29錯誤","保存失敗!")</p><p><b>  END IF</b></p><p>  ELSEIF ret=3 THEN</p><p><b>  RETURN 1</b></p><p><b>  END IF</b&

90、gt;</p><p><b>  END IF</b></p><p><b>  取消腳本:</b></p><p>  dw_1.Retrieve()</p><p><b>  關(guān)閉腳本:</b></p><p>  Close(parent)&

91、lt;/p><p>  系統(tǒng)主菜單中響應 “課程修改”窗口腳本。</p><p>  Open(w_c_edit)</p><p><b>  運行應用程序。</b></p><p>  <4>“課程管理”菜單欄中的“課程增加”項</p><p><b>  創(chuàng)建數(shù)據(jù)窗口對象&l

92、t;/b></p><p><b>  選擇顯示風格</b></p><p>  (File→)New→DataWindow:選擇顯示Grid風格。</p><p><b>  定義數(shù)據(jù)源</b></p><p><b>  OK:定義數(shù)據(jù)源。</b></p>

93、<p><b>  控制數(shù)據(jù)</b></p><p>  Next→選擇一個或多個表→Open</p><p>  ·選擇列:單擊列名。</p><p>  ·指定排序:單擊Sort選項卡,拖動xx1420_29_c.cno列至右部,復選框Ascending表示升序。</p><p>&

94、lt;b>  保存</b></p><p>  對象名:d_c_insert</p><p><b>  數(shù)據(jù)對象</b></p><p>  設計課程增加窗口</p><p><b>  創(chuàng)建窗口</b></p><p><b>  事件腳本

95、:</b></p><p><b>  Open事件腳本:</b></p><p>  dw_1.SetTransObject(sqlca)</p><p>  dw_1.InsertRow(0)</p><p>  closequery事件腳本:</p><p>  int ret,

96、ret1</p><p>  dw_1.AcceptText()</p><p>  IF dw_1.ModifiedCount()>0 THEN</p><p>  ret=MessageBox("xx1420_29提示","數(shù)據(jù)已更新,是否保存?",Question!,YesNoCancel!,3)</p>

97、;<p>  IF ret=1 THEN</p><p>  ret1=dw_1.Update()</p><p>  IF ret1=1 THEN</p><p>  COMMIT USING SQLCA;</p><p>  MessageBox("xx1420_29提示","保存成功!&quo

98、t;)</p><p><b>  ELSE</b></p><p>  ROLLBACK USING SQLCA;</p><p>  MessageBox("xx1420_29錯誤","保存失敗!")</p><p><b>  END IF</b><

99、;/p><p>  ELSEIF ret=3 THEN</p><p><b>  RETURN 1</b></p><p><b>  END IF</b></p><p><b>  END IF</b></p><p><b>  增加腳本:

100、</b></p><p><b>  int i</b></p><p>  i=dw_1.GetRow()</p><p>  dw_1.AcceptText()</p><p>  IF IsNull(dw_1.object.cno[i]) or Trim(dw_1.object.cno[i])=&quo

101、t;" THEN</p><p>  messagebox("xx1420_29警告","課程編號不能為空!")</p><p><b>  ELSE</b></p><p>  dw_1.InsertRow(0)</p><p>  dw_1.ScrollToRow(d

102、w_1.RowCount())</p><p>  dw_1.SetColumn(1)</p><p>  dw_1.SetFocus()</p><p><b>  END IF</b></p><p><b>  確定腳本:</b></p><p>  int ret,r

103、et1</p><p>  dw_1.AcceptText()</p><p>  IF dw_1.ModifiedCount()>0 THEN</p><p>  ret=MessageBox("xx1420_29提示","數(shù)據(jù)已更新,是否保存?",Question!,YesNoCancel!,3)</p>

104、<p>  IF ret=1 THEN</p><p>  ret1=dw_1.Update()</p><p>  IF ret1=1 THEN</p><p>  COMMIT USING SQLCA;</p><p>  MessageBox("xx1420_29提示","保存成功!"

105、;)</p><p><b>  ELSE</b></p><p>  ROLLBACK USING SQLCA;</p><p>  MessageBox("xx1420_29錯誤","保存失敗!")</p><p><b>  END IF</b><

106、/p><p>  ELSEIF ret=3 THEN</p><p><b>  RETURN 1</b></p><p><b>  END IF</b></p><p><b>  END IF</b></p><p><b>  刪除腳本:&

107、lt;/b></p><p>  IF dw_1.RowCount()=1 then</p><p>  dw_1.DeleteRow(0)</p><p>  dw_1.InsertRow(0)</p><p>  dw_1.ScrollToRow(1)</p><p>  dw_1.SetFocus()<

108、;/p><p><b>  ELSE</b></p><p>  dw_1.DeleteRow(0)</p><p>  dw_1.ScrollToRow(dw_1.getrow()-1)</p><p>  dw_1.SetFocus()</p><p><b>  END IF</

109、b></p><p><b>  關(guān)閉腳本:</b></p><p>  Close(PARENT)</p><p><b>  定義實例變量:</b></p><p><b>  Int i_n</b></p><p>  Dw_1的itemch

110、anged</p><p><b>  int i,j</b></p><p>  string cno</p><p><b>  i_n=0</b></p><p>  dw_1.accepttext()</p><p>  IF dw_1.GetColumnName()

111、="cno" THEN</p><p>  j=dw_1.GetRow()</p><p>  cno=dw_1.object.cno[j]</p><p><b>  //檢查表</b></p><p>  SELECT cno INTO :cno FROM xx1420_29_c WHERE c

112、no=:cno;</p><p>  IF sqlca.sqlcode=0 THEN </p><p><b>  i_n=1</b></p><p><b>  RETURN 1</b></p><p><b>  END IF</b></p><p&g

113、t;<b>  //檢查數(shù)據(jù)窗口</b></p><p>  FOR i=1 to dw_1.RowCount()</p><p>  IF i<>j THEN</p><p>  IF Upper(dw_1.object.cno[i])=Upper(cno) THEN</p><p><b>  

114、i_n=2</b></p><p><b>  RETURN 1</b></p><p><b>  END IF</b></p><p><b>  END IF</b></p><p><b>  NEXT</b></p>&

115、lt;p><b>  END IF</b></p><p>  Dw_1的itemerror腳本:</p><p>  IF i_n=1 THEN</p><p>  messagebox("xx1420_29警告","課程編號不能與表中相同!")</p><p>  ELS

116、EIF i_n=2 THEN</p><p>  messagebox("xx1420_29警告","課程編號不能與錄入值相同!")</p><p><b>  END IF</b></p><p>  dw_1.object.cno[dw_1.GetRow()]=""</p&g

117、t;<p><b>  RETURN 1</b></p><p>  系統(tǒng)主菜單中響應 “課程增加”窗口腳本。</p><p>  Open(w_c_insert)</p><p><b>  運行應用程序。</b></p><p>  <5>“課程管理”菜單欄中的“學生查

118、詢”項</p><p><b>  創(chuàng)建數(shù)據(jù)窗口對象</b></p><p><b>  選擇顯示風格</b></p><p>  (File→)New→DataWindow:選擇顯示Grid風格。</p><p><b>  定義數(shù)據(jù)源</b></p><

119、p><b>  OK:定義數(shù)據(jù)源。</b></p><p><b>  控制數(shù)據(jù)</b></p><p>  Next→選擇xx1420_29_s→Open</p><p>  ·選擇列:單擊列名。</p><p>  ·指定排序:單擊Sort選項卡,拖動xx1420_29

120、_s.sno列至右部,復選框Ascending表示升序。</p><p><b>  保存</b></p><p>  對象名:d_s_locate</p><p><b>  數(shù)據(jù)對象</b></p><p>  設計學生查詢窗口</p><p><b>  

121、創(chuàng)建窗口</b></p><p><b>  事件腳本:</b></p><p><b>  Open事件腳本:</b></p><p>  dw_1.SetTransObject(sqlca)</p><p>  dw_1.Retrieve()</p><p>

122、  rb_1.checked=true</p><p><b>  檢索腳本:</b></p><p><b>  string cx</b></p><p>  IF Trim(sle_1.text)="" then</p><p><b>  cx="&q

123、uot;</b></p><p><b>  ELSE</b></p><p>  cx="%"+Trim(sle_1.text)+"%"</p><p>  IF rb_1.checked=TRUE THEN</p><p>  cx="sname like

124、 '"+cx+"'"</p><p>  ELSEIF rb_2.checked=TRUE THEN</p><p>  cx="class like '"+cx+"'"</p><p>  ELSEIF rb_3.checked=TRUE THEN</p&g

125、t;<p>  cx="address like '"+cx+"'"</p><p><b>  END IF</b></p><p><b>  END IF</b></p><p>  dw_1.SetSort("sno a")&

126、lt;/p><p>  dw_1.Sort()</p><p>  dw_1.SetFilter(cx)</p><p>  dw_1.Filter()</p><p><b>  關(guān)閉腳本:</b></p><p>  Close(parent)</p><p>  系統(tǒng)主菜

127、單中響應 “學生查詢”窗口腳本。</p><p>  Open(w_s_locate)</p><p><b>  運行應用程序。</b></p><p>  <6>“學生管理”菜單欄中的“學生刪除”項</p><p><b>  創(chuàng)建數(shù)據(jù)窗口對象</b></p><

128、p><b>  選擇顯示風格</b></p><p>  (File→)New→DataWindow:選擇顯示Grid風格。</p><p><b>  定義數(shù)據(jù)源</b></p><p><b>  OK:定義數(shù)據(jù)源。</b></p><p><b>  控制

129、數(shù)據(jù)</b></p><p>  Next→選擇xx1420_29_s→Open</p><p>  ·選擇列:單擊列名。</p><p>  ·指定排序:單擊Sort選項卡,拖動xx1420_29_s.sno列至右部,復選框Ascending表示升序。</p><p><b>  保存</b&

130、gt;</p><p>  對象名:d_s_delete</p><p><b>  數(shù)據(jù)對象</b></p><p>  同d_s_locate相同</p><p>  設計學生刪除窗口</p><p><b>  創(chuàng)建窗口</b></p><p&g

131、t;<b>  事件腳本:</b></p><p>  Closequery腳本:</p><p>  int ret,ret1</p><p>  IF dw_1.DeletedCount()>0 THEN</p><p>  ret=MessageBox("xx1420_29提示",&quo

132、t;數(shù)據(jù)已更新,是否保存?",Question!,YesNoCancel!,3)</p><p>  IF ret=1 THEN</p><p>  ret1=dw_1.Update()</p><p>  IF ret1=1 THEN</p><p>  COMMIT USING SQLCA;</p><p&g

133、t;  MessageBox("xx1420_29提示","保存成功!")</p><p><b>  ELSE</b></p><p>  ROLLBACK USING SQLCA;</p><p>  MessageBox("xx1420_29錯誤","保存失敗!&quo

134、t;)</p><p><b>  END IF</b></p><p>  ELSEIF ret=3 THEN</p><p><b>  RETURN 1</b></p><p><b>  END IF</b></p><p><b> 

135、 END IF</b></p><p>  Close(THIS)</p><p><b>  Open事件腳本:</b></p><p>  dw_1.SetTransObject(sqlca)</p><p>  dw_1.Retrieve()</p><p><b> 

136、 檢索腳本:</b></p><p><b>  string cx</b></p><p>  cx="sno>='"+sle_1.text+"' and sno<='"+sle_2.text+"'"</p><p>  dw_

137、1.SetSort("sno a")</p><p>  dw_1.Sort()</p><p>  dw_1.SetFilter(cx)</p><p>  dw_1.Filter()</p><p><b>  刪除腳本:</b></p><p><b>  in

138、t n</b></p><p>  string sno</p><p>  sno=dw_1.object.sno[dw_1.GetRow()]</p><p>  SELECT count(*) into:n from xx1420_29_sc where sno=:sno;</p><p>  if n>0 then&

139、lt;/p><p>  messagebox("1409_12警告","該學生在選課表中已存在,不能刪除!")</p><p><b>  else</b></p><p>  dw_1.deleterow(0)</p><p><b>  end if</b>&

140、lt;/p><p><b>  確定腳本:</b></p><p>  int ret,ret1</p><p>  IF dw_1.DeletedCount()>0 THEN</p><p>  ret=MessageBox("1409_12提示","數(shù)據(jù)已更新,是否保存?",

141、Question!,YesNo!)</p><p>  IF ret=1 THEN</p><p>  ret1=dw_1.Update()</p><p>  IF ret1=1 THEN</p><p>  COMMIT USING SQLCA;</p><p>  MessageBox("xx1420_

142、29提示","保存成功!")</p><p><b>  ELSE</b></p><p>  ROLLBACK USING SQLCA;</p><p>  MessageBox("1409_12錯誤","保存失敗!")</p><p><b&

143、gt;  END IF</b></p><p><b>  END IF</b></p><p><b>  END IF</b></p><p><b>  關(guān)閉腳本:</b></p><p>  Close(parent)</p><p>

144、;  系統(tǒng)主菜單中響應 “學生刪除”窗口的腳本。</p><p>  Open(w_s_delete)</p><p><b>  運行應用程序。</b></p><p>  <7>“學生管理”菜單欄中的“學生修改”項</p><p><b>  創(chuàng)建數(shù)據(jù)窗口對象</b></p&g

145、t;<p>  選擇顯示Grid風格</p><p>  (File→)New→DataWindow:選擇顯示風格。</p><p><b>  定義數(shù)據(jù)源</b></p><p><b>  OK:定義數(shù)據(jù)源。</b></p><p><b>  控制數(shù)據(jù)</b>

146、;</p><p>  Next→選擇xx1420_29_s→Open</p><p>  ·選擇列:單擊列名。</p><p>  ·指定排序:單擊Sort選項卡,拖動xx1420_29_s.sno列至右部,復選框Ascending表示升序。</p><p><b>  保存</b></p&g

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論