




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MiniQQ,tian_jx,UsingJava设计文档可视化多方通信好友维护聊天记录开发文档、总结报告,登录窗口注册窗口好友列表聊天窗口查找/添加好友聊天记录对话框(登录失败、注册成功、注册失败确认删除、错误提示等),登录窗口,注册,查找好友,好友列表,查找结果,聊天窗口,聊天记录,PackagesServer登录验证注册服务好友维护聊天组维护在线用户维护消息转发异常处理.,Client各个窗口好友维护聊天记录维护活动窗口维护异常处理.,Multi-ThreadSocket-ServerSocketI/OStreamJDBC(FilesR/W),创建Thread的子类,并覆盖run()方法实现Runnable接口,publicclassChatServerArrayListclients=newArrayList();publicstaticvoidmain(Stringargs)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;iSHOWDATABASES;2:创建一个数据库MYSQLDATAmysqlCREATEDATABASEMYSQLDATA;3:选择你所创建的数据库mysqlUSEMYSQLDATA;(按回车键出现Databasechanged时说明操作成功!)4:查看现在的数据库中存在什么表mysqlSHOWTABLES;5:创建一个数据库表mysqlCREATETABLEMYTABLE(nameVARCHAR(20),sexCHAR(1);6:显示表的结构:mysqlDESCRIBEMYTABLE;,7:往表中加入记录mysqlinsertintoMYTABLEvalues(hyq,M);8:用文本方式将数据装入数据库表中(例如D:/mysql.txt)mysqlLOADDATALOCALINFILED:/mysql.txtINTOTABLEMYTABLE;9:导入.sql文件命令(例如D:/mysql.sql)mysqlusedatabase;mysqlsourced:/mysql.sql;10:删除表mysqldropTABLEMYTABLE;11:清空表mysqldeletefromMYTABLE;12:更新表中数据mysqlupdateMYTABLEsetsex=fwherename=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(,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);/格式化日期使用,publicclassFileManagerpublicFileManager(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()/*检查聊天记录文件有无*/tryf.createNewFile();catch(IOExceptione)e.printStackTrace();,publicvoidrun()tryinputStream=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();finallyif(inputStream!=null)tryinputStream.close();catch(IOExceptione)e.printStackTrace();,/获取当前日期.格式为2009-02-02privatestaticStringgetDate()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);tryoutputStream=newBufferedWriter(newFileWriter(file);outputStream.write(sb.toString();catch(IOExceptione)e.printStackTrace();finallytryoutputStream.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,ActionListenerprivatestaticfinallongserialVersionUID=1L;JTreetree;JPopupMenupopMenu;JMenuItemaddItem;JMenuItemdelItem;JMenuItemeditItem;publicTreePopupMenu()/JTree构造/Stringmodel=我的好友,陌生人,黑名单;/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(MouseEvente)public
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025甘肃稀土新材料股份有限公司招聘考前自测高频考点模拟试题参考答案详解
- 2025年福建省三明市尤溪县总医院招聘10人模拟试卷及答案详解(考点梳理)
- 2025贵州黔东南州剑河县顺诚公司紧急招聘长期搔菌人员15人模拟试卷及答案详解(易错题)
- 2025国家统计局兴仁调查队招聘村级劳动保障协管员考前自测高频考点模拟试题附答案详解(模拟题)
- 2025广东“百万英才汇南粤”惠州仲恺高新区招聘中小学教师105人模拟试卷(含答案详解)
- 2025年金华市卫生健康委员会所属医院金华市第二医院招聘7人(第一批)考前自测高频考点模拟试题及一套完整答案详解
- 2025广西来宾数广科技有限公司招聘3人模拟试卷及答案详解(考点梳理)
- 2025年河南中医药大学招聘高层次人才83人+考前自测高频考点模拟试题有完整答案详解
- 2025北京海淀区中国电建集团海外投资有限公司招聘4人考前自测高频考点模拟试题及答案详解(必刷)
- 2025吉林吉林市事业单位招聘(含专项招聘高层次高校毕业生)1381人(1号)模拟试卷附答案详解(模拟题)
- 高血压糖尿病健康管理督导记录表
- 《医疗机构基本标准(试行)》2018年版
- 医院检验标本采集与运送
- 秋冬季猪的饲养管理课件(模板)
- 新能源汽车技术全套ppt
- 2022年8月20日云南省省直机关遴选笔试真题及答案解析
- 现代医学实验动物科学和比较医学研究
- SOP标准作业指导书样板
- 云南省地图含市县地图矢量分层地图行政区划市县概况ppt模板
- GB/T 41843-2022功能、残疾、健康分类的康复组合评定
- 压花艺术课件
评论
0/150
提交评论