当前位置:文档之家› 基于MFC的聊天程序设计

基于MFC的聊天程序设计

基于MFC的聊天程序设计
基于MFC的聊天程序设计

一. 设计原理

计算机网络技术发展至今已经大大超越了人们当初的预想,无论是人们日常的工作还是学习,我们都越来越多的依靠到互联网。各种实时性的聊天娱乐软件也同时诞生,而且为我们的即时通讯带来了众多的方便,比如说大家所熟知的腾讯QQ、微软的MSN、中国移动的Fetion等,都是做的比较成功的实时聊天工具。随着网络的日益普及,各种聊天工具也层出不穷,但当我们学习了《网络编程》这门课程之后,我们便会觉得,其实要实现简单的网络通讯其实并不难。接下来的课程设计就是针对一个简单的网络聊天程序,利用MFC为开发工具,实现基本的通讯功能。

此程序主要分为两个模块:服务线程和聊天线程。服务线程用于提供一个网络端口,等待客户线程发出请求,登录到作为服务端的程序,然后进行网络通讯和消息的收发;客户端可通过服务器端的IP 地址发送连接请求,然后建立连接,进行通讯。整个程序的主体使用了CSocket类的方法,实现了网络通讯聊天。

二.功能描述(需求分析)

1、一对一会话。此程序既可以作为服务器,也可以作为客户端。当发起聊天请求时是客户端,而当接受连接请求时时服务器。通讯基于可靠的TCP连接。

2、修改联系人通讯地址。可以根据联系人IP地址和端口的不同建立不同的连接。可以实时修改联系人的地址。

3、多线程技术。进程启动时会开启一个专门用于监听连接请求的服务进程,线程函数为UINT threadListen(LPVOID lpParam),用来被动接受聊天请求。无论是主动发起聊天请求还是被动接受连接请求,都将启动一个名为CIMTalking的线程,专门处理聊天业务。

4、整个程序的主体使用了基于CSocket类的网络编程方法,综合运用了CSocket、CSocketFile、CArchive等类的方法,实现了网络通讯聊天。

IM的功能可划分为以下几点:

1)界面显示:将在线好友显示在好友列表中,并实现好友分组,便于选择联系人。

2)聊天功能:与好友聊天。

3)聊天纪录:能保存聊天纪录,并能察看聊天纪录。(未实现)

4)信息提示:当连接失败(一般为对方不在线)时,提醒用户连接失败及原因。5)修改联系地址:由于本聊天程序不涉及登录服务器,故开启进程即为在线,否则离线。故需要动态修改联系人IP地址及端口号。

三、详细设计

程序中主要变量及类的功能说明如下:

CIMTalkingDlg --- 聊天过程处理函数类

CIMTalking ---- 用于处理聊天过程的运行时类 peerAddress ---- 联系人地址,包括套接字地址和联系人姓名,这是一个结构体

CIMApp ----- 程序主线程

CIMDlg ----- 程序UI 线程,用于处理消息,界面窗口初始化等工作 CChatSock ---- 专门用于聊天的套接字类,继承自CSocket CAddrDlg ----- 显示联系人地址、修改联系人地址 CAboutDlg----- 显示程序版本信息

联系人地址结构体类型:

struct peerAddress {

struct sockaddr_in peerAddr; //对方地址 char peerName[20]; //对方姓名

};

程序流程图

UI 设计

聊天处理 聊天程序

监听连接请求

发送消息 接收消息

保存聊天记录

显示聊天记录

程序主界面

聊天对话框界面

修改联系人地址对话框界面

五、设计总结

4.1 程序的应改进之处:

1、无法知道联系人是否在线,除非连接;而且若把联系人的套接字地址,即IP 地址和端口搞错,通讯失败。即使对方在线,也有可能出错;这是本程序最大的

缺憾。

2、被连接时自动启动窗口,表示对方已经发起聊天请求,可以改为发送第一条消息后自动弹出聊天窗口。

3、聊天记录文件应该加密,虽然在本程序中没有实现。

4、可以在程序启动后立即探测联系人的状态,并在用户界面上显示其状态,即是否在线。

1、在做这次网络创新实验之前基本上还没接触过MFC套接字网络编程,这次实验是在边学习边实践的基础上完成的。由于临近考试,因此做的时间不多,做的结果不太好,与自己原来的设想还有点差距。

2、通过“计算机网络基础”自己对网络的基础知识也打下了很好的基础。这次网络实验可以说是在理解网络的基础上对Windows Socket 编程的一次学习过程,虽然做的不好,但也学到了很多知识,对自己以后进行网络开发有很大的帮助。

3、在做本次实验时,我尽可能的将上一学期学的软件工程思想运用到这次开发实验中来。在进行详细设计之前,先进行需求功能分析,在功能分析的基础上,划分程序的框架,创建类来分担不同的功能,并根据类的功能加入函数和变量,这对详细设计有一个总纲的作用。

4、在开始这个设计之前,对MFC编程(大一开设的半学期课程)只是初步了解,没有掌握MFC编程的原理。通过本次设计,对MFC的机制乃至Windows 程序的运行机制加深了了解,同时基本掌握了MFC编程方法,这是本次设计最大的收获之一!

5、一些东西貌似很简单,但在实现时往往遇到意想不到的困难。比如本次设计中,由于缺乏编程经验,加入如何开启一个新的线程,与控制台程序就有很大不同,虽然思想相同;再比如一些控件的使用方法,比如右击一个树形控件子项目,如何获取其text,就是一个问题,费了很大力气才发现少了如下语句:ScreenToClient(&myPoint);//该函数把屏幕上指定点的屏幕坐标转换成用户坐标然后再执行

m_hTreeItem = m_friends.HitTest(myPoint, &uFlags);//获取选取的项目的控件句柄

6、第一次在本次设计中用到了C++关键字extern ;第一次在MFC程序中用到了全局变量;第一次在程序中使用MFC多线程函数AfxBeginThread();第一次试用了CTreeCtrl等控件;第一次实现了CSocket、CSocketFile、CArchive类的联合使用以实现消息的发送和接收;对MFC套接字实现消息收发的原理有了较深的了解。。。总结:动手是提高的最佳手段!虽然过程中会遇到很多令人沮丧的问题,但解决这些问题之后是一种强烈的成就感!

六、使用方法

要进行通信,需要编译两个不同程序,但只要交换void

CIMDlg::OnDblclkFriend(NMHDR* pNMHDR, LRESULT* pResult)和

UINT threadListen(LPVOID lpParam)函数中的端口号即可,编译生成可执行文件后即可通过双击好友名单收发消息。

程序设计课程设计实验报告

《程序设计》课程设计姓名: 学号: 班级:软件工程14班 指导教师: 成绩:

1.消除类游戏 【问题描述】 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除。当有多处可以被消除时,这些地方的棋子将同时被消除。 【基本要求】 现在给你一个n行m列的棋盘(1≤n,m≤30),棋盘中的每一个方格上有一个棋子,请给出经过一次消除后的棋盘。 请注意:一个棋子可能在某一行和某一列同时被消除。 输入数据格式: 输入的第一行包含两个整数n,m,用空格分隔,分别表示棋盘的行数和列数。接下来n行,每行m 个整数,用空格分隔,分别表示每一个方格中的棋子的颜色。颜色使用1至9编号。 输出数据格式: 输出n行,每行m个整数,相邻的整数之间使用一个空格分隔,表示经过一次消除后的棋盘。如果一个方格中的棋子被消除,则对应的方格输出0,否则输出棋子的颜色编号。 【测试数据】 为方便调试程序,可将输入数据先写入一个文本文件,然后从文件读取数据处理,这样可避免每次运行程序时都要从键盘输入数据。 测试数据一 输出说明: 棋盘中第4列的1和第4行的2可以被消除,其他的方格中的棋子均保留。 测试数据二 输出说明: 棋盘中所有的1以及最后一行的3可以被同时消除,其他的方格中的棋子均保留。 【功能实现】 #include #include<> usingnamespacestd;

{ intm,n,i,j; inttemp; cin>>n>>m; temp=m; m=n; n=temp; int*map=newint[m*n]; int*mark=newint[m*n]; int*tmap=map; int*tmark=mark; intdif=0; ount=0; } p rintf("请输入要输入数的个数\n"); s canf("%d",&n);/*输入要输入数的个数*/ f or(i=0;idata1[j+1].number)

基于MFC的聊天程序设计

聊天程序设计报告 ----网络编程设计报告 目录 【1】设计原理————————————————————————1 【2】功能描述————————————————————————1 【3】详细设计————————————————————————2 【4】工作进度————————————————————————7 【5】设计总结————————————————————————8 【6】使用方法————————————————————————9 【7】附录——————————————————————————9 一. 设计原理 计算机网络技术发展至今已经大大超越了人们当初的预想,无论是人们日常的工作还是学习,我们都越来越多的依靠到互联网。各种实时性的聊天娱乐软件也同时诞生,而且为我们的即时通讯带来了众多的方便,比如说大家所熟知的腾讯QQ、微软的MSN、中国移动的Fetion等,都是做的比较成功的实时聊天工具。随着网络的日益普及,各种聊天工具也层出不穷,但当我们学习了《网络编程》这门课程之后,我们便会觉得,其实要实现简单的网络通讯其实并不难。接下来的课程设计就是针对一个简单的网络聊天程序,利用MFC为开发工具,实现基本的通讯功能。 此程序主要分为两个模块:服务线程和聊天线程。服务线程用于提供一个网络端口,等待客户线程发出请求,登录到作为服务端的程序,然后进行网络通讯和消息的收发;客户端可通过服务器端的IP地址发送连接请求,然后建立连接,进行通讯。整个程序的主体使用了CSocket类的方法,实现了网络通讯聊天。 二.功能描述(需求分析) 1、一对一会话。此程序既可以作为服务器,也可以作为客户端。当发起聊天请求时是客户端,而当接受连接请求时时服务器。通讯基于可靠的TCP连接。

程序设计基础实验报告

《程序设计基础》 实验报告 专业班级: 姓名: 学号:

实验一 面向过程的简单程序设计 1.实验目的要求 (1) 使用C++语言编写简单的计算机程序,掌握C++程序从编辑、编译到运行的全过程, 初步了解C++程序的特点。 (2) 掌握C++语言的数据类型(包括对各种数据类型变量的定义、初始化、赋值等)、运 算符和表达式的使用。 (3) 掌握赋值语句的使用。 (4) 掌握数据的输入输出方法。 2.实验内容 (1)设计简单程序,分别计算下列表达式,式中变量由键盘输入,输出表达式的值。 <1> d c b a x -++ <2> 11 11+++x x <3> sinX+cosX+tan -1 X <4> e x+y +e x-y <5> log 10(1+21x +) <6> 22b a -+??b a - (其中??a 表示取不大于a 的最大整数)。 <1> #include using namespace std; int main() { float x,a,b,c,d,e; cin>>x>>a>>b>>c>>d; e=x+(a+b)/(c-d); cout< #include #include using namespace std; int main() { double x,y; cin>>x; y=sqrt(1+1/(x+1/(x+1)));

cout< #include #include using namespace std; int main() { double x,y; cin>>x; y=sin(x)+cos(x)+1/tan(x); cout< #include #include using namespace std; int main() { double x,y,z; cin>>x>>y; z=exp(x+y)+exp(x-y); cout< #include #include using namespace std; int main() { double x,y; cin>>x; y=log(1+sqrt(1+x*x)); cout< #include #include using namespace std; int main()

贪吃蛇游戏程序设计实验报告

Windows编程大作业贪吃蛇设计与实现 学校:武汉轻工大学 院系: 班级: 姓名: 学号: 2015年12月16日

目录 一、题目介绍 二、设计目的 三、详细设计 3.1贪吃蛇本体设计 3.2贪吃蛇食物设计 3.3游戏界面设计 3.3.1游戏初始化 3.3.2游戏开始 3.3.3游戏暂停 3.3.4游戏退出 3.3.5游戏总界面 3.3.6游戏区域与背景 3.3.7关于SNAKE 3.4玩法规则设计 3.5核心设计 四、功能测试 五、总结 六、参考文献

一、题目介绍: 编写一个基于MFC的小游戏。 基本要求: 1、实现一个小游戏 2、实现基本游戏控制功能 3、具有游戏数据保存功能 4、界面布局合理、美观; 二、设计目的: 通过使用vc++6.0实现一个小游戏的课程设计,进一步掌握MFC的高级使用方法和锻炼自己动手写程序的能力。了解游戏设计的整个过程,通过熟练使用MFC来设计游戏。程序主要包括:游戏界面设计,游戏菜单栏设计,游戏初始化,游戏控制等。培养和锻炼开发游戏的能力。 三、详细设计 3.1贪吃蛇的本体设计 贪吃蛇的头部拥有一个坐标(x,y),蛇体有一个长度len,蛇有一个运动方向direct,故定义一个结构体如下: struct Snake { int x,y; int len; int direct; }Snake[50]; 3.2贪吃蛇食物设计 贪吃蛇的食物有一个坐标(x,y),此食物有一个标志isfood,当isfood为0时,表示食物还没被吃,为1时,表示被吃。 struct Food { int x; int y; int isfood; }Food; 3.3游戏界面设计 3.3.1游戏初始化 游戏初始蛇体长度为3,颜色为灰色,食物标志为1,因为此时没有显示出食物,需要随机生成后,才置为0;

一对多的聊天程序设计

实习题目:一对多的聊天程序设计 设计要求:实现一个一对多的聊天程序:包含服务器端和客户端;要求具有图 形界面;支持多人聊天;可采用UDP或者TCP协议。 原理概述:本程序是利用java程序实现一对多聊天软件的设计。首先编写服务器端的程序ChatServer,然后编写客户端的程序ChatApplet,客户端程序是可以嵌入到浏览器里的Applet里的小程序,即客户端通过网页登陆。服务器端的程序为每个连入的ChatApplet创建一个对应的线程,该线程监听对应Applet 是否有消息传来,若有消息传来则把信息广播给每个连入的客户端Applet。服务器程序的主入口是main()方法,它负责服务端口的定义和初始化以及接受用户的连入请求并通知所有用户Applet有新用户加入,而且循环监听。监听线程采用的是Runnable接口,线程的执行体是在Run()方法中实现的,调用线程是由main()方法中的语句new Thread(st).start();,另外发送信息采用的是线程同步机制Synchronized()。 设计方案:一.通讯协议的选择 TCP与UDP有各自的优点。TCP是面向连接的协议,能满足大范围的应用程序的要求,能调节网际的动态环境,建立和管理本地通信进程之间的对话,维护TCP在流出和流入传输层TCP的模块的每个用户的状态和信息,拥有窗口流量控制机制和重传机制,实现非常可靠的数据传输,它的安全性和可靠性比UDP要高出很多。UDP是面向非连接的传输协议,UDP的应用程序在高可靠性、低延迟的网络中运行很好,在通讯子网QoS相对低下的情况下,可能无法正常运行,因为在于数据包的频繁丢失。虽然UDP如此不可靠,但是由于它传输的高效率,仍然被广泛采用。在某些场合的一来一往只有两次数据报的交换中,UDP比TCP更加有效,因为TCP的建立连接和撤消连接的开销往往要大得多。 本程序设计在客户端与服务器端的协议采用了UDP,虽然在效率上占了优势,因为依照目前网络通讯的发展,通信子网在其性能上的提高,使得UDP 可以发挥其强大的优势,但是安全性却实在令人担忧。 综合考虑的结果,在本聊天工具的客户端和服务器端的通讯采用TCP协议。而客户与客户端的通讯采用UDP协议。 二.线程技术的选择 在单线程系统中,如果系统进行如网络数据发送等在后台进行工作的应用程序时,程序界面就会处于死锁状态,无法接受用户的输入。但抢占式多任务,每一个进程可以同时执行多个任务,对于本系统,既要保证多用户之间可以进行聊天,又要保持对用户的响应,使用多线程是最佳选择。 三.套接字SOCKET的应用 所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通

大学程序设计基础实验报告 (2)

**大学程序设计基础实验报告 实验名称:实验三分支结构 实验目的: 1、掌握IF-ELSE语句使用。 2、掌握ELSE-IF语句使用。 3、熟悉SWITCH语句使用。 实验内容: 在本地电脑中新建一个文件夹,用于存放C程序,文件夹的名字要求是“学号姓名-实验序号”,如E:\ 1920115555张三-03。启动C-Free,完成如下各题。 1、编程题:输入参数a,b,c,求一元二次方程ax2+bx+c=0的根(①a、b、c都为0,②a 和b为0,c不为0,③a为0,b不为0,c任意,④a不为0,且a、b、c满足b2-4ac ≥0,⑤a不为0,且a、b、c满足b2-4ac<0)。 2、编程题:输入职工的月薪salary,计算并输出应缴纳的个人所得税tax。tax=rate * (salary –850),rate的计算方式如下: 当salary <= 850,则rate = 0; 当850 < salary <= 1350,则rate = 5%; 当1350 < salary <= 2850,则rate = 10%; 当2850 < salary <= 5850,则rate = 15%; 当salary > 5850,则rate = 20%;。 3、编程题:根据输入的3个边长a、b、c,判断它们是否能构成三角形,若能构成三 角形,则进一步判断此三角形是哪种类型的三角形(等边三角形、等腰三角形、直角三角形和一般三角形。等腰直角算作等腰)。 4、编程题:输入一个形式如“操作数运算符操作数”的表达式,对2个整数进行乘、 除或求余运算。【请分别用if语句和switch语句实现此题功能】 上交作业的方法: 1.将程序代码及注释和运行程序的窗口复制到实验结果下方对应的题号上,并把这 次实验上机操作中遇到的问题及解决方法、心得等填好完成实验报告。 2.保存以上所有按要求已调试通过,并形成.c(或.cpp)和.exe文件到以自己的“学 号姓名-03”命名的文件夹中,并将以自己的“学号姓名”命名的文件夹压缩后上 交到ftp://10.172.250.252:1161中的“作业上传”文件夹下的“报告上交02”文件 夹下的子文件夹“源文件压缩上交”中,同时把以“学号姓名-03”命名的word 文档上交到“报告上交03”文件夹下的另一子文件夹“word文件上交”中。 特别提醒:每次上传的文件名一定要是“学号姓名-实验序号. doc”(如1720115555张

游戏C语言实验报告

嘉应学院计算机学院 实验报告 课程名称: C程序设计 开课学期: 2015—2016学年第1学期 班级:计算机1505 指导老师:陈广明 设计题目:游戏2048 学生姓名(学号):第3组:钟瞻宇

目录 一、实验目的和要求 .................................................................................................................................................... 二、实验环境、内容和方法 ........................................................................................................................................ 三、程序设计 ................................................................................................................................................................ 四、源代码 .................................................................................................................................................................... 五、调试与运行结果.................................................................................................................................................... 六、总结........................................................................................................................................................................

聊天室程序设计

JA V A网络编程 ------文本传输 学院:通信与信息工程 班级:电子商务1002班 姓名:王鹏飞 学号:1007100222

JAVA 网络聊天室 功能描述 网络聊天室是一种应用广泛网络聊天方式,操作简单,功能丰富,是教学和学习面向对象的编程思想的理想项目。可以使用多种编程语言设计和开发出功能完善的网络聊天室。 本系统采用C/S 架构设计,用JAVA 语言设计和实现,整个项目分为服务器端和客户端。使用了最新的JAVA SE 标准Swing 组件,开发出简洁美观布局合理的客户端和服务器界面;利用Socket 网络开发技术实现客户端和服务器端的连接访问,实现网络通信功能;通过对数据流合理的封装,实现信息发送和接受。同时,采用多线程、多任务的设计思想,令服务器性能稳定,客户端通信流畅,基本实现聊天室的功能。 服务器端功能: 服务器的基本功能有:启动服务器,关闭服务器,监听客户端连接请求,显示在线用户,显示客户端连接信息,发送系统消息等。 服务器 监听客户端请求 显示在线用户列表 显示客户端连接信息 发送系统消息 关闭服务器 启 动服务器 服务器端功能描述: 1. 启动服务器:客户在运行服务端程序后,点击启动服务器,服务器程序创建 并箭筒特定端口的ServerSocket,并启动一个主线程,等待客户端的连接,如

果有客户端连接,服务器向工作线程队列中加入与客户通信的任务,工作线程不断从工作线程中取出任务并执行。同时在服务器消息面板中显示,服务器启动成功。 2.关闭服务器:服务器关闭时,向所有连接的客户端发送消息,告知将服务器 关闭,同时关闭socket,之后服务器界面关闭 3.监听客户端请求:服务器在启动后一直监听客户端的运行情况,比如有新用 户登录,用户退出等。 4.显示在线用户:用户登录后即客户端与服务器连接成功,服务器端用户列表 界面显示出所有登录用户的用户名,用户退出后服务器更新用户列表 5.显示用户连接信息:用户在登录成功后,服务器端服务信息界面显示用户登 录的信息,包括客户端IP地址,端口号。 6.发送系统消息:可以从服务器端广播系统消息,该消息会发送给所有连接的 客户端,此功能可用于服务器管理者向所有用户发送重要的系统消息。 服务器界面如下图所示:

简易聊天应用程序的设计与实现模板

简易聊天应用程序的设计与实现

Java网络程序设计大作业分组报名表

目录 一、团队介绍及人员分工.............................................. 错误!未定义书签。 1.1 团队介绍............................................................. 错误!未定义书签。 1.2 人员分工............................................................. 错误!未定义书签。 二、作品概述 ................................................................. 错误!未定义书签。 2.1 创作背景............................................................. 错误!未定义书签。 2.2 功能概要............................................................. 错误!未定义书签。 2.3相关技术............................................................. 错误!未定义书签。 2.4 作品可行性分析 ................................................. 错误!未定义书签。 三、需求分析 ................................................................. 错误!未定义书签。 3.1 功能性需求......................................................... 错误!未定义书签。 3.2 非功能性需求 ..................................................... 错误!未定义书签。 四、作品实现 ................................................................. 错误!未定义书签。 4.1服务端界面实现 ................................................. 错误!未定义书签。 4.2客户端界面实现 ................................................. 错误!未定义书签。 4.3登录实现............................................................. 错误!未定义书签。

Java程序设计实验报告2(弹球游戏)[1]1

《Java语言程序设计》课程设计 实习报告 题目: 班级: 学号: 姓名: 同组人员: 指导老师:张彬

一、实验目的 1、掌握Swing图形用户界面编程以及事件处理等,掌握java绘图技术。 2、掌握多线程编程的基本原理,能使用Runnable、ExecutorService等接口进行 线程的创建、启动等工作。 3、培养独立查找资料,并解决问题的能力。 二、实验任务 1、设计并编程实现弹球游戏: 用户能通过GUI组件指定生成小球的数量,每个小球将从随机的位置出现,并具有随机颜色,随机速度以及随机的运动方向,小球沿初始方向匀速运动,当碰到窗口边缘时,小球将依据受力原理改变运动方向(可简化考虑,受力只改变小球的运动方向,小球仍按照初始速度匀速运动,且不考虑小球之间的碰撞)。 鼠标在界面中显示为方块状,玩家需按住鼠标来回移动以避开运动的小球及屏幕四周,如果鼠标碰到任一小球或者窗口四周,则游戏结束。 程序需提供计时功能,并最终显示玩家能坚持多少秒。 2、程序要求: (1)具备相应界面,并通过事件编程,实现相应的GUI组件功能。 (2)使用多线程技术,在程序窗口区域绘制小球,并以线程控制小球的移动,实现动画效果。 (3)实现鼠标与屏幕四周,以及与小球的碰撞检测。 三、开发工具与平台 1.开发工具:Eclipse默认是一个和Jbuilder类似的Java开发工具,但它不仅仅只

是Java开发工具,只要装上相应的插件,eclipse也可作为其它语言的开发工具。如C/C++插件(CDT)。 2.开发平台:JDK1.5 四、设计思路 1.界面设计 (1)制作一个简单的面板JFrame,文件保存为bollFrame.java 其中为一public的类bollFrame,其构造方法为: bollFrame(int n){ super(); setTitle("我的弹球小游戏"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();//得到电脑屏幕大小 setSize(450,450); setLocation((dimension.width-game.getWidth())/2-250, (dimension.height-game.getHeight())/2-250);//设置面板显示基中; this.n = n; myBollPanel = new bollPanel(n);//构造一个画板; add(myBollPanel);//将画板放入JFrame createMenu();//创建菜单; setJMenuBar(bar); } (2)构造画板类,文件保存为bollPanel.java 其构造函数如下: bollPanel(int n){ this.n = n; // executorThread = Executors.newCachedThreadPool();//创建线程池; mouse = new mouseThread(mxNow,myNow,groupThread,this);//启动鼠标线程; this.setIsOver(false);//游戏开始线程条件的判断; for(int i =0 ;i

简易聊天应用程序的设计与实现

Java网络程序设计大作业分组报名表

目录 一、团队介绍及人员分工..................................... 错误!未定义书签。 团队介绍 .............................................. 错误!未定义书签。 人员分工 .............................................. 错误!未定义书签。 二、作品概述............................................... 错误!未定义书签。 创作背景 .............................................. 错误!未定义书签。 功能概要 .............................................. 错误!未定义书签。 相关技术 ............................................... 错误!未定义书签。 作品可行性分析 ........................................ 错误!未定义书签。 三、需求分析............................................... 错误!未定义书签。 功能性需求 ............................................ 错误!未定义书签。 非功能性需求 .......................................... 错误!未定义书签。 四、作品实现............................................... 错误!未定义书签。 服务端界面实现 ......................................... 错误!未定义书签。 客户端界面实现 ......................................... 错误!未定义书签。 登录实现 ............................................... 错误!未定义书签。 聊天功能实现 .......................................... 错误!未定义书签。 退出功能实现 .......................................... 错误!未定义书签。 五、作品设计、实现难点分析................................. 错误!未定义书签。 难点分析 .............................................. 错误!未定义书签。 解决方案 .............................................. 错误!未定义书签。 测试结果 .............................................. 错误!未定义书签。

C语言程序设计基础实验报告6【VIP专享】

实验6 数组 一、实验目的 1、掌握一维数组和二维数组的定义、赋值和输入输出的方法; 2、掌握字符数组和字符串函数的使用; 3、掌握与数组有关的算法(特别是排序算法)。 二、实验内容和步骤 编程序并上机调试运行。 1、以下给定程序MODI1.C的功能是: 求一维数组a中所有元素的平均值, 结果保留两位小数。例如,当一维数组a中的元素为:10, 4, 2, 7, 3, 12, 5, 34, 5, 9时,程序的输出应为:The aver is: 9.10 程序中有两处错误,错误都在提示行:/***********found***********/的下面一行。请改正程序中的错误, 使它能得出正确的结果。 注意:程序中的其它地方请不要随意改动,不得增行或删行,也不得更改程序的结构! #include #include void main() { int a[10]={10,4,2,7,3,12,5,34,5,9}, i; /************found************/ /************found************/ s = a[0]; for ( i=1; i<10; i++) s += a[i]; aver = s / i; printf("The aver is: %.2f\n", aver); } 2、以下给定程序MODI1.C的功能是:求二维数组a中的最小值。 例如,当二维数组a中的元素为: 4 2 34 7 3 12 5 6 5 程序的输出应为:The min is: 2 。 程序中有两处错误,错误都在提示行:/***********found***********/的下面一行。请改正程序中的错误, 使它能得出正确的结果。 注意:程序中的其它地方请不要随意改动,不得增行或删行,也不得更改程序的结构! #include #include void main() { int a[3][3]={4,2,34,7,3,12,5,6,5}, i, j, min; clrscr();

聊天系统-程序设计实践报告

程序设计实践 设 计 报 告 课题名称:网络聊天程序的设计和实现学生姓名: 班级: 班内序号: 学号: 日期:

1.课题概述 1.1课题目标和主要内容 课题实现的主要内容:本程序实现一个简单的网络聊天程序,采用客户机/服务器(Client/Server)模式,将客户端和服务端功能在一个程序中实现,运行时在不同的计算机上打开此程序即可进行聊天。程序实现一对多,多对多聊天功能,满足聊天的基本功能。 课题目标:学会使用MFC搭建基本的对话框及基本控件的使用,了解socket套接字相关知识,实现简单聊天程序。通过实践复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力。 使用的开发平台:Microsoft Visual Studio 2010、windows7 采用的主要工具:计算机、相关图书资料 1.2系统的主要功能 功能列表或功能框图,以及功能的简要说明。

服务器端负责指定ip地址及端口号,建立服务器,有监听、接受、发送消息等功能。客户端通过指定的ip及端口号来连接服务器,有接受和发送消息等功能。 2. 系统设计 2.1 系统总体框架 包括系统框架图或层次逻辑图,设计思想等 首先由服务器在指定的端口开通指定的服务,然后在客户机通过指定服务器地址、端口来连接服务器以获得指定的服务。 服务器端 首先由一个服务器启动一个线程监听来自客户器的Socket连接,当服务器的Socket与客户器的Socket经过TCP协议的3次握手建立了连接后,双方就可以通过这个连接来进行信息的发送和接收,并可以进行文件的传输。在进行程序设计时,对于多个用户连接服务器采用了多线程处理,每个客户端的Socket都启动一个线程来连接服务端的Socket,服务端的Socket接受连接后,通过一个结构体保存已经连接的客户端的地址和套接字,当客户端发送一个信息到服务端,服务器接收信息后,再从结构体中取出已保存的套接字转发所收到

网络编程聊天程序课程设计

课题名称:TCP/IP协议及网络编程技术课程设计子课题:实现简化功能的客户机和服务器聊天程序 院(系):计算机学院 专业:通信工程 班级: 学生姓名:hshengxue 学号:200900402022 指导教师:周坚和 2012年 6 月22 日

目录 摘要 (3) 引言 (3) 一、课程设计的目的和意义 (3) 二、课程设计的内容和要求 (3) 三、课程设计所需了解的相关内容和技术 (4) (一)、套接口 (4) (1)套接口的概念 (4) (2)套接口的分类 (5) (3) Socket工作模式 (6) (二)、所用的关键技术 (6) (三)Winsock API的使用 (7) 四、课程设计过程 (7) (一)设计思路 (7) (1)服务器的主要工作流程 (7) (2)客户机的工作流程.............................................8. (3)服务器的工作流程 (8) 五、编程实现 (9) (一)服务器端的实现 (9) (二)客户端的实现 (11) 六、小结 (15) 七、参考文献 (16)

摘要: 网络应用程序是通过网络使用通信协议实现进程间的通信;本项目采用软件工程的方法,综合运用网络程序设计,以visual c++6.0作为系统前台应用程序开发工具。此局域网聊天工具采用客户端/服务端(C/S)模式和UDP连接。它由两个程序组成:服务器(Server)和客户端(Client),首先需要登录服务器,再登录客户端,需要指定服务器IP地址以便与服务器建立连接。登录后,客户可以在自己的界面上与另一指的定的客户端进行聊天。服务器模块主要用来维护网络用户用户的信息,包括用户IP地址,聊天内容;聊天客户端模块主要包括用户连接,发送信息,接收信息。是一套用于Internet网络使用的网络聊天工具,其操作简单,灵活性好,运用也比较稳定。 关键词:网络,聊天程序,客户端/服务端,UDP传输控制协议。 0、引言 网络应用程序是通过网络使用通信协议实现进程间的通信,UDP 是TCP/IP协议族为传输层设计的两个协议之一,UDP提供的是无连接、不可靠的网络传输协议,在进行网络应用程序设计时,TCP/IP 协议的核心内容被封装在操作系统中。网络应用程序要使用UDP协议来实现自己的功能,只能通过由系统提供给用户的UDP协议编程接口来实现。因此,可以说设计网络应用程序就是利用网络编程接口(API)进行程序设计的过程。在Windows环境下的网络应用程序编程接口叫

基于TCP的简单一对一聊天程序设计

基于TCP的简单一对一聊天程序设计 一、课程设计目的 1、通过课程设计,使学生理论联系实际,在实践中进一步了解计算机网络体系结构,深入理解TCP/IP参考模型 2、培养学生分析、解决问题的能力,提高学生动手能力。 3、使学生掌握搜集资料、调查研究、整理报告的方法。 4、初步掌握网络应用程序开发技术以及互联网的应用技术。 二、课程设计的要求及原理 1、课程设计要求。实现一个一对一的聊天程序。其基本过程如下:服务器首先启动,创建套节字等待客户连接;客户启动以后,创建套届字,然后和服务器建立连接;连接建立以后,客户机和服务器可以通过建立的套节字连接进行通信。服务器和客户端可以是一台电脑上的两个进程,也可以使分别部署在两台电脑上。 2、课程设计原理。 客户服务器模型。它是指客户/服务器模型是所有网络应用的基础。客户/服务器分别指参与一次通信的两个应用实体,客户方主动地发起通信请求,服务器方被动地等待通信的建立。它是一个在建立分布式应用时最常用的范例。在这种方案中客户应用程序向服务器程序请求服务。这种方式隐含了在建立客户机/服务器间通讯时的非对称性。客户机/服务器模型工作时要求有一套为客户机和服务器所共识的惯例来保证服务能够被提供(或被接受)。这一套惯例包含了一套协议。它必须在通讯的两头都被实现。根据不同的实际情况,协议可能是对称的或是非对称的。在对称的协议中,每一方都有可能扮演主从角色;在非对称协议中,一方被不可改变地认为是主机,而另一方则是从机。无论具体的协议是对称的或是非对称的,当服务被提供时必然存在"客户进程"和"服务进程"。一个服务程序通常在一个众所周知的地址监听对服务的请求,也就是说,服务进程一直处于休眠状态,直到一个客户对这个服务的地址提出了连接请求。在这个时刻,服务程序被"惊醒"并且为客户提供服务-对客户的请求作出适当的反应。虽然基于连接的服务是设计客户机/服务器应用程序时的标准,但有些服务也是可以通过数据报套接口提供的。 相关协议。应用到的网络协议主要有TCP协议。TCP协议被称作一种端对端协议。这是因为它为两台计算机之间的连接起了重要作用:当一台计算机需要与另一台远程计算机连接时,TCP协议会让它们建立一个连接、发送和接收资料以及终止连接。传输控制协议TCP协议利用重发技术和拥塞控制机制,向应用程序提供可靠的通信连接,使它能够自动适应网上的各种变化。即使在 Internet 暂时出现堵塞的情况下,TCP也能够保证通信的可靠。IP协议只保证计算机能发送和接收分组资料,而TCP协议则可提供一个可靠的、可流控的、全双工的信息流传输服务。 三、设计方案 首先本程序的定位是一对一的聊天程序;程序没有采用图形界面;程序的设计语言采用的是C++;基于winsock;开发工具为VC++。

《程序设计课程设计》实验报告材料

《程序设计》课程设计 姓名: 学号: 班级:软件工程14 班 指导教师: 成绩:

1.消除类游戏 1.1【问题描述】 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除。当有多处可以被消除时,这些地方的棋子将同时被消除。 1.2【基本要求】 现在给你一个n行m列的棋盘(1≤n,m≤30),棋盘中的每一个方格上有一个棋子,请给出经过一次消除后的棋盘。 请注意:一个棋子可能在某一行和某一列同时被消除。 输入数据格式: 输入的第一行包含两个整数n, m,用空格分隔,分别表示棋盘的行数和列数。接下来n行,每行m个整数,用空格分隔,分别表示每一个方格中的棋子的颜色。颜色使用1至9编号。 输出数据格式: 输出n行,每行m个整数,相邻的整数之间使用一个空格分隔,表示经过一次消除后的棋盘。如果一个方格中的棋子被消除,则对应的方格输出0,否则输出棋子的颜色编号。 1.3【测试数据】 为方便调试程序,可将输入数据先写入一个文本文件,然后从文件读取数据处理,这样可避免每次运行程序时都要从键盘输入数据。 测试数据一 输出说明: 棋盘中第4列的1和第4行的2可以被消除,其他的方格中的棋子均保留。 棋盘中所有的1以及最后一行的3可以被同时消除,其他的方格中的棋子均保留。 1.4【功能实现】 #include #include using namespace std;

int main() { int m, n, i ,j; int temp; cin >> n >> m; temp = m; m = n; n = temp; int * map = new int[m * n]; int * mark = new int[m * n]; int * tmap = map; int * tmark = mark; int dif = 0; //输入 for ( i = 0 ; i < m ; i++ ) for (j = 0; j < n; j++) cin >> *(tmap + i * n + j); for (i = 0; i < m; i++) for (j = 0; j < n; j++) { //横行 if ((tmap + 2 - map) % n != 0 || (tmap + 1 - map) % n != 0) if (*(tmap) == *(tmap + 1) && * (tmap + 1) == *(tmap + 2)) { dif = tmap - map; *(tmark + dif) = 0; *(tmark + dif + 1) = 0; *(tmark + dif + 2) = 0; } //竖列 if (tmap + 2 * n - map < m * n || tmap + n - map < m * n) if (*(tmap) == *(tmap + n) && * (tmap + n) == *(tmap + 2 * n)) { dif = tmap - map; *(tmark + dif) = 0; *(tmark + dif + n) = 0; *(tmark + dif + 2 * n) = 0; } tmap = map + (j+1) + i * n; } //输出 cout << endl; tmap = map; for (i = 0; i < m; i++)

C++程序设计实验报告5

《程序设计基础》 实验报告 学号:2016211990 姓名:王贯东 班级:16-计算机科学与技术-1班

学院:计算机与信息学院 实验五指针 1.实验目的要求 (1)掌握指针的概念,学会定义和使用指针变量。 (2)学会使用数组指针和指向数组的指针变量。 (3)学会使用字符串指针和指向字符串的指针变量。 (4)了解指向指针的指针的概念以及其使用方法。 (5)掌握指针、引用、数组做函数参数的传递机制。 (6)*学会使用指向函数的指针变量。 2.实验设备 Visual C++ 6.0 3.实验内容 (1)阅读下面程序,写出其运行结果。

<1> #include sub ( int x , int y , int *z ) { *z = y – x ; } void main( ) { int a,b,c; sub( 10 , 5 , &a ) ; sub( 7, a, &b ) ; sub( a, b, &c ) ; cout << a <<‘,’<< b <<‘,’<< c << endl ; } 解:输出-5,-12,-7 <2> #include #include void main()

{ int stre ( char[ ] ) ; char str [ 10 ] , *p = str ; gets ( p ) ; cout << stre ( p ) << endl ; } int stre ( char str[ ] ) { int num = 0 ; while( * ( str + num ) != ’\0’ ) num ++ ; return ( num ) ; } 解:题目库函数少了 。该正后,输入1234,输出4 (2)编写程序实现下列问题的求解。 (1)输入三个整数,按由小到大的顺序输出,然后将程序改为:输入三个字符串,按由小到大的顺序输出。 #include using namespace std; int turn (int *p1,int *p2)

相关主题
文本预览
相关文档 最新文档