Lập trình C# - Quản lý khách sạn
Xây dựng chương trình quản lý khách sạn theo yêu cầu sau:
Thiết kế lớp đối tượng khách hàng gồm các thuộc tính (Số CMTND, họ tên, tuổi, giới tính, quê quán)
- Thiết kế get/set cho thuộc tính
- Tạo hàm tạo ko đối và đầy đủ đối số
- Tạo hàm nhập và hiển thị thông tin
2. Thiết kế lớp Hotel gồm các thuộc tính : tên, địa chỉ, loại khách sạn (VIP, Bình dân,...), danh sách các Room, mã khách sạn
- Thiết kế get/set cho thuộc tính
- Tạo hàm tạo ko đối và đầy đủ đối số
- Tạo hàm nhập và hiển thị thông tin
3. Thiết kế lớp Room gồm các thuộc tính : Tên phòng, giá tiền, tầng, số người tối đa ở, mã phòng
- Thiết kế get/set cho thuộc tính
- Tạo hàm tạo ko đối và đầy đủ đối số
- Tạo hàm nhập và hiển thị thông tin
4. Thiết kế lớp Book gồm các thuộc tính : ngày book, ngày trả phòng, Số CMTND người book, mã khách sạn, mã phòng
Chú ý : Số CMTND -> nếu chưa tồn tại -> nhập thông tin KH đó
Mã khách sạn -> Nếu ko tồn tại, yêu cầu nhập đúng khách sạn đã có
Mã Phòng -> yêu cầu nhập đúng mã phòng của KH mà người dùng muốn book -> Nếu nhập sai, yêu cầu nhập đúng mới dừng.
Chú thích menu :
Khi người dùng chọn 1 : Hỏi người dùng số khách sạn cần nhập => Khi nhập mỗi khách sạn thì yêu cầu
- Nhập thông tin khách sạn đó
- Hỏi người dùng nhập số phòng cần nhập cho khách sạn đó => Nhập thông tin từng phòng
Khi người dùng chọn 2 : In toàn bộ thông tin liên quan tới KS
Khi người dùng chọn 3 : Nhập thông tin đặt phòng (Book)
Khi người dùng chọn 4: Nhập vào 1 ngày book và ngày trả phòng, in ra tất cả các phòng có thể đap ứng đc yêu cầu trên
Khi người dùng chọn 5 : In ra tổng tiền mà mỗi khách sạn kiếm được ra màn hình.
Khi người dùng chọn 6 : Nhập Số CMTND khách hàng => In ra tất cả các khách sạn mà khách hàng này đã tới.
Khi người dùng chọn 7 : Thoát chương trình.
Trong project chúng ta tạo 4 class Book.cs, Customer.cs, Hotel.cs, Room.cs
Bước 1: Xây dựng Class Book.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace HotelManager
{
public class Book
{
public string CMTND { get; set; }
public string HotelCode { get; set; }
public string RoomNo { get; set; }
public DateTime CheckIn { get; set; }
public DateTime CheckOut { get; set; }
public Book()
{
}
public void Input(List<Customer> customers, List<Hotel> hotels)
{
if (hotels.Count == 0)
{
Console.WriteLine("Khong co du lieu!!!");
return;
}
Console.WriteLine("Nhập chứng minh nhân dân: ");
CMTND = Console.ReadLine();
bool isFind = false;
foreach (Customer customer in customers)
{
if (customer.CMTND.Equals(CMTND))
{
isFind = true;
break;
}
}
if (!isFind)
{
//nhap moi du lieu KH
Customer customer = new Customer();
customer.CMTND = CMTND;
customer.InputWithoutCMTND();
customers.Add(customer);
}
Console.WriteLine("Nhập mã khách sạn: ");
Hotel currentHotel = null;
for (; ; )
{
foreach (Hotel hotel in hotels)
{
Console.WriteLine("Mã khách sạn: {0}, Tên khách sạn: {1}", hotel.HotelCode, hotel.Name);
}
HotelCode = Console.ReadLine();
foreach (Hotel hotel in hotels)
{
if (hotel.HotelCode.Equals(HotelCode))
{
currentHotel = hotel;
break;
}
}
if (currentHotel != null)
{
break;
}
Console.WriteLine("(Not Found) Nhập lại: ");
}
Console.WriteLine("Nhập mã phòng: ");
if (currentHotel.RoomList.Count == 0)
{
Console.WriteLine("Khách sạn không cài đặt phòng!!!");
return;
}
for (; ; )
{
foreach (Room room in currentHotel.RoomList)
{
Console.WriteLine("Mã phòng: {0}, Tên phòng: {1}", room.RoomNo, room.RoomName);
}
isFind = false;
RoomNo = Console.ReadLine();
foreach (Room room in currentHotel.RoomList)
{
if (room.RoomNo.Equals(RoomNo))
{
isFind = true;
break;
}
}
if (isFind)
{
break;
}
else
{
Console.WriteLine("(Not Found) Nhap lai: ");
}
}
Console.WriteLine("Ngày nhận phòng (dd/mm/YYYY): ");
string dateTime = Console.ReadLine();
CheckIn = ConvertStringToDatetime(dateTime);
Console.WriteLine("Ngày trả phòng (dd/mm/YYYY): ");
dateTime = Console.ReadLine();
CheckOut = ConvertStringToDatetime(dateTime);
}
public DateTime ConvertStringToDatetime(string value)
{
//string iString = "2005-05-05 22:12 PM";
DateTime oDate = DateTime.ParseExact(value, "dd/MM/yyyy", null);
return oDate;
}
}
}
Bước 2: Xây dựng Class Customer.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace HotelManager
{
public class Customer
{
public string CMTND { get; set; }
public string Fullname { get; set; }
public string Age { get; set; }
public string Gender { get; set; }
public string Address { get; set; }
public Customer()
{
}
public void Input()
{
Console.WriteLine("Nhập chứng minh nhân dân: ");
CMTND = Console.ReadLine();
InputWithoutCMTND();
}
public void InputWithoutCMTND()
{
Console.WriteLine("Nhập tên khách hàng: ");
Fullname = Console.ReadLine();
Console.WriteLine("Nhập tuổi: ");
Age = Console.ReadLine();
Console.WriteLine("Nhập giới tính: ");
Gender = Console.ReadLine();
Console.WriteLine("Nhập địa chỉ: ");
Address = Console.ReadLine();
}
public void Display()
{
Console.WriteLine("Chứng minh nhân dân : {0}, Tên khách hàng: {1}, Tuổi: {3}, Giới tính: {4}, Địa chỉ: {5}",
CMTND, Fullname, Age, Gender, Address);
}
}
}
Bước 3: Xây dựng Class Hotel.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace HotelManager
{
public class Hotel
{
public string HotelCode { get; set; }
public string Name { get; set; }
public string Address { get; set; }
public string Type { get; set; }
public List<Room> RoomList { get; set; }
public Hotel()
{
RoomList = new List<Room>();
}
public void Input()
{
Console.WriteLine("Nhập mã khách sạn: ");
HotelCode = Console.ReadLine();
Console.WriteLine("Nhập tên khách sạn: ");
Name = Console.ReadLine();
Console.WriteLine("Nhập địa chỉ: ");
Address = Console.ReadLine();
Console.WriteLine("Nhập loại khách sạn (VIP/Binh Dan):");
Type = Console.ReadLine();
for (; ; )
{
Room room = new Room();
room.Input();
RoomList.Add(room);
Console.WriteLine("Có tiếp tục nhập hay không? Y/N: ");
string option = Console.ReadLine();
if (option.ToUpper().Equals("N"))
{
break;
}
}
}
public void Display()
{
Console.WriteLine("Mã khách sạn: {0}, Tên khách sạn: {1}, Địa chỉ: {2}, Loại: {3}", HotelCode, Name, Address, Type);
foreach (Room room in RoomList)
{
room.Display();
}
}
}
}
Bước 4: Xây dựng Class Room.cs
using System;
using System.Collections.Generic;
using System.Text;
namespace HotelManager
{
public class Room
{
public string RoomName { get; set; }
public float Price { get; set; }
public string RoomNo { get; set; }
public int PeopleMax { get; set; }
public int Floor { get; set; }
public Room()
{
}
public void Input()
{
Console.WriteLine("Nhập mã phòng: ");
RoomNo = Console.ReadLine();
Console.WriteLine("Nhập tên phòng: ");
RoomName = Console.ReadLine();
Console.WriteLine("Nhập giá phòng: ");
Price = float.Parse(Console.ReadLine());
Console.WriteLine("Nhập số người tối đa: ");
PeopleMax = int.Parse(Console.ReadLine());
Console.WriteLine("Nhập tầng mấy?: ");
Floor = int.Parse(Console.ReadLine());
}
public void Display()
{
Console.WriteLine("Mã phòng: {0}, tên phòng: {1}, giá: {2}, số người tối đa: {3}, tầng: {4}",
RoomNo, RoomName, Price, PeopleMax, Floor);
}
}
}
Bước 5: Xây dựng hàm Main
using System;
using System.Collections.Generic;
using System.Text;
namespace HotelManager
{
class Program
{
static void Main(string[] args)
{
Console.OutputEncoding = Encoding.UTF8;
List<Customer> customers = new List<Customer>();
List<Hotel> hotels = new List<Hotel>();
List<Book> books = new List<Book>();
int choose;
do
{
ShowMenu();
choose = int.Parse(Console.ReadLine());
switch (choose)
{
case 1:
InputHotel(hotels);
break;
case 2:
DisplayHotel(hotels);
break;
case 3:
Booking(customers, hotels, books);
break;
case 4:
FindBookingAvaiable(hotels, books);
break;
case 5:
break;
case 6:
break;
case 7:
Console.WriteLine("Thoát!!!");
break;
default:
Console.WriteLine("Nhập sai!!!");
break;
}
} while (choose != 7);
}
static void FindBookingAvaiable(List<Hotel> hotels, List<Book> books)
{
if (hotels.Count == 0)
{
Console.WriteLine("Không có dữ liệu !!!");
return;
}
Hotel currentHotel = null;
for (; ; )
{
foreach (Hotel hotel in hotels)
{
Console.WriteLine("Mã khách sạn: {0}, Tên khách sạn: {1}", hotel.HotelCode, hotel.Name);
}
string HotelCode = Console.ReadLine();
foreach (Hotel hotel in hotels)
{
if (hotel.HotelCode.Equals(HotelCode))
{
currentHotel = hotel;
break;
}
}
if (currentHotel != null)
{
break;
}
Console.WriteLine("(Not Found) Nhập lại: ");
}
if (currentHotel.RoomList.Count == 0)
{
Console.WriteLine("Không có dữ liệu!!!");
return;
}
Console.WriteLine("Ngày nhận phòng (dd/mm/YYYY): ");
string dateTime = Console.ReadLine();
DateTime CheckIn = DateTime.ParseExact(dateTime, "dd/MM/yyyy", null);
Console.WriteLine("Ngày trả phòng (dd/mm/YYYY): ");
dateTime = Console.ReadLine();
DateTime CheckOut = DateTime.ParseExact(dateTime, "dd/MM/yyyy", null);
//Tim kiem phong co the book
//Room => co the booking
//R001 => A1=>A2 & CheckIn => CheckOut : CheckIn > A2 hoac CheckOut < A1
foreach (Room room in currentHotel.RoomList)
{
//Tim da danh sach booking cho phong room.
List<Book> currentBooking = new List<Book>();
foreach (Book book in books)
{
if (book.HotelCode.Equals(currentHotel.HotelCode) && book.RoomNo.Equals(room.RoomNo))
{
currentBooking.Add(book);
}
}
//Kiem tra phong nay co kha nang book hay ko
bool isFind = false;
foreach (Book book in currentBooking)
{
if (DateTime.Compare(book.CheckIn, CheckOut) > 0 || DateTime.Compare(book.CheckOut, CheckIn) < 0)
{
//OK
}
else
{
isFind = true;
break;
}
}
if (!isFind)
{
Console.WriteLine("Phòng số: {0}, Tên phòng: {1}", room.RoomNo, room.RoomName);
}
}
}
static void Booking(List<Customer> customers, List<Hotel> hotels, List<Book> books)
{
Book book = new Book();
book.Input(customers, hotels);
books.Add(book);
}
static void DisplayHotel(List<Hotel> hotels)
{
foreach (Hotel hotel in hotels)
{
hotel.Display();
}
}
static void InputHotel(List<Hotel> hotels)
{
for (; ; )
{
Hotel hotel = new Hotel();
hotel.Input();
hotels.Add(hotel);
Console.WriteLine("Bạn có tiếp tụcc nhập hay không? Y/N:");
string option = Console.ReadLine();
if (option.ToUpper().Equals("N"))
{
break;
}
}
}
static void ShowMenu()
{
Console.WriteLine("\nCHƯƠNG TRÌNH QUẢN LÝ KHÁCH SẠN C#");
Console.WriteLine("*************************MENU**************************");
Console.WriteLine("** 1. Nhâp thông tin khách sạn **");
Console.WriteLine("** 2. Hiển thị thông tin khách sạn **");
Console.WriteLine("** 3. Đặt phòng **");
Console.WriteLine("** 4. Tìm phòng trong **");
Console.WriteLine("** 5. Thốnng kê doanh thu khách sạn **");
Console.WriteLine("** 6. Tìm kiếm thông tin khách hàng **");
Console.WriteLine("** 7. Thoát **");
Console.WriteLine("** Chọn: **");
Console.WriteLine("*******************************************************");
}
}
}
Bước 6: Nhấn Ctrl+F5 để chạy và xem kết quả
Chọn 1 nhập thông tin khách sạn
Chọn 2 xem thông tin khách sạn