




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中国地质大学(武汉)JAVA课程设计PAGE21网络测试系统需求分析现在,网络早已是人们日常生活不可或缺的一部分,网络性能的好坏,各个路由节点之间连接是否畅通也是人们所需解决的最基本问题,由此,一个网络测试系统的需求也就产生了。题目要求使用图形用户界面;客户端登录,获取服务器试卷文件列表,选取显示试卷,提交答案,查询分数。设计思想代码分两个部分,一个客户端,一个服务器。客户端部分,负责图形用户界面,客户端登录,连接服务器,获取试卷,答题,显示分数;服务器部分,负责和客户端连接,向客户端传试卷,给予分数,其中试卷是通过sqlserver数据库给出的。系统流程流程截图及说明图表SEQ图表\*ARABIC1启动服务器,控制台显示连接成功图表SEQ图表\*ARABIC2启动客户端图表SEQ图表\*ARABIC3输入服务器IP,点击登录按钮图表SEQ图表\*ARABIC4客户端登陆后,服务器显示客户端的信息图表SEQ图表\*ARABIC5单击登陆完毕,选择试卷按钮弹出试卷选择窗口图表SEQ图表\*ARABIC6有两种试卷可以选择图表SEQ图表\*ARABIC7选择试卷1,单击开始答题按钮弹出答题窗口图表SEQ图表\*ARABIC8输入答案,单击开始答题按钮,进入下一道题图表SEQ图表\*ARABIC9第二题图表SEQ图表\*ARABIC10第三题图表SEQ图表\*ARABIC11第四题图表SEQ图表\*ARABIC12第二,四题答对,第一,三题答错,最后显示如上结果图表SEQ图表\*ARABIC13重复上述步骤,选择试卷二答题图表SEQ图表\*ARABIC14第一题图表SEQ图表\*ARABIC15第二题图表SEQ图表\*ARABIC16第三题图表SEQ图表\*ARABIC17第四题图表SEQ图表\*ARABIC18第五题图表SEQ图表\*ARABIC19第一,三,五题答对,二,四题答错,最后显示如上结果图表SEQ图表\*ARABIC20数据库中的试卷类型,题目及答案信息设计体会通过此次课程设计,使我更加扎实的掌握了有关java编程方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过编程,使我们掌握的知识不再是纸上谈兵。过而能改,善莫大焉。在课程设计过程中,我们不断发现错误,不断改正,不断领悟,不断获取。最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上披荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!课程设计诚然是一门专业课,给我很多专业知识以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给了我许多道,给了我很多思,给了我莫大的空间。同时,设计让我感触很深。使我对抽象的理论有了具体的认识。我认为,在这学期的课程设计中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在课程设计上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐,找寻有趣的事情,发现其中珍贵的事情。就像中国提倡的艰苦奋斗一样,我们都可以在实验结束之后变的更加成熟,会面对需要面对的事情。回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。参考文献java语言程序设计java编程思想源代码client.java:packageclient;.*;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.*;.*;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";//安装sqlserver2021时的密码 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();//得到客户端IPSystem.out.println("Client'sIPaddress:"+clientIP);//显示客户端IPintport;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)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 策划设计服务合同
- 房产交易定金事宜协议
- 机器人喷涂技术培训考核试卷
- Photoshop CC 2019中文版标准教程(第8版)课件 第6章 绘制路径和形状
- 油果加工技术与质量控制考核试卷
- 泌尿中医护理个案教育
- 畜牧业与乡村旅游的互动效应考核试卷
- 纺织设备液压与气动技术考核试卷
- 石灰在塑料改性研究中的应用考核试卷
- 电力仪表的数字技术发展趋势与挑战考核试卷
- 2025至2030中国射频芯片市场趋势展望及需求前景研究报告
- 应急急救知识课件
- 文综中考试卷及答案解析
- 鼠伤寒沙门菌护理查房
- 2024年江苏省南京市中考物理试卷真题(含答案)
- K30自动生成及计算试验记录
- (完整)教育心理学-各章节重点学习笔记
- 建筑行业施工期间意外伤害免责协议
- 民兵国防知识教育教案
- 路面级配砂砾石垫层施工总结报告
- 变压器容量计算表
评论
0/150
提交评论