二级课题报告.docx

上传人:b****8 文档编号:10252397 上传时间:2023-02-09 格式:DOCX 页数:26 大小:686.05KB
下载 相关 举报
二级课题报告.docx_第1页
第1页 / 共26页
二级课题报告.docx_第2页
第2页 / 共26页
二级课题报告.docx_第3页
第3页 / 共26页
二级课题报告.docx_第4页
第4页 / 共26页
二级课题报告.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

二级课题报告.docx

《二级课题报告.docx》由会员分享,可在线阅读,更多相关《二级课题报告.docx(26页珍藏版)》请在冰豆网上搜索。

二级课题报告.docx

二级课题报告

软件学院

实践环节设计

 

课程名称:

课题名称:

专业:

班级:

学号:

学生姓名:

指导教师:

年月日

中原工学院软件学院

实践成果三设计任务书

姓名

JAVA专业软工卓越111班

题目

手机与PC的语音通信系统的开发

开发一个手机与PC的语音对讲系统,包括客户端与服务端:

1.客户端:

输入对方IP和端口号连接目的主机,并接受、发送信息

2.服务端:

等待客户端连接并接受、发送信息

开发工具:

eclipseMicrosoftVisualStudio2010(客户端由C#编写)

项目设计(10月10——11月01):

在老师的指导下自主学习和钻研问题,明确设计要求,找出现实方法。

按照需求分析、总体设计、详细设计几个步骤进行。

代码编写(11月02——12月21):

根据设计分析方案编写代码,然后调试该代码,实现课题要求的功能。

测试总结(12月24——12月27):

总结设计工作,写出课程设计说明书,包括需求分析、总体设计、详细设计、编码、测试的步骤和内容。

原主

始要

资参

料考

与文

[01]梁红敏.C#语言程序设计[M]:

机械工业出版社出版.2011.11

[02]CayS.Horstmann&CaryCornell.Android核心技术[M]:

机械工业出版社.2012.3

指导教师签字:

年月日

手机与PC的语音通信系统

摘要

一直以来,空间上的距离都是人们彼此相互交流的最大障碍。

缩短彼此之间空间上的距离,使得天涯若比邻,就成了人们迫切的愿望。

随着计算机网络技术的发展,人们不再满足仅仅依靠收发电子邮件来进行交流,因此语音聊天技术应运而生,它是网络成熟以来的在线通讯方式,为网络用户提供一个实时语音交流聊天的平台。

在企业市场,语音对讲对企业的发展也产生重要的影响,企业内部人员的即时通讯对公司业务的运行也发挥着良好的作用,它的实现可使得用户更有效的信息交流,手机与PC的语音对讲系统的设计与实现对于人们的交流起到很明显的作用。

本文详细的论述了手机与PC的语音对讲系统的系统设计和实现的全过程,在论述过程中,主要分五大部分。

第一部分主要包括项目分析、相关背景和构架和对开发工具进行了相应的介绍。

第二部分是对系统需求分析及各环节的需求分析。

第三部分是对手机与PC的语音对讲系统功能的分析和详细设计,该部分是本文的主体,在这一部分,介绍了本系统设计方案的实现过程,经过论证得到系统模块功能。

第五部分是系统的实现和测试。

本文通过对以上五部分的论述,使系统各功能基本完成。

关键词:

Android;语音网络传输;C/S

摘要1

第1章项目分析1

1.1问题描述1

1.2技术分析1

第2章设计与需求2

2.1设计分析2

2.2可行性分析2

2.3系统性能需求2

2.4系统运行需求3

第3章实现4

3.1客户端(Client)4

3.1.2代码9

3.2服务端(Server)10

3.2.1服务端界面11

第4章有待实现功能19

4.1预期功能19

4.2实现功能19

第5章结束语21

第1章项目分析

我们知道,21世纪的一些重要特征就是数字化、网络化和信息化,它是一个以网络为核心的信息时代。

要实现信息化就必须依靠完善的网络,网络可以非常迅速地传递信息。

因此网络时代已经成为信息社会的命脉和发展知识经济的重要基础。

对于用户来说,如何在电脑上接收语音信息成了我们迫切想要实现的功能

基于局域网的即时通信工具,实际上是互联网之间的通讯开发技术已经比较成熟。

即时通信的功能日益丰富,逐渐集成了电子邮件、博客、音乐、电视、游戏和搜索等多种功能。

而如今越来越多的人们选择语音聊天工具是有一定目的的,语音对讲的实现使得用户更加方便快捷的进行通讯,手机与PC的语音对讲系统属应用系统。

根据目的IP和端口号寻找目的主机。

本系统将实现手机与计算机之间的通信,并且操作简单。

网络通信系统分为两大模块,一是客户端,另一是服务端。

客户端可以根据IP和端口号寻找目的主机,并连接目的主机。

服务端可以等待客户端的连接,不需要对服务端做任何操作,只需连接后将信息直接发送给客户端。

为了用户的方便此系统不需要登录名和密码,直接可以运行。

1.1问题描述

近年来,随着全球信息化进程的不断发展,网络也在飞速发展。

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

在内部局域网的帮助下,企业得以简化信息流程,提高信息交换的速度,从而提高工作效率。

员工可通过局域网聊天软件,企业员工可以随时的进行即时消息传递,所以手机与PC之间的语音对讲系统更加可以得到有效的利用,本系统采用基于TCP协议的局域网通信设计与实现的方法。

它的实现无需对企业原有的局域网硬件进行任何改动,具有实现成本低廉的优点,使得用户更加有效的交流。

1.2技术分析

本项目采用C/S模式实现手机和PC之间的通信,手机通过Server的IP和端口号找到主机并建立连接进行通信。

发送端通过Serversocket和主机建立连接,服务端通过accept方法阻塞式接收发送端的信息。

并且接收端开启新的线程来接收数据。

第2章设计与需求

2.1设计分析

手机与PC语音对讲系统系统基于TCP协议传输,通过用户输入IP和端口号连接目的主机。

手机与PC语音对讲系统客户端分为一下五点:

1.界面分为输入框和几个功能按钮并且接收框不可写,输入框在连接成功前不可写。

2.可以通过点“录音”按钮录音,“暂停”按钮暂停“播放”按钮播放,“发送”按钮发送信息,“更新”按钮更新接收语音。

3.利用多线程来监听端口是否有信息发送。

4.当客户端断开连接时,服务端重新监听是否有客户端重新连接。

5.客户端默认端口号1234。

手机与手机与PC语音对讲系统服务端分为一下四点:

1.必须首先开启服务器,等服务器连接之后才能进行信息的接收,录制保存与发送。

2.界面分为一个列表,一个对话框,两个输入框可输入手机IP以及其端口号,按钮与客户端相比少了一个更新多了一个放弃。

3.播放有其专用的播放器。

4.服务端默认端口号为1234。

5.时间会在语音录取是开启,录音结束时间关闭。

2.2可行性分析

技术可行性:

本系统利用eclipse作为系统客户端开发环境,它提供完善的指令控制语句、类与对象的支持及丰富代码的模块化要求,而代码模块的提供非常有利于以后对新系统的扩展与修改。

运行可行性:

本系统为一个小型的局域网聊天系统,所耗费的资源非常小,现在一般的电脑无论是硬件还是软件都能满足条件。

因此,本系统在运行上是可行的。

综上所述,本系统的设计与开发在技术上和硬件设备上的条件都是满足的。

2.3系统性能需求

实用性:

为局域网聊天提供方便,有效进行作业管理。

操作简单:

笨系统应该适用于不同水平的使用者,包括事业单位和企业文化,同时系统不应太复杂和繁琐,因此要求系统的操作尽可能简单易行。

绿色软件:

本系统安装起来直接方便快捷。

代码可读性好:

文中的代码将尽可能简洁,易懂。

2.4系统运行需求

服务端运行环境:

Windows7、2000、XP、2003

客户端运行环境:

Android2.3以上

硬件环境:

CPU400MHz以上,内存64MB以上

第3章实现

本系统分为客户端和服务端两部分,客户端主要实现寻找目的主机,然后与主机进行连接,连接之后进行语音的录制,系统自己保存语音,用户输入IP和端口号连接服务器之后发送语音信息和接收由PC传过来的数据。

服务端主要是等待客户端的连接,并接受发送数据。

3.1客户端(Client)

客户端有一下几方面实现:

1.客户端通过GetIp方法从界面中获取用户输入的IP和端口号,将IP地址和端口号作为参数传给Socket()方法,让Socket创建一个流套接字试图连接目的主机。

如果能成功连接目的主机则显示“连接成功”,若长时间没有找到目的主机则显示“IOException”。

流程如图3.1所示

图3.1连接客户端流程图

2.用户点击“录音”按钮开始录需要发送的语音,点击“停止”按钮停止录音,点击“发送”按钮将语音发送给指定的对象。

具体实现:

当有数据套字节时使用getOutputStream()方法从Socket中读取套字节,赋给OutputStream。

使用ObjectOutputStream从OutputStream中获取数据流,将数据流打印到控制台。

流程如图3.2所示

图3.2发送语音流程图

3.1.1界面

1.客户端主界面如图3.3,IP框用于填写需要连接的主机的IP地址;端口用于填写服务端所监听的端口号,默认是1234;填写IP和端口号后点击连接程序会自动尝试连接目的主机;中间空白区是接收信息,和已发送信息的回显;当连接成功后发送区才是可编辑的

图3.3客户端界面

2.客户端连接成功界面如图3.4。

当输入正确的IP地址点击连接按钮后程序会在接收框显示“正在连接……”,当成功连接目的主机后接收框显示“已经连接”。

Server端会发送信息“连接服务器成功”提示Client可以向Server发送信息。

若输入IP或者端口号与PC的IP不符合则不能连接服务器,系统报错。

图3.4客户端连接成功界面

客户端录制语音完成如图3.5所示,在显示区会显示录制成功的语音的录制时间,选中显示区的语音后面的对钩,即可将显示区语音发送到Server并在接受框回显。

空白区域中的语音显示条是服务端端发送出去的语音,标明存储位置以及录音时间。

图3.5客户端语音录制成功界面

3.客户端接收信息成功界面如图3.6,当Server发送信息时,客户端可以自动接收此信息并显示到接受框,空白显示区所显示语音条就是由服务端发送的语音。

图3.6客户端接收语音成功界面

3.1.2代码

InputStreaminPut=client.getInputStream();

OutputStreamoutPut=client.getOutputStream();

readLen=newFileInputStream(file);

ByteArrayOutputStreamow=newByteArrayOutputStream();

//2.将文件内容写到Socket的输出流中

intcount=0;

intbuffersize=256;

intfileLen=0;

buf=newbyte[buffersize];

while((count=readLen.read(buf))>0){

fileLen=fileLen+count;

}

StringstrLen=String.valueOf(fileLen);

strLen=strLen+"\n";

Log.i(Tag,strLen);

byte[]buffLen=strLen.getBytes();

byte[]buffL=newbyte[50];

for(inti=0;i<50;i++){

if(i

buffL[i]=buffLen[i];

}

else{

buffL[i]=0;

}

}

outPut.write(buffL);

outPut.flush();

count=0;

reader=newFileInputStream(file);

while((count=reader.read(buf))>0){

ow.write(buf,0,count);

Log.i(Tag,"readingfile");

}

Log.i(Tag,"开始发送!

");

outPut.write(ow.toByteArray());

outPut.flush();}

catch(Exceptione){

System.out.println("socket执行异常:

"+e.toString());

}finally{

try{

//结束对象

buf=null;

reader.close();

3.2服务端(Server)

服务端有一下几方面实现:

1.使用ServerSocket()创建固定端口,并由SocketListen方法监听这个端口并等待客户端的连接。

当连接成功后客户端和服务端可以进行通讯,如果客户端断开

服务端会再次重新等待连接。

流程如图3.8所示

图3.8成功开启服务器

2.当有数据套字节时使用getOutputStream()方法从Socket中读取套字节,赋给OutputStream。

使用ObjectOutputStream从OutputStream中获取数据流,将数据流打印到控制台。

.writeObject()方法将信息写如数据流,当触发发送监听时,将信息发送到已连接的主机。

3.2.1服务端界面

PC端初始界面如图3.9所示,当没有手机端连接时接收框显示为空白,发送区是不可用的。

需要启动服务器。

如果不启动服务器,程序完全不能运行,以下为服务端初始状态。

图3.11服务端初始界面

1.服务端连接成功界面如图3.12,当Client连接成功后显示已经连接的手机IP,界面下端的IP显示服务端IP与默认端口号,并且服务端会显示服务器已启动,而此时服务端便可以与手机端开始通讯了。

图3.12客户端连接成功界面

3.手机成功连接服务端,服务端在线人员列表显示在线客户IP。

在对话框的下方输入手机端的IP跟默认端口号1234,即可与手机端通信。

图3.12手机端与服务端连接成功界面

stringstrip=tbIP.Text;

stringstrport=tbPort.Text;

IPAddressIP;

intPort;

try

{if(strip!

=""&&strport!

="")

{IP=IPAddress.Parse(strip);

Port=Convert.ToInt32(strport);

this.lIP.Text=IP.ToString();

this.lport.Text=strport;}

else{IP=GetIP();

Port=1234;

this.lIP.Text=IP.ToString();

this.lport.Text=Port.ToString();}

if(IP!

=null)

serverFullAddr=newIPEndPoint(IP,Port);

else{

MessageBox.Show("没有得到正确IP地址!

");

return;}

server=newSocket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

server.Bind(serverFullAddr);

lbserverState.Text="服务器已经启动!

";

如图3.13所示,服务端录音结束,在录音按钮的上方一串红色字体显示语音录制时间以及录音长度。

选中所录制声音即可与在线手机客户端即可向客户端发送信息。

图3.13服务端录音成功界面

2.服务端接收语音成功如图3.13,当Client发送信息时,Server可以自动接收此语音显示到接受框并自动保存到SD卡,对话框中的第三条语音条目是手机端所发送的语音。

显示有手机端IP以及录音时间。

图3.13服务端接收语音成功界面

if(InvokeRequired)

Invoke(newShowGetvoice(UpdateLabel),flag);

else

{

if(flag)

label3.Text="接收保存成功!

";

}

}

privatevoidSendFile(SocketacceptSock,stringvpath)

{

SocketsendSocket=(Socket)acceptSock;

byte[]byteArray=newbyte[100];

//sendSocket.Receive(byteArray);//接收数据

//将字节数组转成字符串

stringstrRec=System.Text.Encoding.Default.GetString(byteArray);

 

3.服务端发送信息如图3.15,更新所有的语音,选择你想要发送的语音以及想要发送的手机端,点击“发送”按钮,若没能选择所发语音或对象,如图3.14所示。

选择完成可以将对话框的语音发送到Client并在对话框回显,手机端接收语音是由Server端发送出去的语音。

图3.14选择发送对象界面

图3.15服务端发送信息界面

try

{

intindex=personLB.SelectedIndex;

Socketsocket=clientSocketList[index];

if(wave.SavedFile=="")

MessageBox.Show("请录音后再发送!

");

else

SendFile(socket,wave.SavedFile);

}

catch

{

MessageBox.Show("请选择发送对象!

");

return;

}

如图1.15所示,服务端输入错误的手机端IP,服务端提示请求地址无效,此时需要核对或填写手机端IP,用于与手机端连接,便于语音信息的发送。

图3.15手机端IP填写错误界面

第4章有待实现功能

4.1预期功能

如图4.1所示,一开始从刘老师那里接到这个项目,预想的功能还是很理想的,能够实现手机之间的语音对讲,起到取代对讲机的功能,让项目更加实用化。

并且能够对在线人员分组。

 

图4.1预期功能原理图

4.2实现功能

在编写代码的过程中实现了不可预想的效果,如图4.2所示,等到想要修改的时候已经没有足够的时间,所以我们选择后期实现。

相信经过努力一定达到预期的功能。

图4.2实际原理图

第5章结束语

这次课程设计,经过一学期的开发最终很好的完成了。

这个软件主要是用于手机与PC端的语音对讲,目前实现了手机跟电脑互发语音消息。

但是还不能发送文件,也不能同时多人在线聊天。

我的下一步目标就是要实现多人聊天,并且可以进行分组,那样的话这个系统将有更高的可用价值。

 通过这次课程设计,增加了我们对软件技术的了解,同时也增加了对计算机网络的认识,在具体的操作中对安卓语言的理论知识得到巩固加强,达到实训的目的,也发现自己的不足之处,比如说服务端的开发,大概有两个星期我都对服务端束手无策,因为在学习JSP的时候没能好好领悟老师所讲内容,所以一直处于迷茫状态,还好那天去创业中心请教班里学的比较好的同学,当时正好碰到.NET班的同学,他听我说完选择帮助我完成这个系统,因为他学习的C#所以我们的服务端选择用C#来完成,期间我告诉他服务端所要实现的功能以及具体实现方法,经过两周半的探讨和代码的编写我们终于在16周完成了代码的编写,程序也可以能够成功的运行。

真的很感谢.NET陈永坤同学的协作。

代码实现的过程我也体会到了安卓语言的方便和快捷。

这次的课题设计我学到很多东西,首先需要总体观念,当开始做系统的时候,感觉很难,有很多东西不清楚,不知道取舍。

缺少应有的交流是我在这次实践课题得到最深刻的教训。

不过通过此次课题的实践,我感受到了程序是贴近生活的,我终于可以用所学的语言编写系统,来解决生活中常见的问题,方便我们的管理,在刚开始做课题的时候,写出来的代码很乱没有头绪,经过同学的指点,重新修改了代码的布局使代码比较整洁,可读性比较强。

回顾起此次课程设计,我仍感慨颇多,的确,从拿到题目到完成整个编程,从理论到实践,在这些日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说服务端的开发。

我通过这次实践学到了许多知识。

学到了如何设计一个系统。

使自己有了对系统开发的简单认识并且我还总结出了一点点的经验:

(1)要对系统的功能和要求做出详细的分析,并合理分解任务。

(2)把分解出来的子任务,做给一个相对独立的模块。

(3)在设计一个模块之前,要简单构想一下总界面的显示情况。

(4)针对构想出来的界面进行程序的编写。

(5)遇到不会的问题一定要先自己摸索一下,真的不能得到解决要请教周围的同学,必定会事半功倍。

参考文献

[01]梁红敏.C#语言程序设计[M]:

机械工业出版社出版.2011.11

[02]CayS.Horstmann&CaryCornell.Android核心技术[M]:

机械工业出版社.2012.3

指导教师评语

成绩:

指导教师签名:

年月日

(注:

可编辑下载,若有不当之处,请指正,谢谢!

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

当前位置:首页 > 医药卫生 > 临床医学

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

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