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>
相关文章
|
3月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
38 0
|
30天前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
28 0
|
30天前
mvc.net分页查询案例——mvc-paper.css
mvc.net分页查询案例——mvc-paper.css
5 0
|
1月前
|
开发框架 搜索推荐 .NET
ASP.NET体检中心源码,实现检前、检中、检后全流程管理
健康体检系统遵循整个健康体检的实际流程,以提高工作效率、降低错检、防止漏检提高人性化服务水平为目的,在体检过程中可以高效、自动化、人性化的处理数据与提供服务。针对体检流程中工作强度在时间分配上不均匀等特点,解决了体检信息处理效率问题,在不增加体检中心人力资源投入或少投入的基础上,提升信息处理的效率,从而突破体检中心日处理体检人数的上限,为体检中心创造更大经济效益的同时,还能有效的降低体检工作者的劳动强度。
35 5
|
1月前
|
开发框架 前端开发 .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,然后在重定向到另
95 5
|
3月前
|
XML 前端开发 定位技术
C#(NET Core3.1 MVC)生成站点地图(sitemap.xml)
C#(NET Core3.1 MVC)生成站点地图(sitemap.xml)
25 0
|
3月前
|
前端开发
.net core mvc获取IP地址和IP所在地(其实是百度的)
.net core mvc获取IP地址和IP所在地(其实是百度的)
123 0
|
4月前
|
存储 开发框架 .NET
【ASP.NET】医学实验室管理(LIS)系统源码
【ASP.NET】医学实验室管理(LIS)系统源码
69 0
|
5月前
|
开发框架 自然语言处理 前端开发
基于ASP.NET MVC开发的、开源的个人博客系统
基于ASP.NET MVC开发的、开源的个人博客系统
51 0
|
8月前
|
存储 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(五)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情等功能的开发,今天继续讲解购物车功能开发,仅供学习分享使用,如有不足之处,还请指正。
114 0