目录

课程设计目的

通过此次软件工程课程设计,能系统地学习软件开发的过程,并具备基本的软件开发能力,熟练并掌握Java等面向对象的语言并进行项目的开发,熟练电子资源的获取,熟练SQLServer、MySQL等数据库的使用,了解机场机票预订和管理所需流程等。

课程设计课题描述和需求分析

课程设计课题描述

所选课题:机场售票及管理系统。
机场售票及管理系统的目标是:利用数据库和面向对象的开发软件,开发一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的机场售票及管理系统,实现航空公司的机票销售的自动化以及航班信息管理便捷化的计算机系统,为企业的决策层提供准确、精细、迅速的机票销售信息和航班信息。

需求分析

1、目的和意义
随着社会发展的不断进步,民航事业的壮大,人们消费水平的提高,乘坐民航的消费者也越来越多,原有的机票预订系统随着机场载客量的迅猛增长和人们对便捷性要求的提高,已经难以满足人们的出行需求。
为了实现航空公司的现代化管理,进一步提高工作效率,方便旅客购票以及机场管理,需要开发一个机场售票及管理系统。该系统需要具有完整的存储,查询,核对等功能。用户可以通过该系统进行机票的查询和预订,机场可以对航班班次一次订单信息进行查询和管理,航空公司可以对航班信息以及收益信息进行管理。
今后随着计算机技术以及网络技术的迅速发展,电子商务正逐渐成为Internet应用的一个重要领域。电子商务也必然对航空公司的机票销售模式产生深远的影响。

2、功能需求
为方便乘客对于机票的购买以及机场对于售票和航班信息的管理,系统需要三个主要模块通过数据库进行机票的售卖和管理,三个主要模块为:航空公司、机场以及用户模块。
(1)用户模块:
用户可以登录自己的账号进入系统,若无账号,则可注册新的账号。登录进入机票预订系统后进行机票的查询,用户输入出发城市,到达城市,出发时间,即可获得班次信息,也可选择航空公司进行筛选,用户在预定机票时,需添加乘客,即输入乘客信息,完成订票。
(2)机场模块:
机场通过航空公司所提供的航班信息来安排班次,可通过数据库对班次信息可进行查询增加、取消、修改等操作,同时也可对客户的订单进行查询。若飞机飞机因为意外原因发生延误,机场则可发布相应的信息到客户端。
(3)航空公司模块:
航空公司可以安排航班,将飞机和航线等航班信息录入数据库以供机场使用,同时航空公司还能通过数据库中纪录的各航班的余票信息,查询航空公司在不同机场的每日收益,包括利益和销售票数。

3、功能需求实现
(1)用户模块:

(2)机场模块:

(3)航空公司模块:

4、系统性能需求
为了保证系统能够长期、安全、稳定、可靠、高效的运行,机票预定系统应该满足以下的性能需求:
(1)系统处理的准确性和及时性
系统处理的准确性和及时性是系统的必要性能,在系统设计和开发过程中,要充分考虑系统当前和将来可能承受的工作里,使系统的处理能力和响应时间能够满足企业对信息处理的需求。由于机场售票和管理系统的查询功能对于整个系统的功能和性能完成举足轻重,作为系统的很多数据来源,而机票数量和时间又影响企业的决策活动,其准确性很大程度上决定了机场售票和管理系统的成败。在系统开发过程中,必须采用一定的方法保证系统的准确性。
(2)系统的开放性和系统的可扩充性
机场售票和管理系统在开发过程中,应该充分考虑以后的可扩充性,系统需要能提供足够的手段进行功能的调整和扩充。要实现这一点,应通过系统的开放性来完成,即系统应是一个开放系统,只要符合一定的规范,可以简单的加入和减少系统的模块,配置系统的硬件。通过软件的修补、替换完成系统的升级和更新换代。
(3)系统的易用性和易维护性
机场售票和管理系统是直接面对使用人员的,而使用人员往往对计算机并不时非常熟悉。这就要求系统能够提供良好的用户接口,易用的人机交互界面。要实现这一点, 就要求系统应该尽量使用用户熟悉的术语和中文信息的界面;针对用户可能出现的使用问题,要提供足够的在线帮助,缩短用户对系统熟悉的过程。机票预定系统中涉及到的数据是航空公司的相当重要的信息,系统要提供方便的手段供系统维护人员进行数据的备份,日常的安全管理,系统意外崩溃时数据的恢复等工作。
(4)系统的标准性
系统在设计开发使用过程中都要涉及到很多计算机硬件、软件等,这些都应符合主流国际、国家和行业标准。例如在开发中使用的操作系统、网络系统、开发工具都必须符合通用标准。如规范的数据库操作界面、作为业界标准的TCP/IP网络协议及ISO9002标准所要求的质量规范等。同时,在自主开发本系统时,要进行良好的设计工作,制订行之有效的软件工程规范,保证代码的易读性、可操作性和可移植性。

5、系统的数据需求
机场售票和管理系统的数据需求包括如下几点:
(1)数据录入和处理的准确性和实时性
数据的输入是否准确是数据处理的前提,错误的输入会导致系统输出的不正确和不可用从而使系统的工作失去意义。数据的输入来源是手工输入,手工输入要通过系统面上的安排系统具有容错性,并且对操作人员要进行系统的培训。在系统中,数据输入往往是大量的,因此系统要有一定的处理能力,以保证迅速的处理数据。
(2)数据的一致性与完整性
由于系统的数据是共享的,在不同的航空公司中,机票航班等是共享数据,所以如何保证这些数据的一致性,是系统必须解决的问题。要解决这一问题,要有一定的人员维护数据的一致性,在数据录入处控制数据的去向,并且要求对数据库的数据完整性进行严格的约束。对于输入的数据,要为其定义完整性规则,如果不能符合完整性约束,系統应拒绝该数据。
(3)数据的共享与独立性
整个机场售票和管理系统的数据是共享的。然而,从系统开发的角度上看,共享会给设计和调试带来困难。因此,应该提供灵活的配置,使各个分系统能够独立运行,而通过人工干预的手段进行系统数据的交换。这样,也能提供系统的强壮性。

课程设计报告内容

课程设计任务分析

课设的首要任务应是进行需求分析,通过深入细致的调研和分析,才能准确地理解用户和项目的功能、性能、可靠性等具体化的要求。团队成员可以通过上网查阅资料、与用户交流等方式,收集功能性需求和非功能性需求,最后进行分析综合。
接下来的任务应该是进行系统设计,系统设计主要包括数据库设计和界面设计。
为了存储大量的数据信息,方便用户对数据进行有效的检索和访问,本次课设需要设计一个良好的数据库。该数据库内应该详尽地含有用户信息、航班信息、班次信息等,还应具有可数据共享、易于集中控制、安全、可维护的特点。数据库的开发工具可以使用SQL Server,也可使用Mysql。
界面是软件与用户交互的最直接的层,设计良好的界面能够引导用户自己完成相应的操作,起到向导的作用,还能够给用户带来轻松愉悦的感受。因此,本次课设应该设计一个具有易用性、规范性、美观性的用户界面。界面的设计实现可采用多种工具,可从中选择一种开发效率较高的。
在完成系统设计之后,应开始进行系统开发的任务。在该阶段,团队各成员应该根据前面系统设计得出的对功能实现、数据库设计、界面设计以及程序设计等方面的要求,选择合适的开发工具和开发软件,进行代码的撰写工作。在编码过程中,应注意不同模块之间的协调和协作。

设计方案

1、概要设计
航空公司向机场提供航班信息,机场利用这些航班信息来安排班次,用户通过登录账号,为乘客进行预约班次,一个用户可以为多名乘客预约,而一个预约只能由一个用户完成,航空公司可以提供多个航班信息,一个航班信息只能由一个航空公司提供。一个航班能够安排多个班次,一个班次只能是一个航班。
(1)数据逻辑结构设计:
机票管理系统所涉及的主要数据库的逻辑结构如下:
航班信息表(flight):(航班编号,航空公司,机型,出发城市,到达城市),主键:航班编号,外键:无;
班次信息表(classes):(班次编号,出发时间,到达时间,出发机场,到达机场,甲等余票,乙等余票,月份,甲等价格,乙等价格,是否延误,航班编号),主键:班次编号,外键:航班编号;
乘客信息表(passengers):(订单号,乘客姓名,乘客证件号,下单日期,座位号,账号,舱位,班次号 ),主键:订单号,外键:账号,班次号;
用户信息表(users):(账号,密码,姓名,年龄,电话,性别),主键:账号,外键:无。

(2)数据字典:
为了使各数据流、数据处理过程、存储过程能反映其中的数据成份、数据项目、数据特性,所以用数据字典来对数据流中的各成份进行具体的定义,为系统的分析、设计及以后的实现提供有关元素的一致性定义和详细的描述:
数据流名称:用户信息管理 标志符:F1
别名:无
来源:用户
去向:用户注册P2
数据组成:用户账号+密码+姓名+性别+年龄+电话
数据流名称:乘客管理管理 标志符:F2
别名:无
来源:乘客
去向:机票预订P4 订单查询P6
数据组成:订单号+乘客身份证+姓名+下单时间+座位号+用户账号+座位等级+航班号
数据流名称:航班管理 标志符:F3
别名:无
来源:航空公司
去向:增加航班P10
数据组成:航班号+航空公司+飞机机型+出发城市+到达城市
数据流名称:班次管理 标志符:F4
别名:无
来源:机场
去向:班次查询P5 增加班次P6 取消班次P7 修改班次P8 航班延迟通知P9 查询月季报表P11
数据组成:班次号+出发机场+到达机场+出发时间+到达时间+甲等余票+乙等余票+甲等价格+乙等价格+航班号+是否延迟

②数据存储字典:
数据存储名称:用户信息数据库 标志D1
描述:用户信息的详细资料
流入数据流:F1
涉及处理:P1,P2
数据组成:用户账号+密码+姓名+性别+年龄+电话
数据存储名称:乘客信息数据库 标志D2
描述:乘客信息的详细资料
流入数据流:F2
涉及处理:P4,P6
数据组成:订单号+乘客身份证+姓名+下单时间+座位号+用户账号+座位等级+航班号
数据存储名称:航班信息数据库 标志D3
描述:航班信息的详细资料
流入数据流:F3
涉及处理:P10
数据组成:航班号+航空公司+飞机机型+出发城市+到达城市
数据存储名称:班次信息数据库 标志D4
描述:班次信息的详细资料
流入数据流:F4
涉及处理:P5,P6,P7,P8,P9,P11
数据组成:班次号+出发机场+到达机场+出发时间+到达时间+甲等余票+乙等余票+甲等价格+乙等价格+航班号+是否延迟

③数据处理字典:
数据处理名称:用户登录 标志P1
处理定义:登录系统
激发条件:所输入的编号密码正确
输入:F1
输出:无
数据处理名称:用户注册 标志P2
处理定义:将用户信息录入用户信息数据库中
激发条件:用户账号未重复且填写完成注册表中的必填项
输入:F1
输出:F1
数据处理名称:机票查询 标志P3
处理定义:查询班次数据库中的班次信息
激发条件:乘客进入机票预订界面并进行机票查询
输入:F4
输出:F4
数据处理名称:机票预订 标志P4
处理定义:将乘客信息录入到乘客信息数据库中
激发条件:乘客完成机票预订
输入:F2、F4
输出:F2
数据处理名称:班次查询 标志P5
处理定义:查询班次数据库中的班次信息
激发条件:机场对班次信息进行查询
输入:F4
输出:F4
数据处理名称:订单查询 标志P6
处理定义:查询乘客数据库中的乘客信息
激发条件:机场对订单信息进行查询
输入:F2
输出:F2
数据处理名称:班次增加 标志P6
处理定义:将班次信息录入班次数据库中
激发条件:机场增加班次信息
输入:F4
输出:F4
数据处理名称:班次取消 标志P7
处理定义:删除班次数据库中的某一条班次信息
激发条件:机场删除班次信息
输入:F4
输出:F4
数据处理名称:班次修改 标志P8
处理定义:修改班次数据库中的班次信息
激发条件:机场对某一条班次信息进行修改
输入:F4
输出:F4
数据处理名称:航班延迟通知 标志P9
处理定义:查询班次数据库中的班次信息并修改
激发条件:机场查询并修改有延迟的班次的出发和到达时间
输入:F4
输出:F4
数据处理名称:航班增加 标志P10
处理定义:将航班信息录入航班数据库中
激发条件:航空公司增加航班信息
输入:F3
输出:F3
数据处理名称:月季报表查询 标志P11
处理定义:查询班次数据库中的班次信息
激发条件:航空公司对月季报表进行查询
输入:F4
输出:F4

(3)ER图:

(4)数据库建表:
建库代码:

建航班信息表:


建班次信息表:


建用户信息表:


建乘客信息表:


(5)各字段意义注明:
航班信息表(flight):
数据项名 数据项意义 别名 数据类型 取值范围 取值意义
FlightNumber 唯一标识航班号 航班号 Varchar(10) 前面两个字母为航班的出发城市与到达城市的首字母,其余为数字编号
Company_name 表示航空公司的名字 航空公司 Varchar(10)
planeType 飞机机型 Varchar(20)
DepartureCity 代表航班的出发城市 出发城市 Varchar(10)
ArrivalCity 代表航班的到达城市 到达城市 Varchar(10)

班次信息表(classes):
数据项名 数据项意义 别名 数据类型 取值范围 取值意义
ClassNumber 唯一识别每个班次号 班次号 varchar(10) 前两位字母分别是出发机场以及到达机场的首字母,后为区别的数字编号
DepartureData 代表班次的出发时间 出发时间 Datetime 同一机场的两班次的出发时间不能相同
DepartureAirport 代表班次的出发机场 出发机场 Varchar(10)
ArrivalData 代表班次的到达时间 到达时间 Datetime
ArrivalAirport 代表班次的到达机场 到达机场 Varchar(10)
A_number 代表甲等座位的剩余的票数 甲等余票 Int(11) 0-30 一个班次有30个甲等座位
B_Number 代表乙等座位的剩余票数 乙等余票 Int(11) 0-80 一个班次有80个乙等座位
Delay 代表班次是否有延误 延误信息 Boolean 0,1 0代表班次没有延误,1代表有延误
Aprice 甲等座位价格 Int(11) 0-10000000 价格只能大于0
BPrice 乙等座位价格 Int(11) 0-10000000 价格只能大于0
FlightNumber 唯一标识航班号 航班号 Varchar(10) 前面两个字母为航班的出发城市与到达城市的首字母,其余为数字编号

用户信息表(users):
数据项名 数据项意义 别名 数据类型 取值范围 取值意义
Id 标识乘客的身份证号 证件号 Varchar(10)
Account 唯一标识用户的账号 账号 Varchar(10)
Password 账号对应的登录密码 密码 Varchar(10)
Sex 性别 Varchar(2) 男,女
Tel 电话
Age 年龄 0-200
Name 用户的名字 名字

乘客信息表(passengers):
数据项名 数据项意义 别名 数据类型 取值范围 取值意义
OrderNumber 唯一表示订单的信息 订单号 Int(11) 0-1000000000 用数字编号座位订单号
PName 标识乘客姓名 乘客姓名 Varchar(10)
Id 标识乘客的身份证号 证件号 Varchar(10)
orderTime 下单时间 Datetime 用户预订时的系统时间
Seat 乘客的座位号 座位号 Varchar(5) 开头字母为A的为甲等座位,其余为乙等座位
Degree 座位的等级 等级 Varchar(2) A,B A为商务舱,B为经济舱
Account 唯一标识用户的账号 账号 Varchar(10)
ClassNumber 唯一识别每个班次号 班次号 varchar(10) 前两位字母分别是出发机场以及到达机场的首字母,后为区别的数字编号

2、界面设计
(1)用户登录界面:用户需能在该界面输入账号和密码进行登录,同时也能通过该界面跳转至用户注册界面。
(2)用户注册界面:该界面能注册账号,在该界面填入账号、密码、姓名、电话、性别、年龄等基本信息进行注册,并能在注册完成后跳转回用户登录界面。
(3)机票查询界面:在该界面,用户可以输入出发日期、达到日期、出发城市、到达城市等查询航班信息,并能选择机票进行预订。
(4)订单界面:在该界面可实现对该航班的预定,点击预定按钮,跳转到添加乘客界面,在此输入乘客姓名,证件号,座位号等信息,完成预定。
(5)订单信息查询界面:机场管理端可在此界面查看订单号、下单账号、乘客姓名、证件号、座位号、舱位、预定时间等订单信息。
(6)增加班次界面:在该界面,机场可以根据实际安排增加航班班次,能填写需增加的航班班次信息,并能显示已有的航班时间信息,以避免航班班次时间安排上的冲突。
(7)取消班次界面:在该界面,机场可以根据实际选择需取消的航班班次号,并能显示出来该航班班次的所有信息。
(8)修改班次界面:在该界面,机场可根据实际选择要修改的班次号,在该航班的所有信息都显示出来之后,选择要修改的信息,进行修改。
(8)航班延迟通知界面:在该界面,机场可以通知乘客延误信息,并且重新安排航班。
(9)月季报表界面:航空公司可在该界面查看该月的所有订单信息。

详细设计

1、系统功能模块设计
(1)登录功能:
登录界面,输入账号和密码,若账号和密码与数据库中储存的账号密码一致时,登录成功,不一致则显示账号密码错误。
(2)注册功能:
注册新的用户,用户输入个人信息,其中账号密码和姓名是必填的选项,没有填的话则显示提示用户填写,填写后检查数据库中是否已存在该账号,若存在,则提示用户重新选择账号,资料输入无误后,账号创建成功,跳回登录界面。
(3)机票查询功能:
用户登录成功后,进入机票查询界面,在相应位置输入出发城市,到达城市,出发时间,选择单程的话值显示从出发城市到到达城市的班次,若选择双程,则需要输入返回时间,会显示出发城市和到达城市之间在规定日的所有班次信息,用户从中可查询到,有多少机票,机票的价格。
(4) 预定功能:
点击想要预定的班次后,出现一个填写乘客信息的界面,输入乘客基本信息后,预定成功,机场系统中的余票减一。
(5)班次查询功能:
选择查询班次信息还是订单信息,输入所查询班次的几个重要信息后,进入则可得到所要查询的班次信息,可供机场管理员对班次进行检查核对。选择查询订单信息,输入所查询的订单信息的几个重要信息后,可以得到所要查询的订单的详细信息,可供管理员对订单进行检查核实。
(6)班次安排功能:
选择增加班次,添加班次的基本信息后,确认添加,班次则添加成功。选择取消班次,输入唯一识别的班次号,可得到该班次的详细信息,检查无误后,点击确认删除,该班次则取消成功。选择修改航班,输入唯一识别班次的班次号,得到班次的所有信息,其中班次号为不可修该,其他数据皆可修改,修改数据后,点击确认,班次则修改成功。
(7)航班延误通知功能:
输入延误的班次号,得到延误的班次号,显示原本预期的到达时间和出发时间,填入延误后新的到达时间和出发时间,同时,用户登录后,若有用它的账号添加乘客的飞机延迟,会显示飞机延误商务提示。
(8)航班增加功能:
输入航班各个信息后,点击确认,当航班号重复时,会提示航班已存在,重新添加航班号。信息无误后点击确认,航班添加成功。
(9)月季报表查看功能:
可以查看各个航空公司在各个机场每个月的报表,还能查看航空公司在某个城市的报表,以及各个机场销售情况。


2、数据流设计
总数据流图


用户模块数据流图


机场模块数据流图

航空公司模块数据流图


3、程序流程设计
(1)用户模块:

(2)机场模块:


(3)航空公司模块:


4、软件的算法设计流程图

(1)用户管理模块算法设计:


用户模块写在customer包中,plane_message为主函数,通过主函数调用login_layout类,其中用JFrame绘制了用户登录界面,login_system函数则用来判断用户输入的账号密码是否正确,若正确则打开机票查询界面,若错误则发出警告。Register_layout类中绘制了用户注册界面,通过register_new_user函数判断用户账号是否重复以及必填项是否填写等,若满足以上条件则添加新用户成功,用户信息将录入数据库中的用户信息表中,若不满足则发出警告。Plan_message_layout类绘制了查询机票界面,通过add_avitation_company函数选择航空公司以及飞机机型,通过setinfo函数来根据输入的条件筛选可乘飞机信息并显示出来,可供用户选择。order_layout类绘制了机票预订界面,用户输入乘客信息后即完成机票预订,并将乘客信息传入数据库总,记录在乘客信息表中。
DBHelper中写的是连接数据库的代码,利用JDBC来执行SQL语句并实现java和数据库连接。

(2)机场管理模块算法设计流程:


机场模块写在airport包中,main_system为主函数,其中绘制了机场主界面,其中可通过菜单栏选择功能。delay类中绘制了航班延迟通知界面,若班次延误则更新时间并通知乘客。Flight类中绘制了三个界面,addFight函数里的增加班次界面,输入班次信息,将其添加到数据库中,deleteFight函数里的取消班次界面,将对应班次信息从数据库里删除,changeFight函数绘制了修改班次界面,能修改数据库中对应的班次信息。research类中绘制了两个查询界面,research_plane函数里的班次查询界面,以及research_book里的订单查询界面。

(3)航班公司模块算法设计流程图


航空公司模块写在company包中,company_system作为主函数。addFight类中绘制了添加航班界面,foucusLost函数判断航班号是否重复若重复则警告航班已存在,actionPerformed函数表示航班添加成功。Research_revenue类中绘制了查看月季报表界面,revenueTableValuse函数显示筛选出的月季报表的列表。

5、核心算法的设计与实现说明

(1)用户订票模块
①用户登录
输入账号与密码,点击登录按钮,如果密码错误,则提示密码错误的信息。
实现sql代码如下:

Statement statement = (Statement) connection.createStatement();
String sql = "select * from aviation.users where account ='" +old_account+"'";
ResultSet resultSet = statement.executeQuery(sql);
if (resultSet.next())
if (old_password.equals(resultSet.getString("password")))
{plane_message_layout pl = new plane_message_layout(old_account);pl.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(false);
}
else{Warning_info warning_info = new Warning_info("密码或者账户错误,请重新输入");account_text.setText("");password_text.setText("");

若密码正确则进入查询界面

②注册新用户
注册界面填入账号,密码,姓名,电话,性别,年龄等基本信息,其中账号,密码,名字是必填项,如果没有填则会出现提示
实现sql代码如下:

try{Statement statement = (Statement) connection.createStatement();
String sql = "select * from aviation.users where account ='" +account+"'";
ResultSet resultSet = statement.executeQuery(sql);
resultSet.next();
if (account.equals(resultSet.getString("account"))){Warning_info warning_info = new Warning_info("该用户已存在");flag=1;

输入后即注册成功回到登录界面

③返回登录界面:
实现sql代码如下:

try{PreparedStatement preparedStatement = connection.prepareStatement(sql);preparedStatement.setString(1,account);preparedStatement.setString(2,password);if (!age.equals(""))preparedStatement.setInt(3,Integer.valueOf(age));if (!sex.equals(""));preparedStatement.setString(4,sex);if (!tel.equals(""))preparedStatement.setString(5,tel);preparedStatement.setString(6,name);
}catch (SQLException e){e.printStackTrace();
}

④查询航班
输入出发城市,到达城市,出发日期即可查询航班信息
实现sql代码如下:

Statement statement = (Statement) connection.createStatement();
String sql = "select * from aviation.classes,aviation.flight where flight.DepartureCity = '" +departPlace+"' and flight.ArrivalCity = '" +ArrivalPlace+"' and DepartureData between '"+data+ " 00:00:00' and '"+data+" 23:59:59' and flight.flightNumber = classes.flightNumber";
ResultSet resultSet =statement.executeQuery(sql);while (resultSet.next()){count++;Name = resultSet.getString("company_name");Time1 = resultSet.getString("DepartureData");Time1 = Time1.substring(11,19);Time2 = resultSet.getString("ArrivalData");Time2 = Time2.substring(11,19);Place1 = resultSet.getString("DepartureAirport");Place2 = resultSet.getString("ArrivalAirport");NO = resultSet.getString("planeType");classNumber = resultSet.getString("classNumber");JPanel infoPanel = new info();

⑤预订机票
点击预定按钮即可进行对该航班的预定,这时会出现添加乘客界面,输入乘客姓名,证件号,座位号等信息,点击确定即可完成预定
实现sql代码如下:

try{String sql1 = "insert into aviation.passengers values (?,?,?,?,?,?,?,?)";String sql = "select count(*) as number from aviation.passengers";Statement statement1 = (Statement) connection.createStatement();ResultSet resultSet1 = statement1.executeQuery(sql);resultSet1.next();int n = resultSet1.getInt("number");PreparedStatement preparedStatement = connection.prepareStatement(sql1);preparedStatement.setInt(1,n+2);preparedStatement.setString(2,name);preparedStatement.setString(3,id);preparedStatement.setString(4,dateFormat.format(date));preparedStatement.setString(5,seat);preparedStatement.setString(6,account);if (ticketType.equals("经济舱"))preparedStatement.setString(7,"B");else preparedStatement.setString(7,"A");preparedStatement.setString(8,classNumber);preparedStatement.execute();

(2)机场管理模块
①班次信息查询
表格显示班次编号,出发时间,到达时间,出发机场,到达机场,甲等余票,乙等余票的班次信息。
班次信息查询有四个信息输入框,当输入相应的信息之后,表格就会出现相应的班次信息。当输入框没有输入时,表格显示所有班次的信息,有输入时则显示符合要求的班次信息。
实现sql代码如下:

String sql = "SELECT * from  aviation.flight,aviation.classes where  classes.flightNumber = flight.flightNumber";if (!noText.equals("")){sql += " and company_name = '"+noText+"'";}if (!place1Text.equals("")){sql += " and DepartureCity = '"+place1Text+"'";}if (!place2Text.equals("")){sql += " and ArrivalCity ='"+place2Text+"'";}if (!dayText.equals("")){sql += " and DepartureData like'"+dayText+"%'";}Connection connection = dbHelper.getConnection();try {Statement statement = (Statement) connection.createStatement();ResultSet resultSet = statement.executeQuery(sql);int i = 0;while (resultSet.next()){values[i][0] = resultSet.getString("classNumber");values[i][1] = resultSet.getString("DepartureData");values[i][2] = resultSet.getString("ArrivalData");values[i][3] = resultSet.getString("DepartureAirport");values[i][4] = resultSet.getString("ArrivalAirport");values[i][5] = resultSet.getString("A_number");values[i][6] = resultSet.getString("B_number");i++;}}catch (SQLException e){e.printStackTrace();}
}

先判断是否有输入,若有则将选择条件加进去,找出符合条件的班次号,再将班次号的信息显示出来。

②订单信息查询
表格显示订单号,下单账号,乘客姓名,证件号,座位号,舱位,预定时间的订单信息。
订单信息查询有四个信息输入框,当输入相应的信息之后,表格就会出现相应的订单信息。当输入框没有输入时,表格显示所有订单的信息,有输入时则显示符合要求的订单信息。
实现sql代码如下:

String sql = "select * from aviation.passengers,aviation.users where users.account = passengers.account";if(!flightText.equals("")){sql += " and orderTime like '"+flightText+"%'";
}
if (!PNText.equals("")){sql += " and passengers.name = '"+PNText+"'";
}
if (!UNText.equals("")){sql += " and  classNumber = '"+UNText+"'";
}
if (!AccountText.equals("")){sql += " and users.account = '"+AccountText+"'";
}
Connection connection = dbHelper.getConnection();
try{Statement statement = (Statement) connection.createStatement();ResultSet resultSet = statement.executeQuery(sql);int i = 0;while (resultSet.next()) {values[i][0] = resultSet.getString("orderNumber");values[i][1] = resultSet.getString("account");values[i][2] = resultSet.getString("passengers.name");values[i][3] = resultSet.getString("id");values[i][4] = resultSet.getString("seat");values[i][5] = resultSet.getString("degree");values[i][6] = resultSet.getString("orderTime");i++;}
}
catch (SQLException e){e.printStackTrace();
}

先判断是否有输入,若有则将选择条件加进去,找出符合条件的订单号,再将订单号的信息显示出来。

③增加班次
下拉框里面包含了所有的航班号,通过选择所有的航班得到航班号。
实现sql代码如下:

Connection connection = dbHelper.getConnection();
try{Statement statement = (Statement) connection.createStatement();String sql = "select * from aviation.flight";ResultSet resultSet = statement.executeQuery(sql);while (resultSet.next()){FN_jtf.addItem(resultSet.getString("flightNumber"));}
}catch (SQLException e){e.printStackTrace();
}

由于有的航班在使用过程中,不能安排其他班次,当选择航班号后,会出现这个航班的使用时间表,让管理人员参考,避免冲突安排。
实现sql代码如下:

Connection connection = dbHelper.getConnection();
try{Statement statement = (Statement) connection.createStatement();String sql = "select * from aviation.classes where flightNumber ='" +FN_jtf.getSelectedItem().toString()+"'";ResultSet resultSet = statement.executeQuery(sql);int i = 0;while (resultSet.next()){values[i][0] = resultSet.getString("DepartureData");values[i][1] = resultSet.getString("ArrivalData");i++;}jTable.updateUI();jTable1.updateUI();
}
catch (SQLException e1){e1.printStackTrace();
}

选择航班号得到对应的班次,然后找出对应的出发时间和使用时间。
由于机场在一个时间点只能起飞或者降落一架飞机,所以,在输入出发机场和到达机场时,出现该机场的起飞表和降落表,让管理人员参考,避免冲突安排。
实现sql代码如下:

Statement statement = (Statement) connection.createStatement();String sql = "select * from aviation.classes where DepartureAirport = '" +DA_jtf.getText()+"'";ResultSet resultSet = statement.executeQuery(sql);int i = 0;while (resultSet.next()) {values[i][0] = resultSet.getString("DepartureData");i++;}jTable.updateUI();jTable1.updateUI();
} catch (SQLException event) {event.printStackTrace();
}try {Statement statement = (Statement) connection.createStatement();String sql = "select * from aviation.classes where ArrivalAirport ='" +AA_jtf.getText()+"'";ResultSet resultSet = statement.executeQuery(sql);int i = 0;while (resultSet.next()) {values[i][1] = resultSet.getString("ArrivalData");i++;}jTable1.updateUI();jTable.updateUI();
} catch (SQLException e1) {e1.printStackTrace();
}

上面的sql分别是出发机场和到达机场的出发时间和到达时间
由于班次号具有唯一性,所以当输入的班次号重复时,就回提示班次号重复
实现sql代码如下:

try{Statement statement = connection.createStatement();String sql = "select * from aviation.classes";ResultSet resultSet = statement.executeQuery(sql);Warning_info warning_info;while (resultSet.next()){if (CN_jtf.getText().equals(resultSet.getString("classNumber"))){warning_info = new Warning_info("该班次已存在");}}
}
catch (SQLException e1){e1.printStackTrace();
}

选择所有的班次,一个一个检查是否有和输入相同的班次号

将所有信息输入,点击确定,显示航班添加成功的提示
实现sql代码如下:

try{String sql = "insert into  aviation.classes values (?,?,?,?,?,?,?,?,?,?,?,?);";PreparedStatement preparedStatement = connection.prepareStatement(sql);preparedStatement.setString(1,CN_jtf.getText());preparedStatement.setString(2,DD_jtf.getText());preparedStatement.setString(3,DA_jtf.getText());preparedStatement.setString(4,AD_jtf.getText());preparedStatement.setString(5,AA_jtf.getText());preparedStatement.setString(6,AA_jtf.getText());preparedStatement.setInt(6,Atotal);preparedStatement.setInt(7,Integer.valueOf(DD_jtf.getText().substring(5,7)));preparedStatement.setInt(9,Btotal);preparedStatement.setBoolean(8,false);preparedStatement.setInt(10,Integer.valueOf(AP_jtf.getText()));preparedStatement.setInt(11,Integer.valueOf(BP_jtf.getText()));preparedStatement.setString(12,FN_jtf.getSelectedItem().toString());preparedStatement.execute();

其中票的总数是固定的。

④取消班次
选择班次号,首先将所有班次号放在下拉框中。
实现sql代码如下:

try {Statement statement = (Statement) connection.createStatement();String sql = "select * from aviation.classes;";ResultSet resultSet = statement.executeQuery(sql);while (resultSet.next()){CN.addItem(resultSet.getString("classNumber"));}选择要删除的航班号,选中该航班的所有信息都将显示出来
实现sql代码如下:
Statement statement = (Statement) connection.createStatement();String sql = "select * from aviation.classes where classNumber = '" +CN.getSelectedItem().toString()+"'";ResultSet resultSet = statement.executeQuery(sql);resultSet.next();DD.setText(resultSet.getString("DepartureData"));DA.setText(resultSet.getString("DepartureAirport"));AD.setText(resultSet.getString("ArrivalData"));AA.setText(resultSet.getString("ArrivalAirport"));AP.setText(resultSet.getString("APrice"));BP.setText(resultSet.getString("BPrice"));AN.setText(resultSet.getString("A_number"));BN.setText(resultSet.getString("B_number"));
}
catch (SQLException e1){e1.printStackTrace();
}

按下按钮班次取消成功,与该班次有关的订单也相应删除了。
实现sql代码如下:

try {String sqlp = "delete from aviation.passengers where classNumber = '" +CN.getSelectedItem().toString()+"'";PreparedStatement preparedStatement = connection.prepareStatement(sqlp);String sql = "delete from aviation.classes where classNumber = '" +CN.getSelectedItem().toString()+"'";PreparedStatement preparedStatement1 = connection.prepareStatement(sql);preparedStatement.execute();preparedStatement1.execute();Warning_info warning_info = new Warning_info("班次取消成功");
}
catch (SQLException e1){e1.printStackTrace();
}

应先删除订单代码,才能删除班次代码

⑤修改班次
下拉框选择可选择已有的所有航班号和班次号。
实现sql代码如下:

try {Statement statement = (Statement) connection.createStatement();String sql = "select * from aviation.flight";ResultSet resultSet = statement.executeQuery(sql);while (resultSet.next()) {FN.addItem(resultSet.getString("flightNumber"));}
}catch (SQLException e){e.printStackTrace();
}try {Statement statement = (Statement) connection.createStatement();String sql = "select * from aviation.classes";ResultSet resultSet = statement.executeQuery(sql);while (resultSet.next()) {CN.addItem(resultSet.getString("classNumber"));}
}catch (SQLException e1){e1.printStackTrace();
}

下拉框选择要修改的班次号,该航班的所有信息都显示出来,选择要修改的信息,修改后,就是实现了班次的修改
实现sql代码如下:

try{Statement statement = (Statement) connection.createStatement();String sql = "select * from aviation.classes where classNumber ='" +CN.getSelectedItem().toString()+"'" ;ResultSet resultSet = statement.executeQuery(sql);resultSet.next();DD.setText(resultSet.getString("DepartureData"));DA.setText(resultSet.getString("DepartureAirport"));AD.setText(resultSet.getString("ArrivalData"));AA.setText(resultSet.getString("ArrivalAirport"));AP.setText(resultSet.getString("APrice"));BP.setText(resultSet.getString("BPrice"));FN.setSelectedItem(resultSet.getString("flightNumber"));
}
catch (SQLException e1){e1.printStackTrace();
}

⑥航班延迟通知
点击下拉框出现所有的班次号。
实现sql代码如下:

try{Statement statement = (Statement) connection.createStatement();String sql = "select  * from aviation.classes";ResultSet resultSet = statement.executeQuery(sql);while (resultSet.next()){CN.addItem(resultSet.getString("classNumber"));}
}
catch (SQLException e){e.printStackTrace();
}

选择要修改的班次,得到原始起飞时间和到达时间,输入新的时间,点击按钮,完成班次的修改
实现sql代码如下:

try{String sql = "update aviation.classes set DepartureData = '" +newDD.getText()+"', ArrivalData = '" +newAD.getText()+"',delay = 1 where classNumber = '"+CN.getSelectedItem().toString()+"'";PreparedStatement preparedStatement = connection.prepareStatement(sql);preparedStatement.execute();Warning_info warning_info = new Warning_info("修改并发布成功");newAD.setText("");newDD.setText("");oldAD.setText("");oldDD.setText("");CN.setSelectedItem("请选择班次号");
}
catch (SQLException e1){e1.printStackTrace();
}

(3)航公公司管理模块
①增加航班
添加航班号后,如果已存在该航班号,则提示已存在。选择航空公司以及飞机机型填入出发城市,到达城市,航班号,点击按钮后即可
实现sql代码如下:

try{String sql = "insert into aviation.flight values (?,?,?,?,?);";PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1,CN.getSelectedItem().toString());
preparedStatement.setString(2,PT.getSelectedItem().toString());preparedStatement.setString(3,FN.getText());preparedStatement.setString(4,DC.getText());preparedStatement.setString(5,AC.getText());Warning_info warning_info = new Warning_info("添加成功");FN.setText("");DC.setText("");AC.setText("");
}

②查看月季报表
当搜索内容为空时,显示所有的报表信息,输入要查询的信息即可得到结果
实现sql代码如下:

String sql = "select * from  aviation.classes,aviation.flight"+" where flight.flightNumber = classes.flightNumber ";
if (!Company.equals("")){sql += " and flight.company_name = '"+Company+"'";
}
if (!Airport.equals("")){sql += " and DepartureAirport = '"+Airport+"'";
}
if (!Month.equals("")){sql += " and month = "+Month+"";
}
if (!Year.equals("")){sql +=" and DepartureCity = '"+Year+"'";
}
Connection connection = dbHelper.getConnection();
try{Statement statement = (Statement) connection.createStatement();ResultSet resultSet = statement.executeQuery(sql);int i = 0;while (resultSet.next()){values[i][0] = resultSet.getString("DepartureAirport");values[i][1] = resultSet.getString("company_name");values[i][2] = resultSet.getString("DepartureCity");values[i][3] = resultSet.getString("DepartureData").substring(0,4);values[i][4] = resultSet.getString("DepartureData").substring(5,7);int Anumber = resultSet.getInt("A_number");int Bnumber = resultSet.getInt("B_number");int Aprice = resultSet.getInt("APrice");int Bprice = resultSet.getInt("BPrice");values[i][5] = Atotal+Btotal-Anumber-Bnumber;values[i][6] = (Atotal-Anumber)*Aprice+(Btotal - Bnumber)*Bprice;i++;}
}
catch (SQLException e){e.printStackTrace();
}

软件外观

(1)用户模块界面:

用户登录界面:用户需输入自己的账号和密码进行登录,点击登录按钮,在账户密码正确的前提下可完成登录;若无账号,则可以点击注册按钮进入注册界面进行注册。


注册界面:进入注册界面后,用户需输入账号、密码、姓名、电话、性别以及年龄,其中右边标红星的框表示该项内容必填。用户的账号不可重复,标红星的内容必须填写,在满足这两个条件后即可点击注册,返回用户登录界面进行登录。


查询机票界面:用户登录完成后即可进入机票查询界面,该界面左边部分可选择单双程,输入出发城市、到达城市、出发日期和返回日期,可选择航空公司和舱位等级,由此来进行班次的筛选等,选择和输入完成信息后点击探索按钮,则可在界面右边部分看到筛选出来的班次信息,由此来进行机票的预订。

订单界面:用户选则完机票并点击预订按钮后进入订单界面,界面上边部分显示的是所选班次的信息,界面下边部分则进行乘客的添加,用户输入证件号、姓名以及座位号后,点击添加乘客按钮,完成机票预订。

(2)机场模块界面:


机场的班次查询页面:界面中间的搜索框可输入航空公司、出发地、到达地以及出发日期等信息,点击搜索按钮进行班次的搜索,下面的列表显示筛选后的班次信息。在搜索框为空时,显示全部的班次信息。

机场的订单查询界面:界面中间的搜索框可输入预定时间、乘客姓名、下单账号以及班次编号等信息,点击搜索按钮进行订单的搜索,下面的列表显示筛选后的订单信息。在搜索框为空时,显示全部的订单信息。


机场增加班次界面:界面左边部分可选择航班号,输入班次号、出发机场、到达机场、出发时间、到达时间、甲等价格以及乙等价格,界面右边上边部分的表格显示的是机场的班次时间安排,下边部分的表格则显示的是该航班的时间安排,由此在增加航班班次时可避免时间上的冲突等。在满足时间未冲突的情况下可点击增加航班按钮,完成航班班次的增加。


机场取消航班班次的界面:可选择班次号,界面显示出该班次的出发时间。到达时间、出发机场、到达机场、甲等余票、乙等余票、甲等价格以及乙等价格的信息,点击取消该航班按钮,完成航班班次的取消。

机场的修改班次界面:可选择班次号和航班号,输入要修改的出发时间到达时间、出发机场、到达机场、甲等价格以及乙等价格的信息,点击修改航班按钮,完成航班班次的修改。


航班延迟通知界面:选择航班号,显示出原起飞时间和原到达时间,输入新起飞时间和新到达时间后,点击确定并通知乘客按钮,实现航班班次起飞时间和到达时间的更新以及对乘客的通知。

(3)航空公司模块界面:


增加航班界面:选择航空公司和飞机机型,输入出发城市、到达城市以及航班号,点击确定添加航班按钮,实现航班的增加。


查看月季报表界面:界面中间的搜索框可输入航空公司、机场、城市以及月份等信息,点击搜索按钮进行报表的搜索,下面的列表显示筛选后的收益信息。在搜索框为空时,显示全部的收益信息。

软件运行结果

1、系统运行结果

(1)用户模块运行结果:


用户进入登录界面。


用户输入账号密码时,若账号密码错误,则弹出对话框显示密码错误,请重新输入。


若用户无账号,这点击登录界面的之策按钮,进入注册界面,注册界面中输入框右侧的红星标记表示该项必填。若未填写必填项,则点击注册按钮时弹出对话框显示标有红色的不能为空。


用户可填写账号、密码、姓名、电话、性别以及年龄,完成后点击注册按钮,注册成功则跳回用户登录界面。

用户注册成功后返回登录界面,弹出对话框显示账号注册成功,回到登录界面。


此时可输入账户和密码,点击登录,进入机票查询界面。


用户登录成功后进入机票查询界面,在该界面进行机票的选择。


选择国内航班单程,输入出发城市、到达城市以及出发日期,选择中华航空,点击搜索按钮进行筛选,得到右边筛选过后的机票信息。


选择一张票,点击预订按钮,弹出订单界面,可查看选择的机票信息,在输入框中可输入乘客信息。


输入证件号、姓名以及座位号,点击添加乘客,完成机票的预订。


添加完后在数据库中,发现出现了该乘客高一的信息。

(2)机场模块运行结果:


机场对班次信息进行查询,当搜索框内容为空时,显示全部的班次信息。


可加入筛选条件,例如中国航空,此时界面下方的表中显示了航空公司为中国航空时的筛选结果。


可继续加入筛选条件,例如加上出发地为上海,此时界面下方的表中了航空公司是中国航空且出发地为上海的班次信息。


机场进行订单查询,当搜索框为空时,显示全部订单信息。


可输入完成预定的乘客姓名进行搜索,例如高一,点击搜索按钮,此时界面下方表格中显示的是乘客高一的订单信息。


可输入乘客的下单账号,例如0001,点击搜索按钮,此时界面下方表中显示的是下单单号为0001的订单信息。


机场增加航班班次,选择航班号,可以看到界面右下部分的表内显示出已经安排好的该航班的时间,以避免时间上的冲突。


因机场在一个时间点只能起飞或者降落一架飞机,所以在输入出发机场和到达机场时,界面右上部分表内显示出该机场的起飞时间和降落时间,以避免时间上的冲突。


因为班次号唯一,若输入的班次号重复,则弹出对话框显示该班次已存在。


点击添加该航班按钮,弹出对话框显示航班添加成功,表示航班添加成功。


机场取消航班班次,选择班次号,即可显示出相关的该班次信息。


点击确定无效该航班按钮,弹出对话框班次取消成功,表示班次取消成功。


机场修改航班班次,选择所要修改的班次号和航班号,输入修改后的出发时间、到达时间、出发机场、到达机场、甲等座的价格以及乙等座的价格等班次信息。


点击修改航班按钮,弹出对话框显示班次修该成功,则表示班次已修改成功。


机场航班延迟管理并通知乘客,选择延迟的班次号,出现原起飞时间和原到达时间,输入新起飞时间和新到达时间。


点击确定并通知乘客按钮,弹出对话框显示修改并发送成功,表示完成班次信息数据库的更新并通知乘客延迟成功

(3)航空公司模块运行结果:


航空公司添加航班,选择航空公司,选择飞机机型,输入航班号,若已存在该航班号则弹出对话框显示该航班已存在。


选择航空公司以及飞机机型,输入出发城市、到达城市、航班号,点击确定添加航班按钮,弹出对话框显示添加成功,表示航班添加成功。


航空公司查看月季报表,当搜索框内容为空时,显示全部报表信息。


可输入航空公司进行筛选,例如中国航空,点击搜索按钮,此时界面下方表中显示的是中国航空的月季报表信息。


可输入月份进行筛选,例如5月份,点击搜索按钮,此时下方表中显示的是5月份的月季报表信息。

2、出现的问题及解决办法
(1)问题一:
java.sql.SQLException: After end of result set
解决一:
原因是引用了多个结果集,由于前一个结果集已经和数据库关闭,再次引用则出现java.sql.SQLException: After end of result set的情况,可以把定义为全局的数据库连接放进方法中单独使用,或者使用不同的resultset,如resultset0、resultset1,并进行及时的resultset0.close( )h和resultset1.close( )等。

(2)问题二:
java.sql.SQLException: Illegal operation on empty result set.
解决二:
报错的原因是 resultset 为空, 需要加入一个 while 的判断 while ( resultSet0.next () ),先判断下结果集是否为空。

(3)问题三:

在选择商务舱和经济舱的时候,无论点击商务舱还是经济舱,都是出现的经济舱的相关消息。
解决三:
原因是此处的飞机票信息中ticketType和Price是for循环体外的变量,当循环体进行一遍时,最后的ticketType和Price永远都是经济舱的相关信息。所以可采取将变量放入循环体中的方法,但由于下方还得使用到两变量取值不同的响应,因此这里最好采用两个变量,ticketType1、Price1和ticketType2、Price2分别对应商务舱和经济舱。

ticketType = "";
Price  = 0;
for (int i = 0;i < 2;i++){MyButtonUI book = new MyButtonUI("预定");try{Statement statement1 = (Statement) connection.createStatement();String sql1 = "select * from classes where classNumber = '" +classNumber+"'";ResultSet resultSet1 = statement1.executeQuery(sql1);resultSet.next();if (i == 0){ticketType = "商务舱";seatNumber = resultSet.getInt("A_number");Price = resultSet.getInt("APrice");}else {ticketType = "经济舱";seatNumber = resultSet.getInt("B_number");Price = resultSet.getInt("BPrice");}}catch (SQLException e){e.printStackTrace();}book.addActionListener(new ActionListener() {});
}

总结及体会

这里略去很多行~~~~~~

参考文献

[1]刘茜. 基于决策树方法的机票信息挖掘及机票预订系统的设计与实现[D].吉林大学,2012.
[2]王磊. 基于REST的机票预订系统的设计与实现[D].北京邮电大学,2013.
[3]韩若冰. 机票预定系统的设计与实现[D].厦门大学,2014.
[4]端木海.国内消费者旅行预订方式研究[J].企业经济,2015(05):101-104.
[5]李典桐. 用于机票预订的垂直搜索引擎的设计与实现[D].云南大学,2015.
[6]张文航.基于Web的机票预订系统的设计与实现[J].无线互联科技,2015(24):60-61.
[7]张赞赞.基于用户体验的机票预订网站策略研究[J].智库时代,2017(07):140-141.

机场售票及管理系统Java+MySQL实现相关推荐

  1. java sql 工资管理,企业工资管理系统(Java+MySQL)Word版

    <企业工资管理系统(Java+MySQL)Word版>由会员分享,可在线阅读,更多相关<企业工资管理系统(Java+MySQL)Word版(24页珍藏版)>请在人人文库网上搜索 ...

  2. 小区物业报修管理系统JAVA Mysql

    小区物业报修管理系统JAVA Mysql(毕业论文10000字以上,共22页,程序代码,MySQL数据库) 项目源码 [项目包含内容] [文档包含内容] [项目功能介绍] 所谓系统需求分析,通俗地说就 ...

  3. 学生成绩管理系统java+mysql+swing入门级项目开发

    夫陶公清风千古,余又何人,敢称庶几 代码已移至Gitee : https://gitee.com/BreezAm/edu-student 文章目录 简要: 登陆运行效果 主界面运行效果图 界面设置运行 ...

  4. 基于SSM开发的垃圾分类管理系统 JAVA MySQL

    10109基于SSM开发的垃圾分类管理系统 代码: 鏈-椄:https://pan@baidu@com/s/1wAjL3PK78Bv9866q-B6kuw (把@换成 . 就可正常访问) 趧-紶-碼: ...

  5. 城市公交管理系统 JAVA MySQL

    10079基于SSH开发的城市公交管理系统 工具 eclipse + tomact + mysql + jdk 功能详情 前台功能 后台功能 网站首页 菜单管理 热门线路 用户管理 网站公告 公告管理 ...

  6. 基于SSH开发的陶瓷工厂进存销管理系统 JAVA MySQL

    10095基于SSH开发的陶瓷工厂进存销管理系统 代码: 鏈-椄:https://pan@baidu@com/s/1a01LN31IJLzHxmVgwtVjbg (把@换成 . 就可正常访问) 趧-紶 ...

  7. 健身俱乐部管理系统 JAVA MySQL

    10105基于SSM开发的健身俱乐部管理系统 技术 Spring + SpringMVC + Mybatis 工具 eclipse + tomact + mysql + jdk 功能详情 管理员权限 ...

  8. 基于SSM开发的健身俱乐部管理系统 JAVA MySQL

    10105基于SSM开发的健身俱乐部管理系统 技术 Spring + SpringMVC + Mybatis 工具 eclipse + tomact + mysql + jdk 功能详情 管理员权限 ...

  9. 基于SSM开发的电视节目管理系统 JAVA MySQL

    10081基于SSM开发的电视节目管理系统 技术 Spring + SpringMVC + Mybatis 工具 eclipse + tomact + mysql + jdk 功能详情 前台功能 后台 ...

最新文章

  1. 程序员的爱情 第六章
  2. phpstudy mysql端口_完美解决phpstudy安装后mysql无法启动(无需删除原数据库,无需更改任何配置,无需更改端口)直接共存...
  3. mysql解压缩 1067_windows安装mysql8.0.0解压版附出现1067错误解决方法
  4. 键盘跟计算机无法识别,键盘无法识别的原因与解决办法
  5. JSP Servlet | 错误统一处理
  6. 集群虚拟服务器,Nginx集群 -LVS(Linux虚拟服务器)简介
  7. 浙江省计算机数据库三级报名,浙江省计算机等级考试三级数据库技术
  8. 一个针对.net的好的建模工具 powerdesign 11
  9. Atitit.月度计划日程表 每月流程表v5
  10. 图解tcpip读书笔记
  11. Hibernate annotation配置方式的MappedBy使用详解
  12. 基于java jsp企业人事管理系统mysql
  13. mysql 双机备份_Mysql双机热备份
  14. 宁德时代发布第一代钠离子电池;联泰科技与赢创联合研发实验室成立;霍尼韦尔高管人事变动 | 能动...
  15. proe常用c语言语句,带你轻松搞懂Proe条件语句
  16. JAVA 启动JVM时,Xms和Xmx参数
  17. 20个免费webservice接口
  18. Android应用开发期末复习题
  19. 人工神经网络算法实战教程
  20. pwm调速流程图小车_51单片机 小车 L298N pwm调速 串口控制 按键控制

热门文章

  1. (Java小游戏)魔塔v1.0
  2. 请求的名称有效,但是找不到请求的类型的数据。
  3. ABLIC Inc.推出S-35710/20(I-系列)唤醒计时器IC
  4. 梦幻西游页面动画项目
  5. wordpress主题推荐
  6. 初学html、css(2)
  7. 什么是Vue?什么又是vue指令?
  8. 怎么让微信群裂变拉人微信群如何裂变
  9. 中创新航港交所上市:市值673亿港元 小米与红杉是股东
  10. 小米集团的喜和忧:业绩下滑明显,市值再“腰斩”,造车是未来?