C# Winform酒店管理系统根据数据库动态加载房间生成房态图的制作效果(附图且详细)

酒店管理系统根据数据库动态加载房间生成房态图的制作

先放一张效果图:
感谢大佬指正
因为要动态加载房态图,需要遍历每一个小房间,所以我定义了一个自定义控件,大概是这个样子的,
在这里插入图片描述
首先创建一个自定义控件,然后我们来绘制一个panel容器作为我们的一个小房间,上面的label作为房间号的显示,下面的label作为房间状态的显示,中间的图片对应的是状态的图标喽。

附上自定义控件的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace AegeanHotel_management_system
{public partial class Userstate : UserControl{private int _roomNum;private List<User> _inUsers;private string _status;private string _remark;public Userstate(){InitializeComponent();}private void pnl_Back_Paint(object sender, PaintEventArgs e){//RoundPanel myPanel = new Panel();//边框线//ControlPaint.DrawBorder(e.Graphics,//                    pnl_Back.ClientRectangle,//                    Color.Blue,//                    3,//                    ButtonBorderStyle.Solid,//                    Color.Red,//                    3,//                    ButtonBorderStyle.Solid,//                    Color.Red,//                    3,//                    ButtonBorderStyle.Solid,//                    Color.Red,//                    3,//                    ButtonBorderStyle.Solid);}/// <summary>/// 房间号/// </summary>public int RoomNum{get { return _roomNum; }set{_roomNum = value;UpdateRoomNum();}}//房间号方法private void UpdateRoomNum(){if (_roomNum == 0)return;lbl_RoomNum.Text = _roomNum.ToString();var width = pnl_Back.Width - lbl_RoomNum.Width;if (width < 0)width = 0;lbl_RoomNum.Location = new Point(width / 2, lbl_RoomNum.Location.Y);}/// <summary>/// 入住人/// </summary>public List<User> InUsers{get { return _inUsers; }set{_inUsers = value;UpdateInUsers();}}//入住人方法private void UpdateInUsers(){if (_inUsers == null){lbl_RoomUsers.Text = _status.ToString();return;}lbl_RoomUsers.Text = string.Join(",", _inUsers.Select(p => p.UserName).ToList());var width = pnl_Back.Width - lbl_RoomUsers.Width;if (width < 0)width = 0;lbl_RoomUsers.Location = new Point(width / 2, lbl_RoomUsers.Location.Y);}/// <summary>/// 房间状态/// </summary>public string Status{get { return _status; }set{_status = value;UpdateStatus();}}//房间状态方法private void UpdateStatus(){switch (_status){case "空房已清洁":pnl_Back.BackColor = Color.FromArgb(135, 206, 250);pictureBox1.Image = Image.FromFile(@"F:\小图标\房子2.ico", true);break;case "已入住":pnl_Back.BackColor = Color.FromArgb(70, 130, 170);pictureBox1.Image = Image.FromFile(@"F:\小图标\用户4.png", true);break;case "维修房":pnl_Back.BackColor = Color.FromArgb(205, 92, 92);pictureBox1.Image = Image.FromFile(@"F:\小图标\维修1.png", true);break;case "空房未清洁":pnl_Back.BackColor = Color.FromArgb(205, 92, 92);pictureBox1.Image = Image.FromFile(@"F:\小图标\打扫2.png", true);break;}}/// <summary>/// 房间备注/// </summary>public string Remark { get; set; }#region 初始化#endregionpublic class User{public string UserName { get; set; }}}
}

到此为止我们的自定义控件就画好了,然后我们将他根据数据库展示出来就好了。

我们依然需要在显示的界面上绘制一个flowLayoutPanel容器,准备放入我们的自定义控件,也就是每一个小房间,

然后我们直接遍历显示就好啦

//房态图动态加载
string sql = "select RoomID from Room";
DataTable dt = DBHelper.GetDataTable(sql);
int RoomID = 0;
string RoomState = "";
string Sanname = "";
foreach (DataRow row in dt.Rows)
{RoomID = Convert.ToInt32(row["RoomID"]);string sql1 = string.Format("select RoomState from Room where RoomID={0}", RoomID);DataTable dt1 = DBHelper.GetDataTable(sql1);RoomState = dt1.Rows[0][0].ToString();string sql2 = "select Name from RoomState where Roomhao=" + RoomID;DataTable dt2 = DBHelper.GetDataTable(sql2);if (dt2.Rows.Count > 0){Sanname = dt2.Rows[0][0].ToString();}else{Sanname = RoomState;}Userstate roomInfo = new Userstate(){RoomNum = RoomID,Status = RoomState,InUsers = RoomID % 7 == 0 ? null : new List<Userstate.User>(){new Userstate.User(){ UserName = Sanname }}};roomInfo.Name ="LBL"+RoomID;flowLayoutPanel1.Controls.Add(roomInfo);
}

到此为止我们房间的动态图就加载完成了。快去看看效果吧!
在这里插入图片描述
感谢大佬指正 小Monkey
如果你觉得有用的话,就留个赞吧!蟹蟹

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/58704.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MFC 关于OnPaint绘图的一些经验

问题描述&#xff1a; 在MFC中在对话框上绘图时&#xff0c; 要求按下按钮绘制相关图形&#xff0c; 写好绘制函数调用调试时&#xff0c;发现若是改变对话框的界面大小或者最小化/最大化或者有隐藏时会导致图形消失。 原因分析&#xff1a; 改变对话框的界面大小或者最小化…

聊一聊过度设计!

文章目录 什么是过度设计&#xff1f;过度设计的坏处如何避免过度设计充分理解问题本身保持简单小步快跑征求其他人的意见 总结 新手程序员在做设计时&#xff0c;因为缺乏经验&#xff0c;很容易写出欠设计的代码&#xff0c;但有一些经验的程序员&#xff0c;尤其是在刚学习过…

毕业5年了还不知道Android热修复?

/ 今日科技快讯 / 近日&#xff0c;谷歌抢在微软之前发布了ChatGPT竞品、自家人工智能聊天机器人Bard&#xff0c;但市场反应并不好。谷歌员工们纷纷批评包括首席执行官桑德尔皮查伊在内的公司领导层&#xff0c;认为公司本周宣布推出Bard的方式过于“仓促”、简直是“一团…

输出国际象棋棋盘

##1、程序分析 国际象棋是8*8的&#xff0c;i(07)代表行&#xff0c;j(07)代表列。当ij为奇数的时候&#xff0c;是黑色格子&#xff0c;反之&#xff0c;白色格子。 ##2、程序实现 方法一&#xff1a;两重循环 &#xff08;1&#xff09;程序&#xff1a; for i in range(8…

java简单实现中国象棋

java简单实现中国象棋 可以实现简单的人机对战功能&#xff0c;棋子移动会插入关键帧&#xff0c;可以悔棋等功能 运行效果 import java.awt.Canvas; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.event.ActionEvent; import ja…

Qt实现中国象棋:(七)悔棋

一、下棋步骤的保存 在设置保存下棋步骤之前&#xff0c;先定义一个bool类型的变量player用于判定是哪一方下子&#xff0c;设定playertrue时是红方下棋&#xff0c;playerfalse时是黑方下棋。 1:要想保存下棋的步骤&#xff0c;必须先弄明白需要保存的信息。一个下棋步骤需要…

三种版本的中国象棋

一.图片资源&#xff1a; 二.图片存放位置&#xff1a; 三.三种不同版本的中国象棋源代码 三种源代码运行之前都需要 点击项目-属性 找到这个地方&#xff0c;把字符集改成“使用多字节字符集”&#xff1a; 一.版本1&#xff1a;中国象棋简洁版&#xff08;部分特效无…

Pygame实战:中国象棋人机对抗赛今开战、谁占上风?要不要来一盘试试?

&#x1f333;导语 哈喽&#xff01;哈喽&#xff01;我是木木子&#xff01;今日游戏更新——中国象棋上线啦&#xff01; 中国象棋是一种古老的棋类游戏&#xff0c;大约有两千年的历史。 是中华文明非物质文化经典产物&#xff0c;艺术价值泛属于整个人类文明进化史的一个…

Java实现中国象棋(人机对战)

目录 简介 成品视频 实现思路 界面实现分为了三块 棋盘抽象类 按钮组抽象类 棋子绘制接口 棋盘界面实现 棋子的实现 按钮组的实现 监听工厂和监听类 棋盘绘制类的实现 开始游戏实现 停止游戏实现 游戏抽象类 游戏实现类 可走路线和吃棋判断实现 车(ju) 炮 …

Java国际象棋 棋子的走法和吃法

------ Oracle中文开发者社区 ------ 如果你想要学习编程,关注本博客,持续获得技术支持,持续获得技术咨询 java开发企业官方账号 Oracle中国官方账号 Java中国管理部 全网粉丝30万 华为云享专家 阿里专家博主 CSDN内容合伙人 CSDN原力计划作者 51CTO专家博主 CSDN博客V账号 …

Java 中国象棋

实现一个小游戏需要知道从哪里下手&#xff0c;一步步实现和完善&#xff0c;对于一个中国象棋的小游戏&#xff0c;我们可以按这样的顺序展开&#xff1a; 界面按钮加棋子实现棋子的移动判断胜负按钮“开始游戏”和“重新开始”的实现加规则轮次悔棋背景 及 提示 一、界面 …

简单的象棋开发

我们需要准备的知识是c语言基础和easyx图形: easyx官网&#xff1a; https://easyx.cn/ 首先头文件少不了: #include<stdio.h>(c语言的头文件) #include<graphics.h>&#xff08;easyx的&#xff09; #include<mmsystem.h>&#xff08;音乐播放的&#x…

中国象棋C++实现

使用C语言开发中国象棋的小游戏 Chess.cpp // includes #include<iostream> #include<graphics.h> using namespace std;// 使用到的 WCHAR 字符 class CKind{ public:WCHAR ROOKS *(_T("车"));WCHAR KNIGHTS *_T("马");WCHAR ELEPHANTS …

用C++实现中国象棋

项目介绍 最近学习到了STL库&#xff0c;了解到一些很实用的容器&#xff0c;同时我也是个象棋爱好者&#xff0c;想着能不能做个象棋的游戏小程序出来&#xff0c;运用一下所学到的知识点&#xff0c;于是动手做了这个项目&#xff0c;花了两天左右的时间基本完成&#xff0c;…

C++中国象棋

ssdut c的大作业&#xff0c;在控制台的界面实现人人对弈&#xff0c;比较适合初学&#xff0c;自己设计了一些简单算法&#xff0c;两百多行完成。 以下正文&#xff1a; 完成中国象棋游戏&#xff0c;实现如下功能&#xff1a; 1.实现人与人之间象棋的对弈。 2.每次走子之…

Java版本实现中国象棋

预览效果 中国象棋 游戏介绍&#xff1a;中国象棋是起源于中国的一种棋&#xff0c;属于二人对抗性游戏的一种&#xff0c;在中国有着悠久的历史&#xff0c;由于用具简单&#xff0c;趣味性强&#xff0c;成为流行极为广泛的棋艺活动。阿巴阿巴阿巴 代码结构&#xff1a;Butto…

数影周报:小米汽车供应商被罚100万,1688延迟下线“1688买家旺旺”

本周看点&#xff1a;小米汽车供应商被罚100万&#xff1b;特斯拉将在硅谷招聘AI 人才&#xff1b;阳光出行等25款 App涉违规收集使用个人信息等&#xff1b;1688延迟于2月8日下线“1688买家旺旺”&#xff1b;微蚁科技完成数千万元B轮融资...... 数据安全那些事 小米汽车供应商…

Coggle 30 Days of ML (23年7月)任务二:数据可视化

Coggle 30 Days of ML (23年7月&#xff09;任务二&#xff1a;数据可视化 任务二&#xff1a;对数据集字符进行可视化&#xff0c;统计标签和字符分布 说明&#xff1a;在这个任务中&#xff0c;需要使用Pandas库对数据集的字符进行可视化&#xff0c;并统计数据集中的标签和…

阿里云服务器ECS是什么?详细介绍

阿里云服务器ECS是什么&#xff1f;云服务器和传统的物理服务器有什么区别&#xff1f;云服务器有哪些优势&#xff1f;云服务器可以什么&#xff1f;云服务器架构及云服务器包含哪些功能组件&#xff1f;阿里云百科来详细说下什么是云服务器ECS&#xff1a; 目录 阿里云服务…

使用Chrome修改user agent模拟微信内置浏览器

很多时候&#xff0c;我们需要模拟微信内置浏览器&#xff0c;今天教大家用 chrome 简单模拟。如图设置&#xff1a; F12或者右键审查元素进入开发者模式&#xff0c;点击Emulation&#xff0c;然后点击Network&#xff0c;把Spoof user agent改成Other&#xff0c;并把下面…