Java课程设计校园IP查询系统.docx
《Java课程设计校园IP查询系统.docx》由会员分享,可在线阅读,更多相关《Java课程设计校园IP查询系统.docx(17页珍藏版)》请在冰豆网上搜索。
Java课程设计校园IP查询系统
JAVA程序设计课程设计报告
课题:
校园IP系统查询
姓名:
学号:
专业班级:
指导教师:
设计时间:
评阅意见:
评定成绩:
指导老师签名:
年月日
2.1功能模块划分...........................2
一、系统描述:
校园IP地址查询系统采用Java语言和SQL语句结合设计开发,将局域网内的IP地址进行分组归类,用户可以查询局域网内任一IP地址的归属。
要进行本系统的开发,必须对数据库比较熟悉,并且应该熟悉Java编程,而且还要熟悉利用JDBC进行数据连接的知识。
为了数据信息的表达和数据信息的网络传输,这个系统Mysql数据库来存储数据,即先通过JDBC-ODBC连接,将数据从文件中读取出来再存储到数据库中,然后GUI界面中的查询,通过数据库的连接,采用sql语句判断数据是否存在数据库中。
二、分析与设计:
2.1、功能模块划分:
2.1.1、把IP地址信息放在统一的ip.txt文件中,通过程序把文件中的数据输入到数据库中。
2.1.2、校园IP地址查询系统的主界面:
校园IP地址查询系统的的这界面主要包括IP地址显示区间、IP地址输入栏、IP地址检索信息输出栏、“查询”按钮、“退出”按钮。
(对照表将有利于对照查询地结果的正确性)
根据实际需求设计的主界面如下图。
校园IP地址查询主界面
2.2、数据库结构描述:
2..2.1、建立ip地址信息数据库
校园ip地址查询系统选用mysql作为数据库,sqlyog为msql的可视化界面。
2.2.2、创建ip地址信息库
(一)创建数据库表,如下图
(二)创建数据库表名,如下图
2.3、系统详细设计文档:
校园IP地址查询系统要求比较高的响应速度和异构平台的互通,它需要实现如下功能:
(1)IP信息存储功能。
根据输入文本文件的IP地址信息,通过JDBC-ODBC数据库连接实现对mysql数据库的连接,将IP地址信息存储到数据库中。
数据库中的每一条IP地址信息由2个段:
IP地址、IP地址所属地址,并且以IP地址为索引以保证地址信息的唯一性。
将IP地址存储在mysql数据库中有利于实现数据源的唯一性,也有利于IP信息数据更新的简单性和高效性。
IPDB类的主要作用是将IP地址写入数据库,它首先从文本文件中读取IP地址段信息,然后再将这些信息写入数据库中保存。
(2)IP信息查询功能。
根据GUI界面中的查询,程序保存GUI界面输入的IP地址,通过数据库的连接,采用sql语句判断数据输入的IP地址是否存在数据库中。
如果存在则根据IP地址,来获取存在数据库中,有关这个IP地址的所属地址信息。
然后返回给GUI界面,以供用户读取。
如果不存在,则返回“所查询的IP地址不输入我们学校的”;这个功能主要是由IPJFrame类和MySql类实现,IPJFrame类主要是负责界面设计,以及显示返回的结果,Mysql类主要是连接数据库,实行查询IP地址,检索IP地址的所属的地址信息。
2.4、各个模块的实现方法描述:
校园IP地址查询系统的的这界面主要包括IP地址显示区间、IP地址输入栏、IP地址检索信息输出栏、“查询”按钮、“退出”按钮。
IP地址显示区罗列出局域网内所有的IP地址分段及其属主情况、查询地址输入区用于输入需要查询的IP地址,另外还需要给查询按钮和退出按钮添加相应的事件处理逻辑。
2.5、测试数据及期望结果:
三、源代码:
这段代码是把IP地址的基本信息文件导入到数据库中
publicvoidsaveIPtoDB()throwsException
{
toDBdb=newtoDB();
bf=newBufferedReader(newFileReader("E:
\\javaclass\\test4\\src\\test\\ip.txt"));
while((s=bf.readLine())!
=null)
{
for(inti=0;i<4;i++)
{
ip[i]="";
}
intindex=0;
StringTokenizerst=newStringTokenizer(s,"");
while(st.hasMoreElements())
{
s=(String)st.nextElement();
ip[index++]=s;
}
ipinfo=ip[1]+""+ip[2]+""+ip[3];
sql="insertIP"+"values('"+ip[0]+"','"+ipinfo+"')";
db.connection(sql);
db.execute();
}
}
这段代码是校园IP地址查询系统的界面
jLabel1.setFont(newjava.awt.Font("宋体",1,24));//NOI18N
jLabel1.setText("校园IP地址查询");
jLabel2.setFont(newjava.awt.Font("宋体",1,14));//NOI18N
jLabel2.setText("输入待查询的IP地址:
");
shuRuTextField.setFont(newjava.awt.Font("宋体",1,14));//NOI18N
jLabel4.setIcon(newjavax.swing.ImageIcon("C:
\\DocumentsandSettings\\Administrator\\桌面\\ip.jpg"));//NOI18N
jLabel4.setText("jLabel4");
jLabel5.setFont(newjava.awt.Font("宋体",1,14));//NOI18N
jLabel5.setText("查询结果:
");
xianShiTextField.setFont(newjava.awt.Font("宋体",1,14));//NOI18N
findButton.setFont(newjava.awt.Font("宋体",1,14));//NOI18N
findButton.setText("查询");
findButton.addActionListener(newjava.awt.event.ActionListener(){
publicvoidactionPerformed(java.awt.event.ActionEventevt){
findButtonActionPerformed(evt);
}
});
exitButton.setFont(newjava.awt.Font("宋体",1,14));//NOI18N
exitButton.setText("退出");
exitButton.addActionListener(newjava.awt.event.ActionListener(){
publicvoidactionPerformed(java.awt.event.ActionEventevt){
exitButtonActionPerformed(evt);
}
});
javax.swing.GroupLayoutjPanel1Layout=newjavax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(144,144,144)
.addComponent(jLabel1))
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING,false)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING,jPanel1Layout.createSequentialGroup()
.addGap(37,37,37)
.addComponent(jLabel3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED,javax.swing.GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE)
.addComponent(jLabel4,javax.swing.GroupLayout.PREFERRED_SIZE,344,javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING,jPanel1Layout.createSequentialGroup()
.addGap(60,60,60)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING,false)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(shuRuTextField,javax.swing.GroupLayout.PREFERRED_SIZE,189,javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel5)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(xianShiTextField)))))
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(91,91,91)
.addComponent(findButton)
.addGap(82,82,82)
.addComponent(exitButton)))
.addContainerGap(61,Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(shuRuTextField,javax.swing.GroupLayout.PREFERRED_SIZE,javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(202,202,202)
.addComponent(jLabel3))
.addGroup(jPanel1Layout.createSequentialGroup()
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel5)
.addComponent(xianShiTextField,javax.swing.GroupLayout.PREFERRED_SIZE,javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel4)))
.addGap(18,18,18)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(exitButton)
.addComponent(findButton))
.addContainerGap(25,Short.MAX_VALUE))
);
javax.swing.GroupLayoutlayout=newjavax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1,javax.swing.GroupLayout.PREFERRED_SIZE,javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.PREFERRED_SIZE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1,javax.swing.GroupLayout.DEFAULT_SIZE,javax.swing.GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE)
);
pack();
}
privatevoidfindButtonActionPerformed(java.awt.event.ActionEventevt){
shuChu="";
xianShiTextField.setText("");
StringstrIP=shuRuTextField.getText();
if(strIP.length()==0)
{
shuChu="请输入待查询的IP地址!
";
shuRuTextField.setText(shuChu);
return;
}
else
{
intr=0;
r=strIP.indexOf(".");
if(r>2)
{
shuChu=newMySql().mySelect(strIP);
xianShiTextField.setText(shuChu);
}
else
{
shuChu="你查询的IP不合法!
";
shuRuTextField.setText(shuChu);
}
}
}
privatevoidexitButtonActionPerformed(java.awt.event.ActionEventevt){
System.exit(0);
}
这段代码是实现查询功能的
publicStringmySelect(Stringselect_value)
{
Stringsql="select*fromip"+"whereip='"+select_value+"'";
toDBdb=newtoDB();
db.connection(sql);
try
{
rs=db.executeQuery();
while(rs.next())
{
ipinfo=rs.getString("info");
}
if(ipinfo==null)
{
result="您查询在IP地址不是我们学校的";
}
else
{
result=ipinfo;
}
}
catch(Exceptione)
{
e.printStackTrace();
}
returnresult;
}
四、总结:
通过这次课程设计使我受益匪浅。
拿到这个课题时我们刚开始时就觉得不是很容易,但是当我们仔细的分析后我们发现其实并不是很难。
首先就明确每一个人得任务,然后再分工。
我是负责数据库的数据,刚开始我只是按照一定的顺序和一定的规律构造出一系列的IP地址,其中包括了我们学校的全部地方。
请老师帮我们检查后发现,我们的IP有一些是不合法的,这是我们又到网上查了一些关于IP地址相关的知识,更深刻的认识了IP地构造,以及原理,更正了数据后,又将数据分了类制造了一张表,便于数据查询时的核对。
我很佩服我们小组的另外几位成员,他们完成了任务的关键部分。
奇思构想,完成那些函数,那些功能,巧妙的利用函数与JDBC将数据与数据库连接起来,将数据与程序连接起来。
同时也让我觉得其实团结就是力量,使我也懂得了团队的力量,懂得成员之间的合作与交流。
一个大的工程不管有多复杂,但是只要你有信心,有勇气去将它分解成一个一个的小的项目,那个工程也就迎刃而解了。
这正是我们今后将要面对的,也是要解决的,这一次课程设计业是一次不错的历练。
五、参考文献:
[1].黄晓明.课程设计案例精编(第二版).中国水利水电出版社,2007
[2].邱加永.jsp基础与案例开发详解.清华大学出版社,2009