Java网络聊天室课程设计方案打印 .docx
精品名师归纳总结课程设计任务书题 目:JAVA 谈天室课程设计学号 2姓名专业运算机科学与技术课程 java 网络编程精解指导老师职称完成时间: 2021 年 6 月 2021 年 7 月运算机科学系制说明一、课程设计写作框架 (仅供参考) 摘 要目 录正 文1、 基本设计任务及要求、所用仪器设备。2、 总体设计方案及主要设计原理。3、 实现技术及源程序代码。4、 测试及分析。5、 终止语(心得体会、改进方向)。可编辑资料 - - - 欢迎下载精品名师归纳总结参考文献二、写作要求:课程设计写作要求论点明确、论据充分、说明透彻,语言精确恰当,书面洁净,字迹工整。课程设计的篇幅本科一般为4000 字左右,专科一般为 3000 字左右。课程设计的任务和详细要求该工程实训的目的主要是对所学网络学问进行梳理、巩固和提高。通过工程实训熟识系统开发的基本流程,把握系统开发的各个环节的要点,培养系统分析和设计的才能,锤炼团队合作精神。详细要求:课程设计任务下达后,争辩系统的功能、性能和界面要求,详细支配如下:1、下达工程实训任务,进行需求分析,形成需求分析报告。2、进行总体设计和详细设计,形成详细设计报告,进行系统模块开发。3、全部上机进行系统模块开发和模块测试。4、系统集成和集成测试,撰写系统操作说明书和工程实训总结报告。指导老师签字:日 期:课程设计任务书及成果评定可编辑资料 - - - 欢迎下载精品名师归纳总结指导老师评语成 绩: 指导老师签字:日 期:课程设计所需软件、硬件等软件: Windows 2000 以上的操作系统、 JDK 开发包、 eclipse开发环境硬件:机房台式运算机课程设计进度方案起至日期工作内容备注可编辑资料 - - - 欢迎下载精品名师归纳总结2021.5.282021.6.52021.6.62021.6.18需求分析及初步设计阶段, 依据相应功能设计出各类所用到的方法及数据类型对各个界面和服务器进行调整及测试完善工作。参考文献、资料索引可编辑资料 - - - 欢迎下载精品名师归纳总结序号文献、资料名称编著者出版单位1. Java2 有用教程(第三版 ) 编著者 耿祥义 张跃平 清华高校出版社 20062. Java 编程设计编著者刘海杰 中国铁道出版社 20063. Java 网络编程精解编著者 孙卫琴电子工业出版社可编辑资料 - - - 欢迎下载精品名师归纳总结摘要通过此工程实训 JAVA谈天室的设计,实践、总结、回忆了网络编程思想以及编程方法,并通过编写程序来把握Java 语言编程技巧,将学习到的学问融会贯穿,同时提高调试程序的才能,养成良好的编程习惯,并增强对程序设计整体思路的把握,理论与时间相结合。本文的主要工作集中在:该课程基于C/S 模式,客户机向服务器发谈天请求,服务器应答并能显示客户机发过来的信息。当用户谈天时,将当前用户名、谈天对象、谈天,内容、谈天语气和是否私聊进行封装,然后与服务器建立 Socket连接,再用对象输出流包装 Socket 的输出流将谈天信息对象发送给服务器端。当用户发送谈天信息时,服务端将会收到客户端用Socket 传输过来的谈天信息对象,然后将其强制转换为Chat 对象,接收用户的谈天信息是由多线程技术实现的,由于客户端必需时时关注更新服务器上是否有最新消息,当每次用 户接收到谈天信息后将会开头分析谈天信息然后将适合自己的信息人性化的显 示在谈天信息界面上。关键字: java 。QQ谈天室, eclipseJAVA 谈天室课程设计前言:随着运算机网络日新月异的进展,人们的沟通方式越来越多,传统的沟通方式,如:信件、电报、电话等已经难以中意人们的沟通要求,在互联网上即时的和好友取得联系,已经成为当今社会人们主流的联系方式。因此,两台运算机之间进行即时通讯、发送文件等沟通方式已经成为必定潮流。因此显现了等谈天工具,然而等谈天工具虽然便利、有用,但是,消遣功能太 多,有许多吸引人的消遣功能,从确定程度上来说,是一种消遣工具,不能作为用于即时通讯、文件共享的专用工具。目前,用于实现单一的即时通讯、文件共享的软件实在太少,而且,它们中大部分都是确定的C/S 模式,对远程服务器有特殊大的依靠性,没有完全实现点对点的沟通。为此,我们准备开发一个专用于实现两台运算机之间即时通讯、文件共享的软件,以便利两台运算机之间信息的沟通。本软件属于点对点连接的,在连接并通信时,特殊是近程的 即时通讯,完全的脱离了远程的服务器,防止了和远程服务器连接时过多的浪 费网络资源。并且防止了服务器忙或与服务器无法连接时,铺张过多时间用于 和服务器建立连接!因此,这个软件是极具适应性和有用性的即时通讯软件.一、课程设计的目的可编辑资料 - - - 欢迎下载精品名师归纳总结进一步培养同学面对对象程序设计的思想,加深对面对对象程序设计四大 特性的懂得,针对 JAVA语言中的重点和难点内容进行训练,独立完成有确定工作量的程序设计任务,同时强调好的程序设计风格。二、系统分析与设计系统可以接受任何一种流行的,Java支持的数据库,本系统接受了Microsoft公司的 Access 作为后台数据库。通过对现在流行的一些Icq的参考,建立数据库,名为chart ,数据库共建立一个表,表中基本信息包括编号, uername,password。(1) 用户的基本信息表 表名 userlilst序号字段名含义数据类型NULL1 编号用户的编号 int2 username用户名文本3 password用户的密码文本其中编号字段为自动增加。 服务器端程序如下 :服务器与客户间通过套接口 SocketTCP 连接。在 java 中使用套接口相当简洁, JavaAPI 为处理套接口的通信供应了一个类.Socket., 使得编写网络应用程序相对简洁服务器接受多线程以中意多用户的请求,通过 JDBC与后台数据库连接,并通过创建一个ServerSocket对象来监听来自客户的连接请求,默认端口为8888,然后无限循环调用accept方法接受客户程序的连接。主要代码如下:public static int port=8888。ServerSocket server。Socket client=null。BufferedReader cin=null。PrintWriter cout=null。Thread chartThread=null。JButton runButton=new JButton"运行" 。JButton stopButton=new JButton"停止" 。JButton exitButton=new JButton"退出" 。JButton messageButton=new JButton"发送消息 " 。JTextField serMessage=new JTextField"",25。JPanel p1=new JPanel。JPanel p2=new JPanel。 JScrollPane messageScrollPane。JTextArea message=new JTextArea。boolean isRunning=false。可编辑资料 - - - 欢迎下载精品名师归纳总结public Serversuper" 网络谈天服务器 " 。p1.addrunButton。 p1.addstopButton。 p1.addexitButton。runButton.addActionListenerthis。stopButton.addActionListenerthis。exitButton.addActionListenerthis。messageButton.addActionListenerthis。p2.addserMessage 。p2.addmessageButton 。messageScrollPane=newJScrollPanemessage,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEE。DEDthis.getContentPane.addp1,"North"。this.getContentPane.addp2,"South"。this.getContentPane.addmessageScrollPane,"Center"。this.setSize400,300。this.setDefaultCloseOperationJFrame.EXIT_ON_CLOSE。this.setVisibletrue。public void actionPerformedActionEvent eife.getSource=runButtonchartThread=new Threadthis。chartThread.start。runButton.setVisiblefalse。message.append" 服务器启动 "+"n"。else if e.getSource=stopButton可编辑资料 - - - 欢迎下载精品名师归纳总结trychartThread=null。runButton.setVisibletrue。ifcout.=null cout.println"stop"。ifserver.=nullserver.close。catchException exp message.append" 服务器停止 "+"n"。可编辑资料 - - - 欢迎下载精品名师归纳总结else ife.getSource=exitButtonchartThread=null。ifcout.=null cout.println"exit"。System.exit0。else if e.getSource=messageButtonifchartThread.=null可编辑资料 - - - 欢迎下载精品名师归纳总结sendMessageserMessage.getText。message.append"发送:"+serMessage.getText+"n"。public void runtryserver=new ServerSocketport whilechartThread.=null。client=server.accept。cin=newBufferedReadernewInputStreamReaderclient.getInputStream。cout=new PrintWriterclient.getOutputStream,true。String username。String password。username=cin.readLine。password=cin.readLine。ifuserOKusername,passwordmessage.append" 客户:"+username+" 进入n" 。cout.println"ok"。String aline。whilealine=cin.readLine .=null&&chartThread.=nullifaline.equals"exit"message.append" 客户: "+username+"已退出.n"。break 。elsemessage.appendusername+"说:"+aline+"n"。else cout.println"error"。cin.close。cout.close。client.close。server.close。catchException eSystem.out.printlne。可编辑资料 - - - 欢迎下载精品名师归纳总结public boolean userOKString username,String passwordboolean ok=false。try /加载驱动程序Class.forName"sun.jdbc.odbc.JdbcOdbcDriver"。catch ClassNotFoundException e /驱动程序加载不成功,打印错误信息并退出System.out.println"Can not find driver " 。System.exit -1。Connection con。try /获得 jdbc连接con = DriverManager.getConnection"jdbc:odbc:TrioMotors", "user", ""。/创建 Statement 对象Statement stmt = con.createStatement。/得到查询结果集String sql = "select * from userlist where username='"+ username + "'"。ResultSet rs = stmt.executeQuerysql。/列印结果集whilers.nextString ps = rs.getString"password"。if ps.equalspassword / 验证通过ok=true 。/关闭数据库连接rs.close。stmt.close。con.close。catch SQLException sqe sqe.printStackTrace。return ok。可编辑资料 - - - 欢迎下载精品名师归纳总结public void sendMessageString messagecout.printlnmessage。public static void mainString argsServer my=new Server。 客户端程序如下 :客户通过 SocketInetAddress,port建立与服务器的连接。服务器与客户都通过构造 BufferedReader,PrintWriter来建立输入输出流,然后双方通过该输入输出流来相互传递信息,一旦收到客户方的连接请求,服 务器 accept 方法返回一个新建的Socket 对象。客户端然后向服务器发送消息,比如登录,服务器收到来自客户的请求后,针对不同的消息处理请求 , 虽然 UDP不行靠但是对于 icq 牢靠性并不太重要,而且 UDP快速,所以客户间发送信息通过 UDP。用户登录时通过类 DatagramPacket和 DatagramSocket 创建 UDP包括其本的接受端口以及发送端口。主要代码如下:publicclassClientextendsJFrameimplements ActionListener,Runnablepublic static int port=8888。ServerSocket server。Socket client。BufferedReader cin。PrintWriter cout。private JLabel userlabel=new JLabel"用户名" 。private JLabel passwordlabel=new JLabel"密码" 。private JTextField username=new JTextField10。private JPasswordField password=new JPasswordField10。private JButton loginButton=new JButton"登录" 。private JButton exitButton=new JButton"退出" 。private JPanel p1=new JPanel。JButton messageButton=new JButton" 发送消息 " 。JTextField clientMessage=new JTextField"",25。JPanel p2=new JPanel 。JScrollPane messageScrollPane。JTextArea message=new JTextArea。Thread chart=null。可编辑资料 - - - 欢迎下载精品名师归纳总结public Clientsuper" 网络谈天客户端 " 。p1.adduserlabel。p1.addusername 。p1.addpasswordlabel。p1.addpassword 。p1.addloginButton。p1.addexitButton。loginButton.addActionListenerthis。exitButton.addActionListenerthis。this.getContentPane.addp1,"North"。p2.addclientMessage。p2.addmessageButton 。messageButton.addActionListenerthis。messageScrollPane=newJScrollPanemessage,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEE。DEDthis.getContentPane.addp2,"South"。this.getContentPane.addmessageScrollPane,"Center"。this.setSize500,300。this.setDefaultCloseOperationJFrame.EXIT_ON_CLOSE。public void actionPerformedActionEvent eife.getSource=loginButtonString pword=new Stringpassword.getPassword。ifloginServerusername.getText,pword可编辑资料 - - - 欢迎下载精品名师归纳总结elsechart=new Threadthis。chart.start。JOptionPane.showMessageDialognull,"user name可编辑资料 - - - 欢迎下载精品名师归纳总结or password error."。else ife.getSource=exitButtoncout.println"exit"。chart=null。if e.getSource=messageButtonsendMessageclientMessage.getText。message.append"发送:"+clientMessage.getText+"n"。可编辑资料 - - - 欢迎下载精品名师归纳总结public boolean loginServerString username,String passwordtryclient=new Socket"localhost",8888。cin=newBufferedReadernewInputStreamReaderclient.getInputStream。cout=new PrintWriterclient.getOutputStream,true。cout.printlnusername。cout.printlnpassword。String readLine=cin.readLine。ifreadLine.equals"ok"message.append" 连接到服务器! n" 。return true。catchException ereturn false。public void run可编辑资料 - - - 欢迎下载精品名师归纳总结tryString aline。whilechart.=null&&aline=cin.readLine .=nullifaline.equals"exit"|aline.equals"stop"可编辑资料 - - - 欢迎下载精品名师归纳总结message.append" 服务器已断开 . 重新登录! n" 。break 。else message.append"服务器说: "+aline+"n"。Thread.sleep200。cin.close。cout.close。client.close。catchException epublic void sendMessageString mescout.printlnmes。可编辑资料 - - - 欢迎下载精品名师归纳总结public static void mainString argsClient my=new Client。my.setVisibletrue 。三、界面设计图图 1.1 :服务器端页面图 1.2 :程序运行界面可编辑资料 - - - 欢迎下载精品名师归纳总结图 1.4:登陆页面图 1.3 :注册页面图 1.5 :网友 1 页面可编辑资料 - - - 欢迎下载精品名师归纳总结图 1.6 :网友 2 页面图 1.7 :网络涂鸦板颜色面板可编辑资料 - - - 欢迎下载精品名师归纳总结可编辑资料 - - - 欢迎下载精品名师归纳总结四、运行调试与分析争辩图 1.9 :数据库页面可编辑资料 - - - 欢迎下载精品名师归纳总结图 1.8 :谈天记录面板1. 服务器 端: ( Windows 平台 ) 首 先应有 java环境 jdk,建议 接受jdk1.5 。然后安装Access 数据库,建立数据库chart ,并且建立表userlist。然后在把握面板中的ODBC数据源中设置用户DSN 数据源TrioMotors建立与数据库的连接。然后运行程序即可。2. 客户端:只要有有java环境 jdk就可以建议 jdk1.5 。然后运行程序及可。总结可编辑资料 - - - 欢迎下载精品名师归纳总结该课程设计对于进一步培养面对对象程序设计的思想有很大的帮忙,同时加深了对面对对象程序设计四大特性的懂得,由于才能有限,仍存在着许多不足之处。如: 写代码切勿急躁。这个程序是对我把握学问娴熟度的巨大挑战。写代码过程中经常显现到处报错的情形,经常要花好长时间查找错误。有时只是单纯的语法错误就会困惑好久。 考虑问题要全面,要有整体意识。由于之前写的程序都是单纯的具有一项功能,各部分几件的协作不是很关键,而之一程序包含谈天涂鸦等花样,假如和谐不好,就会顾此失彼。 同学们之间的相互的帮忙也对软件的完成起了很大作用。编写这些代码需要许多方面的学问,一个人要想全面把握有些困难。当我山穷水尽得时候常找同学过来帮忙调试。 实践要比理论难得多。有一个好想法,假如不去实践,永久不知道它正不正确。而这个过程中会遇到各种各样的问题,我也在不断提出与解决问题过程中得到提高。这些都是需要完善的的方,该系统离实际使用也仍有确定的距离,需要我木们不断的进行补充和完善。在这次论文设计中学会了同学之间的相互帮忙, 增强合作意识,同时要感谢王琳琳老师的帮忙和支持,感谢枣庄学校给我们供应良好的上机环境。可编辑资料 - - - 欢迎下载