1、 本科毕业论文 (科研训练、毕业设计 ) 题 目: 基于手机的旅游路线查询系统 -数据库及查询接口设计 姓 名: 学 院:软件学院 系:软件学院 专 业:软件工程 年 级:级转专业 学 号: 指导教师(校内): 职称:副教授 年 月 日 基于手机的旅游路线查询系统 数据库及查询接口设计 1 基于手机的旅游路线查询系统 -数据库及查询接口设计 引言 本文通过程序 段、图表、文字,对手机查询旅游路线所需的数据库进行了描述,剖析了这个程序的流程概况:后台使用 Microsoft Access 作为数据源,前台使用 WAP 语言来对数据库进行访问操作。 JAVA 语言成为数据操作的载体,进行数据库数据
2、的调用、添加、修改。由于只是供实验用的小程序,选择用 Tomcat5.0 做服务器,不支持太多用户同时访问,数据库则采用小型的 Microsoft Access。数据库的取用采用节约资源的原则,每次取用完,自动将内存回收,提高再次访问的速度。数据库接口的提供采用了多层结构,将数据库连接、关闭封 装在底层的类中,上层的类只要用 sql 语句,就能返回结果。并以此为基础,提供旅游路线查询系统所需要的各种接口及对数据库管理的各种接口。有的功能由于数据的原因或实用性不大,只提供接口,功能可根据需要进行必要的扩展。 关键词 数据库连接池 Servlet Java Server Page Tourism
3、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 databas
4、e 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 ,
5、 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 ,
6、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
7、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 pr
8、acticability 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 实体关系 . 2 第三章 数据库连接池的实现 . 5 3.1 问题的描述 . 5 3.2 问题的分析和解决方案 . 5 3.3 连接池的具体实现 . 7 第四
9、章 接口的实现 . 8 4.1 数据操作结构描述 . 8 4.2 查询接口的具体描述 . 9 4.2.1 OPERATEDATA类 . 9 4.2.2 SERVICE类 . 9 4.2.3 SERVICE_EN 类 . 11 4.3 管理接口的实现 . 14 4.3.1 ADMIN类 . 14 4.3.2 INTEREST类 . 16 致 谢 语 . 25 参考文献 . 25 附录 . 25 基于手机的旅游路线查询系统 数据库及查询接口设计 2 第一章 引 言 随着改革开放的深入, 20 年来,中国的经济有了突飞猛进的发展,随之而来的是人们的生活水平的迅速提高,各种通讯工具,高级生活用户渐渐步
10、入了百姓家,汽车、移动电话等原来所谓的奢侈品已经不再是大部分人的梦想。 中国 移动用户超过 2 亿是一个非常具有里程碑意义的成果。并随着经济建设,国家更多的把重心从相对耗能耗资源的工业,转移到绿色环保的旅游产业。对于我们这个地大物博的泱泱大国,旅游产业大有所为。越来越多的人们把节假日交给了旅游,这种休闲方式渐渐被大多数人所认同。为了给人们外地方便地查询到景点及其它旅游信息,我们小组设计了可以通过手机 GPRS 通过 WAP 网页访问的旅游路线查询系统。该系统数据库包含了旅游路线的查询,景点及其相关旅游服务配套设施的查询服务,基本涵盖了用户对旅游方面的需要。前台的数据查询及后台的数据库管理。 本
11、文的主要目的是介绍数据操作,及逻辑接口的介绍。详细介绍了从数据库设计,建表到数据库实现各种功能的 SQL 操作。并提供了扩展功能的接口,方便实现功能的扩充。 第二章 数据库分析和建立 2.1 系统功能描述 旅游路线查询系统分为前台应用和基于 web 的后台数据管理和维护两大部分。前台应用提供的功能大致分为:按城市路线查询、按景点查询 ;后台管理与维护包括对景点、路线的数据操作,对管理员密码的修改 。 2.2 实体关系 基于手机的旅游路线查询系统 数据库及查询接口设计 3 h a v e( 1 , N )City LineHave ( 1 , 1 ) Interesthave ( N , 1 )
12、( 1 , N )图 1 实体关系图 Introducehave( 1 , 1 )( 1 , 1 )Interest图 2 实体关系图 根据功能的需求我们设计数据库 2.3 数据库实现 根据实体建表 City 城市表,描述的是城市的属性 , 详细内容见表 1 City_num 表示站点的 ID 值 City_name 表示中文城市名字 表 1 城市信息表 属性 类型 大小 City_num Int 10 City_name Varchar 20 Interest 景点表,描述的是景点的属性 ,详细内容见表 2 Interest_name 表示景点的名字 Interest_num 表示景点的代号
13、 ID Line_name 表示旅游路线的名字 Line_num 表示旅游路线的名字 City_name 表示城市的名字 表 2 景点 数据结构表 基于手机的旅游路线查询系统 数据库及查询接口设计 4 属性 类型 大小 Interest_name Varchar 20 Interest_num Int 10 Line_name Varchar 20 Line_num Int 10 Interest_introduce 景点介绍表,描述的是景点的详细介绍 ,详细内容见表 3 Interest_name 表示景点的名字 Interest_num 表示景点的代号 ID Interest_introd
14、uce 表示景点的介绍 表 3 景点介绍关系 表 属性 类型 大小 Interest_name Varchar 20 Interest_num Int 10 Interest_introduce Varchar 1000 Line 旅游路线表,描述的是旅游路线的属性 ,详细内容见表 4 Id 表示旅游践线所对应的的标号 Line_num 表示旅游路线的所对应的代号 ID Line_name 表示旅游路线的名字 City_name 表示城市的名字 表 4 旅游路线 数据表 属性 类型 大小 ID Int 10 Line_num Int 10 Line_name Varchar 20 City_n
15、ame Varchar 20 Manager 后台管理登录信息表,描述的是后台数据库管理登录的密码信息 ,详细内容见 User 表示后台数据库管理的用户名纪录的名字 基于手机的旅游路线查询系统 数据库及查询接口设计 5 Password 表示后台数据库管理的用户名所对应的密码记录 表 5 管理员登录密码 表 属性 类型 大小 User varchar 20 password varchar 20 第三章 数据库连接池的实现 3.1 问题的描述 在使用开 发基于数据库的 WEB 程序时,传统的 思维 基本是按以下步骤: 1 在主程序中 直接 建立数据库连接 2 进行 SQL 操作,取出数 据 3
16、 断开数据库连接 使用这种思路进行开发,存在很多问题。由于我们要为每一次网页请求建立一次数据库连接。如果仅仅是同时有一次或几次的操作来说,也许你感觉不到系统开销的时间。但是,针对网络程序来讲,即使是在一个短短的时间段内,对服务器操作的请求远不止一两次,而是根据网站的知名度,成几何级数增长。好多网站就是由于对请求的用户数量估计不足而造成服务器的瘫痪,所谓的网络炸弹其实就是利用这 种原理,用超量的访问请求来使服务器忙不过来。 在这种情况下,系统开销是 非常 大的。事实上,在一个 针对 数据库的WEB 系统中,建立数据库连接的操作将 用到系统开销的很大一部分 。 这就是所谓的网 站速度瓶颈 所在,所
17、以,这个问题一定要在设计之初考虑到 。 其次,使用传统的 思路 ,你必须去管理每一个连接,确保他们能被正确关闭,如果出现程序异常而导致某些连接未能关闭,将导致数据库系统中的内存 回收不回来 , 我们将不得不重启数据库,而这在当今网络服务实时性的苛刻要求下,是难以接受的结果。 3.2 问题的分析和解决方案 基于手机的旅游路线查询系统 数据库及查询接口设计 6 第一个思路,如果我 们 采用一个全局的 Connection 对象,创建后就不关闭 它 ,以后程序 就 一直使用它,这样就不存在每次 都必须创建及 关闭连接的问题了。但是, 考虑问题的完整性, 同一个连接使用次数过多,将会导致连接的不稳定,
18、进而会导致 WEB SERVER 的频频重启。 因 而,这种方法也不可取。 基于高级操作系统对内存分配的几种模型: RR 时间片,先到先服务,最短先服务,优先级的模式,类似的可以用在我们对解决这个问题的实现上。所以, 我们可以使用连接池技术来解决上述问题。首先,介绍一下连接池技术的基本原理。顾名思义,连接池最基本的思想就是预先 建立一些连接放置于内存对象中以备使用: 如图 3 书馆 图 3 关系图 当程序中需要建立数据库连接时,只须从内存中取一个来用而不用新建。同样,使用完毕后,只需放回内存即可。而连接的建立、断开都 由 连接池自身来管理。同时,我们还可以通过设置连接池的参数来 调整 连接池中
19、的连接数、每个连接的最大使用 次数等等。通过使用连接池,将大大提高程序效率,同时,我们可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。 建立连接池第一步,就是要建立一个静态的连接池,所谓静态是指,池中的连接是在系统初始化时就分配好的,并且不能够随意关闭的。 Java 中给我们提供很多容器类可以方便的用来构建连接池,如: Vector、 Stack 等。在系统初始化时,根据配置创建连接并放置在连接池中,以后所使用的连接都是从该连接池中获取的,这样就可以避免连接随意建立、关闭造成的开销(当然,我们没有办法避免 Java 的 Garbage Collection 带来的开销)。 基于手机
20、的旅游路线查询系统 数据库及查询接口设计 7 第二步 分配、释放 思路。 有了这个连接池,下面我们就可以提供一套自定义的分配、释放 步骤 。当 用户发出 数据库连接 请求的时候 , 程序 首先看连接池中是否有空闲连接,这里的空闲是指,目前没有分配出去的连接。如果存在空闲连接则把连接分配给客户,并作相应处理,具体处理策略,在关键议题中会详述,主要的处理策略就是标记该连接为已分配。若连接池中没有空闲连接,就在已经分配出去的连接中,寻找一个合适的连接给客户(选择策略会在关键议题中详述),此时该连接在多个客户间复用。当客户释放数据库连接时,可以根据 该连接是否被复用,进行不同的处理。如果连接没有使用者,就放入到连接池中,而不是被关闭。 这样就可以在一个合理的复用次数下,保证资源的合理利用,避免频率的数据库开关的巨大开销浪费 。 至于配 置数据库连接池中到底要放置多少个连接,连接耗尽后该如何处理 的问题,可以经过实验,根据用户量级的范围,测试最佳效能的参数。本connection 是采用的参数为 3,针对不同需要的网站,可以灵活修改参量。以求达到最佳效能。 3.3 连接池的具体实现 图 4 是我们实现连接池的类 图 4 类图 其中 openDB()方法是我们建立连接池的第一步 ,用来预先打开数个数据库连接