欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    Java聊天工具课程设计报告.docx

    • 资源ID:2122836       资源大小:349.43KB        全文页数:28页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Java聊天工具课程设计报告.docx

    1、Java聊天工具课程设计报告Java网络编程实践( )课程设计说明书课程名称:Java网络编程课程设计_题目:_基于C/S的班级即时通讯工具姓名:于明帅 朱烨枫_学号:201105407 201105423教学班号:软件工程1101班指导教师:王 小 刚_兰州交通大学软件科学与工程系 二一二年 十二 月 二十七 日Java网络编程实践任务书目的:熟悉JAVA 语法,掌握图形化界面、多线程、网络、数据库等综合编程,掌握用编程语言开发由若干功能组成的小型项目的基本流程,增强动手实践能力,巩固和加强书本知识的学习,体会JAVA编程的特点。题目 1:基于C/S的班级即时通讯工具(2人)要求:1 C/S

    2、模式,基于Socket实现,服务器端用多线程来处理同时多个客户端连接。2 数据存储:服务器端存储最少一个班级的信息;最好多个班级,主要存储班级若干学生的基本信息。用数据库存储。下面所有功能只考虑一个班是基本实现,考虑多个班是拓展实现。3 界面:GUI界面,友好直观,布局合理,方便的功能入口。4 功能:1) 登陆 输入用户名和密码;用户名是学号,有初始密码,例如111111;2) 登陆验证 根据服务器端存储的班级信息,对输入的用户进行验证,看是否存在于该班(只考虑一个班的情况)。或是否是某个班的学生(多个班的情况)。验证通过进入主界面,否则给出错误提示。3) 主界面列出该学生好友列表(同班级同学

    3、默认全是该生好友,如果是多个班则可以添加别班好友并经对方批准)。4) 即时聊天,选中某个好友,双击打开窗口聊天。如果不在线则服务器等对方上线后转发(此功能属拓展实现)。5) 可以修改自己的登陆密码。6) 题目 2:基于C/S的班级聊天室(群聊)工具(2人) 要求:1. C/S模式,基于Socket实现,服务器端用多线程来处理同时多个客户端连接。2. 数据存储:服务器端存储一个班级的信息;主要存储班级若干学生的基本信息。用数据库存储。3. 界面:GUI界面,友好直观,布局合理,方便的功能入口。4. 功能:a) 登陆 输入用户名和密码;用户名是学号,有初始密码,例如111111;b) 登陆验证 根

    4、据服务器端存储的班级信息,对输入的用户进行验证,看是否存在于该班。验证通过进入主界面,否则给出错误提示。c) 主界面应划分几个部分,至少有聊天室窗口部分(显示多人的聊天信息),自身发送聊天信息的窗口部分,聊天室成员列表部分,最好实现在线用户区别显示(此功能属拓展实现)等。进入主界面就可以参与群聊。d) 可以修改自己的登陆密码。题目 3:基于C/S的学生信息管理(1人)实现应用,可以通过网络在客户端对存放在服务器端的学生信息表(至少包含学号、姓名、性别、年龄、籍贯等字段)学生纪录增、删、改、查,并返回结果。要能通过菜单选择功能。基于Socket,多客户端使用多线程,以能同时从多个客户端执行功能。

    5、必须提供友好直观、布局合理的图形界面选择功能、显示信息和填写修改信息。成员名单:于明帅、朱烨枫分工列表登陆界面于明帅修改密码界面朱烨枫聊天窗口界面于明帅服务器代码朱烨枫连接数据库朱烨枫课程设计报告于明帅1、项目简述和目的 聊天室做为即时通讯的一种,即时通讯(Instant Messenger,简称IM)软件可以说是目前我国上网用户使用率最高的软件,无论是老牌的ICQ,还是国内用户量第一的腾讯QQ,以及微软的MSN Messenger都是大众关注的焦点,它们能让你迅速地在网上找到你的朋友或工作伙伴,可以实时交谈和互传信息。而且,现在不少IM软件还集成了数据交换、语音聊天、网络会议、电子邮件的功能

    6、 。要求:1 C/S模式,基于Socket实现,服务器端用多线程来处理同时多个客户端连接。2 数据存储:服务器端存储最少一个班级的信息;最好多个班级,主要存储班级若干学生的基本信息。用数据库存储。下面所有功能只考虑一个班是基本实现,考虑多个班是拓展实现。3 界面:GUI界面,友好直观,布局合理,方便的功能入口。4 功能:1) 登陆 输入用户名和密码;用户名是学号,有初始密码,例如111111;2) 登陆验证 根据服务器端存储的班级信息,对输入的用户进行验证,看是否存在于该班(只考虑一个班的情况)。或是否是某个班的学生(多个班的情况)。验证通过进入主界面,否则给出错误提示。3) 主界面列出该学生

    7、好友列表(同班级同学默认全是该生好友,如果是多个班则可以添加别班好友并经对方批准)。4) 即时聊天,选中某个好友,双击打开窗口聊天。如果不在线则服务器等对方上线后转发(此功能属拓展实现)。5) 可以修改自己的登陆密码。 目的:通过此项目实训JAVA聊天室的设计,实践、总结、回顾了网络编程思想以及编程方法,并通过编写程序来掌握Java语言编程技巧,将学习到的知识融会贯通,同时提高调试程序的能力,养成良好的编程习惯,并增强对程序设计整体思路的把握,理论与时间相结合。本文的主要工作集中在:该课程基于C/S模式,客户机向服务器发聊天请求,服务器应答并能显示客户机发过来的信息。当用户聊天时,将当前用户名

    8、、聊天对象、聊天,内容、聊天语气和是否私聊进行封装,然后与服务器建立Socket连接,再用对象输出流包装Socket的输出流将聊天信息对象发送给服务器端。当用户发送聊天信息时,服务端将会收到客户端用Socket传输过来的聊天信息对象,然后将其强制转换为Chat对象,接收用户的聊天信息是由多线程技术实现的,因为客户端必须时时关注更新服务器上是否有最新消息,当每次用户接收到聊天信息后将会开始分析聊天信息然后将适合自己的信息人性化地显示在聊天信息界面上。进一步培养学生面向对象程序设计的思想,加深对面向对象程序设计四大特性的理解,针对JAVA语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设

    9、计任务,同时强调好的程序设计风格。2、解题基本思路当用户聊天时,将当前用户名、聊天对象、聊天内容、聊天语气和是否私聊进行封装,然后与服务器建立Socket连接,再用对象输出流包装Socket的输出流将聊天信息对象发送给服务器端。当用户发送聊天信息时,服务端将会收到客户端用Socket传输过来的聊天信息对象,然后将其强制转换为Chat对象,并将本次用户的聊天信息对象添加到聊天对象集Message中,以供所有聊天用户访问,具体实现过程如图3-6所示。 接收用户的聊天信息是由多线程技术实现的,因为客户端必须时时关注更新服务器上是否有最新消息,在本程序中设定的是3秒刷新服务器一次,如果间隔时间太短将会

    10、增加客户端与服务器端的通信负担,而间隔时间长就会让人感觉没有时效性,所以经过权衡后认为3秒最佳,因为每个用户都不可能在3秒内连续发送信息。 当每次用户接收到聊天信息后将会开始分析聊天信息然后将适合自己的信息人性化地显示在聊天信息界面上。3、分析和设计本系统主要通过客户端,服务器端来体现聊天系统的基本功能。(1)服务器端1.处理用户登录2.处理用户发送信息,服务器监控聊天内容,服务器过滤非法内容3.处理用户得到信息4.处理用户退出 5.保存用户聊天信息。(2)客户端 1.用户登录界面及结果 2.用户发送信息界面及结果 3.用户得到信息界面及结果 4.用户退出界面及结果目前国内外做聊天系统的公司很

    11、多,产品也琳琅满目,国内有诸如腾讯QQ、新浪UC、网易泡泡等,国外有著名的MSN(新版改名为Live Messenger)以及跨平台Gaim等。本人取最具代表性的QQ和MSN进行了一些研究,作为我开发聊天系统的准备。腾讯无疑是国内即时通讯市场的霸主,自从99年进入即时通讯领域并迅速占市场之后,其在国内用户数量始终高居榜首,即使近几年面对微软MSN的强大攻势,腾讯QQ的时常占有率依然稳步增长。腾讯的成功与其对QQ的不断创新和完善是分不开的。参考了许多网络上的资料,以及自己通过观察腾讯QQ运行时的各种细节。可以确定腾讯QQ是以多服务器提供服务、服务器总控客户端、客户端之间UDP直连通信的。并且在两

    12、个客户端之间不能建立直连的情况下,才由服务器进行中转通信。其模型如图1-14、主要程序源代码 客户端主要代码:import java.awt.*;import java.awt.List;import java.awt.event.*;import java.io.*;import .*;import java.text.SimpleDateFormat;import java.util.Date; import javax.swing.*;public class Chatlogo extends JFrame JFrame a1 = new JFrame(QQ2012);/创建登录窗口 J

    13、Label lab1 = new JLabel(账 号); JLabel lab2 = new JLabel(密 码); JButton bt1 = new JButton(登 录); JButton bt2 = new JButton(修改密码); JTextField text1 = new JTextField(26); JPasswordField pasf1 = new JPasswordField(26); /设置文本框长度 JFrame a2 = new JFrame(修改密码);/创建修改密码窗口 JLabel lab3 = new JLabel(账 号); JLabel la

    14、b4 = new JLabel(新密码); JLabel lab5 = new JLabel(确认密码); JButton bt3 = new JButton(确定); JButton bt4 = new JButton(取消); JTextField text2 = new JTextField(22); JPasswordField pasf2 = new JPasswordField(23); JPasswordField pasf3 = new JPasswordField(23); JPanel panel1 = new JPanel(new FlowLayout(FlowLayou

    15、t.LEFT,15,10); JPanel panel2 = new JPanel(new FlowLayout(FlowLayout.LEFT,70,30); JPanel panel3 = new JPanel(new FlowLayout(FlowLayout.CENTER,10,10); /设置按钮及文本框位置 JFrame a3 = new JFrame();/创建聊天窗口 JPanel panel4 = new JPanel(); JPanel panel5 = new JPanel(); JTextArea area1 = new JTextArea(12, 10); JText

    16、Area area2 = new JTextArea(12, 8); JScrollPane scroll1 = new JScrollPane(area1); JScrollPane scroll2 = new JScrollPane(area2); /创建文本区 JButton bt5 = new JButton(发送); JButton bt6 = new JButton(关闭窗口); List list = new List(15, false); Checkbox cb = new Checkbox(私聊); Choice choice=new Choice();/添加下拉列表框 B

    17、ufferedReader bufferedreader; PrintStream printStream; Socket socket ; boolean bool = true; ObjectInputStream ois; ObjectOutputStream oos; JPanel imagePanel1; ImageIcon background1; /添加背景图片 public Chatlogo() /choice.add(群聊); /choice.add(私聊); a1.add(lab1); a1.add(text1); a1.add(lab2); a1.add(pasf1);

    18、a1.add(bt1); a1.add(bt2); background1 = new ImageIcon(d:tt.jpg);/背景图片来源 JLabel label = new JLabel(background1);/利用标签添加背景图片 label.setBounds(0,0, background1.getIconWidth(), background1.getIconHeight(); imagePanel1 = (JPanel) a1.getContentPane(); imagePanel1.setOpaque(false); imagePanel1.setLayout(new

    19、 FlowLayout();/设置背景图片位置 a1.getLayeredPane().setLayout(null); a1.getLayeredPane().add(label, new Integer(Integer.MIN_VALUE); a1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); a1.setSize(background1.getIconWidth(), background1.getIconHeight(); a1.setResizable(false); a1.setVisible(true); panel1.add(p

    20、anel2); panel3.add(lab3); panel3.add(text2); panel3.add(lab4); panel3.add(pasf2); panel3.add(lab5); panel3.add(pasf3); panel3.add(bt3); panel3.add(bt4); a2.add(panel3); a2.setSize(300,300);/设置修改密码窗口大小 a1.setVisible(true); a3.setSize(500, 400);/设置聊天窗口大小 a3.add(panel4, BorderLayout.CENTER); a3.add(pan

    21、el5, BorderLayout.SOUTH); a3.add(list, BorderLayout.EAST); /设置各按钮的布局 panel5.add(bt5); panel5.add(bt6); panel5.add(cb); panel5.add(choice); panel4.setLayout(new GridLayout(2, 1); panel4.add(scroll1); panel4.add(scroll2); bt1.addActionListener(new ActionListener() public void actionPerformed(ActionEve

    22、nt ae1) /监听动作事件 boolean temp = false; try bufferedreader = new BufferedReader(new FileReader(d:pwd.txt); String sName = ; while(sName = bufferedreader.readLine() != null) String sarr = sName.split( ); if(text1.getText().equals(sarr0) & (pasf1.getText().equals(sarr1) temp = true; break; else temp = f

    23、alse; if(temp = false) JOptionPane.showMessageDialog(a1, 对不起,密码错误或用户不存在!); else oos.writeObject(账号:+text1.getText(); a1.setVisible(false); a3.setTitle(text1.getText(); a3.setVisible(true); /调用文本中的信息,进行账号登陆 bufferedreader.close(); catch (FileNotFoundException e1) /抛出异常事件 / TODO Auto-generated catch b

    24、lock e1.printStackTrace(); catch (IOException e1) / TODO Auto-generated catch block e1.printStackTrace(); ); bt2.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) a1.setVisible(false); a2.setVisible(true); ); bt3.addActionListener(new ActionListener() public void acti

    25、onPerformed(ActionEvent ae2) try PrintWriter printwrite= new PrintWriter(new FileWriter(d:pwd.txt,true); String s1= text2.getText(); String s2 = pasf2.getText(); String s4 = pasf3.getText(); String s3 = s1 + + s2; bufferedreader = new BufferedReader(new FileReader(d:pwd.txt); String ss = bufferedrea

    26、der.readLine(); int a = 0; while(ss != null) String sss = ss.split( ); a = compare(sss0,s1); if(s2.equals(s4) if(a = 1) JOptionPane.showMessageDialog(a2,该账号已被使用); break; ss = bufferedreader.readLine(); if(a = 0) printwrite.println(s3); JOptionPane.showMessageDialog(a2, 密码修改成功); a2.setVisible(false);

    27、 a1.setVisible(true); break; else JOptionPane.showMessageDialog(a2,两次密码输入不一致); break; printwrite.close(); catch (FileNotFoundException e) e.printStackTrace(); catch (IOException e) e.printStackTrace(); ); /实现修改密码操作,并将用户信息保存到文档里 bt4.addActionListener(new ActionListener() public void actionPerformed(A

    28、ctionEvent ae3) / TODO Auto-generated method stub a1.setVisible(true); a2.setVisible(false); ); choice.addItemListener(new ItemListener() public void itemStateChanged(ItemEvent e) ); bt5.addActionListener(new ActionListener() public void actionPerformed(ActionEvent ae4) try if(cb.getState() oos.writeObject(私聊:+text1.g


    注意事项

    本文(Java聊天工具课程设计报告.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开