QQ课程设计.docx
《QQ课程设计.docx》由会员分享,可在线阅读,更多相关《QQ课程设计.docx(16页珍藏版)》请在冰豆网上搜索。
![QQ课程设计.docx](https://file1.bdocx.com/fileroot1/2022-11/27/3ffa5808-abb3-4361-9078-112d29d87891/3ffa5808-abb3-4361-9078-112d29d878911.gif)
QQ课程设计
QQ聊天课程设计
《软件综合开发案例教程》课程设计报告
课程设计题目
我们要做的就是QQ聊天界面,基本功能和QQ类似。
首先,系统分为两大部分,第一部分是客户端,是用户使用的部分,第二部分就是服务器,所有的客户端都是通过服务器来进行用户身份验证及聊天转接的。
客户端提供主要的界面及服务请求,如:
登录界面、注册界面、聊天界面、信息查看界面等。
客户端主要提供服务请求界面,核心连接逻辑处理主要由服务器提供,并向客户端发送请求的结果。
同时,服务器要能提供服务的开启、关闭功能及查看聊天信息历史记录。
小组成员:
任课讲师和助教:
年月日
摘要
这个课程设计整体采用在linux平台下,在同一局域网内实现聊天功能。
整体框架主要分为服务端和客户端两个部分,设置好ip和端口号,在Linux下编译和调试两主大块程序,实现服务端和客户端的连接,然后以服务端作为中继转实现客户端之间的通信。
使用gtk实现界面,并在项目管理中采用socket网络编程采用TCP/IP协议保证连接可靠,提高了编译和调试效率,加快了项目的完成速度。
本次设计的聊天工具采用字符串命令行的方式进行通信,主要实现了五个功能:
用户之间一对一的聊天、用户之间聊天记录保存、聊天记录调取查询。
经过测试,程序运行可靠,能满足在linux中实现网络聊天的要求。
关键词:
关键词linux,gtk,socket,mysql,服务端,客户端,网络编程
Abstract
Withthedevelopingofinformationtechnology,especiallyinternet,domainofGISapplicationhasagreatdevelopmentinmanyfields.Recently,thedevelopmentofGISnetworkutilizationmakeadramaticallyprogress,andWebGISwhichisbasedonInternethasbeenforwarded.
XXXXXXX
XXXXXXX
Keywords:
XXXXXXXXXXXXXXX
第一章绪论
1.1课题背景
QQ聊天软件系统是基于互联网的即时通信软件系统。
也就是使用因特网技术,允许人们实时的传送信息。
即时通信服务的特点是能让用户可以选择性的接受或拒绝某人的信息,也可以同一时间与多人进行交流.当前中国无线互联网呈现出爆发式的增长趋势,移动互联网渐成趋势,即时通信技术已经从PC机向手机媒体渗透。
本次项目主要是设计一个QQ聊天界面,该聊天工具是采用gtk、socket、mysql技术进行连接,以实现QQ登录、QQ注册、进行客户聊天并查看聊天记录等功能。
1.2课题意义
网络的诞生从某种意义上来说改变了我们的生活,它将这个世界的上不同地域的人之间的距离拉近了。
伴随着网络的诞生,网络聊天软件也随之而来。
最初的网络聊天软件只是有简单的文本界面,功能也十分有限,随着技术的不断发展与强大,拥有更多功能和美观界面的聊天程序走进了我们的生活,也有越来越多的人将网络聊天软件作为他们日常生活交流和通信的工具。
网络聊天软件在国外有ICQ等,在国内主要有OICQ、Ticq和一些基于网页的即时通讯工具,像tianmao网站上的旺旺等等,都做得即美观,简洁,且功能强大,OICQ现在拥有非常大的用户群。
现在也有很多在网络上不使用服务器的通讯软件,这种软件小巧且方便,也能解决一部分问题。
但是有服务器的通讯软件,有着不可比拟的优势:
可以发送离线消息,不管用户当时是否在线,下次上线时,就可以看到这条消息了。
可以保存用户的个人信息或个人简介,供人查看。
而且,无服务器的通讯软件,是以机器为通讯单元的,而有服务器的聊天软件是以人为通讯单元的。
所以,带服务器的聊天软件在网络上,有着非常广泛的用途,为网络上的通讯带来了极大的方便,它使人与人之间的交流不再只局限于某一个范围,并且它的开销也是很小的,你只需要拥有一部可以联网的PC机就足够了
1.2.1Linux的简介
在本次课题设计是在linux系统中完成的,所以首先需要了解linux系统的来龙去脉。
Linux是在Unix的基础上修改实现的,其主要的改变就是内核源码在网上完全公开。
所有人都可以把下载的内核源码拿来直接用或者任意的修改,并且经修改过后的源码也必须是公开的。
经过几年的发展,linux已经有很大的改变,所以现在linux有很多版本,但它们都遵循Linux最初的内核。
Linux系统的可移植性很高而且投资相对于其它系统而言较低,所以各种类型的计算机硬件设备中都选择安装linux系统,特别是现在很热的嵌入式设备中。
在现在的IT行业中,Linux就是一种表示内核,是大家普遍都认同的说法,因为linux是使用GNU工程中各种工具和数据库的一种操作系统。
Linux得名于计算机业余爱好者LinusTorvalds。
Linux支持各种各样的软件(包括大量免费软件),因此为用户提供了很大的方便。
Linux在其创始人开发过后,就由世界上各种IT精英爱好者共同开发,提出他们自己的看法并进行修改,作为一个操作系统,它具有Unix、Mac、Windows和WindowsNT同样的功能。
从本质上讲,Linux是Unix系统的克隆,在源码级上兼容绝大部分的Unix标准,它遵循POSIX规范。
只要是使用linux就不得不提到GNU,GNU项目开始于1984年,旨在开发一个类似Unix、并且是自由软件的完整操作系统:
GNU系统。
(GNU是GNUNotUnix的递归缩写)。
由于GNU操作系统的核心是linux,所以GUN的使用正在一步步变大。
Linux操作系统在早期开发和使用中有许多软件比如:
gcc编译程序、make编译管理程序、gas汇编程序、bash命令解释程序等等。
GNU和linux是相互依存的,没有GNUlinux就是一个简单的框架,毫无使用之处,同时没有linuxGNU也不会受到人们的欢迎。
Linux操作系统作为一个开源的操作系统被很多IT同行的人所认同,它能够吸引人最大的地方就是下载内核源码不需要成本。
只要使用遵循使用原则就可以任意使用并修改它的源代码。
1.2.2Linux发展历程
Linux的创始人,是一名叫LinusTorvalds的芬兰大学生。
他当时发现了Unix系统的一些薄弱功能给他带来了很多的不便,于是他决定在Unix的基础上继续开发出来有别于Unix系统的操作系统,该系统弥补了Unix系统的缺点,同时又添加了新功能。
通过他不懈的努力,在linux内核中能实现一些基本的应用程序。
由于Linux一开始就把Linux的源代码放在网络上,引起了很多的爱好者的注意,因此这些爱好者也加入到linux内核开发中,随着越来越多的高水平的爱好者加入,该系统的发展迅速膨胀,很快各种版本的linux产生。
由于大量的增添和修改,使linux的文件框架越来越大,越来越稳定,而且实现了基本的TCP/IP功能,使得linux在Internet中迅速成长。
经过二十多年的发展,现在Linux系统已经以成熟的一面展现在人们面前。
现在的Linux内核更加稳定和健全,而且获取内核源码更加的简单实用,所以现在的商家抓住这些特点,开始大量普遍的运用linux系统。
由于linux到目前为止几乎没有被木马和病毒所困扰,所以也把它当作一种强壮而安全的防火墙。
刚开始linux系统进入过后只是命令字符界面,还没有一个成型的桌面系统。
一个系统要受到人们的欢迎,必须要图形界面,并且图形界面要美观且操作简单。
所以桌面上的Linux也在不断的完善之中。
现在推行出来的ubuntu,centos等图形界面都很受人们的喜爱,可以和微软的界面系统一比高下。
由于linux系统内核小,兼容性好,效率高,稳定性强等特点,所以几乎在各个行业都能看见linux的身影,比如:
军事,金融,电信以及政府。
当今计算机领域比较巨型的服务器大多采用LINUX操作系统。
可见LINUX在网络和分布式系统的应用将是很有前景的。
Linux以后必将成为一种新的系统潮流。
1.3小组分工
主要介绍小组成员在课题实现过程中做了什么事情,解决了什么问题,对课题实现做了什么贡献。
1.4论文组织
论文的组织结构如下:
第二章系统应用技术
2.1GTK的概念和功能
(1)概念:
GTK+(GIMPTOOLKIT),是一个跨平台的图形界面(GUI)开发工具,是目前LINUX操作系统中较常用的图形界面开发工具之一,它采用一种非常有特色的面向对象的C语言开发框架(CFramework),应用它可以轻松的在LINUX系统平台的XWINDOW环境下开发出漂亮的图形界面应用程序。
直接用GTK+开发应用程序必须使用C/C++语言,所以您必须具有一定的C语言基础,最好用C语言开发过应用程序。
GTK+2.0是GNOME2桌面环境的图形基础,是GNU工程的一部分,采用LGPL条款分发。
(2)功能:
2.2socket概念和功能
(1)概念:
socket直接翻译过来的意思是插座,听起来挺古怪的,但是它的作用就类似于这个插座的作用。
作为了解socket的人都有另一种喊法:
套接字。
它包含有IP地址和端口号的信息,是通信的必要条件。
套接字就是一个文件,是int型数字,它与文件描述符共用一段数值空间0-65535。
应用程序中使用套接字来调用套接口,套接字可以认为是指向套接口的指针。
Socket是网络传输层供给应用层的编程接口,它提供了许多函数和例程,程序员可以使用它们来开发TCP/IP网络应用程序。
套接字归根结底就是文件描述符。
使用Socket进行数据传输的简要步骤如下:
建立一个Socket,返回该套接字的描述符;按要求配置socket的端口和ip地址,将socket连接到服务端和客户端;按要求通过socket发送和接收数据;关闭此socket。
(2)功能:
在Internet上的主机大多数情况都会有很多应用程序,每种应用程序对应着一个服务相当与就是客户端。
每种服务都打开一个Socket,并把服务端和客户端指定绑定到系统中的同一个端口上,而且这个端口必须相同且不能为系统所占用的端口。
进程之间的通信需要端点这样的标志,socket就提供了这种标志。
所以不同进程之间要通过socket提供的端点才能使进程之间相关联起来进行数据传输。
服务端和客户端的数据通信,我们可以这样理解,就是把客户端套接字里面的内容传输到服务端套接字里面去,两个套接字建立一种关联,该关联应该包含多个元素用来建立多个Socket,使多个客户端与指定的ip和端口号建立联系。
这里值得一提的是,socket是面向客户/服务器模型而设计的面对不同客户端和服务端程序提供不同的socket系统调用。
Socket实际上是网络传输层和应用层之间的桥梁。
客户向内核任意请求一个socket,系统会立刻为之分配一个socket号,服务器拥有全局公认的socket,所有在局域网或者在Internet网上的客户端可以进行连接请求。
socket利用C/S模式很好地解决了不同进程之间数据传输的问题,所以它可以在本地局域网上进行通信,也可以通过互联网在世界范围内通信。
2.3mysql概念和功能
(1)概念:
MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于Oracle旗下公司。
MySQL最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,关系数据库管理系统)应用软件之一。
MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。
MySQL软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。
由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。
(2)功能:
MySql的核心程序采用完全的多线程编程。
线程是轻量级的进程,它可以灵活地为用户提供服务,而不过多的系统资源。
用多线程和C语言实现的MySql能很容易充分利用CPU。
MySql可运行在不同操作系统下。
简单地说,MySql可以支持Windows95/98/NT/2000以及UNIX、Linux和SUNOS等多种操作系统平台。
这意味着在一个操作系统中实现的应用可以很方便地移植到其他的操作系统下。
MySql有一个非常灵活而且安全的权限和口令系统。
当客户与MySql服务器连接时,他们之间所有的口令传送被加密,而且MySql支持主机认证。
MySQL是开源的,可以不要钱。
速度还很快。
2.3小结
XXXXXXXXXXX
第三章需求分析
3.1功能需求
本次设计以QQ等日常聊天工具为参考,在Linux平台下进行开发与实现,它适用于局域网内2人进行通信交流。
此设计主要采用gtk+进行界面设计,用socket编程实现通信,主框架采用C/S架构。
总体来看,该设计主要包括登陆界面、聊天界面、服务端和客户端。
3.1.1登录功能实现模块:
(图片)
(1)保存用户注册过的相关信息,主要是用户名和密码;
(2)验证登录用户的信息
(3)成功登录或者选择退出
3.1.2服务器端功能实现模块
(图片)
(1)接收与客户端聊天功能,可以实现互相通信;
(2)可以选择“发送”和“关闭”按钮实现功能;
(3)能够实现对最近聊天记录的查询;
3.1.3客户端功能实现模块
(图片)
(1)接收与服务器端聊天功能,可以实现互相通信;
(2)可以选择“发送”和“关闭”按钮实现功能;
(3)能够实现对最近聊天记录的查询;
(4)通过搜索关键词可以搜索到所需的内容。
3.2性能需求
3.2.1模块兼容性
由于本次设计是我们组全体成员所做,每个人都有各自负责的模块,所以在对程序融合方面都要求比较高。
这就要求每个成员在编写程序的时候注意对函数和变量的规范,以及对程序的主框架有一定的了解。
3.2.2准确可靠性
(1)确保与数据库的连接正确,能准确的显示所需要查询的内容,例如关键字查询,搜索“my”,出现的是所有含有”my”的聊天记录语句,而不是单一的一条数据。
(2)外部因素的影响。
在一个pc机上同时运行服务端和客户端,设计的程序应最大限度的提高性能。
如果是操作不当或者由于系统原因,比如端口被占用等,要使程序能够安全的退出。
3.2.3操作易用性
小组成员的各个程序整合在一块后要尽量调理清晰,让人容易理解,并且操作起来方便简单。
3.3模块分布
系统总体结构图:
图3.3.1模块划分图
3.4系统总体流程图
图3.4.1系统总体流程图
第四章概要设计
1.引言
1.1编写目的
在需求明确、要准备开始编码之前就要做好概要设计,这是为在实验进行过程中能进行参考,也就是把软件的需求转换为系统设计;在进行软件测试时也能对各个模块进行参考。
1.2背景
需求明确之后,准备编码之前。
1.3定义
(1)GTK全称:
GIMPToolKit一个生成GUI的工具库,它是一套跨多种平台的图形工具包,支持创建基于GUI的应用程序;
(2)Socket通常也称作“套接字”,是TCP/IP网络的API,定义了许多函数或例程,用于描述IP地址和端口,是一个通信链的句柄;
(3)MySQL是完全网络化的跨平台关系型数据库系统,一个正真的多用户、多线程SQL数据库服务器,同时是具有客户机/服务器体系结构的分布式数据库管理系统。
1.4参考资料
《软件综合开发案例教程》
2.总体设计
2.1需求规定
1.聊天信息显示窗口,能够显示最近的聊天信息;
2.聊天信息输入窗口,用户能够定位在输入窗口,并能够输入聊天信息;
3.聊天信息发送按钮,在点击信息发送按钮时,能够判断发送信息是否为空,如果为空,有相应提示,否则将发送聊天信息;
4.聊天界面退出按钮,点击退出按钮,程序提示是否退出聊天程序,点击是否取消退出,点击是则退出聊天程序;
5.聊天记录查询按钮,点击查询按钮,弹出新窗口,显示最近一分钟的聊天记录。
2.2运行环境
PC机正常启动,Linux客户端正常启动。
2.3基本设计概念和处理流程
(1)本次设计的聊天实验,其中聊天程序实现和运行的操作系统必须是Linux环境;
(2)使用Linux下的Gtk+库进行图形化界面开发;
(3)使用Linux下的Socket通信进行数据通信;
(4)使用Linux下的Mysql数据库进行。
主要处理流程:
2.4结构
本次实验主要用到的就是Gtk界面设计结构,Mysql数据库结构以及Socket通信结构,在Gtk+结构中,主要就是应用到应用构件、事件、信号;MySQL数据库主要应用到的就是创建数据库和创建表格,在数据库和表格里进行增、删、改、查;Socket通信主要的就是应用到Socket中客户端与服务器之间的连接。
其结构图大概如下:
2.5功能器求与程序的关系
(1)发送模块:
输入:
用户输入内容
输出:
相应的信息
(2)系统操作模块:
输入:
用户口令
输出:
对话框
(3)录入模块:
输入:
相应的信息
输出:
相应的结果
(4)退出模块:
输入:
提出命令
输出:
无
3.接口设计
3.1用户接口
此聊天程序采用图形用户接口,以鼠标和键盘为用户接口,方便用户对聊天管理系统的操作.
3.2外部接口
本次主要采用MySQL数据库,所以外部接口为API函数。
3.3内部接口
本次主要采用MySQL数据库,内部接口为API函数。
4.运行设计
4.1运行模块组合
本次设计主要是应用Gtk界面设计,在界面设计的基础上,又增加了Socket通信功能,在实现通信后,增加了MySQL数据库管理功能,实际所用模块的组合如下:
运行聊天程序时,其内部模块为Socket通信模块;打开界面这个运行程序时,其内部模块为Gtk界面设计模块;当想要管理聊天信息以及查找历史数据时,采用MySQL数据库来支持这个功能。
4.2运行控制
在成功打开聊天程序后,分别编译客户端和服务器端,建立通信,通过界面的按钮提示选择特定的功能模块,最后,结束程序运行。
4.3运行时间
5.系统数据结构设计
5.1逻辑结构设计特点
本系统内主要使用的数据库是MySQL数据库
在MySQL数据库使用过程中,其大概步骤如下:
数据库初始化,主要进行数据库启动和数据库的链接、创建;
数据表创建:
createtabletb_name;
数据插入:
insertintotable()values();
数据查询:
select*fromtable;
5.2物理结构设计特点
MySQL数据库的存储要求:
MySQL数据库的访问方法:
建立数据库,链接数据库,然后对数据库进行增、删、改、查;
MySQL数据库的存取:
利用MySQLCAPI函数,存:
mysql_store_result();
取:
mysql_fetch_row/line();
5.3数据结构与程序的关系
本次设计中,mysql数据库主要是为程序操作和管理数据库做出贡献。
6.系统出错处理设计
6.1出错信息
可能出现的故障
输出形式
含义
处理方法
客户不能给服务器发信息
Null
客户端和服务器端不能连接
重新编译,建立连接
按history,不能检索到通信记录
无输出
在创建history时,没有设置好数据库
重新设置history的回调函数
按close按钮不能关闭通信
无反应
在创建close按钮时没有设置回调函数
重新设置close的回调函数
客户端和服务器的图片不能显示
无输出
图片不能出现
客户端和服务器的编码里没有插入图片
6.2补救措施
(1)提示服务器积极拒绝信息;
(2)对一般错误,给用户提示信息。
6.3系统维护设计
由于本次项目较小,且大部分只是文档信息,不投入使用,所以没有制定特殊的系统维护设计。
第五章设计和实现
4.1XXXXXXX
XXXXXXX
4.2XXXXX
4.2.1XXXXX
XXXXX
4.3XXXXXX
XXXXXXXXX
第六章系统测试
5.1测试说明
本测试的测试目的是验证Linux聊天系统能否实现正常的登录、聊天、聊天记录的查询等基本功能,以及并发访问的性能。
为此我们在虚拟机平台下在Linux系统中进行简单的程序运行以测试上述功能能否实现以及程序的运行状况。
5.2模块测试
运行登录程序,注册个人登录信息,并能够正常登录。
运行聊天程序打开服务器端和客户端,服务器端建立好socket,就一直处于等待连接状态,当有客户端连接服务器的时候,服务器接收连接请求,打开客户端与服务器端连接,实现程序的运行。
然后进行程序各个模块的功能性测试,聊天信息的发送功能,当服务器端向客户端发送信息和客户端向服务器端发送信息均能成功实现,且聊天信息在显示框中均能正常显示,并不断进行聊天功能。
聊天信息:
当进行聊天时聊天信息不但会显示在显示框中,聊天记录还会被写进数据库之中,这样我们就能通过调取数据库中的信息来查看聊天记录。
我们添加一个聊天记录按钮从数据库中来调取聊天记录,当我们运行聊天程序,并实现聊天功能进行聊天,聊天记录被储存在数据库中,我们点击聊天记录按钮,会发现聊天记录会被调取出来显示在显示框中,聊天记录功能能正常实现。
5.3测试结果分析
由于设计的聊天软件功能比较简单,没有进行复杂的测试,只是进行各个模块的功能能否正常实现,以及所有模块组合后能否正常运行整个聊天程序的运行,进行简单的功能测试,最终所有功能均能正常实现,符合设计标准。
第七章结论与展望
6.1结论
聊天程序设计最初的时候,主要是对相关资料的收集和理论知识的学习。
在这个阶段,最好是同时结合资料和源码一起来看,效果会比较好,学习效率较高。
看资料和教程是从细节和基础上去学习知识,而看相程序的源码则是从整体和实现上去了解一个系统。
这样才能做到“见树又见林”。
在具体实现的时候,可以以模块或分层次的思想来分析系统。
重点掌握核心的模块,其他模块可以采用现有的类库或开源的实现,这样可以提高开发的效率。
软件开发对于代码量的积累是很重要的。
当积累了一定的代码量后,看问题就会比较有程序的思想,能够从层次,模块的角度来分析问题,这样思路就比较清晰了。
这个简单的网路聊天程序,可以实现聊天的功能,即客户端发出消息后,服务器端能收到此消息。
由于对知识理解深度的认识和时间的限制,本论文所阐述的系统还存在多处不足的地方,欢迎提出批评和建议。
6.2展望
XXXXXXXXX
参考文献
[1]《软件综合开发案例教程》蔡建平编著/清华大学出版社出版
[2]《GTK+2.0编程范例》宋国伟编著/清华大学出版社出版
致谢
经过在惠普洛阳国际软件