




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第五讲、案例实现将航班信息系统用面向对象的方法予以实现。步骤为:一、定义类,创建对象,通过对象访问数据 首先为项目添加一个plane类,其中有航班号id,起点start,终点stop,座位数type,卖出座位数sum等,定义航班号id、起点start、终点stop、座位数type,为私有字段,设置只读属性,卖出座位数sum为公有字段。定义一个构造函数plane(string,string,string,int)用于创建一个新航班的对象实例。 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类中添加数据成员的定义 public static plane airplane; 修改工具栏按钮Airplay的单击事件定义通过创建一个plane类的对象实例来向座位信息窗口SeatMessage传递数据。参考代码如下: 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中的数据成员定义中关于航班信息的定义: public int full = 0; public int empty; public string start; public string stop; 因为这些数据可以通过在Chapter9类中的公共静态对象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; 修改复选框按钮单击定义代码,动态显示座位卖出或退回的情况,代码如下: 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); 二、面向对象的功能完善 调试程序时可以发现,在查询出来的航班信息窗口,用户可以任意修改航班的信息,而这应该是不允许的。解决方法为: 将用于输出航班信息的4个文本textBox1textBox4的reanOnly属性改为true重新运行程序可发现这一问题可以解决. 调试程序时还可以发现,在输入的航班号为空时,发现程序出现异常,未实例化对象airplane,解决方法为: 在航班类plane中添加一个无参构造函数的定义: public plane() id =
8、"0" start = "" stop = "" type = 80; sum = 0; 用于构造一个默认的航班。 修改Chapter9类的定义,在定义airplane字段时创建一个实例,代码修改如下: public static plane airplane=new plane (); 再次调试程序发可发现这一问题可以解决。三、航班信息的保存(初步) 调试程序, 还可发现一个问题:用户在创建了一个新的航班后,若再次查询该航班的信息时会重新创建一个新航班,而不是用已有的航班的信息。例如第一次创建的1号航班是北京到巴黎的,可是下次又可以
9、重新创建一个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; 另外还存在的一个问题是,起点和终点若不能为同一地点,程序没有考虑其解决的方法,同学们可以自行考虑如何解决。四、航班的座位信息的保存(初步) 当用户已创建了一个航班对象,并已对其进行了一些卖票的操作后,若关闭了座位信息窗口,再重新打开它时,发现只能记住航班的基本信息,不能记住航班的座位信息,解决的方法为:修改plane类的定义,加入一个数据成员:publi
13、c bool, seat;用于记录航班的座位信息。修改构造函数的定义,增加对记录座位信息的数据成员seat的创建。 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方法的定义,添加一个当单击复选框时,将复选框的状态记录到航班对象的座位信息数组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的代码,当输入的航班号已存在,不用创建新的航班对象,也不用创建新的航班信息窗口,代码如下: 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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 模具开发合同
- 镀金废料供货合同范本
- 转让债务的合同范本
- 眼部俯卧位护理
- 街电商铺合同范本
- 足趾骨折护理
- 湖北2025年02月湖北省通城县防汛抗旱服务中心公开比选22名事业单位工作人员笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 小学生钉纽扣课件
- 2025至2030年中国圣诞仿真水果数据监测研究报告
- 直肠息肉饮食护理
- 2024年湖南生物机电职业技术学院单招职业技能测试题库及一套参考答案
- 2022年袋鼠数学竞赛真题一二年级组含答案
- JJF 2104-2024 海水溶解氧测量仪校准规范
- 2024年中国煤科煤炭科学技术研究院有限公司招聘笔试参考题库含答案解析
- 情绪管理团体辅导专项方案
- 一年级美术课后辅导方案-1
- 新法律援助基础知识讲座
- 《锻造安全生产》课件
- 小学数学1-6年级(含奥数)找规律专项及练习题附详细答案
- 《同济大学简介》课件
- 机电安装工程质量控制
评论
0/150
提交评论