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

📄 frmroomstate.cs

📁 采用C#和SQL Server 2000开发 功能比较全面的酒店管理系统
💻 CS
📖 第 1 页 / 共 2 页
字号:
			dtData.Rows.Clear();
			DataBase db = new DataBase();
			DataView dvFloor = db.RunSelectSQL( "select 楼层编号 from 楼层信息" );
			string strSQL = "";
			for ( int i = 0; i < dvFloor.Count; i ++ )
			{
				strSQL = "select 楼层编号,状态 from 客房信息 ";
				string strTmp = "";
				if ( strFilter.Trim() != "" )
				{
					strTmp = " and " + strFilter;
				}
				strSQL += " where 楼层编号 = ";
				strSQL += dvFloor[ i ][ 0 ].ToString().Trim() + strTmp;
				// 查询出每个楼层的房间信息
				DataView dvTmp = db.RunSelectSQL( strSQL );
				// 新建数据行
				DataRow dr = dtData.NewRow();
				// 将楼层房间信息添加到数据行中
				dr[ 0 ] = dvFloor[ i ][ 0 ].ToString().Trim() + "/F";
				for ( int j = 0; j < iMaxRoomNumber; j ++ )
				{
					// 设置房间的状态信息
					if ( j < dvTmp.Count )
					{
						dr[ j + 1 ] = GetStateNumber( dvTmp[ j ][ "状态" ].ToString() );
					}
					else
					{
						dr[ j + 1 ] = "6";
					}
				}
				dtData.Rows.Add( dr );
			}
		}

		private String GetStateNumber( string state )
		{
			switch ( state.Trim() )
			{
				case "将到" :
					return "0";
				case "将离" :
					return "1";
					// break;
				case "空房" :
					return "2";
					// break;
				case "维修" :
					return "3";
					// break;
				case "住房" :
					return "4";
					// break;
				case "自用" :
					return "5";
					// break;
				default :
					return "";
			}
		}

		public string GetStateText( string state )
		{
			switch ( state.Trim() )
			{
				case "0" :
					return "将到";
					// break;
				case "1" :
					return "将离";
					// break;
				case "2" :
					return "空房";
					// break;
				case "3" :
					return "维修";
					// break;
				case "4" :
					return "住房";
					// break;
				case "5" :
					return "自用";
					// break;
				default :
					return "";
			}
		}

		private void dgdList_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
		{
			DateTime tm = DateTime.Now;
			if ( !bClose )
				return;
			if ( dgdList.CurrentCell.ColumnNumber == 0 )
				return;
			// 判断连词单击时间是否小于双击的时间间隔
			if ( tm < gridMouseDownTime.AddMilliseconds( SystemInformation.DoubleClickTime ) )
			{
				DoReserve();
				this.Close();
			}
			gridMouseDownTime = tm;
		}

		private void InitMaps()
		{
			bitMaps = new ArrayList();
			
			// 读取位图
			Stream strm = GetType().Assembly.GetManifestResourceStream( "酒店管理系统.房态之将到.bmp" );
			bitMaps.Add( new Bitmap( strm ) );
			strm = GetType().Assembly.GetManifestResourceStream( "酒店管理系统.房态之将离.bmp" );
			bitMaps.Add( new Bitmap( strm ) );
			strm = GetType().Assembly.GetManifestResourceStream( "酒店管理系统.房态之空房.bmp" );
			bitMaps.Add( new Bitmap( strm ) );
			strm = GetType().Assembly.GetManifestResourceStream( "酒店管理系统.房态之维修房.bmp" );
			bitMaps.Add( new Bitmap( strm ) );
			strm = GetType().Assembly.GetManifestResourceStream( "酒店管理系统.房态之住房.bmp" );
			bitMaps.Add( new Bitmap( strm ) );
			strm = GetType().Assembly.GetManifestResourceStream( "酒店管理系统.房态之自用房" );
			bitMaps.Add( new Bitmap( strm ) );
			strm = GetType().Assembly.GetManifestResourceStream( "酒店管理系统.房态之空.bmp" );
			bitMaps.Add( new Bitmap( strm ) );
		}

		private void InitDataTable()
		{
			if ( dtData != null )
			{
				return;
			}
			string strTmp = "";
			if ( strFilter.Trim() != "" )
				strTmp = " where " + strFilter;
			// 查询各楼层的房间数
			DataBase db = new DataBase();
			string strSQL = "select count(*) as total from 客房信息 ";
			strSQL += strTmp + " group by 楼层编号";
			DataView dv = db.RunSelectSQL( strSQL );
			if ( dv.Count != 0 )
			{
				// 获得房间最多的那一层的房间数
				for( int i = 0 ; i < dv.Count; i ++ )
				{
					if ( iMaxRoomNumber < Int32.Parse( dv[ i ][ 0].ToString() ) )
					{
						iMaxRoomNumber = Int32.Parse( dv[ i ][ 0 ].ToString() );
					}
				}
			}
			strSQL = "select 客房编号,楼层编号 from 客房信息 " + strTmp;
			dtRoom = db.RunSelectSQL(strSQL).Table;
			db.Dispose();
			dtData = new DataTable();
			dtData.Columns.Add( "楼层" );
			for ( int j = 0; j < iMaxRoomNumber; j ++ )
			{
				dtData.Columns.Add( j.ToString() );
			}
		}

		private void SetDataGrid()
		{
			LoadData();
			// 定义一个DataGrid表样式
			DataGridTableStyle ts = new DataGridTableStyle();
			DataGridTextBoxColumn aCol;
			int numCols = dtData.Columns.Count;
			for ( int i = 0; i < numCols; i ++ )
			{
				if ( i == 0 )
				{
					aCol = new DataGridTextBoxColumn();
					aCol.MappingName = dtData.Columns[ i ].ColumnName;
					aCol.HeaderText = dtData.Columns[ i ].ColumnName;
					aCol.NullText = "";
					aCol.ReadOnly = true;
					aCol.Width = 32;
					ts.GridColumnStyles.Add( aCol );
				}
				else
				{
					// 添加DataGridImageCell
					DataGridImageCell tbc = new DataGridImageCell();
					tbc.MappingName = dtData.Columns[ i ].ColumnName;
					tbc.HeaderText = dtData.Columns[ i ].ColumnName;
					tbc.TheImages = bitMaps;
					tbc.Width = 32;
					ts.GridColumnStyles.Add( tbc );
					 
				}
			}
			ts.AlternatingBackColor = Color.LightGray;
			ts.AllowSorting = false;
			ts.MappingName = dtData.TableName;
			ts.PreferredRowHeight = 32;
			dgdList.TableStyles .Clear();
			dgdList.TableStyles.Add( ts );
			DataView dv = dtData.DefaultView;
			dv.AllowNew = false;
			dv.AllowDelete = false;
			dv.AllowEdit = false;
			// 设置数据源
			dgdList.DataSource = dv;
		}

		private void dgdList_CurrentCellChanged(object sender, System.EventArgs e)
		{
			// int iRow, iCol;
			int iRow = dgdList.CurrentCell.RowNumber;
			int iCol = dgdList.CurrentCell.ColumnNumber;
			if ( iCol != 0 )
			{
				DataView dv = dtRoom.Copy().DefaultView;
				dv.RowFilter = "楼层编号" + dgdList[ iRow , 0].ToString().Split( '/' )[ 0 ].ToString();
				try
				{
					strRoomCode = dv[ iCol - 1 ][ 0 ].ToString().Trim();
				}
				catch ( Exception ex )
				{
					MessageBox.Show( ex.ToString() );
					lblRoom.Text = "";
					return;
				}
				// 根据选择的房间设置RadioButton
				switch ( Convert.ToString( dgdList[ iRow , iCol ] ) )
				{
					case "0" :
						rbnArrive.Checked = true;
						break;
					case "1" :
						rbnLeave.Checked = true;
						break;
					case "2" :
						rbnEmpty.Checked = true;
						break;
					case "3" :
						rbnRepair.Checked = true;
						break;
					case "4" :
						rbnFull.Checked = true;
						break;
					case "5" :
						rbnSelf.Checked = true;
						break;
					case "6" :
						lblRoom.Text = "";
						break;
				}
			}
			if ( dgdList.CurrentCell.ColumnNumber == 0 )
				return;
			DataGridImageCell cs = ( DataGridImageCell )dgdList.TableStyles[ 0 ].GridColumnStyles[ dgdList.CurrentCell.ColumnNumber ];
			// cs的属性
			cs.BRect = true;
			cs.RowNumber = dgdList.CurrentCell.RowNumber;
			cs.PaintRect();		
		}

		private void btnUpate_Click(object sender, System.EventArgs e)
		{
			LoadData();
			DataView dv = dtData.DefaultView;
			dv.AllowEdit = false;
			dv.AllowDelete = false;
			dv.AllowNew = false;
			// 设置数据源
			dgdList.DataSource = dv;
		}

		private void btnSet_Click(object sender, System.EventArgs e)
		{
			int iRow = dgdList.CurrentCell.RowNumber;
			int iCol = dgdList.CurrentCell.ColumnNumber;
			string strState = dgdList[ iRow, iCol ].ToString();
			string strTmpState;
			if ( iCol != 0 )
			{
				if ( rbnArrive.Checked )
					strTmpState = "0";
				else if ( rbnEmpty.Checked )
					strTmpState = "2";
				else if ( rbnFull.Checked )
					strTmpState = "4";
				else if ( rbnLeave.Checked )
					strTmpState = "1";
				else if ( rbnRepair.Checked )
					strTmpState = "3";
				else if ( rbnSelf.Checked )
					strTmpState = "5";
				else
					strTmpState = "";
			}
			else
				return;
			// 如果状态已经更新
			if ( strTmpState != strState  )
			{
				DataBase db = new DataBase();
				DataView dv = dtRoom.Copy().DefaultView;
				dv.RowFilter = "楼层编号" + Convert.ToString( dgdList[ iRow , 0 ] ).Split( '/' )[ 0 ].ToString();
				string strSQL = " update 客房信息 set 状态='";
				strSQL += GetStateText( strTmpState ) + "'";
				strSQL += "where 客房编号='";
				strSQL += dv[ iCol - 1 ][ 0 ].ToString().Trim() + "'";
				db.RunDelOrInsSQL( strSQL );
				db.Dispose();
			}
			LoadData();
			DataView dvTmp = dtData.DefaultView;
			dvTmp.AllowNew = false;
			dvTmp.AllowEdit = false;
			dvTmp.AllowDelete = false;
			// 设置数据源
			dgdList.DataSource = dtData.DefaultView;
		}

		private void DoReserve()
		{
			int iRow = dgdList.CurrentCell.RowNumber;
			int iCol = dgdList.CurrentCell.ColumnNumber;
			if ( dgdList[ iRow, iCol ].ToString() == "2" )
			{
				// 空房则可以预订
				DataBase db = new DataBase();
				DataView dv = dtRoom.Copy().DefaultView;
				dv.RowFilter = "楼层编号" + Convert.ToString( dgdList[ iRow, 0 ] ).Split( '/')[ 0 ].ToString();
				strRoomCode = dv[ iCol - 1 ][ 0 ].ToString().Trim();
			}
			else
			{
				MessageBox.Show( "选择的房间不是空房间!" );
			}
		}

		private void dgdList_DoubleClick(object sender, System.EventArgs e)
		{
			if ( !bClose )
				return;
			if ( dgdList.CurrentCell.ColumnNumber == 0 )
				return;
			DoReserve();
		}


	}
}

⌨️ 快捷键说明

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