一、软件说明
1.1 功能说明
一个可以自动回复的聊天机器人.

1.2 解决什么样的实际问题
用于娱乐,解闷。

1.3 性能说明
软件还存在一定的BUG,有待改进。

1.4 程序类型说明
娱乐性应用程序。

二、软件设计
2.1 软件整体结构图及模块划分

软件的结构只有一个聊天界面,分别有输入框,显示聊天信息框,发送按钮和退出按钮,导入词库按钮和调教按钮。

解决方案中,有5个类,其中:

”聊天机器人”类是主类,窗口显示类

”DataBase”是连接数据的类,本程序用到的是access数据库

“Iostreams”类是文件操作类,主要是读取一个txt文件,用于导入词库

”Regugar”类是正则表达式品配类,用于品配聊天的问题

”Robot”类是一个机器人对象

Resources文件是用于存放图片文件。

2.3 各模块对应的主要对象和方法
2.3.1 ”聊天机器人”类
主要属性

private Robot A; //机器人对象
private string Ask; //发送信息
private string Answer; //返回信息
private int isTeaching; //调教模式
private Point mouseOff; //鼠标移动位置变量
private bool leftFlag; //标签是否为左键
private string FileName; //txt文件路径
private Thread T1; //创建一个线程
主要方法

/发送按扭
private void button_sent_Click(object sender, EventArgs e)
{
///正常聊天状态
if (isTeaching == 0)
{
Ask = this.richTextBox_sent.Text;
//设置为右对齐
this.richTextBox1_accept.SelectionAlignment = HorizontalAlignment.Right;
this.richTextBox1_accept.AppendText(Ask + “:主人 n”);
Answer = A.answer(Ask);
//设置为左对齐
this.richTextBox1_accept.SelectionAlignment = HorizontalAlignment.Left;
this.richTextBox1_accept.AppendText(" “+ A.name + “:” + Answer + “n”);
}
///调教机器人状态
else if (isTeaching == 1)
{
Ask = this.richTextBox_sent.Text;
this.richTextBox1_accept.SelectionAlignment = HorizontalAlignment.Right;
this.richTextBox1_accept.AppendText(Ask + “:主人 n”);
isTeaching = 2;
}
else
{
Answer = this.richTextBox_sent.Text;
this.richTextBox1_accept.SelectionAlignment = HorizontalAlignment.Left;
this.richTextBox1_accept.AppendText(” “+A.name+”:" + Answer + “n”);
A.learn(Ask,Answer);
isTeaching = 1;
}
//自动滚动到插入位置
this.richTextBox1_accept.ScrollToCaret();
//清空发送框
this.richTextBox_sent.Clear();
}
///导入词库
private void Openfile()
{
//导入词库
Iostreams.Import(FileName);
T1.Abort();
}
2.3.2 ”DataBase”类
//根据接收到的字符串返回数据
public static List search(string sql)
{
List answer = new List();
conversation con = null;
OleDbConnection conn = new OleDbConnection(@“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|ChatRobot.mdb”);
///连接数据库
conn.Open();
//执行sql查询
OleDbCommand com = new OleDbCommand(sql, conn);
OleDbDataReader reader = com.ExecuteReader();
//读取查询结果
while (reader.Read())
{
con = new conversation(reader.GetString(0), reader.GetString(1));
answer.Add(con);
}
conn.Close();
return answer;
}
2.3.3 “Iostreams”类
public static void Import(string File_Name)
{
using (StreamReader sr = new StreamReader(File_Name, Encoding.Default))
{
string line1,line2;
//按行读取
while((line1=sr.ReadLine())!= null)
{
line2 = sr.ReadLine();
DataBase.Insert(line1, line2);
sr.ReadLine();
}
}
}
2.3.4 ”Regugar”类
//正则表达式品配
public static bool match(string a, string ask)
{
//简单的正则表达式
Regex re = new Regex(@"[sS]" + a + @"[sS]");
//品配成功则返回true,否则返回false
return re.IsMatch(ask);
}
2.3.5 ”Robot”类
//问答函数
public string answer(string ask)
{
List answers = new List();
string answer=null,a=null;
///sql语句品所有字符的模糊搜索
a = “SELECT ask,answer FROM [chatwords] WHERE (ask LIKE’%[” + ask + “]%’) ORDER BY ask DESC”;
answers = DataBase.search(a);
if (answers.Count != 0)
{
for (int i = 0; i < answers.Count; i++)
{
if (Regular.match(answers[i].ask,ask ))
return answers[i].answer;
}
}
answer = “听不懂”;
//返回包括有输入的任一字的ask和answer
return answer;
}
2.4 数据库设计或数据文件说明
数据库设计,只创建一个chatwords表,用于储存ask语句和answer语句。

完整的源码和详细的文档,上传到了 WRITE-BUG技术共享平台 上,需要的请自取:

https://www.write-bug.com/article/2851.html

access 导入 txt sql语句_[内附完整源码和文档] 基于C#和Access的智能聊天机器人相关推荐

  1. java sql进销存_[内附完整源码和文档] 基于Java和Sql Server 2008的陶瓷工厂进销存管理系统...

    摘 要 时代在进步,我们的生产生活方式当然也要相对应的做出改变了.在今天这样一个信息化的时代,计算机软件已经广泛的被用于日常的办公,仓库的库存管理,企业的人员以及资产管理,文字的编辑处理,电子表格的广 ...

  2. 投票源码程序_[内附完整源码和文档] 基于JSP实现的影视创作论坛系统

    摘 要 随着时代的发展,互联网的出现,给传统影视行业带来的最大便利就是,方便了影视从业人员以及爱好者的交流和互动,而为用户提供一个书写影评,阅读影评以及回复影评的平台,以影评为载体来使用户感受影评.解 ...

  3. java 最少使用(lru)置换算法_[内附完整源码和文档] 基于C#的可视化虚拟存储器管理(LUR算法)...

    一.目的要求 理解虚拟存储器概念,并掌握分页式存储管理地址转换和缺页中断的处理过程.用高级语言模拟请求分页式虚拟存储器的工作过程和页面置换算法LRU. 二.准备知识 2.1 分页式存储管理原理 在存储 ...

  4. d3.js 旋转图形_[内附完整源码和文档] 基于Qt实现的图形系统

    一.概述 本系统拟完成一个图形系统,对多种常见图形进行基本操作 系统功能 二维图形的输入:可输入或全部清除不同颜色的直线.矩形.圆.椭圆.多边形.曲线.铅笔工具 二维图形的编辑:对于直线.矩形.圆.椭 ...

  5. 矩阵化为行最简形矩阵计算器_[内附完整源码和文档] 基于C++的小型特殊计算器...

    1.设计内容 实现一个特殊的计算器,可以实现复数.有理数.矩阵和集合的特殊计算.程序可以实现复数.有理数的加.减.乘.除,可以实现矩阵的加法.减法和乘法运算,也可以实现集合的求交集.并集.子集的运算. ...

  6. c++ udp多线程 例子_[内附完整源码和文档] 基于udp实现tcp功能进行大文件传输

    一.项目要求 Please choose one of following programing languages: C, C++, Java, Python; 本项目采用的是python3.6 L ...

  7. java 教室借用管理系统_[内附完整源码和文档] 基于JAVA语言的学生选课信息管理系统...

    摘 要 本系统运用Java面向对象的方法设计而成. 近年来,学生选课系统越来越在高校学生群体中得到普及,其所承担的功能也变得越来越丰富,所起到的作用也变得越来越重要,在被学校学生重视的同时,也意味着它 ...

  8. python优秀源码新闻系统_[内附完整源码和文档] 基于python的新闻检索系统

    1 系统介绍 1.1 系统需求 新闻检索系统:定向采集不少于 4 个中文社会新闻网站或频道,实现这些网站新闻信息及评论信息的自动爬取.抽取.索引和检索.本项目未使用 lucene,Goose 等成熟开 ...

  9. jsp模糊查询_[内附完整源码和文档] 基于JSP+Servlet校园二手交易平台

    摘 要 本系统采用JSP/servlet技术,是使用Java编程语言编写的一套校园网二手交易平台软件.系统采用的是最近几年流行的B/S开发模式,以互联网方式运行,服务器端只需要安装本系统,而客户端用户 ...

最新文章

  1. AI语音算法“个性”强 与芯片端“磨合”挑战多
  2. butter fly graph
  3. C#规范整理·集合和Linq
  4. plsql 批量调存储过程_数控双端开榫机:批量铣榫头真牛气
  5. [CB]加快BCB编译速度
  6. 手把手教你使用Python网络爬虫获取招聘信息
  7. 从服务器请求文件流工具类,SpringBoot我想获取图片流,然后将图片流的数据传到服务器上...
  8. 关于Ajax的一揽子工程(2)
  9. 云计算需要python吗_云计算开发学习笔记:Python的环境搭建
  10. Android实现保存图片和视频到系统相册
  11. 计算机生存代码,方舟生存进化OL代码大全 最新最全的代码
  12. DWL文件能改成DWG文件打开吗?
  13. A银行B分行零售营销人员激励机制研究
  14. 怎么用磁盘压缩卷新建分区
  15. tcp 阻塞与非阻塞
  16. RK3588-ROCK5B上手体验
  17. Python实战-新能源王者宁德时代股权穿透研究(附完整代码)
  18. Confluence 你可以对编辑器中的表格进行什么样的操作
  19. Redis的使用和认识
  20. 转行学java好学吗?完全没有经验怎么办?

热门文章

  1. 常用计算机类型包括个人计算机,网络教育统考《计算机应用基础》多媒体技术模拟题(二)...
  2. spring boot 整合security
  3. go mod引用git仓库中的包:拉取存放在gitee中的package
  4. 阿里云ubuntu软件包镜像源地址
  5. CentOS7.X中使用yum安装nginx完全教程
  6. 使用azkaban调度spark任务
  7. qt creator:一款能够在windows/linux/mac系统上开发c程序的IDE
  8. scala reduceLeft和reduceRight执行分析
  9. Python爬虫开发:fake_useragent库伪造User-Agent
  10. python3列表推导式