




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软 件 学 院 综合训练项目报告书课程名称 .NET框架程序设计 项目名称 机票预订系统 专业班级 软件13- 7班 组 别 第9组 成 员 任课教师 刘亮 目 录1 设计时间32 设计任务33 设计内容33.1问题分析4 3.1.1新用户注册4 3.1.2验证密码登陆4 3.1.3用户信息界面43.2程序设计53.3测试与分析83.3.1测试83.3.2分析83.4 代码94 总结与展望24参考文献251 设计时间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.csprotected void Page_Load(object sender, EventArgs e) DateTime d = DateTime.Now; Label1.Text = d.ToLongDateString() + d.ToLongTimeString(); if(Sessionpass=right) HyperLink1.Text=已登录; HyperLink1.NavigateUrl = /用户订单.aspx; if (Sessiontiaozhuanzhuye = right) Label2.Text = 登陆超时,请重新登陆!; 登陆.aspx.cs protected void Button1_Click(object sender, EventArgs e) String conStr = ConfigurationManager.ConnectionStringsConnectionString.ConnectionString; OracleConnection conn = new OracleConnection(conStr); conn.Open(); OracleCommand cmd = new OracleCommand(SELECT 用户名 FROM 用户信息 WHERE 用户名 = + TextBox1.Text + , conn); if (Button1.TabIndex 3) Sessiontiaozhuanzhuye = right; Response.Redirect(Default.aspx); else if (cmd.ExecuteScalar() = null) Label1.Text = 用户名不存在!; Sessionpass = null; /double.Parse( Button1.TabIndex+; else cmd.CommandText = select 用户名,密码 from 用户信息 where 用户名 = + TextBox1.Text + and 密码 = + TextBox2.Text + ; /cmd.Connection if (cmd.ExecuteScalar() = null) Label1.Text = 密码错误,请重新输入!; Sessionpass = null; Button1.TabIndex+; else cmd.CommandText = select 用户名,密码,状态 from 用户信息 where 用户名 = + TextBox1.Text + and 密码 = + TextBox2.Text + and 状态=1; if (cmd.ExecuteScalar() = null) Sessionpass = right; cmd.CommandText = update 用户信息 set 状态=1 where 用户名 = + TextBox1.Text + ; cmd.ExecuteNonQuery(); conn.Close(); Response.Redirect(用户订单.aspx); /Label1.Text = 此用户id已经处于登录状态; else Label1.Text = 此用户id已经处于登录状态; Button1.TabIndex+; /*Sessionpass = right; cmd.CommandText = update 用户信息 set 状态=1 where 用户名 = + TextBox1.Text + and 密码 = + TextBox2.Text + ; cmd.ExecuteNonQuery(); Sessionkhbj = TextBox1.Text; Response.Redirect(用户订单.aspx);*/ conn.Close(); 票价.aspx.cs String conStr = ConfigurationManager.ConnectionStringsConnectionString.ConnectionString; protected void Page_Load(object sender, EventArgs e) DateTime d = DateTime.Now; Label2.Text = d.ToLongDateString() + d.ToLongTimeString(); protected void Button2_Click(object sender, EventArgs e) OracleConnection conn = new OracleConnection(conStr); conn.Open(); OracleCommand cmd = new OracleCommand(select 用户名 from 用户信息 where 用户名 = + TextBox1.Text + , conn); if(cmd.ExecuteScalar()=null) Label1.Text = 用户不存在,验证失败,请重新验证; else Label1.Text = 验证通过; protected void Button1_Click(object sender, EventArgs e) OracleConnection conn = new OracleConnection(conStr); conn.Open(); for (int ii = 0; ii GridView1.Rows.Count; ii+) CheckBox cc = GridView1.Rowsii.FindControl(CheckBox1) as CheckBox; if (cc.Checked) SqlDataSource1.InsertParameters.Clear(); SqlDataSource2.InsertParameters.Clear(); SqlDataSource2.InsertParameters.Add(DID, TextBox1.Text); SqlDataSource2.InsertParameters.Add(航空公司, GridView1.Rowsii.Cells1.Text); SqlDataSource2.InsertParameters.Add(出发城市, GridView1.Rowsii.Cells2.Text); SqlDataSource2.InsertParameters.Add(到达城市, GridView1.Rowsii.Cells3.Text); SqlDataSource2.InsertParameters.Add(飞机型号, GridView1.Rowsii.Cells4.Text); SqlDataSource2.InsertParameters.Add(起飞时间, GridView1.Rowsii.Cells5.Text); SqlDataSource2.InsertParameters.Add(到达时间, GridView1.Rowsii.Cells6.Text); SqlDataSource2.InsertParameters.Add(出发日期, GridView1.Rowsii.Cells7.Text); SqlDataSource2.InsertParameters.Add(单程票价, GridView1.Rowsii.Cells8.Text); SqlDataSource2.InsertParameters.Add(往返票价, GridView1.Rowsii.Cells9.Text); /SqlDataSource2.InsertParameters.Add(订购时间, Label2.Text); /SqlDataSource1.InsertCommand = insert into 机票订单 values(+a+,+b+,+c+,+d+,+t+,+f+,+g+,+h+,+i+,+k+); /Sessionccsj = Label2.Text; Sessionkhbj = TextBox1.Text; SqlDataSource2.Insert(); Label1.Text = 成功加入我的订单; else Label1.Text = 加入订单失败!请重试或返回; conn.Close(); 往返票.aspx.csprotected void Page_Load(object sender, EventArgs e) Sessionwangfan=right; if (Sessionzhifu = right & Sessionwangfan = right) Button3.Text = 已购往返票订单; for (int ii = 0; ii GridView2.Rows.Count; ii+) String conStr = ConfigurationManager.ConnectionStringsConnectionString.ConnectionString; OracleConnection conn = new OracleConnection(conStr); conn.Open(); OracleCommand cmd = new OracleCommand(delete from 单程票 where 出发城市 = + GridView2.Rowsii.Cells2.Text + and 到达城市= + GridView2.Rowsii.Cells3.Text + , conn); cmd.ExecuteNonQuery(); conn.Close(); protected void Button2_Click(object sender, EventArgs e) if (Label1.Text = |Label1.Text =0) Label2.Text = 支付失败!; else Response.Redirect(支付.aspx); protected void Button1_Click(object sender, EventArgs e) double sum = 0.0; for (int ii = 0; ii GridView1.Rows.Count; ii+) CheckBox cc = GridView1.Rowsii.FindControl(CheckBox1) as CheckBox; if (cc.Checked) sum += (double.Parse(GridView1.Rowsii.Cells8.Text); Label1.Text = sum.ToString(); protected void Button3_Click(object sender, EventArgs e) if (Sessionzhifu = right & Sessionwangfan = right) Sessionzhifu = ; Sessionwangfan = ; else for (int ii = 0; ii GridView2.Rows.Count; ii+) String conStr = ConfigurationManager.ConnectionStringsConnectionString.ConnectionString; OracleConnection conn = new OracleConnection(conStr); conn.Open(); OracleCommand cmd = new OracleCommand(delete from 往返票 where 出发城市 = + GridView2.Rowsii.Cells2.Text + and 到达城市= + GridView2.Rowsii.Cells3.Text + , conn); cmd.ExecuteNonQuery(); conn.Close(); /*调用删除代码*/ 修改密码.aspx.cs try conn.Open(); OracleCommand cmd = new OracleCommand(select 用户名 from 用户信息 where 用户名 = + TextBox1.Text + , conn); if(cmd.ExecuteScalar()=null) Label1.Text = 用户名不存在!; TextBox1.Text = TextBox2.Text = TextBox3.Text = ; else cmd.CommandText = update 用户信息 set 密码=:mima where 用户名=:yonghuming; cmd.Parameters.Add(new OracleParameter(:yonghuming, OracleType.VarChar); cmd.Parameters:yonghuming.Value = TextBox1.Text; cmd.Parameters.Add(new OracleParameter(:mima, OracleType.VarChar); cmd.Parameters:mima.Value = TextBox2.Text; cmd.ExecuteNonQuery(); TextBox1.Text = TextBox2.Text = TextBox3.Text = ; Label1.Text = 修改成功!; conn.Close(); catch Label1.Text = 出现错误,修改失败!请返回或者重新输入; TextBox1.Text = TextBox2.Text = TextBox3.Text = ; 用户订单.aspx.cs public void select2() try OracleConnection conn = new OracleConnection(conStr); conn.Open(); OracleCommand cmd = new OracleCommand(); cmd.Connection = conn; cmd.CommandText = update 用户信息 set 状态=0 where 状态=1; cmd.ExecuteNonQuery(); conn.Close(); catch Response.Write(出现错误); protected void Page_Load(object sender, EventArgs e) Sessionyonghudingdan = right; if (Sessionzhifu = right & Sessionyonghudingdan = right) Button8.Text = 已购单程票订单; if(Sessionpass=null) Response.Redirect(登陆.aspx); /selctdeng(); for (int ii = 0; ii GridView3.Rows.Count; ii+) String conStr = ConfigurationManager.ConnectionStringsConnectionString.ConnectionString; OracleConnection conn = new OracleConnection(conStr); conn.Open(); OracleCommand cmd = new OracleCommand(delete from 往返票 where 出发城市 = + GridView3.Rowsii.Cells2.Text + and 到达城市= + GridView3.Rowsii.Cells3.Text + , conn); cmd.ExecuteNonQuery(); conn.Close(); protected void Button2_Click(object sender, EventArgs e) Sessionpass = null; select2(); Response.Redirect(Default.aspx); protected void Button4_Click1(object sender, EventArgs e) Label1.Text = TextBox1.Text; protected void Button5_Click(object sender, EventArgs e) if (Label2.Text = ) Label3.Text=支付失败!; else Response.Redirect(支付.aspx); protected void Button6_Click(object sender, EventArgs e) double sum = 0.0; for (int ii = 0; ii GridView2.Rows.Count; ii+) CheckBox cc = GridView2.Rowsii.FindControl(CheckBox1) as CheckBox; if (cc.Checked) sum += (double.Parse(GridView2.Rowsii.Cells8.Text); Label2.Text = sum.ToString(); protected void Button7_Click(object sender, EventArgs e) String conStr = ConfigurationManager.ConnectionStringsConnectionString.ConnectionString; OracleConnection conn = new OracleConnection(conStr); conn.Open(); OracleCommand cmd = new OracleCommand(select 用户名 from 用户信息 where 用户名 = + TextBox2.Text + and 密码 = + TextBox3.Text + , conn); if (cmd.ExecuteScalar() = null) Label1.Text = 输入错误; else Response.Redirect(修改密码.aspx); protected void Button8_Click(object sender, EventArgs e) if (Sessionzhifu = right & Sessionyonghudingdan = right) /Button8.Text = 已购单程票订单; Sessionzhifu = ; Sessionyonghudingdan = ; else for (int ii = 0; ii GridView3.Rows.Count; ii+) String conStr = ConfigurationManager.ConnectionStringsConnectionString.ConnectionString; OracleConnection conn = new OracleConnection(conStr); conn.Open(); OracleCommand cmd = new OracleCommand(delete from 单程票 where 出发城市 = + GridView3.Rowsii.Cells2.Text + and 到达城市= + GridView3.Rowsii.Cells3.Text + , conn); cmd.ExecuteNonQuery(); conn.Close(); 支付.aspx.cs protected void Page_Load(object sender, EventArgs e) Sessionzhifu=right; protected void Button1_Click(object sender, EventArgs e) /*if(Sessionyonghudingdan=right) Response.Redirect(用户订单.aspx); */ if (Sessionwangfan = right) Response.Redirect(往返票.aspx); else Response.Redirect(用户订单.aspx); 注册.aspx.cs try conn.Open(); OracleCommand cmd = new OracleCommand(select 用户名 from 用户信息 where 用户名 = + TextBox1.Text + , conn); if(cmd.ExecuteScalar()=null) cmd.CommandText = insert into 用户信息 values(seqid.nextval,:yonghuming,:mima,:lianxifangshi,:shenfen,0); cmd.Parameters.Add(new OracleParameter(:yonghuming, OracleType.VarChar); cmd.Parameters:yonghuming.Value = TextBox1.Text; cmd.Parameters.Add(new OracleParameter(:mima, OracleType.VarChar); cmd.Parameters:mima.Value = TextBox2.Text; cmd.Parameters.Add(new OracleParameter(:lianxifangshi, OracleType.Number); cmd.Parameters:lianxifangshi.Value = TextBox4.Text; cmd.Parameters.Add(new Oracle
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO/IEC 21122-4:2025 EN Information technology - JPEG XS low-latency lightweight image coding system - Part 4: Conformance testing
- 【正版授权】 ISO 80000-8:2020/Amd 1:2025 EN Quantities and units - Part 8: Acoustics - Amendment 1
- 【正版授权】 ISO 502:2025 EN Hard coal - Determination of caking power - Gray-King coke test
- 【正版授权】 ISO 16625:2025 EN Cranes and hoists - Selection of wire ropes,drums and sheaves
- 【正版授权】 IEC 63380-2:2025 FR Standard interface for connecting charging stations to local energy management systems - Part 2: Specific data model mapping
- 【正版授权】 IEC 60598-2-1:1979 FR-D Luminaires. Part 2: Particular requirements. Section One: Fixed general purpose luminaires
- 【正版授权】 IEC 60269-2:1986 FR-D Low-voltage fuses. Part 2: Supplementary requirements for fuses for use by authorized persons (fuses mainly for industrial application)
- 校园防盗防火安全知识培训课件
- 公孙策面试题及答案
- 煤分析考试题及答案
- 手术室安全细节管理
- 继发性颅脑损伤的护理
- 《保角变换法在求解电势中的应用研究》7500字(论文)
- TCHIA 47-2024 智慧重症病房建设规范
- 多模态技术在智能养鸡工厂中的研究现状与展望
- 征信知识专项培训课件
- 《基于深度强化学习在游戏上的应用》
- 中建给排水工程施工方案
- 电力建设工程施工合同(合同版本)
- 糖尿病饮食的健康宣教
- 《公务员录用体检操作手册(试行)》
评论
0/150
提交评论