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

📄 mainform.cs

📁 Cluster validation program including Dunn s index, Davies-Bouldin Index and Scat-Dis index.
💻 CS
📖 第 1 页 / 共 3 页
字号:
			string[] anArray	=	new string[values.Count];

			for ( int i = 0; i < values.Count; i ++ )
				anArray[i]	=	values[i].ToString();

			return	anArray;
		}

		/// <summary>
		/// ListView甫 Initialize茄促.
		/// </summary>
		/// <param name="bSet"></param>
		/// <param name="LView"></param>
		public void InitListView( bool bSet, ListView LView){
			if ( bSet == true ){
				LView.Clear();
				LView.FullRowSelect = true;
				LView.GridLines = true;
				LView.TabIndex = 0;
				LView.View = System.Windows.Forms.View.Details;
			}
			else{
				LView.Clear();
				LView.FullRowSelect = false;
				LView.GridLines = false;
				LView.TabIndex = 0;
				LView.View = System.Windows.Forms.View.Details;
			}
		}

		/// <summary>
		/// 拌魂窍扁 !!!
		/// </summary>
		/// <param name="sender"></param>
		/// <param name="e"></param>
		public bool LoadData(Excel.Worksheet worksheet, string fileName, ProgressBar progressbar,out ClusterLibrary.Data mData) {
			// 肺漠 函荐
			int i = 2;
			int nPointDim = 1;
			int nSets	=	(int) this.numericUpDownSetNumber.Value ;
			

			// 霉 扼牢阑 佬绰促. 捞锭 null 捞 唱坷搁 拌魂 窍瘤 臼绊 场辰促.
			Excel.Range range = worksheet.get_Range("A"+i.ToString(), "IV" + i.ToString());
			System.Array myvalues = (System.Array)range.Cells.Value;
			if ( myvalues.GetValue(1,1) == null ){
				mData = null;
				return false;
			}

			progressbar.PerformStep();

			// Data甫 积己
			mData = new ClusterLibrary.Data ( nSets );

			progressbar.PerformStep();

			// Point甫 唱鸥郴绰 Dimension狼 肮荐甫 历厘
			for ( ; myvalues.GetValue(1,nPointDim) != null ; nPointDim ++ );

			// Dimension狼 肮荐焊促 nSets啊 歹 目档 拌魂 窍瘤 臼绊 场辰促.
			// TODO: 辟荤茄 俊矾 皋技瘤甫 焊郴芭唱 拌魂 倾侩 何盒俊辑 捞 何盒篮 鞘磐傅 且 荐 乐霸 秦具等促.
			if ( nSets + 1 >= nPointDim ) return false;

			// data甫 烙矫肺 历厘且 array 函荐 急攫
			int[] temp_set_info = new int[nSets];
			double[] temp_point_info = new double[nPointDim - nSets - 2];

			
			progressbar.PerformStep();

			// Data甫 皋葛府俊 棵赴促.
			while (true) {
				// Cluster Info甸阑 免仿茄促.
				try{
					for ( int j = 2; j < 2 + nSets ; j ++ ){	
						temp_set_info[j - 2] = (System.Int32.Parse(myvalues.GetValue(1,j).ToString()) );
					}
					// Point狼 Dimension Info甸阑 免仿茄促.
					for ( int j = 2 + nSets; j < nPointDim ; j ++ ){
						temp_point_info[j - 2 - nSets] = ( System.Double.Parse(myvalues.GetValue(1,j).ToString()) );
					}
				}
				catch( System.Exception e ){
					Console.WriteLine( e.StackTrace );
					Console.WriteLine( e.ToString() );
					MessageBox.Show( "Set 肮荐甫 沥犬洒 汲沥秦 林绞矫夸. Set 肮荐啊 嘎瘤 臼嚼聪促." );
					mData.ClearAll();
					mData = null;
					System.GC.Collect();
					return false;
				}
				i++;
				mData.AddPoint( temp_set_info, temp_point_info );

				range = worksheet.get_Range("A"+i.ToString(), "IV" + i.ToString());
				myvalues = (System.Array)range.Cells.Value;
				if ( myvalues.GetValue(1,1) == null ){
					break;
				}
			}

			return true;
		}

		public ArrayList CalculateGDI ( ClusterLibrary.Data TotalData, ProgressBar ValidateProgressBar ){
			ArrayList	GDIResults;
			ArrayList	GDIResultsSet =	new ArrayList();
			ClusterLibrary.Set	aSet;

			ValidateProgressBar.Step = 100 / TotalData.Count();

			for ( int i = 0; i < TotalData.Count(); i ++ ){
				ValidateProgressBar.PerformStep();
				aSet		=	TotalData[i];
				GDIResults	=	ClusterLibrary.GDICore.ValidityIndex( aSet ); 
				GDIResultsSet.Add ( GDIResults );
			}
			
			return GDIResultsSet;
		}

		public ArrayList CalculateDBI ( ClusterLibrary.Data TotalData, ProgressBar ValidateProgressBar ){
			int q;
			int t;
			double result = 0.0;
			ArrayList	DBIResultsSet	=	new ArrayList();
			ArrayList	DBIResults;
			string		aTreeNodeString;
			ClusterLibrary.Set aSet; 

			foreach ( TreeNode aTreeNode in this.treeViewDBI.Nodes ){
				DBIResults	=	new ArrayList();
				aTreeNodeString	=	aTreeNode.Text;
				DBIResults.Add( aTreeNodeString );
				string[] qAndt = aTreeNodeString.Split(',');
				q	=	System.Convert.ToInt32 ( qAndt[0] );
				t	=	System.Convert.ToInt32 ( qAndt[1] );

				for ( int j = 0; j < TotalData.Count(); j ++ ) {
					aSet = (ClusterLibrary.Set)TotalData[j];
					result	=	ClusterLibrary.DBICore.calculateDBI( aSet, q, t );
					DBIResults.Add( result );
				}
				DBIResultsSet.Add( DBIResults );
			}

			return DBIResultsSet;
		}

		/// <summary>
		/// SDI 蔼阑 拌魂窍绰 窃荐
		/// </summary>
		/// <param name="TotalData"></param>
		/// <param name="ValidateProgressBar"></param>
		/// <returns></returns>
		public ArrayList CalculateSDI ( ClusterLibrary.Data TotalData, ProgressBar ValidateProgressBar ){
			// Set狼 肮荐
			int nSets	=	(int)this.numericUpDownSetNumber.Value;
			// SDI 搬苞啊 历厘瞪 ArrayList
			ArrayList	SDIResults	=	new ArrayList();
			// SDI 拌魂 葛碘捞 甸绢乐绰 Class
			ClusterLibrary.SDICore SDI	=	new ClusterLibrary.SDICore();
			double SDIResult = 0.0;
			
			ValidateProgressBar.PerformStep();

			// 努矾胶磐 荐啊 啊厘 农霸 唱床柳 Set阑 措涝茄促
			SDI.SetA( TotalData[nSets - 1] );
						
			ValidateProgressBar.PerformStep();
			
			// 阿 Set甸狼 SDI甫 拌魂茄促
			for ( int j = 0; j < nSets; j ++ ){
				SDIResult = SDI.SDI( TotalData[j]);
				SDIResults.Add( SDIResult );
			}

			// 搬苞甫 府畔茄促
			return SDIResults;
		}

		public void DIsplayGDIResults ( ArrayList GDIResultsSet, ProgressBar ValidateProgressBar ){
			ValidateProgressBar.PerformStep();
			
			int nSets	=	(int)this.numericUpDownSetNumber.Value;
			this.listViewGDIResult.Columns.Add( " (inter, intra ) ", 100, System.Windows.Forms.HorizontalAlignment.Center );

			ValidateProgressBar.PerformStep();

			for ( int i = 1; i <= nSets ; i ++ ){
				ColumnHeader headColumn = (ColumnHeader)this.listViewRawData.Columns[i].Clone();
				this.listViewGDIResult.Columns.Add( headColumn );
			}
			
			
			ValidateProgressBar.PerformStep();

			for ( int i = 0; i < 18; i ++ ){
				string[] strArray	=	new string[nSets + 1];
				strArray[0] = String.Format("( {0}, {1} )", (i%6) + 1 , (i/6) + 1 );
				for ( int j = 0; j < nSets; j ++ ){
					strArray[j+1] = ((ArrayList)GDIResultsSet[j])[i].ToString();
				}
				this.listViewGDIResult.Items.Add( new ListViewItem( strArray ) );
			}

			ValidateProgressBar.PerformStep();
		}

		public void DIsplayDBIResults ( ArrayList DBIResultsSet, ProgressBar ValidateProgressBar ){
			ValidateProgressBar.PerformStep();
			
			int nSets	=	(int)this.numericUpDownSetNumber.Value;
			// Column狼 肮荐甫 沥窃 ( 霉锅掳 临 ), Column Header甫 厘侥

			ValidateProgressBar.PerformStep();

			this.listViewDBIResult.Columns.Add( " Q and T ", 100, System.Windows.Forms.HorizontalAlignment.Center );

			ValidateProgressBar.PerformStep();

			for ( int i = 1; i <= nSets ; i ++ ){
				ColumnHeader headColumn = (ColumnHeader)this.listViewRawData.Columns[i].Clone();
				this.listViewDBIResult.Columns.Add( headColumn );
			}

			ValidateProgressBar.PerformStep();

			foreach ( ArrayList DBIResults	in DBIResultsSet ){
				string[]	strArray	=	this.ConvertToStringArray( DBIResults );
				this.listViewDBIResult.Items.Add( new ListViewItem( strArray ) );
			}

			ValidateProgressBar.PerformStep();

		}

		public void DIsplaySDIResults ( ArrayList SDIResults, ProgressBar ValidateProgressBar ){
			ValidateProgressBar.PerformStep();
			
			int nSets	=	(int)this.numericUpDownSetNumber.Value;
			for ( int i = 1; i <= nSets ; i ++ ){
				ColumnHeader headColumn = (ColumnHeader)this.listViewRawData.Columns[i].Clone();
				this.listViewSDIResult.Columns.Add( headColumn );
			}
			string[]	strArray	=	this.ConvertToStringArray( SDIResults );
			this.listViewSDIResult.Items.Add( new ListViewItem( strArray ) );
		}

		public void ClearResultListView ( ProgressBar ValidateProgressBar ){
			// 搬苞甫 钎矫窍绰 list viwe甫 檬扁拳 茄促
			ValidateProgressBar.Step = 30;
			this.InitListView( true, this.listViewDBIResult );
			ValidateProgressBar.PerformStep();
			this.InitListView( true, this.listViewGDIResult );
			ValidateProgressBar.PerformStep();
			this.InitListView( true, this.listViewSDIResult );
			ValidateProgressBar.PerformStep();
			ValidateProgressBar.Step = 3;
		}

		private void buttonSave_Click(object sender, System.EventArgs e) {
			SaveForm aSaveForm	=	new SaveForm( 
				this, 
				this.textBoxOpenFile.Text.TrimEnd('.','x','l','s'), 
				this.checkBoxGDI.Checked,
				this.checkBoxDBI.Checked,
				this.checkBoxSDI.Checked );
			aSaveForm.ShowDialog();
		}

		public void SaveFiles( string GDISaveFileName, string DBISaveFileName, string SDISaveFileName, ProgressBar progressbar ){
			if ( this.checkBoxGDI.Checked == true )
				this.SaveResultSheet( this.listViewGDIResult, GDISaveFileName, progressbar );
			if ( this.checkBoxDBI.Checked == true )
				this.SaveResultSheet( this.listViewDBIResult, DBISaveFileName, progressbar );
			if ( this.checkBoxSDI.Checked == true )
				this.SaveResultSheet( this.listViewSDIResult, SDISaveFileName, progressbar );
		}

		private void SaveResultSheet ( ListView listView, string fileName, ProgressBar progressbar ){

			progressbar.PerformStep();
			try{
				if (this.objExcel == null )
					return;
				Excel.Workbooks workbooks = this.objExcel.Workbooks;
				Excel._Workbook workbook = workbooks.Add( Excel.XlWBATemplate.xlWBATWorksheet );
				Excel.Sheets	sheets	= workbook.Worksheets;
				Excel._Worksheet worksheet = (Excel._Worksheet) sheets.get_Item(1);
				if (worksheet == null ){
					MessageBox.Show("Error: worksheet == null");
				}
			    
				progressbar.PerformStep();
				
				Excel.Range range1 = worksheet.get_Range("A1", "IV1");
				if (range1 == null){
					MessageBox.Show("Error: range == null");
				}


				// ListView ColumnHeader甫 Excel俊 持绰促.
				int columnHeader_Count	=	listView.Columns.Count;
				progressbar.Maximum		=	progressbar.Maximum + columnHeader_Count;
				for ( int j = 1; j <= columnHeader_Count ; j ++ ){
					range1.Cells.set_Item(1, j, listView.Columns[j - 1].Text );
					progressbar.PerformStep();
				}

				// ListView狼 Item阑 Excel俊 持绰促
				int item_Count;
				ListViewItem item;
				int column_Count = listView.Items.Count;
				progressbar.Maximum		=	progressbar.Maximum + column_Count;

				progressbar.PerformStep();
				
				for (int i = 1; i <= listView.Items.Count ; i++){
					progressbar.PerformStep();
					item = listView.Items[i - 1];
					item_Count = item.SubItems.Count;
					progressbar.Maximum		=	progressbar.Maximum + item_Count;
					for ( int j = 1; j <= item.SubItems.Count ; j ++){
						progressbar.PerformStep();
						range1.Cells.set_Item(i + 1, j,item.SubItems[j - 1].Text);
					}
				}
				
				try{
					// Excel 郴侩阑 拳老俊 历厘茄促
					workbook.Close(true, fileName, false);
					progressbar.PerformStep();
					workbooks.Close();
					progressbar.PerformStep();
				}
				catch( System.Exception e ){
					System.Windows.Forms.MessageBox.Show( " 历厘阑 秒家窍看嚼聪促" );
					return;
				}
			}
			catch( System.Exception e ){
				System.Windows.Forms.MessageBox.Show ( " 促澜苞 鞍篮 俊矾啊 惯积窍咯 历厘捞 角菩窍看嚼聪促.\n" + e.ToString());
				return;
			}
			// 历厘捞 场车促绰 皋技瘤甫 焊牢促
			System.Windows.Forms.MessageBox.Show (this, fileName + "甫 历厘窍看嚼聪促" );
		}
	}
}

⌨️ 快捷键说明

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