课程设计报告书模板.doc_第1页
课程设计报告书模板.doc_第2页
课程设计报告书模板.doc_第3页
课程设计报告书模板.doc_第4页
课程设计报告书模板.doc_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 信息学院本科生课程设计信息学院本科生课程设计 题目题目 课程名称 面向对象程序设计课程设计 课程编号X031749 所在专业计算机科学与技术 所在班级XXXXXXXXX 学生学号XXXXXXXXX 学生姓名 指导教师赵培英 课程设计时间 XXXX 年 XX 月 XX 日 XXXX 年 XX 月 XX 日 面向对象程序设计课程设计报告 1 目目 录录 摘要 2 1 引言 2 2 功能需求 2 3 设计方案 2 3 1 总体设计 2 3 2 类组合结构图 2 3 3 类详细设计及类实现代码 3 4 软件操作说明及功能截图 3 5 课程设计总结 4 面向对象程序设计课程设计报告 2 题目题目 摘要摘要 本次课程设计中 我们实现了一个聊天交友的软件 该软件由两大模块部分组成 各部分模块基本功能如下 1 软件的账号注册 2 服务器的网络的访问 3 聊天交友的功能 4 本软件简单评价 实用性 界面 功能等方面的优点与缺点 本课程设计达到的效果描述 知识的掌握 能力的提高 自我收获等 1 引言引言 一 实验目的 通过实现聊天系统的实际编程了解基于 java 的网络编程 多线程和数据库操作原理 提高利用 Java 在网络 多线程和 JDBC 技术的综合运用能力 二 实验原理 本实验完成的聊天系统是一个 C S 体系结构网络程序的实例 其操作原理为 服务器程序会等 待客户端联机 当有用户要求加入聊天室且联机成功后 便可开始发送消息 这些消息将会以广播 的方式传送给所有其他在聊天室中的成员 服务器端使用 4 个线程 其功能如下 1 等待客户端联机 2 维护客户端联机 3 广播消息到客户端 4 清除不正常中断的联机 当服务器启动时 即建立并启动等待客户端联机的线程 然后每当有客户联机时 程序便再建 立一个可以维护客户端联机的线程 此两线程的体系结构如图一所示 面向对象程序设计课程设计报告 3 2 功能需求功能需求 利用维护客户端联机的线程来读取由客户端传来的消息 然后将此消息加入一个广播队列中 接着由广播消息到客户端的线程来广播队列中的消息给每一个客户端 如下图二所示 广播线程负责将客户消息广播给所有的客户端 可采用每个几秒钟执行一次该线程 执行时先 检查消息队列中是否由要被传送的消息 如果没有则继续等待 否则就取出第一消息 并将第一个 消息从消息队列中移除 然后将取出的消息广播给所有用户 3 设计方案设计方案 3 1 总体设计总体设计 清除不正常的中断联机的线程可每隔 10 秒钟执行一次 每次执行时逐个检查存储在 Clients 在 服务器端线程用 Vector 来定义 的线程是否还活着 isAlive 方法判断 已经死亡的线程将会从 Clients 中清除 值得注意的是 服务器程序会同时执行多个线程 并且每个线程都有可能在任何一个时间访问 Clients 或消息变量 messages 需采用 Synchronized 语句的同步处理 由客户端的退出按钮传送特殊字符串 bye 来正常的结束联机 然而有时客户端会不正常的方 式离开 例如直接关闭机器 因此还需要一个能清楚不正常中断的联机的线程 客户端主要是提供一些必要的用户界面 这涉及到版面布局管理器 Swing 组件和事件处理方 法的基本操作 另外 客户端也会用到一个线程 主要负责接收由服务器端传来的广播消息 运行 Windows 的 PC 机 具有 JDK1 4 以上 Java 编译环境和 JCreator3 5 或 Eclipse3 0 以上 Java 编辑环境 面向对象程序设计课程设计报告 4 四 实验内容和步骤 1 系统需求分析 写出功能流程图 2 项目分析 确定对象并确定对象的属性和操作 为对象建模 画出 UML 类图 3 数据库设计 主要包括用户表 朋友信息表 4 类的设计与实现 5 实现系统功能 聊天系统基本功能如下 服务器程序服务器程序 1 能等待用户联机 并建立和客户端通信的 I O 通道 2 当有用户要求加入聊天室 先验证其帐号和密码的合法性 验证成功后允许联机并将登陆 信息写入日志 log 表 3 能将用户发来的信息存入数据库保存 以便查询统计 同时能将消息广播给所有聊天室成 员 4 能清除不正常终端的联机 5 系统管理 能设置加入聊天系统的人数限制 能查看用户登陆信息和聊天信息 客户端程序客户端程序 1 能注册和登陆帐号 2 能与服务器程序联机并且建立 I O 通道 通道建立完成后 其工作便是接收由客户端传来的 消息 然后根据消息来作出适当的处理 3 列出在线的所有用户登陆名或昵称 3 2 类组合结构图类组合结构图 给出各个类之间的整体组合结构 如图所示 CalendarWindow CalendarMessageCalendarImageCalendarPad JTextField File NotePad JTextArea Clock 面向对象程序设计课程设计报告 5 3 3 类详细设计及类实现代码类详细设计及类实现代码 各个类的简要描述 在整个软件中的地位及实现功能的简要描述 其继承层次关系及 所实现的接口等 详细设计每个类的成员变量 构造方法与方法 并根据详细设计给 出每个类的实现代码 示例如下 1 1 主函数主函数 CalendarWindowCalendarWindow 类类 1 1 简要描述 简要描述 该类是整个程序的主框架 是 javax swing 包中 Jframe 的一个子类 并实现了 ActionListener MouseListener 和 FocusListener 接口 2 2 类详细设计 类详细设计 该类的成员变量 构造方法及方法设计如下 1 成员变量 2 构造方法 3 方法 actionPerformed ActionEvent 方法是 CalendarWindow 类实现的 ActionListener 接口中的方法 CalendarWindow 创建的窗口是 nextYear previousYear nextMonth previousMonth saveDailyRecord dele teDailyRecord 和 readDailyRecord 按钮的 ActionEvent 事件监视器 当用户单 击其中按钮时 窗口将执行 actionPerformed ActionEvent 方法进行相应的操 作 3 3 类详细代码 类详细代码 客户端 客户端 package mon 包包 Message 类 packagepackage mon mon importimport java text SimpleDateFormat java text SimpleDateFormat importimport java util Date java util Date 消息类 客户端与服务端通用类 消息类 客户端与服务端通用类 实现序列化接口实现序列化接口 author author AdministratorAdministrator 面向对象程序设计课程设计报告 6 SuppressWarnings serial SuppressWarnings serial publicpublic classclass MessageMessage implementsimplements java io Serializablejava io Serializable privateprivate StringString mesType mesType 消息类型消息类型 privateprivate StringString sender sender 发送人发送人 privateprivate StringString getter getter 接受人接受人 privateprivate StringString con con 内容内容 privateprivate StringString sendTime sendTime 发送时间发送时间 publicpublic Message StringMessage String sender Stringsender String getter getter StringString mesTypemesType String String con con DateDate nowDatenowDate newnew Date Date SimpleDateFormatSimpleDateFormat nownow newnew SimpleDateFormat yyyy MM ddSimpleDateFormat yyyy MM dd HH mm ss HH mm ss StringString nowdatenowdate now format nowDate now format nowDate this sendTimethis sendTime nowdate nowdate this senderthis sender sender sender this getterthis getter getter getter this mesTypethis mesType mesType mesType this conthis con con con publicpublic StringString getMesType getMesType returnreturn mesType mesType publicpublic voidvoid setMesType StringsetMesType String mesType mesType this mesTypethis mesType mesType mesType publicpublic StringString getSender getSender returnreturn sender sender publicpublic voidvoid setSender StringsetSender String sender sender this senderthis sender sender sender publicpublic StringString getGetter getGetter 面向对象程序设计课程设计报告 7 returnreturn getter getter publicpublic voidvoid setGetter StringsetGetter String getter getter this getterthis getter getter getter publicpublic StringString getCon getCon returnreturn con con publicpublic voidvoid setCon StringsetCon String con con this conthis con con con publicpublic StringString getSendTime getSendTime returnreturn sendTime sendTime publicpublic voidvoid setSendTime StringsetSendTime String sendTime sendTime this sendTimethis sendTime sendTime sendTime MessageType 类 package mon 消息类型的定义类 author Administrator public class MessageType public static final String MESSAGE SUCCEED 1 登陆 成功 面向对象程序设计课程设计报告 8 public static final String MESSAGE FAIL 0 登陆 失败 public static final String MESSAGE COMM 3 聊天 窗口消息 public static final String MESSAGE CHATROOM 4 聊 天室消息 public static final String MESSAGE ONLINEFRIEND 5 在线好友 public static final String MESSAGE NOONLINE 6 不 在线 public static final String MESSAGE UPLINE 7 上线 public static final String MESSAGE DOWNLINE 8 下 线 public static final String MESSAGE RDOWNLINE 9 成 功下线 public static final String MESSAGE REGISERT 2 注 册 public static final String MESSAGE REGISERTYES 11 注册成功 public static final String MESSAGE REGISERTNO 12 注册失败 public static final String MESSAGE LOGIN 10 登陆 面向对象程序设计课程设计报告 9 消息 public static final String MESSAGE ADD 13 添加 好友消息 public static final String MESSAGE ADDYES 14 添加 好友成功 public static final String MESSAGE ADDNO 15 添加 好友失败 packagepackage mon mon importimport java util ArrayList java util ArrayList importimport java util List java util List 用户定义类 客户端与服务端公用类用户定义类 客户端与服务端公用类 实现序列化接口实现序列化接口 author author AdministratorAdministrator SuppressWarnings serial SuppressWarnings serial publicpublic classclass UserUser implementsimplements java io Serializable java io Serializable privateprivate StringString userId userId privateprivate StringString passwd passwd privateprivate booleanboolean onLineonLine true true privateprivate ListList friendfriend newnew ArrayList ArrayList privateprivate ListList onLineFriendonLineFriend newnew ArrayList ArrayList publicpublic StringString getUserId getUserId returnreturn userId userId 面向对象程序设计课程设计报告 10 publicpublic voidvoid setUserId StringsetUserId String userId userId this userIdthis userId userId userId publicpublic StringString getPasswd getPasswd returnreturn passwd passwd publicpublic voidvoid setPasswd StringsetPasswd String passwd passwd this passwdthis passwd passwd passwd publicpublic booleanboolean isOnLine isOnLine returnreturn onLine onLine publicpublic voidvoid setOnLine booleansetOnLine boolean onLine onLine this onLinethis onLine onLine onLine SuppressWarnings rawtypes SuppressWarnings rawtypes publicpublic ListList getFriends getFriends returnreturn friend friend publicpublic voidvoid addFriend StringaddFriend String name name this friend add name this friend add name publicpublic ListList getOnLineFriend getOnLineFriend returnreturn onLineFriend onLineFriend publicpublic voidvoid addOnLineFriend StringaddOnLineFriend String name name this onLineFriend add name this onLineFriend add name package com ant Frame 包包 package com ant Frame import java awt BorderLayout import java awt event ActionEvent 面向对象程序设计课程设计报告 11 import java awt event ActionListener import java io IOException import java io ObjectOutputStream import javax swing JButton import javax swing JFrame import javax swing JPanel import javax swing JScrollPane import javax swing JTextArea import javax swing JTextField import mon Message import mon MessageType import com ant tools CloseAclistener import com ant tools ManageThread import com ant tools ManageUser 聊天室类 author Administrator SuppressWarnings serial public class AntChatRoom extends JFrame implements ActionListener private String ownerId null private JTextField JTField null private JTextArea JTArea null private JScrollPane JSPane null private JButton JBSend null private JPanel JPsend null public AntChatRoom this ownerId ManageUser getUser getUserId 得到用户 ID JTArea new JTextArea JTArea setEditable false JSPane new JScrollPane JTArea JTField new JTextField 15 JBSend new JButton 发送 JBSend addActionListener this 面向对象程序设计课程设计报告 12 JPsend new JPanel JPsend add JTField JPsend add JBSend this addWindowListener new CloseAclistener this this add JSPane BorderLayout CENTER this add JPsend BorderLayout SOUTH this setTitle 聊天室 this setSize 300 200 显示消息 public void showMessage Message m this JTArea append m getSender m getSendTime n this JTArea append m getCon this JTArea setCaretPosition JTArea getText length 是滚动条显示在最下面 Override public void actionPerformed ActionEvent e if e getSource JBSend 发送给服务器 Message message new Message this ownerId chatroom MessageType MESSAGE CHATROOM this JTField getText n this showMessage message this JTField setText 发送给服务器 try ObjectOutputStream oos ManageThread getThread ownerId getOos oos writeObject message catch IOException e1 e1 printStackTrace package com ant Frame 面向对象程序设计课程设计报告 13 import java awt BorderLayout import java awt event ActionEvent import java awt event ActionListener import java io IOException import java io ObjectOutputStream import javax swing ImageIcon import javax swing JButton import javax swing JFrame import javax swing JPanel import javax swing JScrollPane import javax swing JTextArea import javax swing JTextField import mon Message import mon MessageType import com ant tools CloseAclistener import com ant tools ManageThread 聊天窗口类 author Administrator SuppressWarnings serial public class AntClientServer extends JFrame implements ActionListener private String ownerId null private String friendId null private JTextField JTField null private JScrollPane JSPane null private JTextArea JTArea null private JButton JBSend null private JPanel JPsend null public AntClientServer String ownerId String friendId this ownerId ownerId this friendId friendId JTArea new JTextArea JTArea setEditable false 面向对象程序设计课程设计报告 14 JSPane new JScrollPane JTArea JTField new JTextField 15 JBSend new JButton 发送 JBSend addActionListener this JPsend new JPanel JPsend add JTField JPsend add JBSend this addWindowListener new CloseAclistener this this add JSPane BorderLayout CENTER this add JPsend BorderLayout SOUTH this setTitle ownerId 正在和 friendId 聊天 this setIconImage new ImageIcon image qq gif getImage this setSize 300 200 显示消息 public void showMessage Message m this JTArea append m getSender m getSendTime n this JTArea append m getCon this JTArea setCaretPosition JTArea getText length 使滚动条显示在最下面 Override public void actionPerformed ActionEvent e if e getSource JBSend Message message new Message this ownerId this friendId MessageType MESSAGE COMM this JTField getText n this showMessage message this JTField setText try ObjectOutputStream oos ManageThread getThread ownerId getOos oos writeObject message catch IOException e1 e1 printStackTrace 面向对象程序设计课程设计报告 15 package com ant Frame import java awt BorderLayout import java awt GridLayout import java awt event ActionEvent import java awt event ActionListener import java io IOException import java io ObjectInputStream import java io ObjectOutputStream import ConnectException import Socket import UnknownHostException import javax swing JButton import javax swing JDialog import javax swing JFrame import javax swing JLabel import javax swing JOptionPane import javax swing JPanel import javax swing JTextField import com ant Socket AntLanding import mon Message import mon MessageType import mon User import com ant tools ManageThread 登陆界面类 author Administrator SuppressWarnings serial public class AntFrame extends JFrame implements ActionListener private int b 0 private JPanel JPCenter null private JPanel JPSouth null private JLabel JLAnt null private JLabel JLZhangHao null private JLabel JLMiMa null private JTextField JTZhangHao null 面向对象程序设计课程设计报告 16 private JTextField JTMiMa null private JButton JBDengLu null private JButton JBZhuCe null private User user null private AntLanding antLanding null private JDialog dialog null SuppressWarnings unused public static void main String args AntFrame ant new AntFrame SuppressWarnings static access public AntFrame 处理北部 JLAnt new JLabel Ant 为发烧而生 JLabel CENTER 处理中部 JPCenter new JPanel new GridLayout 2 2 JLZhangHao new JLabel 账号 JLabel CENTER JLMiMa new JLabel 密码 JLabel CENTER JTZhangHao new JTextField JTMiMa new JTextField JPCenter add JLZhangHao JPCenter add JTZhangHao JPCenter add JLMiMa JPCenter add JTMiMa 处理南部 JPSouth new JPanel new GridLayout 1 2 JBDengLu new JButton 登陆 JBDengLu addActionListener this JBZhuCe new JButton 注册 JBZhuCe addActionListener this JPSouth add JBZhuCe JPSouth add JBDengLu this add JLAnt BorderLayout NORTH 面向对象程序设计课程设计报告 17 this add JPCenter BorderLayout CENTER this add JPSouth BorderLayout SOUTH this setSize 350 150 this setDefaultCloseOperation this EXIT ON CLOSE this setResizable false this setVisible true Override public void actionPerformed ActionEvent e if e getSource JBDengLu this user new User this antLanding new AntLanding this this user setUserId JTZhangHao getText this user setPasswd JTMiMa getText this user setOnLine true ManageUser setUser this user 将用户放入到用户管理中 提前建立好友列表 b antLanding landing this user if b 1 Message message new Message user getUserId server MessageType MESSAGE ONLINEFRIEND 请求在线好友 ObjectOutputStream oos ManageThread getThread user getUserId getOos try oos writeObject message catch IOException e1 e1 printStackTrace this dispose else if e getSource JBZhuCe dialog new JDialog JPanel JPCenter0 new JPanel new GridLayout 3 2 JLabel JLZhangHao0 new JLabel 账号 JLabel CENTER JLabel JLMiMa0 new JLabel 密码 JLabel CENTER JLabel JLMiMa1 new JLabel 再次输入密码 JLabel CENTER JTextField JTZhangHao0 new JTextField JTextField JTMiMa0 new JTextField 面向对象程序设计课程设计报告 18 JTextField JTMiMa1 new JTextField JPCenter0 add JLZhangHao0 JPCenter0 add JTZhangHao0 JPCenter0 add JLMiMa0 JPCenter0 add JTMiMa0 JPCenter0 add JLMiMa1 JPCenter0 add JTMiMa1 JButton JBdenglu new JButton 确定 JBdenglu addActionListener new dialogActionListener dialog JTZhangHao0 JTMiMa0 JTMiMa1 dialog add JPCenter0 BorderLayout CENTER dialog add JBdenglu BorderLayout SOUTH dialog setSize 350 200 dialog setVisible true class dialogActionListener implements ActionListener JDialog dialog null JTextField ZD null JTextField MM0 null JTextField MM1 null public dialogActionListener JDialog jd JTextField zd JTextField mm0 JTextField mm1 this dialog jd this ZD zd this MM0 mm0 this MM1 mm1 Override public void actionPerformed ActionEvent e boolean bb true String zhanghao ZD getText if zhanghao length 16 zhanghao length 6 bb false JOptionPane showMessageDialog dialog 账号字符个数再 6 16 之间 else for int i 0 i a JOptionPane showMessageDialog dialog 账号只能包含数字和字母 面向对象程序设计课程设计报告 19 break String mima MM0 getText if bb if MM1 getText equals MM0 getText bb false JOptionPane showMessageDialog dialog 两次密码输入不匹配 MM0 setText MM1 setText else if mima length 16 bb false JOptionPane showMessageDialog dialog 密码字符个数再 8 16 之间 else for int i 0 i a JOptionPane showMessageDialog dialog 账号只能包含数字 字母 和 号 break if bb Socket s null ObjectOutputStream oos null ObjectInputStream ois null User user0 new User user0 setUserId ZD getText user0 setPasswd MM0 getText user0 setOnLine false 发送申请到服务器 try Message messageOne new Message user0 getUserId server MessageType MESSAGE REGISERT user0 getUserId 要注册账号 链接 socket System out println messageOne getCon s new Socket 127 0 0 1 9999 oos new ObjectOutputStream s getOutputStream oos writeObject user0 面向对象程序设计课程设计报告 20 oos writeObject messageOne ois new ObjectInputStream s getInputStream Message mmOne Message ois readObject if mmOne getMesType equals MessageType MESSAGE REGISERTNO JOptionPane showMessageDialog dialog mmOne getCon else if mmOne getMesType equals MessageType MESSAGE REGISERTYES JOptionPane showMessageDialog dialog mmOne getCon dialog dispose s close catch ConnectException e3 JOptionPane showMessageDialog dialog 服务器未开启 catch UnknownHostException e1 e1 printStackTrace catch IOException e1 e1 printStackTrace catch Exception e2 package com ant Frame import java awt BorderLayout import java awt CardLayout import java awt Color import java awt GridLayout import java awt event ActionEvent import java awt event ActionListener import java awt event MouseAdapter import java awt event MouseEvent import java awt event WindowAdapter import java awt event WindowEvent import java io IOException import java io ObjectOutputStream import java util ArrayList 面向对象程序设计课程设计报告 21 import javax swing import mon Message import mon MessageType import mon User import com ant tools ManageChatRoom import com ant tools ManageClientServer import com ant tools ManageThread import com ant tools ManageUser 好友列表界面类 author Administrator SuppressWarnings serial public class AntFriendList extends JFrame implements ActionListener public static final String NAME Ant private String ownerId null private User user null private JLabel JLSelf 1 null private JLabel JLSelf 2 null private JLabel jb1s null private JButton JBMyFriend 1 null private JButton JBMyFriend 2 null private JButton JBChatRoom 1 null private JButton JBChatRoom 2 null private JButton JBAdd 1 null private JButton JBAdd 2 null private JPanel MySeCenter 1 null private JPanel MySeCenter 2 null private JPanel JPSouth 1 null private JPanel JPSouth 2 null private JPanel MySe 1 null private JPanel MySe 2 null private JPanel myse null private JPanel myse 1 null 面向对象程序设计课程设计报告 22 private ArrayList al null private String ss null private AntChatRoom antChatRoom null private JScrollPane JSFriendList null private CardLayout card null private JDialog dialog null 更新添加的好友 public void upateAddFriend Message m User user ManageUser getUser user addFriend m getSender int n al size 1 al add m getSender String name m ge

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论