




已阅读5页,还剩49页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
高级编程程序设计高级编程程序设计 院 系: 计算机科学技术学院软件工程系 班 级: 软件 08 1 班 姓 名: xxx 学 号: 5 号 合 作 者: xx xxx xxx xxx 指导教师: xxx 2010 年 7 月 24 日 imimim 通通通通讯讯讯讯会会会会议议议议系系系系统统统统 面向对象程序设计任务书面向对象程序设计任务书 一、题目:视频会议系统一、题目:视频会议系统 二、设计要求二、设计要求 (1 组成课程设计小组。 (2)小组成员分工协作完成。要求每个成员有自己相对独立的模块,同时 要了解其他组员完成的内容。 (3)查阅相关资料,自学具体课题中涉及到的新知识。 (4)采用结构化、模块化程序设计方法设计,功能要完善,界面美观。 (5)所设计的系统应有对数据库操作。 (6)按要求写出课程设计报告,并于设计结束后 1 周内提交。其主要内容 包括:封皮、课程设计任务书,指导教师评语与成绩、目录、概述、软件需求 分析、总体设计、详细设计、程序的调试与测试、总结与体会、结束语、程序 清单(带中文注释) 、参考文献等。 三、课程设计工作量三、课程设计工作量 由于是设计小组团结协作完成设计任务,一般每人的程序量在 200 行有效 程序行左右,不得抄袭。 四、课程设计工作计划四、课程设计工作计划 2010 年 6 月 30 日前,指导教师讲课,学生根据题目准备资料,需求分析; 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 文档打印交到老师办公室里。 指导教师签章: 教研室主任签章 高级编程课程设计指导教师评语与成绩 指导教师评语: 课程设计表现成绩: 课程设计验收成绩: 课程设计报告成绩: 课程设计 总成绩: 指导教师签章 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 参考文献参考文献 .50 1 1 概述概述 1.1 研究的背景及意义研究的背景及意义 c#高级编程课程设计是软件工程专业实践性重要环节之一,是学习完 c#高级编程课程后进行的一次较全面的综合练习。其目的在于加深对编程 的理论、方法和基础知识的理解,掌握编程实现机理和各种典型算法,系统地 了解编程的设计和实现思路,培养学生的系统设计能力,并了解编程的发展动 向和趋势。 根据老师的要求: 1、 以小组为单位,延续上学期面向对象程序设计课设分组形式,由李秀鹏 任项目经理,臧艳协助工作。 2、 以最后一次综合实验 qq 程序为基础,进行扩展。要求班长课代表带领 同学上网查阅相关资料,了解目前已有网上会议系统基本情况,结合自己所学 加以实现。 3、 课设中要充分应用到本学期课程所学知识,必须包含 internet 编程、多 线程编程、数据库技术、win form 程序开发等相关知识。 4、 可结合已有技术、自查资料等对该系统进行扩展开发,如加入视频、语 音功能等。 通过自己所学到的课本知识,充分运用 socket,多线程,信道注册,网络 编程,数据库的操作等知识实现本组的 im 会议系统。 1.2 设计的任务和需要的知识点设计的任务和需要的知识点 一、设计的任务分工:一、设计的任务分工: a:负责完成大部分程序的衔接工作,包括语音视频。 b:会议架构、模式、重点是数据库的管理、验证操作等。 c:实现 p2p 通讯操作中的各种操作。 d:实现传文件功能、整个聊天室会议的建立。 e:建立服务器,构建比较完整的服务器。 1.根据设计题目的要求,充分地分析和理解问题,明确问题要求做什么。每人 都上网查有关 web 会议系统的资料。主要是能够对此次课设的进行扩充内容 及要求有进一步的了解,使功能更完善,要求是在上次综合实验的基础上对内 2 容。 2.根据实现的功能,划分出合理的模块,明确模块间的关系。 3.编程实现所设计的程序。 4.程序调试与测试。 5.结果分析。程序运行结果包括正确的输入及其输出结果和含有错误的输入及 其输出结果。 6.编写课程设计报告; 二、所需要的知识:二、所需要的知识: 通过自己所学到的课本知识,充分运用 socket,多线程,信道注册,网络 编程,数据库的操作等知识实现本组的 im 会议系统。 1.3 具体完成的设计内容具体完成的设计内容 由于人员分工问题,我们组 5 个人各有不同分工,但是都是在一起讨论研 究,怎样去实现,怎样实现是最好最简单,最快速的。 设计的主要内容涵盖: 1、登录服务器-数据库验证返回 :正确进入主窗体 错误: 重新登录 2、主窗体里的 form_load 开启监听,接收用户列表、上线、下线、会议 创建。 3、创建会议成功传入服务器-保存到数据库-参加会议-登 录验证-服务器 4、验证- 数据库验证-返回。 5、聊天-悄悄话-群聊广播-保存消息据路漫游。 6、消息记录-调用-反馈服务器-数据库反馈-窗体显示。 7、主窗体双击单聊-主要是开启不同的端口号,协调好不同单聊个数的 端口。 8、发送文件-同步异步、现实进度条。 9 、视频控制、多人视频群发,接受视频和发送视频。 10、 语音聊天-实现从录音中 把 缓存字节发送到客户端 并成功接析。 而我在这里面讨论中主要负责语音、视频的开发研究工作,对大家的连接 要求做好规定。 3 2 需求分析需求分析 2.1 信息需求信息需求 这个 im 会议系统信息需求要 5 个步骤: (1)安装软件客户端安装,服务器断开器。 (2) 运行,注册或登录,填写验证信息进行数据库验证。 (3)正在登录窗体,联系到服务器并有服务器验证,正确的话进入主窗体。 (4) 在主窗体中可以p2p聊天各种操作,然后可以建立会议室,参加会议 (5)在会议中进行视频、传文件、查看消息记录的功能。 2.2 功能需求功能需求 整个 im 会议系统分为服务器需求、和客户端功能需求: 首先是服务器: (1)服务器需要监听并时刻把所要连接的客户端加进来,并更新所有客户 端的在线列表、会议列表。 (2)服务器要执行数据库的操作:根据验证信息进行数据库验证、显示所有 注册人员信息、保存会议信息、保存会议记录、查看会议记录等功能。 其次是客户端: (1)客户端要建立起有好的界面关系,使用户一接触便能使用的功能。 (2)登录窗体要做好是登录以及在登录途中退出的各种信息设置、添加各 种调制信息,以免 bug 的出现。 (3)主窗体要实现和 qq 同样的双机私聊功能,设置在线人员列表图片, 并添加修改个人信息的功能。 (4)增加来电提示、上线提示、消息提示等提示功能。 (5)会议创建参加要有密码进入,一个用户只能同步参加一个会议,其他 的必须排队等待, (6)在会议中要显示创建人员,参加人员,会议内容,并对消息记录进行 保存。 (7)在会议中添加传送文件,发送视频功能,参加人员可以传文件,但是 只能接受视频,不能开启视频。 4 3 详细设计详细设计 3.1 操作流程 (1) 首先是服务器的启动:如图所示, 图 1 服务器显示。 (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 部分详细设计 1、发送文件部分: 发送文件的操作其实还可以在扩加功能,共享文件,对参加会议的人员进 行内容共享。 其方法就是把文件传至服务器,保存到服务器硬盘中,参加会议人员可以 下载,其形式和查看消息记录差不多。 在发送文件的时候,先是把 文件的名字,文件的大小传至接收人员客户 端,等接收人员客户端解析以后,开始传送,在传送的时候,用 begininvoke()方法进行异步界面更新发送进度。 接收方法和发送的差不多主要是先开始监听,代码就不说了。 主要代码如下: private void 发送文件toolstripmenuitem1_click(object sender, eventargs 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) 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.webcamimage; 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.unicode.getbytes(mes); for (int i = 0; i list_user.count; i+) perinfo sa = (perinfo)list_useri; if ( != 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, eventargs 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; 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() = “所有人“) 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_useri; if ( = 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“; richtextbox1.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 poin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年三四线城市房地产税收政策与风险控制报告
- 药品购销信用管理制度
- 药品顾客投诉管理制度
- 药店医疗废物管理制度
- 药店药品归置管理制度
- 营业网点加班管理制度
- 设备使用维修管理制度
- 设备培训考核管理制度
- 设备技术文件管理制度
- 设备检修提级管理制度
- 第十八章:爬行纲课件
- 米亚罗-孟屯河谷风景名胜区旅游基础设施建设项目环评报告
- 冲突管理与沟通技巧
- 滁州市第一人民医院医疗暂存间环保设施提升改造项目环境影响报告表
- 籍贯对照表完整版
- 警用无人机考试题库(全真题库)
- 中等职业学校英语课程标准(2020年版)(word精排版)
- 高边坡作业安全专项施工方案与高边坡安全专项施工方案汇编
- 医保业务知识题库
- 等级医院评审中应注意的迎评礼仪
- 吉林省长春市东北师大附中明珠学校2023年物理八年级第二学期期末统考模拟试题含解析
评论
0/150
提交评论