当前位置:文档之家› 飞鸽传书实验报告

飞鸽传书实验报告

武汉工程大学计算机科学与工程学院认识实习报告专业计算机科学与技术(计算机工程方向)班级学号学生姓名指导教师实习时间实习成绩武汉工程大学计算机科学与工程学院制说明:1、实习指导教师由学院校内教师担任,负责组织实习、学生管理、参加实习答辩、实习成绩评定、给出实习评语等工作。

2、实习报告由武汉工程大学计算机科学与工程学院提供基本格式(适用于学院各专业),各专业教研室和指导教师可根据本专业特点及实习内容做适当的调整,学生须按指导教师下达的实习报告格式认真进行填写。

3、实习成绩由指导教师根据学生的实习情况给出各项分值及总评成绩。

4、指导教师评语一栏由实习指导教师(校内教师)就学生在整个实习期间的表现给出客观、全面的评价,包括实习期间的表现、实习报告的质量、实习答辩的情况等。

5、学生必须参加实习答辩,凡不参加实习答辩者,实习成绩一律按不及格处理。

实习答辩小组应由2人及以上教师组成,其中校内指导教师必须参加,否则视作无效答辩。

6、实习报告正文字数应不少于5000字,实习日记字数不少于200字/天。

7、实习报告正文中实习目的与任务、实习地点、实习内容和要求等项,可由指导教师统一给出(自主实习除外)。

学生自主实习的,可根据实习的情况自行填写以上内容。

8、自主实习的学生还应提供由实习单位出具的实习鉴定表(复印件),与实习报告一起装订,作为参加实习答辩和评定成绩的依据。

学生姓名:学号:班级:指导教师评语一、实习目的与任务计算机科学与技术专业认识实习是学生在完成基础课学习转入到专业课学习阶段的一个极其重要的实践教学环节。

其目的是通过参观和听取专业报告等多种方式,使学生了解本专业相关领域的发展现状,相关产品的研发过程和管理手段。

具体任务包括:1、了解计算机、网络通信等相关领域的发展现状和最新科研成果,以及在生产科研中的应用;2、巩固学生的理论知识,培养学生的实践能力、创新能力,拓宽学生视野,树立努力学习专业知识的信心,并为学习后续课程打下一定的实践基础;3、增强劳动观念,树立正确的劳动观和价值观。

二、实习地点东软软件股份有限公司大连分公司三、实习内容和要求1、参观武汉烽火集团有限公司展厅,听取基地指导教师的介绍,了解我国光信息及通信产业的发展现状、产品的研发过程。

2、在武汉锐诺斯科技有限公司,了解国际宽幅打印机的开发流程及发展动态。

3、在鑫人达电子有限公司,参观自动化焊接生产线,波峰焊接设备和全自动源器件切片;全自动回流焊接设备。

4、听取专家报告,了解计算机教育相关知识,了解计算机信息技术最新研究动态,了解国家重点实验室相关技术。

5、实习期间,每天需记实习日记(最好手写),字数不少于200字/天,内容包括:时间、地点、主要实习内容等。

实习结束后,撰写认识实习报告(模版打印)。

四、实习总结及分析一、代码总体分析飞鸽传书的主要功能:1.即时通信功能1.1端对端短信发送1.2端对端发文件1.3信息群发1.4文件群发2.用户管理系统2.1用户注册2.2.用户登录二、代码详细分析设计分析:此程序主要分为三个界面:登录界面(包括注册界面),主界面,回复界面登录界面详细设计:登录界面主要完成了网络监听,IP地址和端口号的广播,验证用户登录信息和用户注册。

1.在登录窗体加载时调用Listen();BroadCast();这2个函数,这2个函数里面都是线程,因为监听和广播一直在进行,所以用线程来实现这2个死循环。

Listten()函数中以Receive()函数创建线程,receive函数首先监听,然后用一个死循环来接受被的用户的连接,每接收到一个主机的请求,就调用ChatMessage的一个对象来处理对方发送的消息,由于处理消息的对象函数只能处理一次发送的消息,因此紧接着又定义一个线程,来无数次的处理对方发送的消息,这样就实现了一次连接,无数次通话的功能。

每次收到消息时,首先定义一个SaveMsg类的对象把这个消息保存到一个txt文件中,然后又定义一个AnswerFrm类的对象把这个消息通过回复窗体显示出来。

这里有一个漏洞就是用户可能还没有登上去就可以接收对方发送的消息,这个地方应该改进。

2.BroadCast()函数中也是创建函数Broad()的线程,在Broad函数中定义一个BroadIP 类的对象,然后调用这个对象的Start()函数,Start()函数利用UdpClient类的对象的Send 方法来发送本机的IP地址,至此登录窗体的Load事件全部完成。

3.在登录窗体的登录按钮代码中,首先判断输入的用户名和密码是否为空,若为空,则弹出消息提示窗口,返回;若都不为空,则判断数据库中是否存在这个用户,若不存在,则弹出消息提示窗口,返回;若存在,则弹出主界面,登录成功。

4.在窗体的注册按钮中,定义一个注册类,调用它的show()方法弹出注册窗体,把注册窗体中用户输入的用户名和密码插入到数据库中,如插入成功则注册成功,否则注册失败。

这里要用到的知识,利用提供的SqlConnection和SqlComamand等类来连接数据库和向数据库中插入数据,难点是连接数据库,连接数据库的字符串有点不好写,容易出错,这就要求程序员对方面的知识非常扎实。

还有个难点就是数据的插入,即向数据库中插入数据,要用到Insert语句,要求对数据库中基本语句比较熟悉,所以虽然是一个很小的注册界面,但是难点还是不少的,对程序员的技术要求也是很高的,很考验程序员平时的水平。

主界面1.在主界面的构造函数中添加下面这句话:MainFrm.CheckForIllegalCrossThreadCalls = false;这句话很重要,有了这句话,这个窗体所包含的控件就能被别函数所调用,我在家里重新把这个飞鸽软件写了一遍,由于没有这句话,因此一直有个看不懂的错误,纠结了我好长时间,在跟张一鸣老师给我们的代码一一比对后终于发现少了这句话,加上这句话后错误就消失了,这个程序也就能正常运行了。

2.在Load()函数中先为ListView添加2列“用户名”“密码”,然后定义一个更新类(Update)的对象,接着为这个对象的Start()函数创建线程,实现一直更新,这样就能随时监测到新上线的用户而把他显示到ListView中。

3.在发送按钮中,给所选择的每一个用户定义一个套接字,用这个套接字将textBox 中的信息发送出去,这样就完成了端对端信息发送和信息群发的功能了。

消息回复1.消息回复窗体也很简单,在它的Load事件中把时间和用户名及ip地址显示到一个Label上(用户名和ip在窗体类的构造函数中传递过来)2.在回复按钮中,定义一个socket连接到这个ip,通过这个套接字把textBox中的信息发送出去,这样就是想了消息回复功能。

三、代码总结这个程序主要包括4个窗体:登录窗体,注册窗体,主窗体和回复窗体,主要新添加了4个类:update(更新类),BroadIP(广播IP类),ChatMessage(消息处理类),SaveMsg(消息保存类)。

窗体的作用就不用详细介绍了,很简单,在这里介绍一下各个类的作用以及在哪里调用和何时调用。

BroadIP类在登录创体的Load事件中调用,由于对这个对象的Start函数创建线程,这样程序在整个运行期间一直在广播ip。

ChatMessage类也是在登录窗体的Load事件中调用的,它不断地接收别人发送来的消息并把它保存到文件中和调用AnswerFrm(回复类)的Start函数来显示接收到的消息。

Update类在主界面的Load事件中调用,只要用户登录成功,显示出主界面,它就在不断地搜索网路中是否有别的主机登录成功,若果有就把它显示到ListView中。

SaveMsg类在ChatMessage中被调用,它的主要功能是把接收到的信息保存到txt 文件中。

五、实习体会这次大连实习虽然只有不到10天的时间,但是我们的确收获到了很多知识。

这次实习主要是写个程序,即企业即时通信系统。

用到的知识点有C#Windows编程,,网络编程,数据库。

幸好这学期自学了这4个方面的知识,企业老师讲起来都能听懂,但是我对自己的表现很不满意,平时花这么多的时间来自学这些东西,但是自己还是不能在老师的提示下写出来,而是要老师一句一句的教,真是对不起我这半年的努力的时间,真不知道平时学到哪里去了,可见我的自学能力是多么地差呀,邹老师还说我学的扎实,其实这只是夸我的话,实际上我学的多么的不扎实他还不知道,哎,真是对不起老师。

古人云:谦虚使人进步,骄傲使人落后。

马云也说过:别人把你当英雄的时候你千万别把自己当英雄,如果你真的把自己当英雄,那灾难就来了。

更何况我不是英雄呢?所以我应该谦虚,谦虚,再谦虚。

千万不能把别人的夸奖放在心上,否则就容易骄傲,骄傲就非常容易落后。

好了,自责完了还是要说说这次所学到的东西。

这次真的学到了些东西,但是不多,我不后悔,因为哪怕是只学到一点点的东西,也是值得的。

这次虽然没有学到新的知识,但是还是有很大的收获。

这次张一鸣老师主要讲了C#Windows编程,,网络编程,数据库等方面的知识,虽然这些知识我平时都自学过了,但是学的很不扎实,刚好解这次机会好好复习了下这些重要知识,我觉得有句话说的非常好,就是“温故而知新”。

这句话说的真是好,在这次实习过程中我是很有体会。

通过张老师的讲解,我对C#Windows编程,,网络编程,数据库的理解有了更深层次的理解,特别是对编程有了更加全面的了解和认识。

以前总觉得写代码是编程中最重要的环节,这次实习经历告诉我错了,其实设计才是最终要的,怎么样设计整个程序,比如需求分析,数据库设计,详细设计等,只有先把这些框架设计好了才能写程序,在写程序代码的时候才能更加得心应手,思路才更加清晰,遇到错误时才能更加快速的、准确的找到错误在哪里。

唐骏说过“一个程序的80%是由20%的时间来完成的”,对于一个程序来说,大部分都是代码,但是这些代码只占到程序开发所需时间的20%左右,那程序的20%是什么呢?程序开发的80%时间又干什么去了呢?很多人已经猜到了,这80%的时间做那20%的程序去了,可见那个20%有多么重要!它就是程序的设计。

它是看不见摸不着的,但是它体现在程序的方方面面,一个程序的好坏,主要看它的设计好不好,而不是看它的界面漂不漂亮。

但是程序的设计可不那么简单,它不仅要求开发人员具有扎实的专业知识基础,缜密的思维逻辑和善于思考的大脑,它还要求开发人员拥有持久的耐心,坚强的毅力和强大的体力。

因为程序设计是一个脑力活,没有耐心,毅力以及体质不好的人是很难设计出一个很好的程序的,因为设计时需要保持一颗清醒的头脑。

通过这次认识实习,我知道了程序设计的重要性,在今后的学习中我会加大这方面的练习,多设计一些程序,让自己在知识方面掌握地更加全面,更加扎实,当然写代码方面肯定是不能停止的,毕竟这是最基础的部分,还是要熟练掌握的,只有这样不断的充实自己,强大自己,才能在2年后的不像他们所说的“毕业意味着失业”,到时候能找个好工作,才能对得起父母和老师,对得起自己这四年的大学生活。

相关主题