Java課程設計-日常信息查詢系統(tǒng)_第1頁
Java課程設計-日常信息查詢系統(tǒng)_第2頁
Java課程設計-日常信息查詢系統(tǒng)_第3頁
Java課程設計-日常信息查詢系統(tǒng)_第4頁
Java課程設計-日常信息查詢系統(tǒng)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

第1章課題概述本次數(shù)據(jù)結構課程設計的題目是設計并實現(xiàn)一個日常信息查詢系統(tǒng)課題的目的 這個信息查詢系統(tǒng)可以查詢一些我們的日常信息,比如手機號碼歸屬地、IP地址、身份證號碼。通過這個實驗不僅僅可以讓獲得我們在設計好程序后的成就感,還可以強化我們對io流,圖形界面的理解,并且了解并掌握一些基本的聯(lián)網(wǎng)獲取網(wǎng)上信息——信息的下載,解析和輸出。1.2課題的要求1.2.1圖形界面的要求(1)應該要設計出一個或者多個窗口,要求美觀,簡介,需要包含一些必要的文字提示及說明,查詢功能實現(xiàn)的按鈕,輸入框以及顯示得到的信息的相關文本組件。(2)最好能有多個窗口界面,有序地排列,分類所要查詢的項目。1.2.2輸出信息的要求(1)不能出現(xiàn)亂碼。(2)輸出的信息要求有條理,按次序。1.2.3異常的要求(1)要求能識別空輸入,不存在的號碼等一些基本的異常。(2)要求能進行多次輸入。第2章概要設計2.1整個程序的模塊結構及流程根據(jù)課題要求,整個程序按功能可劃分為手機號碼歸屬地查詢、IP地址查詢、身份證號碼查詢?nèi)齻€主要模塊。這個系統(tǒng)還要求能實現(xiàn)用戶與機器的互動,按用戶的要求來查詢相關信息。程序各功能模塊的劃分,及主要流程如圖2-1所示。圖2-1整個程序各功能模塊間的流程2.2信息查詢系統(tǒng)的主要步驟描述2.2.1手機號碼歸屬地查詢 設計出圖形界面,當然這個圖形界面并不是獨立的,不然太麻煩了,也沒必要,圖形界面里肯定至少要有輸入框、查詢按鈕以及顯示信息的文本框。首先,我先得到一個用戶輸入的手機號碼,之后將這個號碼以字符串的形式添加到事先設置好的網(wǎng)址后面,然后就可以將這個總的字符串通過URL聯(lián)網(wǎng)并得到用戶所需的信息,當然,我們必須得通過utf-8轉碼,不然會是亂碼,之后再解析這個字符串并返回給用戶。其他的查詢功能其實都是一樣的。2.2.2IP地址查詢 設計圖形界面。首先,我先得到一個用戶輸入的IP地址,之后將這個IP地址以字符串的形式添加到事先設置好的網(wǎng)址后面,然后就可以將這個總的字符串通過URL聯(lián)網(wǎng)并得到用戶所需的信息,當然,我們必須得通過utf-8轉碼,不然會是亂碼,之后再解析這個字符串并返回給用戶。2.2.3身份證號碼查詢 設計圖形界面。首先,我先得到一個用戶輸入的身份證號碼,之后將這個身份證號碼以字符串的形式添加到事先設置好的網(wǎng)址后面,然后就可以將這個總的字符串通過URL聯(lián)網(wǎng)并得到用戶所需的信息,當然,我們必須得通過utf-8轉碼,不然會是亂碼,之后再解析這個字符串并返回給用戶。第3章程序功能的實現(xiàn)3.1主文件的實現(xiàn)我的主文件是一個圖形界面的設計,其他相關的功能都寫在了其他的文件里,在主文件里調(diào)用他們就可以了,避免了文件的繁縟冗長,而且調(diào)理清晰,便于以后的修改維護。下面是我的主文件。classMyListenerSearchPhoneimplementsActionListener{ publicvoidactionPerformed(ActionEvente){ StringphoneNum=jiphone.getText(); DataAnalysis1dd=newDataAnalysis1(); JDialogjdlphone=newJDialog(jlphone,"查詢結果"); Containerctephone=jdlphone.getContentPane(); jdlphone.setLayout(newGridLayout(1,1)); dd.dataAnalysis(phoneNum); JTextAreajtaphone=newJTextArea(); jdlphone.setVisible(true); jdlphone.setBounds(550,300,300,200); jtaphone.setFont(newjava.awt.Font("新宋體",Font.PLAIN,16)); jtaphone.append(vince+"\n\r"); jtaphone.append(dd.city+"\n\r"); jtaphone.append(dd.areacode+"\n\r"); jtaphone.append(dd.zip+"\n\r"); jtaphone.append(pany+"\n\r"); jtaphone.append(dd.card+"\n\r"); ctephone.add(jtaphone); } } } classMyListenerIPimplementsActionListener{ JTextFieldjiIP; JDialogjlIP; publicvoidactionPerformed(ActionEvente){ jlIP=newJDialog(jf,"查詢IP地址"); JLabeljlbIP=newJLabel("IP地址為"); jiIP=newJTextField(20); ContainerctIP=jlIP.getContentPane(); jlIP.setLayout(null); jlIP.setVisible(true); jlbIP.setFont(newjava.awt.Font("新宋體",Font.PLAIN,16)); jlIP.setBounds(550,300,300,200); jlbIP.setBounds(100,20,210,50); jiIP.setBounds(80,70,100,25); ctIP.add(jiIP); ctIP.add(jbSearchIP); ctIP.add(jlbIP); jbSearchIP.addActionListener(newMyListenerSearchIP()); } classMyListenerSearchIPimplementsActionListener{ publicvoidactionPerformed(ActionEvente){ StringphoneNum=jiIP.getText(); DataAnalysis2dd=newDataAnalysis2(); JDialogjdlIP=newJDialog(jlIP,"查詢結果"); ContainercteIP=jdlIP.getContentPane(); jdlIP.setLayout(newGridLayout(1,1)); dd.dataAnalysis(phoneNum); JTextAreajtaIP=newJTextArea(); jdlIP.setVisible(true); jdlIP.setBounds(550,300,300,200); jtaIP.setFont(newjava.awt.Font("新宋體",Font.PLAIN,16)); jtaIP.append(dd.area+"\n\r"); jtaIP.append(dd.location+"\n\r"); cteIP.add(jtaIP); } } } classMyListenerIDimplementsActionListener{ JTextFieldjiID; JDialogjlID; publicvoidactionPerformed(ActionEvente){ jlID=newJDialog(jf,"查詢身份證號碼"); JLabeljlbID=newJLabel("身份證號碼為"); jiID=newJTextField(20); ContainerctID=jlID.getContentPane(); jlID.setLayout(null); jlID.setVisible(true); jlbID.setFont(newjava.awt.Font("新宋體",Font.PLAIN,16)); jlID.setBounds(550,300,300,200); jlbID.setBounds(100,20,210,50); jiID.setBounds(80,70,100,25); ctID.add(jiID); ctID.add(jbSearchIP); ctID.add(jlbID); jbSearchIP.addActionListener(newMyListenerSearchIP()); } classMyListenerSearchIPimplementsActionListener{ publicvoidactionPerformed(ActionEvente){ StringphoneNum=jiID.getText(); DataAnalysis3dd=newDataAnalysis3(); JDialogjdlID=newJDialog(jlID,"查詢結果"); ContainercteID=jdlID.getContentPane(); jdlID.setLayout(newGridLayout(1,1)); dd.dataAnalysis(phoneNum); JTextAreajtaID=newJTextArea(); jdlID.setVisible(true); jdlID.setBounds(550,300,300,200); jtaID.setFont(newjava.awt.Font("新宋體",Font.PLAIN,16)); jtaID.append(dd.area+"\n\r"); jtaID.append(dd.sex+"\n\r"); jtaID.append(dd.birthday+"\n\r"); cteID.add(jtaID); } } } 3.2主要功能模塊的實現(xiàn)3.2.1下載數(shù)據(jù)并解析的實現(xiàn) 想要實現(xiàn)這個系統(tǒng)必須先要下載數(shù)據(jù),我下載的是json類型,并按照相關的要求進行解析。實現(xiàn)下載數(shù)據(jù)并解析的代碼如下:publicclassHttpDownloader{ publicStringdownload(Stringaddress){ StringBuffersb=newStringBuffer(); Stringline=null; BufferedReaderbuffer=null; try{ URLurl=newURL(address); HttpURLConnectionurlConn=(HttpURLConnection)url .openConnection(); buffer=newBufferedReader(newInputStreamReader(urlConn .getInputStream(),"UTF-8")); while((line=buffer.readLine())!=null){ sb.append(line); } }catch(Exceptione){ e.printStackTrace(); }finally{ try{ buffer.close(); }catch(Exceptione){ e.printStackTrace(); } } intbegin=sb.lastIndexOf("{"); intend=sb.indexOf("}"); Stringstr=sb.substring(begin,end+1); returnstr; } publicstaticvoidmain(String[]args)throwsException{ }}3.2.2手機號碼歸屬地查詢的實現(xiàn) 首先,我先得到一個用戶輸入的手機號碼,之后將這個號碼以字符串的形式添加到事先設置好的網(wǎng)址后面,然后就可以將這個總的字符串通過URL聯(lián)網(wǎng)并得到用戶所需的信息,當然,我們必須得通過utf-8轉碼,不然會是亂碼,之后再解析這個字符串并返回給用戶。實現(xiàn)手機號碼歸屬地查詢的代碼如下:publicclassDataAnalysis1{ Stringprovince; Stringcity; Stringareacode; Stringzip; Stringcompany; Stringcard; publicvoiddataAnalysis(StringphoneNum0){ try{ StringbigData=newHttpDownloader().download("/mobile/get?phone=" +phoneNum0+"&key=144c071968a4b985c536815f356d15af"); JsonReaderreader=newJsonReader(newStringReader("["+bigData+"]")); reader.beginArray(); while(reader.hasNext()){ reader.beginObject(); while(reader.hasNext()){ StringtagName=reader.nextName(); if(tagName.equals("province")){ vince="省份為:"+reader.nextString(); } if(tagName.equals("city")){ this.city="城市為:"+reader.nextString(); } if(tagName.equals("areacode")){ this.areacode="區(qū)號為:"+reader.nextString(); } if(tagName.equals("zip")){ this.zip="郵編為:"+reader.nextString(); } if(tagName.equals("company")){ pany="公司為:"+reader.nextString(); } if(tagName.equals("card")){ this.card="卡類型:"+reader.nextString(); } } reader.endObject(); } reader.endArray(); reader.close(); }catch(Exceptione){ e.printStackTrace(); } }3.2.3IP地址查詢的實現(xiàn)首先,我先得到一個用戶輸入的IP地址,之后將這個IP地址以字符串的形式添加到事先設置好的網(wǎng)址后面,然后就可以將這個總的字符串通過URL聯(lián)網(wǎng)并得到用戶所需的信息,當然,我們必須得通過utf-8轉碼,不然會是亂碼,之后再解析這個字符串并返回給用戶。實現(xiàn)IP地址查詢的代碼如下:publicvoiddataAnalysis(StringphoneNum0){ try{ StringbigData=newHttpDownloader().download("/idcard/index?key=bb00d68319de8785a04e9e8362e373f4&cardno="+phoneNum0); JsonReaderreader=newJsonReader(newStringReader("["+bigData+"]")); reader.beginArray(); while(reader.hasNext()){ reader.beginObject(); while(reader.hasNext()){ StringtagName=reader.nextName(); if(tagName.equals("area")){ this.area="地區(qū):"+reader.nextString(); } if(tagName.equals("sex")){ this.sex="性別為:"+reader.nextString(); } if(tagName.equals("birthday")){ this.birthday="生日為:"+reader.nextString(); } if(tagName.equals("verify")){ this.verify="核實:"+reader.nextString(); } } reader.endObject(); } reader.endArray(); reader.close(); }catch(Exceptione){ e.printStackTrace(); } } publicstaticvoidmain(String[]args){ }}3.2.4身份證號碼查詢的實現(xiàn)首先,我先得到一個用戶輸入的身份證號碼,之后將這個身份證號碼以字符串的形式添加到事先設置好的網(wǎng)址后面,然后就可以將這個總的字符串通過URL聯(lián)網(wǎng)并得到用戶所需的信息,當然,我們必須得通過utf-8轉碼,不然會是亂碼,之后再解析這個字符串并返回給用戶。乘法算法的代碼實現(xiàn)如下:publicclassDataAnalysis2{ Stringarea; Stringlocation; publicvoiddataAnalysis(StringphoneNum0){ try{ StringbigData=newHttpDownloader().download("/ip/ip2addr?ip="+phoneNum0+"&key=bda031e03f8415d5d2957249a1e63a4c"); JsonReaderreader=newJsonReader(newStringReader("["+bigData+"]")); reader.beginArray(); while(reader.hasNext()){ reader.beginObject(); while(reader.hasNext()){ StringtagName=reader.nextName(); if(tagName.equals("area")){ this.area="地區(qū):"+reader.nextString(); } if(tagName.equals("location")){ this.location="位置為:"+reader.nextString(); } } reader.endObject(); } reader.endArray(); reader.close(); }catch(Exceptione){ e.printStackTrace(); } } publicstaticvoidmain(String[]args){ }}

第4章調(diào)試及發(fā)現(xiàn)問題的解決雖然在程序的編寫過程中遇到了很多問題,但是通過上網(wǎng)查閱相關資料,與其它同學討論,詢問指導老師等方式,最終都一一解決了,程序實現(xiàn)及調(diào)試過程中遇到的主要問題及解決方法如下。1、寫好程序后,為什么輸出的會是亂碼?解決方法:在字節(jié)流后面加上一個解碼的方式“utf-8”。2、窗口里面的組件無法顯示,有時候,即便顯示也是非常得小,而且無論怎么設置大小,都不能完善?解決方法:沒有設置布局方式,我一般都采用的空布局方式,但這句代碼一定要寫,不過最后的文本框我采用的是流式布局。3、下一個時間監(jiān)聽器類要調(diào)用上一個類里構造的變量該怎么辦?解決方法:將它改為成員變量。例如:JTextFieldjiphone; JDialogjlphone; publicvoidac

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論