基于qt的视频聊天工具的设计与实现何毅.doc_第1页
基于qt的视频聊天工具的设计与实现何毅.doc_第2页
基于qt的视频聊天工具的设计与实现何毅.doc_第3页
基于qt的视频聊天工具的设计与实现何毅.doc_第4页
基于qt的视频聊天工具的设计与实现何毅.doc_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕业论文(设计)论文题目:基于QT的视频聊天工具的设计与实现学生姓名:学 号:1008040209所在院系:电气信息工程学院专业名称:通信工程届 次:2014届指导教师:淮南师范学院本科毕业论文(设计)诚信承诺书1.本人郑重承诺:所呈交的毕业论文(设计),题目 是本人在指导教师指导下独立完成的,没有弄虚作假,没有抄袭、剽窃别人的内容; 2.毕业论文(设计)所使用的相关资料、数据、观点等均真实可靠,文中所有引用的他人观点、材料、数据、图表均已注释说明来源; 3. 毕业论文(设计)中无抄袭、剽窃或不正当引用他人学术观点、思想和学术成果,伪造、篡改数据的情况; 4.本人已被告知并清楚:学院对毕业论文(设计)中的抄袭、剽窃、弄虚作假等违反学术规范的行为将严肃处理,并可能导致毕业论文(设计)成绩不合格,无法正常毕业、取消学士学位资格或注销并追回已发放的毕业证书、学士学位证书等严重后果; 5.若在省教育厅、学院组织的毕业论文(设计)检查、评比中,被发现有抄袭、剽窃、弄虚作假等违反学术规范的行为,本人愿意接受学院按有关规定给予的处理,并承担相应责任。 学生(签名): 日期: 年 月 目 录1 绪论21.1 聊天软件介绍21.2 “视频聊天工具”的发展概况22 需求分析22.1 功能分析22.2 可行性分析32.3 流程图33 开发工具及相关技术简介53.1 开发工具简介53.2 关键技术63.3 驱动安装及编译错误解决办法124 详细设计134.1 本次设计的研究目的134.2 本次设计的运行环境134.3 类、方法、属性说明134.4 软件设计185 测试分析205.1 程序运行结果分析205.2 测试分析246 总结与展望24参考文献:25淮南师范学院2014届本科毕业论文基于QT的视频聊天工具的设计与实现学生:何毅(指导老师:李营)(淮南师范学院电气信息工程学院)摘要:QT Creator 是一个跨平台的、完整的QT集成开发环境,其中包括了高级C+代码编辑器、项目和生成管理工具、集成的上下文相关的帮助系统、图形化调试器、代码管理和浏览工具等1。本论文通过所学的C+面向对象的语言,利用QT Creator设计了一个简单且又美观的视频聊天工具。在程序设计过程中,通过调用QT Creator库函数以及一些算法来实现相应的功能。最终软件实现“登录”、 “显示在线用户” 、“文字聊天”、 “视频”等基本功能。关键词:视频聊天;QT; Video4Linux2; ALSAThe Design and Implementation of Video Chat Tool Based on QTStudent: He Yi(Guidance Teacher: Li Ying)(College of Electrical and Information Engineering, Huainan Normal University)Abstract: QT Creator is a cross-platform, complete QT integrated development environment, Including the advanced C+ + code editor, projects, and produce management tools, integrated contextual help system, graphical debugger, code management and browsing tools, etc. Through learning C+ object oriented languages, designed a simple and beautiful video chat tool by QT Creator. Bycalling the QT Creator library functions, and using some algorithm to realize the corresponding function during the process of program design. The ultimate success of the software achieve the a few basic functions: login, show the online user, chat, video and so on.Key words: Face time; QT; Video4Linux2; ALSA1 绪论1.1 聊天软件介绍21世纪是一个网络高速发展的时代。国际互联网又称因特网,它是一个全球性的网络,是公用信息的一种载体,属于大众传媒的一种,它具有快捷性、普及性等特点,是现今最流行且最受欢迎的传媒之一。互联网是即时通信软件以展的基础,然而即时通信软件又反过来极大的扩展了互联网络的应用2。现今的互联网已经广泛应用在现实生活中。我们可以通过互联网聊天、玩游戏、查阅东西等等。作为现代电脑电子技术的产物之一的聊天软件(称即时聊天软件IM),在互联网的信息交流的过程中扮演着一个重要的角色。即时聊天软件主要提供基于互联网的客户端的语音、视频、文字的传输。它可以增进人们之间的交流、沟通,可以为人们提供跨市、跨省、甚至跨国之间的互通,极大的为人们的交流提供了方便,从而满足人们的需求。在将来的发展中也必将是一个不可或缺的部分。1.2 “视频聊天工具”的发展概况“视频聊天”是可以通过摄像头看到对方图像的一种交流方式,与此同时可以直接通过麦克风进行语音聊天。与起初的即时聊天软件所不同的体验就是它可以拉近人与人之间的距离,让人倍感亲切,使聊天也变得更加有趣起来。从另一个方面来考虑,在面对广大群众使用的时候, 对于那些打字慢的人来说,也解决了他们因打字慢而感到烦恼的问题。中国目前使用最广泛的聊天软件之一就是腾讯QQ,然而腾讯QQ不是简单的即时通信软件,它支持即时传送视频、音频和文件等诸多功能。而另一款较流行的软件则是微软公司推出的MSN,它也可以进行语音对话、视频会议等即时交流。还有很多诸如此类的软件,其实现的功能也大体相同。由些可以看出,音视频聊天的这种即时交流方式已经成为一种发展趋势,也是符合广大人民群众需求的。2 需求分析2.1 功能分析利用QT设计出一个可以实现实时文字聊天、语音聊天和视频聊天的基于服务器的聊天工具。客户端要有登录界面、主界面、聊天界面、视频聊天界面以及语音聊天界面。登录界需要输入用户名和登录按钮。对于用户名的输入有以下规定:(1)用户名不得过长,否则提示输入的用户名太长,让用户重新输入一个用户名;(2)用户名不能为空;(3)如果输入的用户名被服务器检测到同名用户,需重新输入一个不同的用户名,以上3种情况都无法登录服务器。主界面必须显示自己的登录名并且可以显示当前登录服务器的用户,当有用户登录时,在主界面上会增加该登录用户;用户退出时,这个用户会在主界面上消失。并且用户可以通过双击用户名与该用户进行对话。聊天界面要显示当前与谁在聊天,并且显示发送和接收信息的时间。在该界面需要有开启视频聊天和语聊天的按钮。视频聊天和语音聊天界面只需要有一个终止语音或者终止视频聊天的按钮即可。2.2 可行性分析该软件是图形界面实现的,通过编译后会出现一个图形界面。成功登录后,会显示在线用户,并且可以与每一个用户进行交流,可以实现视频、语音聊天,操作简单,使用方便。2.3 流程图2.3.1 软件实现主流程图1 软件实现主流程图2.3.2 用户登录流程图图2 用户登录流程图2.3.3 聊天流程图图3聊天流程图2.3.4 视频聊天流程图图4音视频聊天流程图3 开发工具及相关技术简介3.1 开发工具简介QT是由奇趣科技在1991年开发的一个跨平台的C+图形用户界面应用程序的开发框架。它的跨平台性意味着在Linux下编写的Qt程序也是有效的Microsoft Windows程序3。它提供给应用程序开发者建立艺术级的图形用户界面所需的所有功能,功能非常强大。它可以用来开发GUI程序,也可以开发非GUI程序,诸如控制台工具和服务器等。QT是面向对象的框架,使用特殊代码生成扩展。QT的开发语言是C+。最初Qt主要是为跨平如的软件开发者提供统一的,精美的图形用户编程接口,但是现在它提供统一的网络和数据库操作的编程接口。由于Qt的出现,使得UNIX和LINUX这些操作系统的人机界面更加精美。QT的优点:(1)QT具有优良的跨平台性,可以支持多个操作系统,如Microsoft Windows 95/98, Microsoft Windows NT, Linux, Solaris, SunOS, HP-UX, Digital UNIX (OSF/1, Tru64), Irix, FreeBSD 等等;(2)QT具有良好的封装机制,使得QT的模块化程度非常高,可重用性也较好,这对于开发者来说是非常方便的。然后QT又提供了一种称为信号与槽(signals/slots)的机制来代替callback,使得元件之间的协同工作就能得更加简单。(3)QT中包含多达250个以上的C+类。(4)支持2D/3D图形渲染。(5)支持OpenGL。(6)大量的开发文档。(7)XML支持等。3.2 关键技术3.2.1 Video4Linux2相关技术简介V4L(video for linux)4是Alan Cox针对视频设备开发的应用程序接口(API)5。开始出现是在Linux2.1.x内核版本中,可以实现图像采集。由于它的灵活性和扩展性上面的缺陷,渐渐被V4L2代替6,而V4L2是在Linux2.5.x版本内核中开始集成的7。Video4Linux2是Video For Linux Two的简称,是Linux系统下进行视频音频等应用开发的应用编程接口。Video4Linux2还提供一些无线电通信以及文字电视广播解码等的数据接口,并且结合视频采集设备和相应的驱动程序,就可以实现图像采集8。本次设计是采用Video4Linux2提供的数据结构、应用函数等,实现Linux下USB摄像头数据的采集功能。在Linux系统下,遵循一切设备皆是文件的原则,所有的外设都会被看成是一种特殊文件进行处理,又称之为设备文件。在Linux下,系统调用的各种库函数的实质是它们直接或者间接地提供内核与应用程序之间的接口,然而设备驱动程序则是内核与外设之间的接口,它的功能是完成设备的初始化和释放以及对设备文件的各种操作的中断处理。在对视频设备数据进行读/写的过程中,可以通过read/write或者内存映射9的方法来获得内核空间的图像数据。通过Video4Linux2来实现视频图像采集的流程如下:1.打开视频设备文件,获得文件描述符。int devfd = open (devpath, O_RDWR | O_TRUNC);if (devfd 0)sys_err(“open device error”);2.查看设备功能。struct v4l2_capability cap;Clear_struct(cap);if( ioctl(devfd,VIDIOC_QUERYCAP,&cap) width;fmt.fmt.pix.height = conf-height;fmt.fmt.pix.pixelformat = conf-format;fmt.type = Capture;if( ioctl( devfd,VIDIOC_S_FMT,&fmt ) 0 )Sys_warn(“warn,get format”);先将fmt结构填入适当的参数,再通过VIDIOC_S_FMT来对设备的参数进行设置。4.初始化内存是映射1)设置内存映射的模式以及缓存数数量struct v4l2_requestbuffers reqbuf;Clear_struct(reqbuf);reqbuf.count = tmp_nums;reqbuf.type = Capture;reqbuf.memory = V4L2_MEMORY_MMAP;if( ioctl( devfd,VIDIOC_REQBUFS,&reqbuf ) 0 )Sys_err(“request buffer queue error”);调用VIDIOC_REQBIFS命令参数的ioctl函数分配自定义的缓存数量。2)将设备缓存映射到用户空间struct v4l2_buffer buf;uint i = 0;for( i = 0; i tmp; i+ )Clear_struct(buf);buf.index = i;buf.type = Capture;if( ioctl( devfd,VIDIOC_QUERYBUF,&buf ) 0 )sys_err(“Jump into queue error”);调用VIDIOC_QUERYBUF命令参数的ioctl函数将设备缓存映射到应用程序的内在分配空间。3)缓存加入缓存队列,准备图像数据采集int type = Capture;if( ioctl(devfd,VIDIOC_STREAMON,&type) 0)sys_warn(“open video stream error”); 调用VIDIOC_STREAMON命令参数的ioctl的函数,在for循环中将空缓存加入等待输入缓存队列,缓存加入等待输入缓存队列后,就可以使用这些缓存数据了。5.开始图像采集并循环采集6.停止采集并关闭设备close(fd);free(frame);图5 基于V4L2的视频采集流程103.2.2 ALSA相关技术介绍ALSA是一个致力于开发高质量的Linux声音子系统的软件项目。在Linux2.6内核之前都是OSS。因为ALSA相对于OSS来说,它能高效地支持从消费类入门级声卡到专业级音频设备所有类型的音频接口,完全模块化的设计,支持对称多处理线程安全并对OSS的向后兼容等优点,另外ALSA还提供了alsa-lib用户空间的库,从而简化应用程序的开发。ALSA是一个音频驱动集,并且源代码是完全开放的,它不仅提供了类似于OSS的内核驱动模块,还提供了一组函数库,以简化应用程序编写。开发人员可以利用这些库函数,轻松的开发自己的应用程序,并且不需要知道函数内部实现的细节。图6 ALSA体系结构图11使用ALSA来播放或者录音的主要步骤有三步:1)打开音频设备,调用snd_pcm_open函数接口。2)Hw参数的设置,调用snd_pcm_hw_param_set_xxx函数接口对Hw的对数进行设置。3)Prepare操作,调用snd_pcm_prepare函数接口。最后就可以把音频数据从设备里读出来(播放),或者将音频数据写到设备中去(录音)12。3.2.3 HTTP超文本传送协议HTTP是超文本传送协议(Hypertext Transfer Protocol)的简称,是万维网(World Wide Web,简称WWW)的基础。HTTP其实是一个简单的协议。当客户进程建立了一条与服务器进程的TCP连接的时候,客户端会发出请求读取服务器进程的响应。如果服务器关闭,则表示此次的响应直接结束。服务器的进程返回的文件通常包含拽向其他服务器上的文件的指针,也就是超文本链接。这样,用户就可以轻松的通过这些链接从一个服务器到达另一个服务器了13。HTTP的报文是一个简单的格式化文本。每条报文都包含一条来自客户端的请求,或者一条来自服务器的响应。它们均由三个部分组成:对报文进行描述的起始行(请求行)、包含属性的首部块以及可选的(报文头)、包含数据的主体部分。报文的格式如下所示:请求报文的格式:响应报文的格式:报文格式的解释:method(方法)客户端希望服务器对资源执行的动作,如:GET、HEAD、POSTrequest-URL(请求URL)命令了所请求资源,或者URL路径组件的完整URLversion(版本)报文所使用的HTTP版本,其格式为HTTP/.其中major是主要版本号,minor是次要版本号,均为整数。status(状态码)状态码由三位数字组成,描述了在请求进程中发生的情况。reason-phrease(原因短语)上面的数字状态码的可读版本包含终止序列之前的所有文本。headers(首部)一条报文中可以有0个或者多个首部,每一个首部都包含一个名字,后面跟着一个冒号,然后是一个可选的空格,接着是一个值,最后是一个(CRLF)。首部由一个空行(CRLF)结束的,表示首部列表的结束和实体主体部分的开始。entity-body(实体的主体部分)包含一个人数据组成的数据块。但是并不是所有的报文都有实体的主体部分。有时报文仅仅以一个CRLF结束。本次设计的设计注重的是实际需求,并不是要解析所有的HTTP协议的要素。由于数据量较大,所以要尽量减少不必要的处理14。3.3 驱动安装及编译错误解决办法在进行音视频开发的时候,必须依赖第三方的库,如果没有这些库,就算你将代码完成了,在编译的时候,Qt会报错,某些函数未定义的使用等错误。这时,我们就要自己手动去安装这些库。第一个是jpeg库,因为摄像头有的不支持v4l2_pix_fmt_mjpeg格式,只能支持v4l2_pix_fmt_yuyv格式,这样的话不适于网络传输。为了将YUYV转换成MJPEG,只能借助于jpeg库。我们可以去/files/jpegsrc.v8b.tar.gz下载jpeg源码包,然后通过以下方式来安装:$解压包 tar xzvf jpegsrc.v8b.tar.gz $cd jpeg-8b$./configure prefix=/usr/local/jpeg$make$make install第二个是alsa库,可以去alsa官网/去下载库包,并按步骤安装即可。第三个是asla开发的头文件,在内核中找不到alsa/asoundlib.h这个文件,这时我们要打开linux终端,输入apt-get-install libasound2-dev即可。如果这三个都安装完成,那么,我们就可以放心的进行该软件的开发了。4 详细设计4.1 本次设计的研究目的C+是一种通用的程序设计语言,它是C程序设计语言的一个超集。C+提供了C所提供的所有功能,还为定义新类型提供了灵活有效的功能15。C+中类是一个重要的概念,一个类就是一个用户定义的类型。C+的类为C+提供了比C好得多的功能。另外还保持了C高效的处理硬件对象的能力,使得用户定义的类型能够在相当高的效率水平是实现。Qt是基于的软件设计工具,它具有“一次编写,随处编译16的特点。通过本次设计,可以进一步熟悉Qt编译环境的搭建和配置,掌握Qt的图形界面的设计、多线程编程、信号与槽的使用、网络输入输出、文件操作等。通过亲自动手写这样一个程序可以扩展知识面,提高自己的编程和调试程序的能力。4.2 本次设计的运行环境硬件要求能运行Linux操作系统,C+程序设计语言的gcc编译环境,Qt Creator 开发开具。4.3 类、方法、属性说明4.3.1 类的设计在设计该视频聊天工具的时,程序主要由以下5个部分组成:第一部分:登录界面部分(Widget)定义了用户登录的窗口。第二部分:主界面部分(MainInterface)定义了主界面的背景绘制的方法,用户头像部件,好友列表部件以及窗口拖动以及缩放的算法等。第三部分:聊天界面部分(ChatInterface)定义了聊天背景会制的方法,以及开启音视频聊天相应的功能按键。第四部分:视频聊天界面部分(Screen)定义了初始化背景方法,视频传输与接收的线程,音频传输与接收的线程以及结束视频聊天的按键等。第五部分:音频聊天部分(Audio)定义了语音聊天记时的方法以及结束语音聊天的按键。4.3.2 成员变量的设计C+中的成员变量就是指类中定义的变量。成员变量有它的属性,由类中的public, protect和private关键字分别定义为公有的,受保护的和私有的三种属性。只有公有的属性的成员变量才可以直接被其他类使用,而外部类也可以通过该类的成员函数来访问它的私有属性17。通过private关键字,可以保护一些数据的安全。由于本次设计中涉及的成员变量太多,全文我都以登录界面(Widget)的设计来举例。4.3.3成员函数的设计成员函数也就是类中定义函数,可以设计成可以被外部类调用(即公有),也可以设计成不能被外部类使用(即私有)。void 表示没有返回值,函数参数是调用时给予的声明,两个参数以上要用逗号隔开。若没有参数,则参数行为空。注意:一个方法不能在中一个方法内声明。表1 成员函数方法名功能备注pintEvent(QPaintEvent *event)绘制登录界面背景当类被实例化时,调用此方法,完成背景的绘制mousePressEvent(QMouseEvent *)鼠标被按下时实现相应的功能当鼠标被按下时,调用此方法mouseMoveEvent(QMouseEvent *)鼠标移动时实现相应功能当鼠标在界面上移动时,调用此方法keyPressEvent(QKeyEvent *event)键盘某个键被按下时实现相应的功能当键盘上有键被按下时,调用此方法4.3.4 控件的设计控件是Qt Creator中已经封装好的方法和数据。通过控件,用户可以与之交互或者操作数据。表2 成员变量控件说明控件类型控件名文本加载背景图片 QImageloginImage无头像HeadSculpture *Head无IP地址输入的标签QLabel *ipLabelIP地址端口号输入的标签QLabel *portLabel端口号用户名输入的标签QLabel *nameLabel用户名IP地址输入的行编辑框QLineEdit *ipLineEdit端口号输入的行编辑框QlineEdit *portLineEdit10001用户名输入的行编辑框QlineEdit *nameLineEdit无登录按钮QPushButton *LoginBtn登录退出按钮QToolButton *ExitBtn无鼠标的全局坐标QPoint loginWindowsPos无连接服务器的线程Thread *thread无4.3.5 信号与槽函数的设计信号与槽的机制是QT的核心机制,它是一种用于对象之间的通信的高级接口,要想精通QT编程就必须对信号与槽有所了解。表3 信号信号名称信号功能说明sendIp(QString)发送IP地址给客户端线程sendPort(QString)发送端口号给客户端线程sendName(QString)发送用户名名给客户端线程表4 槽函数槽函数槽函数功能说明connectToServer()连接到服务器的功能函数showMainInterface()当接收到确认可以显示主界面时,显示主界面userNameSame()当服务器返回有相同用户名时,段开与服务器连接的线程checkUserName()检查当前用户名是否合法4.4 软件设计4.4.1 服务器模块设计(1)链表设计(2)用户登录处理(3)用户登出处理(4)用户聊天信息处理(5)用户视频请求处理(5)用户音频请求处理4.4.2客户端模块设计根据需求,客户端模模块主要分为以下几个模块:录登模块,主面界模块,文字聊天模块,视频聊天模块和语音聊天模块。4.4.3登录模块(1)登录界面设计(2)用户名是否合法的设计。4.4.4主界面模块(1)主界面设计(2)在线用户显示设计(3)窗口拖动及缩放算法的设计4.4.5文字聊天界面模块(1)聊天界面设计(2)消息处理设计。4.4.6视频聊天模块(1)视频聊天显示界面设计(2)请求方式设计。4.4.7语音聊天模块设计(1)语音聊天界面设计(2)聊天计时设计。4.4.8 窗口缩放算法设计窗口缩放的实现其实是比较复杂的,我用的是QT中的mouseMoveEvent,mousePressEvent,mouseReleaseEvent等事件来处理。这里首先来了解一下我的九宫格的概念:图7 窗体九宫格图在此,我将窗体分为上、下、左、右、左上、左下、右上、右下和中间部分,程序在设计时,除了中间的部分都要进行处理。我在程序中定义PADDING为2,表示窗口边缘的差值为2个px。另外还定义一个枚举类型Direction,用来标志当前鼠标在窗体的哪个部分。在mousePressEvent中,鼠标左键按下时,设置isLeftPressDown为真;在mouseReleaseEvent中,鼠标左键释时,设置isLeftPressDown为假。在mouseMoveEvent中isLeftPressDown为真且event-x()在窗口边缘及处理计算出鼠标移动的增量,然后不断的resize窗口。这样窗口缩放就可以实现了。5 测试分析5.1 程序运行结果分析(1)项目层次结构图图8 项目层次结构图(2)当用户运行程序时,首先要输入用户名来登录。在用户名栏,用户名不能为空,否则会提示“请输入用户名”;输入字符不能超过15个字符,否则会提示“用户名过长,请重新输入用户名”;若输入的用户名与已经登录服务器的用户相同,则提示“此用户名已被注册”;若以上情况均示发生,则可以正常登录,如图9所示。图 10 登录界面(3)用户正常登录后,若当前登录用户是第一个用户,则不会显示在线用户,如果不是第一个用户,则会显示所有在线用户,如图11所示,目前登录有三个用户登录,每一个客户端只显示其他两个用户;图11 之后登录各个主界面(4)当一个用户双击另一个用户的用户名时,弹出聊天界面。当用户输入聊天信息并发送给对方的同时,发出的聊天信息会显示在聊天框内,我以红色和蓝色来区分是接收的信息,还是发送的信息(红色是发出的信息,蓝色接收到的信息),如图12所示。图12 文字聊天(5)当用户点击左上方的视频聊天按钮时,可以请求与对方开启视频聊天,当用户点击请求时,会发送一条请求等待对方同意,如图13所。图13 视频请求如果对方同意,则可以开启视频;若对方不同意,则关闭当前窗口。当对方同意后就可以开始看到对方的画面了,其效果如图14所示。图14 视频聊天界面实际效果图5.2 测试分析在程序测试过程中,实际没有达到预期的效果,因为中间偶尔会出现一些预期之外结果,例如,有时收到用户信息时,在信息显示区域不显示用户名。由于这是点对点之间的交流,并且聊天框上面显示了与谁进行通话,所以没有影响到软件的使用。6 总结与展望视频聊天工具的文字聊天,视频等基本功能都已经实现,但是由于对音频开发的知识掌握不足,最终还未能实现预想的语音聊天的功能,希望自己在以后的学习和工作的过程中不断收集和掌握此类的相关知识,并完善该功能。在实际的设计过程中,各对象之间频繁的数据传递远比想像中复杂的多,一不小心就会弄糊涂。所以,一定要保持头脑清醒,思路清晰才能下手。这与我之前的设计相比,代码量比较大的,但是由于没有数据库,目前能实现的功能也不多,以后可以进一步改进。通过这次设计,我做了一个完整的软件。在软件设计过程中,让我掌握了如做制作一个软件以及软件开发的流程,步骤,将专业知识以及其他方面的应用到实际。通过本次设计,让我进一步掌握C+,Qt的基础知识,同时培养了我分析并解决问题的能力,提高了我设计分析,设计方法以及程序调试的能力并且还拓展了我的知识面。在本次设计过程中,我遇到了很多很多问题,与此同时我也认识到自己的不足,对之前学过的知识掌握的不够扎实,以后工作的时候必然还会遇到比现在还要困难的问题,所以还要不断巩固自己的所学的知识。参考文献:1 霍亚飞.QT Creator 快速入门M.北京:北京航空航天大学出版社.2012,5.2 龙令曼.即时通信软件中音视频数据在互联网上传输的分析与研究D.贵州:贵州大学.2008,5.3 Daniel Solin.24小时学通Qt编程M.北京:人民邮电出版社.2000,10.4video for Linux resourcesR/OL.2010-06-26./v4l/.5 LinuxTV project V4LR/OL.2000-08-28./.6 SCHIMCK M H,DIRKS Bill. Video for Linux two API specification: draft 0.12S/OL.2002-12-01./.7 陈莉君,康华,张波.Linux内核设计与实现M.2版.北京:机械工业出版社,2006.8 陈亮,裴海龙,伍越.基于. Video4Linux2的图采集程序设计J.微计算机信息.2009.9 RUBIN A. Linux设备驱动程序(第二版)M.北京:中国电力出版社10 刘升,赵晶晶,范秀丽. 基于V4L2的嵌入式视频监控系统. 微计算机应用. 2011.11 余棉水,解晓萌. 嵌入式系统ALSA声卡驱动设计与实现J. 计算机光盘软件设计与应用. 2012.12 张明俊,魏瑾. 嵌入式ALSA音频框架介绍与应用J. 电脑开发与应用.2013,26(9)13 W. Richard Stevens. TCP/IP Illustrated, Volume 3,TCP for Transactions, HTTP, NNTP, and the UNIX Domain ProtocolsM.人民邮电出版社. 2010.4.14 赵章界,余智华,张丙奇. HTTP协议流解析系统的设计与实现J.计算机工程. 2005.15 斯特朗斯特鲁(Stroustrup .B.). C+程序设计语言特别版M.北京:机械工业出版社,2002,7.16 Jasmin Blanchette,Mark Summerfield.C+ GUI Qt 4编程(第二版)M.电子工业出版社.2008.17 谭浩强.C+面向对象程序设计M.清华大学出版社.2006.5致谢转眼间,四年的大学时光就快结束了。精心准备了两个多月的毕业设计终于可以划上句号了。在作品的创作的过程中遇到的各种问题,让人力不从心,现如今如释重负。毕业设计创作的过程一点也不轻松,各种各样的问题让我感觉自身知识积累还不够。第一次花费了这么久和这么多精力,独立完成一套作品,其中的滋味让人难以忘怀。在这里,我要感谢我的指导老师李营老师。在她的悉心指导,我顺利的完成了此次毕业设计的。在她的指导下,我完成了论文的修改直到完成,给予了我很多的帮助。 附件:大学本科生毕业论文(设计)规范一、毕业论文(设计)格式规范一份完整的毕业论文(设计)材料一般应包括下列内容:(一)题目;(二)目录;(三)论文主体(包括中英文摘要及关键词;正文;致谢;参考文献等);(四)附录。具体分述如下: (一)题目题目应力求简短、精确、有概括性,直接反映毕业论文(设计)的中心内容和学科特点。题目一般不超过20个汉字,如确有必要,可用副标题作补充。(二)目录毕业论文(设计)必须按其结构顺序编写目录,要求层次分明,体现文章展开的步骤和作者思路。目录格式是论文的结构层次,反映作者的逻辑思维能力,所用格式应全文统一,每一层次下的正文必须另起一行。目录独立成页,以章、节、小节来编排。(三) 论文主体1、中英文摘要及关键词摘要一般不分段,不用图表,以精炼的文字对毕业论文(设计)的内容、观点、方法、成果和结论进行高度概括,具有独立性和自含性,自成一篇短文,具有报导作用。中文摘要一般以200-300个字为宜。关键词是反映毕业论文(设计)内容主题的词或词组,一般35个。其中英文摘要与中文摘要基本对应,英文关键词之间用分号分开,最后一个关键词后不加任何标点。2、正文包括引言、正文、结论等部分。(1)引言引言也称前言、导论、导言、绪言、绪论等。它的作用是向读者初步介绍文章的背景和内容,通常包括以下几个方面:为什么写这篇文章,要解决什么问题;论文的主要观点;与课题相关的历史回顾;写作资料的来源、性质及其运用情况,论文的规划和简要内容;研究中的新发现;课题的意义等。(2)正文正文是论文的核心部分,是作者学术理论水平和创造性工作的综合体现,是作者运用掌握的材料与方法进行论证、得出结论的部分,其任务是分析问题和解决问题。根据不同论文研究的课题性质、研究方法的不同,理论型、实验型和描述型论文的正文格式和写法不尽相同,但他们的要求是一致的。即:主题明确:全文围绕主题展开讨论,不离题;论证充分:有观点、有思路、有材料、有说服力;结论清楚:研究导出的结论不含糊、易理解;逻辑严密:文字精炼流畅、条理清晰。(3)结论结论是论文要点的回顾和提高,是整个研究过程的结晶,是全篇论文的精髓。结论中应对本篇论文解决了什么问题,得出了什么规律,存在什么问题给出明确的回答。撰写结论时,要注意精炼准确、总结提高、前后呼应。3、致谢(无必要时可省略)以精练的文字,对在毕业论文(设计)工作中直接给予指导、帮助的人员表示谢意,言辞恳切,实事求是。4、参考文献毕业论文(设计)须在论文的最后列出参考文献。参考文献应以公开发表过的、作者真正阅读过的、与论文密切相关的或直接引用的为限,未发表过的论文、试验报告、内部资料等不宜列入。参考文献的列写必须严格按照毕业论文(设计)中引用的先后顺序依次列写。参考文献的列写格式,详见“毕业论文(设计)的书写规范与打印要求”。(四)附录(无附录时可省略)凡不宜收入正文中的、又有价值的内容可编入毕业论文的附录中。如:大号的设计图纸;篇幅较大的计算机程序(但以研究软件程序为主的毕业论文题目,其程序可作为正文的一部分);过长的公式推演过程。其它内容如译文及原文、专题调研报告、文献综述等可另行装订成册。二、毕业论文(设计)的书写规范与打印要求(一)书写规范1、 引用有关政策、方针性内容务必正确无误,不得泄漏国家和单位机密。2、使用普通语体文写作,体例统一,文句通顺,无语法错误,简化字符合规范,标点符号使用正确,符号的上下角标和数码要写清楚且位置准确。3、采用中华人民共和国国家标准(GB31003102-93)规定的计量单位和符号,单位用正体,符号用斜体。4、使用外文缩写代替一术语时,首次出现的,应用括号注明其含义,如CPU(Central Processing Unit,中央处理器)。5、国内工厂、机关、单位的名称等应使用全名,如不得把“大学”简写成“衡阳师院”或“衡师院”。6、公式应另起一行并居中书写,一行写不完的长公式,最好在等号处或在运算符号处转行。公式编号用圆括号括起,示于公式所在行的行末右端。公式编序可以全文统一,依前后次序编排,也可以分章节编排,但二者不能混用。文中公式、表格、图的编排应统一。7、文中引用某一公式时,应写成:“由式(5)可知”。8、文中表格可以全文统一编序,也可以逐章独立排序,表序必须连续。文中引用表格时,“表”在前,序号在后,如:“见表8”。 表格格式可采用三线表,表格的名称和编号应居中,并位于表格上方,表序在前,表名在后,其中空一格,表名末不加标点符号。如: 9、文中插图都应有名称和序号,可以全文统一编序,也可以逐章独立排序,图序必须连续。文中引用插图时,“图”在前,序号在后,如:“见图12”。图的名称和编号应居中并写于图的下方,图序在前,图名在后,其中空一格,末尾不加标点。如: 插图应用Word文档绘制,或用CAD绘制后插入,不得用铅笔、钢笔、圆珠笔等绘制(特殊情况除外)。10、“正文”中如对某一术语或情况需加解释而又不宜写入正文时,应在此“术语”或“情况”后引入注释符号,置于右上角,有多个注释时,应依次编号,如:、。11、参考文献的书写格式:参考文献采用宋体5号字。正文引用参考文献依次编序,其序号用方括号括起上标注出。如“效率可提高25%2”,表示此结果援引自文献2。各类参考文献的编排格式及示例如下:a. 专著、论文集、学位论文、报告序号作者.文献题名文献类型标识.出版地:出版者,出版年.起止页码.1刘国钧,陈绍业,王凤翥.图书馆目录M.北京:高等教育出版社,1957,15-18.2辛希孟.信息技术与信息服务国际研讨会论文集:A集C.北京:中国社会科学出版社,19943张筑生.微分半动力系统的不变集D.北京:北京大学数学研究所,1983.4冯西桥.核反应堆压力管道与压力容器的LBB分析R.北京:清华大学核能技术设计研究院.1997.b. 期刊文章序号作者.文献题名J.刊名,年,卷(期):起止页码.5何龄修.读顾城南明史J.中国史研究,1998,(3):167-173.6金显贺,王昌长,王忠东,等.一种用于在线检测局部放电的数字滤波技术J.清华大学学报(自然科学版),1993,33(4):62-67.c. 论文集中的析出文献序号析出文献作者.析出文献题名A.原文献作者(任选).原文献题名C.出版地:出版者,出版年.析出文献起止页码.7钟文发.非线性规划在可燃毒物配置中的应用A.赵玮.运筹学的理论与应用中国运筹学会第五届大会论文集C.西安:西安电子科技大学出版社,1996.468-471.d. 报纸文章序号作者.文献题名N.报纸名,出版日期(版次).8谢希德.创造学习的新思路N.人民日报,1998-12-25(10).e. 国际、国家标准序号标准编号,标准名称S.9GB/T 16159-1996,汉语拼音正词法基本规则S.f. 专利序号专利所有者.专利题名P.专利国别:专利号,出版日期.10姜锡洲.一种温热外敷药制备方案P.中国专利:881056073,1989-07-26.g. 电子文献序号作者.电子文献题名电子文献及载体类型标识.电子文献的出处或可获得地址,发表或更新日期/引用日期(任选).11王明亮.关于中国学术期刊标准化数据库系统工程的进展EB/OL./pub/wml.txt/980810-2.html,1998-08-16/1998-10-04.12 万锦堃.中国大学党报论文文献(1983-1993).英文版DB/CD.北京:中国大百科全书出版社,1996.h. 各种未定义类型的文献序号作者.文献题名Z.出版地:出版者,出版年. 徐超.氧化锌的制备、改性及其光催化研究 学位论文硕士 2010:22-23贺敏强 表面分子印迹微/纳米复合材料的制备及其性能研究博士论文2012张邦文,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论