Java课程设计-日常信息查询系统_第1页
Java课程设计-日常信息查询系统_第2页
Java课程设计-日常信息查询系统_第3页
Java课程设计-日常信息查询系统_第4页
Java课程设计-日常信息查询系统_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章课题概述本次数据结构课程设计的题目是设计并实现一个日常信息查询系统课题的目的 这个信息查询系统可以查询一些我们的日常信息,比如手机号码归属地、IP地址、身份证号码。通过这个实验不仅仅可以让获得我们在设计好程序后的成就感,还可以强化我们对io流,图形界面的理解,并且了解并掌握一些基本的联网获取网上信息——信息的下载,解析和输出。1.2课题的要求1.2.1图形界面的要求(1)应该要设计出一个或者多个窗口,要求美观,简介,需要包含一些必要的文字提示及说明,查询功能实现的按钮,输入框以及显示得到的信息的相关文本组件。(2)最好能有多个窗口界面,有序地排列,分类所要查询的项目。1.2.2输出信息的要求(1)不能出现乱码。(2)输出的信息要求有条理,按次序。1.2.3异常的要求(1)要求能识别空输入,不存在的号码等一些基本的异常。(2)要求能进行多次输入。第2章概要设计2.1整个程序的模块结构及流程根据课题要求,整个程序按功能可划分为手机号码归属地查询、IP地址查询、身份证号码查询三个主要模块。这个系统还要求能实现用户与机器的互动,按用户的要求来查询相关信息。程序各功能模块的划分,及主要流程如图2-1所示。图2-1整个程序各功能模块间的流程2.2信息查询系统的主要步骤描述2.2.1手机号码归属地查询 设计出图形界面,当然这个图形界面并不是独立的,不然太麻烦了,也没必要,图形界面里肯定至少要有输入框、查询按钮以及显示信息的文本框。首先,我先得到一个用户输入的手机号码,之后将这个号码以字符串的形式添加到事先设置好的网址后面,然后就可以将这个总的字符串通过URL联网并得到用户所需的信息,当然,我们必须得通过utf-8转码,不然会是乱码,之后再解析这个字符串并返回给用户。其他的查询功能其实都是一样的。2.2.2IP地址查询 设计图形界面。首先,我先得到一个用户输入的IP地址,之后将这个IP地址以字符串的形式添加到事先设置好的网址后面,然后就可以将这个总的字符串通过URL联网并得到用户所需的信息,当然,我们必须得通过utf-8转码,不然会是乱码,之后再解析这个字符串并返回给用户。2.2.3身份证号码查询 设计图形界面。首先,我先得到一个用户输入的身份证号码,之后将这个身份证号码以字符串的形式添加到事先设置好的网址后面,然后就可以将这个总的字符串通过URL联网并得到用户所需的信息,当然,我们必须得通过utf-8转码,不然会是乱码,之后再解析这个字符串并返回给用户。第3章程序功能的实现3.1主文件的实现我的主文件是一个图形界面的设计,其他相关的功能都写在了其他的文件里,在主文件里调用他们就可以了,避免了文件的繁缛冗长,而且调理清晰,便于以后的修改维护。下面是我的主文件。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主要功能模块的实现3.2.1下载数据并解析的实现 想要实现这个系统必须先要下载数据,我下载的是json类型,并按照相关的要求进行解析。实现下载数据并解析的代码如下: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手机号码归属地查询的实现 首先,我先得到一个用户输入的手机号码,之后将这个号码以字符串的形式添加到事先设置好的网址后面,然后就可以将这个总的字符串通过URL联网并得到用户所需的信息,当然,我们必须得通过utf-8转码,不然会是乱码,之后再解析这个字符串并返回给用户。实现手机号码归属地查询的代码如下: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="区号为:"+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地址查询的实现首先,我先得到一个用户输入的IP地址,之后将这个IP地址以字符串的形式添加到事先设置好的网址后面,然后就可以将这个总的字符串通过URL联网并得到用户所需的信息,当然,我们必须得通过utf-8转码,不然会是乱码,之后再解析这个字符串并返回给用户。实现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="地区:"+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身份证号码查询的实现首先,我先得到一个用户输入的身份证号码,之后将这个身份证号码以字符串的形式添加到事先设置好的网址后面,然后就可以将这个总的字符串通过URL联网并得到用户所需的信息,当然,我们必须得通过utf-8转码,不然会是乱码,之后再解析这个字符串并返回给用户。乘法算法的代码实现如下: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="地区:"+reader.nextString(); } if(tagName.equals("location")){ this.location="位置为:"+reader.nextString(); } } reader.endObject(); } reader.endArray(); reader.close(); }catch(Exceptione){ e.printStackTrace(); } } publicstaticvoidmain(String[]args){ }}

第4章调试及发现问题的解决虽然在程序的编写过程中遇到了很多问题,但是通过上网查阅相关资料,与其它同学讨论,询问指导老师等方式,最终都一一解决了,程序实现及调试过程中遇到的主要问题及解决方法如下。1、写好程序后,为什么输出的会是乱码?解决方法:在字节流后面加上一个解码的方式“utf-8”。2、窗口里面的组件无法显示,有时候,即便显示也是非常得小,而且无论怎么设置大小,都不能完善?解决方法:没有设置布局方式,我一般都采用的空布局方式,但这句代码一定要写,不过最后的文本框我采用的是流式布局。3、下一个时间监听器类要调用上一个类里构造的变量该怎么办?解决方法:将它改为成员变量。例如:JTextFieldjiphone; JDialogjlphone; publicvoidac

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论