




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第1章課題概述本次數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)的題目是設(shè)計(jì)日常信息查詢系統(tǒng)(手機(jī)號(hào)碼歸屬地查詢、IP地址查詢、身份證信息查詢)。1.1課題的目的由于社會(huì)在不斷發(fā)展,互聯(lián)網(wǎng)已被千千萬(wàn)萬(wàn)的的家庭所接收。于此同時(shí),詐騙電話的的不斷轟炸,身份虛假問題頻頻發(fā)生,網(wǎng)關(guān)的龐大,因此一個(gè)簡(jiǎn)單的日常信息查詢系統(tǒng)就顯得十分必要。通過對(duì)這些信息的查詢及分析,就避免被別人詐騙,財(cái)產(chǎn)安全的得以保證。本系統(tǒng)采用java語(yǔ)言編寫,用Google-Gson開源包處理數(shù)據(jù)。以最簡(jiǎn)潔的界面反饋給用戶,使用戶有更好的體驗(yàn)。1.2課題的要求1.2.1輸入輸出的要求(1)程序運(yùn)行后應(yīng)首先輸出一個(gè)圖形界面,并將所有的查詢選項(xiàng)羅列在界面上供用戶進(jìn)行選擇,以便進(jìn)行相應(yīng)的操作。(2)查詢對(duì)象應(yīng)能夠從鍵盤輸入。(3)用戶每次更新輸入數(shù)據(jù)后,應(yīng)能立即輸出查詢的結(jié)果。(4)查詢結(jié)果的輸出應(yīng)整齊、清晰,以便用戶能夠驗(yàn)證程序的正確性。1.2.2程序?qū)崿F(xiàn)的功能要求(1)實(shí)現(xiàn)用手機(jī)號(hào)碼查詢歸屬地和運(yùn)營(yíng)商(2)實(shí)現(xiàn)用IP地址查詢歸屬地(3)實(shí)現(xiàn)用身份證號(hào)查詢出生地、出生年月日、性別(4)將查詢的信息打印在界面上第2章概要設(shè)計(jì)2.1整個(gè)程序的模塊結(jié)構(gòu)及流程根據(jù)課題要求,整個(gè)程序按功能可劃分為手機(jī)號(hào)碼歸屬地查詢、IP地址查詢、身份證信息查詢?nèi)齻€(gè)主要功能。實(shí)現(xiàn)這三個(gè)功能,應(yīng)該包括從網(wǎng)上下載數(shù)據(jù)、解析數(shù)據(jù)、輸出數(shù)據(jù)。為更好地提供程序的人機(jī)交互能力,程序用圖形界面的形式展現(xiàn)。圖2-1整個(gè)程序各功能模塊2.2輸入數(shù)據(jù)合法性的檢測(cè)及初步處理為防止用戶輸入非法數(shù)據(jù),在查詢時(shí),對(duì)用戶輸入的字符串進(jìn)行數(shù)據(jù)合法性檢驗(yàn)是非常重要的。2.2.1手機(jī)號(hào)碼合法性檢測(cè)輸進(jìn)去一些字母,比如“AsslkjALKSJK”;手機(jī)號(hào)碼位數(shù)錯(cuò)誤,輸進(jìn)去少于11位或者多于11位不輸入號(hào)碼直接查詢;publicvoidactionPerformed(ActionEvente){ Stringstr=phoneTf.getText(); if(str.equals("")){ JOptionPane.showMessageDialog(phoneBtn,"請(qǐng)輸入你的手機(jī)號(hào)碼!"); return; } if(str.matches("[a-zA-Z]+")){ JOptionPane.showMessageDialog(phoneBtn,"輸入格式錯(cuò)誤!"); return; } if(!str.matches("\\d{11}")){ JOptionPane.showMessageDialog(phoneBtn,"手機(jī)號(hào)碼位數(shù)錯(cuò)誤!"); return; }2.2.2IP地址合法性檢測(cè) 不輸進(jìn)去IP地址直接查詢;publicvoidactionPerformed(ActionEvente){ Stringstr=ipTf.getText(); if(str.equals("")){ JOptionPane.showMessageDialog(ipBtn,"請(qǐng)輸入你要查詢的IP地址"); return; } if(str.matches("[a-zA-Z]+")){ JOptionPane.showMessageDialog(phoneBtn,"輸入格式錯(cuò)誤!"); return; } if(str.matches("\\d+")){ JOptionPane.showMessageDialog(phoneBtn,"輸入格式錯(cuò)誤!"); return; }2.2.3身份證號(hào)碼合法性檢測(cè) 不輸入身份證號(hào)碼直接查詢; 輸入身份證號(hào)碼不是18位;if(restring.equals("")){ JOptionPane.showMessageDialog(idBtn,"請(qǐng)輸入你的身份證號(hào)碼"); return; } if(!restring.matches("\\d{18}")){ JOptionPane.showMessageDialog(idBtn,"請(qǐng)檢查輸入的18位身份證號(hào)碼"); return; } string=newDownLoad().DownLoadIdImf( "/microservice/icardinfo?id=", idTf.getText());2.2.4網(wǎng)絡(luò)是否連接檢測(cè) 是否連接上網(wǎng)絡(luò);try{ if(!string.subSequence(4,6).equals("bd")){ JOptionPane.showMessageDialog(ipBtn,"你的網(wǎng)絡(luò)異常,請(qǐng)檢查!"); return; } }catch(StringIndexOutOfBoundsExceptione2){ JOptionPane.showMessageDialog(ipBtn,"你的網(wǎng)絡(luò)異常,請(qǐng)檢查!"); return; }2.4各個(gè)功能的描述2.4.1聯(lián)網(wǎng)下載數(shù)據(jù)要想查詢數(shù)據(jù),就需要從網(wǎng)上下載數(shù)據(jù)。網(wǎng)上有許多的接口便于我們查詢所要的信息,這些接口中有的是返回XML數(shù)據(jù),有的是返回Gson數(shù)據(jù),我們把這些下載來(lái)的數(shù)據(jù)保存在我們定義好的String變量中。2.4.2處理Gson數(shù)據(jù)保存在String的數(shù)據(jù)并不是標(biāo)準(zhǔn)形式的Gson數(shù)據(jù),包含了一些前綴和后綴。因此我們可以用StringBuffer來(lái)處理這些數(shù)據(jù),使之成為標(biāo)準(zhǔn)形式的數(shù)據(jù)。2.4.3解析數(shù)據(jù)那么處理好的數(shù)據(jù)我們就可以進(jìn)行解析了,解析需要用到Google-Gson的開源包,這個(gè)包功能十分強(qiáng)大,用它可以對(duì)我們的數(shù)據(jù)輕松進(jìn)行解析。2.4.4主窗口 最后將解析好的數(shù)據(jù)輸出在我們已經(jīng)設(shè)計(jì)的窗口上。第3章程序功能的實(shí)現(xiàn)3.1聯(lián)網(wǎng)下載數(shù)據(jù)的實(shí)現(xiàn)既然需要下載數(shù)據(jù),首先我們需要從網(wǎng)上找到相應(yīng)的接口來(lái)下載,聯(lián)網(wǎng)下載數(shù)據(jù)需要我們用到包和java.io來(lái)處理,將下載來(lái)的數(shù)據(jù)保存在一個(gè)字符串中,便于下面來(lái)處理。下載類中我有三個(gè)方法,每個(gè)方法分別處理不同的功能。但實(shí)質(zhì)上相當(dāng)于一個(gè)方法,首先你要獲得一個(gè)網(wǎng)址,將用Url類將網(wǎng)址變成一個(gè)Url對(duì)象,用里面的HttpUrlConnection方法開始連接網(wǎng)絡(luò),然后用BufferRead來(lái)讀取每一行然后連接起來(lái),最后轉(zhuǎn)換成字符串返回。具體代碼如下:publicStringdownloadPhoImf(Stringurlstr,Stringnum){ StringBuffersb=newStringBuffer(); Stringline=null; BufferedReaderbf=null; try{ Stringreurlstr=urlstr+num; web=newURL(reurlstr); HttpURLConnectionurlConn=(HttpURLConnection)web .openConnection(); bf=newBufferedReader(newInputStreamReader( urlConn.getInputStream())); while((line=bf.readLine())!=null){ line.toString().trim(); sb.append(line); } System.out.println(sb.toString()); }catch(Exceptione){ }finally{ try{ if(bf!=null){ bf.close(); }else{ returnnull; } }catch(IOExceptione){ e.printStackTrace(); } } returnsb.toString().trim();}圖3-1運(yùn)行結(jié)果3.2解析數(shù)據(jù)的實(shí)現(xiàn)解析數(shù)據(jù)之前需要對(duì)我們下載的數(shù)據(jù)進(jìn)行處理,因?yàn)閿?shù)據(jù)必須是標(biāo)準(zhǔn)格式的數(shù)據(jù)(如圖)圖3-2Gson數(shù)據(jù)圖處理好這種Gson數(shù)據(jù)后就可以開始解析了,解析需要用到我們Google-Gson包給我們提供的方法來(lái)解析,首先我們需要將這個(gè)數(shù)據(jù)編程我們事先定義好的實(shí)體類,用實(shí)體類的get()方法就可以的出想要的結(jié)果。代碼如下:publicStringparsetCatName(StringJson){ Gsongson=newGson(); JsonReaderjr=newJsonReader(newStringReader(Json)); jr.setLenient(true); Useruse=gson.fromJson(jr,User.class); Strings=use.getBirthday(); returns; }這段代碼就可以實(shí)現(xiàn)將我們的Gson數(shù)據(jù)變成我們User實(shí)體類的類方法,便于解析。實(shí)體類的代碼如下:publicclassUser{ Stringbirthday; publicStringgetBirthday(){ returnbirthday; } publicvoidsetBirthday(Stringbirthday){ this.birthday=birthday; }就可以用上面use.getCatname()來(lái)得到birthday的結(jié)果。其他功能相對(duì)于這種功能類似,用相同的方法來(lái)解析即可(如下圖)。圖3-2解析示意圖3.3主窗口的實(shí)現(xiàn)主窗口使用java.awt包和javax.swing包給我們提供的方法來(lái)構(gòu)建我們需要的GUI。在界面中,因?yàn)槲覀兂绦虬齻€(gè)模塊,所以可以用三個(gè)Panel來(lái)構(gòu)建三個(gè)區(qū)域。在這三個(gè)區(qū)域中,分別添加一個(gè)TextField,Button和TextAera。這樣就可以得到我們需要的界面了。主要代碼在下: MyFrame(Strings){ super(s); setLayout(newGridLayout(3,1)); phoneJP=newJPanel(newFlowLayout()); ipJP=newJPanel(newFlowLayout()); idJP=newJPanel(newFlowLayout()); phoneBtn=newJButton("查詢"); phoneBtn.setBackground(Color.pink); ipBtn=newJButton("查詢"); ipBtn.setBackground(Color.pink); idBtn=newJButton("查詢"); idBtn.setBackground(Color.pink); phoneLab=newJLabel("請(qǐng)輸入手機(jī)號(hào):"); ipLab=newJLabel("請(qǐng)輸入IP地址:"); IdLab=newJLabel("請(qǐng)輸入身份證號(hào):"); phoneTf=newJTextField(15); ipTf=newJTextField(15); idTf=newJTextField(15); phoneTxa=newJTextArea(3,12); phoneTxa.setBackground(Color.pink); ipTxa=newJTextArea(3,12); ipTxa.setBackground(Color.pink); idTxa=newJTextArea(5,12); idTxa.setBackground(Color.pink); phoneJP.add(phoneLab); phoneJP.add(phoneTf); phoneJP.add(phoneBtn); phoneJP.add(newJScrollPane(phoneTxa)); ipJP.add(ipLab); ipJP.add(ipTf); ipJP.add(ipBtn); ipJP.add(ipTxa); ipJP.add(newJScrollPane(ipTxa)); idJP.add(IdLab); idJP.add(idTf); idJP.add(idBtn); idJP.add(idTxa); jsp=newJScrollPane(idTxa); jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); idJP.add(jsp); phoneBtn.addActionListener(newPhoneBtnMon()); ipBtn.addActionListener(newIPBtnMon()); idBtn.addActionListener(newIdBtnMon());第4章調(diào)試及發(fā)現(xiàn)問題的解決雖然在程序的編寫過程中遇到了很多問題,但是通過上網(wǎng)查閱相關(guān)資料,與其它同學(xué)討論,詢問指導(dǎo)老師等方式,最終都一一解決了,程序?qū)崿F(xiàn)及調(diào)試過程中遇到的主要問題及解決方法如下。1、如何聯(lián)網(wǎng)下載數(shù)據(jù)?解決方法:下載類中我有三個(gè)方法,每個(gè)方法分別處理不同的功能。但實(shí)質(zhì)上相當(dāng)于一個(gè)方法,首先你要獲得一個(gè)網(wǎng)址,將用Url類將網(wǎng)址變成一個(gè)Url對(duì)象,用里面的HttpUrlConnection方法開始連接網(wǎng)絡(luò),然后用BufferRead來(lái)讀取每一行然后連接起來(lái),最后轉(zhuǎn)換成字符串返回。2、如何解析?解決方法:其實(shí)這個(gè)程序最關(guān)鍵的內(nèi)容是解析,剛開始我完全不知道怎么做,但是老師給我們提供了一個(gè)解析Gson數(shù)據(jù)的視頻,那個(gè)視頻中講述了兩種方法,但是第一種對(duì)我們數(shù)據(jù)格式要求太高而且解析起來(lái)用雙重循環(huán),顯得十分復(fù)雜。在這個(gè)程序中,我采用了第二種方法,也就是上述已經(jīng)講到的方法,非常好用。第5章程序測(cè)試及分析運(yùn)行程序,首先顯示程序GUI界面圖5-1程序主界面圖5-2所示,查詢手機(jī)號(hào)碼。圖5-2查詢手機(jī)號(hào)碼圖5-3所示,查詢IP地址圖5-3查詢IP地址如圖5-4,查詢身份證信息。圖5-4查詢身份證信息上面就是程序運(yùn)行后所處來(lái)的界面,總體來(lái)說,這個(gè)界面做的比較簡(jiǎn)潔,但大體功能也已經(jīng)基本實(shí)現(xiàn),提示輸入你需要查詢的數(shù)據(jù),然后點(diǎn)擊查詢按鈕,即會(huì)將所需要的信息輸出在TextArea中。第6章總結(jié)通過這次課程設(shè)計(jì),終于獨(dú)立寫出了自己的一個(gè)小小的程序,還學(xué)會(huì)了自己使用外部開源包和多文件編譯。更重要的是通過
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國(guó)陶瓷纖維市場(chǎng)競(jìng)爭(zhēng)格局與前景發(fā)展策略分析報(bào)告
- 2025-2030年中國(guó)造紙機(jī)械市場(chǎng)運(yùn)行態(tài)勢(shì)及投資戰(zhàn)略研究報(bào)告
- 2025-2030年中國(guó)蠔肉行業(yè)發(fā)展?fàn)顩r及營(yíng)銷戰(zhàn)略研究報(bào)告
- 2025-2030年中國(guó)礦渣粉產(chǎn)業(yè)十三五規(guī)劃及發(fā)展策略分析報(bào)告
- 2025-2030年中國(guó)電子銅箔市場(chǎng)運(yùn)行狀況及發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
- 江西洪州職業(yè)學(xué)院《經(jīng)濟(jì)學(xué)的思維方式》2023-2024學(xué)年第二學(xué)期期末試卷
- 沈陽(yáng)職業(yè)技術(shù)學(xué)院《受眾與視聽率分析》2023-2024學(xué)年第二學(xué)期期末試卷
- 益陽(yáng)職業(yè)技術(shù)學(xué)院《公共關(guān)系》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025屆上海市松江區(qū)屆高三上學(xué)期一??荚嚉v史試卷
- 遼寧中醫(yī)藥大學(xué)杏林學(xué)院《軟件測(cè)試技術(shù)實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 員工賠償金保密協(xié)議書(2篇)
- GB/T 44828-2024葡萄糖氧化酶活性檢測(cè)方法
- GB/T 44865-2024物聯(lián)網(wǎng)基于物聯(lián)網(wǎng)和傳感網(wǎng)技術(shù)的動(dòng)產(chǎn)監(jiān)管集成平臺(tái)系統(tǒng)要求
- 燃?xì)夤究?jī)效考核管理制度
- 高中生物課程標(biāo)準(zhǔn)(人教版)
- 第三章-自然語(yǔ)言的處理(共152張課件)
- 2023版初中語(yǔ)文新課程標(biāo)準(zhǔn)
- 人音版音樂一年級(jí)上冊(cè)第3課《國(guó)旗國(guó)旗真美麗》說課稿
- GB/T 44255-2024土方機(jī)械純電動(dòng)液壓挖掘機(jī)能量消耗量試驗(yàn)方法
- DL∕T 1785-2017 電力設(shè)備X射線數(shù)字成像檢測(cè)技術(shù)導(dǎo)則
- 山東財(cái)經(jīng)大學(xué)《大學(xué)英語(yǔ)》2022-2023學(xué)年期末試卷
評(píng)論
0/150
提交評(píng)論