Java课程设计[Mini QQ].ppt_第1页
Java课程设计[Mini QQ].ppt_第2页
Java课程设计[Mini QQ].ppt_第3页
Java课程设计[Mini QQ].ppt_第4页
Java课程设计[Mini QQ].ppt_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

MiniQQ tian jx UsingJava设计文档可视化多方通信好友维护聊天记录开发文档 总结报告 登录窗口注册窗口好友列表聊天窗口查找 添加好友聊天记录对话框 登录失败 注册成功 注册失败确认删除 错误提示等 登录窗口 注册 查找好友 好友列表 查找结果 聊天窗口 聊天记录 PackagesServer登录验证注册服务好友维护聊天组维护在线用户维护消息转发异常处理 Client各个窗口好友维护聊天记录维护活动窗口维护异常处理 Multi ThreadSocket ServerSocketI OStreamJDBC FilesR W 创建Thread的子类 并覆盖run 方法实现Runnable接口 publicclassChatServer ArrayListclients newArrayList publicstaticvoidmain String args newChatServer begin publicvoidbegin ss newServerSocket 8888 Sockets ss accept Clientc newClient s newThread c start clients add c classClientimplementsRunnable ChatServer内部类privateSockets privateDataInputStreamdis null privateDataOutputStreamdos null publicClient Sockets this s s dis newDataInputStream s getInputStream dos newDataOutputStream s getOutputStream publicvoidsend Stringstr dos writeUTF str publicvoidrun Stringstr dis readUTF for inti 0 i clients size i Clientc clients get i c send str MySQL 小键盘回车执行命令 helpxxx 1 使用SHOW语句找出在服务器上当前存在什么数据库 mysql SHOWDATABASES 2 创建一个数据库MYSQLDATAmysql CREATEDATABASEMYSQLDATA 3 选择你所创建的数据库mysql USEMYSQLDATA 按回车键出现Databasechanged时说明操作成功 4 查看现在的数据库中存在什么表mysql SHOWTABLES 5 创建一个数据库表mysql CREATETABLEMYTABLE nameVARCHAR 20 sexCHAR 1 6 显示表的结构 mysql DESCRIBEMYTABLE 7 往表中加入记录mysql insertintoMYTABLEvalues hyq M 8 用文本方式将数据装入数据库表中 例如D mysql txt mysql LOADDATALOCALINFILE D mysql txt INTOTABLEMYTABLE 9 导入 sql文件命令 例如D mysql sql mysql usedatabase mysql sourced mysql sql 10 删除表mysql dropTABLEMYTABLE 11 清空表mysql deletefromMYTABLE 12 更新表中数据mysql updateMYTABLEsetsex f wherename hyq MySQL frontNavicatSQLyogmysql workbench userIDnamepasswordregDate friendshipIDuser IDfriend IDtypefrdDate recordIDuser IDfriend IDotherinfo LoginfriendListfriendManagementchatWindowgroupManagementchatRecord Login java btnLogin addActionListener newActionListener publicvoidactionPerformed ActionEvente booleanchecked server verify this getuser this password 登录验证if checked newfriendsWindow loginFrame setVisible false loginFrame dispose else listFriend server java Statements conn createStatement ResultSetrs s executeQuery selectuser name friendship type fromuser friendship whereuser ID friendship friend ID ANDfriendship user ID this getUserID while rs next inttype rs getInt type swith type case0 friendNode add current case1 strangeNode add current default blacklistNode add current 每一个chatWindow对应一个线程所有chatWindow按照组进行分类 并且由server负责维护讨论组每个讨论组里面都应该有一个数据结构 list 维护组里的窗口 服务器收发消息时向数据库中插入聊天记录 或者本地维护另一个数据库 在本地插入聊天记录采用文本文件保存聊天记录时 可以以对方用户名 ID为文件名分别保存不同对象的聊天记录 privateBufferedReaderinputStream null privateBufferedWriteroutputStream null privateStringBuildersb newStringBuilder privateStringfile privateintline 0 numberzeroprivatestaticSimpleDateFormats newSimpleDateFormat yyyy MM dd 格式化日期使用 publicclassFileManager publicFileManager StringuserID StringfriendID checkExsit userID friendID run privatevoidcheckExsit StringuserID StringfriendID 检查用户聊天记录文件夹路径存在否 userID为当前用户 friendID为好友 Filef newFile System getProperties getProperty user dir chatLog userID if f exists f mkdirs file f getAbsolutePath friendID txt f newFile file if f exists 检查聊天记录文件有无 try f createNewFile catch IOExceptione e printStackTrace publicvoidrun try inputStream newBufferedReader newFileReader file Stringl while l inputStream readLine null line sb append l System getProperty line separator catch FileNotFoundExceptione e printStackTrace catch IOExceptione e printStackTrace finally if inputStream null try inputStream close catch IOExceptione e printStackTrace 获取当前日期 格式为 2009 02 02 privatestaticStringgetDate Datedate newDate return s format date 清除记录publicvoidremoveMsg line 0 sb delete 0 getString length 保存聊天记录 publicvoidsave Stringmsg StringnewMsg msg 加入当前日期 if msg trim length 0 newMsg getDate System getProperty line separator System getProperty line separator newMsg sb append System getProperty line separator newMsg try outputStream newBufferedWriter newFileWriter file outputStream write sb toString catch IOExceptione e printStackTrace finally try outputStream close catch IOExceptione e printStackTrace 获取记录内容publicStringgetString returnsb toString 获取行数publicintgetLines returnline privateJTreetree privateTreeNodenode privateDefaultTreeModelmodel privateDefaultTreeCellRendererrenderer model newDefaultTreeModel node tree newJTree model renderer newDefaultTreeCellRenderer renderer setLeafIcon newImageIcon a jpg 叶子结点图片renderer setClosedIcon newImageIcon b jpg 关闭树后显示的图片renderer setOpenIcon newImageIcon c jpg 打开树时显示的图片tree setCellRenderer renderer 头像显示 publicclassTreePopupMenuextendsJFrameimplementsMouseListener ActionListener privatestaticfinallongserialVersionUID 1L JTreetree JPopupMenupopMenu JMenuItemaddItem JMenuItemdelItem JMenuItemeditItem publicTreePopupMenu JTree构造 String model 我的好友 陌生人 黑名单 tree newJTree model tree newJTree tree setEditable true tree getSelectionModel setSelectionMode TreeSelectionModel SINGLE TREE SELECTION tree addMouseListener this JTree右键菜单 tree setCellEditor newDefaultTreeCellEditor tree newDefaultTreeCellRenderer setSize 200 800 popMenu newJPopupMenu addItem newJMenuItem 加入黑名单 addItem addActionListener this delItem newJMenuItem 删除好友 delItem addActionListener this editItem newJMenuItem 修改备注 editItem addActionListener this popMenu add addItem popMenu add delItem popMenu add editItem getContentPane add newJScrollPane tree publicvoidmouseClicked MouseEvente publicvoidmouseEntered MouseEvente publicvoidmouseExited MouseEvente publicvoidmousePressed MouseEvente TreePathpath tree getPathForLocation e getX e getY if path null return tree setSelectionPath path if e getButton 3 popMenu show tree e getX e getY publicvoidmouseReleased

温馨提示

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

评论

0/150

提交评论