access 导入 txt sql语句_[内附完整源码和文档] 基于C#和Access的智能聊天机器人
一、軟件說明
1.1 功能說明
一個(gè)可以自動(dòng)回復(fù)的聊天機(jī)器人.
1.2 解決什么樣的實(shí)際問題
用于娛樂,解悶。
1.3 性能說明
軟件還存在一定的BUG,有待改進(jìn)。
1.4 程序類型說明
娛樂性應(yīng)用程序。
二、軟件設(shè)計(jì)
2.1 軟件整體結(jié)構(gòu)圖及模塊劃分
軟件的結(jié)構(gòu)只有一個(gè)聊天界面,分別有輸入框,顯示聊天信息框,發(fā)送按鈕和退出按鈕,導(dǎo)入詞庫按鈕和調(diào)教按鈕。
解決方案中,有5個(gè)類,其中:
”聊天機(jī)器人”類是主類,窗口顯示類
”DataBase”是連接數(shù)據(jù)的類,本程序用到的是access數(shù)據(jù)庫
“Iostreams”類是文件操作類,主要是讀取一個(gè)txt文件,用于導(dǎo)入詞庫
”Regugar”類是正則表達(dá)式品配類,用于品配聊天的問題
”Robot”類是一個(gè)機(jī)器人對(duì)象
Resources文件是用于存放圖片文件。
2.3 各模塊對(duì)應(yīng)的主要對(duì)象和方法
2.3.1 ”聊天機(jī)器人”類
主要屬性
private Robot A; //機(jī)器人對(duì)象
private string Ask; //發(fā)送信息
private string Answer; //返回信息
private int isTeaching; //調(diào)教模式
private Point mouseOff; //鼠標(biāo)移動(dòng)位置變量
private bool leftFlag; //標(biāo)簽是否為左鍵
private string FileName; //txt文件路徑
private Thread T1; //創(chuàng)建一個(gè)線程
主要方法
/發(fā)送按扭
private void button_sent_Click(object sender, EventArgs e)
{
///正常聊天狀態(tài)
if (isTeaching == 0)
{
Ask = this.richTextBox_sent.Text;
//設(shè)置為右對(duì)齊
this.richTextBox1_accept.SelectionAlignment = HorizontalAlignment.Right;
this.richTextBox1_accept.AppendText(Ask + “:主人 n”);
Answer = A.answer(Ask);
//設(shè)置為左對(duì)齊
this.richTextBox1_accept.SelectionAlignment = HorizontalAlignment.Left;
this.richTextBox1_accept.AppendText(" “+ A.name + “:” + Answer + “n”);
}
///調(diào)教機(jī)器人狀態(tài)
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;
}
//自動(dòng)滾動(dòng)到插入位置
this.richTextBox1_accept.ScrollToCaret();
//清空發(fā)送框
this.richTextBox_sent.Clear();
}
///導(dǎo)入詞庫
private void Openfile()
{
//導(dǎo)入詞庫
Iostreams.Import(FileName);
T1.Abort();
}
2.3.2 ”DataBase”類
//根據(jù)接收到的字符串返回?cái)?shù)據(jù)
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”);
///連接數(shù)據(jù)庫
conn.Open();
//執(zhí)行sql查詢
OleDbCommand com = new OleDbCommand(sql, conn);
OleDbDataReader reader = com.ExecuteReader();
//讀取查詢結(jié)果
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”類
//正則表達(dá)式品配
public static bool match(string a, string ask)
{
//簡(jiǎn)單的正則表達(dá)式
Regex re = new Regex(@"[sS]" + a + @"[sS]");
//品配成功則返回true,否則返回false
return re.IsMatch(ask);
}
2.3.5 ”Robot”類
//問答函數(shù)
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 數(shù)據(jù)庫設(shè)計(jì)或數(shù)據(jù)文件說明
數(shù)據(jù)庫設(shè)計(jì),只創(chuàng)建一個(gè)chatwords表,用于儲(chǔ)存ask語句和answer語句。
完整的源碼和詳細(xì)的文檔,上傳到了 WRITE-BUG技術(shù)共享平臺(tái) 上,需要的請(qǐng)自取:
https://www.write-bug.com/article/2851.html
總結(jié)
以上是生活随笔為你收集整理的access 导入 txt sql语句_[内附完整源码和文档] 基于C#和Access的智能聊天机器人的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android canvas_Andro
- 下一篇: matlab hsv提取s_Matlab