C#编写简单的聊天程序

程序的分析与设计

1.明确程序功能

如果大家现在已经参加了工作,你的经理或者老板告诉你,“小王,我需要你开发一个聊天程序”。那么接下来该怎么做呢?你 是不是在脑子里有个雏形,然后就直接打开VS2005开始设计窗体,编写代码了呢?在开始之前,我们首先需要进行软件的分析与设计。就拿本 例来说,如果只有这么一句话“一个聊天程序”,恐怕现在大家对这个“聊天程序”的概念就很模糊,它可以是像QQ那 样的非常复杂的一个程序,也可以是很简单的聊天程序;它可能只有在对方在线的时候才可以进行聊天,也可能进行留言;它可能每次将消息 只能发往一个人,也可能允许发往多个人。它还可能有一些高级功能,比如向对方传送文件等。所以我们首先需要进行分析,而不是一上手就 开始做,而分析的第一步,就是搞清楚程序的功能是什么,它能够做些什么。在这一步,我们的任务是了解程序需要做什么,而不是如何去做 。

了解程序需要做什么,我们可以从两方面入手,接下来我们分别讨论。

1.1请求客户提供更详细信息

我们可以做的第一件事就是请求客户提供更加详细的信息。尽管你的经理或老板是你的上司,但在这个例子中,他就是你的客户(当然通常 情况下,客户是公司外部委托公司开发软件的人或单位)。当遇到上面这种情况,我们只有少得可怜的一条信息“一个聊天程序” ,首先可以做的,就是请求客户提供更加确切的信息。比如,你问经理“对这个程序的功能能不能提供一些更具体的信息?”。他 可能会像这样回答:“哦,很简单,可以登录聊天程序,登录的时候能够通知其他在线用户,然后与在线的用户进行对话,如果不想对话 了,就注销或者直接关闭,就这些吧。”

有了上面这段话,我们就又可以得出下面几个需求:

程序可以进行登录。

登录后可以通知其他在线用户。

可以与其他用户进行对话。

可以注销或者关闭。

1.2对于用户需求进行提问,并进行总结

经常会有这样的情况:可能客户给出的需求仍然不够细致,或者客户自己本身对于需求就很模糊,此时我们需要做的就是针对用户上面给出 的信息进行提问。接下来我就看看如何对上面的需求进行提问,我们至少可以向经理提出以下问题:

NOTE:这里我穿插一个我在见到的一个印象比较深刻的例子:客户往往向你表达了强烈的意愿他多么多么想拥有一个属于自己的网站,但是 ,他却没有告诉你网站都有哪些内容、栏目,可以做什么。而作为开发者,我们显然关心的是后者。

登录时需要提供哪些内容?需不需要提供密码?

允许多少人同时在线聊天?

与在线用户聊天时,可以将一条消息发给一个用户,还是可以一次将消息发给多个用户?

聊天时发送的消息包括哪些内容?

注销和关闭有什么区别?

注销和关闭对对方需不需要给对方提示?

由于这是一个范例程序,而我在为大家讲述,所以我只能再充当一下客户的角色,来回答上面的问题:

登录时只需要提供用户名称就可以了,不需要输入密码。

允许两个人在线聊天。(这里我们只讲述这种简单情况,允许多人聊天需要使用多线程)

因为只有两个人,那么自然是只能发给一个用户了。

聊天发送的消息包括:用户名称、发送时间还有正文。

注销并不关闭程序,只是离开了对话,可以再次进行连接。关闭则是退出整个应用程序。

注销和关闭均需要给对方提示。

好了,有了上面这些信息我们基本上就掌握了程序需要完成的功能,那么接下来做什么?开始编码了么?上面的这些属于业务流程,除非你 对它已经非常熟悉,或者程序非常的小,那么可以对它进行编码,但是实际中,我们最好再编写一些用例,这样会使程序的流程更加的清楚。

时间: 2024-10-31 09:19:03

C#编写简单的聊天程序的相关文章

Android编写简单的聊天室应用_Android

最近写了一个简单的聊天室应用,可以发送表情,更改头像这些功能.主要技术点就是怎样把表情图片放到textview等Ui控件中展示.这里废话不多说,下面是效果图:  这里主要讲下怎样把文本替换到表情,先说下思路,首先我们的图片是保存在本地资源目录drawable中而所有的资源文件都是R这个类来管理,所以我们可以利用正则表达式找出图片id包装成ImageSpan然后把ImageSpan放到SpannableString中,最后把SpannableString放入edittext中,下面是源码: pac

c++编写简单的计算器程序_C 语言

首先来看下本人的开发环境 系统:win7 电脑:dell 运行环境:vs2015 语言:c++ 简单计算器代码 //四则运算 #include "stdafx.h" #include<iostream> #include<stdio.h> using namespace std; void add() { printf("输入要计算的加数(例如a b)\n"); int adda=0, addb=0,addc=0; cin >>

Android编写简单的聊天室应用

最近写了一个简单的聊天室应用,可以发送表情,更改头像这些功能.主要技术点就是怎样把表情图片放到textview等Ui控件中展示.这里废话不多说,下面是效果图: 这里主要讲下怎样把文本替换到表情,先说下思路,首先我们的图片是保存在本地资源目录drawable中而所有的资源文件都是R这个类来管理,所以我们可以利用正则表达式找出图片id包装成ImageSpan然后把ImageSpan放到SpannableString中,最后把SpannableString放入edittext中,下面是源码: pack

用java编写简单UDP网络通信程序

程序|网络 java中封装了大量的socket API,为编写网络通信程序提供了极大的方便.在计算机网络的学习中,大家都已熟练掌握了TCP/UDP的基本原理,在此不在赘述.仅给出接收端和发送端的源代码,供大家讨论和批评.发送端代码如下://只要稍加改进,即可发送数据import java.io.*;import java.lang.*;import java.net.*;public class uclient{ private DatagramSocket cli; private Datag

C++启蒙之编写简单的C++程序

每个C++程序都包含一个或多个函数(function),其中的一个函数的名称必须是main.一个函数由一系列执行函数功能的语句(statement)组成.操作系统通过调用main函数来执行程序.这个函数执行它的组成语句并给操作系统返回一个值. 下面是一个简单的main函数,它没有返回值: int main() { return 0; } 操作系统利用main函数返回的值判断程序执行成功还是失败.返回0表明成功了. Main函数很特殊,其中最重要的是这个函数必须存在于每个C++程序中,而且它是操作

编写简单的Python程序来判断文本的语种_python

1.问题的描述 用Python进行文本处理时,有时候处理的文本中包含中文.英文.日文等多个语系的文本,有时候不能同时进行处理,这个时候就需要判别当前文本是属于哪个语系的.Python中有个langid工具包提供了此功能,langid目前支持97种语言的检测,非常好用. 2.程序的代码 以下Python是调用langid工具包来对文本进行语言检测与判别的程序代码:   import langid #引入langid模块 def translate(inputFile, outputFile): f

解析:通过php socket并借助telnet实现简单的聊天程序_php技巧

以下是通过php的socket扩展模块实现的一个简单的消息处理服务器端:绑定在一个本机的端口,监听客户端的连接,接收数据并转发给发送者之外的所有客户端socket_server.php 复制代码 代码如下: #!/usr/bin/env php<?php//author:zhxiaif(!extension_loaded('sockets')){    die('the sockets extension is not loaded!');}const PORT=9981;$socket=soc

java编写简单的E-mail发送端程序_java

本文实例介绍了简单E-mail发送端程序的Java实现代码,分享给大家供大家参考,具体内容如下 在这个代码中,有几个注意点强调一下: 1.使用 Socket 与 SMTP 邮件服务器取得连接,注意 SMTP 服务器的主机名: 2.使用 data 命令时,若写了 subject (主题)之后,邮件的正文部分必须与 subject 之间有一个空行,即"回车+换行",在代码中则是 \r\n : 3.同样需要将发件人的邮箱用户名.密码进行 BASE64 编码之后再传给 SMTP 服务器: 4.

php编写简单的文章发布程序_php技巧

-- -- 表的结构 `yi_article` -- CREATE TABLE IF NOT EXISTS `yi_article` ( `id` int(11) unsigned NOT NULL auto_increment, `title` varchar(256) NOT NULL, `content` mediumtext NOT NULL, `add_man` varchar(20) NOT NULL, `add_time` datetime NOT NULL, `views` in