版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 學(xué) 生 選 課 管 理 系 統(tǒng)</p><p><b> 設(shè)</b></p><p><b> 計(jì)</b></p><p><b> 報(bào)</b></p><p><b> 告</b></p><p>
2、 課題:學(xué)生選課管理系統(tǒng)</p><p><b> 一.概要分析</b></p><p> 數(shù)據(jù)庫(kù)設(shè)計(jì)是指對(duì)于一個(gè)給定的應(yīng)用環(huán)境,構(gòu)造最優(yōu)的數(shù)據(jù)庫(kù)模式。</p><p> 1.數(shù)據(jù)庫(kù)設(shè)計(jì)的目標(biāo)</p><p> 目標(biāo)是在DBMS支持下,按照應(yīng)用的要求,為某一應(yīng)用設(shè)計(jì)一個(gè)結(jié)構(gòu)合理、使用方便、效率較高的數(shù)據(jù)庫(kù)及其應(yīng)用
3、系統(tǒng)。</p><p> 2.數(shù)據(jù)庫(kù)設(shè)計(jì)的特點(diǎn)</p><p> ·數(shù)據(jù)庫(kù)建設(shè)是硬件、軟件和干件的結(jié)合。</p><p> ·數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程是結(jié)構(gòu)設(shè)計(jì)和行為設(shè)計(jì)的密切結(jié)合。</p><p> 3.數(shù)據(jù)庫(kù)設(shè)計(jì)的過(guò)程</p><p> 需求分析階段:可行性分析報(bào)告</p><
4、;p> 系統(tǒng)需求 用戶的需求具體體現(xiàn)在選課信息和用戶信息的提供、保存、更新和查詢的方面。這就要求數(shù)據(jù)庫(kù)的設(shè)計(jì)必須合理,使之能夠充分滿足各種信息的輸入和輸出,保證數(shù)據(jù)存儲(chǔ)的可靠性,并且能夠快速取出和存入。而前臺(tái)顯示部分,應(yīng)具有人性化的界面,方便用戶操作。</p><p><b> 功能需求</b></p><p> 概念模型設(shè)計(jì)階段:ER模型</p
5、><p><b> 局部概念模式設(shè)計(jì)</b></p><p><b> 步驟:</b></p><p> ·選擇局部應(yīng)用:選擇一個(gè)適當(dāng)層次的數(shù)據(jù)流圖。</p><p> ·逐一設(shè)計(jì)局部ER模型:定義實(shí)體、聯(lián)系、分配屬性、確定實(shí)體標(biāo)識(shí)符。</p><p>
6、;<b> 全局概念模式設(shè)計(jì)</b></p><p><b> 步驟:</b></p><p> ·合并:集成為一個(gè)整體的數(shù)據(jù)概念模型即全局ER模型。</p><p> ·消除沖突:屬性沖突、命名沖突、結(jié)構(gòu)沖突。</p><p><b> 優(yōu)化</b&g
7、t;</p><p> ·消除冗余:合并相關(guān)類型實(shí)體,消除冗余屬性、冗余聯(lián)系。</p><p> ·消除冗余的方法:數(shù)據(jù)字典中數(shù)據(jù)項(xiàng)間邏輯關(guān)系的說(shuō)明,規(guī)范化理論。</p><p> 邏輯模型設(shè)計(jì)階段:關(guān)系模型</p><p> ER模型向關(guān)系模型的轉(zhuǎn)換 </p><p> 學(xué)生
8、(學(xué)號(hào),姓名,性別,班級(jí),出生日期,地址,電話,email)</p><p> 課程(課程號(hào),課程名 ,學(xué)分) </p><p> 選課(課程號(hào),學(xué)號(hào),成績(jī))</p><p> 數(shù)據(jù)模型的優(yōu)化和規(guī)范處理</p><p> 數(shù)據(jù)庫(kù)物理設(shè)計(jì)階段:數(shù)據(jù)庫(kù)</p><p> 數(shù)據(jù)庫(kù)實(shí)施階段:程序調(diào)試</p>
9、;<p> 數(shù)據(jù)庫(kù)運(yùn)行和維護(hù)階段:程序運(yùn)行</p><p><b> 二.?dāng)?shù)據(jù)庫(kù)設(shè)計(jì)</b></p><p> 使用工具:SQL Server 2000</p><p> 目的要求:掌握SQL Server 2000數(shù)據(jù)庫(kù)、表的創(chuàng)建</p><p><b> 操作步驟:</b>
10、;</p><p><b> 1.建立數(shù)據(jù)庫(kù)</b></p><p> 啟動(dòng)數(shù)據(jù)庫(kù)服務(wù)管理器。</p><p><b> 啟動(dòng)企業(yè)管理器。</b></p><p> 以登錄賬戶sa注冊(cè)數(shù)據(jù)庫(kù)服務(wù)器“59.74.104.180”,密碼為sa。</p><p> 使用S
11、QL-EM:SQL-EM→數(shù)據(jù)庫(kù)→右鍵→新建數(shù)據(jù)庫(kù):數(shù)據(jù)庫(kù)名xx1420,設(shè)計(jì)數(shù)據(jù)庫(kù)文件 .MDF和 .ndf 文件</p><p><b> 2.建立表結(jié)構(gòu)</b></p><p> 啟動(dòng)數(shù)據(jù)庫(kù)服務(wù)管理器。</p><p><b> 啟動(dòng)企業(yè)管理器。</b></p><p> 以登
12、錄賬戶sa注冊(cè)數(shù)據(jù)庫(kù)服務(wù)器“59.74.104.180”,密碼為zzj。</p><p> 在“xx1420”數(shù)據(jù)庫(kù)中創(chuàng)建學(xué)生表,表名為“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默認(rèn)值為“男”,email惟一完整性約束。</p><p> 在“xx1420”數(shù)據(jù)庫(kù)中創(chuàng)建課程表,表名為“xx1420_29_c”,包括列:cno、char(4),cname、char(20),credit、tinyint。其中,cno為主鍵。</p><p> 在“xx1420”數(shù)據(jù)庫(kù)中創(chuàng)建選課表,表名為“xx142
14、0_29_sc”,包括列:sno、char(4),cno、char(4),score、smallint。其中,sno、cno為主鍵。</p><p> 在“xx1420”數(shù)據(jù)庫(kù)中創(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ù)庫(kù)中創(chuàng)建選課表,表名為“xx1420_29_tj”,包括列:cno、char(4),fsd、char(10),rs、smallint。其中,sno、cno為主鍵。</p><p> 新建數(shù)據(jù)庫(kù)關(guān)系圖,指定選課表sno為外鍵參照學(xué)生表的sno,指定選課表cno為外鍵參照課程表的cno,數(shù)據(jù)庫(kù)關(guān)系圖名要求為“xx1420_29”。
16、</p><p> 啟動(dòng)查詢分析器,使用insert語(yǔ)句將表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”,密碼自行設(shè)定。</p><p> 將登錄賬戶“xx1420_29”指定為“xx1420”數(shù)據(jù)庫(kù)用戶。</p><p> 設(shè)置數(shù)據(jù)庫(kù)用戶“xx1420_29”對(duì)表“xx1420_29_s”、“xx1420_29_
18、c”、“xx1420_29_sc”的select、insert、delete、update權(quán)限。</p><p> 刪除注冊(cè)的數(shù)據(jù)庫(kù)服務(wù)器,以登錄賬戶“xx1420_29”注冊(cè)數(shù)據(jù)庫(kù)服務(wù)器,測(cè)試其權(quán)限。</p><p><b> 三.軟件設(shè)計(jì)</b></p><p> 使用工具:PowerBuilder 9.0</p>&l
19、t;p> 目的要求:掌握PowerScript程序設(shè)計(jì)方法</p><p><b> 操作步驟:</b></p><p> 1. 創(chuàng)建應(yīng)用程序并連接數(shù)據(jù)庫(kù)</p><p> 啟動(dòng)數(shù)據(jù)庫(kù)服務(wù)管理器。</p><p><b> 注冊(cè)數(shù)據(jù)庫(kù)服務(wù)器:</b></p><p
20、> 服務(wù)器名 59.74.104.180</p><p> 用戶名 sa 密碼 sa</p><p> 啟動(dòng)PowerBuilder 9.0</p><p> 開(kāi)始→程序→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)建應(yīng)用對(duì)象、應(yīng)用庫(kù)和目標(biāo),應(yīng)用對(duì)象、應(yīng)用庫(kù)及目標(biāo)名均為“xx1420_29”,并存放在D盤“xx1420_29”文件夾中。</p><p> 工作區(qū)→右鍵→New→Target→Application:應(yīng)用對(duì)象名xx1420_29、目標(biāo)名xx1420_2
22、9、應(yīng)用庫(kù)名xx1420_29</p><p><b> 創(chuàng)建數(shù)據(jù)庫(kù)配置。</b></p><p><b> 連接數(shù)據(jù)庫(kù)服務(wù)器。</b></p><p> 將數(shù)據(jù)庫(kù)配置代碼復(fù)制到應(yīng)用對(duì)象Open事件中。</p><p> Profile Name→右鍵→Properties→Preview:
23、copy</p><p> 應(yīng)用對(duì)象名→右鍵→Edit→open事件:Ctrl+V</p><p> 然后使用嵌入式SQL語(yǔ)句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ù)庫(kù)以及顯示連接數(shù)據(jù)庫(kù)結(jié)果的腳本, messagebox對(duì)話框標(biāo)題為“xx1420_29”。</p><p><b> 運(yùn)行應(yīng)用程序。</b></p><p> 2. 主窗口和主菜單設(shè)計(jì)</p><p> 啟動(dòng)PowerBuilder 9.0,打開(kāi)工作區(qū),配置并連
26、接數(shù)據(jù)庫(kù)。</p><p><b> 創(chuàng)建登錄窗口</b></p><p> (File→)New→PB Object→Window→保存:通常窗口命名為“w_<窗口名>”。</p><p><b> 設(shè)計(jì)登錄窗口。</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_”——賬號(hào)、密碼;</p><p> 單行編輯框“sle_1, sle_2“——賬號(hào)和密碼輸入框</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> 設(shè)置全局變量</b></p><p> string g_uno</p><p><b> 設(shè)置實(shí)例變量</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","對(duì)不起您是非法用戶!"
32、;)</p><p> close(parent)</p><p><b> else</b></p><p> messagebox("xx1420_29","賬號(hào)或密碼錯(cuò)誤,請(qǐng)重新輸入!")</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> 修改應(yīng)用對(duì)象腳本,將應(yīng)用對(duì)象與登錄窗口連接。</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> 運(yùn)行應(yīng)用程序。</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建菜單項(xiàng),右擊菜單,Insert Submenu Item建命令項(xiàng),通常菜單命名為“m_<菜單名>”。</p><p><b> 修改菜單</b></p><p> 指定窗口→單擊右鍵→Edit 或 雙擊指定菜
39、單。</p><p><b> 刪除</b></p><p> 指定菜單→單擊右鍵→Delete。</p><p><b> 設(shè)計(jì)主菜單。</b></p><p><b> 菜單的屬性:</b></p><p><b> 定義菜單外觀
40、</b></p><p> General選項(xiàng)卡:Name(名稱)、MicroHelp(微幫助)、Enabled(可用性)等。</p><p><b> 定義菜單項(xiàng)快捷鍵</b></p><p> General選項(xiàng)卡:Shortcut key(快捷鍵,包括組合鍵:Alt、Ctrl、Shift)。</p><
41、;p> 定義菜單工具欄中 修改密碼、幫助、退出系統(tǒng)的顯示圖片</p><p> Toolbar選項(xiàng)卡:ToolBarItemText(指向該圖標(biāo)時(shí)文字提示)、ToolBarItemName(圖標(biāo)所顯示圖片)、ToolBarItemDownName(按住圖標(biāo)所顯示圖片)、ToolBarItemOrder(圖標(biāo)在工具欄中位置)等。</p><p> 設(shè)計(jì)主窗口并捆綁主菜單。<
42、/p><p> 創(chuàng)建窗口w_main,在“MenuName”框中指定捆綁的菜單名m_main,在“WindowType”下拉列表選中 “mdihelp!”,在“WindowState”下拉列表選中“maximized!”。</p><p> 編寫主菜單菜單項(xiàng)“退出”腳本。.</p><p> close(parent)</p><p>
43、編寫登錄窗口clicked事件腳本,將登錄窗口與主窗口連接。</p><p><b> 運(yùn)行應(yīng)用程序。</b></p><p> 3.系統(tǒng)維護(hù)菜單各項(xiàng)的設(shè)計(jì)與實(shí)現(xiàn)</p><p><b> ?。?)修改密碼項(xiàng)</b></p><p> 1.1修改密碼窗口設(shè)計(jì)</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)維護(hù)”菜單標(biāo)題下“修改密碼”項(xiàng)的觸發(fā)事件腳本</p><p> Open(w_password)</p><p><b> 1.3運(yùn)行應(yīng)用程序</b></p><p><b> ?。?)幫助項(xiàng)</b>&l
53、t;/p><p> 2.1系統(tǒng)幫助窗口設(shè)計(jì)</p><p><b> 窗口屬性:</b></p><p> Title中輸入“幫助”,在“WindowType”下拉列表選中 “main!”,在“WindowState”下拉列表選中“normal!”。</p><p> 工具欄—OLE控件,設(shè)置“幫助”。</p&
54、gt;<p><b> 2.2 事件腳本</b></p><p> “系統(tǒng)維護(hù)”菜單標(biāo)題下“幫助”項(xiàng)的觸發(fā)事件腳本</p><p> Open(w_help)</p><p><b> 2.3運(yùn)行應(yīng)用程序</b></p><p><b> (3)退出系統(tǒng)項(xiàng)</
55、b></p><p> “系統(tǒng)維護(hù)”菜單標(biāo)題下“退出”項(xiàng)的“關(guān)閉”事件腳本</p><p> Close(w_main)</p><p> 4. “學(xué)生選課管理系統(tǒng)”數(shù)據(jù)窗口的設(shè)計(jì)與實(shí)現(xiàn)</p><p> <1>“課程管理”菜單欄中的“課程查詢”項(xiàng)</p><p><b> 創(chuàng)建數(shù)
56、據(jù)窗口對(duì)象</b></p><p><b> 選擇顯示風(fēng)格</b></p><p> (File→)New→DataWindow:選擇顯示Grid風(fēng)格。</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> ·選擇列:?jiǎn)螕袅忻?lt;/p><p> ·指定排序:?jiǎn)螕鬝ort選項(xiàng)卡,拖動(dòng)xx1420_29_c.cno列至右部,復(fù)選框Ascending表示升序。</p>
58、<p><b> 保存</b></p><p> 對(duì)象名:d_c_locate</p><p><b> 數(shù)據(jù)對(duì)象</b></p><p> 設(shè)計(jì)課程查詢窗口</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)主菜單中響應(yīng) “課程查詢”窗口的腳本。</p><p> Ope
63、n(w_c_locate)</p><p><b> 運(yùn)行應(yīng)用程序。</b></p><p> <2>“課程管理”菜單欄中的“課程刪除”項(xiàng)</p><p> 1.創(chuàng)建數(shù)據(jù)窗口對(duì)象</p><p><b> 選擇顯示風(fēng)格</b></p><p> (Fil
64、e→)New→DataWindow:選擇顯示Grid風(fēng)格。</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> ·選擇列:?jiǎn)螕袅忻?lt;/p><p> ·指定排序:?jiǎn)螕鬝ort選項(xiàng)卡,拖動(dòng)xx1420_29_c.cno列至右部,復(fù)選框Ascending表示升序。</p><p><b> 保存</b></p><p> 對(duì)象名:d_c_delete</p><p><b&g
66、t; 數(shù)據(jù)對(duì)象</b></p><p> 設(shè)計(jì)課程刪除窗口</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錯(cuò)誤","保存失敗!")</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)主菜單中響應(yīng) “課程刪除”窗口腳本。</p><p> Open(w_c_delete)</p><p><b> 運(yùn)行應(yīng)用程序。</b></p
76、><p> <3>“課程管理”菜單欄中的“課程修改”項(xiàng)</p><p><b> 創(chuàng)建數(shù)據(jù)窗口對(duì)象</b></p><p><b> 選擇顯示風(fēng)格</b></p><p> (File→)New→DataWindow:選擇顯示Grid風(fēng)格。</p><p>&
77、lt;b> 定義數(shù)據(jù)源</b></p><p><b> OK:定義數(shù)據(jù)源。</b></p><p><b> 控制數(shù)據(jù) </b></p><p> Next→選擇一個(gè)或多個(gè)表→Open</p><p> ·選擇列:?jiǎn)螕袅忻?lt;/p><p&
78、gt; ·指定排序:?jiǎn)螕鬝ort選項(xiàng)卡,拖動(dòng)xx1420_29_c.cno列至右部,復(fù)選框Ascending表示升序。</p><p><b> 保存</b></p><p> 對(duì)象名:d_c_edit</p><p><b> 數(shù)據(jù)對(duì)象</b></p><p> 設(shè)計(jì)課程修改窗
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錯(cuò)誤","
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錯(cuò)誤","保存失敗!")</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)主菜單中響應(yīng) “課程修改”窗口腳本。</p><p> Open(w_c_edit)</p><p><b> 運(yùn)行應(yīng)用程序。</b></p><p> <4>“課程管理”菜單欄中的“課程增加”項(xiàng)</p><p><b> 創(chuàng)建數(shù)據(jù)窗口對(duì)象&l
92、t;/b></p><p><b> 選擇顯示風(fēng)格</b></p><p> (File→)New→DataWindow:選擇顯示Grid風(fēng)格。</p><p><b> 定義數(shù)據(jù)源</b></p><p><b> OK:定義數(shù)據(jù)源。</b></p>
93、<p><b> 控制數(shù)據(jù)</b></p><p> Next→選擇一個(gè)或多個(gè)表→Open</p><p> ·選擇列:?jiǎn)螕袅忻?lt;/p><p> ·指定排序:?jiǎn)螕鬝ort選項(xiàng)卡,拖動(dòng)xx1420_29_c.cno列至右部,復(fù)選框Ascending表示升序。</p><p>&
94、lt;b> 保存</b></p><p> 對(duì)象名:d_c_insert</p><p><b> 數(shù)據(jù)對(duì)象</b></p><p> 設(shè)計(jì)課程增加窗口</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錯(cuò)誤","保存失敗!")</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警告","課程編號(hào)不能為空!")</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錯(cuò)誤","保存失敗!")</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> 定義實(shí)例變量:</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警告","課程編號(hào)不能與表中相同!")</p><p> ELS
116、EIF i_n=2 THEN</p><p> messagebox("xx1420_29警告","課程編號(hào)不能與錄入值相同!")</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)主菜單中響應(yīng) “課程增加”窗口腳本。</p><p> Open(w_c_insert)</p><p><b> 運(yùn)行應(yīng)用程序。</b></p><p> <5>“課程管理”菜單欄中的“學(xué)生查
118、詢”項(xiàng)</p><p><b> 創(chuàng)建數(shù)據(jù)窗口對(duì)象</b></p><p><b> 選擇顯示風(fēng)格</b></p><p> (File→)New→DataWindow:選擇顯示Grid風(fēng)格。</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> ·選擇列:?jiǎn)螕袅忻?lt;/p><p> ·指定排序:?jiǎn)螕鬝ort選項(xiàng)卡,拖動(dòng)xx1420_29
120、_s.sno列至右部,復(fù)選框Ascending表示升序。</p><p><b> 保存</b></p><p> 對(duì)象名:d_s_locate</p><p><b> 數(shù)據(jù)對(duì)象</b></p><p> 設(shè)計(jì)學(xué)生查詢窗口</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、單中響應(yīng) “學(xué)生查詢”窗口腳本。</p><p> Open(w_s_locate)</p><p><b> 運(yùn)行應(yīng)用程序。</b></p><p> <6>“學(xué)生管理”菜單欄中的“學(xué)生刪除”項(xiàng)</p><p><b> 創(chuàng)建數(shù)據(jù)窗口對(duì)象</b></p><
128、p><b> 選擇顯示風(fēng)格</b></p><p> (File→)New→DataWindow:選擇顯示Grid風(fēng)格。</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> ·選擇列:?jiǎn)螕袅忻?lt;/p><p> ·指定排序:?jiǎn)螕鬝ort選項(xiàng)卡,拖動(dòng)xx1420_29_s.sno列至右部,復(fù)選框Ascending表示升序。</p><p><b> 保存</b&
130、gt;</p><p> 對(duì)象名:d_s_delete</p><p><b> 數(shù)據(jù)對(duì)象</b></p><p> 同d_s_locate相同</p><p> 設(shè)計(jì)學(xué)生刪除窗口</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錯(cuò)誤","保存失敗!&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警告","該學(xué)生在選課表中已存在,不能刪除!")</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錯(cuò)誤","保存失敗!")</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)主菜單中響應(yīng) “學(xué)生刪除”窗口的腳本。</p><p> Open(w_s_delete)</p><p><b> 運(yùn)行應(yīng)用程序。</b></p><p> <7>“學(xué)生管理”菜單欄中的“學(xué)生修改”項(xiàng)</p><p><b> 創(chuàng)建數(shù)據(jù)窗口對(duì)象</b></p&g
145、t;<p> 選擇顯示Grid風(fēng)格</p><p> (File→)New→DataWindow:選擇顯示風(fēng)格。</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> ·選擇列:?jiǎn)螕袅忻?lt;/p><p> ·指定排序:?jiǎn)螕鬝ort選項(xiàng)卡,拖動(dòng)xx1420_29_s.sno列至右部,復(fù)選框Ascending表示升序。</p><p><b> 保存</b></p&g
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--學(xué)生選課管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)---學(xué)生選課管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--學(xué)生選課管理系統(tǒng)
- sqlserver數(shù)據(jù)庫(kù)課程設(shè)計(jì)--選課管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)學(xué)生選課管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)----學(xué)生選課管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--選課系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)---學(xué)生選課管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--學(xué)生選課成績(jī)管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)---學(xué)生選課系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)(實(shí)驗(yàn)選課系統(tǒng))
- 學(xué)生選課系統(tǒng)數(shù)據(jù)庫(kù)課程設(shè)計(jì)
- 《數(shù)據(jù)庫(kù)技術(shù)》課程設(shè)計(jì)--學(xué)生選課管理系統(tǒng)設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--高校學(xué)生選課管理系統(tǒng)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--學(xué)生選課信息管理系統(tǒng)
- sql數(shù)據(jù)庫(kù)課程設(shè)計(jì) 學(xué)生選課
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)--數(shù)據(jù)庫(kù)設(shè)計(jì)—公司管理系統(tǒng)
- 學(xué)生選課信息系統(tǒng)數(shù)據(jù)庫(kù)課程設(shè)計(jì)報(bào)告
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)---機(jī)房管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)
- 數(shù)據(jù)庫(kù)課程設(shè)計(jì)---圖書管理系統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)
評(píng)論
0/150
提交評(píng)論