RoomStatus.cs
上传用户:kuorong
上传日期:2013-04-03
资源大小:240k
文件大小:21k
源码类别:

酒店行业

开发平台:

Java

  1. using System;
  2. using System.Drawing;
  3. using System.Collections;
  4. using System.ComponentModel;
  5. using System.Windows.Forms;
  6. using System.Data;
  7. using System.Data.SqlClient;
  8. using System.Reflection;
  9. namespace 酒店管理系统
  10. {
  11. /// <summary>
  12. /// RoomStatus 的摘要说明。
  13. /// </summary>
  14. public class RoomStatus : System.Windows.Forms.Form
  15. {
  16. private DataTable roomTable;//一个空的4行16列的表
  17. private DataTable statusTable=new DataTable();//保存客房信息
  18. private int formType=0;//确定窗体是用于显示房态还是选择房间,以及由哪个窗体调用选择房间
  19. private System.Windows.Forms.GroupBox groupBox1;
  20. private System.Windows.Forms.DataGrid dataGrid1;
  21. private System.Windows.Forms.ImageList imageList1;
  22. private System.Windows.Forms.GroupBox groupBox2;
  23. private System.Windows.Forms.GroupBox groupBox3;
  24. private System.Windows.Forms.Button btnRefresh;
  25. private System.Windows.Forms.RadioButton rb1;
  26. private System.Windows.Forms.RadioButton rb2;
  27. private System.Windows.Forms.RadioButton rb3;
  28. private System.Windows.Forms.RadioButton rb4;
  29. private System.Windows.Forms.RadioButton rb5;
  30. private System.Windows.Forms.RadioButton rb6;
  31. private System.Windows.Forms.Button btnModify;
  32. private System.Windows.Forms.Label label1;
  33. private System.Windows.Forms.TextBox txt1;
  34. private System.Windows.Forms.Label label2;
  35. private System.Windows.Forms.ComboBox cmb1;
  36. private System.ComponentModel.IContainer components;
  37. public RoomStatus(int useType)
  38. {
  39. //
  40. // Windows 窗体设计器支持所必需的
  41. //
  42. InitializeComponent();
  43. //
  44. // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
  45. //
  46. formType=useType;//由构造函数参数确定是否为双击选择房间而用
  47. //formType=0代表正常房态图显示,1表示由客房预定窗体调用,2表示由客房入住窗体调用
  48. }
  49. /// <summary>
  50. /// 清理所有正在使用的资源。
  51. /// </summary>
  52. protected override void Dispose( bool disposing )
  53. {
  54. if( disposing )
  55. {
  56. if(components != null)
  57. {
  58. components.Dispose();
  59. }
  60. }
  61. base.Dispose( disposing );
  62. }
  63. #region Windows 窗体设计器生成的代码
  64. /// <summary>
  65. /// 设计器支持所需的方法 - 不要使用代码编辑器修改
  66. /// 此方法的内容。
  67. /// </summary>
  68. private void InitializeComponent()
  69. {
  70. this.components = new System.ComponentModel.Container();
  71. System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(RoomStatus));
  72. this.groupBox1 = new System.Windows.Forms.GroupBox();
  73. this.dataGrid1 = new System.Windows.Forms.DataGrid();
  74. this.imageList1 = new System.Windows.Forms.ImageList(this.components);
  75. this.groupBox2 = new System.Windows.Forms.GroupBox();
  76. this.cmb1 = new System.Windows.Forms.ComboBox();
  77. this.label1 = new System.Windows.Forms.Label();
  78. this.txt1 = new System.Windows.Forms.TextBox();
  79. this.groupBox3 = new System.Windows.Forms.GroupBox();
  80. this.rb1 = new System.Windows.Forms.RadioButton();
  81. this.rb2 = new System.Windows.Forms.RadioButton();
  82. this.rb3 = new System.Windows.Forms.RadioButton();
  83. this.rb4 = new System.Windows.Forms.RadioButton();
  84. this.rb5 = new System.Windows.Forms.RadioButton();
  85. this.rb6 = new System.Windows.Forms.RadioButton();
  86. this.btnRefresh = new System.Windows.Forms.Button();
  87. this.btnModify = new System.Windows.Forms.Button();
  88. this.label2 = new System.Windows.Forms.Label();
  89. this.groupBox1.SuspendLayout();
  90. ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();
  91. this.groupBox2.SuspendLayout();
  92. this.groupBox3.SuspendLayout();
  93. this.SuspendLayout();
  94. // 
  95. // groupBox1
  96. // 
  97. this.groupBox1.Controls.Add(this.dataGrid1);
  98. this.groupBox1.Location = new System.Drawing.Point(144, 8);
  99. this.groupBox1.Name = "groupBox1";
  100. this.groupBox1.Size = new System.Drawing.Size(576, 400);
  101. this.groupBox1.TabIndex = 0;
  102. this.groupBox1.TabStop = false;
  103. this.groupBox1.Text = "房态显示";
  104. // 
  105. // dataGrid1
  106. // 
  107. this.dataGrid1.CaptionVisible = false;
  108. this.dataGrid1.ColumnHeadersVisible = false;
  109. this.dataGrid1.DataMember = "";
  110. this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
  111. this.dataGrid1.Location = new System.Drawing.Point(8, 24);
  112. this.dataGrid1.Name = "dataGrid1";
  113. this.dataGrid1.PreferredColumnWidth = 32;
  114. this.dataGrid1.PreferredRowHeight = 32;
  115. this.dataGrid1.ReadOnly = true;
  116. this.dataGrid1.RowHeadersVisible = false;
  117. this.dataGrid1.RowHeaderWidth = 32;
  118. this.dataGrid1.Size = new System.Drawing.Size(560, 368);
  119. this.dataGrid1.TabIndex = 0;
  120. this.dataGrid1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.dataGrid1_MouseUp);
  121. // 
  122. // imageList1
  123. // 
  124. this.imageList1.ImageSize = new System.Drawing.Size(32, 32);
  125. this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
  126. this.imageList1.TransparentColor = System.Drawing.Color.Transparent;
  127. // 
  128. // groupBox2
  129. // 
  130. this.groupBox2.Controls.Add(this.cmb1);
  131. this.groupBox2.Controls.Add(this.label1);
  132. this.groupBox2.Controls.Add(this.txt1);
  133. this.groupBox2.Controls.Add(this.groupBox3);
  134. this.groupBox2.Controls.Add(this.btnRefresh);
  135. this.groupBox2.Controls.Add(this.btnModify);
  136. this.groupBox2.Controls.Add(this.label2);
  137. this.groupBox2.Location = new System.Drawing.Point(0, 8);
  138. this.groupBox2.Name = "groupBox2";
  139. this.groupBox2.Size = new System.Drawing.Size(144, 400);
  140. this.groupBox2.TabIndex = 1;
  141. this.groupBox2.TabStop = false;
  142. this.groupBox2.Text = "控制区";
  143. // 
  144. // cmb1
  145. // 
  146. this.cmb1.Location = new System.Drawing.Point(40, 72);
  147. this.cmb1.Name = "cmb1";
  148. this.cmb1.Size = new System.Drawing.Size(96, 20);
  149. this.cmb1.TabIndex = 7;
  150. this.cmb1.SelectionChangeCommitted += new System.EventHandler(this.cmb1_SelectionChangeCommitted);
  151. // 
  152. // label1
  153. // 
  154. this.label1.Location = new System.Drawing.Point(8, 50);
  155. this.label1.Name = "label1";
  156. this.label1.Size = new System.Drawing.Size(31, 14);
  157. this.label1.TabIndex = 6;
  158. this.label1.Text = "房号";
  159. // 
  160. // txt1
  161. // 
  162. this.txt1.Location = new System.Drawing.Point(40, 48);
  163. this.txt1.Name = "txt1";
  164. this.txt1.ReadOnly = true;
  165. this.txt1.Size = new System.Drawing.Size(96, 21);
  166. this.txt1.TabIndex = 5;
  167. this.txt1.Text = "";
  168. this.txt1.DoubleClick += new System.EventHandler(this.txt1_DoubleClick);
  169. // 
  170. // groupBox3
  171. // 
  172. this.groupBox3.Controls.Add(this.rb1);
  173. this.groupBox3.Controls.Add(this.rb2);
  174. this.groupBox3.Controls.Add(this.rb3);
  175. this.groupBox3.Controls.Add(this.rb4);
  176. this.groupBox3.Controls.Add(this.rb5);
  177. this.groupBox3.Controls.Add(this.rb6);
  178. this.groupBox3.Location = new System.Drawing.Point(8, 96);
  179. this.groupBox3.Name = "groupBox3";
  180. this.groupBox3.Size = new System.Drawing.Size(128, 272);
  181. this.groupBox3.TabIndex = 4;
  182. this.groupBox3.TabStop = false;
  183. this.groupBox3.Text = "房态选择";
  184. // 
  185. // rb1
  186. // 
  187. this.rb1.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
  188. this.rb1.ImageIndex = 2;
  189. this.rb1.ImageList = this.imageList1;
  190. this.rb1.Location = new System.Drawing.Point(24, 24);
  191. this.rb1.Name = "rb1";
  192. this.rb1.Size = new System.Drawing.Size(84, 32);
  193. this.rb1.TabIndex = 3;
  194. this.rb1.Text = "空房";
  195. // 
  196. // rb2
  197. // 
  198. this.rb2.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
  199. this.rb2.ImageIndex = 4;
  200. this.rb2.ImageList = this.imageList1;
  201. this.rb2.Location = new System.Drawing.Point(24, 64);
  202. this.rb2.Name = "rb2";
  203. this.rb2.Size = new System.Drawing.Size(84, 32);
  204. this.rb2.TabIndex = 3;
  205. this.rb2.Text = "住房";
  206. // 
  207. // rb3
  208. // 
  209. this.rb3.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
  210. this.rb3.ImageIndex = 5;
  211. this.rb3.ImageList = this.imageList1;
  212. this.rb3.Location = new System.Drawing.Point(24, 104);
  213. this.rb3.Name = "rb3";
  214. this.rb3.Size = new System.Drawing.Size(84, 32);
  215. this.rb3.TabIndex = 3;
  216. this.rb3.Text = "自用";
  217. // 
  218. // rb4
  219. // 
  220. this.rb4.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
  221. this.rb4.ImageIndex = 3;
  222. this.rb4.ImageList = this.imageList1;
  223. this.rb4.Location = new System.Drawing.Point(24, 144);
  224. this.rb4.Name = "rb4";
  225. this.rb4.Size = new System.Drawing.Size(84, 32);
  226. this.rb4.TabIndex = 3;
  227. this.rb4.Text = "维修";
  228. // 
  229. // rb5
  230. // 
  231. this.rb5.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
  232. this.rb5.ImageIndex = 0;
  233. this.rb5.ImageList = this.imageList1;
  234. this.rb5.Location = new System.Drawing.Point(24, 184);
  235. this.rb5.Name = "rb5";
  236. this.rb5.Size = new System.Drawing.Size(84, 32);
  237. this.rb5.TabIndex = 3;
  238. this.rb5.Text = "将到";
  239. // 
  240. // rb6
  241. // 
  242. this.rb6.ImageAlign = System.Drawing.ContentAlignment.MiddleRight;
  243. this.rb6.ImageIndex = 1;
  244. this.rb6.ImageList = this.imageList1;
  245. this.rb6.Location = new System.Drawing.Point(24, 224);
  246. this.rb6.Name = "rb6";
  247. this.rb6.Size = new System.Drawing.Size(84, 32);
  248. this.rb6.TabIndex = 3;
  249. this.rb6.Text = "将离";
  250. // 
  251. // btnRefresh
  252. // 
  253. this.btnRefresh.Location = new System.Drawing.Point(24, 16);
  254. this.btnRefresh.Name = "btnRefresh";
  255. this.btnRefresh.Size = new System.Drawing.Size(96, 23);
  256. this.btnRefresh.TabIndex = 3;
  257. this.btnRefresh.Text = "刷新房态信息";
  258. this.btnRefresh.Click += new System.EventHandler(this.btnRefresh_Click);
  259. // 
  260. // btnModify
  261. // 
  262. this.btnModify.Location = new System.Drawing.Point(24, 372);
  263. this.btnModify.Name = "btnModify";
  264. this.btnModify.Size = new System.Drawing.Size(88, 23);
  265. this.btnModify.TabIndex = 3;
  266. this.btnModify.Text = "更改房间状态";
  267. this.btnModify.Click += new System.EventHandler(this.btnModify_Click);
  268. // 
  269. // label2
  270. // 
  271. this.label2.Location = new System.Drawing.Point(8, 75);
  272. this.label2.Name = "label2";
  273. this.label2.Size = new System.Drawing.Size(31, 14);
  274. this.label2.TabIndex = 6;
  275. this.label2.Text = "类型";
  276. // 
  277. // RoomStatus
  278. // 
  279. this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
  280. this.ClientSize = new System.Drawing.Size(720, 413);
  281. this.Controls.Add(this.groupBox2);
  282. this.Controls.Add(this.groupBox1);
  283. this.Name = "RoomStatus";
  284. this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
  285. this.Text = "房态管理";
  286. this.Load += new System.EventHandler(this.RoomStatus_Load);
  287. this.Activated += new System.EventHandler(this.RoomStatus_Activated);
  288. this.groupBox1.ResumeLayout(false);
  289. ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
  290. this.groupBox2.ResumeLayout(false);
  291. this.groupBox3.ResumeLayout(false);
  292. this.ResumeLayout(false);
  293. }
  294. #endregion
  295. //---------窗体初始化时的处理-------
  296. private void RoomStatus_Load(object sender, System.EventArgs e)
  297. {
  298. if(this.formType!=0)
  299. {
  300. groupBox1.Text+=" 双击左边的【房号】文本框选择房间";
  301. }
  302. dataGrid1.Paint+=new PaintEventHandler(dataGrid1_Paint);
  303. this.DataGridStateControl();
  304. this.AutoSizeGrid();
  305. this.RefreshStatus("select * from 客房信息");//读入所有类型房间的数据
  306. //读入所有客房的类型
  307. cmb1.Items.Clear();
  308. cmb1.Items.Add("全部");
  309. string strConn="workstation id=localhost;Integrated Security=SSPI;Database=hotelbook;";
  310. SqlConnection cn=new SqlConnection(strConn);
  311. cn.Open();
  312. SqlCommand cmd=cn.CreateCommand();
  313. cmd.CommandText="select distinct 类型名称 from 客房类型";
  314. SqlDataReader dr=cmd.ExecuteReader();
  315. while(dr.Read())
  316. {
  317. cmb1.Items.Add(dr.GetValue(0).ToString().Trim());
  318. }
  319. //焦点集中到【房号】文本框上
  320. txt1.Focus();
  321. }
  322. //----------设置dataGrid中的行宽度--------
  323. public void AutoSizeGrid() 
  324.   {   
  325. int numRows = ((DataTable)dataGrid1.DataSource).Rows.Count; //该dataGrid所连接的表的宽度 
  326. Graphics g = Graphics.FromHwnd(dataGrid1.Handle);  
  327. StringFormat sf = new StringFormat(StringFormat.GenericTypographic); 
  328. SizeF size; 
  329.  
  330. //由于DataGrid没有提供对DataGridRows[]的直接调用,因此我们使用一个反射(relection)来实现它
  331. //这个方法实际上取得dataGrid中行的集合,通过get_DataGridRows方法返回Rows的集合
  332. //并转化为一个System.Array对象 
  333. MethodInfo mi = dataGrid1.GetType().GetMethod("get_DataGridRows", 
  334.  
  335. BindingFlags.FlattenHierarchy | BindingFlags.IgnoreCase | BindingFlags.Instance 
  336.  
  337. | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static); 
  338.  
  339. System.Array dgra = (System.Array)mi.Invoke(dataGrid1,null); 
  340.  
  341. // 将其转换为ArrayList
  342. ArrayList DataGridRows = new ArrayList();  
  343. foreach (object dgrr in dgra)  
  344. {  
  345. if (dgrr.ToString().EndsWith("DataGridRelationshipRow")==true) 
  346. DataGridRows.Add(dgrr);  
  347.  
  348. //枚举dataGrid中的所有行 
  349. for (int i = 0; i < numRows; ++i) 
  350. {
  351. size = g.MeasureString(dataGrid1[i,1].ToString(),dataGrid1.Font,400,sf); 
  352. int h = Convert.ToInt32(32);//直接将每行的行高设置为40
  353. //用下面这行代码可以根据dataGrid中字体自动调整行高
  354. //int h = Convert.ToInt32(size.Height); 
  355. // 将定好的行高设置回dataGrid中 
  356. PropertyInfo pi = DataGridRows[i].GetType().GetProperty("Height");  
  357. pi.SetValue(DataGridRows[i],h,null);  
  358. }  
  359. g.Dispose();  
  360. }
  361. //----------设置一个16*4的表格,以显示房态图----------
  362. private void DataGridStateControl()
  363. {
  364. roomTable = new DataTable();
  365. for(int i=1;i<17;i++)//添加16列,以显示16个房间
  366. {
  367. roomTable.Columns.Add(i.ToString(),typeof(string));
  368. }
  369. this.dataGrid1.DataSource = roomTable;
  370. for(int i=0;i<4;i++)//向表中添加4行,显示4层楼
  371. {
  372. roomTable.Rows.Add(roomTable.NewRow());
  373. }
  374. DataGridTableStyle ts = new DataGridTableStyle();
  375. DataGridTextBoxColumn aColumnTextColumn;
  376. ts.AllowSorting = false;
  377. ts.MappingName = roomTable.TableName;
  378. ts.RowHeadersVisible=false;
  379. for (int j = 0;j< 16;j++)
  380. {
  381. aColumnTextColumn = new DataGridTextBoxColumn();
  382. aColumnTextColumn.ReadOnly=true;
  383. aColumnTextColumn.Width=32;
  384. aColumnTextColumn.MappingName = roomTable.Columns[j].ColumnName;
  385. aColumnTextColumn.HeaderText = roomTable.Columns[j].ColumnName;
  386. aColumnTextColumn.NullText = "";
  387. aColumnTextColumn.Format = "N"; //设置为数字格式显示
  388. ts.GridColumnStyles.Add(aColumnTextColumn);
  389. }
  390. dataGrid1.TableStyles.Add(ts);
  391. }
  392. //-------重画房态图---------
  393. private void dataGrid1_Paint(object sender, PaintEventArgs e)
  394. {
  395. if(this.statusTable.Rows.Count==0)
  396. {
  397. return;
  398. }
  399. string status;//房屋状态
  400. int floor,roomNum;//楼层和房间号
  401. Image pic=imageList1.Images[0];//显示的图像
  402. foreach(DataRow aRow in statusTable.Rows)
  403. {
  404. floor=Convert.ToInt32(aRow["楼层编号"]);
  405. roomNum=Convert.ToInt32(aRow["客房编号"])-100*floor;
  406. if(roomNum>14)//还原避开的两个忌讳数字13,14后的编号
  407. roomNum=roomNum-2;
  408. status=aRow["状态"].ToString().Trim();
  409. switch(status)//根据不同状态,确定不同图片
  410. {
  411. case "将到":
  412. pic=imageList1.Images[0];
  413. break;
  414. case "将离":
  415. pic=imageList1.Images[1];
  416. break;
  417. case "空房":
  418. pic=imageList1.Images[2];
  419. break;
  420. case "维修":
  421. pic=imageList1.Images[3];
  422. break;
  423. case "住房":
  424. pic=imageList1.Images[4];
  425. break;
  426. case "自用":
  427. pic=imageList1.Images[5];
  428. break;
  429. }
  430. e.Graphics.DrawImage(pic,2+32*(roomNum-1),2+32*(floor-3));
  431. e.Graphics.DrawString(aRow["客房编号"].ToString().Trim(),Font,SystemBrushes.WindowText,4+32*(roomNum-1),24+32*(floor-3));
  432. }
  433. }
  434. //----------更新房态数据---------
  435. private void RefreshStatus(string sql)
  436. {
  437. string strConn="workstation id=localhost;Integrated Security=SSPI;Database=hotelbook;";
  438. SqlConnection cn=new SqlConnection(strConn);
  439. cn.Open();
  440. SqlDataAdapter da=new SqlDataAdapter(sql,cn);
  441. this.statusTable.Clear();
  442. da.Fill(this.statusTable);
  443. }
  444. //---------单击一个房间图标时,显示其房号和类型,以及状态-----------
  445. private void dataGrid1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
  446. {
  447. int col=dataGrid1.CurrentCell.ColumnNumber;
  448. int row=dataGrid1.CurrentCell.RowNumber;
  449. row=row+3;//楼层编号从3楼开始
  450. col=col+1;//房间编号从1开始
  451. if(col>12)//房屋编号中没有13,14这两个编号,是向后顺延的
  452. {
  453. col=col+2;
  454. }
  455. string roomID="";//房间编号
  456. if(col.ToString().Length==1)//还原房间编号
  457. {
  458. roomID="0"+row.ToString()+"0"+col.ToString();
  459. }
  460. else
  461. {
  462. roomID="0"+row.ToString()+col.ToString();
  463. }
  464. DataRow[] aRows=this.statusTable.Select("客房编号='"+roomID+"'");
  465. if(aRows.Length==0)//如果未选中房间,则不进行任何处理
  466. {
  467. txt1.Clear();//清除房号
  468. cmb1.Text="";//清除类型
  469. return;
  470. }
  471. DataRow rRow=aRows[0];//读入当前房号数据
  472. txt1.Text=rRow["客房编号"].ToString().Trim();
  473. cmb1.Text=this.ShowRoomType(txt1.Text);
  474. string status;//选中房间房态
  475. status=rRow["状态"].ToString().Trim();
  476. switch(status)
  477. {
  478. case "空房":
  479. rb1.Checked=true;
  480. break;
  481. case "住房":
  482. rb2.Checked=true;
  483. break;
  484. case "自用":
  485. rb3.Checked=true;
  486. break;
  487. case "维修":
  488. rb4.Checked=true;
  489. break;
  490. case "将到":
  491. rb5.Checked=true;
  492. break;
  493. case "将离":
  494. rb6.Checked=true;
  495. break;
  496. }
  497. txt1.Focus();
  498. }
  499. //-------根据输入的房间号,读入房间类型------
  500. private string ShowRoomType(string num)
  501. {
  502. string strConn="workstation id=localhost;Integrated Security=SSPI;Database=hotelbook;";
  503. SqlConnection cn=new SqlConnection(strConn);
  504. cn.Open();
  505. SqlCommand cmd=cn.CreateCommand();
  506. cmd.CommandText="select b.类型名称 from 客房信息 a,客房类型 b" 
  507. +" where(a.类型编号=b.类型编号)and(a.客房编号='"+num+"')";
  508. string rType=cmd.ExecuteScalar().ToString().Trim();
  509. return(rType);
  510. }
  511. //-------------根据选择的房间类型显示房间-------------
  512. private void cmb1_SelectionChangeCommitted(object sender, System.EventArgs e)
  513. {
  514. string sql;
  515. int i=cmb1.SelectedIndex;
  516. string roomType=cmb1.Items[i].ToString().Trim();
  517. if(roomType=="全部")
  518. {
  519. sql="select * from 客房信息";
  520. }
  521. else
  522. {
  523. sql="select a.* from 客房信息 a,客房类型 b where (a.类型编号=b.类型编号)"
  524. +"and(b.类型名称='"+roomType+"')";
  525. }
  526. RefreshStatus(sql);//读入所选类型房间的数据
  527. dataGrid1.Refresh();
  528. }
  529. //--------刷新房态-----------
  530. private void btnRefresh_Click(object sender, System.EventArgs e)
  531. {
  532. string sqlStr;
  533. if(cmb1.Text=="")
  534. {
  535. sqlStr="select * from 客房信息";
  536. }
  537. else
  538. {
  539. sqlStr="select a.* from 客房信息 a,客房类型 b where (a.类型编号=b.类型编号)"
  540. +"and(b.类型名称='"+cmb1.Text+"')";
  541. }
  542. RefreshStatus(sqlStr);//更新房间的数据
  543. dataGrid1.Refresh();
  544. }
  545. //----------更改房间状态---------
  546. private void btnModify_Click(object sender, System.EventArgs e)
  547. {
  548. if(txt1.Text=="")
  549. {
  550. MessageBox.Show("请先选择要更改状态的房间!");
  551. return;
  552. }
  553. DialogResult dlg;
  554. string msg="一般情况下不能直接在房态图中修改房间状态,确定要修改吗?";
  555. dlg=MessageBox.Show(msg,"确认修改",MessageBoxButtons.OKCancel,MessageBoxIcon.Warning);
  556. if(dlg==DialogResult.OK)
  557. {
  558. string strConn="workstation id=localhost;Integrated Security=SSPI;Database=hotelbook;";
  559. SqlConnection cn=new SqlConnection(strConn);
  560. cn.Open();
  561. SqlCommand cmd=cn.CreateCommand();
  562. string newStatus="";
  563. if(rb1.Checked)
  564. newStatus="空房";
  565. if(rb2.Checked)
  566. newStatus="住房";
  567. if(rb3.Checked)
  568. newStatus="自用";
  569. if(rb4.Checked)
  570. newStatus="维修";
  571. if(rb5.Checked)
  572. newStatus="将到";
  573. if(rb6.Checked)
  574. newStatus="将离";
  575. //更改房间状态
  576. cmd.CommandText="update 客房信息 set 状态='"+newStatus+"' where 客房编号='"+txt1.Text+"'";
  577. cmd.ExecuteNonQuery();
  578. RefreshStatus("select * from 客房信息");//显示全部房间
  579. dataGrid1.Refresh();
  580. }
  581. }
  582. //--------双击向预定或入住窗体中返回客房数据--------
  583. private void txt1_DoubleClick(object sender, System.EventArgs e)
  584. {
  585. if(this.formType==0||txt1.Text=="")//如果类型为房态图正常显示或未选中房间,则不必返回数据
  586. {
  587. return;
  588. }
  589. if(!rb1.Checked)
  590. {
  591. MessageBox.Show("必须选择空房");
  592. return;
  593. }
  594. string[] returnInfo={"",""};
  595. if(this.formType==1)//向客房预定管理窗体中返回信息
  596. {
  597. returnInfo[0]=txt1.Text;
  598. returnInfo[1]=cmb1.Text;
  599. HotelReserve.roomInfo=returnInfo;
  600. this.Close();
  601. }
  602. if(this.formType==2)//向客房入住管理窗体中返回信息
  603. {
  604. returnInfo[0]=txt1.Text;
  605. returnInfo[1]=cmb1.Text;
  606. HotelArrival.roomInfo=returnInfo;
  607. this.Close();
  608. }
  609. }
  610. //----------每当窗体激活时,即刷新房态-------------
  611. private void RoomStatus_Activated(object sender, System.EventArgs e)
  612. {
  613. string sqlStr;
  614. if(cmb1.Text=="")
  615. {
  616. sqlStr="select * from 客房信息";
  617. }
  618. else
  619. {
  620. sqlStr="select a.* from 客房信息 a,客房类型 b where (a.类型编号=b.类型编号)"
  621. +"and(b.类型名称='"+cmb1.Text+"')";
  622. }
  623. RefreshStatus(sqlStr);//更新房间的数据
  624. dataGrid1.Refresh();
  625. }
  626. }
  627. }