
编程部分大作业任务书.docx
6页编程部分大作业任务书 《编程部分》大作业任务书 指导教师:仇国巍 班级:电气19 第组组长:张正龙组员人数1:接受任务日期:2022.11 完成任务日期(预计):2022.12.20 目录 一、需求分析 1.1开发背景 (1) 1.2项目目标 (1) 1.3运行环境 (1) 1.4项目任务书 (1) …….. 二、技术路线 2.1 总体方案 (1) 2.1.1 .... (2) 2.1.2 .... (2) 2.2 详细设计 (2) 2.2.1 .... (2) 2.2.2 .... (2) 三、工程进度……………………………………2… 四、测试报告 (2) 五、个人小结 (2) 需求分析: 1.开发背景 针对目前网络上广为流传的聊天软件,我设计了一套自己的聊天程序 计算机网络的快速发展,加快了人们之间的接触网络不仅方便了广大百姓,它自身在百姓的使用下也在快速的发展网络已渗透到千家万户,离开网络就像离开社会一样可怕。
可以说,没有网络,社会的生产力将大大的退步现在网络上最为流行的聊天软件已成为广大青少年的最爱,这个软件也是建立在套接字基础上的我的聊天软件虽然没有的功能齐全,但是比较小巧,实用 2.项目目标 开发一套简单实用的聊天程序,为同学之间的联系提供方便本程序不用申请注册,随时可以加入聊天室聊天,而且可以自定设定服务器,可以随意改变端口号,一台主机上可建立多个服务器端,也可运行多个客户机 3.运行环境 在一个宿舍多台电脑上同时运行该程序,能顺利的聊天 4.项目任务书 要求该程序能够多人聊天 技术路线: 1.总体方案 该软件在xp系统,vc++6.0环境下开发,编译时采用静态连接方式将mfc类库编译进去,以便能够在没有mfc的系统中也能顺利运行该项目的大概算法如下:聊天程序建立在服务器/客户机方式下服务器端创建两个有csocket类派生的类,clistensock和cclientsock类,分别用于侦听和传送信息,客户端只需创建cclientsock类(也是有csocket类派生),用于和主机通信另外,csocket类和csocketfile类,carchive类结合,使得发送消息就像在本地机上序列化一样简单,只需调用flush函数就和发送和接受消息。
2.详细设计 在建立新文档时,若选择服务器模式,将创建一个clistensock类对象专门用于侦听当有客户机连接时并且连上时,返回一个cclientsock类对象的指针,并将其加入到cptrlist对象中,以便以后能遍历整个套接字对象发送消息当客户端发送消息时,服务器端创建好csocketfile类对象,将其指针mpfile传递给carchive类对象m_pcarchivein和m_pcarchiveout,这两个类对象分别用于接收和发送由于是接受消息,cclientsock类对象受到后调用cserverdoc 的proreading函数,该函数在调用cmsg(由cobject类派生)的serialize函数序列化具体方式是serialize(*m_pcarchive),由此可知,消息的接受变得很简单同原始套接字相比容易了很多当受到消息后, 将消息的指针用cstringlist类对象保存,然后调用视图类的成员函数 GetEditCtrl().ReplaceSel(strTemp)将消息显示出来,之后,服务器端将遍历连接上的csocket类指针,将消息发送出去。
其过程如下:首先将受到的消息遍历,在遍历所有的客户端cclientsock类对象指针,这样,就能把所有的消息发往所有的客户机客户端就比较的简单,只需连接上后往服务器端发送消息和接收来自服务器的消息接受和发送消息的过程和服务器端相似,不再多述 工程进度 自接到任务起,先设计总体方案,把大概算法写出来,并画出流程图该过程用了7天时间完成第8天开始编写,其中不清楚地地方查阅了《vc++6网络编程》,由于具体的东西很多,还查阅了其他的vc书籍这个过程用了20天左右之后,程序的大部分都已完成,结下来就是测试与修改了 测试分析 由于是面向对象编程,比结构化程序有许多优点,但其中遇到不少困难一些细节问题学要考虑,比如程序结束后应该如何处理,需要安全的退出内存,释放其中的资源测试阶段共分两个部分: 阶段性测试.该过程测试时间如下:用了5天的时间做小测试,包括能否正常运行,是否有错等并在各种系统下做测试,都能运行决结了程序中的一些小错误,比如返回值有错,true和false搞反等 总体测试阶段弥补了程序中的不足原来计划服务器和客户机分开编制,但考虑到其中的共性,将两个合为一个程序,大大的减小了工作量,我想这应该是现代软件工程的特点吧。
但我个人认为给软件还有许多值得改进的地方,比如可以把它改造成一个语音聊天软件,然同学们使用起来更加方便舒适但是,由于时间仓促,来不及修改而且,由于现代网络技术还不是很发达,若是语音聊天,则应该使用UDP方式的连接,因为那样才不会产生大的延迟,应为UDP是基于无连接方式的,不保证传送信息的正确性,语音聊天注重的是实时性,只要信息大概正确就行而且最好在局域网内使用,应为其传送速度较快,发送的信息不容易丢失 个人小结 软件基础大作业使我学会了现代软件工程的一些概念这次编的程序虽然规模很小,而且也找不到合适的搭档,也主要是我一个人独立完成的,但是仍然让我学到了不少的东西由于以前没仔细学过网络方面的知识,编起来也特别棘手,但功夫不负有心人,经过一过月的研究与学习,终于学会了一些网络方面的简单的编程让我倍受鼓舞,体会到了学习的乐趣,特别是在想清楚每一个问题之后,心里很高兴我想这次大作业对我是个很好的挑战与学习的机会以后我将更加努力的学习软件工程方面的知识。












