⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 formmain.cs

📁 用C#开发的录井油气识别专家系统
💻 CS
📖 第 1 页 / 共 5 页
字号:
			


		}
		private void FieldnameSetting()
		{
			XmlElement root=SettingXmlDoc["YQExpert_SETTING"];
			
			root=root["综合推理结果存放"];
			XmlElement ele;
			
			ele=root["模板解释结论"];
			if(ele!=null)
				myExamDataSet.NAME_TEMPLATERESUTL_FIELDNAME=ele.InnerText;

			ele=root["匹配模板号"];
			if(ele!=null)
				myExamDataSet.NAME_TEMPLATERNUM_FIELDNAME=ele.InnerText;

			ele=root["匹配度"];
			if(ele!=null)
				myExamDataSet.NAME_TEMPLATER_MATCHDEGREE_FIELDNAME=ele.InnerText;


			ele=root["统计置信度1"];
			if(ele!=null)
				myExamDataSet.NAME_STATIS_RESULTCREDITSCORE1_FIELDNAME=ele.InnerText;

			ele=root["统计解释结论1"];
			if(ele!=null)
				myExamDataSet.NAME_STATIS_RESULTTYPE1_FIELDNAME=ele.InnerText;


			ele=root["统计置信度2"];
			if(ele!=null)
				myExamDataSet.NAME_STATIS_RESULTCREDITSCORE2_FIELDNAME=ele.InnerText;

			ele=root["统计解释结论2"];
			if(ele!=null)
				myExamDataSet.NAME_STATIS_RESULTTYPE2_FIELDNAME=ele.InnerText;



			ele=root["统计置信度3"];
			if(ele!=null)
				myExamDataSet.NAME_STATIS_RESULTCREDITSCORE3_FIELDNAME=ele.InnerText;

			ele=root["统计解释结论3"];
			if(ele!=null)
				myExamDataSet.NAME_STATIS_RESULTTYPE3_FIELDNAME=ele.InnerText;







			root=SettingXmlDoc["YQExpert_SETTING"];
			
			root=root["新定义的字段名称"];
						
			ele=root["结论"];
			if(ele!=null)
				myResultDataSet.NAME_RESULT_FIELDNAME=ele.InnerText;

			ele=root["可信等级"];
			if(ele!=null)
				myResultDataSet.NAME_CREDITLEVEL_FIELDNAME=ele.InnerText;
			
			ele=root["总计"];
			if(ele!=null)
				myResultDataSet.NAME_CREDITSCORE_FIELDNAME=ele.InnerText;






		
	


		}


		private void DatabaseAutoOpen()
		{
			
			
			XmlElement root=SettingXmlDoc["YQExpert_SETTING"];
			
			root=root["自动打开文件"];
			XmlElement ele;
			ele=root["标准样品数据库"];
			if(ele!=null)
			{
				if(Convert.ToBoolean(ele.Attributes["auto"].Value))
				{
					cridg.Open(ele.InnerText);
				}
			}
			ele=root["待测样品数据库"];
			if(ele!=null)
			{
				if(Convert.ToBoolean(ele.Attributes["auto"].Value))
				{

					examdg.Open(ele.InnerText);
							
				}
			}
			ele=root["模板数据库"];
			if(ele!=null)
			{
				if(Convert.ToBoolean(ele.Attributes["auto"].Value))
				{

					templatedg.Open(ele.InnerText);
				}
			}
					

			return;
			


		}
		private DataTable FieldDomainSetting()
		{
			
			
			XmlElement root=SettingXmlDoc["YQExpert_SETTING"];
			
			root=root["参数取值范围"];
			DataTable fieldsetting=new DataTable("参数设置");
			fieldsetting.Columns.Add("NAME",typeof(string));
			fieldsetting.Columns.Add("MIN",typeof(float));
			fieldsetting.Columns.Add("MAX",typeof(float));
			fieldsetting.Columns.Add("USEIT",typeof(bool));
			fieldsetting.Columns.Add("WEIGHT",typeof(float));
			fieldsetting.Columns.Add("abrev",typeof(string));



			
			foreach(XmlNode node in root.ChildNodes)
			{
				try
				{
					DataRow row=fieldsetting.NewRow();
					//row["NAME"]=node.Attributes["NAME"]
					foreach(XmlAttribute attri in node.Attributes)
					{
						if(fieldsetting.Columns[attri.Name]!=null)
							row[attri.Name]=attri.Value;
					
					}
					foreach(XmlNode profile in node.ChildNodes)
					{
						if(fieldsetting.Columns[profile.Name]!=null)
							row[profile.Name]=profile.InnerText;
					
					}
					fieldsetting.Rows.Add(row);
				}
				catch(Exception ex)
				{
					ShowMessage(ex.Message);
				}
			}

			return fieldsetting;
			


		}//end function

		public string GetReportXsl(string type)
		{
			
		
			XmlElement root=SettingXmlDoc["YQExpert_SETTING"];
			
			root=root["报告样式文件"];
			if(root==null)
				return "";
			
			root=root[type];
			if(root==null)
				return "";
			
			return root.InnerText;


		}//end function

		private string FuzzyKbfSuperSetting()
		{
			
			
			XmlElement root=SettingXmlDoc["YQExpert_SETTING"];
			
			root=root["模糊推理设置"];
			root=root["特殊知识库"];
			return root.InnerText;


		}//end function
		private DataTable FuzzyKbfResultTypeSetting()
		{
			
			
			XmlElement root=SettingXmlDoc["YQExpert_SETTING"];
			
			root=root["模糊推理设置"];
			root=root["分类结果知识库"];
			DataTable temptalbe=new DataTable("模糊分类结果知识库");
			temptalbe.Columns.Add("类别",typeof(string));
			temptalbe.Columns.Add("知识库路径",typeof(string));
			
			
			foreach(XmlNode node in root.ChildNodes)
			{
				
				
				//row["NAME"]=node.Attributes["NAME"]
				
				
				DataRow row=temptalbe.NewRow();
				row["类别"]=node.Name;
				row["知识库路径"]=node.InnerText;
					
				
				temptalbe.Rows.Add(row);
			}

			return temptalbe;
			


		}//end function

		//编辑用户配置文件
		private void menuSettingEdit_Click(object sender, System.EventArgs e1)
		{
			
			
			Process myProcess = new Process();
            
			try
			{
				// Get the path that stores user documents.
				string myDocumentsPath = 
					Environment.GetFolderPath(Environment.SpecialFolder.Personal);

				myProcess.StartInfo.FileName =this.SettingFile;
				myProcess.StartInfo.Verb = "Edit";
				myProcess.StartInfo.CreateNoWindow = false;
				myProcess.Start();
			}
			catch (Win32Exception ex)
			{
				ShowMessage(ex.Message);

				
			}
		}

		private void reportprint(object sender, System.EventArgs e)
		{

			myDataSet aDS=CurrentDataSet;
			if(aDS==null)
				return;



			Access.ApplicationClass access=new Access.ApplicationClass();
			access.Application.Visible=true;
			//access.OpenAccessProject(CriSet.cnnexpert.DataSource,false);

			access.OpenCurrentDatabase(aDS.cnnexpert.DataSource,false);
			
			
			//Access.AccessObject report =access.CurrentProject.AllReports["数据报表"];
			//access.DoCmd.OpenReport(report.Name,Access.AcView.acViewPreview,null,null);
			//	access.Application.Quit(Access.AcQuitOption.acQuitSaveNone);



			
			

		
		}

		private void simpleprint_Click(object sender, System.EventArgs ev)
		{
			myDataSet aDS=CurrentDataSet;
			if(aDS==null)
				return;


			
			Access.ApplicationClass access=new Access.ApplicationClass();
			if(access==null)
				return;
			try
			{
				access.Application.Visible=false;
			
				access.OpenCurrentDatabase(aDS.cnnexpert.DataSource,false);
				Access.AccessObject aQuery=access.CurrentData.AllQueries[myDataSet.NAME_ALL_DIRECTPRINT_TABLENAME];
				
			
			
				//Access.AccessObject report =access.CurrentProject.AllReports["直接输出的报表"];
				if(aQuery!=null)
					access.DoCmd.OpenQuery(aQuery.Name,Access.AcView.acViewPreview,Access.AcOpenDataMode.acReadOnly);
				access.Application.Visible=true;
			


				//access.Application.Quit(Access.AcQuitOption.acQuitSaveNone);
			}
			catch(Exception ex)
			{

				ShowMessage(ex.ToString());
				access.Application.Quit(Access.AcQuitOption.acQuitSaveNone);

			}
		
		}
		private void SaveAutoOpenDatabase()
		{
					
			XmlElement root=SettingXmlDoc["YQExpert_SETTING"];
			
			root=root["自动打开文件"];
			XmlElement ele;


			if(CriSet!=null && CriSet.cnnexpert!=null)
			{
				
				ele=root["标准样品数据库"];
				if(ele!=null)
				{
					ele.InnerText=CriSet.cnnexpert.DataSource;
				}
			}
			if(ExamSet!=null && CriSet.cnnexpert!=null)
			{
				
				ele=root["待测样品数据库"];
				if(ele!=null)
				{
					ele.InnerText=ExamSet.cnnexpert.DataSource;
				}
			}
			if(TemplateSet!=null && CriSet.cnnexpert!=null)
			{
				
				ele=root["模板数据库"];
				if(ele!=null)
				{
					ele.InnerText=TemplateSet.cnnexpert.DataSource;
				}
			}

			SettingXmlDoc.Save(SettingFile);


			return;
			


		}

		private void SaveSetting_Click(object sender, System.EventArgs ev)
		{
			

			SaveAutoOpenDatabase();



		}

		/// <summary>
		/// 当前显示的数据集
		/// </summary>
		public myDataSet CurrentDataSet
		{
			get
			{
				TabPage curPage=this.tabControl1.SelectedTab;
				
				foreach(Control ctl in curPage.Controls)
				{
					bool b=ctl is myGridCtrl;
					if(b)
						return ((myGridCtrl)ctl).CurDataSet;
				};
				return null;
			}
		}
		
		public bool FuzzyReasonSingleSample(DataRow rowSample,DataRow rowResult )
		{
						
			
			#region 准备数据结构
			/*countTable 为一个数据表,为每一个油气类型的知识库生成一个记录,内容为五类结果数据的参数数目; 
			 *  creditTable 为一个数据表,为每一个油气类型的知识库生成一个记录,内容为五个置信度;
			 * */
			
			

			System.Data.DataTable creditTable=new DataTable("creditTable");
			System.Data.DataTable countTable=new DataTable("countTable");

			foreach(string paratype in new string[]{"dizi","qice","dihua","cejing","zhonghe"})
			{
				creditTable.Columns.Add(paratype,typeof(Double));
				countTable.Columns.Add(paratype,typeof(int));
			}
			countTable.Columns.Add("resultname",typeof(string));
			creditTable.Columns.Add("resultname",typeof(string));
			
	
			#endregion

			int countKBF=0;;
			
//每次循环对应一个知识库,生成一个creditTable的纪录和一个countTable的纪录
			do
			{
				string s=FuzzyOpenKBF(countKBF);
				if(s==null)
					break;
				if(s.Length<=0)
					break;

				MSScriptControl.ScriptControl script=new MSScriptControl.ScriptControl();
				
				DataRow creditRow=creditTable.NewRow();
				creditRow["resultname"]=FuzzyKBFResultName(countKBF);

				DataRow countRow=countTable.NewRow();
				countRow["resultname"]=FuzzyKBFResultName(countKBF);

			
			

				#region 准备script 代码


				script.Language="VbScript";
			
				//将待测样本数据的各项数据 放入 script中
				FuzzySetParams(script,rowSample);

				try
				{
					script.AddCode(s);
				}
				catch(System.Runtime.InteropServices.COMException e)
				{
					ShowMessage("失败原因:"+e.Message,"知识库装载异常----->"+FuzzyKBFResultName(countKBF));
					return false;
				}
				
				try
				{
					script.AddCode("dim Credit\n"+
						"dim Count\n"
						);
				}
				catch(System.Runtime.InteropServices.COMException e)
				{
					ShowMessage(e.Message+"\n"+"使用知识库中已存在的函数或变量!","缺省标识符----->"+FuzzyKBFResultName(countKBF));
					
				}
				
				
				
				try	
				{
					script.AddCode(	"public sub Add(a)\n"+
						"Credit=Credit+a\n"   +
						"Count=Count+1\n"+
						"end sub\n"
						);
				}
				catch(System.Runtime.InteropServices.COMException e)
				{
					ShowMessage(e.Message+"\n"+"使用知识库中已存在的函数或变量!","缺省标识符----->"+FuzzyKBFResultName(countKBF));
					
				}
				
				try
				{
					script.AddCode("public sub ClearCredit2Count()\n"+
						"Count=0\n"+
						"Credit=0\n"+
						"end sub\n"
						);
				}
				catch(System.Runtime.InteropServices.COMException e)
				{
					ShowMessage(e.Message+"\n"+"使用知识库中已存在的函数或变量!","缺省标识符----->"+FuzzyKBFResultName(countKBF));
																				 
				}
			
				
				try
				{
					script.AddCode("public function Valid(b)\n"+
						"Valid=not (VarType(b)=0)\n"+
						"end function\n"
						);
				}
				catch(System.Runtime.InteropServices.COMException e)
				{
					ShowMessage(e.Message+"\n"+"使用知识库中已存在的函数或变量!","缺省标识符----->"+FuzzyKBFResultName(countKBF));
																				 
				}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -