基于手机的旅游路线查询系统---数据库及查询接口设计-毕业论文_第1页
基于手机的旅游路线查询系统---数据库及查询接口设计-毕业论文_第2页
基于手机的旅游路线查询系统---数据库及查询接口设计-毕业论文_第3页
基于手机的旅游路线查询系统---数据库及查询接口设计-毕业论文_第4页
基于手机的旅游路线查询系统---数据库及查询接口设计-毕业论文_第5页
免费预览已结束,剩余23页可下载查看

下载本文档

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

文档简介

本科毕业论文 (科研训练、毕业设计) 题 目:基于手机的旅游路线查询系统 -数据库及查询接口设计 姓 名: 学 院:软件学院 系:软件学院 专 业:软件工程 年 级: 学 号: 指导教师(校内): 职称: 年 月 日 基于手机的旅游路线查询系统数据库及查询接口设计 1 基于手机的旅游路线查询系统 -数据库及查询接口设计 引言 本文通过程序段、图表、文字,对手机查询旅游路线所需的数据库进行了描述, 剖析了这个程序的流程概况:后台使用 Microsoft Access 作为数据源,前台使用 WAP 语言 来对数据库进行访问操作。JAVA 语言成为数据操作的载体,进行数据库数据的调用、添加、 修改。由于只是供实验用的小程序,选择用 Tomcat5.0 做服务器,不支持太多用户同时访问, 数据库则采用小型的 Microsoft Access。数据库的取用采用节约资源的原则,每次取用完, 自动将内存回收,提高再次访问的速度。数据库接口的提供采用了多层结构,将数据库连接、 关闭封装在底层的类中,上层的类只要用 sql 语句,就能返回结果。并以此为基础,提供旅 游路线查询系统所需要的各种接口及对数据库管理的各种接口。有的功能由于数据的原因或 实用性不大,只提供接口,功能可根据需要进行必要的扩展。 关键词 数据库连接池 Servlet Java Server Page Tourism Line Query System By MobilePhone Design of database and query interface Abstract The paper describe the database which are needed by the mobile phone tourism line query by programs , graphs and characters .It analyzed the general situation of this program .The Microsoft Access is used as the database resource in the background , and then the on the stage we use WAP language to visit the database . The JAVA language is used as the carrier of the data operation.It can be used for loading,adding changing the database . For the reason that the programs is only a small program used for experiment , we chose the Tomcat 5.0 as server. It could not be able to serve too many users at the same time. Then the database we chose the Microsoft Access, known as a good database for small sums of users. We believe a principle at the process of using the database that the less computer resource we used , the better we could performed. So after every time we finished the fetch of the data ,the program give the memory resource back to the computer automatically. It makes the next fetching faster.The database interface used multilayer structure . It makes the connection and the closure of the database at the class of ground floor . It is only need for the class of the upper floor to use sql language to get the result . At the base of this , we offer many interface needed for the tourism line query system of query and database management . Some function offered only the interface because of the practicability or the lacking of the database resource. The function could be extend if needed. KeyWord Connection Pool Servlet Java Server Page 基于手机的旅游路线查询系统数据库及查询接口设计 1 目录目录 第一章 引 言.2 第二章 数据库分析和建立.2 2.1 系统功能描述 .2 2.2 实体关系 .3 第三章 数据库连接池的实现.5 3.1 问题的描述 .5 3.2 问题的分析和解决方案 .5 3.3 连接池的具体实现 .7 第四章 接口的实现8 4.1 数据操作结构描述 .8 4.2 查询接口的具体描述 .9 4.2.1 OPERATEDATA类9 4.2.2 SERVICE类 .9 4.2.3 SERVICE_EN类 .12 4.3 管理接口的实现 14 4.3.1 ADMIN类14 4.3.2 INTEREST类 .16 致 谢 语24 参考文献25 附录25 基于手机的旅游路线查询系统数据库及查询接口设计 2 第一章第一章 引引 言言 随着改革开放的深入,20 年来,中国的经济有了突飞猛进的发展,随之而来的是人们 的生活水平的迅速提高,各种通讯工具,高级生活用户渐渐步入了百姓家,汽车、移动电话 等原来所谓的奢侈品已经不再是大部分人的梦想。中国 移动用户超过 2 亿是一个非常具有里程碑意义的成果。并随着经济建设,国家更多的把重心 从相对耗能耗资源的工业,转移到绿色环保的旅游产业。对于我们这个地大物博的泱泱大国, 旅游产业大有所为。越来越多的人们把节假日交给了旅游,这种休闲方式渐渐被大多数人所 认同。为了给人们外地方便地查询到景点及其它旅游信息,我们小组设计了可以通过手机 GPRS 通过 WAP 网页访问的旅游路线查询系统。该系统数据库包含了旅游路线的查询,景点 及其相关旅游服务配套设施的查询服务,基本涵盖了用户对旅游方面的需要。前台的数据查 询及后台的数据库管理。本文的主要目的是介绍数据操作,及逻辑接口的介绍。详细介绍了 从数据库设计,建表到数据库实现各种功能的 SQL 操作。并提供了扩展功能的接口,方便实 现功能的扩充。 第二章 数据库分析和建立 2.12.1 系统功能描述系统功能描述 旅游路线查询系统分为前台应用和基于 web 的后台数据管理和维护两大部分。前台应用 提供的功能大致分为:按城市路线查询、按景点查询;后台管理与维护包括对景点、路线的 数据操作,对管理员密码的修改 。 2.22.2 实体关系实体关系 基于手机的旅游路线查询系统数据库及查询接口设计 3 have (1,N) CityLineHave (1,1) Interesthave (N,1) (1,N) 图 1 实体关系图 Introducehave (1,1) (1,1) Interest 图 2 实体关系图 根据功能的需求我们设计数据库 2.32.3 数据库实现数据库实现 根据实体建表 City 城市表,描述的是城市的属性, 详细内容见表 1 City_num 表示站点的 ID 值 City_name 表示中文城市名字 表 1 城市信息表 属性类型大小 City_numInt10 City_nameVarchar20 Interest 景点表,描述的是景点的属性,详细内容见表 2 Interest_name 表示景点的名字 Interest_num 表示景点的代号 ID Line_name 表示旅游路线的名字 Line_num 表示旅游路线的名字 City_name 表示城市的名字 表 2 景点数据结构表 属性类型大小 基于手机的旅游路线查询系统数据库及查询接口设计 4 Interest_nameVarchar20 Interest_numInt10 Line_nameVarchar20 Line_numInt10 Interest_introduce 景点介绍表,描述的是景点的详细介绍,详细内容见表 3 Interest_name 表示景点的名字 Interest_num 表示景点的代号 ID Interest_introduce 表示景点的介绍 表 3 景点介绍关系表 属性类型大小 Interest_nameVarchar20 Interest_numInt10 Interest_introduceVarchar1000 Line 旅游路线表,描述的是旅游路线的属性,详细内容见表 4 Id 表示旅游践线所对应的的标号 Line_num 表示旅游路线的所对应的代号 ID Line_name 表示旅游路线的名字 City_name 表示城市的名字 表 4 旅游路线数据表 属性类型大小 IDInt10 Line_numInt10 Line_nameVarchar20 City_nameVarchar20 Manager 后台管理登录信息表,描述的是后台数据库管理登录的密码信息,详细内容见 User 表示后台数据库管理的用户名纪录的名字 Password 表示后台数据库管理的用户名所对应的密码记录 基于手机的旅游路线查询系统数据库及查询接口设计 5 表 5 管理员登录密码表 属性类型大小 Uservarchar 20 passwordvarchar20 第三章 数据库连接池的实现 3.13.1 问题的描述问题的描述 在使用开发基于数据库的 WEB 程序时,传统的思维基本是按以下步骤: 1 在主程序中直接建立数据库连接 2 进行 SQL 操作,取出数据 3 断开数据库连接 使用这种思路进行开发,存在很多问题。由于我们要为每一次网页请求建立一次数据库 连接。如果仅仅是同时有一次或几次的操作来说,也许你感觉不到系统开销的时间。但是, 针对网络程序来讲,即使是在一个短短的时间段内,对服务器操作的请求远不止一两次,而 是根据网站的知名度,成几何级数增长。好多网站就是由于对请求的用户数量估计不足而造 成服务器的瘫痪,所谓的网络炸弹其实就是利用这种原理,用超量的访问请求来使服务器忙 不过来。在这种情况下,系统开销是非常大的。事实上,在一个针对数据库的 WEB 系统中, 建立数据库连接的操作将用到系统开销的很大一部分。这就是所谓的网站速度瓶颈所在,所 以,这个问题一定要在设计之初考虑到。 其次,使用传统的思路,你必须去管理每一个连接,确保他们能被正确关闭,如果出现 程序异常而导致某些连接未能关闭,将导致数据库系统中的内存回收不回来,我们将不得不 重启数据库,而这在当今网络服务实时性的苛刻要求下,是难以接受的结果。 3.23.2 问题的分析和解决方案问题的分析和解决方案 基于手机的旅游路线查询系统数据库及查询接口设计 6 第一个思路,如果我们采用一个全局的 Connection 对象,创建后就不关闭它,以后程 序就一直使用它,这样就不存在每次都必须创建及关闭连接的问题了。但是,考虑问题的完 整性,同一个连接使用次数过多,将会导致连接的不稳定,进而会导致 WEB SERVER 的频频 重启。因而,这种方法也不可取。 基于高级操作系统对内存分配的几种模型:RR 时间片,先到先服务,最短先服务,优 先级的模式,类似的可以用在我们对解决这个问题的实现上。所以,我们可以使用连接池技 术来解决上述问题。首先,介绍一下连接池技术的基本原理。顾名思义,连接池最基本的思 想就是预先建立一些连接放置于内存对象中以备使用:如图 3 书馆 图 3 关系图 当程序中需要建立数据库连接时,只须从内存中取一个来用而不用新建。同样,使用完毕后, 只需放回内存即可。而连接的建立、断开都由连接池自身来管理。同时,我们还可以通过设 置连接池的参数来调整连接池中的连接数、每个连接的最大使用次数等等。通过使用连接池, 将大大提高程序效率,同时,我们可以通过其自身的管理机制来监视数据库连接的数量、使 用情况等。 建立连接池第一步,就是要建立一个静态的连接池,所谓静态是指,池中的连接是在系 统初始化时就分配好的,并且不能够随意关闭的。Java 中给我们提供很多容器类可以方便 的用来构建连接池,如:Vector、Stack 等。在系统初始化时,根据配置创建连接并放置在 连接池中,以后所使用的连接都是从该连接池中获取的,这样就可以避免连接随意建立、关 闭造成的开销(当然,我们没有办法避免 Java 的 Garbage Collection 带来的开销) 。 基于手机的旅游路线查询系统数据库及查询接口设计 7 第二步 分配、释放思路。有了这个连接池,下面我们就可以提供一套自定义的分配、释 放步骤。当用户发出数据库连接请求的时候,程序首先看连接池中是否有空闲连接,这里的 空闲是指,目前没有分配出去的连接。如果存在空闲连接则把连接分配给客户,并作相应处 理,具体处理策略,在关键议题中会详述,主要的处理策略就是标记该连接为已分配。若连 接池中没有空闲连接,就在已经分配出去的连接中,寻找一个合适的连接给客户(选择策略 会在关键议题中详述) ,此时该连接在多个客户间复用。当客户释放数据库连接时,可以根 据该连接是否被复用,进行不同的处理。如果连接没有使用者,就放入到连接池中,而不是 被关闭。这样就可以在一个合理的复用次数下,保证资源的合理利用,避免频率的数据库开 关的巨大开销浪费。至于配置数据库连接池中到底要放置多少个连接,连接耗尽后该如何处 理的问题,可以经过实验,根据用户量级的范围,测试最佳效能的参数。本 connection 是 采用的参数为 3,针对不同需要的网站,可以灵活修改参量。以求达到最佳效能。 3.33.3 连接池的具体实现连接池的具体实现 图 4 是我们实现连接池的类 图 4 类图 其中 openDB()方法是我们建立连接池的第一步,用来预先打开数个数据库连接 getConnection()方法是我们获取一个连接的方法 基于手机的旅游路线查询系统数据库及查询接口设计 8 returnConnection()方法是将一个连接返回给连接池 管理连接池的策略是取出一个连接时,将这个连接放到 boundConnect 队列,当返回连 接时将这个连接从 boundConnect 放入 freeConnect 队列,当连接全部取出时用户还想继续 取连接,用户只好等待,直到其他用户将连接返回给连接池时用户才能取出连接。 另外我们写了一个 ConnServlet 配置在 tomcat 服务器上,在服务器起动时就起动连接池(运行 init()方 法),服务器关闭时(运行 destroy()方法)就关闭连接池。运行 getConnection()方法可以调用连接池的 getConnection 方法获得数据库连接。运行 returnConnection()方法可以调用连接池的 returnConnection()方 法回收连接。 第四章第四章 接口的实现接口的实现 4.14.1 数据操作结构描述数据操作结构描述 数据操作类的层次结构图如图 5: ConnPool OperateData ConnServlet ServiceLoginLineInterestAdminCityService_en 图 5 系统结构图 ConnPool 类是数据库连接池 ConnServlet 是一个 servlet 的子类,在服务器起动时起动连接池,在服务器关闭时关闭连接 池 OperateData 类是连接封装类,向 ConnServlet 取得数据库连接,并接收上层用户传来的 sql 语句,将结果返回给上层 Service_en 是提供英文站点查询服务接口的类 Service 是提供中文站点查询服务接口的类 基于手机的旅游路线查询系统数据库及查询接口设计 9 Admin 提供用户管理的类 City 提供城市管理的类 Interest 提供景点管理的类 Line 提供线路管理的类 Login 提供管理员密码的管理的类 4.2 查询接口的具体描述 4.2.14.2.1 OperateDataOperateData 类类 图 6 类结构图 图 6 是 OperateData 类,executeSQL 方法是用来执行 SQL 查询操作;execUpdate 是用来执行 SQL 修改操作;closeConnection() 是将数据库连接返回给连接池。类被放到 database 中。 4.2.24.2.2 ServiceService 类类 图 7 类结构图 图 7 是 Service 的类结构图,从图中可以看出这个类提供了哪些接口,下面我们就来具体描 述这些接口。 database.util 基于手机的旅游路线查询系统数据库及查询接口设计 10 Class Service public class Service public ResultSet LineList(String cityname) String sql=“select line_name from line where city_name=“+cityname.trim()+“; ResultSet rs=operateData.execSQL(sql); return rs; 该类用到的 sql 语言是select line_name from line where city_name=“+cityname.trim()+“ 根据城市名,查找所有的城市经由的旅游路线,并列出表来。 提供城市查询 传入的参数 city_num 表示城市名,返回结果是一个记录集 如果为空表示查询出错或没有结果 如果不为空则记录集中的字段为 city_num(城市路线代号) 示例输入“厦门” 示例返回结果: 厦门一日游 1(路线名) 程序中用到的 sql 语句 select interest_introduce from interest_introduce where interest_name=“+interestname.trim()+“ 根据用户选择的景点名,调用数据库,调出景点对应 的景点介绍。并返回一个值。 试例: 点击“鼓浪屿” 结果示例: 鼓浪屿: 鼓浪屿位于厦门岛的西南面,面积仅 1.78 平方公里,常住居民 2.3 万人,与厦门隔一条几百 米宽的厦鼓海峡,当地人习惯称之为鹭江。乘渡轮不过十来分钟及可到。 岛上气候宜人, 树木繁茂,鸟语花香,空气清新,无车马喧嚣,礁石、峭壁、丘峰相映成趣,各式建筑错落 点缀,素有“海上花园”之誉,日光岩奇石突起,是鼓浪屿也是厦门的象征,有“未到日光 岩等于没到过厦门”之说。同时,鼓浪屿还有“万国建筑博览” 、 “音乐之岛”和“钢琴之岛” 基于手机的旅游路线查询系统数据库及查询接口设计 11 的称誉,还是步行岛,全岛禁行机动车,这也成为该岛的一大特色。 即可简单的了解到某处景点的特点。 getLine public ResultSet getLine(String interestname) String sql=“select line_name from interest where interest_name=“+interestname.trim()+“; ResultSet rs=operateData.execSQL(sql); Return rs; 提供旅游景点查询,根据所选择的旅游路线,查找线路经由的旅游景点,并列出表。 类所用到的 sql 语言是: select line_name from interest where interest_name=“+interestname.trim()+“ 实例: 点击厦门一日游 1 结果: 南普陀 湖里山 海上看金门 鼓浪屿 日光岩 郑成功纪念馆 closeConnection public void closeConnection() 使用完连接后,将连接返回给连接池 4.2.34.2.3 Service_enService_en 类类 基于手机的旅游路线查询系统数据库及查询接口设计 12 图 8 类结构图 图 8 是 Service_en 的类结构图,从图中可以看出这个类提供了哪些接口,下面我们就来具体 描述这些接口。 database.util Class Service_en public class Service_en public ResultSet LineList(String cityname) String sql=“select line_name from line_en where city_name=“+cityname.trim()+“; ResultSet rs=operateData.execSQL(sql); return rs; 该类用到的 sql 语言是 select line_name from line_en where city_name=“+cityname.trim() +“ 根据城市名,查找所有的城市经由的旅游路线,并列出表来。 提供城市查询 传入的参数 city_num 表示城市名,返回结果是一个记录集 如果为空表示查询出错或没有结果 如果不为空则记录集中的字段为 city_num(城市路线代号) 示例输入“peking” 示例返回结果: peking one day 1(路线名) peking one day 2 peking one day 3 Tourism getIntro 基于手机的旅游路线查询系统数据库及查询接口设计 13 public ResultSet getIntro(String interestname) String sql=“select interest_introduce_en from interest_introduce_en where interest_name=“+interestname.trim()+“; ResultSet rs=operateData.execSQL(sql); return rs; 程序中用到的 sql 语句 select interest_introduce from interest_introduce_en where interest_name=“+interestname.trim()+“ 根据用户选择的景点名,调用数据库,调出景点对应 的景点介绍。并返回一个值。 试例: 点击“South Temple” 结果示例: South Temple: The South Temple is at the foot of the Wulao Hill in XiaMen. It began at Tang Dynasty.The famous scenic spot of Buddhism in MinNan.It contains TianWang palace,DaXiong palace.The DaBei palace is full of skillful architecture。Everyday,the temple is full of fans believe in Buddhism. 即可简单的了解到南普陀这个景区的特点。 getLine public ResultSet getLine(String interestname) String sql=“select line_name from interest where interest_name=“+interestname.trim()+“; ResultSet rs=operateData.execSQL(sql); Return rs; 提供旅游景点查询,根据所选择的旅游路线,查找线路经由的旅游景点,并列出表。 类所用到的 sql 语言是: select line_name from interest where interest_name=“+interestname.trim()+“ 基于手机的旅游路线查询系统数据库及查询接口设计 14 实例: 点击: xiamen oneday one 结果: South temple hulishan haishangkanjinmen Gulang Islands Riguang yan zhengchenggongjinianguan closeConnection public void closeConnection() 使用完连接后,将连接返回给连接池 4.34.3 管理接口的实现管理接口的实现 4.3.14.3.1 AdminAdmin 类类 基于手机的旅游路线查询系统数据库及查询接口设计 15 图 9 类结构图 图 9 是 Admin 的类结构图,从图中可以看出这个类提供了哪些接口,下面我们就来具体描述 这些接口。 database.util Class Admin public class Admin checkUserPwd public boolean checkUserPwd(java.lang.String username, java.lang.String userpwd) 检测用户名和密码是否正确 传 入参数 username 表示 用户名,userpwd 表示密码 如果用户和密码都正确返回 true,否则返回 false modifyUserPwd public boolean modifyUserPwd(java.lang.String username, java.lang.String userpwd) 基于手机的旅游路线查询系统数据库及查询接口设计 16 修改用户密码 传 入参数 username 表示 用户名,userpwd 表示新密码 如果修改成功返回 true,否则返回 false closeConnection public void closeConnection() 使用完连接后,将连接返回给连接池 4.3.24.3.2 InterestInterest 类类 图 10 类结构图 上图是 Interest 的类图,从图中可以看出这个类提供了哪些接口,下面我们就来具体描述这 些接口。 database.util Class Interest public class Interest addInterest public boolean checkLine(int Line_num,) 查询景点是否经过某一路线 基于手机的旅游路线查询系统数据库及查询接口设计 17 传入参数 Line_num(路线 ID 代码),Line_name(路线名称) 如果 Line_num 经过 Line_name 这条路线则返回 true 值 否则返回 false getLine public java.sql.ResultSet getLine(java.lang.String Line_num) 提供查旅游路线经由的所有旅游景点 传入参数 Line_num(旅游路线代码) 返回结果是一个记录集 如果为空表示查询出错或没有结果 addLine public boolean addLine(int Tourism_num, java.lang.String station_name, int station_num) 在 line_db 表里添加一条记录 传入参数;Line_num(旅游路线名称),interest_name(景点名称),interest_num(景点代码) 非法景点则返回 false 添加成功返回 true,否则返回 false delLine public boolean delLine(int Line_num, java.lang.String station_name) 删除 line_db 里的一条记录 传入参数 Line_num(哪条路线),interest_name(景点名称) 非法景点则返回 false 删除成功返回 true,否则返回 false 基于手机的旅游路线查询系统数据库及查询接口设计 18 modLine public boolean modLine(int id, int Line_num, java.lang.String station_name, int station_num) 修改 Line_db 表的一条记录 传入参数 id(line_db 表里的关键 字段第 几条记录) Line_num 哪条旅游路线,interest_name 景点名字 interest_num 第几个景点 如果修改成功则返回 true,否则返回 false closeConnection public void closeConnection() 使用完连接后,将连接返回给连接池 4.34.3 数据库管理数据库管理 管理程序主页面截图: 基于手机的旅游路线查询系统数据库及查询接口设计 19 图 11 界面截图 4.3.14.3.1 Login.jspLogin.jsp 部分代码:function check_input(theForm) if (theForm.username.value =“)|(isspacestring(theForm.username.value) alert(“请输入用户名!“); theForm.username.focus(); return (false); if(theForm.userpwd.value =“)|(isspacestring(theForm.userpwd.value) alert(“请输入密码!“); theForm.userpwd.

温馨提示

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

评论

0/150

提交评论