JAVA网络测试系统 课程设计.docx
《JAVA网络测试系统 课程设计.docx》由会员分享,可在线阅读,更多相关《JAVA网络测试系统 课程设计.docx(25页珍藏版)》请在冰豆网上搜索。
JAVA网络测试系统课程设计
网络测试系统
1.需求分析
现在,网络早已是人们日常生活不可或缺的一部分,网络性能的好坏,各个路由节点之间连接是否畅通也是人们所需解决的最基本问题,由此,一个网络测试系统的需求也就产生了。
2.题目要求
使用图形用户界面;客户端登录,获取服务器试卷文件列表,选取显示试卷,提交答案,查询分数。
3.设计思想
代码分两个部分,一个客户端,一个服务器。
客户端部分,负责图形用户界面,客户端登录,连接服务器,获取试卷,答题,显示分数;服务器部分,负责和客户端连接,向客户端传试卷,给予分数,其中试卷是通过sqlserver数据库给出的。
4.系统流程
5.流程截图及说明
图表1启动服务器,控制台显示连接成功
图表2启动客户端
图表3输入服务器IP,点击登录按钮
图表4客户端登陆后,服务器显示客户端的信息
图表5单击登陆完毕,选择试卷按钮弹出试卷选择窗口
图表6有两种试卷可以选择
图表7选择试卷1,单击开始答题按钮弹出答题窗口
图表8输入答案,单击开始答题按钮,进入下一道题
图表9第二题
图表10第三题
图表11第四题
图表12第二,四题答对,第一,三题答错,最后显示如上结果
图表13重复上述步骤,选择试卷二答题
图表14第一题
图表15第二题
图表16第三题
图表17第四题
图表18第五题
图表19第一,三,五题答对,二,四题答错,最后显示如上结果
图表20数据库中的试卷类型,题目及答案信息
6.设计体会
通过此次课程设计,使我更加扎实的掌握了有关java编程方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。
实践出真知,通过编程,使我们掌握的知识不再是纸上谈兵。
过而能改,善莫大焉。
在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。
最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。
这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。
在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上披荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!
课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道,给了我很多思,给了我莫大的空间。
同时,设计让我感触很深。
使我对抽象的理论有了具体的认识。
我认为,在这学期的课程设计中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。
更重要的是,在课程设计上,我们学会了很多学习的方法。
而这是日后最实用的,真的是受益匪浅。
要面对社会的挑战,只有不断的学习、实践,再学习、再实践。
这对于我们的将来也有很大的帮助。
以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。
就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。
回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。
7.参考文献
(1)java语言程序设计
(2)java编程思想
8.源代码
client.java:
packageclient;
import.*;
importjava.io.*;
importjavax.swing.*;
importjava.awt.event.*;
importjava.awt.*;
publicclassclientextendsJFrame
{
privateJTextFieldt1;
privateJButtonbutton1;
privateJButtonbutton2;
privateJLabellabel1;
privateJLabellabel2;
staticSocketserver=null;
staticInputStreaminputdata=null;
staticOutputStreamoutputdata=null;
staticBufferedReaderin=null;
staticPrintStreamout=null;
staticStringsentence=null;
publicclient(JFramef)
{
f.setVisible(true);
f.setBounds(200,200,500,400);
Containerc=getContentPane();
c.setBackground(Color.WHITE);
f.add(c);
t1=newJTextField("请输入服务器IP",20);
t1.setFont(newFont("Serif",Font.PLAIN,12));
button1=newJButton("登陆");
button1.setFont(newFont("Serif",Font.PLAIN,14));
button2=newJButton("登陆完毕,选择试卷");
button2.setFont(newFont("Serif",Font.PLAIN,16));
BHandlerh=newBHandler();
button1.addActionListener(h);
BHandler2h2=newBHandler2();
button2.addActionListener(h2);
label1=newJLabel("你还未选择服务器");
label1.setFont(newFont("Serif",Font.PLAIN,14));
label2=newJLabel("服务器还没有试卷给你");
label2.setFont(newFont("Serif",Font.PLAIN,14));
c.add(button1,BorderLayout.WEST);
c.add(button2,BorderLayout.SOUTH);
c.add(t1,BorderLayout.CENTER);
c.add(label1,BorderLayout.EAST);
c.add(label2,BorderLayout.NORTH);
}
publicclassBHandlerimplementsActionListener
{
publicvoidactionPerformed(ActionEventevent)
{
label1.setText("你选择了服务器IP地址为"+t1.getText());
try
{
server=newSocket("localhost",7000);//构造Socket实例,连接本地服务器,端口号为7000
inputdata=server.getInputStream();//实例化对象返回服务器套接字的输入流
outputdata=server.getOutputStream();//实例化对象返回服务器套接字的输出流
in=newBufferedReader(newInputStreamReader(inputdata));//实例化对象读取数据输入流
out=newPrintStream(outputdata);//实例化对象读取数据输出流
sentence=in.readLine();//得到读取的一个文本行
label2.setText(sentence);
}
catch(Exceptione){}
}
}
publicclassBHandler2implementsActionListener
{
publicvoidactionPerformed(ActionEventevent)
{
Jlbd=newJlb(newJF0("选择试卷窗口"));
}
}
classJF0extendsJFrame
{
publicJF0(Strings)
{
super(s);
setBounds(200,200,500,400);
setVisible(true);
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(Exceptione){}
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
classJlbextendsJFrame
{
privateJComboBoxlbk;
privateJLabellabel;
privateJButtonbutton3;
privateStringshijuan[]={"1","2"};
publicJlb(JFramef)
{
Containerc=getContentPane();
c.setBackground(Color.WHITE);
f.add(c);
lbk=newJComboBox(shijuan);//创建下拉列表对象
lbk.setMaximumRowCount
(2);//设置下拉列表所能显示列表项的最大数目
lbk.setSelectedIndex(0);//设置默认的选择项
lbk.setFont(newFont("Serif",Font.PLAIN,14));
lbk.addItemListener(newlbHandler());//注册Label监听器
label=newJLabel("你选择了:
试卷1");
label.setFont(newFont("Serif",Font.PLAIN,14));
button3=newJButton("开始答题");
button3.setFont(newFont("Serif",Font.PLAIN,14));
lbHandler2h2=newlbHandler2();
button3.addActionListener(h2);//注册Button监听器
c.add(lbk,BorderLayout.NORTH);
c.add(label,BorderLayout.CENTER);
c.add(button3,BorderLayout.SOUTH);
}
publicclasslbHandlerimplementsItemListener
{
publicvoiditemStateChanged(ItemEvente)
{
if(e.getStateChange()==e.SELECTED)
{
label.setText("你选择了:
试卷"+shijuan[lbk.getSelectedIndex()]);
}
}
}
publicclasslbHandler2implementsActionListener
{
publicvoidactionPerformed(ActionEventevent)
{
out.println(shijuan[lbk.getSelectedIndex()]);
Jlb2m=newJlb2(newJF0("答题窗口"));
}
}
}
classJlb2extendsJFrame
{
privateJLabellabe2;
privateJTextFieldt2;
privateJButtonbutton3;
publicJlb2(JFramef)
{
Containerc=getContentPane();
c.setBackground(Color.WHITE);
f.add(c);
labe2=newJLabel("题目是:
");
labe2.setFont(newFont("Serif",Font.PLAIN,14));
t2=newJTextField("此处填写答案",20);
t2.setFont(newFont("Serif",Font.PLAIN,12));
button3=newJButton("开始答题");
lbHandler3h3=newlbHandler3();
button3.addActionListener(h3);
c.add(labe2,BorderLayout.NORTH);
c.add(t2,BorderLayout.CENTER);
c.add(button3,BorderLayout.SOUTH);
try
{
sentence=in.readLine();
labe2.setText(sentence);
}catch(Exceptione){}
}
publicclasslbHandler3implementsActionListener
{
publicvoidactionPerformed(ActionEventevent)
{
try
{
Stringbmsg=newString();
bmsg=t2.getText();
if(!
bmsg.equals("quit"))
{
out.println(bmsg);
sentence=in.readLine();
labe2.setText(sentence);
}
}catch(Exceptione){}
}
}
}
publicstaticvoidmain(Stringargs[])
{
clientd=newclient(newJFrame("登陆"));
}
}
service.java:
packageservice;
importjava.io.*;
import.*;
importjava.util.*;
importjava.sql.*;
publicclassservice
{
staticpublicvoidmain(Stringargs[])throwsIOException
{
Connectionconn=null;
Statementstmt=null;
ResultSetrs=null;
StringdriverName="sun.jdbc.odbc.JdbcOdbcDriver";//加载JDBC驱动
StringdbURL="jdbc:
odbc:
dnt31";//连接服务器和数据库
StringuserName="sa";//默认用户名
StringuserPwd="199618";//安装sqlserver2008时的密码
try
{
Class.forName(driverName);//声明使用的驱动程序
conn=DriverManager.getConnection(dbURL,userName,userPwd);//创建连接数据库对象
System.out.println("ConnectionSuccessful!
");
}
catch(Exceptione)
{
System.err.println("OpenConn:
"+e.getMessage());
}
ServerSocketsvrsoc=null;
Socketclient=null;
InputStreaminputdata=null;
OutputStreamoutputdata=null;
BufferedReaderin=null;
PrintStreamout=null;
try
{
svrsoc=newServerSocket(7000);
client=svrsoc.accept();
inputdata=client.getInputStream();//实例化对象返回客户端套接字的输入流
in=newBufferedReader(newInputStreamReader(inputdata));//实例化对象读取数据输入流
outputdata=client.getOutputStream();//实例化对象返回客户端套接字的输出流
out=newPrintStream(outputdata);//实例化对象读取数据输出流
InetAddressclientIP=client.getInetAddress();//得到客户端IP
System.out.println("Client'sIPaddress:
"+clientIP);//显示客户端IP
intport;
port=client.getPort();//得到客户端端口号
System.out.println("Client'sport:
"+port);//显示客户端端口号
out.println("Welcome!
...输入你想要的文件名1或2...输入quit退出");
Stringstr=in.readLine();//得到读取的一个文本行
System.out.println(str);
while(!
str.equals("quit"))
{
System.out.println("Clientsaid:
"+str);//得到读取的一个文本行
if(str.equals("1"))
{
stmt=(Statement)conn.createStatement();//创建操作SQL语句的对象
Stringsql1="select*fromdnt31.dbo.javawherename='1'";
rs=stmt.executeQuery(sql1);
intn=0;
while(rs.next())
{
out.println("问题"+rs.getString("problem"));
str=in.readLine();
System.out.println(str);
if(str.equals(rs.getString("answer")))
n++;
}
out.println("你答对题数是:
"+n);
rs.close();
stmt.close();
conn.close();
}
if(str.equals("2"))
{
stmt=(Statement)conn.createStatement();//创建操作SQL语句的对象
Stringsql2="select*fromdnt31.dbo.javawherename='2'";
rs=stmt.executeQuery(sql2);
intn=0;
while(rs.next())
{
out.println("问题"+rs.getString("problem"));
str=in.readLine();
if(str.equals(rs.getString("answer")))
n++;
}
out.println("你答对题数是:
"+n);
rs.close();
stmt.close();
conn.close();
}
str="quit";
}
System.out.println("Clientwanttoleave.");
}
catch(Exceptione)
{
System.out.println("Error:
"+e);
}
finally
{
inputdata.close();
outputdata.close();
client.close();
System.exit(0);
}
}
}