第五講、面向?qū)ο蟮陌咐龑崿F(xiàn)_第1頁
第五講、面向?qū)ο蟮陌咐龑崿F(xiàn)_第2頁
第五講、面向?qū)ο蟮陌咐龑崿F(xiàn)_第3頁
第五講、面向?qū)ο蟮陌咐龑崿F(xiàn)_第4頁
第五講、面向?qū)ο蟮陌咐龑崿F(xiàn)_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第五講、案例實現(xiàn)將航班信息系統(tǒng)用面向?qū)ο蟮姆椒ㄓ枰詫崿F(xiàn)。步驟為:一、定義類,創(chuàng)建對象,通過對象訪問數(shù)據(jù) 首先為項目添加一個plane類,其中有航班號id,起點start,終點stop,座位數(shù)type,賣出座位數(shù)sum等,定義航班號id、起點start、終點stop、座位數(shù)type,為私有字段,設(shè)置只讀屬性,賣出座位數(shù)sum為公有字段。定義一個構(gòu)造函數(shù)plane(string,string,string,int)用于創(chuàng)建一個新航班的對象實例。 public class plane private string id; private string start; private string st

2、op; private int type; public int sum; public string Id get return id; public string Start get return start; public string Stop get return stop; public int Type get return type; public plane(string ID,string START,string STOP,int TYPE) id = ID; start = START; stop = STOP; type = TYPE; sum = 0; 在Chapt

3、er9類中添加數(shù)據(jù)成員的定義 public static plane airplane; 修改工具欄按鈕Airplay的單擊事件定義通過創(chuàng)建一個plane類的對象實例來向座位信息窗口SeatMessage傳遞數(shù)據(jù)。參考代碼如下: private void airpleToolStripMenuItem_Click(object sender, EventArgs e) if (textBox1.Text = "") MessageBox.Show("航班號未輸入!"); else airplane = new plane(textBox1.Text, c

4、omboBox1.Text, comboBox2.Text, radioButton1 .Checked ? 80:96 ); sw = new SeatMessage(); sw.addCheck(radioButton2.Checked); sw.Show(); 刪除航班座位信息類SeatMessage中的數(shù)據(jù)成員定義中關(guān)于航班信息的定義: public int full = 0; public int empty; public string start; public string stop; 因為這些數(shù)據(jù)可以通過在Chapter9類中的公共靜態(tài)對象plane訪問到。 修改窗口加載事件

5、的代碼,顯示航班信息。代碼如下: private void SeatMessage_Load(object sender, EventArgs e) this.Text = "Flight Number "+Chapter9.airplane.Id; textBox1.Text = Chapter9.airplane.sum.ToString(); textBox2.Text = Convert.ToString(Chapter9.airplane.Type - Chapter9.airplane.sum); textBox3.Text = Chapter9.airplan

6、e.Start; textBox4.Text = Chapter9.airplane.Stop; 修改復選框按鈕單擊定義代碼,動態(tài)顯示座位賣出或退回的情況,代碼如下: public void CheckClick(object sender, EventArgs e) CheckBox x; x = (CheckBox)sender; if (x.Checked) Chapter9.airplane.sum+; else Chapter9.airplane.sum-; textBox1.Text = Chapter9.airplane.sum.ToString (); textBox2.Tex

7、t = Convert.ToString(Chapter9.airplane.Type - Chapter9.airplane.sum); 二、面向?qū)ο蟮墓δ芡晟?調(diào)試程序時可以發(fā)現(xiàn),在查詢出來的航班信息窗口,用戶可以任意修改航班的信息,而這應該是不允許的。解決方法為: 將用于輸出航班信息的4個文本textBox1textBox4的reanOnly屬性改為true重新運行程序可發(fā)現(xiàn)這一問題可以解決. 調(diào)試程序時還可以發(fā)現(xiàn),在輸入的航班號為空時,發(fā)現(xiàn)程序出現(xiàn)異常,未實例化對象airplane,解決方法為: 在航班類plane中添加一個無參構(gòu)造函數(shù)的定義: public plane() id =

8、"0" start = "" stop = "" type = 80; sum = 0; 用于構(gòu)造一個默認的航班。 修改Chapter9類的定義,在定義airplane字段時創(chuàng)建一個實例,代碼修改如下: public static plane airplane=new plane (); 再次調(diào)試程序發(fā)可發(fā)現(xiàn)這一問題可以解決。三、航班信息的保存(初步) 調(diào)試程序, 還可發(fā)現(xiàn)一個問題:用戶在創(chuàng)建了一個新的航班后,若再次查詢該航班的信息時會重新創(chuàng)建一個新航班,而不是用已有的航班的信息。例如第一次創(chuàng)建的1號航班是北京到巴黎的,可是下次又可以

9、重新創(chuàng)建一個1號航班是北京到紐約的,這應該也是不可以的。解決方法為: 修改airpleToolStripMenuItem_Click的定義,加入對輸入或修改信息的控件的使用限制,代碼如下: private void airpleToolStripMenuItem_Click(object sender, EventArgs e) if (textBox1.Text = "") MessageBox.Show("航班號未輸入!"); else airplane = new plane(textBox1.Text, comboBox1.Text, combo

10、Box2.Text, radioButton1 .Checked ? 80:96 ); comboBox1.Enabled = false; comboBox2.Enabled = false; radioButton1.Enabled = false; radioButton2.Enabled = false; sw = new SeatMessage(); sw.addCheck(radioButton2.Checked); sw.Show(); 在Chapter9類的定義中添加一個textBox1_TextChanged事件代碼,如下: private void textBox1_Tex

11、tChanged(object sender, EventArgs e) if (textBox1.Text = airplane.Id) comboBox1.Text = airplane.Start; comboBox2.Text = airplane.Stop; radioButton1.Checked = airplane.Type = 80 ? true : false; comboBox1.Enabled = false; comboBox2.Enabled = false; radioButton1.Enabled = false; radioButton2.Enabled =

12、false; else comboBox1.Enabled = true; comboBox2.Enabled = true; radioButton1.Enabled = true; radioButton2.Enabled = true; 另外還存在的一個問題是,起點和終點若不能為同一地點,程序沒有考慮其解決的方法,同學們可以自行考慮如何解決。四、航班的座位信息的保存(初步) 當用戶已創(chuàng)建了一個航班對象,并已對其進行了一些賣票的操作后,若關(guān)閉了座位信息窗口,再重新打開它時,發(fā)現(xiàn)只能記住航班的基本信息,不能記住航班的座位信息,解決的方法為:修改plane類的定義,加入一個數(shù)據(jù)成員:publi

13、c bool, seat;用于記錄航班的座位信息。修改構(gòu)造函數(shù)的定義,增加對記錄座位信息的數(shù)據(jù)成員seat的創(chuàng)建。 public plane(string ID,string START,string STOP,int TYPE) id = ID; start = START; stop = STOP; type = TYPE; sum = 0; if (TYPE = 80) seat = new bool10, 8; else seat = new bool12, 8; public plane() id = "0" start = "" stop =

14、 "" type = 80; sum = 0; seat = new bool10, 8; 增加一個用于記錄一個座位位置的類spoint的定義: public class spoint public int x; public int y; 修改public void addCheck(bool x)方法的定義,在每次添加一個復選框按鈕操作:Controls.Add(CheckArrayi, j);之前將按鈕的位置信息記錄在按鈕的tag屬性中。代碼為: spoint p = new spoint(); p.x = i; p.y = j; CheckArrayi, j.Tag

15、 = p; if(Chapter9.airplane.seatj, i) CheckArrayi, j.Checked = true; else CheckArrayi, j.Checked = false;修改CheckClick方法的定義,添加一個當單擊復選框時,將復選框的狀態(tài)記錄到航班對象的座位信息數(shù)組airplane.seat中,代碼如下: public void CheckClick(object sender, EventArgs e) CheckBox x; x = (CheckBox)sender; spoint p = (spoint)x.Tag; if (x.Checked

16、) Chapter9.airplane.sum+; Chapter9.airplane.seatp.y, p.x = true; else Chapter9.airplane.sum-; Chapter9.airplane.seatp.y, p.x = false; textBox1.Text = Chapter9.airplane.sum.ToString (); textBox2.Text = Convert.ToString(Chapter9.airplane.Type - Chapter9.airplane.sum); 修改airpleToolStripMenuItem_Click的代碼,當輸入的航班號已存在,不用創(chuàng)建新的航班對象,也不用創(chuàng)建新的航班信息窗口,代碼如下: private void airpleToolStripMenuItem_Click(object sender, EventArgs e) if (textBox1.Text = "") MessageBox.Show("航班號未輸入!"); else if (textBox1.Text != airplane.Id) airplane = new plane

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論