求助一道C#编程题

花满留香 2012-07-26 08:18:16
要求编写一个面向对象的机器人,满足下面功能
1.比如输入您好。。。可以有多种回答方式(输入自定义指令,机器人会跟你回答)
2.输入不能识别的。。。需要回答(对不起,听不懂之类的)
3.如果输入“别理我",机器人不再跟你交谈
4.如果输入”理我嘛",机器人继续跟你交谈
5.采用数据库存储数据
6.用到订阅事件,取消事件,随机函数,读数据库

--各位大侠表嫌弃分太少......

...全文
190 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
花满留香 2012-07-26
  • 打赏
  • 举报
回复
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;

namespace 面向对象机器人
{
public class TalkMessageEventArgs : EventArgs//存放事件的类
{
public readonly string Talking;
public TalkMessageEventArgs(string talking)
{
this.Talking = talking;
}
}
public class SendMessage//事件发送
{
public string talking;
public delegate void SendChangeHandler(object send, TalkMessageEventArgs talkmessage);//声明一个委托
public event SendChangeHandler SendChange;//声明一个事件
protected virtual void onSendChanged(TalkMessageEventArgs e)
{

SendChangeHandler handler = SendChange;
if (handler != null)
{
SendChange(handler,e);
}
}
public void Run()
{
if(talking=="别理我")
{
return;
}
if (talking == "理我嘛")
{
Console.WriteLine("%>_<%,您好,需要什么帮助嘛");
}
}
}

public class SubScribe//声明一个订阅者
{
public void MessageHasChanged(object theSendMessqge, TalkMessageEventArgs ti)
{
Console.WriteLine();
}
public void Subscribe(SendMessage theSendMessage)//实现委托功能
{
theSendMessage.SendChange += new SendMessage.SendChangeHandler(MessageHasChanged);
}
}
class Robert
{
private string Name;
public Robert(string name)
{
this.Name=name;

}
public void Greetgood()
{
Console.WriteLine("您好,请问需要什么帮助?");
}
public void Myself()
{
Console.WriteLine("我是联想小助手{0}",this.Name);
}
public void Talk(string str)
{
if(str.Contains("名字")||str.Contains("叫什么")||str.Contains("谁"))
{
Myself();
}
}
}
class Program
{
static void Main(string[] args)
{
string dataDir = AppDomain.CurrentDomain.BaseDirectory;
if (dataDir.EndsWith(@"\bin\Debug\")
|| dataDir.EndsWith(@"\bin\Release\"))
{
dataDir = System.IO.Directory.GetParent(dataDir).Parent.Parent.FullName;
AppDomain.CurrentDomain.SetData("DataDirectory", dataDir);
}

string name = "robert";
Robert robert = new Robert(name);
robert.Myself();
robert.Greetgood();
Console.WriteLine("");
string str = Console.ReadLine();
using (SqlConnection sqlconnection = new SqlConnection(@"Data Source=.\SQLEXPRESS;database=Robert;uid=sa;pwd=password"))
{
sqlconnection.Open();
//Console.WriteLine("连接成功");
using (SqlCommand sqlcommand = sqlconnection.CreateCommand())
{
sqlcommand.CommandText = "select * from table where str=@str ";
using (SqlDataReader sqldatareader = sqlcommand.ExecuteReader())
{
while (sqldatareader.Read())
{

}
}
}

}
Console.ReadKey();
}
}
}
各位高手帮忙看看,我写到这里然后就根本写不出来了
devmiao 2012-07-26
  • 打赏
  • 举报
回复
可以使用数据库把各种应答存起来。
查询的时候,对于同一个问题,随机取一个回答。
没有查询到,就提示听不懂。
可以使用ado.net哦。
  • 打赏
  • 举报
回复
那么,如果输入“皇上刁难风沙暗”机器回答“公主背诗幽怨多”,输入“如果有一天小燕子成为一个诗人”机器回答“我一点也不觉得奇怪”。
这个确实一个很有意思的,应该可以做出来,一步步构思、调试。
花满留香 2012-07-26
  • 打赏
  • 举报
回复
这没办法哦,就是全部融合一起的
续写经典 2012-07-26
  • 打赏
  • 举报
回复
不是吧!如果是一个单一的知识点,很正常。
楼主把整个项目都抛出来问,这...
Sheldon_Lou 2012-07-26
  • 打赏
  • 举报
回复
感觉单线程就OK了吧~~
二号匪 2012-07-26
  • 打赏
  • 举报
回复
应该有一个线程专门检测用户输入

检测到输入之后 根据输入的内容去匹配合适的回答

各种假设
各种匹配算法
htynkn 2012-07-26
  • 打赏
  • 举报
回复
这个问题太宽泛了吧...

110,549

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧