版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电机与电气控制技术 课件 任务7.1.2变频调速原理
- 《GBT 4789.27-2008食品卫生微生物学检验 鲜乳中抗生素残留检验》专题研究报告
- 《GBT 22355-2008土方机械 铰接机架锁紧装置 性能要求》专题研究报告深度
- 《FZT 52019-2018莱赛尔短纤维》专题研究报告:深度与行业前瞻
- 急性心力衰竭总结2026
- 道路安全培训课件
- 道路交通开车安全培训课件
- 2026年江西高考语文考试题库(含答案)
- 2026年甘肃省天水市重点学校高一入学数学分班考试试题及答案
- 2025中国阿尔茨海默病蓝皮书(精简版)课件
- 2025年福建省能源石化集团有限责任公司春季社会招聘210人笔试参考题库附带答案详解
- 建设项目环境影响评价分类管理名录2026版
- 劳务派遣标准操作流程及服务手册
- 2025年医疗器械质量安全风险会商管理制度
- 上呼吸道患者护理课件
- 卫星互联网基础知识培训课件
- 2025年敖汉旗就业服务中心招聘第一批公益性岗位人员的112人模拟试卷含答案详解
- 九年级化学实验教案全集
- 某220千伏变电站10千伏电容器开关柜更换工程的安全措施与施工方案
- 钳工个人实习总结
- 大健康养肝护肝针专题课件
评论
0/150
提交评论