access 导入 txt sql语句-ag凯发k8国际
一、软件说明
1.1 功能说明
一个可以自动回复的聊天机器人.
1.2 解决什么样的实际问题
用于娱乐,解闷。
1.3 性能说明
软件还存在一定的bug,有待改进。
1.4 程序类型说明
娱乐性应用程序。
二、软件设计
2.1 软件整体结构图及模块划分
软件的结构只有一个聊天界面,分别有输入框,显示聊天信息框,发送按钮和退出按钮,导入词库按钮和调教按钮。
ag凯发k8国际的解决方案中,有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
总结
以上是ag凯发k8国际为你收集整理的access 导入 txt sql语句_[内附完整源码和文档] 基于c#和access的智能聊天机器人的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: android canvas_andro
- 下一篇: matlab hsv提取s_matlab