2015-2016 学年第 2 学期
《手机移动开发技术》课程大作业报告
课题名称:
智能聊天机器人
班级
计 133-2
学号
201358503230
姓名
田 庆
课题实现采用的工具(如为其他,请填写具体工具名称)
□Eclipse
□其他_______________________________________________
课题完成时间:___________________________________
对应提交的电子文档打包文件名称(准确填写):
__________________________________________________________
==============以下部分为教师填写区,请勿填写==============
成绩评定:
软件运行______软件基本功能_______软件提高功能______ 软件部分成绩________
文档结构______文档理论___________文档撰写__________ 文档部分成绩________
总成绩_____________
备注
目录
一、系统分析..................................................................................错误!未定义书签。
二、系统设计..................................................................................错误!未定义书签。
三、具有代表性模块的程序..........................................................错误!未定义书签。
四、经验总结..................................................................................错误!未定义书签。
五、自主创新比例说明..................................................................错误!未定义书签。
六、附件..........................................................................................错误!未定义书签。
一、系统分析
(1)功能设计
聊天机器人不仅是可以智能对话,而且能够做很多事情,帮你查询公交线
路、解释英语单词、翻译英文句子,推荐美食,提示天气信息等。这些都是人们
可以使用它完成的事情。
提供这样智能信息,实际上很难的事情,涉及到对用户要求的语意理解,
以及对于海量信息的精确搜索和分析。这一方面我们短时间内无法做到这一点,
但是很有幸我们能够调用第三方公司提供的在开放网络上的 API。
(2)模型需求分析
虽然聊天机器人是一个很小的应用,但是仍然需要对其模型进行详细的分析。
如下图 3.1 所示:
图 1.1 聊天机器人模型需求分析
(3)创建类图
图 1.2 聊天机器人系统类图
(4)活动图
图 1.3 聊天机器人活动图
二、系统设计
(1)系统架构设计
丰富而又可扩展性的视图(View),可以用来构建应用程序,它包括列表
(ListView),文本框(EditText),按钮(Button)。资源管理器(Resource Manager)提供
非代码资源的访问,如本地字符串,图形,和布局文件(LayoutFiles)。活动管理
器(Activity Manager)用来管理应用程序的生命周期,并提供常用的导航回退功能。
(2)用户界面设计
移动平台软件的界面友好是一个比较重要的方面,界面的友好是用户使用
软件的先决条件。
聊天机器人的界面设计模仿 QQ 手机聊天软件的界面样式和设计,为聊天者
显示头像和语句,并在语句下放置气泡类型的背景图片,并将用户发送和接收的
信息以左右的类型区分开。
(3)聊天机器人详细设计
1.布局文件
聊天机器人的页面目前只有一个,使用 LinearLayout 布局,使用一个 ListView
承载聊天信息列表,页面下方是一个文字输入框和一个发送按钮。
图 2.1 聊天机器人主界面
另外,为了实现聊天语句发送和接收的区分,ListView 里的项目里也定义了
布局文件。
图 2.2 接收消息项布局
图 2.3 发送消息项布局
其中图 2.2 表示用户接收的信息,图 2.3 表示用户向机器人发送的信息。所有的
信息被记录时,需要保存一个 flag 字段,来表示它属于哪种类型的消息。
2.主配置文件
由于这个应用需要调用远程网络的第三方 API,所以需要特别在
AndroidManifest.xml 文件中注册应用访问网络的权限,如下所示:
三、具有代表性模块的程序
网络通讯实现:
(1)HttpUtils
聊天机器人发送消息和接收消息都需要使用到 HTTP 协议,使用 Java 提供的
相关类,可以很方便的进行书写。
public class HttpUtils
{
private static final String URL = "http://www.tuling123.com/openapi/api";
private static final String API_KEY = "e1472c7a16ef0eaf682245602672d40a";
public static ChatMessage sendMessage(String msg)
{
.......
}
public static String doGet(String msg)
{
.........
}
private static String setParams(String msg)
{
String url = "";
try
{
url = URL + "?key=" + API_KEY + "&info="
+ URLEncoder.encode(msg, "UTF-8");
} catch (UnsupportedEncodingException e)
{
e.printStackTrace();
}
return url;
}
}
(2)ChatMessage
public class ChatMessage
{
private String name;
private String msg;
private Type type;
private Date date;
public ChatMessage(String msg, Type type, Date date)
{
super();
this.msg = msg;
this.type = type;
this.date = date;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getMsg()
{
return msg;
}
public void setMsg(String msg)
{
this.msg = msg;
}
public Type getType()
{
return type;
}
public void setType(Type type)