软件学院综合训练项目报告书课程名称.NET框架程序设计项目名称机票预订系统专业班级软件13-7班组别第9组成员任课教师刘亮目录1设计时间...................................32设计任务...................................33设计内容...................................33.1问题分析.........................................43.1.1新用户注册......................................43.1.2验证密码登陆.....................................43.1.3用户信息界面.....................................43.2程序设计.........................................53.3测试与分析.......................................83.3.1测试............................................83.3.2分析............................................83.4代码.............................................94总结与展望........................................24参考文献....................................241设计时间2016-1-192设计任务当今世界,以信息技术为主要标志的科技进步日新月异,高科技成果向现实生产力的转化越来越快。纵观全球经济发展,信息技术和信息产业已经成为经济增长的主要推动力之一,正在改变着传统的生产和经营方式以至生活方式,发达国家经过产业结构的升级和经济结构的转型已进入信息经济阶段。信息资源已经成为国民经济和社会发展的战略资源,信息化水平也已成为现代水平和综合国力的重要标志。今年是“十五”计划开局之年,中共十五届五中全会通过的国民经济和社会发展第十个五年计划建议中已明确指出:“信息化是当今世界经济和社会发展的大趋势,也是我国产业优化升级和实现工业化、现代化的关键环节。”“大力推进国民经济和社会信息化,是覆盖现代化建设全局的战略举措。”,可见,党和国家已将国民经济和社会信息化放在优先发展位置,体现了先进生产力的客观要求,是一项重要的战略决策。这是民航加快发展的机遇,更是民航信息化的难得机遇。随着知识经济的到来,人类已经逐步进入信息化社会,信息增长的速度越来越快,人们希望利用先进的管理理论方法手段来得到并处理越来越多的信息,以提高工作效率和管理水平。由于信息资源对人们生活的重要性,不断提高信息的收集,传输,加以利用等活动,日益成为人们社会生活的重要组成部分。网上机票预订管理系统的产生和发展正好满足人们的这种需求。现在将详细介绍我的课程设计——机票预订系统。3设计内容随着民航事业的壮大,人们消费水平的提高,在现实生活中,乘坐民航的消费者也越来越多。由于中国人口众多,订购机票成为了旅客们最头疼的问题!怎样为旅客提供高效,便捷的服务是国家在航空运输中应该首要解决的问题。通过网络实现机票预定已经成为一种消费的时尚,给消费者带来极大的便捷!预定查询系统因此在各机票预定网点中的作用也越显重要。因此,开发一套具有完整的存储,查询,核对,打印机票功能的实时机票预定系统更显紧迫。机票预定系统应克服存储乘客信息少,查询效率低下等问题外,更重要的是其安全性,可靠性,这关系到航班的乘客的安全及准确,本系统因面向广大机票预定网点,因此要能在售票网点中普及,则需要开发一个功能全,价格能被顾客所接受的系统。系统要实现的基本功能是航班的售票,订票,退票,乘客信息的管理;而系统在以后扩展时还可以实现的功能有:对机组工作人员的管理,预定机票的送票情况管理等。此系统的开发由我们分模块完成,而我所负责的模块是实现系统的售票,订票,退票功能。要求系统能有效、快速、安全、可靠和无误的完成上述操作。并要求客户机的界面要简单明了,易于操作,服务器程序利于维护。机票预定管理系统是典型的信息管理系统,其主要开发包括后台数据库的建立和维护,以及前端应用程序的开发两个方面。对于前者要求建立起数据库一致性和完整性强,数据安全性好的库。而后者则要求应用程序功能完备,易使用等特点。3.1问题分析3.1.1新用户注册新用户可以注册,注册时输入用户名可以查询用户可不可用,可用就可以注册,注册时可以判断用户输入的密码和验证密码是否相同,相同才给以注册,如果满意可以点注册,注册成功后用户可以选择不用在回到登陆界面,可以直接陆到用户主界面,以后就可以用这个用户登录了。3.1.2验证密码登陆验证登陆名密码,正确进入主菜单,如果输入相应用户密码正确,跳转;不正确则清空登录框,最多可以输入三次,三次不正确系统会自动关闭。3.1.3用户信息界面主窗体的用户信息界面,用户点击个人查询按钮,可以把自己的个人信息显示到界面上,还可以对自己的信息进行相应的修改,还可以点击我的机票查询,查询该用户的订票记录;选择订购往返票可以继续预订该架航班的往返票,否则只能订购单程票;3.1.4订票界面主窗体的订票界面,你可以点击你想查询的有关机票的信息的按钮(查询出发地,查询目的地,航线查询,客户信息查询)获得相关信息的表,根据表的内容,你可以选中你要定的票信息,点确定后在下面会显示你的机票的相关内容,如果满意可以点击订票,把相关信息添加到机票数据库表中,跳转到支付界面;如果不满意,可以点击返回,所有信息清空,再重新选择;图1机票预定系统业务系统功能图3.2程序设计1.本程序中用到的所有抽象数据类型的定义及实现;数据表的数据结字典表名描述航空信息表用于存储各个航班的航行情况票价用于存储各个航班路线的价钱等信息机票订单用于存储用户的下单情况用户信息用于存储用户的个人基本信息,完成注册、登陆等操作往返票用于存储客户下单的往返票信息单程票用于存储客户下单的单程票信息数据库序列的数据字典序列描述seqid用于实现订单的订单号的自增和航空信息表的id信息的自增触发器的数据字典触发器描述in_wangfanpiao实现机票订单表完成删除操作后将这条数据插入往返票表航空信息表;票价表;机票订单表;用户信息表;往返票表;单程票表;将E-R图转换成关系模型,关系的主码用横线标识:航空信息表(did,航空公司,出发城市,到达城市,飞机型号,起飞时间,到达时间,出发日期)票价(did,航空公司,出发城市,到达城市,飞机型号,起飞时间,到达时间,出发日期,单程票价,往返票价)机票订单(did,航空公司,出发城市,到达城市,飞机型号),起飞时间,到达时间,出发日期,单程票价,往返票价,订购时间)用户信息(id,用户名,密码,联系方式,身份,状态)往返票(did,航空公司,出发城市,到达城市,飞机型号,起飞时间,到达时间,出发日期,往返票价,订购时间)单程票(did,航空公司,出发城市,到达城市,飞机型号,起飞时间,到达时间,出发日期,单程票价,订购时间)2.主程序的流程及函数的调用关系图。3.3测试与分析3.3.1测试给出测试数据,输出测试的结果,测试数据应该完整(覆盖算法各种情况)。在登陆部分我用了session对象来保持登陆的状态,用for循环控制登陆输入的次数,用exexcutescalar来返回选择数据库用户名和密码的有无情况;在各个部分显示数据库的数据用到了gridview控件,在支付界面使用了for循环选择gridview的行的长度,并且使用checkbox来检查哪行被选中,从而实现支付算法;从gridview中选择要插入的行到数据库中也是这样设计的,不过相应的代码不同,其他用gridview中的编辑选项实现删除操作,将删除的text改成选购,当删除某一行时,利用数据库中设置的触发器将这行数据插入到已购订单表中,从而实现选购。购票成功后还可以利用gridview来显示,不满意还可以删除之。3.3.2分析1.调试过程中遇到的问题是如何解决的以及对设计与实现的回顾、讨论和分析;运行程序的时候出现了很多bug,经过一番分析最终得到了解决。比如插入数据的时候遇到插错行或者不能插入的情况。2.算法的时间复杂度和空间复杂度的分析,改进设想。从这方面分析,我的算法比较简单但是相同的代码写了很多遍,我觉得应该适当的将这部分相同的代码放在一个函数中,用其他模块来调用,这样才能提高软件的运行效率和可读性。3.4代码源程序代码及必要注释。MasterPage.master.csprotectedvoidPage_Load(objectsender,EventArgse){DateTimed=DateTime.Now;Label1.Text=d.ToLongDateString()+d.ToLongTimeString();if(Session[pass]==right){HyperLink1.Text=已登录;HyperLink1.NavigateUrl=~/用户订单.aspx;}if(Session[tiaozhuanzhuye]==right){Label2.Text=登陆超时,请重新登陆!;}登陆.aspx.csprotectedvoidButton1_Click(objectsender,EventArgse){StringconStr=ConfigurationManager.ConnectionStrings[ConnectionString].ConnectionString;OracleConnectionconn=newOracleConnection(conStr);conn.Open();OracleCommandcmd=newOracleCommand(SELECT用户名FROM用户信息WHERE用户名='+TextBox1.Text+',conn);if(Button1.TabIndex3){Session[tiaozhuanzhuye]=right;Response.Redirect(Default.aspx);}else{if(cmd.ExecuteScalar()==null){Label1.Text=用户名不存在!;Session[pass]=null;//double.Parse(Button1.TabIndex++;}else{cmd.CommandText=select用户名,密码from用户信息where用户名='+TextBox1.Text+'and密码='+TextBox2.Text+';//cmd.Connectionif(cmd.ExecuteScalar()==null){Label1.Text=密码错误,请重新输入!;Session[pass]=null;Button1.TabIndex++;}else{cmd.CommandText=select用户名,密码,状态from用户信息where用户名='+TextBox1.Text+'and密码='+TextBox2.Text+'and状态=1;if(cmd.ExecuteScalar()==null){Session[pass]=right;cmd.CommandText=update用户信息set状态=1where用户名='+TextBox1.Text+';cmd.ExecuteNonQuery();conn.Close();Response.Redirect(用户订单.aspx);//Label1.Text=此用户id已经处于登录状态;}else{Label1.Text=此用户id已经处于登录状态;Button1.TabIndex++;/*Session[pass]=right;cmd.CommandT