IM通讯会议系统 .doc

上传人:yyf 文档编号:5089970 上传时间:2020-02-01 格式:DOC 页数:54 大小:477.50KB
返回 下载 相关 举报
IM通讯会议系统 .doc_第1页
第1页 / 共54页
IM通讯会议系统 .doc_第2页
第2页 / 共54页
IM通讯会议系统 .doc_第3页
第3页 / 共54页
IM通讯会议系统 .doc_第4页
第4页 / 共54页
IM通讯会议系统 .doc_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《IM通讯会议系统 .doc》由会员分享,可在线阅读,更多相关《IM通讯会议系统 .doc(54页珍藏版)》请在三一文库上搜索。

1、 高级编程程序设计高级编程程序设计 院 系: 计算机科学技术学院软件工程系 班 级: 软件 08 1 班 姓 名: XXX 学 号: 5 号 合 作 者: XX XXX XXX XXX 指导教师: XXX 2010 年 7 月 24 日 IMIMIM 通讯会议系统通讯会议系统通讯会议系统通讯会议系统 面向对象程序设计任务书面向对象程序设计任务书 一、题目:视频会议系统一、题目:视频会议系统 二、设计要求二、设计要求 (1 组成课程设计小组。 (2)小组成员分工协作完成。要求每个成员有自己相对独立的模块,同时 要了解其他组员完成的内容。 (3)查阅相关资料,自学具体课题中涉及到的新知识。 (4)

2、采用结构化、模块化程序设计方法设计,功能要完善,界面美观。 (5)所设计的系统应有对数据库操作。 (6)按要求写出课程设计报告,并于设计结束后 1 周内提交。其主要内容 包括:封皮、课程设计任务书,指导教师评语与成绩、目录、概述、软件需求 分析、总体设计、详细设计、程序的调试与测试、总结与体会、结束语、程序 清单(带中文注释) 、参考文献等。 三、课程设计工作量三、课程设计工作量 由于是设计小组团结协作完成设计任务,一般每人的程序量在 200 行有效 程序行左右,不得抄袭。 四、课程设计工作计划四、课程设计工作计划 2010 年 6 月 30 日前,指导教师讲课,学生根据题目准备资料,需求分析

3、; 2010 年 6 月 30 日,设计小组进行总体方案设计和任务分工; 2010 年 7 月 1 日,提交软件总体模块结构图和分工方案; 2010 年 7 月 1 日2010 年 7 月 6 日,每人完成自己承担的程序模块并通过 独立编译; 2010 年 7 月 21 日2010 年 7 月 22 日,将各模块集成为一个完整的系统, 并录入足够的数据进行调试运行,数据必须存储到磁盘文件中,已备验收; 2010 年 7 月 23 日,验收、开始撰写课程设计报告; 2010 年 7 月 25 日前,提交课程设计报告,并将软件的源文件及报告的 word 文档打印交到老师办公室里。 指导教师签章:

4、教研室主任签章 高级编程课程设计指导教师评语与成绩 指导教师评语: 课程设计表现成绩: 课程设计验收成绩: 课程设计报告成绩: 课程设计 总成绩: 指导教师签章 20010 年 7 月 日 I 目 录 1 概述概述 .1 1.1 研究的背景及意义.1 1.2 设计的任务和需要的知识点.1 1.3 具体完成的设计内容.2 2 需求分析需求分析.3 2.1 信息需求.3 2.2 功能需求.3 3 详细设计详细设计.4 3.1操作流程.4 3.2 部分详细设计.10 4 调试分析、测试结果调试分析、测试结果.16 5 总结总结.18 6 结束语结束语.20 7程序清单程序清单.22 参考文献参考文献

5、 .50 1 1 概述概述 1.1 研究的背景及意义研究的背景及意义 C#高级编程课程设计是软件工程专业实践性重要环节之一,是学习完 C#高级编程课程后进行的一次较全面的综合练习。其目的在于加深对编程 的理论、方法和基础知识的理解,掌握编程实现机理和各种典型算法,系统地 了解编程的设计和实现思路,培养学生的系统设计能力,并了解编程的发展动 向和趋势。 根据老师的要求: 1、 以小组为单位,延续上学期面向对象程序设计课设分组形式,由李秀鹏 任项目经理,臧艳协助工作。 2、 以最后一次综合实验 QQ 程序为基础,进行扩展。要求班长课代表带领 同学上网查阅相关资料,了解目前已有网上会议系统基本情况,

6、结合自己所学 加以实现。 3、 课设中要充分应用到本学期课程所学知识,必须包含 Internet 编程、多 线程编程、数据库技术、Win Form 程序开发等相关知识。 4、 可结合已有技术、自查资料等对该系统进行扩展开发,如加入视频、语 音功能等。 通过自己所学到的课本知识,充分运用 Socket,多线程,信道注册,网络 编程,数据库的操作等知识实现本组的 IM 会议系统。 1.2 设计的任务和需要的知识点设计的任务和需要的知识点 一、设计的任务分工:一、设计的任务分工: A:负责完成大部分程序的衔接工作,包括语音视频。 B:会议架构、模式、重点是数据库的管理、验证操作等。 C:实现 P2P

7、 通讯操作中的各种操作。 D:实现传文件功能、整个聊天室会议的建立。 E:建立服务器,构建比较完整的服务器。 1.根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么。每人 都上网查有关 WEB 会议系统的资料。主要是能够对此次课设的进行扩充内容 及要求有进一步的了解,使功能更完善,要求是在上次综合实验的基础上对内 2 容。 2.根据实现的功能,划分出合理的模块,明确模块间的关系。 3.编程实现所设计的程序。 4.程序调试与测试。 5.结果分析。程序运行结果包括正确的输入及其输出结果和含有错误的输入及 其输出结果。 6.编写课程设计报告; 二、所需要的知识:二、所需要的知识: 通过自己

8、所学到的课本知识,充分运用 Socket,多线程,信道注册,网络 编程,数据库的操作等知识实现本组的 IM 会议系统。 1.3 具体完成的设计内容具体完成的设计内容 由于人员分工问题,我们组 5 个人各有不同分工,但是都是在一起讨论研 究,怎样去实现,怎样实现是最好最简单,最快速的。 设计的主要内容涵盖: 1、登录服务器-数据库验证返回 :正确进入主窗体 错误: 重新登录 2、主窗体里的 Form_Load 开启监听,接收用户列表、上线、下线、会议 创建。 3、创建会议成功传入服务器-保存到数据库-参加会议-登 录验证-服务器 4、验证- 数据库验证-返回。 5、聊天-悄悄话-群聊广播-保存消

9、息据路漫游。 6、消息记录-调用-反馈服务器-数据库反馈-窗体显示。 7、主窗体双击单聊-主要是开启不同的端口号,协调好不同单聊个数的 端口。 8、发送文件-同步异步、现实进度条。 9 、视频控制、多人视频群发,接受视频和发送视频。 10、 语音聊天-实现从录音中 把 缓存字节发送到客户端 并成功接析。 而我在这里面讨论中主要负责语音、视频的开发研究工作,对大家的连接 要求做好规定。 3 2 需求分析需求分析 2.1 信息需求信息需求 这个 IM 会议系统信息需求要 5 个步骤: (1)安装软件客户端安装,服务器断开器。 (2) 运行,注册或登录,填写验证信息进行数据库验证。 (3)正在登录窗

10、体,联系到服务器并有服务器验证,正确的话进入主窗体。 (4) 在主窗体中可以P2P聊天各种操作,然后可以建立会议室,参加会议 (5)在会议中进行视频、传文件、查看消息记录的功能。 2.2 功能需求功能需求 整个 IM 会议系统分为服务器需求、和客户端功能需求: 首先是服务器: (1)服务器需要监听并时刻把所要连接的客户端加进来,并更新所有客户 端的在线列表、会议列表。 (2)服务器要执行数据库的操作:根据验证信息进行数据库验证、显示所有 注册人员信息、保存会议信息、保存会议记录、查看会议记录等功能。 其次是客户端: (1)客户端要建立起有好的界面关系,使用户一接触便能使用的功能。 (2)登录窗

11、体要做好是登录以及在登录途中退出的各种信息设置、添加各 种调制信息,以免 bug 的出现。 (3)主窗体要实现和 QQ 同样的双机私聊功能,设置在线人员列表图片, 并添加修改个人信息的功能。 (4)增加来电提示、上线提示、消息提示等提示功能。 (5)会议创建参加要有密码进入,一个用户只能同步参加一个会议,其他 的必须排队等待, (6)在会议中要显示创建人员,参加人员,会议内容,并对消息记录进行 保存。 (7)在会议中添加传送文件,发送视频功能,参加人员可以传文件,但是 只能接受视频,不能开启视频。 4 3 详细设计详细设计 3.1 操作流程 (1) 首先是服务器的启动:如图所示, 图 1 服务

12、器显示。 (2)客户端登录界面,如图所示, 5 图 2 客户端登陆界面 (3)系统登录验证界面,如图演示, 图 3 系统登录界面 (4)登陆后的主窗体显示, 6 图 4 登陆后的主窗体 图 5 私聊窗体显示 (6)会议室的建立,如图显示, 7 图 6 创建会议窗体 图 7 会议列表显示窗体 以及参加会议输入密码提示窗体, 8 图 8 参加会议人员进入会议窗体 (7)整个会议室主窗体的显示, 图 9 会议室窗体 (8)消息记录显示按钮功能, 9 图 10 显示消息记录功能 (9)传送文件显示功能 图 11 创建人发送文件给参加人员 (10)视频聊天显示功能 10 图 12 视频会议图片 3.2

13、部分详细设计 1、发送文件部分: 发送文件的操作其实还可以在扩加功能,共享文件,对参加会议的人员进 行内容共享。 其方法就是把文件传至服务器,保存到服务器硬盘中,参加会议人员可以 下载,其形式和查看消息记录差不多。 在发送文件的时候,先是把 文件的名字,文件的大小传至接收人员客户 端,等接收人员客户端解析以后,开始传送,在传送的时候,用 BeginInvoke()方法进行异步界面更新发送进度。 接收方法和发送的差不多主要是先开始监听,代码就不说了。 主要代码如下: private void 发送文件ToolStripMenuItem1_Click(object sender, EventArg

14、s e) if (listBox1.SelectedItem = null) 11 MessageBox.Show(“请先选择指定对象!“,“提示“); return; b = new Thread(new ThreadStart(this.send); b.IsBackground = true; b.Start(); this.Donghua(); private void send()/发送文件的方法 string host = listBox1.SelectedItem.ToString(); string HostIp = null; for (int i = 0; i = size

15、) m_Fifo.Read(m_PlayBuffer, 0, size); else for (int i = 0; i m_PlayBuffer.Length; i+) m_PlayBufferi = 0; System.Runtime.InteropServices.Marshal.Copy(m_PlayBuffer, 0, data, size); private void WebCamCapture_ImageCaptured(object source, WebCam_Capture.WebcamEventArgs e) this.pictureBox1.Image = e.WebC

16、amImage; private void 视频ToolStripMenuItem_Click(object sender, EventArgs e) private void 结束视频ToolStripMenuItem_Click(object sender, EventArgs e) this.WebCamCapture.Stop(); Capturing.Enabled = false; Size p = new Size(427, 433); this.Size = p; string mes = “VedioEnd|“; 46 byte bytes = Encoding.Unicod

17、e.GetBytes(mes); for (int i = 0; i list_user.Count; i+) PerInfo sa = (PerInfo)list_useri; if (sa.name != login.user_name) TcpClient client = new TcpClient(sa.IP, 16); NetworkStream ns = client.GetStream(); ns.Write(bytes, 0, bytes.Length); client.Close(); private void button3_Click(object sender, Ev

18、entArgs e) /send_user(“user2|“); a.Abort(); sock.Close(); clientsock.Close(); this.Close(); private void button4_Click(object sender, EventArgs e) this.panel1.Visible = false; Point p = new Point(255,56); groupBox1.Location = p; Size s = new Size(118,261); groupBox1.Size = s; timer1.Enabled = false;

19、 private void button2_Click(object sender, EventArgs e) string mes = “CHAT|“ + login.user_name; if (comboBox1.Text.ToString() = “所有人“) 47 mes += “说:“ + textBox1.Text.Trim() + |; else mes += “悄悄的对你说:“ + textBox1.Text.Trim() + |; byte bytes = Encoding.Unicode.GetBytes(mes); if (comboBox1.Text.ToString

20、() = “所有人“) for (int i = 0; i list_user.Count; i+) PerInfo p = (PerInfo)list_useri; try TcpClient client = new TcpClient(p.IP, 16); NetworkStream ns = client.GetStream(); ns.Write(bytes, 0, bytes.Length); client.Close(); catch else for (int i = 0; i list_user.Count; i+) PerInfo p = (PerInfo)list_use

21、ri; if (p.name = comboBox1.Text.ToString() TcpClient client = new TcpClient(p.IP, 16); NetworkStream ns = client.GetStream(); ns.Write(bytes, 0, bytes.Length); client.Close(); string self = DateTime.Now.ToString() + n + “你悄悄的对“ + comboBox1.Text.ToString() + “说:“ + textBox1.Text.ToString() + “nn“; ri

22、chTextBox1.AppendText(self); break; if (!comboBox1.Items.Contains(“所有人“) 48 comboBox1.Items.Add(“所有人“); textBox1.Clear(); textBox1.Focus(); private void button5_Click(object sender, EventArgs e) if (button5.Text = “查看消息记录“) Size s = new Size(672, 433); this.Size = s; Point p = new Point(426, 52); th

23、is.panel3.Visible = true; this.panel3.Location = p; button5.Text = “关闭消息记录“; Thread t = new Thread(new ThreadStart(this.Search_Record); t.IsBackground = true; t.Start(); else button5.Text = “查看消息记录“; this.panel3.Visible = false; private void button6_Click(object sender, EventArgs e) ColorDialog c =

24、new ColorDialog(); if (c.ShowDialog() = DialogResult.OK) textBox1.ForeColor = c.Color; private void MeetingForm_FormClosing(object sender, FormClosingEventArgs e) / send_user(“user2|“); 49 a.Abort(); sock.Close(); clientsock.Close(); this.Close(); private void button1_Click(object sender, EventArgs e) richTextBox1.AppendText(“nnnnnnnnnn“); 50 参考文献参考文献 (1) C#高级编程技术(北华大学) ; (2) 百度搜索; (3) CSDN 论坛; (4) Pudn 、Msdn 技术支持

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 绩效管理


经营许可证编号:宁ICP备18001539号-1