仿QQ聊天系统课程设计

合集下载

c#实现网络聊天室(socket)仿QQ课程设计【范本模板】

c#实现网络聊天室(socket)仿QQ课程设计【范本模板】

Visual C#程序设计课程设计(报告)题目:网络聊天室专业班级:地信131学生姓名:胡宏勇学号:1220130912完成时间:_________ 2015.7。

12______________________任务书项目四网络聊天室4。

1、目的与要求1. 目的:1)要求学生达到熟练掌握.NET基本结构以及C#语言的基本知识和技能;2)基本掌握面向对象程序开发的基本思路和方法;3)掌握网络程序开发的基本知识;4)能够利用所学的基本知识和技能,进行简单的网络通信程序设计。

2。

要求基本要求:1)要求利用C#的编程思想以及套接字开发原理来完成系统的设计;2)突出C#语言与其它语言不同点(即体现C#的高级功能,如属性概念、接口、事件、委托等);3)体现可视化编程基本东西,如系统带有菜单、工具栏、状态栏以及一些常用的高级控件。

创新要求:在基本要求达到后,可进行创新设计,如加入文件传输功能,以及远程控制功能。

4.2、信息描述有关该系统基本信息的描述,如:客户端实例的信息等。

类似于QQ。

4.3、功能描述1。

聊天室服务器端的创建。

2。

聊天室客户端的创建.3。

实现客户与服务器的连接通讯。

4. 实现客户之间的私聊。

5。

实现客户端的在线信息显示.6。

实现服务器端当前在线客户信息.7. 保存谈话记录。

4.4、解决方案1. 首先进行需求分析,搞清楚系统功能和任务.2. 然后总体设计中确定模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块。

确定模块间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略.3。

详细设计中为每个模块确定采用的算法,选择适当的工具表达算法的过程(流程图),描述模块的详细过程;确定每一模块使用的数据结构;确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部其它模块的接口。

4. 依据分析编写C#代码。

目录1.需求分析—— - - - —— - - — - — - —— - - - — - 11。

仿QQ聊天系统的数据库设计与实现_ForStudent资料

仿QQ聊天系统的数据库设计与实现_ForStudent资料

仿QQ聊天系统的数据库设计与实现假如你要构建《即时通讯系统》阅读第4部分设计你的即时通讯系统中类的关系和数据库201405221 引言数据库课程设计是指对于一个给定的应用环境,构造设计优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足用户的应用需求。

信息管理要求是指在数据库中应该存储和管理哪些数据对象;数据操作要求是指对数据对象要进行哪些操作,如查询、加入、删除、修改、统计等操作。

数据库课程设计的目标是为了用户和各种应用系统提供一个信息基础设施和高效率的运行环境。

高效率的运行环境包括:数据库的存取效率、数据库存储空间的利用率、数据库系统运行管理的效率都是高的。

本次课程设计的目的是把所学的数据库的知识应用到实践中去。

现今知识已越来越受到人们的重视,仿QQ聊天系统是参考腾讯公司发布的腾讯QQ,主要运用数据库知识和C#将其初步实现[1]。

1.1课题背景现在的信息越来越发达,很多人都在使用QQ作为聊天工具,现根据腾讯公司的QQ 聊天系统制造属于自己的聊天工具,表面上看上去是仿QQ聊天系统,其实等到时机成熟可以换成别的名字,相信在不远的将来在老师和同学们的帮助下,再借助互联网,我们一定可以打造出属于自己的聊天系统。

当然系统存在着很多不足,需要老师的指点和帮助。

1.2系统需求分析QQ聊天系统是大家广泛喜欢经常应用到CS应用程序软件[2],而现在仿QQ聊天系统开发工具,是本人对其程序的深感兴趣,不但可以了解从中的业务,而且还可以加强学习,以及对知识的回顾。

同时也是尽快测试此聊天程序,以便和同学进行用自己的工具来交流聊天,由于好奇心促使和同学们一起来探讨此程序的开发,这样增强同学们之间的相互交流,相互学习。

该系统属于应用程序,需要对数据的处理,比如聊天信息要既是反馈给对方,故对数据的及时更新要求较高,保证数据的真实性.该系统在任何操作系统下都可以运行,但必须装有SQL2000数据库。

c仿qq课程设计

c仿qq课程设计

c 仿qq课程设计一、课程目标知识目标:1. 学生能理解并掌握C语言中结构体和函数的基本概念及其在编程中的应用。

2. 学生能够运用C语言实现基本的聊天功能,如发送消息、接收消息等。

3. 学生了解并掌握简单的文件读写操作,实现对聊天记录的保存和加载。

技能目标:1. 学生通过本课程的学习,培养编程思维和问题解决能力,能够运用C语言设计并实现类似QQ的简易聊天程序。

2. 学生能够运用所学知识,进行程序调试和优化,提高程序性能和稳定性。

3. 学生能够通过团队协作,共同完成课程项目,提高沟通与协作能力。

情感态度价值观目标:1. 学生在学习过程中,培养对编程的兴趣和热情,提高信息素养。

2. 学生通过课程实践,认识到编程对于解决实际问题的价值,增强自信心。

3. 学生在团队合作中,学会尊重他人意见,培养集体荣誉感和责任感。

课程性质:本课程为C语言编程实践课,旨在通过实现类似QQ的聊天功能,让学生将所学理论知识运用到实际项目中。

学生特点:学生为初中生,具备一定的C语言基础,对编程感兴趣,喜欢动手实践。

教学要求:结合学生特点,课程设计应注重实践性和趣味性,引导学生主动探索,提高编程能力和团队协作能力。

通过分解课程目标,使学生在完成具体学习成果的过程中,达到课程目标。

后续教学设计和评估将以此为基础,确保课程目标的实现。

二、教学内容1. 结构体和函数复习:回顾C语言中结构体的定义和使用,以及函数的声明、定义和调用,为后续实现聊天功能打下基础。

(对应教材章节:结构体与函数)2. 聊天功能实现:- 消息发送与接收:介绍标准输入输出函数,实现用户之间的消息发送与接收。

- 用户登录与注册:结合结构体,设计用户信息数据结构,实现用户登录与注册功能。

(对应教材章节:文件操作、控制语句)3. 聊天记录保存与加载:- 文件读写:介绍文件操作函数,实现对聊天记录的保存和加载功能。

- 数据存储格式:讲解如何选择合适的数据存储格式,提高数据的可读性和可维护性。

软件工程课程设计—模拟QQ聊天系统

软件工程课程设计—模拟QQ聊天系统
退出信息 模拟QQ聊天 用户
退出
下线消息
聊天记录 存储聊天记录
其他用户
聊天记录
后台数据库个人 信息更新
模拟QQ聊天用户 用户登陆 存储用户ID
后台信息数据库检索
登陆消息正确 聊天
登陆消息错误
模拟QQ聊天新用户 用户申请
后台数据库检索
申请消息正确 生成新账号
申请消息错误
模拟QQ聊天用户
聊天
转发
检验转发内容的合 法性
昵称=1{数字或字符}20 密码=1{数字或字符}20 确认密码=1{数字或字符}20 性别={男或女} 备注=0{数字或字符}300 位置:申请处理,服务器处理
名字:转发信息 定义:转发信息=转 发用户账号+转发信 息内容
转发用户账 号=1{数字或字符}20 位置:转发处理
登录信息
存储用户ID 登录信息
模拟QQ聊天 用户
登陆








服务器处理








后台信息数据 库检索
登陆信息及系 统消息等
聊天处理
申请信息
模拟QQ聊天新 用户
申请



新账号消息

服务器处理
新账号消息
模拟QQ聊天新 用户
申请信息
新账号消息
检索合法后的 申请信息
生成账号处理
后台信息数据 库检索
新账号消息
退出信息 聊天处理




密码
账号 密码
服务器
信息数据库
系统信息 库
转发 用户 帐号

模拟QQ聊天程序设计报告

模拟QQ聊天程序设计报告

模拟QQ聊天程序设计报告----网络软件创新实验报告一. 需求分析1.1 开发背景在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,类似QQ、网络聊天时一类的聊天系统的发展日新月异,因此产生了制作一个类似QQ的网络聊天工具的;而且通过制作该程序还能更好的学习网络软件编程知识。

1.2 功能要求(1)登录功能。

(2)客户可以通过服务器转发,实现一对一和多对多聊天。

(3)实现呼叫功能。

(4)客户端程序应该可以实时显示目前其它用户的状态。

(5)应该具有易用、美观的图形界面。

1.3 运行环境本系统基于WIN NT 和ACCESS XP设计,适用于WIN2000/WIN XP等系统,并需要安装office2000/office xp.1.4 功能实现1.登录验证功能。

2. 客户通过服务器转发,实现聊天功能。

3. 实时显示目前其它用户的状态。

4. 保存并能察看聊天纪录。

5.申请新的用户号码。

6. 易用、美观的图形界面,实现系统托盘。

二.技术路线2.1 总体方案为实现网络聊天的功能,采用Windows Socket编程,服务器与客户端采用了TCP/IP 连接方式,在设计聊天方案时,实行将所有信息发往服务器端,再由服务器进行分别处理的思路,服务器端是所有信息的中心。

由于服务器端要保存用户信息,我们利用数据库来实现这一功能,因此首先需要建立用户信息数据库。

在客户端保存聊天纪录和用户号码这一功能的实现中,采用了文件系统设计。

在信息到来及好友上线时,通过闪动托盘图标和播放不同的音乐进行提示。

建立消息链表来保存用户接收的各种消息。

服务器及客户端的功能可划分为以下模块:客户端:1)登陆功能:建立与服务器的连接并登陆,能显示登陆错误信息。

2)界面显示:将在线好友显示在好友列表中,并实现系统托盘,加入工具栏便于操作。

3)聊天功能:与好友聊天。

4)聊天纪录:能保存聊天纪录,并能察看聊天纪录。

仿QQ聊天系统课程设计

仿QQ聊天系统课程设计

目录绪论 (2)一.需求分析 (3)1.1软件功能需求分析 (3)1.2 安全需求分析 (4)二.总体设计 (5)2.1 软件结构图 (5)2.2 功能描述 (5)2.2.1注册功能概要 (6)2.2.2登录功能概要 (7)2.2.3聊天功能概要 (7)2.3 安全设计 (9)三.数据库设计 (9)3.1概念结构设计 (9)3.2逻辑结构设计 (10)3.3物理结构设计 (10)四.详细设计 (8)4.1 用户聊天模块总体流程图 (10)4.2 服务端模块 (11)4.3 客户端模块 (12)五.编码 (17)六.结论 (19)学习体会 (20)致谢 (20)参考文献 (21)绪论随着现代技术的不断输入和信息化的广泛普及,移动网络作为一种新兴事物,在近些年得到了前所未有的普及和深入,移动网络上的各种应用层出不穷,给各个阶层、各个年龄段的用户提供了不同的个性化的服务。

而现代中小型企业的领导认识到进一步提高企业信息化的必要性。

为使企业能在瞬息万变的信息时代生存下去,适应激烈的市场竞争,现代企业要求加强员工之间的交流和通信能力,尤其是领导和员工之间的共同能力,实时的交流系统就是在这种条件下诞生的。

在这个信息化时代,手机已成为继固话之后最为通俗的交流工具,“聊天”成了生活的必需品,这就有了系统下人与人之间的多样会话方式—QQ聊天。

传统会话聊天或许是面对面闲话家常或许是通过打电话进行交流,但都存在各种不便及弊端。

而手机QQ,在手机系统下,占用手机相对很小的空间,系统的记录了QQ好友的信息,不仅突破了各种条件的束缚,减轻了机主的负担,更方便了使用者的通讯交流。

综上所述,本课题主要研究基于Android的移动聊天系统,以更好的用户体验性为目的开发出界面简洁,用户易操作的移动即时通信聊天工具。

该聊天工具的主要功能:用户注册,登录,好友一对一聊天,添加新好友,修改个人信息等。

在该即时通信工具中利用Bmob实现Android端与Bmob服务端的数据操作。

仿qq软件课课程设计

仿qq软件课课程设计

仿qq软件课课程设计一、教学目标本课程的学习目标包括知识目标、技能目标和情感态度价值观目标。

知识目标要求学生掌握QQ软件的基本功能,如即时通讯、文件传输、语音视频通话等。

技能目标要求学生能够熟练操作QQ软件,进行信息的发送和接收、文件的传输和共享、语音视频通话的建立和结束等。

情感态度价值观目标要求学生树立正确的网络交往观念,认识到网络交流的工具性,注重个人信息的保护,遵守网络道德规范,促进良好的网络环境的建设。

二、教学内容本课程的教学内容主要包括QQ软件的基本功能和使用方法。

首先,介绍QQ软件的下载和安装方法,以及账号的注册和登录过程。

然后,详细讲解QQ软件的界面结构和功能模块,如消息、联系人、群聊、文件传输等。

接着,通过实际操作演示,引导学生掌握QQ软件的使用方法,如发送和接收消息、发起语音视频通话、传输文件等。

最后,结合实例,介绍QQ软件的高级功能和技巧,如自定义QQ界面、设置消息提醒、使用QQ群功能等。

三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法。

首先,通过讲授法,向学生传授QQ软件的基本知识和使用方法。

其次,利用讨论法,学生进行小组讨论,分享彼此的操作经验和技巧。

然后,采用案例分析法,分析实际案例,让学生了解QQ软件在实际生活中的应用和价值。

最后,运用实验法,让学生亲自动手操作QQ软件,进行实践操作和练习。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备适当的教学资源。

教材方面,我们将使用《计算机应用基础》教材,该书详细介绍了QQ软件的使用方法和技巧。

参考书方面,我们将推荐《QQ使用技巧手册》等书籍,供学生课后阅读和参考。

多媒体资料方面,我们将制作PPT演示文稿,以图文并茂的形式展示QQ软件的操作过程和功能特点。

实验设备方面,我们将准备计算机实验室,确保每个学生都能有机会亲自操作QQ软件。

五、教学评估本课程的教学评估方式包括平时表现、作业和考试三个部分,以保证评估的客观性和公正性。

课程设计项目《蓝梦教育集团即时通讯系统》(仿腾讯QQ)——完善客户端聊天信息主窗口程序类(第3部分)

课程设计项目《蓝梦教育集团即时通讯系统》(仿腾讯QQ)——完善客户端聊天信息主窗口程序类(第3部分)

J2EE课程设计实训教学示例项目《蓝梦教育集团即时通讯系统》(仿腾讯QQ)——完善客户端聊天信息主窗口程序类(第3部分)1.1.1完善客户端聊天信息主窗口类ChatMainFrame中的各个事件类1、ChatMainFrame_ActionListenerEventHandler(1)类名称为ChatMainFrame_ActionListenerEventHandler,包名称为com.px1987.imsystem.client.frame.chatframe.event,实现java.awt.event.ActionListener接口(2)编程该事件类package com.px1987.imsystem.client.frame.chatframe.event;import java.awt.Color;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import ng.reflect.InvocationTargetException;import ng.reflect.Method;import javax.swing.ImageIcon;import javax.swing.JColorChooser;import javax.swing.text.BadLocationException;import javax.swing.text.SimpleAttributeSet;import javax.swing.text.StyleConstants;import javax.swing.text.StyledDocument;import com.px1987.imsystem.client.dialog.FontChooserDialog;import com.px1987.imsystem.client.exception.IMSystemException;import com.px1987.imsystem.client.factory.GenericTypeMethodsFactory;import com.px1987.imsystem.client.frame.chatframe.panel.ChatMainFrame_CenterInfoPanel; import com.px1987.imsystem.client.frame.floatwindow.SelectUserFaceWindow;importcom.px1987.imsystem.client.httpclient.inter.HttpClientMessageInfoRequestResponseInterface; import com.px1987.imsystem.client.util.DateAndTimeUtil;import com.px1987.imsystem.client.util.IMSystemClientUtils;import com.px1987.imsystem.client.xmlparse.ParseXMLConfFileAllTags;import com.px1987.imsystem.serializableVO.MessageInfoVO;public class ChatMainFrame_ActionListenerEventHandler implements ActionListener { private ChatMainFrame_CenterInfoPanel eventSourceContainer = null;private String eventHandlerMethodName = null;public ChatMainFrame_ActionListenerEventHandler() {super();}public ChatMainFrame_ActionListenerEventHandler(ChatMainFrame_CenterInfoPanel eventSourceContainer,String eventHandlerMethodName) {super();this.eventSourceContainer = eventSourceContainer;this.eventHandlerMethodName = eventHandlerMethodName;}@SuppressWarnings("unchecked")public void actionPerformed(ActionEvent actionEventObject) {Class currentEventHandlerClass = this.getClass();Method eventHandlerMmethod = null;try { //获得事件处理方法eventHandlerMmethod = currentEventHandlerClass.getMethod(this.eventHandlerMethodName, new Class[] {actionEventObject.getClass()});} catch (SecurityException exception) {exception.printStackTrace();System.out.println("出现了SecurityException异常错误,错误信息为:" +exception.getMessage());} catch (NoSuchMethodException exception) {exception.printStackTrace();System.out.println("出现了NoSuchMethodException异常错误,错误信息为:" + exception.getMessage());}try { //调用指定的事件处理方法eventHandlerMmethod.invoke(this, new Object[] {actionEventObject});} catch (InvocationTargetException exception) {exception.printStackTrace();System.out.println("出现了InvocationTargetException异常错误,错误信息为:" + exception.getMessage());} catch (IllegalArgumentException exception) {exception.printStackTrace();System.out.println("出现了IllegalArgumentException异常错误,错误信息为:" + exception.getMessage());} catch (IllegalAccessException exception) {exception.printStackTrace();System.out.println("出现了IllegalAccessException异常错误,错误信息为:" + exception.getMessage());}}public void closeThisFrameButton_onClick(ActionEvent e) {eventSourceContainer.getOneChatMainFrame().dispose();eventSourceContainer.getOneChatMainFrame().setVisible(false);}public void sendMessageButton_onClick(ActionEvent e) {String messageContent=eventSourceContainer.getSendInfoTextPane().getText();if((messageContent.equals("")||(messageContent.length()==0))){return; //如果本次没有真正输入聊天信息的内容,则不进行发送}// MessageInfoVO returnMessageInfoVO=null;String sendMessageTime=DateAndTimeUtil.getHourMinuteSecondString();StringmessageSender=IMSystemClientUtils.getUserLoginOnLineInfoVOInstance().getUserAliaoName ()+"("+IMSystemClientUtils.getUserLoginOnLineInfoVOInstance().getUserIMCode()+")";StringmessageReceiver=eventSourceContainer.getOneFindFriendInfoVO().getUserAliaoName()+"("+ eventSourceContainer.getOneFindFriendInfoVO().getUserIMCode()+")";MessageInfoVO oneMessageInfoVO=new MessageInfoVO();oneMessageInfoVO.setSendMessageTime(sendMessageTime);oneMessageInfoVO.setMessageContent(messageContent);oneMessageInfoVO.setMessageSender(messageSender);oneMessageInfoVO.setMessageReceiver(messageReceiver);StringhttpClientMessageInfoRequestResponseeClassName=ParseXMLConfFileAllTags.getProperty("h ttpClientMessageInfoRequestResponse.className");HttpClientMessageInfoRequestResponseInterface oneHttpClientMessageInfoRequest=null;try {oneHttpClientMessageInfoRequest =new GenericTypeMethodsFactory().newSomeOneInstance(httpClientMessageInfoRequestResponsee ClassName); //利用范型工厂方法直接获得目标对象实例}catch (IMSystemException exception) {exception.printStackTrace();System.out.println("出现了OASystemException异常错误,错误信息为:"+exception.getMessage());}try {// returnMessageInfoVO = oneHttpClientMessageInfoRequest.doSendMessageInfo(oneMessageInfoVO);oneHttpClientMessageInfoRequest.doSendMessageInfo(oneMessageInfoVO);} catch (IMSystemException exception) {exception.printStackTrace();System.out.println("出现了OASystemException异常错误,错误信息为:" +exception.getMessage());}eventSourceContainer.getSendInfoTextPane().setText("");String oneMessageText=sendMessageTime+" "+messageSender+"对"+messageReceiver+"说:"+ "\n ";//下面的代码设置标题为粗体样式SimpleAttributeSet oneSimpleAttributeSet = new SimpleAttributeSet();StyleConstants.setBold(oneSimpleAttributeSet, true);StyledDocumentchatResultTextPaneDocument=eventSourceContainer.getChatResultTextPane().getStyledDocume nt();try {chatResultTextPaneDocument.insertString(chatResultTextPaneDocument.getLength(),oneMessageText,oneSimpleAttributeSet);} catch (BadLocationException exception) {exception.printStackTrace();System.out.println("出现了BadLocationException异常错误,错误信息为:" + exception.getMessage());}chatResultTextPaneDocument=eventSourceContainer.getChatResultTextPane().getStyledDoc ument();try {chatResultTextPaneDocument.insertString(chatResultTextPaneDocument.getLength(),messageContent+"\n",eventSourceContainer.getSendInfoTextPane().getParagraphAttributes());} catch (BadLocationException ex) {}}public void chooseFaceButton_onClick(ActionEvent e) {int floatPanelWidth = 436;int floatPanelHeight = 320;SelectUserFaceWindow oneSelectUserFaceWindow =new SelectUserFaceWindow(eventSourceContainer.getOneChatMainFrame(),floatPanelWidth, floatPanelHeight);oneSelectUserFaceWindow.openThisWindow();}Color chatMessageForegroundColor = Color.BLACK;public void setupForegroundColorButton_onClick(ActionEvent e) {Color userSelectColor =JColorChooser.showDialog(eventSourceContainer.getOneChatMainFrame(),"请选择您的文字的颜色",Color.black);if (userSelectColor != null) {chatMessageForegroundColor = userSelectColor;}SimpleAttributeSet oneSimpleAttributeSet = new SimpleAttributeSet();StyleConstants.setForeground(oneSimpleAttributeSet,chatMessageForegroundColor);eventSourceContainer.getSendInfoTextPane().setCharacterAttributes(oneSimpleAttributeSet, false); //不覆盖其他的属性项目}public void insertImageFileButton_onClick(ActionEvent e) {String userSelectedImageFileName = null;userSelectedImageFileName = eventSourceContainer.getSelectedImageFile();eventSourceContainer.insertImageFileToSendInfoTextPane(new ImageIcon(userSelectedImageFileName));}public void returnKeySendMessageMenuItem_onClick(ActionEvent e) {}public void ctrlAndReturnKeySendMessageMenuItem_onClick(ActionEvent e) {}public void messagePatternMenuItem_onClick(ActionEvent e) {}public void selfDefineFontButton_onClick(ActionEvent e) {FontChooserDialog oneFontChooserDialog=new FontChooserDialog(null,true,null); //参数true代表为模式对话框oneFontChooserDialog.setAlwaysOnTop(true);oneFontChooserDialog.setVisible(true);Font returnUserSelectedFont=oneFontChooserDialog.getUserSelectFontInThisDialog();SimpleAttributeSet oneSimpleAttributeSet = new SimpleAttributeSet();StyleConstants.setFontFamily(oneSimpleAttributeSet, returnUserSelectedFont.getFamily());StyleConstants.setFontSize(oneSimpleAttributeSet, returnUserSelectedFont.getSize());if(returnUserSelectedFont.isBold()){StyleConstants.setBold(oneSimpleAttributeSet, true);}else if(returnUserSelectedFont.isItalic()){StyleConstants.setItalic(oneSimpleAttributeSet, true);}else if(returnUserSelectedFont.isPlain()){StyleConstants.setBold(oneSimpleAttributeSet, false);StyleConstants.setItalic(oneSimpleAttributeSet, false);}else if((returnUserSelectedFont.isBold())&&(returnUserSelectedFont.isItalic())){ StyleConstants.setBold(oneSimpleAttributeSet, true);StyleConstants.setItalic(oneSimpleAttributeSet, true);}eventSourceContainer.getSendInfoTextPane().setCharacterAttributes(oneSimpleAttributeSet, false); //不覆盖其他的属性项目}}2、ChatMainFrame_ItemListenerEventHandler(1)类名称为ChatMainFrame_ItemListenerEventHandler,包名称为com.px1987.imsystem.client.frame.chatframe.event,实现java.awt.event.ItemListener接口(2)编程该事件类package com.px1987.imsystem.client.frame.chatframe.event;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import ng.reflect.InvocationTargetException;import ng.reflect.Method;import javax.swing.text.SimpleAttributeSet;import javax.swing.text.StyleConstants;import com.px1987.imsystem.client.frame.chatframe.panel.ChatMainFrame_CenterInfoPanel; public class ChatMainFrame_ItemListenerEventHandler implements ItemListener { private ChatMainFrame_CenterInfoPanel eventSourceContainer = null;private String eventHandlerMethodName = null;public ChatMainFrame_ItemListenerEventHandler() {super();}public ChatMainFrame_ItemListenerEventHandler(ChatMainFrame_CenterInfoPaneleventSourceContainer, String eventHandlerMethodName) { super();this.eventSourceContainer = eventSourceContainer;this.eventHandlerMethodName = eventHandlerMethodName;}@SuppressWarnings("unchecked")public void itemStateChanged(ItemEvent itemEventObject) {Class currentEventHandlerClass = this.getClass();Method eventHandlerMmethod = null;try { //获得事件处理方法eventHandlerMmethod = currentEventHandlerClass.getMethod(this.eventHandlerMethodName, new Class[] {itemEventObject.getClass()});} catch (SecurityException exception) {exception.printStackTrace();System.out.println("出现了SecurityException异常错误,错误信息为:" +exception.getMessage());} catch (NoSuchMethodException exception) {exception.printStackTrace();System.out.println("出现了NoSuchMethodException异常错误,错误信息为:" + exception.getMessage());}try { //调用指定的事件处理方法eventHandlerMmethod.invoke(this, new Object[] {itemEventObject});} catch (InvocationTargetException exception) {exception.printStackTrace();System.out.println("出现了InvocationTargetException异常错误,错误信息为:" + exception.getMessage());} catch (IllegalArgumentException exception) {exception.printStackTrace();System.out.println("出现了IllegalArgumentException异常错误,错误信息为:" + exception.getMessage());} catch (IllegalAccessException exception) {exception.printStackTrace();System.out.println("出现了IllegalAccessException异常错误,错误信息为:" +exception.getMessage());}}public void fontColorFormatButton_itemStateChanged(ItemEvent e) {if(eventSourceContainer.getSendMessageToolBar().getFontColorFormatButton().isSelected()) { eventSourceContainer.getCenterDownButtonPanel().add(eventSourceContainer.getFontSetupToolBar(),java.awt.BorderLayout.SOUTH);} else {eventSourceContainer.getCenterDownButtonPanel().remove(eventSourceContainer.getFontSetupToolBar());}eventSourceContainer.invalidate();eventSourceContainer.repaint();eventSourceContainer.validate();}public void fontSizeJComboBox_ItemListener(ItemEvent e) {int fontSize = Integer.parseInt( (String) eventSourceContainer.getFontSetupToolBar().getFontSizeJComboBox().getSelectedItem());SimpleAttributeSet oneSimpleAttributeSet = new SimpleAttributeSet();StyleConstants.setFontSize(oneSimpleAttributeSet, fontSize);eventSourceContainer.getSendInfoTextPane().setCharacterAttributes(oneSimpleAttributeSet, false); //不覆盖其他的属性项目}public void fontNameJComboBox_ItemListener(ItemEvent e) {String fontName = (String) eventSourceContainer.getFontSetupToolBar().getFontNameJComboBox().getSelectedItem();SimpleAttributeSet oneSimpleAttributeSet = new SimpleAttributeSet();StyleConstants.setFontFamily(oneSimpleAttributeSet, fontName);eventSourceContainer.getSendInfoTextPane().setCharacterAttributes(oneSimpleAttributeSet, false); //不覆盖其他的属性项目}/*在JTextPane中常用到属性类:SimpleAttributeSet和StyleConstant。

模拟QQ聊天程序设计报告

模拟QQ聊天程序设计报告

模拟QQ聊天程序设计报告----网络软件创新实验报告一. 需求分析1.1 开发背景在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,类似QQ、网络聊天时一类的聊天系统的发展日新月异,因此产生了制作一个类似QQ的网络聊天工具的;而且通过制作该程序还能更好的学习网络软件编程知识。

1.2 功能要求(1)登录功能。

(2)客户可以通过服务器转发,实现一对一和多对多聊天。

(3)实现呼叫功能。

(4)客户端程序应该可以实时显示目前其它用户的状态。

(5)应该具有易用、美观的图形界面。

1.3 运行环境本系统基于WIN NT 和ACCESS XP设计,适用于WIN2000/WIN XP等系统,并需要安装office2000/office xp.1.4 功能实现1.登录验证功能。

2. 客户通过服务器转发,实现聊天功能。

3. 实时显示目前其它用户的状态。

4. 保存并能察看聊天纪录。

5.申请新的用户号码。

6. 易用、美观的图形界面,实现系统托盘。

二.技术路线2.1 总体方案为实现网络聊天的功能,采用Windows Socket编程,服务器与客户端采用了TCP/IP 连接方式,在设计聊天方案时,实行将所有信息发往服务器端,再由服务器进行分别处理的思路,服务器端是所有信息的中心。

由于服务器端要保存用户信息,我们利用数据库来实现这一功能,因此首先需要建立用户信息数据库。

在客户端保存聊天纪录和用户号码这一功能的实现中,采用了文件系统设计。

在信息到来及好友上线时,通过闪动托盘图标和播放不同的音乐进行提示。

建立消息链表来保存用户接收的各种消息。

服务器及客户端的功能可划分为以下模块:客户端:1)登陆功能:建立与服务器的连接并登陆,能显示登陆错误信息。

2)界面显示:将在线好友显示在好友列表中,并实现系统托盘,加入工具栏便于操作。

3)聊天功能:与好友聊天。

4)聊天纪录:能保存聊天纪录,并能察看聊天纪录。

java课程设计仿qq

java课程设计仿qq

java课程设计仿qq一、教学目标本章节的教学目标旨在让学生掌握Java编程语言的基本知识,学会使用Java 编写简单的应用程序,并通过仿QQ的项目实践,培养学生解决实际问题的能力。

具体分为以下三个部分:1.知识目标:(1)了解Java语言的基本语法和结构;(2)掌握Java中的面向对象编程思想;(3)熟悉Java常用类库和API;(4)理解Java多线程编程的基本概念。

2.技能目标:(1)能够使用Java编写简单的控制台应用程序;(2)学会使用Java编写GUI应用程序;(3)掌握Java网络编程的基本方法;(4)能够独立完成一个仿QQ的简单项目。

3.情感态度价值观目标:(1)培养学生的编程兴趣,提高自主学习能力;(2)培养学生团队协作、交流分享的好习惯;(3)培养学生勇于面对困难,积极解决问题的精神。

二、教学内容本章节的教学内容主要包括以下几个部分:1.Java语言基本语法和结构;2.面向对象编程思想及其应用;3.Java常用类库和API;4.Java多线程编程;5.Java网络编程;6.仿QQ项目实践。

三、教学方法为了提高教学效果,本章节将采用以下教学方法:1.讲授法:讲解Java语言的基本语法、面向对象编程思想、常用类库和API等知识;2.案例分析法:分析典型实例,让学生更好地理解Java编程方法;3.实验法:让学生动手实践,完成仿QQ项目,提高实际编程能力;4.讨论法:分组讨论,培养学生的团队协作能力和解决问题的能力。

四、教学资源为了支持教学,我们将提供以下教学资源:1.教材:Java编程语言相关教材;2.参考书:提供Java编程相关参考书籍;3.多媒体资料:制作PPT、视频等教学课件;4.实验设备:提供计算机实验室,让学生进行编程实践。

五、教学评估本章节的教学评估将采用多元化的评估方式,以全面、客观、公正地评价学生的学习成果。

评估方式包括:1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和积极性;2.作业:布置适量的作业,评估学生的编程能力和对知识的理解程度;3.考试:定期进行笔试和机试,评估学生的知识掌握情况和解决问题的能力;4.项目实践:评估学生在完成仿QQ项目过程中的表现,包括编程能力、团队协作和解决问题能力。

lonux模拟qq课程设计

lonux模拟qq课程设计

lonux模拟qq课程设计一、教学目标本课程的学习目标包括知识目标、技能目标和情感态度价值观目标。

知识目标要求学生掌握Linux操作系统的基本概念、命令和配置方法;技能目标要求学生能够使用Linux命令行进行基本操作,如文件管理、系统配置和网络设置;情感态度价值观目标要求学生培养对Linux操作系统的兴趣和好奇心,提高自主学习和解决问题的能力。

通过本课程的学习,学生将能够了解Linux操作系统的历史背景和发展趋势,熟练使用Linux命令行进行基本操作,掌握Linux系统的配置和管理方法,培养对Linux操作系统的兴趣和自信心,提高自主学习和解决问题的能力。

二、教学内容本课程的教学内容主要包括Linux操作系统的基本概念、命令和配置方法。

教学大纲如下:1.Linux操作系统概述:介绍Linux操作系统的历史背景、发展现状和特点优势。

2.Linux命令行操作:学习Linux命令行的基本操作,如文件管理、文本编辑和系统信息查看。

3.Linux文件系统:了解Linux文件系统的结构和工作原理,学习文件权限管理和文件压缩解压缩方法。

4.Linux用户和组管理:学习用户和组的创建、删除和管理方法,掌握用户权限的设置和分配。

5.Linux网络配置:掌握Linux操作系统的网络配置方法,包括IP地址设置、网关和DNS解析等。

6.Linux常用软件和工具:介绍Linux系统中常用的软件和工具,如文本编辑器、文件传输工具和终端模拟器。

三、教学方法本课程采用讲授法、讨论法、案例分析法和实验法等多种教学方法。

1.讲授法:通过讲解Linux操作系统的基本概念和原理,使学生掌握相关知识。

2.讨论法:学生进行小组讨论,分享学习心得和经验,提高学生的参与度和积极性。

3.案例分析法:通过分析实际案例,使学生了解Linux操作系统的应用场景和实际操作方法。

4.实验法:安排实验室实践环节,让学生亲自动手操作Linux系统,巩固所学知识和技能。

模拟qq聊天小程序课程设计

模拟qq聊天小程序课程设计

模拟qq聊天小程序课程设计一、课程目标知识目标:1. 学生能够理解并掌握QQ聊天小程序的基本原理和功能。

2. 学生能够了解并运用程序设计中的顺序、选择和循环结构。

3. 学生能够掌握在QQ聊天小程序中实现文字、表情发送和接收的基本方法。

技能目标:1. 学生能够运用所学知识,设计并编写一个简单的模拟QQ聊天小程序。

2. 学生能够在编写程序过程中,熟练使用编程软件,掌握调试和修改程序的基本技巧。

3. 学生能够通过小组合作,提高沟通与协作能力,共同完成课程任务。

情感态度价值观目标:1. 学生培养对编程的兴趣和热情,树立编程改变生活的信念。

2. 学生在学习过程中,培养解决问题的能力和勇于尝试的精神。

3. 学生通过课程学习,认识到网络交流的重要性,提高网络素养,尊重网络道德规范。

本课程针对初中年级学生,结合教材内容,注重实用性,旨在让学生在掌握编程知识的同时,提高实际操作能力和团队协作能力。

课程目标具体、可衡量,便于学生和教师在教学过程中明确预期成果,为后续的教学设计和评估提供依据。

二、教学内容本章节教学内容主要包括以下三个方面:1. 程序设计基础知识:- 了解编程语言的基本概念,如变量、数据类型、运算符等。

- 学习程序设计的基本结构,包括顺序、选择和循环结构。

2. QQ聊天小程序功能实现:- 分析QQ聊天小程序的功能需求,明确文字、表情发送和接收的实现方法。

- 学习使用编程语言实现聊天界面设计、消息发送与接收等核心功能。

3. 实践与拓展:- 制定实践任务,分组进行模拟QQ聊天小程序的开发,培养学生的实际操作能力。

- 结合教材相关章节,拓展学习网络编程知识,了解实际应用场景。

教学内容安排和进度如下:1. 程序设计基础知识(2课时)2. QQ聊天小程序功能实现(3课时)3. 实践与拓展(2课时)本教学内容紧密结合课程目标,注重科学性和系统性,按照教学大纲逐步推进,确保学生能够学以致用,提高编程实践能力。

教学内容与教材章节紧密关联,为学生提供清晰的学习路径和丰富的学习资源。

java课程设计仿qq

java课程设计仿qq

java课程设计仿qq一、教学目标本节课的教学目标是让学生掌握Java语言基础,学会使用Java编写简单的程序,通过仿QQ的项目实践,培养学生的编程能力和团队合作精神。

知识目标:使学生掌握Java语言的基本语法、数据类型、控制结构、类与对象等基础知识。

技能目标:使学生能够使用Java语言编写简单的程序,具备一定的编程能力;学会使用团队协作工具进行项目开发。

情感态度价值观目标:培养学生对编程的兴趣,增强其自主学习意识和团队协作精神,提高其面对挑战的信心。

二、教学内容本节课的教学内容主要包括Java语言基础和项目实践两部分。

1.Java语言基础:包括基本语法、数据类型、控制结构、类与对象等知识,以教材为基础,结合实例进行讲解。

2.项目实践:以仿QQ项目为例,让学生分组进行实践,培养学生的编程能力和团队合作精神。

三、教学方法本节课采用讲授法、案例分析法和实验法等多种教学方法。

1.讲授法:用于讲解Java语言基础知识,使学生掌握基本概念和语法。

2.案例分析法:通过分析实际案例,让学生理解Java语言的应用场景,提高其编程能力。

3.实验法:让学生分组进行项目实践,培养其团队合作精神和动手能力。

四、教学资源本节课的教学资源包括教材、多媒体资料和实验设备。

1.教材:用于引导学生学习Java语言基础知识,提供丰富的实例和练习题。

2.多媒体资料:用于辅助讲解和展示Java语言的应用场景,增强学生的学习兴趣。

3.实验设备:包括计算机、网络等,用于支持学生进行项目实践,培养其编程能力和团队合作精神。

五、教学评估本节课的评估方式包括平时表现、作业和考试三个部分,以保证评估的客观性和公正性。

1.平时表现:通过观察学生在课堂上的参与程度、提问回答等情况,了解其对知识的掌握程度。

2.作业:布置与课程内容相关的编程作业,让学生巩固所学知识,评估其编程能力。

3.考试:进行期中和期末考试,全面测试学生对Java语言基础知识的掌握程度及其应用能力。

模拟QQ的网络聊天系统

模拟QQ的网络聊天系统

第一部分绪论1.1课题的来源及意义近年来随着PC的广泛应用和网络的不断发展,目前网络技术已经成为了计算机领域内的最热门的发展方向。

当前是数字信息时代,网络时代,任何一种编辑工具都不能忽视在网络上的应用,并且随着Internet 的普及和宽带技术的成熟,越来越多的用户进入网络世界中享用浏览新闻、查询信息、发送邮件、在线观看电影等服务,享受网络带来的便利和办公的高效,与此同时一个新型的Web应用程序为网民之间提供了一个实时通信的功能和场所,这就是聊天室。

在网络早期就开始盛行,不论是BBS,IRC 都有类似网上聊天室的机制。

聊天室为网友提供了实时性对话的渠道,是网络上极为流行的一项服务,极大程度上方便了处于世界各地的友人之间的相互联系,也使世界好像一下子缩小了,不管你在哪里,只要你上了网,打开这些软件,就可以给你的朋友发信息,不管对方是否同时也在线,只要知道他的号码。

聊天室适用于网上会议或闲聊的一些场合。

聊天室为网友提供了较好的交友环境,网友之间相互以文字交谈,在形式上有点类似笔友的性质,却大大节省了书信往返的时间,这也是网上交友之所以如此热门的原因。

1.2课题设计的目的和要求1、综合运用本课程及计算机网络的相关知识设计并实现一个网络应用程序,以Visual C++6.0作为开发平台,通过实践复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力,进一步加强winsock编程技术。

2、采用客户/服务器模式,分为客户端程序和服务器程序。

服务器采用WINSOCK I/O模型中的任一种,支持多个客户同时在线聊天。

客户端程序和服务器程序通过网络交换聊天字符串内容,服务器窗口的列表框中显示当前在线用户,支持客户端之间的私聊(可以通过服务器中转)。

1.3 时间安排★选择课题 1天★总体设计和详细设计 8天★源代码 3天★调试与测试 2天★书写实验报告 1天第二部分系统开发环境与关键技术2.1系统开发环境◆操作系统:WINDOWS XP◆开发平台:Microsoft Visual C++6.0、Microsoft Visio 2003、 MSDN◆开发语言:C++2.2 关键技术2.2.1 Visual C++和面向对象程序设计VC基于C,C++语言,主要由MFC组成,是与系统联系非常紧密的编程工具,它兼有高级和低级语言的双重性,功能强大,灵活,执行效率高,几乎可以说VC在Windows平台无所不能。

仿QQ聊天系统实验报告

仿QQ聊天系统实验报告

软件工程项目实践大作业仿QQ软件的设计与实现软件工程项目实践大作业仿QQ软件的设计与实现班级:20090615学号:2009061503姓名:教师:于金峰平时成绩30分:+大作业成绩:70分:=总分:__ 成绩: _2012年6月一、项目可行研究新近一两年Android手机如雨后春笋般涨势迅猛,由此基于Android系统的应用开发也变得更加普遍,结合本次课程的学习,也为了更好的培养我们的自主开发能力,我们小组开发了这个模仿QQ的聊天系统。

二、需求阶段1.系统功能需求(1)登录功能。

(2)客户可以通过服务器转发,实现一对一和多对多聊天。

(3)实现呼叫功能。

(4)客户端程序应该可以实时显示目前其它用户的状态。

(5)应该具有易用、美观的图形界面。

2. 系统性能需求实用性:为信息交流提供方便,有效进行作业管理。

操作简单:本系统应该适用于不同水平的使用者,包括事业单位和企业单位,同时系统不应太复杂和烦琐,因此要求系统的操作尽可能简单易行。

技术先进:产品的系统设计和开发应紧跟着整个计算机发展潮流,采用当时最先进的设计思想,利用最新的开发技术和开发工具。

使系统能够无论在功能设计上,还是在技术实现上,都处于同行业的领先地位。

安装使用简便:服务器端的安装简洁明了,客户机无需再装任何软件就可以直接注册登陆聊天。

适应性:应该能广泛应用于不同类型的企事业单位。

系统采用模块化设计,用户可以根据自己的实际情况自行组合,使系统在不同的硬件环境下都能得以应用。

代码可读性好:文中的代码将尽可能简洁,易懂。

3. 系统运行需求1、移动客户端需500MHz及以上的处理器2、移动客户端需256MB及以上的ROM空间3、移动客户端需256MB及以上的RAM空间4、移动客户端需具有WiFi/GRPS网络接收模块,能正常连接到网络5、服务端需具有P4 1.6GHz及以上的处理器6、服务端需具有80GB及以上的硬板空间7、服务端需具有1GB及以上的内存空间三、设计过程1. 业务流程图业务流程图2. 功能结构图3. 数据流图(4. ER 图用户聊天记录登陆信息用户名密码验证信息登陆MN用户名密码登陆信息输入NM聊天时间聊天对象聊天内容图6 ER 图5. 后台数据库设计基于服务器跨平台运行的架构,服务器的后台数据库使用了SQL Server2005。

仿qq课程设计

仿qq课程设计

仿qq 课程设计一、课程目标知识目标:1. 让学生理解仿QQ软件的基本功能与界面设计,掌握相关的信息技术知识。

2. 学习并掌握网络通信的基本原理,了解信息安全的重要性。

3. 了解软件开发的基本流程,认识到团队协作在软件开发中的作用。

技能目标:1. 培养学生运用所学知识设计并实现简易的即时通讯软件的能力。

2. 提高学生分析问题、解决问题的能力,培养创新思维和动手实践能力。

3. 培养学生的团队协作能力,提高沟通表达和协作解决问题的效率。

情感态度价值观目标:1. 培养学生热爱科学、积极探索的学习态度,激发对信息技术的兴趣和热情。

2. 增强学生的信息安全意识,树立正确的网络道德观念。

3. 培养学生的责任感和团队精神,提高面对挑战的勇气和自信心。

分析课程性质、学生特点和教学要求,本课程将目标分解为以下具体学习成果:1. 学生能够独立完成仿QQ软件的基本功能设计与实现。

2. 学生能够运用所学知识,针对实际需求进行创新性设计和改进。

3. 学生能够在团队协作中发挥自己的作用,共同解决软件开发过程中遇到的问题。

4. 学生能够树立正确的网络道德观念,自觉维护网络环境的安全与和谐。

二、教学内容1. 网络通信原理:讲解网络通信的基本概念、原理和模型,以教材第三章为基础,包括TCP/IP协议、客户端与服务器通信过程等。

2. 软件界面设计:分析QQ软件的界面设计,结合教材第五章,教授界面布局、色彩搭配、图标设计等基本知识。

3. 数据存储与传输:以教材第四章为参考,讲解数据在即时通讯软件中的存储和传输方式,强调数据安全和隐私保护。

4. 功能模块实现:根据教材第六章,教授如何实现仿QQ软件的登录、消息发送与接收、好友管理等功能模块。

5. 信息安全:结合教材第二章,讲解信息安全的基本概念,强调密码学在即时通讯软件中的应用。

6. 团队协作与项目管理:以教材第七章为依据,培养学生团队协作精神,教授项目管理和沟通技巧。

教学安排与进度:第一周:网络通信原理学习,了解TCP/IP协议和客户端/服务器通信过程。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录绪论 (2)一.需求分析 (2)1.1软件功能需求分析 (3)1.2 安全需求分析 (3)二.总体设计 (4)2.1 软件结构图 (4)2.2 功能描述 (4)2.2.1注册功能概要 (5)2.2.2登录功能概要 (5)2.2.3聊天功能概要 (6)2.3 安全设计 (7)三.数据库设计 (7)3.1概念结构设计 (7)3.2逻辑结构设计 (8)3.3物理结构设计 (8)四.详细设计 (8)4.1 用户聊天模块总体流程图 (9)4.2 服务端模块 (9)4.3 客户端模块 (10)五.编码 (15)六.结论 (17)学习体会 (18)致谢 (18)参考文献 (18)绪论随着现代技术的不断输入和信息化的广泛普及,移动网络作为一种新兴事物,在近些年得到了前所未有的普及和深入,移动网络上的各种应用层出不穷,给各个阶层、各个年龄段的用户提供了不同的个性化的服务。

而现代中小型企业的领导认识到进一步提高企业信息化的必要性。

为使企业能在瞬息万变的信息时代生存下去,适应激烈的市场竞争,现代企业要求加强员工之间的交流和通信能力,尤其是领导和员工之间的共同能力,实时的交流系统就是在这种条件下诞生的。

在这个信息化时代,手机已成为继固话之后最为通俗的交流工具,“聊天”成了生活的必需品,这就有了系统下人与人之间的多样会话方式—QQ聊天。

传统会话聊天或许是面对面闲话家常或许是通过打电话进行交流,但都存在各种不便及弊端。

而手机QQ,在手机系统下,占用手机相对很小的空间,系统的记录了QQ好友的信息,不仅突破了各种条件的束缚,减轻了机主的负担,更方便了使用者的通讯交流。

综上所述,本课题主要研究基于Android的移动聊天系统,以更好的用户体验性为目的开发出界面简洁,用户易操作的移动即时通信聊天工具。

该聊天工具的主要功能:用户注册,登录,好友一对一聊天,添加新好友,修改个人信息等。

在该即时通信工具中利用Bmob实现Android端与Bmob服务端的数据操作。

Bmob 对数据的增删改查找做了很好地封装,以及其批量的处理。

客户端之间通过服务器对数据的转发实现相互通信。

一.需求分析随着经济全球化的推进以及企业激烈的竞争,改善企业内部及整个供应链各环节的管理、调度资源配置,迅速适应客户的新需求和市场新机遇,是企业赢得竞争胜利的决定性因素。

需求分析是软件分析中的一个重要步骤。

它的基本任务是要准确地分析出系统应用者的需要,以及系统目标必须具备哪些功能。

这些功能必须准确地,完整地体现出用户的要求。

1.1软件功能需求分析通过对用户需求的市场调查的分析,确定反应用户需求的系统逻辑模型,把整个设计划分成3个单元,分别是程序启动、用户界面、后台服务。

使用Android 和java编程语言及网络数据库相结合,编写一个基于android端的移动聊天系统软件。

这个系统提供多个用户及时并发通信的平台。

未注册用户可以注册成系统成员,已注册用户可以通过登录进入聊天系统。

在系统中用户可以选择与某一个用户聊天,用户可以查找好友或附近的人,可以添加好友或把好友加黑名单等。

➢用户注册:用户在注册界面填入相关正确信息后,后台对其进行处理。

➢用户登录:用户输入自己的QQ帐号及密码后,点击登录,后台对其进行验证,以及好友的查找,登录成功后返回该用户的会话界面。

➢聊天:用户选定聊天对象后,对其发送信息,信息将由后台转发给选定的聊天对象,进行,提示,显示。

➢后台运行用户可以退出主界面,将聊天软件在后台运行,当有消息传入时,消息会用广播的形势显示。

➢后台管理:对用户的管理。

1.2 安全需求分析由于Android系统自身具备的开放源码的特征,它的安全性能成为信息安全领域研究的一个重要课题。

Android的安全性能主要体现在两个方面:Android 的系统安全和数据安全。

Android系统安全是指智能终端本身的安全,是对操作系统的保护,防止未授权的访问及对授权用户服务的拒绝或对未授权用户服务的允许,包括行为检测、记录等措施。

Android的数据安全指确保存储数据完整性、合法性二个方面,要求做到系统正确地传输数据,授权程序顺利地读取数据。

Android安全中的一个重要的设计点是在默认的情况下应用没有权限执行对其他应用程序、操作系统或用户的有害操作,这些操作包括读取用户的隐私数据,访问网络,保持设备活动等等,应用程序的进程是一个安全的黑盒子,在没有给它权限的时候它不能干扰其他应用程序。

二.总体设计系统采用流行的C/S结构模式。

系统的分析设计采用面向对象的技术,应用Visio等工具进行辅助设计。

2.1 软件结构图图2.1 软件结构图2.2 功能描述进入该软件,进入登录界面,如果没有账号,则可以点击立即注册,进入注册界面进行注册,登录进入主界面,显示会话、联系人、设置,通过选择相应菜单进行相关操作。

2.2.1注册功能概要➢输入注册需要的信息,且保证正确➢参与者:用户➢执行者:用户➢前提条件:开启程序,进入注册界面用户注册流程图:图2.2.1 用户注册流程图2.2.2登录功能概要➢判断输入信息格式➢服务器验证输入信息➢跳转进入好友列表界面登录流程图:失败图2.2.2 登录功能流程图2.2.3聊天功能概要➢用户点击联系人列表中的一个好友时,进入聊天界面➢在输入框输入信息,点击发送按钮,发送信息➢好友回复消息是在该聊天页面显示➢当有好友发消息过来时,系统会通过Toast提示➢当QQ在后台运行时有好友发送消息过来时,系统会通过广播的形势告诉用户➢用户聊天后退出聊天界面后,聊天信息保留用户聊天模块总体流程图:图2.2.3 用户聊天模块总体流程图2.3 安全设计通过为不同的用户设计不同的用户视图,和为每一个登录的用户设置密码来实现数据库的安全设计要求。

三.数据库设计3.1概念结构设计图3.1 总体E-R图3.2逻辑结构设计1)用户信息(用户编号,用户账号,用户密码,性别,昵称,头像)2)会话信息(消息编号,好友账号,好友头像,发送/接收消息时间,消息内容)3.3物理结构设计表3-1 用户信息-Users四.详细设计4.1 用户聊天模块总体流程图图4.1.1 用户聊天模块总体流程图4.2 服务端模块在该即时通信工具中利用Bmob实现Android端与Bmob服务端的数据操作。

Bmob对数据的增删改查做了很好地封装,以及其批量的处理。

客户端之间通过服务器对数据的转发实现相互通信。

服务端具体功能:➢注册信息:自动分配10位对象标识,并保存该用户信息,同时将信息返回给客户端。

➢登录信息:检查登录信息是否正确,并向客户端返回登录信息。

如信息正确,则用户可以成功登录,若登录信息不正确,则会提示是哪种登录错误➢聊天信息:转发给消息指定的用户。

➢用户间的联系:将各用户间的关系保存在服务器端,可以在服务器端看出所以QQ用户间的关系。

4.3 客户端模块客户端具体功能➢登录功能:建立与服务器的连接并登录,能显示登录错误信息。

➢界面显示:将好友显示在联系人列表中,并可以通过点击进入会话界面,进行与好友的聊天➢聊天功能:当好友发送消息时显示在会话界面。

用户也同时可以在输入框中输入相应信息点击发送与好友聊天。

➢聊天纪录:能保存聊天纪录,并能察看聊天纪录。

➢信息提示:系统弹出信息提示到来信息,并有声音提示。

➢发送端提示聊天的对方。

➢后台运行:当用户将客户端进行后台运行时,如果有消息传输过来,系统会直接通过广播的形势显示消息的来源以及内容。

用户在客户端点击应用程序图标后启动应用如下图:图4.3.1 客户端启动界面注册登录以后就进入主界面,界面下方有会话、联系人、设置选项,通过选择相应菜单进入相应功能界面,联系人界面如下图所示:图4.3.2 联系人界面通过点击联系人右面的加号添加好友并进入查找好友界面,前提是服务器端存在此用户才能搜索成功,例如搜索456用户,如下图所示:图4.3.3 查找好友界面点击添加按钮,则ymm用户向456用户发送好友添加申请,如果456用户在登录状态则会收到此申请,如果同意ymm的请求添加好友申请,则可以单击同意按钮,如下图:图4.3.4 好友添加请求界面单击同意按钮,则同意ymm的好友添加请求,否则忽视此条好友添加申请消息:图4.3.5 同意好友请求界面同意ymm的申请后,则ymm用户就是自己的好友了,可以与ymm进行对话图4.3.6 与ymm聊天界面退出456账号,登录ymm账号查看,此时可以看到456用户给自己发送的消息提醒条数并可查看相关聊天信息图4.3.7 456用户收到回话提醒及查看消息五.编码ChatActivity.java 用户聊天代码/*** 聊天界面*/public class ChatActivity extends ActivityBase implements OnClickListener,IXListViewListener, EventListener {private Button btn_chat_emo, btn_chat_send, btn_chat_add,btn_chat_keyboard, btn_speak, btn_chat_voice;XListView mListView;EmoticonsEditText edit_user_comment;String targetId = "";BmobChatUser targetUser;private static int MsgPagerNum;private LinearLayout layout_more, layout_emo, layout_add;private ViewPager pager_emo;private TextView tv_picture, tv_camera, tv_location;// 组装聊天对象targetUser = (BmobChatUser) getIntent().getSerializableExtra("user");targetId = targetUser.getObjectId();// BmobLog.i("聊天对象:" + targetUser.getUsername() + ",targetId = "// + targetId);//注册广播接收器initNewMessageBroadCast();initView();}/** * 加载消息历史,从数据库中读出*/private List<BmobMsg> initMsgData() {List<BmobMsg> list = BmobDB.create(this).queryMessages(targetId,MsgPagerNum);return list;}/*** 界面刷新*/private void initOrRefresh() {if (mAdapter != null) {if (MyMessageReceiver.mNewNum != 0) {// 用于更新当在聊天界面锁屏期间来了消息,这时再回到聊天页面的时候需要显示新来的消息int news= MyMessageReceiver.mNewNum;//有可能锁屏期间,来了N条消息,因此需要倒叙显示在界面上int size = initMsgData().size();for(int i=(news-1);i>=0;i--){mAdapter.add(initMsgData().get(size-(i+1)));// 添加最后一条消息到界面显示}mListView.setSelection(mAdapter.getCount() - 1);} else {mAdapter.notifyDataSetChanged();}} else {mAdapter = new MessageChatAdapter(this, initMsgData());mListView.setAdapter(mAdapter);}}public void onSuccess() {ShowLog("发送成功");((BmobMsg) values).setStatus(BmobConfig.STATUS_SEND_SUCCESS);parentV.findViewById(R.id.progress_load).setVisibility(View.INVISIBLE);parentV.findViewById(R.id.iv_fail_resend).setVisibility(View.INVISIBLE);parentV.findViewById(R.id. tv_send_status).setVisibility(View.VISIBLE);((TextView) parentV.findViewById(_send_status)).setText("已发送");}/*** 新消息广播接收者**/private class NewBroadcastReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {String from = intent.getStringExtra("fromId");String msgId = intent.getStringExtra("msgId");String msgTime = intent.getStringExtra("msgTime");// 收到这个广播的时候,message已经在消息表中,可直接获取BmobMsg msg = BmobChatManger.getInstance(ChatActivity.this).getMessage(msgId, msgTime);if (!from.equals(targetId))// 如果不是当前正在聊天对象的消息,不处理return;//添加到当前页面mAdapter.add(msg);// 定位mListView.setSelection(mAdapter.getCount() - 1);//取消当前聊天对象的未读标示BmobDB.create(ChatActivity.this).resetUnread(targetId);// 记得把广播给终结掉abortBroadcast();}}六.结论经过一个学期的学习,实践和教学老师的悉心指导,该仿QQ社交软件系统经过测试,达到了预期的目标,完成了一些基本的功能。

相关文档
最新文档