JAVA课程设计报告书.pdf

上传人:1398****507 文档编号:80019953 上传时间:2023-03-22 格式:PDF 页数:44 大小:1.67MB
返回 下载 相关 举报
JAVA课程设计报告书.pdf_第1页
第1页 / 共44页
JAVA课程设计报告书.pdf_第2页
第2页 / 共44页
点击查看更多>>
资源描述

《JAVA课程设计报告书.pdf》由会员分享,可在线阅读,更多相关《JAVA课程设计报告书.pdf(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 淮 海 工 学 院 计算机工程学院 课程设计报告 设计名称:面向对象课程设计 选题名称:基于 C/S 的图书查询系统的实现 姓 名:学 号:专业班级:系(院):计算机工程学院 设计时间:2014.3.122014.4.10 设计地点:软件实验室、教室 指导教师评语:签名:年 月 日 成绩:1课程设计目的 面向对象程序设计是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用 Java 语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力。2课程

2、设计任务与要求:课程设计可选用 NetBeans、Eclipse、JBuilder 等作为开发平台以提高开发效率,尽可能熟练掌握其中一种集成开发环境。建议采用 UML 建模技术进行系统的分析设计,在 Visio 中画出系统用例图和类图,并将 UML 图复制到设计报告中。通过这次设计,要求掌握以下容:1)面向对象技术中的继承与多态(重载和覆盖)机制、各种修饰符的使用 2)类、包、接口的定义与使用 3)常用工具类与算法的实现(数组、向量、字符串、链表)4)Java 常用标准 GUI 组件及其事件处理 5)Java 的异常处理机制 6)Java 的数据库连接技术 7)Java 的多线程技术与动画制作

3、 8)Java 的网络编程 设计选题:基于 C/S 的图书查询系统的实现 包括客户端程序和服务器端程序。客户端程序向服务器端提出请求:比如提供图书的作者名,服务器端收到后,在数据库系统中查询到相关信息,发回客户端。3课程设计说明书 一、需求分析 基于 C/S 的图书查询系统的开发目的是为了提高查询效率。选用 Java 开发工具可以提高查询系统的移植性和兼容性。系统主要功能是实现读者对图书信息进行准确、快速查阅。因此系统主要针对以下四方面的需求进行设计:1.图书信息管理:涉及图书基本信息的添加、删除、修改;读者可以根据书名、作者、书号等关键字检索所需要的图书 2.读者信息管理:涉及读者基本信息的

4、录入、修改、删除;可以根据读者的证号、等信息查询到读者,读者登录到系统后能够修改自己的联系方式等信息 3.借书还书管理:实现图书的借还功能,根据读者借书证号和书号将图书借给读者,根据图书条形码归还图书。4.系统信息管理:涉及管理员用户与系统参数的管理和维护,如设置图书的借期、数量、超期每天罚款金额等 二、概要设计 1、系统结构 基于 C/S 的图书查询系统分为服务器和客户端两个部分。服务器负责监听客户请求,如提供图书的作者名等,并将查询的结果通过网络发回客户端。而客户端主要负责构建图形用户界面,编写事件处理方法,在事件处理的方法体中发送请求并接收服务器端传来的数据。系统采用 C/S 结构,利用

5、服务器和客户端的 Socket 通信机制完成信息的传递,数据库用来统计图书信息,因为主要涉及信息表格,所以选用 Access 实现数据库功能。因此系统总共由服务器、客户端和数据库三部分组成。2、各模块设计 a)服务器(1)创建一个等待连接的 ServerSocket 对象。(2)调用 ServerSocket 对象的 accept()方法侦听接受客户端的连接请求。当侦听到一个客户的请求时,连接成功,并返回一个 Socket 对象。(3)创建与 Socket 对象绑定的输入输出流,并建立相应的数据输入输出流。(4)通过数据输入输出流与客户端进行数据读写,完成双向通信。(5)当客户端断开连接时,关

6、闭各个流对象,结束通信。该部分主要由 Server、ServerThread 和 GetConnection3 个类组成。b)客户端(1)创建指定服务器上指定端口号的 Socket 对象。(2)创建与 Socket 对象绑定的输入输出流,并建立相应的数据输入输出流。(3)通过数据输入输出流与服务器端进行数据读写,完成双向通信。(4)通过调用 close()方法关闭与服务器端的连接,并关闭各个流对象,结束通信。该部分由 Client、login、BookRetrieve、SocketIO、add_book、del_book、add_user、view_user、del_user、ManagerF

7、rame10 个类组成。c)Access 数据库 建立 Access 数据库“图书信息”,在其中建立数据表“图书信息表”、“user”等表,分别用于存放图书信息、用户信息等。向表中录入适量数据,然后配置 ODBC 数据源“bookinfo”,与图书信息数据库建立关联,以便在程序过JDBC-ODBC 桥来访问数据。描述系统功能的用例图 二、详细设计 由于本系统将通过具有各功能的类来实现各方面需求以及各模块的作用,所以接下来先介绍各类的详细设计。1、各类设计 1)Server 类 登录 删除图书 添加图书 查询图书 管理员 一般用户 删除图书 增加用户 查询用户 服务器模块主要通过这个类来实现,因

8、此 Server 类为服务器端的主控类,包括 main()方法。为了能更好地与客户端建立连接和进行通信,需要在 main()方法中创建 ServerSocket 对象,来监听来自客户端的连接和通信请求。类图:2)ServerThread 类 即线程类 Thread 的子类,主要负责服务器端与客户端的通信连接和数据传输,必要时保存数据查询结果。A.ServerThread 类的主要成员变量 a)s 为 Socket 类的对象,其值从 Server 对象传入,该变量负责与客户端的通信连接。b)in 为 DataInputStream 的对象,用其 readUTF()方法接受来自客户端的数据。c)o

9、ut 为 DataOutputStream 的对象,用其 writeUTF()方法将数据发回客户端。d)con 为 Connection 的对象,用于建立与数据源的连接。e)rs 为 ResultSet 的对象,用于保存服务器端的数据查询结果。B.ServerThread 类的主要方法 a)ServerThread()为构造方法,用来初始化 s,并创建 in、out 和 con 成员变量。b)run()方法为 ServerThread 类实现多线程的方法。通过 Socket 对象 s,借助于输入、输出流对象in、out,完成接收客户端的数据请求,并在服务器端进行 JDBC 数据访问,然后将处理

10、结果发送给客户端。类图:3)GetConnection 类 利用该类对与数据源的连接信息进行封装。主要负责通过 JDBC 来建立数据库的连接。A.GetConnection 类的成员变量 a)url 是字符串变量,保存 JDBC 协议的 URL 信息。b)Driver 是字符串变量,保存 JDBC 驱动程序名称的信息。c)con 是 Connection 的对象,用于建立数据库的连接。B.GetConnection 类的方法 a)GetConnection()是构造方法,用来创建 con 对象。b)getConnection 类是成员方法,用来返回 con 对象。类图:4)SocketIO 类

11、 通过该类完成在客户端程序中与服务器端进行数据传输。A.SocketIO 类的成员变量 a)s 是 Socket 的对象,用于和服务器端进行套接字连接。b)in 是 DataInputStream 对象,用于读取服务器端发来的数据。c)out 是 DataOutputStream 对象,用于向服务器端发送数据。B.SocketIO 类的方法 a)SocketIO()是构造方法,用来创建 s、in、out 对象。b)getIn()是成员方法,用来返回 in 对象。c)getOut()是成员方法,用来返回 out 对象。类图:5)Client 类 该类是客户端的主控类,其中包括 main()方法,

12、在 main()方法中创建 login 对象 类图:6)login 类 该类为 JFrame 的子类,实现 ActionListener 和 ItemListener 接口。主要实现用户登录的交互界面。A.login 类的成员变量 a)lbl-pic 是用于显示图像的标签,lbl-uid、lbl-pwd 分别是提示输入账号和密码的标签。b)txt-uid 和 txt-pwd 分别用于输入账号和密码。c)btn-ok 和 btn-cannel 分别是“确定”和“取消”按钮。d)rb-user、rb-manager 是用于表示用户类型的单选钮,rb-group 用于对这两者进行成组。e)in 和

13、out 分别用于输入,输出流操作。f)userType 用来表示拥护的类型,即一般用户或管理员。B.login 类的方法 a)login()是构造方法,用来创建成员变量,并注册监听器。b)itemStateChanged()是 rb-user 和 rb-manager 的事件处理方法。c)actionPerformed()用来将登陆请求发送到服务器端验证,并接受服务器端的返回结果。类图:7)BookRetrieve 类 该类为 JFrame 的子类并实现 ActionListener 和 ItemListener 接口。主要负责图书信息的查询,如提供图书的作者名等。A.BookRetrieve

14、 类的成员变量 a)lbl-opt 和 lbl-info 用于显示提示信息。b)choice 是 Choice 类型的对象,用于存放查询选项,如“书名”、“作者”、“”等。c)showResult 是 JTextArea 类型的对象,用于显示服务器端返回的查询结果。d)choiceName 用于返回 choice 中的选中项。e)in 和 out 分别用于输入、输出流操作。f)send 按钮用于触发 actionPerformed 事件处理方法。B.BookRetrieve 类的方法 a)BookRetrieve()是构造方法,用来创建成员变量,并注册监听器。b)itemStateChange

15、d()是 choice 对象的事件处理方法。c)actionPerformed()是用来向服务器端发送图书查询请求,并接收服务器端的返回结果。类图:8)ManagerFrame 类 该类是 JFrame 的子类并实现 ActionListener 接口。用来实现交互界面的菜单栏。A.ManagerFrame 类的成员变量 a)lbl-pic 是用于显示图像的标签。b)menubar 是窗口的菜单条。c)menu-book 和 menu-user 是包含下级菜单项的菜单。d)mi-addbook、mi-delbook、mi-viewbook 是 menu-book 菜单的下级菜单项。e)mi-a

16、dduser、mi-deluser、mi-viewuser 是 menu-user 菜单的下级菜单项。B.ManagerFrame 类的方法 a)ManagerFrame()是构造方法,主要用来创建菜单条,菜单和菜单项,并注册动作监听器。b)actionPerformed()是菜单项被电击后的事件处理方法。类图:9)add-book 类 为 JFrame 的子类并实现 ActionListener 接口,实现用户添加图书时的界面需求。A.add-book 类的成员变量 a)lbl-indexno 等 6 个 JLabel 对象为显示提示信息的标签。b)txt-indexno 等 6 个 JTe

17、xtField 对象为提供信息输入的文本框。c)btn-ok 和 btn-cannel 两个按钮,触发 ActionPerformed 方法的执行。B.add-book 类的方法 a)add-book()是构造方法,用来创建标签、文本框和按钮对象,并注册动作监听器。b)actionPerformed()是按钮被点击后的事件处理方法。类图:10)add-user 类 为 JFrame 的子类并实现 ActionListener 和 ItemListener 接口,主要负责添加用户。A.add-user 类的成员变量 a)lbl-uid 等 7 个 JLabel 对象为显示提示信息的标签。b)tx

18、t-uid 等 4 个 JTextField 对象为提供信息输入的文本框。c)rb-male、rb-female 是对性别进行选择的单选按钮,而 sex 用于对这两者进行成组。d)cb-voca、cb-dept 是分别提供对职业和部门进行选择的组合框。e)btn-ok 和 btn-cannel 两个按钮,触发 ActionPerformed 方法的执行。f)str-sex、str-voca、str-dept 保存用户对于性别、职业和部门的选择信息。B.add-user 类的方法 a)adduser()是构造方法,用来创建标签、文本框、单选钮、组合框和按钮对象,并注册动作监听器。b)action

19、Performed()是按钮被点击后的事件处理方法。c)itemStateChanged()是单选钮和组合框中的选项改变时的事件处理方法。类图:11)del-book 类 为 JFrame 的子类并实现 ActionListener 接口,主要负责删除图书信息。A.del-book 类的成员变量 a)lbl-indexno 是提示输入图书索引号的的标签。b)txt-indexno 是用于输入图书索引号的文本框组件。c)btn-del 是按钮,点击后触发 actionEvent 事件。B.del-book 类的方法 a)del-book 是构造方法,用来初始化成员变量。b)actionPerfo

20、rmed()方法向服务器发出请求,并接受服务器端的返回结果。类图:12)view-user 类 因为与 BookRetrieve 类的设计相似,此处省略 类图:13)del-user 类 因为与 del-book 类的设计相似,此处省略 类图:各类间关系图:2、数据库的设计 建立 Access 数据库“图书信息”,在其中建立数据表“图书信息表”、“user”等表,分别用于存放图书信息、用户信息等。向表中录入适量数据,然后配置 ODBC 数据源“bookinfo”,与图书信息数据库建立关联,以便在程序过JDBC-ODBC 桥来访问数据。4课程设计成果 一、运行界面 运行界面主要可以分为登录主界面

21、、一般用户的图书查询界面以及管理员的工作窗口。1.登录主界面 可在一般用户和管理员间选择登录,在账号文本框中输入你的 id,在密码文本框中输入你的密码,单击登录按钮即可登录到相应界面。2.一般用户的图书查询界面 用户可根据自身需要选择需要查询的选项,并填入相关信息,单击查询按钮就可实现对相应书籍的查询。3.管理员的工作界面 管理员可以根据需要在菜单中选择相应的功能加以实现,以达到增加、删除、查看图书和用户的目的。二、测试结果 首先请原谅本人用于测试的相关数据之简少。Access 数据库,即图书信息数据库中包含三表,分别是图书信息表,user(一般用户信息表),manager(管理员信息表)。图

22、书信息表:user:manager:利用以上数据测试程序是否正常运行,主要包括登录、查询、添加、删除图书以及用户是否正常(由于在运行界面中已经测试登录完全符合要求,以下省略)。查询图书:添加图书:如图,图书已经添加成功,我们可以看到相应的数据库表中也添加了相应记录:删除图书:如图,可根据图书的索引号删除相关书籍,当然这也是本系统的不足之处,即没有实现按照其他关键字段进行删除的功能,日后定将改进。我们可以看到图书信息表中的相应记录已删除:查询用户:添加用户:如图,用户已经添加成功,我们可以看到相应的数据库表中也添加了相应记录:删除用户:如图,可根据用户的账号进行删除,当然这也是本系统的不足之处,

23、即没有实现按照其他关键字段进行删除的功能,日后定将改进。我们可以看到 user 中的相应记录已删除:可以看到,本系统已基本实现所要求的各项的功能。此处附上服务器端和客户端的 socket 连接以及信息交互:服务器端:客户端:三、主要代码 1)Server 类:/工作于服务器端 import java.io.*;import .*;/建立 socket 必须利用的包 public class Server/服务器端主控类,创建 ServerSocket 对象,在端口监听请求创建 Socket 对象进行通信 public static void main(String args)ServerSoc

24、ket ss=null;Socket client=null;while(true)System.out.println(服务器等待连接.);try ss=new ServerSocket(8888);/创建 ServerSocket 对象,在端口监听来自客户端的连接请求 catch(IOException e)/异常处理 try client=ss.accept();/创建 Socket 对象,方便与客户端进行通信 new ServerThread(client).start();/创建服务器端核心对象 ServerThread catch(Exception e)System.out.pr

25、intln(客户端离开!);2)ServerThread 类/工作于服务器端 import java.io.*;import .*;import java.sql.*;/操作数据库的包 import java.util.*;/工具类和集合类 public class ServerThread extends Thread/该类为服务器端的核心类,通过 Server 对象传递过来的 Server对象值,借助于 DataInputStream 对象和 DataOutputStream 对象提供的输入输出技术,根据客户端请求在服务器端进行相应的 JDBC 访问,并将处理结果返回 Socket s=n

26、ull;String str=null;DataInputStream in=null;DataOutputStream out=null;Connection con=null;ResultSet rs;public ServerThread(Socket s)this.s=s;try if(s!=null)con=new GetConnection().getConnection();in=new DataInputStream(s.getInputStream();out=new DataOutputStream(s.getOutputStream();catch(IOException

27、 e)public void run()try str=in.readUTF();/读取客户端的数据,str 通过“:”进行分隔 catch(IOException e1)/str 的起始字符子串决定了客户端的请求类型 if(str.startsWith(图书查询)/客户端发来的图书查询请求 String choiceName=null,inputText=null;System.out.println(客户发来图书查询请求);try StringTokenizer fenxi=new StringTokenizer(str,:);if(fenxi.hasMoreTokens()String

28、reqType=fenxi.nextToken();/取出请求类型 System.out.println(reqType);if(fenxi.hasMoreTokens()/取出查询的字段名 choiceName=fenxi.nextToken();System.out.println(choiceName);if(fenxi.hasMoreTokens()/取出查询的字段值 inputText=fenxi.nextToken();System.out.println(inputText);if(choiceName.equals(作者)/按作者字段查询 PreparedStatement p

29、s;ps=con.prepareStatement(select*from 图书信息表 where 作者 like?order by 索引号);ps.setString(1,%+inputText+%);rs=ps.executeQuery();if(choiceName.equals(书名)/按书名字段查询 PreparedStatement ps;ps=con.prepareStatement(select*from 图书信息表 where 书名 like?order by 索引号);ps.setString(1,%+inputText+%);rs=ps.executeQuery();if

30、(choiceName.equals()/按字段查询 PreparedStatement ps;ps=con.prepareStatement(select*from 图书信息表 where like?order by 索引号);ps.setString(1,%+inputText+%);rs=ps.executeQuery();if(choiceName.equals(索引号)/按索引号字段查询 PreparedStatement ps;ps=con.prepareStatement(select*from 图书信息表 where 索引号=?);ps.setString(1,inputTex

31、t);rs=ps.executeQuery();String backStr=;while(rs.next()/取出查询结果,保存到 backStr 中 String author=rs.getString(1);String name=rs.getString(2);String publish=rs.getString(3);String publishTime=rs.getString(4);String price=rs.getString(5);String indexno=rs.getString(6);backStr+=n 作者:+author+;书名:+name+;:+publ

32、ish+;出版时间:+publishTime+;定价:+price+;索引号:+indexno;out.writeUTF(backStr);/将查询结果发回给客户端 catch(Exception e)else if(str.startsWith(一般用户)/一般用户登录请求 try StringTokenizer fenxi=new StringTokenizer(str,:);int i=0,number=fenxi.countTokens();String receiveStr=new Stringnumber;while(fenxi.hasMoreTokens()receiveStri

33、=fenxi.nextToken();System.out.println(receiveStri);i+;PreparedStatement ps;ps=con.prepareStatement(select*from user where id=?and pwd=?);ps.setString(1,receiveStr1);ps.setString(2,receiveStr2);rs=ps.executeQuery();if(rs.next()out.writeUTF(登录成功);else out.writeUTF(登录失败);catch(Exception e)else if(str.s

34、tartsWith(管理员)/管理员登录请求 try StringTokenizer fenxi=new StringTokenizer(str,:);int i=0,number=fenxi.countTokens();String receiveStr=new Stringnumber;while(fenxi.hasMoreTokens()receiveStri=fenxi.nextToken();System.out.println(receiveStri);i+;PreparedStatement ps;ps=con.prepareStatement(select*from manag

35、er where id=?and pwd=?);ps.setString(1,receiveStr1);ps.setString(2,receiveStr2);rs=ps.executeQuery();if(rs.next()out.writeUTF(登录成功);else out.writeUTF(登录失败);catch(Exception e)else if(str.startsWith(添加图书)/客户端发来的添加图书请求 System.out.println(客户端发来添加图书请求);try StringTokenizer fenxi=new StringTokenizer(str,:)

36、;int i=0,number=fenxi.countTokens();String receiveStr=new Stringnumber;while(fenxi.hasMoreTokens()receiveStri=fenxi.nextToken();System.out.println(receiveStri);i+;PreparedStatement ps;ps=con.prepareStatement(insert into 图书信息表 values(?,?,?,?,?,?);ps.setString(1,receiveStr1);ps.setString(2,receiveStr2

37、);ps.setString(3,receiveStr3);ps.setString(4,receiveStr4);ps.setString(5,receiveStr5);ps.setString(6,receiveStr6);int len=ps.executeUpdate();if(len=1)out.writeUTF(添加成功);elseout.writeUTF(添加失败);catch(Exception e)else if(str.startsWith(添加一般用户)/客户端发来的添加用户请求 System.out.println(客户端发来添加用户请求);try StringToke

38、nizer fenxi=new StringTokenizer(str,:);int i=0,number=fenxi.countTokens();String receiveStr=new Stringnumber;while(fenxi.hasMoreTokens()receiveStri=fenxi.nextToken();System.out.println(receiveStri);i+;PreparedStatement ps;ps=con.prepareStatement(insert into user values(?,?,?,?,?,?);ps.setString(1,re

39、ceiveStr1);ps.setString(2,receiveStr2);ps.setString(3,receiveStr3);ps.setString(4,receiveStr4);ps.setString(5,receiveStr5);ps.setString(6,receiveStr6);int len=ps.executeUpdate();if(len=1)out.writeUTF(添加成功);elseout.writeUTF(添加失败);catch(Exception e)else if(str.startsWith(删除图书)/客户端发来的删除图书请求 System.out.

40、println(客户端发来删除图书请求);try StringTokenizer fenxi=new StringTokenizer(str,:);int i=0,number=fenxi.countTokens();String receiveStr=new Stringnumber;while(fenxi.hasMoreTokens()receiveStri=fenxi.nextToken();System.out.println(receiveStri);i+;PreparedStatement ps;ps=con.prepareStatement(delete*from 图书信息表 w

41、here 索引号=?);ps.setString(1,receiveStr1);int len=ps.executeUpdate();if(len=1)out.writeUTF(删除成功);elseout.writeUTF(删除失败);catch(Exception e)else if(str.startsWith(删除用户)/客户端发来的删除用户请求 System.out.println(客户端发来删除用户请求);try StringTokenizer fenxi=new StringTokenizer(str,:);int i=0,number=fenxi.countTokens();St

42、ring receiveStr=new Stringnumber;while(fenxi.hasMoreTokens()receiveStri=fenxi.nextToken();System.out.println(receiveStri);i+;PreparedStatement ps;ps=con.prepareStatement(delete*from user where id=?);ps.setString(1,receiveStr1);int len=ps.executeUpdate();if(len=1)out.writeUTF(删除成功);elseout.writeUTF(删

43、除失败);catch(Exception e)else if(str.startsWith(用户查询)/客户端发来的用户查询请求 String choiceName=null,inputText=null;System.out.println(客户发来用户查询请求);try StringTokenizer fenxi=new StringTokenizer(str,:);if(fenxi.hasMoreTokens()String reqType=fenxi.nextToken();/取出请求类型 System.out.println(reqType);if(fenxi.hasMoreToke

44、ns()/取出查询的字段名 choiceName=fenxi.nextToken();System.out.println(choiceName);if(fenxi.hasMoreTokens()/取出查询的字段值 inputText=fenxi.nextToken();System.out.println(inputText);if(choiceName.equals()/按字段查询 PreparedStatement ps;ps=con.prepareStatement(select*from user where name like?order by id);ps.setString(1

45、,%+inputText+%);rs=ps.executeQuery();if(choiceName.equals(账号)/按账号字段查询 PreparedStatement ps;ps=con.prepareStatement(select*from user where id=?);ps.setString(1,inputText);rs=ps.executeQuery();String backStr=;while(rs.next()/取出查询结果,保存到 backStr 中 String id=rs.getString(1);String pwd=rs.getString(2);Str

46、ing name=rs.getString(3);String sex=rs.getString(4);String voca=rs.getString(5);String dept=rs.getString(6);backStr+=n 账号:+id+;密码:+pwd+;:+name+;性别:+sex+;职业:+voca+;部门:+dept;out.writeUTF(backStr);/将查询结果发回给客户端 catch(Exception e)3)GetConnection 类/工作于服务器端 import java.sql.*;public class GetConnection/将与数据

47、库连接有关的属性如 URL,Driver 和方法进行封装(保证使用者只是对于相关方法和属性进行读取)private final String url=jdbc:odbc:bookinfo;private final String Driver=sun.jdbc.odbc.JdbcOdbcDriver;private Connection con=null;public GetConnection()try Class.forName(Driver);con=DriverManager.getConnection(jdbc:odbc:mydata,);catch(ClassNotFoundExc

48、eption e)e.printStackTrace();catch(SQLException e)e.printStackTrace();public Connection getConnection()return con;4)SocketIO 类/工作于客户端 import java.io.*;import .*;public class SocketIO/对 socket 对象和 DataInputStream,DataOutputStream 对象进行封装,创建 Socket对象获得输入输出流对象 in 和 out public Socket s=null;public DataIn

49、putStream in=null;public DataOutputStream out=null;public SocketIO()try s=new Socket(localhost,8888);/创建 socket 对象来获取输入输出流对象 in 和 out in=new DataInputStream(s.getInputStream();out=new DataOutputStream(s.getOutputStream();catch(UnknownHostException e)e.printStackTrace();catch(IOException e)e.printSta

50、ckTrace();public DataInputStream getIn()/借助 in 读取从服务器端传来的数据 return in;public DataOutputStream getOut()/借助 out 向服务器端发送相应类型的请求和数据 return out;5)Client 类/工作于客户端 public class Client/客户端主控类,创建 login 对象生成一般用户和管理员的登陆界面 public static void main(String args)new login().setVisible(true);/创建 login 对象来生成一般用户和管理员的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁