• 大小: 259KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-11
  • 语言: C/C++
  • 标签: 专家系统  C++  

资源简介

C++写得专家系统,包括了推理机、规则解释、知识库更新。

资源截图

代码片段和文件信息

#include“Fruit.h“
#include
#include
#include
using std::set;
using std::ifstream;
using std::ofstream;

string FruitDao::file=“fruit.s“;
vector Fruit::_property_names;
DB *DB::_db; 

ostream& operator <<(ostream& outconst Fruit& f)
{
out< out<<‘ ‘;
out< out<<‘\n‘;
return out;
}

istream& operator >>(istream& inFruit& f)
{
in>>f._name;
in>>f._property;
return in;
}


bool FruitDao::save(const string& fileconst FruitDbase& db)
{ //指定的保存文件
ofstream ofile(file);
for(int i=0;i ofile<
ofile<<‘\n‘;

for(int i=0;i ofile<<(*(db[i]));

ofile.close();
return true;
}

bool FruitDao::load(const string& fileFruitDbase& db)
{//领域专家可以指定加载目录
ifstream ifile(file);
Fruit::_property_names.clear();

for(int i=0;i {
string s;
ifile>>s;
Fruit::_property_names.push_back(s);
}

while(ifile)
{
SmartPtr sp(new Fruit);
ifile>>(*sp);
db.push_back(sp);
}

ifile.close();
return true;
}

const FruitDbase FruitDao::find(const Property& propconst FruitDbase& db)
{//依据属性进行查找
FruitDbase re;
for(int i=0;i if(db[i]->_property==prop)
re.push_back(db[i]);
return re;
}

int FruitDao::insert(const Fruit& fFruitDbase& db)
{//插入一中规则
db.push_back(SmartPtr(new Fruit(f)));
return 1;
}

int FruitDao::del(const string& nameFruitDbase& db)
{//水果名进行删除
int c=0;
for(int i=db.size()-1;i>=0;--i)
{
if(db[i]->_name==name)
{
db.erase(db.begin()+i);
++c;
}
}

return c;
}

int FruitDao::del(const Property& propFruitDbase& db)
{//依据属性删除一组水果,返回删除个数
int c=0;
for(int i=db.size()-1;i>=0;--i)
{
if(db[i]->_property==prop)
{
db.erase(db.begin()+i);
++c;
}
}

return c;
}

const FruitDbase FruitDao::find(int prop_bitbool hasconst FruitDbase& db)
{ //依据属性进行查找
FruitDbase re;
for(int i=0;i if(db[i]->_property.at(prop_bit)==has)
re.push_back(db[i]);
return re;
}

int FruitDao::del(int prop_bitbool hasFruitDbase& db)
{//依据属性删除一组水果,返回删除个数
int c=0;
for(int i=db.size()-1;i>=0;--i)
{
if(db[i]->_property.at(prop_bit)==has)
{
db.erase(db.begin()+i);
++c;
}
}
return c;
}

const FruitDbase FruitDao::find(const string& nameconst FruitDbase& db)
{//依据属性进行查找
FruitDbase re;
for(int i=0;i if(db[i]->_name==name)
re.push_back(db[i]);
return re;
}

vector FruitDao::getFruitNameFromDB(const FruitDbase& db)
{
set v;
for(int i=0;i v.insert(db[i]->_name);
vector vs(v.begin()v.end());
return vs;
}

const FruitDbase FruitDao::find(int prop_bit[]bool has[]int numconst FruitDbase& db)
{ //依据特定组合属性进行查找
FruitDbase re;
assert(num>0 && num<=Constant::BITSIZE);

for(int i=0;i {

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-05-14 11:46  ExpertsEngine\
     目录           0  2014-05-14 11:46  ExpertsEngine\ExpertsEngine\
     文件        4070  2014-05-14 09:24  ExpertsEngine\ExpertsEngine\ExpertsEngine.vcxproj
     文件        1239  2014-05-14 09:24  ExpertsEngine\ExpertsEngine\ExpertsEngine.vcxproj.filters
     文件         143  2014-05-12 09:45  ExpertsEngine\ExpertsEngine\ExpertsEngine.vcxproj.user
     文件        3609  2014-05-14 11:29  ExpertsEngine\ExpertsEngine\Fruit.cpp
     文件        2603  2014-05-14 11:31  ExpertsEngine\ExpertsEngine\Fruit.h
     文件         871  2014-05-13 22:31  ExpertsEngine\ExpertsEngine\SmartPtr.h
     文件        1423  2014-05-14 11:36  ExpertsEngine\ExpertsEngine\fruit.s
     文件        4663  2014-05-14 11:37  ExpertsEngine\ExpertsEngine\main.cpp
     文件         906  2014-05-12 09:45  ExpertsEngine\ExpertsEngine.sln
     文件       17408  2014-05-14 11:45  ExpertsEngine\ExpertsEngine.suo
     目录           0  2014-05-14 11:46  ExpertsEngine\Release\
     文件       41472  2014-05-14 11:45  ExpertsEngine\Release\ExpertsEngine.exe
     文件        1423  2014-05-14 11:36  ExpertsEngine\Release\fruit.s
     文件       15872  2014-05-12 10:50  ExpertsEngine\Thumbs.db
     文件        1238  2014-05-14 11:44  ExpertsEngine\rule.txt
     文件         672  2014-05-14 11:44  ExpertsEngine\test.txt
     文件     4482056  2009-12-06 20:39  ExpertsEngine\水果关系图.bmp

评论

共有 条评论