承德石油高等专科学校JAVA程序设计课程设计报告课题:校园IP系统查询姓名:王建涛学号:22专业班级:计算机系软件0902班指导教师:谢懿设计时间:2011年01月07日评阅意见:评定成绩:指导老师签名:年月日承德石油高等专科学校java程序设计第2页目录一、课程设计的目的和意义:.........................3二、分析与设计:.................................32.1功能模块划分:.....................................32.2数据库结构描述:...................................62.3、系统详细设计文档.................................92.4、各个模块的实现方法描述:........................102.5测试数据及期望结果................................11三、源代码:....................................12四、总结........................................18五、参考文献:..................................18承德石油高等专科学校java程序设计第3页一、课程设计的目的和意义:校园IP地址查询系统采用Java和XML结合设计开发,将局域网内的IP地址进行分组归类,用户可以查询局域网内任一IP地址的归属。要进行本系统的开发,必须对SAX(simpleAPIforXML)比较熟悉,并且应该熟悉Java编程,而且还要熟悉利用JDBC进行数据连接的知识。当然,还要有一定的SQL基础和GUI编程知识。为了便于数据信息的表达和数据信息的网络传输,这个系统采用了XML格式来存储数据,即先通过JDBC-ODBC连接,将数据存储到数据库中,然后再从数据库中读出,以XML方式的形式组成XML文档,GUI查询界面再对这个XML文档进行查询操作,然后返回给用户相应的查询结果,因此,如何设计和开发好这个校园IP地址查询系统,对于提高Java开发水平和XML的应用能力有极大的帮助。在这个设计开发过程中,开发者需要掌握XML文档的表示形式、XML数据的数据库存储形式以及XML文档的解析形式等。二、分析与设计:2.1功能模块划分:2.1.1、校园IP查询系统主界面:校园IP查询系统主要包括IP地址显示区、“开始查询”按钮、“退出系统”按钮、查询地址输入区域。根据实际要求设计的主界面如图2-1所示。图2-1校园IP查询系统主界面承德石油高等专科学校java程序设计第4页2.1.2、IP信息存储子系统:可以使用命令行的方式来创建IP信息表。SQL脚本如下:CreatetableIPIfo(STARTIPvarchar(50),ENDIPvarchar(50),LOCALvarchar(50))使用java语言与数据库交互的过程如下:装入数据库驱动程序,这可以是一个JDBC驱动程序或JDBC-ODBC桥。(1)创建至数据库的Connection。(2)创建一个Statement对象,该对象实际执行SQL或存储过程。(3)创建一个ResultSet,然后用执行查询的结果填充。要访问数据库,首先要装入JDBC驱动程序,在任何给定的时间都可以使用一些不同的驱动程序;由DriverManager通过尝试创建与每个所知的驱动程序的连接来确定使用哪一个。应用程序将使用第一个成功连接的驱动程序。这里使用JDBC-ODBC桥连接数据库:(1)打开组件面板选中DataExpress栏。向DataAccess中加入database和queryDataset组件,然后对database组件设置属性如下图2-2所示:图2-2database设置(2)单击DataAccess文件下的queryDataset组件然后设置属性,如图2-3所示:承德石油高等专科学校java程序设计第5页图2-3queryDataset设置2.1.3、IP信息读取子系统:一旦链接到数据库,应用程序就可以开始检索数据了。在SQL数据库,通常使用SELECT语句检索数据。要选择数据表中的所有数据,可以运行如下命令:SELECT*FROMIPInfo;创建Statement对象很简单,只需使用Connection的createStatement方法即可,务必要捕获可能产生的SQLException。Statementstatement=null;try{statement=db.createStatement();}catch(SQLExceptione){System.out.println(“SQLError:”+e.getMessage());要实际检索数据,必须执行Statement。这通常需要传递一个SELECT语句,该语句创建一组以ResultSet返回的数据,代码如下所示:ResultSetresultset=null;try{statement=db.createStatement();resultset=statement.executeQuery(“SELECT*FROMIPInfo”);}catch(SQLExceptioe){system.out.println(“SQLError:”+e.getMessage());}可以用两种方法检索数据本身:通过名称和通过索引。这里采用通过名称检索,代码如下所示:if(resultset.net()){System.out.print(resultset.getString(“STARTIP”);System.out.print(resultset.getString(“ENDIP”));System.out.print(resultset.getString(“LOCAL”));}else{System.out.print(“NOdataexists”);}承德石油高等专科学校java程序设计第6页2.2数据库结构描述:2.2.1、建立IP信息数据库校园IP地址查询系统选用SQLSever2000作为系统服务数据库,这是因为SQLSever2000界面友好、操作简便,并且对于XML数据的支持较好。为了能够存储IP信息,应先在SQLSever2000中建立一个IP信息数据库,具体步骤如下:(1)、打开SQLSever2000企业管理器,如图2-4所示:图2-4SQLSever数据库(2)、新建数据库并设置数据库名称为CampusIP。如图2-6所示:图2-6设置数据库名称承德石油高等专科学校java程序设计第7页(3)、设置数据库文件名及其存放地址“C:\database\data\SQL\MSSQL\data\CampusIP_Data.MDF”,如图2-7所示:图2-7设置数据库文件名(4)、设置数据事务日志文件名及其存放的位置“C:\database\data\SQL\MSSQL\data\CampusIP_Log.LDF”如图2-8所示:图2-8设置数据库事务日志文件承德石油高等专科学校java程序设计第8页2.2.2建立IP信息数据库下面建立一个IP信息数据库,具体步骤如下:(1)、新建数据表,设计数据表的列名、数据类型等,表中的数据项共三项:STARTIP(起始IP地址)、ENDIP(结束IP地址)和LOCAL(这段IP的属主单位名称),如图2-10所示:图2-10数据表设置(2)、设置数据表名称,如图2-11所示:图2-11设置数据表名承德石油高等专科学校java程序设计第9页2.3、系统详细设计文档校园IP地址查询系统要求比较高的响应速度和异构平台的互通,它需要实现如下功能:(1)IP信息存储功能。根据输入文本文件的IP地址信息,通过JDBC-ODBC数据库连接实现对SQLServer数据库的连接,将IP地址信息存储到数据库中。数据库中的每一条IP地址信息由3个段:IP地址起始地址段、IP地址结束地址段和IP地址段属主,并且以IP地址起始地址段和IP地址结束地址段为索引以保证地址信息的唯一性。将IP地址存储在SQLServer数据库中有利于实现数据源的唯一性,也有利于IP信息数据更新的简单性和高效性。IPInfoToDB类的主要作用是将IP地址写入数据库,它首先从文本文件中读取IP地址段信息,然后再将这些信息写入数据库中保存。(2)IP信息读取功能。由于需要实现IP信息查询的跨平台性,在进行IP地址查询前应先将IP地址信息从SQLServer数据库中取出并存储为XML文件格式,这样有利于IP地址信息的网络传输和跨平台查询。GenXML类的主要作用是将数据库中的IP信息读取出来并生成为一个XML文档,它包含的主要方法是SaveIPFromDB(),该函数根据输入的XML文档保存从数据库中读出的IP地址信息。(3)IP信息查询功能。在建立完成IP地址的XML格式的文档后,Ip地址查询就需要对相应的XML文档进行解析力。由于查询操作最主要的要求是响应速度,所以我们采用SAX来解析XML文档。SAX采用事件响应的方式来解析文档,不需要像DOM那样先生成XML文档内存树,所以能够提高查询响应速度。当然,在进行实际的IP地址查询前,需要验证输入的IP格式的正确性,并对输入正确的IP地址进行一定的技术处理,更加有利于提高查询响应速度。SAXPareseIPInfo类的主要作用就是解析前面生成的XML文档,并将这些地址信息格式化到一个表格中。IPInfoSAXHandler类从DefaultHandler继承而来,由于查询系统需要的IP地址信息的XML文档的主要元素是字符数据,因此只需要详细实现publicvoidcharacters(charch[],intstart,intlength)这个方法。承德石油高等专科学校java程序设计第10页2.4、各个模块的实现方法描述:2.4.1校园IP查询系统主要包括IP地址显示区、“开始查询”按钮、“退出系统”按钮、查询地址输入区。IP地址显示区罗列出局域网内所有的IP地址分段及其属主情况、查询地址输入区用于输入需要查询的IP地址,另外还需要给查询按钮和退出按钮添加相应的事件处理逻辑。(1)、查询系统的主框架设计如图2-12所示。其设置如图2-13所示:图2-12查询系统的主框架图2-13主框架设置(2)、“开始查询”按钮和“退出系统”按钮的设置除了显示文字不一样之外,其他的设置都一样。以“开始查询”按钮的设置为例,其设置如图2-14,JScrollPane的设置如图2-15:图2-14“开始查询”按钮的设置图2-15JScrollPane的设置承德石油高等专科学校java程序设计第11页2.5测试数据及期望结果承德石油高等专科学校java程序设计第12页三、源代码:packageguo1;importjava.io.*;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjavax.swing.table.*;importjavax.swing.event.*;importjavax.swing.border.*;importcom.borland.dx.sql.dataset.*;importcom.borland.dbswing.*;importjava.math.*;importjava.util.*;/***pTitle:校园IP查询系统/p*pDescription:/p*pCopyright:Copyright(c)2009/p*pCompany:/p*@authornotattributable*@version1.0*/publicclassFrame1extendsJFrame{JPanelcontentPane;JMenuBarjMenuBar1=n