flash数据结构课程设计_第1页
flash数据结构课程设计_第2页
flash数据结构课程设计_第3页
flash数据结构课程设计_第4页
flash数据结构课程设计_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课 程 设 计 说 明 书课程名称: 数据结构与算法 设计题目: 模拟航班订票系统 学 院: 计算机科学与信息工程学院 学生姓名: 学生学号: 专业班级: 12级网络工程(1)班 指导教师: 年 月 日课 程 设 计 任 务 书设计题目模拟航班订票系统学生姓名魏陈南所在院系计算机科学与信息工程学院专业、年级、班网络工程121设计要求:要求:系统需要实现如下功能:(1)录入:可以录入航班情况(数据存储在一个数据文件中,数据结构、具体数据自定)(2)查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓),可以输入起飞抵达城市,查询飞机航班情

2、况;(3)订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,记录订票信息。订单要有编号;客户资料有姓名,证件号。如果该航班已经无票,可以提供相关可选择航班。(4)退票: 可退票,退票后修改相关数据文件; 根据订单号和客户信息,订票数量及航班情况。(5)修改航班信息:当航班信息改变可以修改航班数据文件学生应完成的工作:(1) 根据课程设计要求,分析思路并构建模型,划分子模块、完善其功能;(2) 根据各模块的功能设计并编写程序段、连接各程序段使之形成一个有机的整体;(3) 调试、运行程序进而得到正确的结果;(4) 根据实验设计运行过程,写出实验论文并总结实验教训。参考文献阅读:(1)

3、 Flash ActionScript3.0全站互动设计(刘欢,人民邮电出版社);(2) 数据结构(吴伟民等C语言版,清华大学出版社);(3) 数据结构实验教程(高晓兵等,清华大学出版社);(4) Flash ActionScript 3殿堂之路(孙颖电子工业出版社)。工作计划:(1) 第一周的第一天:小组布置设计题目;说明进度安排。(2) 第一周的第二天:小组审题,查阅资料,进行设计前的必要资料准备。(3) 第一周的第三天至第二周第三天:程序编写、上机调试、结果分析。(4) 第二周的第四天: 撰写设计报告。(5) 第二周的第五天: 设计答辩。任务下达日期: 2014年 6月 16日 任务完成

4、日期: 2014年 6月 27日指导教师(签名): 学生(签名): 模拟航班订票系统摘 要:随着计算机技术与英特网的发展,人们生活方式的转变,许多便捷的应用应运而生,我们可以足不出户便可以享受到它们带给我们的便捷服务,较为典型的一类为订票系统,我们可以坐在电脑就可先预定下自习想要的票。航班订票系统就是这一类的系统;其可以向用户提供机场航班的详情,可供查询,提供定退票的服务,与实际生活中的订票方式并无差别,反而更加便利。利用相应的数据结构来存储航班,与用户的信息,且存入相应的数据元件中,当用户或航班的数据改变时对应更新数据元件中的数据,应用数据结构的表结构,完成航班与用户信息插入删除等操作。本次

5、的设计即用数据结构的知识真实模拟现实的航班订票系统,完成对用户与航班信息的数据操作,与为用户提供完整的航班订票服务。关键词:航班订票、数据操作、表结构、数据存储目 录1. 设计背景51.1表结构的应用51.2航班订票系统的需求分析52.设计方案52.1总体设计流程52.2航班订票系统功能模块划分63. 方案实施63.1抽象数据元素的确定与数据文件的确定63.2系统概述74. 结果与结论74.1抽象数据对象与数据存储文件结构74.2高频语句模块概括说明94.3核心模块说明114.4程序运行结果184.5课程设计总结325. 收获与致谢336. 参考文献337. 附件331. 设计背景1.1表结构

6、的应用表结构是实际常用的存储结构以有序表、链表、最为常见,表结构由于其结构的不同其实际的应用也不尽相同,很多时候对于单个个体要进行频繁操作时所用的数据存储用的的就是链式存储,而按一定规律相联系的个体的数据则用的就是顺序表,例如应用得十分广泛的数据文件XML文件,当其作为数据文件时,其内部的数据存储方式大多就是有序表。而在我们的设计中存储数据的文件即为XML文件。1.2航班订票系统的需求分析航班订票系统所可以提供的服务与实际的机场服务并无差别,其大可分为两大部分,用户模块与管理模块,用户模块提供给用户相应的服务,即用户可以通过系统所提供的方式查询浏览航班,且可以完成机票的订购与退订,在必要时用户

7、还可以更改自己的特定信息;在进入系统前有用户的登入操作,且提供用户的信息注册,用户不具有权限更改航班的信息。再者就是管理模块,管理具有权限对航班的信息进行操作,即其除了可浏览查询航班信息还可对航班信息进行修改、删除、录入等操作;且管理员权限去查询用户信息,但不能修改;管理员可对自己的信息进行修改,即修改账号与密码。航班系统应提供以上较为基本的操作。2.设计方案2.1总体设计流程1. 航班订票系统的需求分析(1)草拟大纲(2)分析系统需求(3)划分总体模块2. 具体模块设计(1) 划分具体模块(2) 设计具体模块的功能3. 设计编码实现(1) 设计素材准备(2) 具体编码实现4. 设计的调试、错

8、误排除与功能完善2.2航班订票系统功能模块划分1. 数据模块:抽象数据类型定义,定义具体数据文件格式2. 数据操作模块:对存储数据信息进行对应的操作3. 数据交互模块:对用户/管理的操作做出相应,通过数据操作模块修改数据文件4. 可视化模块:提供可视化界面与界面交互的效果,提供人机交互界面3. 方案实施3.1抽象数据元素的确定与数据文件的确定对于航班订票系统,处于中心位置的是对数据元素的操作与其存储文件的操作,其他所有操作的结果都可直接反应在数据文件上的,所以抽象数据类型定义与其存储文件的设计尤为重要。由于此设计的编码实验是由面向对象的语言ActionScript3.0实现的,所以给出以下的抽

9、象数据定义,与数据元件定义。抽象数据类型:(1)航班对象(AirplaneInformation):id(航班号)、be(起始站)、ed(终点站)、date(日期)、amount(机票数量)、price(价格)、rebate(折扣)。(2)机票对象(UserTicketInformation):id(航班号)、be(起始站)、ed(终点站)、date(日期)、amount(座位号)、price(价格)。(3)用户对象(UserInformation):id(账号)、key(密码)、name(姓名)、sex(性别)、pId(身份证号)、tell(手机号)、Email(邮箱)、UserTicket

10、Information(机票信息)。存储的数据文件:数据存储文件用到常见的xml文件。(1) 航班信息数据文件:airplaneData.xml(详细结构见下文)。(2)用户信息数据文件:userData.xml(详细结构见下文)。3.2系统概述(1)航班信息数据元件生成:默认航班首次打开时读入的是默认的航班信息数据,即在com.airplane.data文件夹中的airplaneData.xml文件,而后管理员如对航班信息进行修改后会生成新的SharedObject数据对象存入本地空间。而用户信息是运行由用户操作生成的,其生成对应userData.xml文件,然后存入本地。(2)各模块工作流

11、程:主模块(用户入口、管理员入口),点击不同入口进入登入界面,(用户登入界面:登入、注册、返回),(管理员登入界面:登入、返回);在用户与管理员登入界面都可以进行输入正确的账号与密码进行登入,不同的是用户界面还有注册的功能,用户可以注册自己的账号进行登入;用户/管理员登入成功后进入航班订票界面/航班管理界面,(航班订票界面:航班信息浏览、航班信息查询、订票、机票详 情/退票、用户信息修改),(航班管理界面:航班信息浏览、航班信息查询、航班信息修改、用户信息查询、管理员信息修改),用户/管理员选择不同功能进行具体的操作。(3)流程模块框架图:ChangeUserInformation(用户详情/

12、修改)ReturnTicket(机票详情/退票)User(用户)BookTicket(订票)BrowseAirplane(航班信息浏览)Login(注册)Main(登入界面)FindAirpalne(航班信息查询)Admin(管理员)ChangeAdminInformation(管理员信息修改)ModificationAirplane(航班信息修改)FindUser(用户信息查询)4. 结果与结论4.1抽象数据对象与数据存储文件结构1. 数据对象:(1) 航班对象package com.airplane.uiimport flash.display.MovieClip;public class

13、 AirplaneInformation extends MovieClipprivate var _id:String;/航班号private var _be:String;/起始站private var _ed:String;/终点站private var _date:String;/时间private var _amount:uint;/票数private var _price:Number;/价格private var _rebate:Number;/折扣public function AirplaneInformation(id:String="NUll",be:

14、String="NULL",ed:String="Null",date:String="NULL",amount:uint=0,price:Number=0,rebate:Number=0)/构造函数构造航班对象的内部属性_id=id;_be=be; _ed=ed;_date=date;_amount=amount;_price=price;_rebate=rebate;init();private function init():void/可视化界面显示idtxt.text=_id;betxt.text=_be;edtxt.text

15、=_ed;datetxt.text=_date;amounttxt.text=String(_amount);/强制类型转换pricetxt.text=String(_price); /强制类型转换rebatetxt.text=String(_rebate); /强制类型转换(2) 机票对象:(略)与航班对象相比少了_rebate(折扣)属性,其他一致。(3) 用户对象:不有具体类生成,其涉及的操作最多,由存储的文件动态生成。2. 数据存储文件:(1) airplane.xml:<data>./前还有多条记录<airplane><id>01</id&g

16、t;<be>北京</be><ed>南京</ed><date>星期一</date><price>1000</price><rebate>0.8</rebate><amount>5</amount></airplane>./后还有多条记录</data>(2) userData.xml:<data>./前还有多条记录<user><Id>admin</Id><key>12345

17、6</key><name>null</name><sex>null</sex><pId>null</pId><tell>null</tell><Email>null</Email><airplane>null</airplane></user> ./后还有多条记录</data>4.2高频语句模块概括说明package ./包路径import ./导入相应的类;public class (类名) extends Spr

18、iteprivate var _something:Something;/属性定义(事例);./略以下是高频的语句:private var _windowsWidth:Number = stage.stageWidth;/获取舞台的宽;private var _windowsHeight:Number = stage.stageHeight;/获取舞台的高private var _myTween:Tween;/缓动类,用于设置可视化原件的缓动效果;private var _adminData:SharedObject;/管理员信息对象。private var _loader:Loader;/用

19、于加载其他swf文件(模块);private var _xml:XML;/用于加载用户数据。private var _xmlLoader:URLLoader;/用于加载用户数据。./略public function (类名)()/构造函数init();private function init():void.initAirplaneData();/初始化航班信息,加载用户信息与管理员信息类似。initTest();/常见属性说明. private function initTest()::oid._something.x=(值)/设置原件在舞台的位置_something.y=(值)/设置原件在

20、舞台的位置_something.alpha=0.5/设置原件的透明度0至1;_something.text="输出文本显示"/_something为动态文本框时设置输出文字;var str:String=_something.text;/_something.text为输入文本框,传入字符;_myTwenn=new Tween(_something,"设置缓动的属性(x/y/alpha.)",(效果),(起始状态),(结束状态),(持续时间),true);/Tween用于可视化原件缓动效果的设置;.private function initAirplan

21、eData():void /打开本地储存空间_airplaneData = SharedObject.getLocal("Airplane","/");if (_airplaneData.data.airplaneXmlData != null)/如果储存的数据元件不为空,则加载存储的数据。trace("不是空的!");_xml = XML(_airplaneData.data.airplaneXmlData);/对xml文件进行初始化赋值;else/否则加载默认的数据元件。_xmlLoader=newURLLoader(newURL

22、Request("com/airplane/data/airplaneData.xml");/加载默认航班的信息文件xmlLoader.addEventListener(Event.COMPLETE,xmlLoader);/为_xmlLoader添加事件监听,当期完全加载private function xmlLoader(event:Event):void_xml = XML(_xmlLoader.data);_airplaneData.data.airplaneXmlData = _xml;4.3核心模块说明数据结构有序表的应用本设计的核心是对数据文件的操作,而数据在相

23、应的xml文件中的存储形式及为顺序表,其涉及的操作都为顺序表的基本操作:遍历、查找、删除、增添、插入等。(1) 航班信息浏览(顺序表的遍历):private function initAirplaneList():voidfor each (var _airplaneXml:XML in _xml.airplane)/在xml文件中遍历每个airplane节点,生成每个节点航班对应的xml文件。var _airplane:AirplaneInformation = new AirplaneInformation(_airplaneXml.id,_airplaneXml.be,_airplane

24、Xml.ed,_airplaneXml.date,_airplaneXml.amount,_airplaneXml.price,_airplaneXml.rebate);/*利用每个航班的xml文件中航班的属性生成一个航班实例。*/var i:uint = _airplaneXml.childIndex();/*i表示的就是每个航班信息在xml文件中顺序表的索引*/_ = "p" + i;airplaneSprite.addChild(_airplane);/*在舞台的空元件airplaneSprite中添加航班实例*/_airplane.y =

25、80 * (i + 0.5);/*设置航班实例在airplaneSprite中位置*/(2) 航班信息查询(顺序表的查询):private function findWithSet(event:MouseEvent):void/*从输入文本获取相应的属性赋值*/_idString = MovieClip(chooseSprite.getChildAt(0).idtxt.text;/航班号_beString = MovieClip(chooseSprite.getChildAt(0).betxt.text;/起始站_edString = MovieClip(chooseSprite.getChi

26、ldAt(0).edtxt.text;/终点站_dateString = MovieClip(chooseSprite.getChildAt(0).datetxt.text;/日期var n:uint = 0;/*遍历xml文件,生成每个航班信息对应xml信息文件,在顺序表中查找相应的项*/for each (var _airplaneXml:XML in _xml.airplane)/*设置匹配三种键值查找*/*第一种匹配的键值为id(航班号)*/if (_idString=String(_airplaneXml.id)/*如果输入的航班号与顺序表中的航班号相匹配则为查找成功*/var _a

27、irplane0:AirplaneInformation = new AirplaneInformation(_airplaneXml.id,_airplaneXml.be,_airplaneXml.ed,_airplaneXml.date,_airplaneXml.amount,_airplaneXml.price,_airplaneXml.rebate);_ = "p" + n;airplaneSprite.addChild(_airplane0);_airplane0.y = 80 * n;n+;_bool = true;/*第二种匹配键值

28、为:be(起始站)与ed(终点站)*/else if (_beString=String(_airplaneXml.be)&&_edString=String(_airplaneXml.ed)/*如果顺序表中某节点与be、ed想匹配则为查找成功*/var _airplane1:AirplaneInformation = new AirplaneInformation(_airplaneXml.id,_airplaneXml.be,_airplaneXml.ed,_airplaneXml.date,_airplaneXml.amount,_airplaneXml.price,_a

29、irplaneXml.rebate);_ = "p" + n;airplaneSprite.addChild(_airplane1);_airplane1.y = 80 * n;n+;_bool = true;/*第三种匹配键值为:be(起始站)与ed(终点站)、date(日期)*/else if (_beString=String(_airplaneXml.be)&&(_edString=String(_airplaneXml.ed)&&(_dateString=String(_airplaneXml.date)

30、/*同上三项相匹配则查找成功*/var _airplane2:AirplaneInformation = new AirplaneInformation(_airplaneXml.id,_airplaneXml.be,_airplaneXml.ed,_airplaneXml.date,_airplaneXml.amount,_airplaneXml.price,_airplaneXml.rebate);_ = "p" + n;airplaneSprite.addChild(_airplane2);_airplane2.y = 80 * n;n+;

31、_bool = true;resultOrBack();(3) 航班信息修改(顺序表的修改、删除、增添):private function findSite(str:String):intvar i:int = 0;/*遍历整个xml文件顺序表,获取符合条件航班信息在顺序表中的索引,若不满足则返回-1*/for each (var _airplaneXml:XML in _xml.airplane)/*i表顺序表中每条航班的顺序索引*/i = _airplaneXml.childIndex();if (str=String(_airplaneXml.id)/*满足条件之则返回索引值*/retu

32、rn i;break;i=-1;return i;/否则返回-1;简洁描述航班那信息修改:private function change():voidvar n:uint=_xml.airplane.length();/获取航班文件中航班信息的条数,即顺序表的长度。if(var num:int=findSite(id)!=-1)/id是由动态文本框输入修改航班号delete _xml.airplanenum;/删除目标航班;_xml.airplanenum=newAirplaneXml;/修改目标航班;_xml.airplanen=newAirplaneXml;/增添航班;.elsetrace

33、("未找到匹配项")(4) 用户注册(顺序表操作):private function affirm(event:MouseEvent):voidPromit.alpha=1;/*从输入文本框获取相应的属性赋值*/var xmlLength:uint=_xml.user.length();var _id:String=String(loginSprite.Idtxt.text);var _key:String=String(loginSprite.keytxt.text);var _mkey:String=String(loginSprite.mkeytxt.text);va

34、r _name:String=String(loginStxt.text);var _sex:String=String(loginSprite.sextxt.text);var _pId:String=String(loginSprite.pIdtxt.text);var _tell:String=String(loginSprite.telltxt.text);var _Email:String=String(loginSprite.Emailtxt.text);/*生成新的用户信息的xml文件*/var tempXml:XML=<data><user

35、><Id>_id</Id><key>_key</key><name>_name</name><sex>_sex</sex><pId>_pId</pId><tell>_tell</tell><Email>_Email</Email><airplane>null</airplane></user></data>var arrUser:Array=_id,_key,_mkey,_n

36、ame,_sex,_pId,_tell,_Email;/*如果新注册的用户满足1.新注册的账号与密码不与已有的账号密码相同、2.填写项目完整、3.两次密码相同、才能注册*/if(!(testID_key(_id,_key)|testNull(arrUser)|testKeys(_key,_mkey)_xml.userxmlLength=tempXml.user;_userData = SharedObject.getLocal("UserData","/");/打开存储空间_userData.data.userXmlData=null;_userData

37、.data.userXmlData=_xml;/添加新注册的用户信息Promit.txt.text="注册成功!"/*按键效果设置,与事件监听的移除*/affirmBtn.alpha=0.3;affirmBtn.buttonMode=false;affirmBtn.removeEventListener(MouseEvent.CLICK,affirm);_myTween=new Tween(Promit,"y",Strong.easeInOut,Promit.y,_windowsHeight/2,1,true);private function test

38、Null(arr:Array):Boolean/验证是否所有的信息都有填写完整;var bool:Boolean=false;var n:uint=arr.length;for(var i:uint;i<n;i+)if(arri="")bool=true;Promit.txt.text="账号信息填写不完整,请从新确认修改!"break;return bool;private function testID_key(id:String,key:String):Boolean/验证账号是否已经存在var bool:Boolean=false;/*遍历

39、顺序表,找出满足与否*/for each(var _user:XML in _xml.user)if(id=String(_user.Id)&&key=String(_user.key)bool=true;Promit.txt.text="账号已存在,请从新确认修改!"break;return bool;private function testKeys(key:String,mkey:String):Boolean/验证两次输入的密码是否一致;var bool:Boolean=false;if(key!=mkey)Promit.txt.text="

40、;两次密码不相同,请从新确认修改!"bool=true;return bool;(5) 定票(推荐航班功能的实现):由输入文本框出入预定的航班号,如果在航班信息文件中遍历找到相应的航班且航班票数不为空,则将当前的航班信息airplane赋值给当前user.airplane,且airplane.amount-1,订票成功!若预定的航班无票,则有相应的航班推荐:. if (findNewAirplane != -1 && testAmount)trace("找到推荐航班");elsetrace("未找到推荐航班"); /当前航班无票

41、时推荐航班,传入原查找航班的起始站、终点站、还有航班号private function findNewAirplane(id:String,be:String,ed:String):intvar i:int = 0;/遍历文件顺序表,生成每个航班的信息for each (var _tempXml:XML in _airplaneXml.airplane)i = _tempXml.childIndex();/当查找的航班满足起始与终点站与原查找航班相同且航班号不同查找成功!if (be=String(_tempXml.be)&&(ed=String(_tempXml.ed)&am

42、p;&(id!=String(_tempXml.id)&&(uint(_tempXml.amount)!=0)return i;break;i=-1;return i;/判断查找的航班的票数是否为零private function testAmount(num:int):Booleanvar bool:Boolean=true;if(int(_airplaneXml.airplanenum.amount)<=0)bool=false;return bool;订票(6) 退票:与订票类似,先判断user.airplane是否为空,若不为空,取user.airplane.id为查找的键值,遍历航班的信息文件若匹配其id,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论