动物识别系统实验报告.docx
- 文档编号:26006164
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:67
- 大小:141.33KB
动物识别系统实验报告.docx
《动物识别系统实验报告.docx》由会员分享,可在线阅读,更多相关《动物识别系统实验报告.docx(67页珍藏版)》请在冰豆网上搜索。
动物识别系统实验报告
动物识别系统实验报告
题目:
基于web的动物识别系统
院系:
信科院计算机系
日期:
2013年10月31日
1.实验目的及开发工具..................................................................12.实验原理......................................................................................13.数据库设计..................................................................................1
3.1数据库设计思想..................................................................1
3.2数据库系统结构..................................................................24.系统设计......................................................................................2
4.1系统首页...............................................................................3
4.2动物识别..............................................................................4
4.3添加规则..............................................................................6
4.4删除规则............................................................................105.实验心得.....................................................................................116.实验总结.....................................................................................11
1.实验目的及开发工具
编写一个基于WEB的动物识别系统,实现对动物的识别,理解产生式表达式;熟悉产生式系统的基本过程;熟悉ASP.NET与数据库结合。
本系统采用的开发工具为SQLserver2005,VisualStudio2008,程序设计语言为ASP.NET2.0,C#。
2.实验原理
产生式系统是把一组产生式放在一起,并让它们相互配合,协同作用,一个产生式的结论可以供另一个产生式作为已知事实使用,以求得问题的解决。
产生式的基本形式为PQ或者ifPthenQ
产生式规则分析如下:
动物识别系统的部分推理网络
3.数据库设计
3.1数据库设计思想
通过以上分析,我们建立了一个DBai数据库,其中存放两张表,分别是条件表Condition和规则表principle。
1
表1:
条件表Condition
项目名数据结构说明
ConditionIDInt编号,主键
ConditionContentVarchar(20)条件内容
表2:
规则表principle
项目名数据结构说明
RuleIDInt编号,主键
Condition1Int条件1编号
Condition2Int条件2编号
Condition3Int条件3编号
Condition4Int条件4编号
Condition5Int条件5编号
ConclusionInt结论
3.2数据库系统结构
条件表是一个用来存放与求解问题有关的各种当前信息的数据结构。
例如问题的初始状态、输入的事实、推理得到的中间结论和最终结论。
规则表是一个用来存放与求解问题有关的所有规则的集合,也称为知识库。
它包含了问题从初始状态转换成目标状态所需要的所有变换规则。
在推理过程中,当规则表中某条规则的前提可以和综合数据库中的已知事实相匹配时,该规则被激活。
由它推出的结论将被作为新的事实放入数据库,称为后面推理的已知事实。
所以数据库系统结构如下:
数据库
条件表规则表
4.系统设计
本系统分为三个功能模块,分别是动物识别、添加规则、删除规则。
系统
2
实现如下,其中distinguish.aspx实现动物识别;Addrule.aspx实现添加规则;Deleterule.aspx实现删除规则;主页实现为main.aspx和top.aspx;连接数据库调用DBFunction.cs。
4.1系统首页
在浏览器上显示动物识别系统的首页如下图所示。
3
连接数据库的关键代码:
publicDBFunction(DBTransactionTypeTranType){
stringConstring=
"server=;uid=dbai;pwd=syssys;database=dbai";
_con=newSqlConnection(Constring);
try{
_con.Open();
_cmd=_con.CreateCommand();
if(TranType==DBTransactionType.WithTran){
_tran=_con.BeginTransaction();
_cmd.Transaction=_tran;
}
}
catch(Exceptionex){
throwex;
}
}
4.2动物识别
单击“动物识别”按钮,页面跳转后可根据条件对动物进行判别,比如选择
“有羽毛”,点击“查询”按钮,则系统显示识别的结果,如下图所示:
主要源代码:
using(DBFunctionDBfun=newDBFunction(DBTransactionType.NonTran))
4
{//查询在这次用户选择的所有的规则能够得到的所有的规则,将这些规则的所
有结论都放到congditions中,作为其他的条件。
dt=DBfun.ExecforQuery("select*fromprinciple");
intl=5;
inttest=0;
while(l>0){
for(i=0;i
stringsql_condition_chosen=find_sql(chosen);
DataTabledt_conditions=
DBfun.ExecforQuery(sql_condition_chosen);
boolcheck=true;
for(intj=1;j<6;j++){
if(dt.Rows[i][j].ToString()=="")
{}
else{
if(!
is_in(dt.Rows[i][j].ToString().Trim(),dt_conditions))
{
check=false;
break;
}
}
}
if(check==true&&rule_is_chosen[i]==false{
test=1;
stringto_exe;
DataTabledt_temp=null;
result+="从";
to_exe=string.Format("select*fromConditiona,Conditionb
wherea.ConditionID dt_temp=DBfun.ExecforQuery(to_exe); intnumber=dt_temp.Rows.Count; condition_is_chosen[number]=true; rule_is_chosen[i]=true; to_exe=string.Format(@"selectConditionContentfromConditionwhere ConditionID='{0}'or ConditionID='{1}'orConditionID='{2}'orConditionID='{3}'orConditionID='{4}'",dt.Rows[i]["Condition1"].ToString(), dt.Rows[i]["Condition2"].ToString(), dt.Rows[i]["Condition3"].ToString(), 5 dt.Rows[i]["Condition4"].ToString(), dt.Rows[i]["Condition5"].ToString()); dt_temp=DBfun.ExecforQuery(to_exe); for(intn=0;n if(n result+= dt_temp.Rows[n]["ConditionContent"].ToString()+"和"; } else{ result+= dt_temp.Rows[n]["ConditionContent"].ToString(); } } result+="可以看出,该动物"; to_exe=string.Format(@"selectConditionContentfromConditionwhereConditionID='{0}'",dt.Rows[i]["Conclusion"].ToString()); dt_temp=DBfun.ExecforQuery(to_exe); result+=dt_temp.Rows[0]["ConditionContent"].ToString()+ "\n\n"; rule_is_chosen[i]=true; stringconclu=string.Format("select*fromConditionwhere ConditionID<'{0}'",dt.Rows[i]["Conclusion"].ToString()); dt_temp=DBfun.ExecforQuery(conclu); intnumber_of_rule=dt_temp.Rows.Count; chosen[number_of_rule]=number_of_rule; } } l--; } if(test==0) result+="从所选条件不能推出任意结论"; } this.TextBox1.Text=result; } 4.3添加规则 如果对规则库进行添加,可单击“添加规则”按钮,输入需要添加的条件和 结论即可。 6 主要源代码: //添加已经在数据库中的项 for(intj=0;j if(this.CheckBoxList1.Items[j].Selected==true){condition[numbers]=Int32.Parse(this.CheckBoxList1.Items[j].Value.ToString()); numbers++; } } //添加用户自己输入的项 using(DBFunctionDBfun=newDBFunction(DBTransactionType.WithTran)){//如果用户填写了这个空并且这个条件不在数据库中,就将它添加到数据库中。 if(this.TextBox1.Text.ToString()! =""&&! check(this.TextBox1.Text.ToString(),DBfun)) { insert=string.Format("insertinto Condition(ConditionContent)values('{0}')",this.TextBox1.Text.ToString()); DBfun.ExecForNonQuery(insert); } if(this.TextBox2.Text.ToString()! ="" &&! check(this.TextBox2.Text.ToString(),DBfun)){ insert=string.Format("insertinto Condition(ConditionContent)values('{0}')",this.TextBox2.Text.ToString()); 7 DBfun.ExecForNonQuery(insert); } if(this.TextBox3.Text.ToString()! =""&&! check(this.TextBox3.Text.ToString(),DBfun)){ insert=string.Format("insertintoCondition(ConditionContent)values('{0}')",this.TextBox3.Text.ToString()); DBfun.ExecForNonQuery(insert); } if(this.TextBox4.Text.ToString()! =""&&! check(this.TextBox4.Text.ToString(),DBfun)){ insert=string.Format("insertintoCondition(ConditionContent)values('{0}')",this.TextBox4.Text.ToString()); DBfun.ExecForNonQuery(insert); } if(this.TextBox5.Text.ToString()! =""&&! check(this.TextBox5.Text.ToString(),DBfun)){ insert=string.Format("insertintoCondition(ConditionContent)values('{0}')",this.TextBox5.Text.ToString()); DBfun.ExecForNonQuery(insert); } if(this.TextBox6.Text.ToString()! =""&&! check(this.TextBox6.Text.ToString(),DBfun)){ insert=string.Format("insertintoCondition(ConditionContent)values('{0}')",this.TextBox6.Text.ToString()); DBfun.ExecForNonQuery(insert); } if(this.TextBox1.Text.ToString()! =""){ insert=string.Format("selectConditionIDfromConditionwhere ConditionContent='{0}'",this.TextBox1.Text.ToString()); dt=DBfun.ExecforQuery(insert); condition[numbers]= Int32.Parse(dt.Rows[0]["ConditionID"].ToString()); numbers++; } if(this.TextBox2.Text.ToString()! =""){ insert=string.Format("selectConditionIDfromConditionwhere ConditionContent='{0}'",this.TextBox2.Text.ToString()); dt=DBfun.ExecforQuery(insert); condition[numbers]= Int32.Parse(dt.Rows[0]["ConditionID"].ToString()); numbers++; } if(this.TextBox3.Text.ToString()! =""){ insert=string.Format("selectConditionIDfromConditionwhere 8 ConditionContent='{0}'",this.TextBox3.Text.ToString()); dt=DBfun.ExecforQuery(insert); condition[numbers]= Int32.Parse(dt.Rows[0]["ConditionID"].ToString()); numbers++; } if(this.TextBox4.Text.ToString()! =""){ insert=string.Format("selectConditionIDfromConditionwhere ConditionContent='{0}'",this.TextBox4.Text.ToString()); dt=DBfun.ExecforQuery(insert); condition[numbers]= Int32.Parse(dt.Rows[0]["ConditionID"].ToString()); numbers++; } if(this.TextBox5.Text.ToString()! =""){ insert=string.Format("selectConditionIDfromConditionwhere ConditionContent='{0}'",this.TextBox5.Text.ToString()); dt=DBfun.ExecforQuery(insert); condition[numbers]= Int32.Parse(dt.Rows[0]["ConditionID"].ToString()); numbers++; } intposition=-1; if(numbers>0&&numbers<=5){ stringsql_insert="insertintoprinciple(Condition1,Condition2,Condition3,Condition4,Condition5,Conclusion)values("; while(condition[position+1]! =-1){ sql_insert+=condition[position+1].ToString()+","; position++; } for(intpos=position+1;pos<5;pos++){ sql_insert+="NULL,"; } insert=string.Format("selectConditionIDfromConditionwhere ConditionContent='{0}'",this.TextBox6.Text.ToString()); dt=DBfun.ExecforQuery(insert); sql_insert+=Int32.Parse(dt.Rows[0]["ConditionID"].ToString())+ ")"; DBfun.ExecForNonQuery(sql_insert); this.Literal1.Text="操作成功"; } 9 elseif(numbers>5){ this.Literal1.Text="不能选择超过5个条件"; } elseif(numbers==0){ this.Literal1.Text="至少要有一个前件"; } } } else{ this.Literal1.Text="不能没有结论"; } } 4.4删除规则 单击“删除规则”按钮,可实现对规则的删除操作。 主要源代码: protectedvoidButton1_Click(objectsender,EventArgse) { inta=this.GridView1.SelectedIndex; intrule_id_to_deletel; using(DBFunctionDbfun=newDBFunction(DBTransactionType.NonTran)) 10 { DataTabledt=Dbfun.ExecforQuery("select*fromprinciple"); rule_id_to_deletel=Convert.ToInt32(dt.Rows[a]["RuleID"].ToString()); Dbfun.ExecForNonQuery(string.Format("deletefromprinciplewhere RuleID='{0}'",rule_id_to_deletel)); } Response.Redirect("Deleterule.aspx"); } 5.实验心得 甘庆晴: 通过本次实验,我掌握了人工智能的产生式表达式,熟悉产生式系统的基本过程。 小组分工后我主
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 动物 识别 系统 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)