已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
JAVA程序設(shè)計(jì) 課程設(shè)計(jì)報(bào)告課 題: 校園IP查詢系統(tǒng) 姓 名: 學(xué) 號(hào): 同組姓名: 專業(yè)班級(jí): 指導(dǎo)教師: 設(shè)計(jì)時(shí)間: 評(píng)閱意見:評(píng)定成績(jī): 指導(dǎo)老師簽名: 年 月 日 目 錄一、系統(tǒng)描述:3二、 分析與設(shè)計(jì):32.1、功能模塊劃分:3 2.1.1、IP信息存儲(chǔ)子系統(tǒng):42.1.2、IP信息讀取子系統(tǒng):42.2、數(shù)據(jù)庫結(jié)構(gòu)描述:52.2.1、建立IP信息數(shù)據(jù)庫52.2.2、建立IP信息數(shù)據(jù)庫52.3、系統(tǒng)詳細(xì)設(shè)計(jì)文檔:62.4、各個(gè)模塊的實(shí)現(xiàn)方法描述:72.5、測(cè)試數(shù)據(jù)及期望結(jié)果112.5.1、存儲(chǔ)數(shù)據(jù):112.5.2、讀取數(shù)據(jù):11三、系統(tǒng)測(cè)試:123.1、系統(tǒng)運(yùn)行主界面:123.2、各查詢界面:12四、心得體會(huì):13五、參考文獻(xiàn):13六、附錄:源程序 13一、系統(tǒng)描述: 校園IP地址查詢系統(tǒng)采用Java和XML結(jié)合設(shè)計(jì)開發(fā),將局域網(wǎng)內(nèi)的IP地址進(jìn)行分組歸類,用戶可以查詢局域網(wǎng)內(nèi)任一IP地址的歸屬。要進(jìn)行本系統(tǒng)的開發(fā),必須對(duì)SAX(simple API for XML)比較熟悉,并且應(yīng)該熟悉Java編程,而且還要熟悉利用JDBC進(jìn)行數(shù)據(jù)連接的知識(shí)。當(dāng)然,還要有一定的SQL基礎(chǔ)和GUI編程知識(shí)。為了便于數(shù)據(jù)信息的表達(dá)和數(shù)據(jù)信息的網(wǎng)絡(luò)傳輸,這個(gè)系統(tǒng)采用了XML格式來存儲(chǔ)數(shù)據(jù),即先通過JDBC-ODBC連接,將數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫中,然后再從數(shù)據(jù)庫中讀出,以XML方式的形式組成XML文檔,GUI查詢界面再對(duì)這個(gè)XML文檔進(jìn)行查詢操作,然后返回給用戶相應(yīng)的查詢結(jié)果,因此,如何設(shè)計(jì)和開發(fā)好這個(gè)校園IP地址查詢系統(tǒng),對(duì)于提高Java開發(fā)水平和XML的應(yīng)用能力有極大的幫助。在這個(gè)設(shè)計(jì)開發(fā)過程中,開發(fā)者需要掌握XML文檔的表示形式、XML數(shù)據(jù)的數(shù)據(jù)庫存儲(chǔ)形式以及XML文檔的解析形式等。二、分析與設(shè)計(jì):2.1、功能模塊劃分:2.1.1、IP信息存儲(chǔ)子系統(tǒng): (1)在Access中創(chuàng)建IP信息表。 (2)使用java語言與數(shù)據(jù)庫交互的過程如下: 裝入數(shù)據(jù)庫驅(qū)動(dòng)程序,這可以是一個(gè)JDBC驅(qū)動(dòng)程序; 配置數(shù)據(jù)源;要訪問數(shù)據(jù)庫,首先要裝入JDBC驅(qū)動(dòng)程序,在任何給定的時(shí)間都可以使用一些不同的驅(qū)動(dòng)程序;由DriverManager通過嘗試創(chuàng)建與每個(gè)所知的驅(qū)動(dòng)程序的連接來確定使用哪一個(gè)。應(yīng)用程序?qū)⑹褂玫谝粋€(gè)成功連接的驅(qū)動(dòng)程序。下面是配置數(shù)據(jù)源的過程:(1) 打開管理工具,選擇“數(shù)據(jù)源”,如圖2-1所示: 圖2-1 管理工具 (2)創(chuàng)建數(shù)據(jù)源,如圖2-2所示: 圖2-2 創(chuàng)建數(shù)據(jù)源界面 (3)選擇數(shù)據(jù)庫,將數(shù)據(jù)庫源名定為“data”,并選擇原先建好的數(shù)據(jù)庫“CampusIP.mdb”如圖2-3所示: 圖2-3 連接數(shù)據(jù)庫 經(jīng)過上述步驟后,當(dāng)用到數(shù)據(jù)庫的時(shí)候就可以用了。sd 2.1.2、IP信息讀取子系統(tǒng): 一旦鏈接到數(shù)據(jù)庫,應(yīng)用程序就可以開始檢索數(shù)據(jù)了。2.2、數(shù)據(jù)庫結(jié)構(gòu)描述:2.2.1、建立IP信息數(shù)據(jù)庫 校園IP地址查詢系統(tǒng)選用Access 2007作為系統(tǒng)服務(wù)數(shù)據(jù)庫,這是因?yàn)锳ccess界面友好、操作簡(jiǎn)便,并且對(duì)于XML數(shù)據(jù)的支持較好。 為了能夠存儲(chǔ)IP信息,應(yīng)先在Access中建立一個(gè)IP信息數(shù)據(jù)庫,具體步驟如下:(1)、打開Access數(shù)據(jù)庫,如圖2-4所示: 圖2-4 Access數(shù)據(jù)庫(2)、右鍵單擊“空白數(shù)據(jù)庫”并選擇將數(shù)據(jù)庫命名為“CampusIP.mdb”,并且設(shè)置其存儲(chǔ)地址,如圖2-5所示: 圖2-5 創(chuàng)建數(shù)據(jù)庫2.2.2、建立IP信息數(shù)據(jù)庫下面建立一個(gè)IP信息數(shù)據(jù)庫,具體步驟如下:(1)、新建數(shù)據(jù)庫表,如圖2-6所示:圖2-6 新建數(shù)據(jù)庫表(2)、設(shè)計(jì)數(shù)據(jù)表的列名、數(shù)據(jù)類型等,表中的數(shù)據(jù)項(xiàng)共三項(xiàng):STARTIP(起始IP地址)、ENDIP(結(jié)束IP地址)和LOCAL(這段IP的屬主單位名稱),如圖2-7所示 圖2-7 數(shù)據(jù)表設(shè)置(3)、設(shè)置數(shù)據(jù)表名稱,如圖2-8所示: 圖2-8 設(shè)置數(shù)據(jù)表名稱(4)、最終的表結(jié)構(gòu),如圖2-9所示: 圖2-9 表結(jié)構(gòu)2.3、系統(tǒng)詳細(xì)設(shè)計(jì)文檔:校園IP地址查詢系統(tǒng)要求比較高的響應(yīng)速度和異構(gòu)平臺(tái)的互通,它需要實(shí)現(xiàn)如下功能:(1)IP信息存儲(chǔ)功能。根據(jù)輸入文本文件的IP地址信息,通過ODBC數(shù)據(jù)庫連接實(shí)現(xiàn)對(duì)Access 2007數(shù)據(jù)庫的連接,將IP地址信息存儲(chǔ)到數(shù)據(jù)庫中。數(shù)據(jù)庫中的每一條IP地址信息由3個(gè)段:IP地址起始地址段、IP地址結(jié)束地址段和IP地址段屬主,并且以IP地址起始地址段和IP地址結(jié)束地址段為索引以保證地址信息的唯一性。將IP地址存儲(chǔ)在Access數(shù)據(jù)庫中有利于實(shí)現(xiàn)數(shù)據(jù)源的唯一性,也有利于IP信息數(shù)據(jù)更新的簡(jiǎn)單性和高效性。IPInfoToDB類的主要作用是將IP地址寫入數(shù)據(jù)庫,它首先從文本文件中讀取IP地址段信息,然后再將這些信息寫入數(shù)據(jù)庫中保存。(2)IP信息讀取功能。由于需要實(shí)現(xiàn)IP信息查詢的跨平臺(tái)性,在進(jìn)行IP地址查詢前應(yīng)先將IP地址信息從SQL Server數(shù)據(jù)庫中取出并存儲(chǔ)為XML文件格式,這樣有利于IP地址信息的網(wǎng)絡(luò)傳輸和跨平臺(tái)查詢。 GenXML類的主要作用是將數(shù)據(jù)庫中的IP信息讀取出來并生成為一個(gè)XML文檔,它包含的主要方法是SaveIPFromDB(),該函數(shù)根據(jù)輸入的XML文檔保存從數(shù)據(jù)庫中讀出的IP地址信息。2.4、各個(gè)模塊的實(shí)現(xiàn)方法描述: 校園IP查詢系統(tǒng)主要包括IP地址顯示區(qū)、“開始查詢”按鈕、“退出系統(tǒng)”按鈕、查詢地址輸入?yún)^(qū)。IP地址顯示區(qū)羅列出局域網(wǎng)內(nèi)所有的IP地址分段及其屬主情況、查詢地址輸入?yún)^(qū)用于輸入需要查詢的IP地址,另外還需要給查詢按鈕和退出按鈕添加相應(yīng)的事件處理邏輯。(1) 、IP信息存儲(chǔ)功能。 IP信息存儲(chǔ)子系統(tǒng)設(shè)計(jì)主要是將文本信息中的IP地址寫入數(shù)據(jù)庫。關(guān)鍵代碼為:public class IPInfoToDB private String strTxtFileName; /IP地址文本文件名 private Connection conn = null; private Statement stmt = null; public IPInfoToDB() strTxtFileName = new String(); /設(shè)置文本文件名 public void SetTxtFileName(String strFileName) strTxtFileName = strFileName; public void SaveIPToDB() throws Exception String strSeparator = |; /the separator of the text file field String strTmp = ;/進(jìn)行數(shù)據(jù)庫得連接 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); /從文本文件中讀取數(shù)據(jù) 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; /下面就是將這些數(shù)據(jù)寫進(jìn)數(shù)據(jù)庫 String SQL = insert INTO IPInfo(STARTIP,ENDIP,LOCAL) + values( + arrTmp0 + , + arrTmp1 + , + arrTmp2 + ); stmt.execute(SQL); stmt.close(); conn.close(); (2) 、IP信息讀取功能。為了便于查詢和數(shù)據(jù)傳輸,需要將數(shù)據(jù)庫中的IP信息讀入一個(gè)XML文件中下面是關(guān)鍵的代碼: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(); /設(shè)置XML文件名 public void SetXmlFileName(String strFileName) strXmlFileName = strFileName; public void SaveIPFromDB() throws Exception String strColName = new String(); String strColVal = new String(); /進(jìn)行數(shù)據(jù)庫得連接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、測(cè)試數(shù)據(jù)及期望結(jié)果 2.5.1、存儲(chǔ)數(shù)據(jù):如圖2-11所示: 圖2-11 存儲(chǔ)界面2.5.2、讀取數(shù)據(jù):如圖2-12所示: 圖2-12 XML讀取界面3、 系統(tǒng)測(cè)試:3.1、系統(tǒng)運(yùn)行主界面: 如圖3-1所示: 圖3-1 主界面3.2、各查詢界面:如圖3-2所示: 圖3-2 查詢結(jié)果四、心得體會(huì):在這次的課程設(shè)計(jì)中,總體來說還是算成功的。通過這一次,我學(xué)到了不少實(shí)際編程的知識(shí)。并且通過這一次的課程設(shè)計(jì),我了解到原來僅僅靠我們教材上的內(nèi)容是遠(yuǎn)遠(yuǎn)不夠的,還必須查找很多相關(guān)的參考書。當(dāng)然,才此次的和組員的合作中,彼此之間的默契是很有必要的。在這次設(shè)計(jì)開始的第一天,我就開始著手修改一個(gè)用“校園IP查詢系統(tǒng)”的程序,由于源程序是從中國(guó)水利水電出版社網(wǎng)站下載的,于是很有自信馬上能夠運(yùn)行出來。但是,當(dāng)實(shí)施起來的時(shí)候才發(fā)現(xiàn)問題不是一般的多啊,最后還是在老師的全程指導(dǎo)下主界面才運(yùn)行出來的。雖然最后有界面運(yùn)行出來,但是由于時(shí)間的問題,還是有很多問題沒有解決,比如:不能在前臺(tái)修改IP,而是只能查詢;在查詢時(shí)不能識(shí)別錯(cuò)誤的IP,這是這個(gè)系統(tǒng)的一個(gè)很大的漏洞。雖然,此次的課程設(shè)計(jì)只有一周的時(shí)間,但我還是學(xué)到了很多書上沒有的java編程知識(shí),并學(xué)會(huì)了簡(jiǎn)單的使用Borland JBuilder 9。當(dāng)然,最重要的一點(diǎn)就是提高了我對(duì)編程的興趣。五、參考文獻(xiàn):1.黃曉東.Java課程設(shè)計(jì)案例精編(第二版).M.北京:中國(guó)水利水電出版社,20072.李尊朝,蘇軍.Java語言程序設(shè)計(jì)(第二版).M.北京:中國(guó)鐵道出版社,20073./softdown/.6、 附錄:源程序(1)將數(shù)據(jù)寫入數(shù)據(jù)庫的程序: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(); /設(shè)置文本文件名 public void SetTxtFileName(String strFileName) strTxtFileName = strFileName; public void SaveIPToDB() throws Exception String strSeparator = |; /the separator of the text file field String strTmp = ; /進(jìn)行數(shù)據(jù)庫得連接 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); /從文本文件中讀取數(shù)據(jù) 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; /下面就是將這些數(shù)據(jù)寫進(jìn)數(shù)據(jù)庫 String SQL = insert INTO IPInfo(STARTIP,ENDIP,LOCAL) + values( + arrTmp0 + , + arrTmp1 + , + arrTmp2 + ); stmt.execute(SQL); stmt.close(); conn.close(); (2)將數(shù)據(jù)從.txt中讀入XML的程序?yàn)椋簆ackage 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(); /設(shè)置XML文件名 public void SetXmlFileName(String strFileName) strXmlFileName = strFileName; public void SaveIPFromDB() throws Exception String strColName = new String(); String strColVal = new String(); /進(jìn)行數(shù)據(jù)庫得連接 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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人才培訓(xùn)計(jì)劃
- 初中體育活動(dòng)安全課教案
- 心臟疾病患者的觀察及護(hù)理措施
- 生產(chǎn)主管崗位職責(zé)說明書及績(jī)效考核標(biāo)準(zhǔn)
- 2025物業(yè)維修工程的委托審價(jià)合同
- 2025投資股份返利合同范本
- 課堂小測(cè)的設(shè)計(jì)與實(shí)施計(jì)劃
- 皮膚科護(hù)士總結(jié)
- 2025批發(fā)市場(chǎng)門市房的租賃合同
- 居住空間緊湊設(shè)計(jì)下的生活質(zhì)量提升方法
- 鋼結(jié)構(gòu)加工廠考察報(bào)告
- 發(fā)電機(jī)檢修作業(yè)指導(dǎo)書
- 薪酬與福利管理實(shí)務(wù)-習(xí)題答案 第五版
- 廢舊物資處置申請(qǐng)表
- GB/T 37234-2018文件鑒定通用規(guī)范
- GB/T 31888-2015中小學(xué)生校服
- 質(zhì)量檢查考核辦法
- 云南省普通初中學(xué)生成長(zhǎng)記錄-基本素質(zhì)發(fā)展初一-初三
- 外科醫(yī)師手術(shù)技能評(píng)分標(biāo)準(zhǔn)
- 《英語教師職業(yè)技能訓(xùn)練簡(jiǎn)明教程》全冊(cè)配套優(yōu)質(zhì)教學(xué)課件
- 采購控制程序
評(píng)論
0/150
提交評(píng)論