




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JAVA程序设计 课程设计报告课 题: 校园IP查询系统 姓 名: 学 号: 同组姓名: 专业班级: 指导教师: 设计时间: 评阅意见:评定成绩: 指导老师签名: 年 月 日 目 录一、系统描述:3二、 分析与设计:32.1、功能模块划分:3 2.1.1、IP信息存储子系统:42.1.2、IP信息读取子系统:42.2、数据库结构描述:52.2.1、建立IP信息数据库52.2.2、建立IP信息数据库52.3、系统详细设计文档:62.4、各个模块的实现方法描述:72.5、测试数据及期望结果112.5.1、存储数据:112.5.2、读取数据:11三、系统测试:123.1、系统运行主界面:123.2、各查询界面:12四、心得体会:13五、参考文献:13六、附录:源程序 13一、系统描述: 校园IP地址查询系统采用Java和XML结合设计开发,将局域网内的IP地址进行分组归类,用户可以查询局域网内任一IP地址的归属。要进行本系统的开发,必须对SAX(simple API for XML)比较熟悉,并且应该熟悉Java编程,而且还要熟悉利用JDBC进行数据连接的知识。当然,还要有一定的SQL基础和GUI编程知识。为了便于数据信息的表达和数据信息的网络传输,这个系统采用了XML格式来存储数据,即先通过JDBC-ODBC连接,将数据存储到数据库中,然后再从数据库中读出,以XML方式的形式组成XML文档,GUI查询界面再对这个XML文档进行查询操作,然后返回给用户相应的查询结果,因此,如何设计和开发好这个校园IP地址查询系统,对于提高Java开发水平和XML的应用能力有极大的帮助。在这个设计开发过程中,开发者需要掌握XML文档的表示形式、XML数据的数据库存储形式以及XML文档的解析形式等。二、分析与设计:2.1、功能模块划分:2.1.1、IP信息存储子系统: (1)在Access中创建IP信息表。 (2)使用java语言与数据库交互的过程如下: 装入数据库驱动程序,这可以是一个JDBC驱动程序; 配置数据源;要访问数据库,首先要装入JDBC驱动程序,在任何给定的时间都可以使用一些不同的驱动程序;由DriverManager通过尝试创建与每个所知的驱动程序的连接来确定使用哪一个。应用程序将使用第一个成功连接的驱动程序。下面是配置数据源的过程:(1) 打开管理工具,选择“数据源”,如图2-1所示: 图2-1 管理工具 (2)创建数据源,如图2-2所示: 图2-2 创建数据源界面 (3)选择数据库,将数据库源名定为“data”,并选择原先建好的数据库“CampusIP.mdb”如图2-3所示: 图2-3 连接数据库 经过上述步骤后,当用到数据库的时候就可以用了。sd 2.1.2、IP信息读取子系统: 一旦链接到数据库,应用程序就可以开始检索数据了。2.2、数据库结构描述:2.2.1、建立IP信息数据库 校园IP地址查询系统选用Access 2007作为系统服务数据库,这是因为Access界面友好、操作简便,并且对于XML数据的支持较好。 为了能够存储IP信息,应先在Access中建立一个IP信息数据库,具体步骤如下:(1)、打开Access数据库,如图2-4所示: 图2-4 Access数据库(2)、右键单击“空白数据库”并选择将数据库命名为“CampusIP.mdb”,并且设置其存储地址,如图2-5所示: 图2-5 创建数据库2.2.2、建立IP信息数据库下面建立一个IP信息数据库,具体步骤如下:(1)、新建数据库表,如图2-6所示:图2-6 新建数据库表(2)、设计数据表的列名、数据类型等,表中的数据项共三项:STARTIP(起始IP地址)、ENDIP(结束IP地址)和LOCAL(这段IP的属主单位名称),如图2-7所示 图2-7 数据表设置(3)、设置数据表名称,如图2-8所示: 图2-8 设置数据表名称(4)、最终的表结构,如图2-9所示: 图2-9 表结构2.3、系统详细设计文档:校园IP地址查询系统要求比较高的响应速度和异构平台的互通,它需要实现如下功能:(1)IP信息存储功能。根据输入文本文件的IP地址信息,通过ODBC数据库连接实现对Access 2007数据库的连接,将IP地址信息存储到数据库中。数据库中的每一条IP地址信息由3个段:IP地址起始地址段、IP地址结束地址段和IP地址段属主,并且以IP地址起始地址段和IP地址结束地址段为索引以保证地址信息的唯一性。将IP地址存储在Access数据库中有利于实现数据源的唯一性,也有利于IP信息数据更新的简单性和高效性。IPInfoToDB类的主要作用是将IP地址写入数据库,它首先从文本文件中读取IP地址段信息,然后再将这些信息写入数据库中保存。(2)IP信息读取功能。由于需要实现IP信息查询的跨平台性,在进行IP地址查询前应先将IP地址信息从SQL Server数据库中取出并存储为XML文件格式,这样有利于IP地址信息的网络传输和跨平台查询。 GenXML类的主要作用是将数据库中的IP信息读取出来并生成为一个XML文档,它包含的主要方法是SaveIPFromDB(),该函数根据输入的XML文档保存从数据库中读出的IP地址信息。2.4、各个模块的实现方法描述: 校园IP查询系统主要包括IP地址显示区、“开始查询”按钮、“退出系统”按钮、查询地址输入区。IP地址显示区罗列出局域网内所有的IP地址分段及其属主情况、查询地址输入区用于输入需要查询的IP地址,另外还需要给查询按钮和退出按钮添加相应的事件处理逻辑。(1) 、IP信息存储功能。 IP信息存储子系统设计主要是将文本信息中的IP地址写入数据库。关键代码为:public class IPInfoToDB private String strTxtFileName; /IP地址文本文件名 private Connection conn = null; private Statement stmt = null; public IPInfoToDB() strTxtFileName = new String(); /设置文本文件名 public void SetTxtFileName(String strFileName) strTxtFileName = strFileName; public void SaveIPToDB() throws Exception String strSeparator = |; /the separator of the text file field String strTmp = ;/进行数据库得连接 Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); String url = jdbc:odbc:data; conn = DriverManager.getConnection(url, , ); stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); /从文本文件中读取数据 BufferedReader inTxt = new BufferedReader(new FileReader( strTxtFileName); while ( (strTmp = inTxt.readLine() != null) StringTokenizer strToken = new StringTokenizer(strTmp, |); String arrTmp; arrTmp = new String3; for (int i = 0; i 3; i+) arrTmpi = new String(); int index = 0; while (strToken.hasMoreElements() strTmp = (String) strToken.nextElement(); strTmp = strTmp.trim(); arrTmpindex+ = strTmp; /下面就是将这些数据写进数据库 String SQL = insert INTO IPInfo(STARTIP,ENDIP,LOCAL) + values( + arrTmp0 + , + arrTmp1 + , + arrTmp2 + ); stmt.execute(SQL); stmt.close(); conn.close(); (2) 、IP信息读取功能。为了便于查询和数据传输,需要将数据库中的IP信息读入一个XML文件中下面是关键的代码:public class GenXML private String strXmlFileName; /IP地址XML文件名 private Connection conn = null; private ResultSet rs = null; private Statement stmt = null; private ResultSetMetaData resultmetadata = null; private PreparedStatement statement = null; private ResultSet resultset = null; private DocumentBuilderFactory docBuilderFactory; private DocumentBuilder docBuilder; private Document doc; private Element root; public GenXML() strXmlFileName = new String(); trydocBuilderFactory=DocumentBuilderFactory.newInstance(); docBuilder = docBuilderFactory.newDocumentBuilder(); doc = docBuilder.newDocument(); doc.normalize(); catch (Exception e) e.printStackTrace(); /设置XML文件名 public void SetXmlFileName(String strFileName) strXmlFileName = strFileName; public void SaveIPFromDB() throws Exception String strColName = new String(); String strColVal = new String(); /进行数据库得连接Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver); String url=jdbc:microsoft:data:/localhost:1433;DatabaseName=CampusIP; stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); statement = conn.prepareStatement(select * from IPInfo); resultset = statement.executeQuery(); resultmetadata = resultset.getMetaData(); int intCols = resultmetadata.getColumnCount(); root = doc.createElement(IPADDRESS); while (resultset.next() Element nodeIPPhase = doc.createElement(IPPHASE); for (int i = 1; i = intCols; i+) strColName = resultmetadata.getColumnName(i); strColVal = resultset.getString(i); ElementnodeElement = doc.createElement(strColName); Text data = doc.createTextNode(strColVal); nodeElement.appendChild(data); nodeIPPhase.appendChild(nodeElement); System.out.println(strColVal); root.appendChild(nodeIPPhase); doc.appendChild(root); Source source = new DOMSource(doc); File file = new File(strXmlFileName); BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(strXmlFileName); StreamResult result = new StreamResult(bufferedWriter);Transformerxformer=TransformerFactory.newInstance().newTransformer(); xformer.transform(source, result); 2.5、测试数据及期望结果 2.5.1、存储数据:如图2-11所示: 图2-11 存储界面2.5.2、读取数据:如图2-12所示: 图2-12 XML读取界面3、 系统测试:3.1、系统运行主界面: 如图3-1所示: 图3-1 主界面3.2、各查询界面:如图3-2所示: 图3-2 查询结果四、心得体会:在这次的课程设计中,总体来说还是算成功的。通过这一次,我学到了不少实际编程的知识。并且通过这一次的课程设计,我了解到原来仅仅靠我们教材上的内容是远远不够的,还必须查找很多相关的参考书。当然,才此次的和组员的合作中,彼此之间的默契是很有必要的。在这次设计开始的第一天,我就开始着手修改一个用“校园IP查询系统”的程序,由于源程序是从中国水利水电出版社网站下载的,于是很有自信马上能够运行出来。但是,当实施起来的时候才发现问题不是一般的多啊,最后还是在老师的全程指导下主界面才运行出来的。虽然最后有界面运行出来,但是由于时间的问题,还是有很多问题没有解决,比如:不能在前台修改IP,而是只能查询;在查询时不能识别错误的IP,这是这个系统的一个很大的漏洞。虽然,此次的课程设计只有一周的时间,但我还是学到了很多书上没有的java编程知识,并学会了简单的使用Borland JBuilder 9。当然,最重要的一点就是提高了我对编程的兴趣。五、参考文献:1.黄晓东.Java课程设计案例精编(第二版).M.北京:中国水利水电出版社,20072.李尊朝,苏军.Java语言程序设计(第二版).M.北京:中国铁道出版社,20073./softdown/.6、 附录:源程序(1)将数据写入数据库的程序:package tsinghuaip;import java.sql.*;import java.util.*;import java.io.*;public class IPInfoToDB private String strTxtFileName; /IP地址文本文件名 private Connection conn = null; private Statement stmt = null; public IPInfoToDB() strTxtFileName = new String(); /设置文本文件名 public void SetTxtFileName(String strFileName) strTxtFileName = strFileName; public void SaveIPToDB() throws Exception String strSeparator = |; /the separator of the text file field String strTmp = ; /进行数据库得连接 Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); String url = jdbc:odbc:data; conn = DriverManager.getConnection(url, , ); stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); /从文本文件中读取数据 BufferedReader inTxt = new BufferedReader(new FileReader( strTxtFileName); while ( (strTmp = inTxt.readLine() != null) StringTokenizer strToken = new StringTokenizer(strTmp, |); String arrTmp; arrTmp = new String3; for (int i = 0; i 3; i+) arrTmpi = new String(); int index = 0; while (strToken.hasMoreElements() strTmp = (String) strToken.nextElement(); strTmp = strTmp.trim(); arrTmpindex+ = strTmp; /下面就是将这些数据写进数据库 String SQL = insert INTO IPInfo(STARTIP,ENDIP,LOCAL) + values( + arrTmp0 + , + arrTmp1 + , + arrTmp2 + ); stmt.execute(SQL); stmt.close(); conn.close(); (2)将数据从.txt中读入XML的程序为:package tsinghuaip;import java.util.*;import java.io.*;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.sql.Statement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.PreparedStatement;import org.w3c.dom.Document;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import javax.xml.transform.dom.*;import javax.xml.transform.*;import javax.xml.transform.stream.StreamResult;import org.w3c.dom.Text;public class GenXML private String strXmlFileName; /IP地址XML文件名 private Connection conn = null; private ResultSet rs = null; private Statement stmt = null; private ResultSetMetaData resultmetadata = null; private PreparedStatement statement = null; private ResultSet resultset = null; private DocumentBuilderFactory docBuilderFactory; private DocumentBuilder docBuilder; private Document doc; private Element root; public GenXML() strXmlFileName = new String(); try docBuilderFactory = DocumentBuilderFactory.newInstance(); docBuilder = docBuilderFactory.newDocumentBuilder(); doc = docBuilder.newDocument(); doc.normalize(); catch (Exception e) e.printStackTrace(); /设置XML文件名 public void SetXmlFileName(String strFileName) strXmlFileName = strFileName; public void SaveIPFromDB() throws Exception String strColName = new String(); String strColVal = new String(); /进行数据库得连接 Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver); String url = jdbc:microsoft:sqlserver:/localhost:1433; + DatabaseName=CampusIP; conn = DriverManager.getConnection(url, sa, 123456); stmt = conn.createStatemet
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论