ASP.NET MVC多表示例题-酒店管理

简介: ASP.NET MVC多表示例题-酒店管理

酒店房间后台管理系统

1.语言和环境


1. 实现语言:C#语言。


2. 环境要求:Visual Studio 2012 + SQL Server 2012 或以上版本。


3. 实现技术:ASP.NET MVC+EF(100 分)或 ASP.NET+三层+EF(90 分)。


4. 功能要求:不得使用第三方工具生成实体类、持久层代码,否则不得分。


2.实现功能


1. 首次打开页面,展示所有酒店房间信息列表,如图 1 所示。

image.png


image.pngimage.png


要求如下:


(1).房间单价:保留两位小数,以人民币形式显示,如“¥2.50”。


(2).酒店房间状态:若酒店房间状态为未入住,则显示绿色文字“空房间”,并显示“入住”操作按钮;如果房间状态为已入住,则显示红色文字“已入住”,并显示“退房”操作按钮。


(3).房间类型:从房间类型表中查询出每间房所对应的房间类型,显示在网页中。


2.点击“入住”,可以将对应酒店房间状态修改为“已入住”,并重新显示;点击“退房”按钮将对应酒店。房间状态修改为“未入住”并重新显示,如图 2 所示。


image.png

3.点击首页中的删除链接,弹出删除确认消息框,提示是否删除,确认后删除对应房间,删除成功后重新显示首页,如图 3 所示。


image.png

1. 创建酒店房间项目数据库(HotelDB)。


2. 创建酒店房间类型表(RoomType),信息表结构见表 1


表 1 Room 表结构


image.png

表 2 Room 表结构


3.创建酒店房间信息表(Room),信息表结构见表 2。


image.png

4.具体要求及推荐实现步骤


1. 按以上数据库要求建库、建表,并添加测试数据。


2. 搭建系统框架。


(1)正确创建项目(MVC 或者 ASP.NET)。


(2)创建实体数据模型。


(3)创建控制器、视图(或者三层)。


3. 创建首页并显示所有酒店房间信息。


(1)控制器(或者三层)中编写显示所有酒店房间的方法。


(2)房间单价以人民币形式显示,保留两位小数,如“¥2.50”。


(3) 若酒店房间状态为未入住,则显示绿色文字“空房间”,并显示“入住”操作按钮;如果房间状态为已入住,则显示红色文字“已入住”,并显示“退房”操作按钮。


4. 入住和退房操作。


(1)  对“未入住”房间,点击“入住”将指定酒店房间状态更改为“已入住”并重新显示首页。


(2)  对“已入住”房间,点击“退房”将指定酒店房间状态更改为“未入住”并重新显示首页。


5.  删除:点击删除按钮,弹出确认删除提示框,点击“取消”不删除数据;点击“确定”才会删除对应房间信息,并显示首页信息。


sqlserver数据库

库名HotelDB


建表语句:

create table RoomType(
   TID int primary key identity(1,1),
   TypeName varchar(20) not null
)
create table Room(
   ID int primary key identity(1,1),
   [Name] nvarchar(20) not null,
   TID int references RoomType(TID) not null,
   Price decimal(18,2) not null,
   Phone nvarchar(20) not null,
   Statu int check(Statu=1 OR Statu=0)
)
insert into RoomType
   select '单人间'union
   select '双人间'union
   select '三人间'
insert into Room
   select '3601',1,188,2022,0 union
   select '3602',2,288,2023,0 union
   select '3603',1,188,2022,1 union
   select '3501',1,188,2022,0 union
   select '3502',3,388,2022,1 union
   select '3503',1,188,2022,0 
go


ER图



image.png

创建MVC项目


image.png

引入EF

我这里离交HotelDB,会自动生成HotelDBEntities


image.png


引入刚创建的两个表


image.png




EF多表查询技巧

EF写法

List<Room> rooms = db.Room.Include("RoomType").ToList();


视图遍历方法

@foreach (var item in ViewBag.list)

           {

               <tr>

                   <td>@item.ID</td>

                   <td>@item.RoomType.TypeName</td>

                   <td>@item.Name</td>


               </tr>

           }


控制器编码

创建HotelController.cs控制器


using DEMOMVC20221016.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace DEMOMVC20221016.Controllers
{
    public class HotelController : Controller
    {
        // GET: Hotel
        public ActionResult Index()
        {
            using (HotelDBEntities db = new HotelDBEntities()) {
                List<Room> rooms = db.Room.Include("RoomType").ToList();
                ViewBag.list = rooms;
                return View();
            }
        }
        [HttpGet]
        public void UpdateById(string roomid)
        {//入住和退房处理
            int id = int.Parse(roomid);
            using (HotelDBEntities db = new HotelDBEntities())
            {
                Room room = db.Room.Where(p => p.ID == id).FirstOrDefault();
                room.Statu = room.Statu == 0 ? 1 : 0;
                db.SaveChanges();
                Response.Redirect("/Hotel/Index");
            }
        }
        public void delete(string roomid)
        {//删除数据处理
            int id = int.Parse(roomid);
            using (HotelDBEntities db = new HotelDBEntities())
            {
                Room room = db.Room.Where(p => p.ID == id).FirstOrDefault();
                db.Room.Remove(room);
                db.SaveChanges();
                Response.Redirect("/Hotel/Index");
            }
        }
    }
}


Index视图层


@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
    <style>
        table {
            /*border-collapse: collapse;*/
            border-spacing: 0;
            width: 100%;
            border: 1px solid #e8e8e8;
            text-align: center;
        }
        td {
            height: 50px;
            border: 1px solid #e8e8e8;
        }
        th {
            height: 50px;
            border: 1px solid #e8e8e8;
            background: #527aff;
        }
        .item-buttom {
            background: #527aff;
            color: white;
            padding: 5px 10px 5px 10px;
            text-decoration: none;
            margin-left: 5px;
        }
    </style>
</head>
<body>
    <div>
        <table>
            <tr>
                <th>编号</th>
                <th>房间类型</th>
                <th>房间号</th>
                <th>单价</th>
                <th>内线电话</th>
                <th>状态</th>
                <th>删除</th>
            </tr>
            @foreach (var item in ViewBag.list)
            {
                <tr>
                    <td>@item.ID</td>
                    <td>@item.RoomType.TypeName</td>
                    <td>@item.Name</td>
                    <td>¥@item.Price</td>
                    <td>@item.Phone</td>
                    @if (@item.Statu == 1)
                    {
                        <td style="color:red">已入住<a class="item-buttom" href="/Hotel/UpdateById?roomid= @item.ID">退房</a></td>
                    }
                    else
                    {
                        <td style="color:#4cff00">空房间<a class="item-buttom" href="/Hotel/UpdateById?roomid=@item.ID">入住</a></td>
                    }
                    <td><a class="item-buttom" href="/Hotel/delete?roomid=@item.ID" onclick="return confirm('是否删除该信息')">删除</a></td>
                </tr>
            }
        </table>
    </div>
</body>
</html>
相关文章
|
2月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
38 7
|
2月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
53 0
|
3月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
46 0
|
3月前
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?
|
3月前
|
开发框架 .NET
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
119 0
|
6月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
189 0
|
6月前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
78 0
|
6月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
326 5
|
6月前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
|
存储 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(五)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情等功能的开发,今天继续讲解购物车功能开发,仅供学习分享使用,如有不足之处,还请指正。
163 0