飞机订票系统实验报告

合集下载

QTP测试实验报告-飞机票订票系统(word文档良心出品)

QTP测试实验报告-飞机票订票系统(word文档良心出品)

QTP 自动化功能测试实践一、实验目的1、熟悉QTP自动化功能测试流程2、能够利用QTP进行B/S或者C/S架构程序的自动化功能测试二、实验内容功能测试是针对应用系统进行测试,是基于产品功能说明书,是在已知产品所应具有的功能,从用户角度来进行功能验证,以确认每个功能是否都能正常使用。

本项目主要使用QuickTest 对其自带的MercuryTours 网站/ 飞机票订票系统进行功能测试,要求录制预订机票的完整过程,然后执行测试脚本并分析结果。

三、实验要求1 、独立完成;2、提交测试脚本3、提交测试用例说明书及缺陷报告。

四实验内容1 脚本的录制与回放测试及检查点的设置验证脚本代码:Dialog("Login").WinEdit("Agent Name:").Check CheckPoint("Agent Name:") ' 验证乘客名字文本框中的值标准检查点Dialog("Login").WinEdit("Agent Name:").Set "123456" '输入用户名Dialog("Login").WinEdit("Password:").Set "mercury" ' 输入密码Dialog("Login").WinButton("OK").Click ' 单击OK 按钮登陆Window("Flight Reservation").Static("Static").Check CheckPoint("Static") ' 检查页面中的图片元素是否加载Window("Flight Reservation").ActiveX("MaskEdBox").Type "011218"Window("Flight Reservation").WinComboBox("Fly From:").Select "London" Window("Flight Reservation").WinComboBox("Fly To:").Select "Paris"Window("Flight Reservation").WinButton("FLIGHT").ClickWindow("Flight Reservation").Dialog("Flights Table").WinList("From").Select "12534 LON 08:00 AM PAR 10:00 AM AF $165.50" Window("FlightReservation").Dialog("Flights Table").WinButton("OK").Click Window("Flight Reservation").WinEdit("Name:").Set "gcc"Window("Flight Reservation").WinEdit("Tickets:").SetSelection 0,1Win dow("Flight Reservatio n").Wi nEdit("Tickets:").Set "5"Win dow("Flight Reservatio n").Wi nRadioButto n( "Busi ness").Set Window("Flight Reservation").WinButton("Insert Order").Click Win dow("Flight Reservatio n").CIose ' 关闭订票系统 结果- 曲 Run^TinriR D?it3i TableS-- Cbackpoint 1 (Row 1}IS 讨 Actonl Summary 申#自login 白 * ■ AgentNdme:…Checkpoint 'Aceinft I ! [ ■ ■- H K Agent N^mec-SetText |KPassw&rdLSetTe )rt| L M oKcikkilFlight ReservationI5ic Agent N@-me:.Set~ert pir Pa s £ wo rdi . ext二I OKTlick3- Fl gbt Resen r ation2参数化脚本测试本案例中将Flight From 的选项内容设置为参数化类型 脚本代码 With Dialog("Logi n").Win Edit("Age nt Name:").Set "aaaa" .Win Edit("Password:").Set "mercury" .Win Butt on ("OK").CIick曰lest Cha^kp-Qint Sunnmary勃 Run-Time Data latleB Ch&ckpoirrt Iteraticn 11 (Row1)-■』伦 Actiorl SLmiria^y自LogirElDmailsEnd WithWith Win dow("Flight Reservatio n") .ActiveX("MaskEdBox").Type "011218".Win ComboBox("Fly From:").Select DataTable("from", dtGlobalSheet) 参数化 ‘.Win ComboBox("Fly To:").Select "Syd ney" .Win Butto n( "FLIGHT").CIick With .Dialog("Flights Table").Win List("From").Select "12463 LON 03:07 PM SYD 04:48 PM NW $160.40".Win Butto n( "OK").Click End With.Win Edit("Name:").Set "gcc" .Win Edit("Tickets:").Set "3".Win RadioButt on ("Busi ness").Set .Win Butto n("In sert Order").Click .Close End Withwait(1)必须有wait 函数回调给第二次循环预留准备时间 结果脚本录制关键字视图♦namD€DErGH IJLMN1Lo-ijcm 2 iFarra3脚本回放结果4t ft JVWH前¥前"^LHTIW"磚b/l 师工kH inse^ U"2ET " aJtisr"""I Fii^l Fesw-slc-■Q IN■Z™E Fi 丁1 MTrfc*wafu.WaR ( 1 «btfg ihwst華.HI TKtes.自T I E 'ges'lfi 'aTfii IN NP ”" ■adtbac.*T f 1l-t *T»<jfft■严.Stf5KIII >4H '■TWOL W 曾jibtiiiMTt 仲練 fDaAaToDh5KEhi. ' BM > ' E 叶Civile 1 1 vS. tXhOctT 砂'0112145心jiBeF'iW 1Hhpn- Miishiina- ihf Frer-.'K対R1IW "却 1 即-h* II ・丹 T Q * 111 *缺 TL1GHT araStfMTCkfc :)KJ 呵严itiM本案例中对Flight 系统的用户登陆界面进行参数化的黑盒测试 用到6组测试数据测试脚本Dialog("Logi n").Wi nEdit("Age nt Name:").Set DataTable("username", dtGlobalSheet)'输入用户名Dialog("Logi n").Wi nEdit("Password:").Set DataTable("password", dtGlobalSheet)'输入密码Dialog("Logi n").Wi nButto n("OK").CIick '点击登陆 If Dialog("Login").Dialog("Flight Reservations").Exist ThenDialog("Logi n").Dialog("Flight Reservatio ns").Wi nButto n(" 确定").Click ' 弹出 提示框点击确认按钮 Dialog("Log in ").Close else '登陆成功进入订票Win dow("Flight Reservatio n").ActiveX("MaskEdBox").Type "011218"Win dow("Flight Reservatio n").Wi nComboBox("Fly From:").Select "Lo ndon" Win dow("Flight Reservatio n").Wi nComboBox("Fly To:").Select "Paris" Win dow("Flight Reservatio n").Wi nButto n("FLIGHT").CIickWin dow("Flight Reservatio n").Dialog("Flights Table").Wi nList("From").Select耳專 Test Parameter Summary "… 曲 Rur-Timc Ddt? Tablu□ |j^ Porometer Iteration 1 (RevH 电 Actionl SjirnnfiiyEl-- X 由)Parimrter Iteration 2 fRov 刁 X 唱Action] S immsiry(41 Ji login0 X Hight ReservationMa^ktdSox fypt-回fl F ¥ From:占elect 密 Fly TcjLSd&a■ FLIGHT, Click Para meter Results Summary宦 X 曰 Fights T ・bb5— J*◎ P.un Errorffl • Flight ReservationTest Parameter Results name. Resl I Time 厶>n 匕中国転薜时旧Run HtartQd:2D1SHP^135340Ftun ended: 201S/1/7-"12274 LON 01:27 PM PAR 03:07 PM NW $155.00"Win dow("Flight Reservatio n").Dialog("Flights Table").Wi nButton ("OK").CIickWin dow("Flight Reservatio n").Wi nEdit("Name:").Set "gcc"Win dow("Flight Reservatio n").Wi nEdit("Tickets:").Type "5"Window("Flight Reservation").WinEdit("Tickets:").SetSelection 0,1Win dow("Flight Reservatio n").Wi nEdit("Tickets:").Set "5"Win dow("Flight Reservatio n").Wi nRadioButto n( "Busi ness").SetWindow("Flight Reservation").WinButton("Insert Order").ClickWin dow("Flight Reservatio n").CIose ' 退出订票界面End Ifwait(3)脚本录制结果|曾小川L OTH Cwortrfo-Qcfc EizkEne "OK-□Lit”v Q ridlt匚he亡庸wheEher the ' F?gnt fesertiBt =TH ' base sasts . H 931口*□色ttie bLtonChiE CleaE IhrE 占兰四日龙*二「帕用Re时皿如Cbw Cw lhr 'F^h ' wrdsw 誉Funriiinr Gal Wfit 3 }務匕*耳岂护FI M14 4 it Hi ■, d q BMpRl:肌,L-atJi T施I E脚本回放结果鼻Test ^arameterLog nTest S j—匪Run-Time Data Table 由• “ Pa meterLog inTect tte 3 Po ro mctortoginTcrt Ito 3 D| ParometcrtoginTest Ite 自• ParameterLoginTest Ite 用• ParameterLoginTest Ite r« • ® Pa ra meterlog inTe^t IteTest ParameterLoflinTestResults name: R G$5Time Zone: 4=国听;隹对司Run started: 2018/1/7 ・ 14:2059 Run ended 2018/1/7-14 2151。

航空订票系统 数据结构程序设计实验报告3

航空订票系统 数据结构程序设计实验报告3

#define PRINT "%d\t\t%s\t\t%s\t\t星期%s\t\t%d\n ",s[i].num,s[i].start,s[i].over,s[i].time,s[i].count //宏定义输出格式 struct air //定义结构体数组 { int num; //定义航班号 char start[20]; //航班起始站 char over[20]; //航班终点站 char time[10]; //飞行时间 int count; //机票数量 }s[N]; int i,m=0; //定义全局变量,记录下航班信息的数量 char ii[10]; //用来选择是否继续的变量 以上就是我的总体设计思路。 (3) 详细设计: 在本次的课程设计中我负责编制的是初始化、建立数据文 件、数据文件读取、数据文件保存、增加航班信息、订票、退票 业务函数的编写。以下是我的负责部分的详细设计内容: 1) 定义系统初始化函数 模块功能:设立一个初始化函数来得到航班信息。具体设计是第 一次运行程序时自动生成保存航班信息的文件,并输入初始航班信 息,待第二次开始就可以直接读取该文件获得已有的航班信息并可直 接使用。运用了access函数判断文件是否存在。该函数源代码为: 数据文件 是否存在 输入航班信息并建立新数据文件保存下来 从已有的数据文件读取已有的航班信息
/*定义数据结构*/ /*乘客信息*/ typedef struct { char number[10];/*编号*/ char id[20]; /*证件号*/ char name[10]; /*姓名*/ int count; /*订票数*/ char flightname[10];/*乘坐航班号*/ }GUEST; /*航班信息*/ typedef struct {char planenumber[10];/*航班号*/ char Take_off_city[20];/*起飞城市*/ char Arrived_in_city[20];/*抵达城市*/ char takeoff_time[20];/*起飞时间*/ char Landing_time[20];/*降落时间*/ int shipping; /*舱位数*/ char price[5]; /*票价*/ char discount[5]; /*折扣*/ GUEST guest[20]; int sit; }FLY; /*菜单函数,函数返回值为整数,代表所选的菜单项*/ menu_select() { int c; printf("按任意键返回主菜单\n");/*提示压任意键继续*/ getch(); /*读入任意字符*/ printf(" Welcome to\n\n"); printf(" Tickets Booking System\n\n"); printf(" ********************MENU****************\n\n");

飞机订票系统测试报告

飞机订票系统测试报告

飞机订票系统测试报告1. 引言本文档旨在介绍飞机订票系统的测试过程和结果。

飞机订票系统是一款用于用户预订航班机票的在线平台。

通过测试,我们旨在确保系统的功能正常、性能稳定,并且用户能够顺利完成预订流程。

2. 测试环境为了对系统进行全面的测试,我们搭建了以下测试环境:•操作系统:Windows 10•浏览器:Google Chrome,Mozilla Firefox•设备:台式电脑,笔记本电脑,手机(Android,iOS)•网络环境:LAN,WLAN,4G网络3. 测试目标我们的测试目标主要包括以下几个方面:•功能测试:确保系统的各项功能正常运作,包括用户注册、登录、查询航班信息、预订机票等。

•兼容性测试:在不同的操作系统、浏览器和设备上测试系统的兼容性,确保用户可以在不同的环境中正常使用系统。

•性能测试:通过模拟多用户同时访问、查询航班和预订机票,测试系统的性能稳定性和响应速度。

•安全性测试:检查系统的安全性,防止潜在的数据泄露和非法访问。

4. 测试步骤为了对系统进行全面的测试,我们按照以下步骤进行测试:4.1 用户注册和登录功能测试1.打开系统主页,点击注册按钮进入注册页面。

2.输入有效的用户名、密码和邮箱地址,点击注册按钮完成注册。

3.使用注册的用户名和密码,尝试登录系统。

4.验证登录是否成功,检查是否能够正常浏览个人信息页面。

4.2 航班查询功能测试1.登录系统后,点击航班查询按钮进入查询页面。

2.输入有效的出发地、目的地和日期,点击查询按钮进行航班搜索。

3.检查系统是否能够正确地显示符合条件的航班信息。

4.选择一条航班信息,尝试获取详细信息。

4.3 机票预订功能测试1.在航班查询结果页面,选择一条符合条件的航班信息。

2.输入乘客信息和联系方式,点击预订按钮进行机票预订。

3.检查系统是否成功生成订单,并显示预订成功的提示信息。

4.登录用户的邮箱,确认是否收到预订成功的邮件通知。

4.4 兼容性测试在不同的操作系统、浏览器和设备上测试系统的兼容性,包括:•操作系统:Windows,macOS,Linux•浏览器:Google Chrome,Mozilla Firefox,Safari•设备:台式电脑,笔记本电脑,手机(Android,iOS)4.5 性能测试1.使用性能测试工具,模拟多用户同时访问系统。

飞机订票系统测试报告

飞机订票系统测试报告

飞机订票系统功能测试报告课题名称飞机订票系统功能测试报告系/专业班级学号学生姓名指导教师:第一章QTP自动化测试介绍1.1概述QTP是HP公司开发的功能自动化测试工具。

相对于手工测试,QTP自动化测试比人工测试快得多,同时可以避免人工测试的错误,因此,随着测试技术的发展,自动化测试逐渐成为测试的一个重要测试工具。

1.2测试介绍本次课程的内容就是学习QTP自动化测试工具,以飞机订票系统为实例,通过飞机订票的过程,包括登陆、订票、删除等一系列功能操作,运用QTP自动化测试工具来进行具体测试操作,从而来了解并学习QTP自动化测试工具。

在使用QTP进行自动化测试时,所包含的几个步骤:1、准备录制;2、创建对象库;3、创建函数和函数库;4、录制执行;5、强化测试脚本;6、调试脚本;7、在回归测试中运行测试;8、分析结果,报告问题。

按照以上步骤,对飞机订票系统的各个功能进行自动测试,完成系统的测试工作。

1.3 测试内容对于飞机订票系统的自动化测试,首先要熟悉了解一下这个飞机订票系统的基本运行流程,从登陆到订票到查询、删除等一系列基本功能的操作,在对系统流程了解后,再开始对其中的一些功能进行测试工作。

在对这个飞机订票系统,此次测试内容有登陆功能,其中登陆功能测试包含一个用户正确登陆、设置参数可以进行多个用户(正确和错误的)的登陆以及运用手工登陆的方法进行测试,在订票功能中,有对订票是否成功的测试、设置检查点以及循环所有航班的测试,另外还有传真订单的录制,其中有录制签名和录制模式,除此之外还有与数据库的链接等一些简单的功能测试。

1.4测试目标本次课程主要目标就是了解熟悉并学习简单的自动化测试工具,能运用基本的测试工具,对系统进行简单的自动化测试。

对于QTP自动化测试的测试目标:熟悉QTP自动化测试工具及其基本功能掌握QTP自动化测试的基本测试步骤运用QTP测试工具对系统进行简单的自动化测试在QTP测试中,能写出基本的脚本语言对于飞机订票系统的测试目标:测试登陆功能,包括单个用户能否正确登陆、多个用户的正确和错误是否能正确登陆,以及手工能否登陆的测试 订票功能的测试,其中有判断订票是否成功、添加检查点及循环所有航班能否成功测试传真和删除订单的测试,在传真测试中,录制签名后,进行播放时签名是能否播放出来,对于订单的删除,进行脚本语句的编写,能否成功完成测试第二章测试计划及测试环境搭建2.1测试原理分析QTP主要采用的是GUI模拟人的操作。

机票预订系统压力测试报告

机票预订系统压力测试报告

机票预订系统压力测试报告1. 简介机票预订系统是一种用于在线预订航班机票的软件系统。

为了确保系统能够在高流量情况下正常运行,我们进行了一系列的压力测试,以评估其性能和稳定性,并提供本报告以记录和分析测试结果。

2. 测试环境我们搭建了一个模拟真实用户访问的测试环境,包括使用真实数据的航班信息和用户信息,并通过自动化工具模拟了多种类型的用户请求。

测试环境的配置如下:- 操作系统:Windows Server 2016- 虚拟机:VMware Workstation 15- 内存:8GB- 处理器:***********************3. 测试内容和方法我们针对机票预订系统的主要功能和模块进行了压力测试,包括以下方面:- 用户登录和注册- 航班查询和订购- 订单支付和确认- 退票和改签功能在每个功能测试中,我们模拟了多个并发用户同时访问系统,并通过增加并发请求的数量来逐渐增加系统的负载,直到达到系统资源的极限。

同时,我们还进行了长时间持续压力测试,以评估系统在高负载状态下的稳定性和性能表现。

4. 测试结果根据我们的压力测试,机票预订系统在正常使用负载下能够快速响应用户请求,系统性能表现良好,能够满足用户的需求。

然而,在极端高负载条件下,系统响应时间会有所增加,并存在一些瓶颈和性能问题。

具体的测试结果如下:- 在低负载条件下,系统平均响应时间为500毫秒。

- 随着并发用户数量的增加,系统响应时间逐渐增加。

当并发用户数量达到100时,系统平均响应时间增加到2秒。

- 当并发用户数量达到200时,系统响应时间进一步增加,平均响应时间达到5秒。

- 在持续高负载情况下,系统偶尔出现请求超时和响应错误的情况,但整体稳定性较好。

5. 性能优化建议根据测试结果,我们提出以下性能优化建议,以改善机票预订系统的性能和稳定性:- 针对数据库查询进行性能优化,包括索引的优化和查询语句的优化,以提高系统的查询和订购速度。

机票预订系统实验报告

机票预订系统实验报告

一、实验名称系统静态建模二、实验目的1、掌握用例(Use Case)、角色(Actor)、用例图(Use Case Diagram)的概念。

2、掌握用例与用例之间、用例与角色、角色与角色之间的相互关系。

3、掌握类的属性和操作以及与其相关的概念,重点掌握类与类之间的关系三、所用软件1、Rational Rose2、Micorsoft Word四、预习内容1、UML的用例图、类图画法2、机票预订系统的分析3、Rational Rose的使用方法。

五. 实验介绍为方便旅客,某航空公司拟开发一个机票预定系统。

旅行社把预定机票的旅客信息(姓名、性别、工作单位,身份证号码、旅行时间、施行目的地等)输入该系统,系统为旅客安排航班,印出取票通知和帐单,旅客在飞机起飞前一天凭取票通知单和帐单交款取票,系统校对无误即印出机票给旅客。

机票预定系统的数据需求包括如下几点:1.数据录入和处理的准确性和实时性数据的输入是否准确是数据处理的前提,错误的输入会导致系统输出的不正确和不可用,从而使系统的工作失去意义。

数据的输入来源是手工输入。

手工输入要通过系统界面上的安排系统具有容错性,并且对操作人员要进行系统的培训。

在系统中,数据的输入往往是大量的,因此系统要有一定的处理能力,以保证迅速的处理数据。

2.数据的一致性与完整性由于系统的数据是共享的,在不同的旅行社中中,机票是共享数据,所以如何保证这些数据的一致性,是系统必须解决的问题。

要解决这一问题,要有一定的人员维护数据的一致性,在数据录入处控制数据的去向,并且要求对数据库的数据完整性进行严格的约束。

对于输入的数据,要为其定义完整性规则,如果不能符合完整性约束,系统应该拒绝该数据。

3.数据的共享与独立性整个机票预定系统的数据是共享的。

然而,从系统开发的角度上看,共享会给设计和调试带来困难。

因此,应该提供灵活的配置,使各个分系统能够独立运行,而通过人工干预的手段进行系统数据的交换。

机票预定系统实验报告

机票预定系统实验报告

机票预定系统实验报告机票预定系统实验报告一、引言机票预定系统是现代航空业中不可或缺的一环。

它通过在线平台的方式,为乘客提供方便快捷的机票预订服务。

本次实验旨在探讨机票预定系统的设计与实施,以及对用户体验的影响。

二、系统设计与实施1. 系统架构机票预定系统的设计需要考虑到用户界面、数据库、后台逻辑等多个方面。

我们采用了三层架构,即用户界面层、业务逻辑层和数据访问层。

这样的架构能够保证系统的可扩展性和灵活性。

2. 用户界面设计用户界面是机票预定系统中最直接与用户交互的部分。

我们注重设计简洁、直观的界面,以提高用户的使用体验。

通过合理的布局和明确的操作流程,用户可以轻松地完成机票预订的过程。

3. 数据库设计为了存储用户的个人信息和机票预订记录,我们设计了一个符合实际需求的数据库结构。

通过合理的表结构设计和索引优化,可以提高数据的查询效率和系统的响应速度。

4. 后台逻辑实现后台逻辑是机票预定系统的核心部分,它包括用户认证、机票查询、订单生成等功能。

我们使用了面向对象的编程语言,通过合理的类设计和模块划分,实现了系统的各项功能。

三、用户体验的影响机票预定系统的用户体验是评价系统质量的重要指标。

通过本次实验,我们对用户体验进行了一系列的测试和分析。

1. 响应速度用户在使用机票预定系统时,最关心的是系统的响应速度。

我们通过模拟大量用户同时访问系统的情况,测试了系统的并发处理能力。

结果显示,系统能够在短时间内响应用户的请求,保证了用户的流畅体验。

2. 用户界面友好性用户界面的友好性对于提高用户体验至关重要。

我们邀请了一些用户进行系统的测试,并收集了他们的反馈意见。

根据用户的建议,我们对界面进行了一些优化,使得用户能够更加轻松地完成机票预订的过程。

3. 功能完整性机票预定系统需要提供全面的功能,包括机票查询、订票、退票等。

我们对系统的各项功能进行了测试,确保其能够满足用户的需求。

同时,我们还进行了一些异常情况的测试,以保证系统的稳定性和可靠性。

软件工程机票预订实验报告

软件工程机票预订实验报告

软件工程机票预订实验报告standalone; self-contained; independent; self-governed;autocephalous; indie; absolute; unattached; substantive本科实验报告课程名称:软件工程导论实验项目:机票预订系统实验地点:专业班级:学生姓名:指导教师:年月日1.实验目的和要求目的:为本实验课程做好各项准备工作,熟悉软件开发环境,熟悉电子资源的获取,了解学校内部工资系统的流程及其内容。

本实验课程通过完整地实施软件生命周期各阶段的任务,让学生系统地学习到软件开发过程的主要理论、方法、技术、标准和规范,使他们具备基本的软件开发设计能力;通过软件工程中常用CASE工具和软件项目管理的实践,使他们具备运用各种工具完成项目设计和实施的基本技能;通过集体项目开发,培训学生的合作意识和团队精神,培养学生对技术文档的编写能力。

要求:确定分组成员,根据提供的课题需求,作出相应的可行性研究报告,需求分析,结构化设计等。

结合具体的开发项目进行分析、设计。

二、实验内容和原理1.班级按项目小组进行分组,每组不得超过5人。

2.每个项目小组选出项目负责人或项目经理,由项目经理召集项目组成员讨论、选定开发项目,所有实验中都要采用同一个实验题目。

项目开发的每项任务要落实到人且规定该任务的起止日期和时间。

3.每个项目小组全体成员参加集体讨论需求分析,完成需求分析报告,,修订并评审需求分析报告,确定系统的需求分析模型。

4. 项目总体设计小组每个成员根据第3步需求分析的结果对系统进行总体设计,并完成文档,提交项目小组讨论。

2. 5. 项目详细设计小组人员每人选择第4步的一个模块进行详细设计。

6. 项目小组全体成员选择第4步的一个模块编码实现。

7. 由需求分析人员对第5步的结果进行黑盒测试,设计人员进行白盒测试,并编写测试计划和测试结果报告。

三、主要仪器设备计算机,相关软件开发工具和环境,浏览器四、操作方法与实验步骤小组情况项目题目:机票预订系统项目成员一、可行性分析报告1.引言目的为了方便旅客,航空公司拟开发一个飞机票预订系统。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计课程名称:数据结构实验项目:飞机订票系统姓名:专业:班级:学号:计算机科学与技术学院年月日实验项目名称:飞机订票系统一、实验目的:1. 了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;2. 初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;3. 提高综合运用所学的理论知识和方法独立分析和解决问题的能力;二、实验内容(1)本系统实现航班订票的功能。

要求具有录入、订票、退票等功能。

(2)航班信息存放在一个结构体中,分别有航班号、起飞时间、降落时间、票价等信息。

(3)程序完成航班信息的录入和乘客订票功能。

(4)客户能通过航班号或抵达城市查询航班信息,并且能订票。

当座位无剩余时提示客户并提示相关航线。

三.概要设计程序包含函数:主控模块包含子模块为:四.详细设计算法流程图a) 系统以菜单方式工作;b) 航班订票功能c) 航班退票功能d) 查询航线:(至少一种查询方式)--算法;e) 修改航线(1) 增加航班号(2) 删除航班号(3) 修改密码(4) 查询航班信息f) 按终点站查询。

程序截图菜单增加航线信息订票退票查询五.源代码#include <conio.h>#include<stdio.h>#include<string.h>#include<stdlib.h>#define OK 1#define TRUE 1#define FALSE 0#define ERROR 0#define OVERFLOW -2#define PR printftypedef int status;typedef struct airline{char line_num[8];//航班号char plane_num[8];//飞机号char end_place[20];//目的的int total;//座位总数int left;//剩余座位struct airline *next;//下一个结点}airline;typedef struct customer{char name[9];//顾客名char line_num[8];//航班号int seat_num;//座位号struct customer *next;//下一个结点}customer;airline *init_airline(){ //初始化链表airline *l;l=(airline*)malloc(sizeof(airline)); if(l==NULL){ exit(0);}l->next=NULL;return l;}customer * init_customer(){//初始化链表customer *l;l=(customer*)malloc(sizeof(customer)); if(l==NULL){exit(0);l->next=NULL;return l;}status insert_airline(airline **p,char *line_num,char *plane_num,char *end_place,int total,int left){//airline链表插入操作airline *q;q=(airline*)malloc(sizeof(airline));strcpy(q->line_num , line_num);strcpy(q->plane_num , plane_num);strcpy(q->end_place , end_place);q->total =total;q->left =left;q->next=NULL;(*p)->next=q;(*p)=(*p)->next;// PR("insert %d ,%dis succssed!\n",e,bl);return OK;}status insert_customer(customer **p,char *name,char *line_num,int seat){//customer链表插入操作customer *q;q=(customer*)malloc(sizeof(customer));/* { PR("内存分配失败\n");return OVERFLOW; }*/strcpy(q->name , name);strcpy(q->line_num , line_num);q->seat_num =seat;q->next=NULL;(*p)->next=q;(*p)=(*p)->next;// PR("insert %d ,%dis succssed!\n",e,bl);return OK;}airline *modefy_airline(airline *l,char *line_num)//修改airline链表中的数据{ airline *p;p=l->next ;for(;p!=NULL;p=p->next ){ if(strcmp(line_num,p->line_num )==0){ p->left ++;// PR("modefy %s\n",p->line_num );return l;}}PR("\n\t\t没有这个航班,无法完成修改任务!");status delete_airline(airline *h,char *line_num)//删除航班{ airline *p,*pr;pr=h;p=pr->next ;while(p!=NULL){ if(strcmp(line_num,p->line_num )==0){ pr->next =p->next ;PR("\n\t\t删除 %s 航班\n",p->line_num );return OK;}pr=pr->next ;p=pr->next ;}PR("\n\t\t无此航班,无法删除!\n");return ERROR;}status delete_customer(customer *h,char *line_num)//删除顾客{ customer *p,*pr;pr=h;p=pr->next ;while(p!=NULL){ if(strcmp(line_num,p->line_num )==0){ pr->next =p->next ;}pr=pr->next ;p=pr->next ;}// PR("无此航班,无法删除!\n");return OK;}status delete_cus(customer *h,airline *l,char *name)//顾客退票{ customer *p,*pr;char line_num[8];// qr=h;pr=h;p=pr->next ;// PR("开始删除\n");while(p!=NULL){ if(strcmp(name,p->name )==0){ strcpy(line_num,p->line_num );l=modefy_airline(l,line_num);pr->next =p->next ;PR("\n\t\t顾客 %s 退票成功!",p->name );pr=pr->next ;p=pr->next ;}PR("\n\t\t无此顾客,无法退票!\n");return ERROR;}status save_airline(airline *l)//保存airline.dat{ FILE *fp_airline;char ch='#';airline *p=l->next ;char filename[]="c:\\airline.dat";if((fp_airline=fopen(filename,"wb"))==NULL){ printf("can not open file to write:%s\n",filename);return ERROR;}for(;p!=NULL;p=p->next ){ // printf("%s,%s,%s,%d,%d\n",p->line_num ,p->plane_num ,p->end_place ,p->total ,p ->left );fprintf(fp_airline,"%s,%s,%s,%d,%d%c\n",p->line_num ,p->plane_num ,p->end_plac e ,p->total ,p->left ,ch);}fclose(fp_airline);return OK;}status save_customer(customer *l)//保存顾客信息 customer.dat{ FILE *fp_customer;char ch='#';customer *p=l->next ;char filename[]="c:\\customer.dat";if((fp_customer=fopen(filename,"wb"))==NULL){ printf("can not open file to write:%s\n",filename);return ERROR;}for(;p!=NULL;p=p->next ){ // PR("%s,%s,%d\n",p->name ,p->line_num ,p->seat_num );fprintf(fp_customer,"%s,%s,%d%c",p->name ,p->line_num ,p->seat_num ,ch);}fclose(fp_customer);return OK;}int changStrInt(char *ch)//把字符串转化为整型{ int a=1,b=0,c=0,i;{ if (ch[i]<58&&ch[i]>47){ b=a*(ch[i]-48);a=a*10;c=c+b;}else{ PR("\n\t\t%c 不合法,无法将此字符串转化为整形!",ch[i]);return 0;}// printf("the c is %d\n",c);}return c;}status insert_air(airline *l,char *line_num,char *plane_num,char *end_place,int total,int left){//airline链表插入操作airline *q;q=(airline*)malloc(sizeof(airline));strcpy(q->line_num , line_num);strcpy(q->plane_num , plane_num);strcpy(q->end_place , end_place);q->total =total;q->left =left;q->next=l->next ;l->next=q;// PR("insert %d ,%dis succssed!\n",e,bl);return OK;}status insert_cus(customer *l,char *name,char *line_num,int seat){//customer链表插入操作customer *q;q=(customer*)malloc(sizeof(customer));strcpy(q->name , name);strcpy(q->line_num , line_num);q->seat_num =seat;q->next=l->next ;l->next=q;return OK;}status load_airline(airline *l){ FILE *fp_airline;int flag=0,i=0;char ch;char line_num[8];//航班号char end_place[20];//目的的char total_str[5];char left_str[5];int total;//座位总数int left;//剩余座位// airline *p=l;char filename[]="c:\\airline.dat";if((fp_airline=fopen(filename,"rb"))==NULL){ printf("can not open file to load:%s\n",filename); return ERROR;}while(!feof(fp_airline)){ ch=fgetc(fp_airline);if(ch!='#'){ if(flag==0&&ch!=','){ line_num[i]=ch;i++;}else if(flag==1&&ch!=','){ plane_num[i]=ch;i++;}else if(flag==2&&ch!=','){ end_place[i]=ch;i++;}else if(flag==3&&ch!=','){ total_str[i]=ch;i++;}else if(flag==4&&ch!=','){ left_str[i]=ch;i++;}else if (ch==','){ flag++;i=0;}/* else{ PR("错误\n");return ERROR;}*/}elsei=0;total=changStrInt(total_str);left=changStrInt(left_str);PR("%8s%8s%8s%9d%9d\n",line_num ,plane_num ,end_place ,total ,left ); insert_air(l,line_num,plane_num,end_place,total,left);}}fclose(fp_airline);return OK;}status load_customer(customer *l){ FILE *fp_customer;int flag=0,i=0;char ch;char name[9];char line_num[8];//航班号char seat_num_str[5];int seat_num;//座位// customer *p=*l;char filename[50]="c:\\customer.dat";if((fp_customer=fopen(filename,"rb"))==NULL){ printf("can not open file to load:%s\n",filename);return ERROR;}while(!feof(fp_customer)){ ch=fgetc(fp_customer);printf("%c\n",ch);if(ch!='#'){ if(flag==0&&ch!=','){ name[i]=ch;i++;}else if(flag==1&&ch!=','){ line_num[i]=ch;i++;}else if(flag==2&&ch!=','){ seat_num_str[i]=ch;i++;}else if (ch==','){ flag++;i=0;}{ PR("错误\n");return ERROR;}}else{ flag=0;seat_num=changStrInt(seat_num_str);PR("%10s %10s %d\n",name ,line_num ,seat_num );insert_cus(l,name,line_num,seat_num);// p=p->next ;}}fclose(fp_customer);return OK;}status creat_airline(airline **l)//创建airline单链表{ airline *p=*l;int i=0;char *line_num[3]={"bjnc01","bjsh02","shgz03"};char *plane_num[3]={"plane1","plane2","plane3"};char *end_place[3]={"nc","sh","gz"};int total[3]={100,100,100};int left[3]={51,50,78};for (i=0;i<3;i++){insert_airline(&p,line_num[i],plane_num[i],end_place[i],total[i],left[i]);}return OK;}status creat_customer(customer **l)////创建customer单链表{ customer *p=*l;int i=0;char *name[3]={"ouyangj0","yhl","fs"};char *line_num[3]={"bjnc01","bjsh02","shgz03"};int seat_num[3]={1,5,10};for (i=0;i<3;i++){insert_customer(&p,name[i],line_num[i],seat_num[i]);}return OK;}status increase_air(airline *l,char *line_num,char *plane_num,char *end_place,int total)//增加航线{ airline *p=l->next ;for(;p->next !=NULL;p=p->next){}insert_airline(&p,line_num,plane_num,end_place,total,total);return OK;}status book(airline *l,char *line_num,customer *c,char *name)//订票函数{ airline *p=l;customer *q=c->next ;p=l->next ;for(;q->next !=NULL;q=q->next){}// PR("%s\n",q->name );for(;p!=NULL;p=p->next ){ if(strcmp(line_num,p->line_num )==0){ if(p->left >0){ PR("\n\t\t恭喜您!订票成功!");PR("\n\t\t你的座位号是: %d",(p->total -p->left +1));insert_customer(&q,name,line_num,p->total -p->left +1);p->left --;return OK;}else PR("\n\t\t对不起,座位已满!");return 0;}}PR("\n\t\t对不起,没有这个航班号!");return ERROR;}status print_airline(airline *l)//打印航线信息{ airline *p=l->next ;for(;p!=NULL;p=p->next ){ PR("%8s%8s%8s%9d%9d\n",p->line_num ,p->plane_num ,p->end_place ,p->total ,p->left );}return OK;}status print_customer(customer *l)//打印顾客信息{customer *p=l->next ;for(;p!=NULL;p=p->next ){ PR("%10s %10s %d\n",p->name ,p->line_num ,p->seat_num );}return OK;}status inputpassword(char cc[9])//隐藏密码为*号的函数 -------------------楼主,注意这里!{char c;for(i=0;c=getch();i++){if(c==13) break; /*13是回车的ascii码,用'\n'不行,不知怎么回事*/else{cc[i]=c;printf("*");}}cc[i]='\0';//printf("\n");//printf("%s",cc);//getchar();return strlen(cc);}int main(){ char choice,choice2,name[9],line_num[8],password[9],plane_num[8],end_place[9];char pass[9]="12345678",re_pass_1[9],re_pass_2[9];int t=1,tt=1,total;airline *air=init_airline();customer *cus=init_customer();creat_airline(&air);creat_customer(&cus);// save_airline(air);// save_customer(cus);while(t==1){PR("\n\t\t********************************");PR("\n\t\t 欢迎进入航班订票系统 ");PR("\n\t\t* 1----订票 *");PR("\n\t\t* 2----退票 *");PR("\n\t\t* 3----查询 *");PR("\n\t\t* 4----修改航线 *");PR("\n\t\t* 5----读入文件 *");PR("\n\t\t* 0----返回 *");PR("\n\t\t********************************");PR("\n\t\t*请输入菜单号(0-5):");choice = getch();PR("%c\n",choice);if(choice=='1'){ PR("\n\t\t请输入你要订的航班号: ");scanf( "%s",line_num);PR("\n\t\t请输入你的姓名: ");book(air,line_num,cus,name);save_airline(air);save_customer(cus);}else if(choice=='2'){ PR("\n\t\t请输入你的姓名: ");scanf( "%s",name);delete_cus(cus,air,name);save_airline(air);save_customer(cus);}else if(choice=='3'){ PR("\n 航班号飞机号目的地总票数余票数\n"); print_airline(air);PR(" 姓名航班号座位号\n");print_customer(cus);}else if(choice=='4'){ tt=1;PR("请输入密码: ");//scanf("%s",password);inputpassword(password);if(strcmp(password,pass)==0){ while (tt==1){PR("\n\t\t********************************"); PR("\n\t\t* 航线信息修改: *"); PR("\n\t\t* 增加航班号-----'0' *");PR("\n\t\t* 删除航班号-----'1' *");PR("\n\t\t* 修改密码-------'2' *");PR("\n\t\t* 查询航线信息---'3' *");PR("\n\t\t* 退出航线修改---'4' *");PR("\n\t\t********************************"); PR("\n\t\t请选择: ");choice2=getch();PR("%c\n",choice2);if(choice2=='0'){ PR("\n\t\t请输入你要增加的航班号: ");scanf("%s",line_num);PR("\n\t\t请输入飞机号: ");scanf("%s",plane_num);PR("\n\t\t请输入目的地: ");scanf("%s",end_place);PR("\n\t\t请输入座位总数: ");increase_air(air,line_num,plane_num,end_place,total); save_airline(air);save_customer(cus);}else if (choice2=='1'){ PR("\n\t\t请输入你要删除的航班号: ");scanf("%s",line_num);delete_airline(air,line_num);delete_customer(cus,line_num);save_airline(air);save_customer(cus);}else if(choice2=='2'){ PR("\n\t\t注意:密码不能超过8位!");PR("\n\t\t请输入新密码:");scanf("%s",re_pass_1);PR("\n\t\t请再输入一次: ");scanf("%s",re_pass_2);if(strcmp(re_pass_1,re_pass_2)==0){ strcpy(pass,re_pass_1);PR("\n\t\t密码修改成功!请记住.");}else { PR("\n\t\t你两次输入的密码不一致!");}}else if(choice2=='3'){ PR("\n\t\t 航班号飞机号目的地总票数余票数\n"); print_airline(air);}else if(choice2=='4'){ tt=0;}else {PR("\n\t\t你的输入有误");tt=0;}}//end while}//end ifelse {PR("\n\t\t对不起!你输入的密码不正确!");}}//end else if 修改else if(choice=='4'){ load_airline(air);}else if(choice=='0'){ PR("\n\t\t再见!");t=0;}else{ PR("\n\t\t你的输入有误"); }}getch();}。

相关文档
最新文档