失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > access 导入 txt sql语句_[内附完整源码和文档] 基于C#和Access的智能聊天机器人

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

时间:2023-06-22 22:57:23

相关推荐

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

一、软件说明

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-/article/2851.html

如果觉得《access 导入 txt sql语句_[内附完整源码和文档] 基于C#和Access的智能聊天机器人》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。