基于bs方式的即时通讯软件的设计与实现—免费计算机毕业设计论文内容摘要:
据表: users 中文名称 字段名 字段类型 字段长度 是否允许为空 备注 登录名 username varchar 50 not null 主键 用户昵称 nickname varchar 50 null 密码 password varchar 50 not null 登录状态 status int 4 not null 最后登录时间 logintime datetime 8 null 最后注销时间 logouttime datetime 8 null 最后消息编号 last_msg_id int 4 not null 表 42 聊天信息数据表: message 中文名称 字段名 字段类型 字段长度 是否允许为空 备注 消息编号 msg_id int 4 not null 主键 发送者用户名 sender varchar 50 not null 接受者用户名 receiver varchar 50 not null 消息内容 content varchar 255 not null 发送时间 sendtime datetime 8 not null 表 43 users变化监控表: global_info 中文名称 字段名 字段类型 字段长度 是否允许为空 备注 存储过程设计 为了提高执行效率,并且简化数据库访问的复杂程度,本系统设计了相应的存储过程完成基本的数据库相关功能。 根据对本 系统的分析共创建了 5个基本的存储过程:用户 登录 存储过程: UserLogin ;用户注销存储过程: UserLogout;发送消息存储过程: SendMessage ;最近聊天记录存储过程: GetRecentMsg ;获取最新消息存储过程: GetNewMessage。 1. 用户 登录 存储过程 UserLogin 实现用户的 登录 功能,如果成功 登录 则返回 0,反之则返回 1; 2. 用户注销存储过程 UserLogout 实现用户的登出功能,如果成功登出则返回 0,反之则返回 1; 3. 发送消息存储过程 SendMessage 首先对发送者和接收者的 用户名进行 检查,然后再插入新的聊天记录; 4. 最近聊天记录存储过程: GetRecentMsg 的作用是返回最近两个用户之间的聊天记录; 5. 获取最新消息存储过程 GetNewMessage 根据数据库 message 表中的msg_id 字段判断哪些是新消息,凡是消息 ID大于 msg_id 字段的均是新消息。 系统功能分析与设计 本系统的主要任务是提供用户之间实时的交流,方便用户之间相互的沟通。 1. 系统登录。 登录模块采用基于标准的 MVC架构的开发模式。 与一般的登录系统相似,主要是对登录用户的身份进行合法性验证。 登录状态分为两种 :在线、隐身。 根据自己的需求选择登录方式。 2. 登录状态切换。 当用户登录后还可以重新选择登录状态,通过选择下拉列表的选项可以切换用户的登录状态是在线或者隐身。 或者单击“注销”按钮,将注销用户的登录。 3. 用户列表查看。 当用户登录成功后,系统将显示给用户他的所有在线好友,并且实时的更新用户列表:当有好友登录后将即时的显示在用户列表中;当有好友临时退出系统后将在用户列表中消失。 4. 消息提示。 我们设计了一个类似于 MSN 提示框的小窗口,定时的检查是否有新消息,如果有的话弹出这个窗口,用户可以即时回复消息。 5. 查看近期消息。 当加 载消息发送页面的时候,会首先加载若干条近期的聊天记录,帮助用户回顾以往的聊天内容。 6. 发送消息。 用户选择发送对象后,直接进行发送。 7. 接收消息。 在消息发送后接收者能够实时接收消息。 根据需求分析和功能说明,开始系统的图形化建模,本系统的功能说明图43 所示: 图 43 系统功能说明图 ① webmsn 即时通讯系统执行者 a) Client: webmsn 登录 端,使用 webmsn 进行即时通讯的人 b) Server: webmsn 服务端,对用户进行注册、登录、资料管理的角色 c) DBServer: webmsn 数据库服务器,保存用户数据的角色 d) MsgSender:端对端传输消息或这文件时的发送端 e) MsgReceiver:端对端传输消息或者文件时的接受端 其中, MsgSender 和 MsgReceiver 从属于 Client ② webmsn 即时通讯系统用例说明 a) 注册:使用者通过注册成为 webmsn用户; b) 登录:连接服务器获得服务; c) 更改状态:更改自己在服务器的状态,状态分为:在线、隐身; d) 更改资料:更改自己的资料并保存在数据库服务器; e) 查找好友:从服务器获得好友信息; f) 传输信息:传送文本信息或者富 文本信息给好友; g) 退出系统:从服务器退出,取消服务; 系统模块设计 注册 模块 图 44 注册用例图 注册用例图用例说明: ①填写注册信息 ②检查信息格式 ③新注册申请 ④传输注册数据 ⑤生成新帐号 ⑥添加新用户命令 ⑦在数据库中添加新用户 登录 模块 图 45 登录用例图 ①登录用例图用例说明: a) 输入登录信息 b) 发送登录请求 c) 验证登录信息 d) 传输好友列表 e) 刷新在线用户列表 f) 通知好友上线 g) 改变好友状态 h) 读取用户数据命令 i) 从数据库中读取用户信息 传输信息 模块 图 46 传输信息用例图 ①在线传输信息用例图用例: a) 选择发送内容 b) 传输信息 c) 显示信息 退出系统 模块 图 47 退出系统用例图 ①退出系统用例 a) 退出 webmsn b) 发送退出消息 c) 刷新在线用户列表 d) 通知好友下线 e) 改变好友状态 f) 更改用户状态命令 g) 在数据库中更改用户状态数据 5 系统实现 发送消息功能 实现 为了实现发送消息的功能,在服务器端代码中需要定义 Ajax 方法SendMessage,具体代码如下: [AjaxMethod()] public void SendMessage(string strUsername, string strContent) { // 数据连接 SqlConnection conn = new SqlConnection([ConnStr])。 // SQL命令 SqlCommand cmd = ()。 = (SendMessage 39。 {0}39。 ,39。 {1}39。 , 39。 {2}39。 , , strUsername, strContent)。 try { // 打开数据连接 ()。 // 执行 SQL,发送消息 ()。 } catch (SqlException) { } finally { // 关闭连接 ()。 } 然后在客户端编写 getMessage函数,调用服务器 Ajax方法进行消息的发送。 getMessage 函数的代码如下: 接收消息功能 实现 为了实现接收消息的功能,在服务器端代码中需要定义 Ajax 方法GetNewMessage,具体代码如下: // 发送消息 function sendMessage() { // 消息内容输入框 var ta_content = el(content)。 // 如果输入内容不为空 if ( 0) { // 消息显示区域 var div_recentMsg = el(recentMsg)。 // 用户名 var username = (39。 =39。 )[1]。 // 发送消息 (username, )。 // 清空输入框 =。 // 页面跟随输入框滚动 (false)。 // 获取新消息 getNewMessage()。 } [AjaxMethod()] public DataSet GetNewMessage() { // 返回的数据集 DataSet ds = new DataSet()。 // 数据连接 SqlConnection conn = new SqlConnection([ConnStr])。 // SQL命令 SqlCommand cmd = ()。 // 数据适配器 SqlDataAdapter da = new SqlDataAdapter(cmd)。 try { // 向 DataSet中填充消息数据 (ds)。 try { // 向 DataSet中填充消息数据 (ds)。 } catch (SqlException) { } finally { // 关闭连接 ()。 } return ds。 } 然后在客户端编写 getNewMessage 函数,调用服务器 Ajax 方法进行消息的发送。 getNewMessage 函数的代码如下: function getNewMessage() { // 用户名 var username = (39。 =39。 )[1]。 // 消息显示区域 var div_recentMsg = el(recentMsg)。 // 获取最新消息的数据表 var dt = ().[0]。 for (var i = 0。 i。 i++) { // 一条消息对应与一个 span对象 var oneMsg = (span)。 // 消息发送者与发送对象 var strLine1 = [i].sender + 说 : ( + [i].sendtime + )。 strLine1 = DealBrackets(strLine1)。 // 消息内容 var strLine2 = [i].content。 strLine2 = DealBrackets(strLine2)。 // 显示样式 = pre + strLine1 + br + strLine2 + /pre。 6 测试 由于开发占据了我大部分的精力和时间,平时所作的测试也就是一些手工的调试和边界的黑盒测试,在这里只是列举我测试的一些范围,不做详细描叙。 测试内容 1.注册功能测试; 2.在线好友实时更新测试 3.发送消息功能测试; 4.查看近期消息功能测试; 5.接收消息功能测试。 测试结果 以上的测试案例是单独进行测试的,还需要进一步的交叉案例测试。 通过以上简单测试说明了设计方法的正确性,它已经初步符合了即时通讯系统的基本要求 —— 即时, 具有良好的检测性能和准确的检测结果。 但系统构架和代码设计还需要进一步优化,以提高系统的运行效率,降低所耗的系统资源,为用户提供更好的服务。 = 2px 2px 2px 2px。 = ([i].sender == username) ? blue : red。 = 39。 Courier New39。 , 宋体。 // 附加到 DOM (oneMsg)。 } } // 主进程循环 function mainLoop() { // 获取新消息 getNewMessage()。 // 每隔 1秒检查一次 setTimeout(mainLoop(), 1000)。 } // 显示最近的消息 getRecentMsg()。 // 定时更新消息列表 mainLoop()。 结 论 本次对即时通讯的课题研究涉及到了即时通讯协议的定制;即时通讯服务模式的探讨; webmsn 系统建模、设计到实现的一系列过程,重点讲叙了 Ajax 新技术的使用等知识,也介绍了相关的社会科学理论以及与。基于bs方式的即时通讯软件的设计与实现—免费计算机毕业设计论文
相关推荐
程可以说是一个对具体问题的反复理解和抽象的过程。 理解就是对现实问题的理解,要弄清楚究竟需要解决什么问题。 抽 象就是除去问题的表面,提取问题的本质,建立问题的逻辑模型,以便以后阶段 系统的设计实现。 需求分析阶段是软件产品生存命期中的一个重要阶段,其根本任务是确定用户对软件系统的需 求。 在高校评估工作中,文档的管理是相当重要的一个工作,需要花费大量的时间去整理文档资料
1、高中物理资源下载平台世昌的博客 生物试题L、下列对物质跨膜运输方式的叙述正确的是A、水分子是从溶液浓度高的地方向溶液浓度低的地方跨膜扩散B、主动运输的过程一定消耗细胞代谢产生的能量C、酒精、甘油等物质一定要借助于载体才能进入细胞D、离子、通过观察澄清石灰水是否变浑浊来判断酵母菌的呼吸方式B、哺乳动物成熟的红细胞既能进行有氧呼吸,又能进行无氧呼吸C、在进行无氧呼吸时
1、高中物理资源下载平台世昌的博客 (二)理科综合试卷本 试 卷 共 6 页 , 共 40 题。 满分300分,考试用时150分钟。 祝考试顺利注意事项:1答题前,考生务必将自己的姓名、班级、准考证号填写在答题卡上,并将准考证号条形码粘贴在答题卡上的指定位置。 用2B 铅笔将答题卡上试卷类型 A 方框涂黑。 2选择题的作答:每小题选出答案后,用 2B 铅笔把答题卡上对应题目的答案标号涂黑
1、高中物理资源下载平台世昌的博客 (5 月 1 模) 注意事项:(选择题)和第卷(非选择题)两部分。 时量 150 分钟,满分 300 分。 答题前,考生务必将自己的姓名、准考证号填写在答题卡及本试卷上。 2B 铅笔将答题卡上对应题目的答案标号涂黑。 如需改动,用橡皮檫擦干净后,再选涂其他的答案标号。 写在本试题卷及草稿纸上无效。 3. 第卷 3340 题为选考题,其他题为必考题。 考生作答时
可以说是一个对具体问题的反复理解和抽象的过程。 理解就是对现实问题的理解,要弄清楚究竟需要解决什么问题。 抽 象就是除去问题的表面,提取问题的本质,建立问题的逻辑模型,以便以后阶段 系统的设计实现。 需求分析阶段是软件产品生存命期中的一个重要阶段,其根本任务是确定用户对软件系统的需 求。 在高校评估工作中,文档的管理是相当重要的一个工作,需要花费大量的时间去整理文档资料
2V out3L 780 5C 10C 11C 13+ 12 V V C C220 V ~ 12V ~INR 1910KR 2010KR 2110K+ 5VP 17P 16P 13P 14P 15V C CGND1V i n2OV3+V4B 050 5SR 22240C 1535u FV C C 1 湿度传感器 电路 本设计的湿度检测电路由 555 多谐振荡器来实现, HS1101 作为电容变