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-bug.com/article/2851.html
總結
以上是生活随笔為你收集整理的access 导入 txt sql语句_[内附完整源码和文档] 基于C#和Access的智能聊天机器人的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android canvas_Andro
- 下一篇: matlab hsv提取s_Matlab