计算机专业大学论文.docx

上传人:b****6 文档编号:5286869 上传时间:2022-12-14 格式:DOCX 页数:21 大小:632.11KB
下载 相关 举报
计算机专业大学论文.docx_第1页
第1页 / 共21页
计算机专业大学论文.docx_第2页
第2页 / 共21页
计算机专业大学论文.docx_第3页
第3页 / 共21页
计算机专业大学论文.docx_第4页
第4页 / 共21页
计算机专业大学论文.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

计算机专业大学论文.docx

《计算机专业大学论文.docx》由会员分享,可在线阅读,更多相关《计算机专业大学论文.docx(21页珍藏版)》请在冰豆网上搜索。

计算机专业大学论文.docx

计算机专业大学论文

学士学位论文

 

基于Delphi的简单聊天软件

 

姓名:

学号:

指导教师:

院系(部所):

计算机科学系

专业:

计算机科学与技术

完成日期:

2011年05月22日

 

摘要

20世纪末,随着计算机科学的发展,网络应用越来越广泛,为广大网络用户提供了更加周到和人性化的服务。

个性化已经逐渐成为当今网络应用的潮流。

本文研究了一种基于delphi语言的网络聊天程序,此聊天软件与当今网上已经采用的一些聊天软件相比,具有用户使用简单,更方便,更高效等优点。

基于delphi的聊天系统设计用到的主要模块是Internet技术中TCP/IP协议的Socket网络编程以及客户端/服务器端模式(Client/Server模式)。

本系统从需求分析、系统的设计、具体功能的实现都严格遵循了软件设计工程的思想。

该开发中利用了计算机网络编程的基本理论知识,如TCP/IP协议、客户端/服务器端模式(Client/Server模式)、网络编程的设计方法等。

系统主要实现了用户注册、登录、聊天、服务器管理等功能。

本系统从需求分析、系统的设计、具体功能的实现都严格遵循了软件设计工程的思想。

最后,总结本系统的优缺点,并给出改进的方案。

关键词:

局域网;Delphi7.0;Socket;TCP/IP;C/S

 

Abstract

Attheendofthe20thcentury,withthedevelopmentofcomputerscience,Internetapplicationstechnologyiswidelyused.Thismakesnetworkuserscanenjoymoreconvenientandindividualservices.Personalizationisthetrendoftoday’sInternetapplications.Inthiswork,westudytheprogramofchatroombasedonthelanguageDelphi7.0.ComparedtosomecurrentlyexistentchatroomontheInternet,mychat-roomhasseveraladvantagessuchasgivingmoreconvenienceandmoresimpletousers.

ThechatsystemdesignbasedonDelphimainmoduleisusedinInternettechnologyofTCP/IPprotocolSocketnetworkprogrammingandClient/Servermode(Client/Servermode)are.Thissystemfromrequirementanalysis,systemdesign,specificfunctionarestrictlyfollowsthesoftwaredesignengineeringthinking.

Thedevelopmentofcomputernetworkprogrammingwereusedintheelementarytheoryknowledge,includingTCP/IPprotocol,Client/Servermode(/Servermode),arethedesignofnetworkprogrammingmethod,etc.Systemmainlyrealizestheuserregister,login,chat,servermanagement,andotherfunctions.Thissystemfromrequirementanalysis,systemdesign,specificfunctionarestrictlyfollowsthesoftwaredesignengineeringthinking.Finally,summarizestheadvantagesanddisadvantagesofthissystem,andgivestheimprovedscheme.

Keywords:

LAN,Delphi7.0;Socket;TCP/IP;C/S

 

 

第1章绪论

1.1引言

Internet能带给我们知识、信息、机会、观念……甚至更多,它早已不是电脑专业人士的专利了,它已成为千千万万人士不可缺少的生活哦组成部分了。

即时通讯软件的出现正在逐渐改变人们的沟通与交际方式。

无论近在咫尺,还是远隔重洋,也只是在键盘和鼠标之间就可以解决问题。

即时通讯服务非常适合企业内部或企业和客户之间的交流。

网络聊天程序.越来越影响着我们的网络生活。

为了让局域网内的计算机用户如寝室、办公室能随时随地通过网络进行交流。

出于高效、快速地处理各种事务的目的,越来越多的企业和单位在其内部使用局域网来进行工作和交流。

1.2课题研究现状

基于局域网的即时通信工具,实际上是互联网即时通信工具的一个小规模版本,广域网上的即时通信工具,如今一般采用UDP或者TCP协议体系来实现,开发技术已经比较成熟,比如较早的ICQ、MSNMessenger、YAHOO通等国外开发的产品,还有国产的有名的QQ、新浪UC、LAVA-LAVA等,这些工具统统都实现了广域网上的即时通信,尽管都是即时通信,实现了即时聊天,以及文件传输的主要功能,但是也各有各的特色,比如ICQ的巨大客户群,MSN的个性化表情,YAHOO通的易操作性等,而QQ也具有一个相当方便的屏幕截图功能,另外就是,所有上述软件都实现了网络即时的视频,语音聊天功能。

这些软件,在使用方面各有特色,在实现方面也各有所长。

但由于这些产品正在商业运营阶段,其实现方式属于商业机密,具体细节不可能得知,但是它在大的方面无非就是各种利用各种平台上的网络通信接口,建构基于下层TCP/IP,或者UDP/IP协议的软件产品。

在局域网内,这些功能的实现跟广域网相比更加简单,因为局域网的网络结构本身比广域网要简单,但是可以借此理解网络协议,以及网络通信工具的实现原理,所以仍然极具研究价值。

1.3论文主要工作

本课题研究的主要内容包括以下几个部分:

(1)利用Socket机制实现TCP/IP的网络设计,实现服务器终端和客户端的网络数据传输;

(2)数据库表的设计和实现,以及表中存储的数据和界面之间的数据输;

(3)Delphi实现图形界面的设计与实现

 

第2章开发环境的建立

2.1Delphi的安装

(1)关于Delphi7.0

Delphi是美国Borland公司开发的一种全新的可视化软件开发工具。

它采用了面向对象程序语言(object-orientedlanguage)和基于组建的开发结构框架相结合的先进技术。

Delphi这种先进的编程理念和强大的可视化编程功能,克服了其他的面向对象语言如:

C++。

Pascal等在用户交互能力上的不足。

同时,它强大和先进的数据库处理技术和能快速地建立应用程序的独特优势,为程序开发人员在开发应用程序上提供了便利。

程序员只需要在Delphi所提供的应用程序框架上添加相应的功能代码即可。

这使得原本繁琐复杂而又枯燥的编程工作在Delphi的帮助下变的而又有趣。

因此,Delphi深受编程人员的欢迎。

(2)Delphi7的特点

A.简化程序执行过程,编译速度快。

B.可在多个不同的平台上开发应用

C.具有更好的可重复性、可管理性和可扩展性。

D.具有强大的数据可处理能力。

E.同时也增加了多个为程序员提供方便的功能。

(3)Delphi7的安装环境

·硬件环境:

最低硬件环境:

CPUPentium233MHZ,硬盘1GB,内存64MB.

推荐硬件环境:

CPUpentium333MHZ,硬盘40GB,内存128MB.

·软件环境:

Windows98/2000/xp或更高版本的操作系统。

(4)Delphi7的安装步骤

·首先从网上下载安装包,将安装包解压后,打开安装文件。

双击可执行文件即可进入安装界面。

·单击【next】按钮,进入“用户输入序列号和授权码”窗口,这是,如果用户不能输入正确的序列号和授权码,那么就会弹出一个警告窗口使得安装不能继续。

·输入正确的序列号和授权码后,单击【next】按钮,即可弹出“Delphi7.0软件安装协议询问”窗口。

如果同意,就选择第一个。

·单击【next】按钮,进入“软件安装信息”窗口。

该窗口为用户介绍了Delphi7.0的详细信息。

·单击【next】按钮,进入“软件安装类型”窗口。

该窗口显示了Delphi7.0的几种常见的安装形式(Typical、Compact、Custom)。

·选择了安装类型后,单击【next】按钮。

根据需要选择VisiBroker/CORBA的支持。

·单击【next】按钮后,选择一种Office类型组件注册,进入用户“是否安装附加组件”窗口。

默认情况下为全选。

·单击【next】按钮后,选择安装路径,然后单击【next】按钮,安装向导询问用户是否安装数据库保存到本地硬盘。

再单击【next】按钮,进入准备开始正式安装。

单击【Install】按钮,开始正式安装。

·系统安装完毕后,单击【Finish】按钮即可。

结束后,根据系统提示是否重启计算机,重启后安装全部完成。

2.2第三方控件安装

1)Raize控件安装

·首先从网上下载安装包,将安装包解压后,打开安装文件。

双击可执行文件即可进入安装界面。

·单击【next】按钮,进入许可协议界面,点“同意”。

·单击【next】按钮,进入Raize部件检验窗口,查看一些重要的注意事项。

·单击【next】按钮,进入集成开发环境综合信息界面,查看一些重要的注意事项。

·单击【next】按钮,进入“用户姓名和授权码”窗口,这是,如果用户不能输入正确的姓名和授权码,那么就会弹出一个警告窗口使得安装不能继续。

·单击【next】按钮,进入“终点站”,选择该控件的目的文件夹。

·单击【next】按钮,进入“选择开发区环境”,选中Delphi7.0。

·单击【next】按钮,进入“开始安装”界面。

·单击【next】按钮,开始安装。

·单击【next】按钮,进入“一级VCL安装”界面。

·单击【next】按钮,进入“阅读文件”界面。

·系统安装完毕后,单击【Finish】按钮即可。

结束后,根据系统提示是否重启计算机,重启后安装全部完成。

2)AlphaControls控件安装

·下载AlphaControls+2009+v6.65控件,并解压;

·打开\Lib\D7目录,找到acntD7.dpk双击打开;

·单击compile对控件进行编译;

·单击install进行安装,弹出安装成功提示,重新启动Delphi7.0

第3章通信格式和数据库表的设计

3.1通信中的数据格式

在面向应用层考虑问题的时候,一般可以自定义一个应用层协议,至于底层一般都是厂家和操作系统提供的,此电子点菜系统要完成的是传输层以及上层的数据传输,是面向上层的应用,所以不用考虑下层协议的问题,而且下层怎样实现传输、用什么样的格式传输也没有必要考虑。

通常,如果传输数据,用基于二进制流的形式编协议,可以考虑用十六进制形式;如果传输文本,用文本形式编协议,可以考虑使用字符。

这两种实现方法都适合在本系统中应用。

这里采用的是文本的形式,使用字符进行传送数据,先规定命令数据,而后是数据,这个得根据需要来编制。

通信协议有定长和不定长之分。

定长度:

包头+数据+校验

不定长度:

长度+包头+数据+校验

对于超长的数据通讯协议还要考虑分包和包标识问题。

@命令|内容|...

客户端登录服务器:

@LOGIN|UserID|PASSWD

中间用"|"分开,用来表示:

登录|用户ID,用户密码“@”表示有效数据

在局域网聊天软件中,具体命令如下:

1)注册发送@reg|username,passwd,通过tcp连接服务器,发送注册命令,返回处理结果:

01用户名已经存在;00注册成功

2)登录发送@login|username,passwd,通过tcp连接服务器,发送登录命令,返回处理结果:

01用户名不存在;02密码错误;00登录成功

3)登录成功获取好友列表发送:

@get|passwd,通过tcp连接服务器,发送获取好友列表的命令,返回处理结果:

fnum|f1|f2…|f10,返回好友数据以及好友用户名,如果好友数据为0则表示没有好友

4)聊天:

获取好友UDP信息:

@getinfo|username|fname,返回好友的udpserver的IP地址以及端口号;根据IP地址和端口号发送信息。

5)心跳包:

@heartbeat|username|IP|Port发送用户名以及本地udpserver的ip地址和端口号,服务器根据接受到的信息对用户信息进行更新;

6)添加好友:

@heartbeat|username|fname;服务器写表,返回成功信息

7)异常处理:

服务器异常关闭,心跳包发送失败,客户端返回登录界面

3.2数据库表的设计

1.用户表(userinfo)

实体属性表

实体名称

用户表(User)

设计者

李微

数据库类型

SQLSERVER2000

实体管理者

系统管理员

页号

1

字段描述

字段名

数据类型

长度

是否为空

初值

键型

备注

登录名

UserName

Char

24

notnull

主键

密码

PassWord

Char

18

notnull

2.用户网络信息(usernetinfo)

实体属性表

实体名称

类别表(Sort)

设计者

李微

数据库类型

SQLSERVER2000

实体管理者

系统管理员

页号

1

字段描述

字段名

数据类型

长度

是否为空

初值

键型

备注

用户名

UserName

Char

24

notnull

主键

用户IP

Userip

Char

24

notnull

用户端口号

Userport

Char

10

notnull

用户状态

Status

Int

4

notnull

0

注1

上次更新时间

Record_time

Datetime

8

notnull

注2

注1:

用户状态,1为在线,0为不在线

注2:

Record_time用户上次登录时间

3.好友列表(friendlist)

实体属性表

实体名称

菜谱表(Menu)

设计者

李微

数据库类型

sqlite3

实体管理者

系统管理员

页号

1

字段描述

字段名

数据类型

长度

是否为空

初值

键型

备注

用户名

Username

Char

24

notnull

主键

好友数

Fnum

Int

4

notnull

0

注1

好友1

F1

Char

24

notnull

注2

好友2

F2

Char

24

null

好友3

F3

Char

24

null

好友4

F4

Char

24

null

好友5

F5

Char

24

null

好友6

F6

Char

24

null

好友7

F7

Char

24

null

好友8

F8

Char

24

null

好友9

F9

Char

24

null

好友10

F10

Char

24

null

注1:

好友数目

注2:

好友用户名

第4章服务器和客户端的设计与实现

4.1图形界面设计

4.1.1图形界面设计

局域网聊天系统的界面主要分为两个部分:

服务器端的界面和客户端的界面。

现将这两部分的界面分别说明如下:

一、服务器端的界面说明

主界面:

图4-1-1服务器端主界面

服务器端的主界面中主要的功能和数据库中表的存储是一一对应的,服务器端主要的功能是响应客户端注册,登录,获取好友列表,获取好友网络信息,显示当前在线用户的功能。

二、客户端的界面说明

1、登录界面

图4-2-1登录界面

图4-2-2登录界面

点击配置按钮设置服务器IP地址以及端口号,如图4-2-2

2、主界面

图4-2-3主界面

主界面有主要有两个功能,一个是单击好友名字打开与好友的聊天窗口。

第二个是单击看谁在线按钮,查看在线人员添加好友。

1、与好友聊天界面

图4-2-4与好友聊天界面

图4-2-5与好友聊天界面

输入要发给好友的文字,点击发送按钮。

发送文件点击文件,选择要发送的文件自动发送,如图4-2-5

图4-2-6好友不在线

好友如果不在线发送信息提示好友不在线,如图:

4-2-6

图4-2-7好友在线

4.1.2服务器事件响应

服务器主要用来处理客户端的注册,登录,获取好友列表,添加好友,退出登录等信息的响应。

响应事件在tcpserverExecute事件中。

详细代码如下:

Msg:

=AThread.Connection.ReadLn;

ifleftstr(msg,1)='@'then

begin

tmplst:

=TStringList.Create;

userinfo:

=TStringList.Create;

tmplst.Delimiter:

='|';

tmplst.DelimitedText:

=msg;

iftmplst.Strings[0]='@reg'then

begin

userinfo.Delimiter:

=',';

userinfo.DelimitedText:

=tmplst.Strings[1];

username:

=userinfo.Strings[0];

passwd:

=userinfo.Strings[1];

qry.SQL.Text:

='selectcount

(1)asnumfromuserinfowhereusername='''+username+'''';

qry.Open;

ifqry.FieldByName('num').AsInteger>0then

begin

AThread.Connection.WriteLn('01');

end

else

begin

qry.SQL.Text:

='insertintouserinfo(username,passwd)values('''+username+''','''+passwd+''')';

qry.ExecSQL;

qry.Close;

AThread.Connection.WriteLn('00');

end;

end;

iftmplst.Strings[0]='@login'then//登录

begin

userinfo.Delimiter:

=',';

userinfo.DelimitedText:

=tmplst.Strings[1];

username:

=userinfo.Strings[0];

passwd:

=userinfo.Strings[1];

qry.SQL.Clear;

qry.SQL.Text:

='selectpasswdfromuserinfowhereusername='''+username+'''';

qry.Open;

ret:

=trim(qry.FieldByName('passwd').AsVariant);

if(CompareStr(ret,passwd)=0)and(StrLen(PChar(passwd))>=6)then

begin

mmo1.Lines.Add('用户:

'+username+'登录成功');

AThread.Connection.WriteLn('00');

endelseifStrLen(PChar(qry.FieldByName('passwd').AsString))>6then

begin

AThread.Connection.WriteLn('02');

endelse

begin

AThread.Connection.WriteLn('01');

end;

qry.Close;

end;

iftmplst.Strings[0]='@quit'then//退出

begin

UserName:

=tmplst.Strings[1];

qry.SQL.Clear;

qry.SQL.Clear;

qry.SQL.Text:

='updateusernetinfosetstatus=0whereusername='''+username+'''';

qry.ExecSQL;

qry.Close;

end;

iftmplst.Strings[0]='@get'then//获取好友列表

begin

UserName:

=tmplst.Strings[1];

qry.SQL.Clear;

qry.SQL.Text:

='select*fromfriendlistwhereusername='''+username+'''';

qry.Open;

num:

=qry.FieldByName('fnum').AsInteger;

ifnum>0then

begin

friendlst:

=IntToStr(num)+'|'+qry.FieldByName('f1').asstring+'|'+qry.FieldByName('f2').asstring+'|'+qry.FieldByName('f3').asstring+'|'+

qry.FieldByName('f4').asstring+'|'+qry.FieldByName('f5').asstring+'|'+qry.FieldByName('f6').asstring+'|'+qry.FieldByName('f7').asstring+'|'+

qry.Fie

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

当前位置:首页 > IT计算机 > 计算机硬件及网络

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1