import javax.swing.JTable; class Win351 extends JFrame { JScrollPane jScrollPane1 = new JScrollPane(); JTable jTable1 = new JTable(); public Win351() { this.setTitle(\通讯录\ jScrollPane1 .setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); jScrollPane1 .setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); Object[][] cells = { { \张小红\女\吉林省长春市\ { \李小鹏\男\辽宁省本溪市\ { \张月明\女\辽宁省沈阳市\ { \刘鹏远\女\陕西省西安市\ String[] colnames = { \姓名\性别\年龄\家庭住址\联系电话\ jTable1 = new JTable(cells, colnames); jTable1.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); jScrollPane1.getViewport().add(jTable1); add(jScrollPane1); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(400, 200); this.setResizable(false); this.setVisible(true); } }
class lx3_1_5_1 { public static void main(String args[]) { Win351 win = new Win351(); } }
2.通过JDK帮助文档,自学JTree组件的使用方法,并实现一个展示学校内部组织结构图的树型信息。 答案:
package pr3;
import javax.swing.JFrame;
import javax.swing.JScrollPane; import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode; class Win352 extends JFrame { JTree tree = null; DefaultMutableTreeNode root; public Win352() { super(\通讯录\ root = new DefaultMutableTreeNode(\学校组织结构\ DefaultMutableTreeNode node1 = new DefaultMutableTreeNode(\教务处\ DefaultMutableTreeNode node2 = new DefaultMutableTreeNode(\学生处\ DefaultMutableTreeNode node3 = new DefaultMutableTreeNode(\计算机学院\ DefaultMutableTreeNode node4 = new DefaultMutableTreeNode(\管理学院\ DefaultMutableTreeNode node5 = new DefaultMutableTreeNode(\财经学院\ DefaultMutableTreeNode node11 = new DefaultMutableTreeNode(\教材科\ DefaultMutableTreeNode node12 = new DefaultMutableTreeNode(\教务科\ DefaultMutableTreeNode node13 = new DefaultMutableTreeNode(\考务科\ DefaultMutableTreeNode node14 = new DefaultMutableTreeNode(\办公室\ node1.add(node11); node1.add(node12); node1.add(node13); node1.add(node14); root.add(node1); root.add(node2); root.add(node3); root.add(node4); root.add(node5); tree = new JTree(root); JScrollPane scrollPane = new JScrollPane(tree); add(scrollPane); setBounds(100, 100, 200, 300); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setVisible(true); } }
public class lx3_1_5_2 { public static void main(String[] args) { new Win352(); } }
任务二 数据处理
子任务一 数据的持久化存储 (一)简答题
1.说明ODBC数据源创建的步骤。 参见教材第220页。
2.Java数据库连接有哪两种方式,都是什么? 答案:JDBC-ODBC桥接器和JDBC专用驱动程序。 3.写出装载驱动程序的代码。 答案: try { Class.forName(\}
catch(ClassNotFoundException e){ }
4.写出连接数据库的代码。 答案:
try { con = DriverManager.getConnection(url, username, password); System.out.println(\数据库连接成功!\ } catch (SQLException e) { System.out.println(\数据库连接失败!\ } (三)编程题
创建一个图书数据库,包含书号、书名、作者、出版社、出版日期、数量等字段,分别用两种方法连接该数据库。 答案:
package pr3;
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class lx3_2_1_1 { public static void main(String args[]) { Connection con = null; String url = \ String username = \ String password = \ try { Class.forName(\ con = DriverManager.getConnection(url, username, password); System.out.println(\数据库连接成功!\ } catch (ClassNotFoundException e) { System.out.println(\驱动程序装载失败!\ } catch (SQLException e) { System.out.println(\数据库连接失败!\ } } }
子任务二 数据的查询 (二)编程题
对上一个任务中创建的图书数据库,写一个按照指定关键字查找图书信息的应用程序。 答案:
package pr3;
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement;
public class lx3_2_2_1 { public static void main(String[] args) { Connection con = null; Statement sql; ResultSet rs; String url = \ String username = \ String password = \ try { Class.forName(\ con = DriverManager.getConnection(url, username, password); sql = con.createStatement(); String sqlString = \人民邮电出版社'\ rs = sql.executeQuery(sqlString); while (rs.next()) { System.out.print(\书号:\ System.out.print(\书名:\ System.out.print(\作者:\ System.out.print(\出版社:\ System.out.println(\出版日期:\ } con.close(); } catch (ClassNotFoundException e) { System.out.println(\驱动程序装载失败!\ } catch (SQLException e) { System.out.println(\数据库操作失败!\ } } }
子任务三 数据的添加、修改和删除 (一)简答题
1.说明Statement和PreparedStatement的不同,都用在什么场合? 答案:
PreparedStatement 接口继承了Statement,PreparedStatement 实例包含已编译的 SQL 语句。并且可以带有一个或多个参数。由于 PreparedStatement 对象已预编译过,所以其执行速度要快于 Statement 对象。因此,多次执行的 SQL 语句经常创建为 PreparedStatement 对象,以提高效率。
通常情况下,在对运行效率要求不高的场合,可以使用简单的Statement对象。而对于相对复杂且需要多次执行的SQL语句,则应该使用PreparedStatement对象。 2.说明预编译的SQL语句的执行过程,如何使用? 答案:
(1)创建PreparedStatement对象。如:
PreparedStatement pstmt = con.prepareStatement(\(2)传递参数。使用setXXX方法传递SQL语句的参数。如: pstmt.setDouble(1,99); pstmt.setString(2,\
(3)执行SQL语句。使用execute()或executeQuery()等方法。 (二)编程题
使用预编译的SQL语句对图书信息进行查询、插入、修改和删除操作。 答案:
package pr3;
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException;
public class lx3_2_3_1 { public static void main(String[] args) { Connection con; PreparedStatement psm; ResultSet rs; String url = \ String username = \ String password = \
try { Class.forName(\ con = DriverManager.getConnection(url, username, password); String sql = \ psm = con.prepareStatement(sql); rs = psm.executeQuery(); while (rs.next()) { System.out.print(\书号:\ System.out.print(\书名:\ System.out.print(\作者:\ System.out.print(\出版社:\ System.out.println(\出版日期:\ } con.close(); } catch (SQLException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); e.printStackTrace(); } } }
项目四 局域网聊天系统(网络编程应用) 任务一 聊天系统的连接 (三)简答题
1.基于UDP的通信和基于TCP的通信有什么不同?
基于UDP的通信和基于TCP的协议不同,基于UDP的信息传递更快,但不提供可靠性保证。也就是说,数据在传输时,接收到的顺序可能和发送的顺序不同,甚至还可能丢失数据报。因此这是一种“不可靠的协议”,但由于其速度比TCP快得多,所以还是在很多应用中使用UDP。如果要求数据必须绝对准确地到达目的地,显然不能使用UDP来通信,但有时候人们需要较快地传输信息,并能容忍小的错误,就可以考虑使用UDP。
2.客户端的套接字对象和服务器端的套接字对象是如何进行通信的?
套接字是TCP/IP中的基本概念,主要用来实现将TCP/IP包发送到指定的IP地址。使用套接字(Socket)进行C/S 程序设计的一般连接过程是这样的:服务器(Server )端监听某个端口是否有连接请求,客户端(Client)向服务器端发出连接(Connect)请求,服务器端向客户端发回接受(Accept)消息,一个连接就建立起来了。
客户端要和服务器端建立连接并通信,一般需要进行如下几个步骤: (1)创建一个Socket对象。
(2)客户端套接字对象通过getInputStream()方法获得一个输入流,然后用这个输入流读取服务器放入“线路”的信息。
(3)客户端套接字对象通过getOutputStream()方法获得一个输出流,然后用这个输出流将信息写入“线路”。
任务二 聊天信息的发送和接收 (三)编程题
1.分别用继承和接口的方式,生成5个线程对象,每个对象循环打印1000次,要求从结果中证明线程的无序性。 答案: 第一种:
package pr4;
class Thread1 extends Thread { public void run() { for (int i = 1; i <= 100; i++) { System.out.println(this.getName()); } } }
public class lx4_2_1 { public static void main(String[] args) { Thread1 th1, th2, th3, th4, th5; th1 = new Thread1(); th2 = new Thread1(); th3 = new Thread1(); th4 = new Thread1(); th5 = new Thread1(); th1.start(); th2.start(); th3.start();
th4.start(); th5.start(); } }
第二种:
package pr4;
class Target implements Runnable { public void run() { for (int i = 1; i <= 100; i++) { System.out.println(i); } } }
public class lx4_2_1 { public static void main(String[] args) { Target tt = new Target(); Thread th1, th2, th3, th4, th5; th1 = new Thread(tt); th2 = new Thread(tt); th3 = new Thread(tt); th4 = new Thread(tt); th5 = new Thread(tt); th1.start(); th2.start(); th3.start(); th4.start(); th5.start(); } }
2.制作两个线程对象,要求用同步块的方式使第一个线程运行10次,然后将自己阻塞起来,唤醒第二个线程,第二个线程再运行10次,然后将自己阻塞起来,唤醒第一个线程??两个线程交替执行。 答案:
package pr4;
public class lx4_2_2 implements Runnable { Thread t1, t2; public lx4_2_2() { t1 = new Thread(this); t2 = new Thread(this); } public static void main(String args[]) { lx4_2_2 ee = new lx4_2_2(); ee.t2.start(); ee.t1.start(); } public synchronized void f() { // 同步方法 for (int i = 0; i < 10; i++) { System.out.println(Thread.currentThread().getName()); try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } } notifyAll(); try { wait(); } catch (InterruptedException e) { } } public void run() { while (true) { f(); } } }
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Java习题答案(5)在线全文阅读。
相关推荐: