Mục Lục
Mục Lục
Giáo Trình Học EBook - Tài Liệu Học Lập Trình C Sharp Kiến Thức Căn Bản - Khai Báo Biến, Toán Tử, Mệnh Đề Điều Kiện, Lặp Video Giới thiệu về ngôn ngữ lập trình C# & .NET Framework + Khai báo biến trong C# Video Hướng dẫn tìm hiểu biến + toán tử trong lập trình C# Video Hướng dẫn tìm hiểu mệnh đề điều kiện if - else - switch trong C# In dãy Fibonacci trong C# - Tìm dãy số Fibonacci - Lập trình C# - Loop trong C# Giải phương trình bậc 2 - Lập Trình C# - Mệnh đề điều kiên if else trong # Viêt chương trình cho FlowChart - Lập trình C# - Tìm hiểu if else trong C# Hiển thị hình tam giác - Lập trình C# - Loop trong C# Viết chương trình ax + b = 0 bằng C#, C Sharp Xây dựng dự án Hello World trong C# - C Sharp Nhập và hiển thị thông tin sinh viên - Console trong C# Tìm dãy số nguyên tố - Lập trình C# - Loop trong C# Video Tìm dãy số nguyên tố - Lập trình C# - Loop trong C# In dãy số chẵn & lẻ từ mảng số nguyên - Lập trình C# - Loop trong C# Video In dãy số chẵn & lẻ từ mảng số nguyên - Lập trình C# - Loop trong C# Array trong C Sharp Video Array C# - Hướng dẫn tìm hiểu Array trong C#. C Sharp, Lập Trình C#, Lập Trình C Sharp Tính tổng số chắc & Tổng số lẻ trong chuỗi - Lập Trình C# - Array Trong C# OOP - Tính Chất Đóng Gói & Kế Thừa Video Học lập trình OOP C# - Tính chất đóng gói C# - Qua ví dụ quản lý sinh viên - Lập trình C# Bài 1: Chương trình quản lý sản phẩm - Lập Trình C# - Lập Trình C Sharp - Làm quen OOP Bài 2: Chương trình quản lý sản phẩm - Product - Lập Trình C# - Lập Trình C Sharp Chương trình quản lý công nhân - Lập Trình C# - Lập Trình C Sharp - Làm quen OOP Chương trình quản lý sách - Develop Book Project - Lập Trình C# - OOP trong C# - C Sharp Video Chương trình quản lý sách - Develop Book Project - Lập Trình C# - OOP trong C# - C Sharp - C2010G OOP - Tính Chất Đa Hình & Trừu Tượng & Interface Ôn tập OOP - Table - Trong C# - Lập Trình C# - Lập Trình C Sharp Chường trình quản lý sở thú - Lập trình C# - Lập trình C Sharp Bài tập ôn luyện OOP + Interface trong C# - Lập Trình C# - Lập Trình C Sharp Kiểm tra 30 phút - Chương trình quản lý thiết bị phòng lab cho trường học - Lập trình C# - Khoá học lập trình C Sharp Chương trình quản lý khách sạn - Develop Hotel Project - Lập Trình C# - Lập Trình C Sharp Video Chương trình quản lý khách sạn - Develop Hotel Project - Lập Trình C# - Lập Trình C Sharp Namespace & Delegate & Event Viết chương trình quản lý sinh viên + delegate & event trong C# - Lập Trình C# - Lập Trình C Sharp Examination & Test - Lập trình C# - Lập trình C Sharp Bài tập - Xây dựng chương trình quản lý sức khoẻ - Lập trình C# Viết chương trình quản lý tiêm chủng Vacxin COVID-19 - Lập trình C Sharp nâng cao. JSON & Extension - Partial - Type Anonymous Chương trình quản lý sinh viên C# + Import/Export JSON + File - Lập Trình C# - Lập Trình C Sharp Video Chương trình quản lý sinh viên C# + Import/Export JSON + File - Lập Trình C# - Lập Trình C Sharp Chương trình nhập xuất dữ liệu điểm thi - Lập Trình C# - Lập Trình C Sharp - Làm quen OOP Bài tập C Sharp - Chương trình quản lý cán bộ C# - C Sharp Kết Nối CSDL - C Sharp Video Quản lý sinh viên C# - Kết nối CSDL C# - Kết nối database C# Chương trình quản lý sách C# - Book project C# - CSDL Tools Import/Export JSON into Database C# - Nhập xuất JSON File vào CSDL C# - Quản lý sinh viên C# Bài tập - Viết chương trình quản lý nhập kho máy tính cho thegioididong.com C Sharp - Lập trình C Sharp Ôn Tập Tổng Quát Bài tập - Chương trình quản lý Mèo C# (C Sharp) | Chương trình quản lý Cat C# (C Sharp) Bài tập - Quản lý điểm thi Aptech bằng C# - Lập trình C Sharp [Examination] C# - Chương trình quản lý đội thi TechWiz toàn cầu Aptech Ấn Độ - C# Bài Tập - Quản lý nhà - Lập trình C# | C Sharp Bài tập - Quản lý rạp chiều phim C# - Lập trình C# Viết chương trình quản lý xe car bằng C # - C Sharp | Khoá học lập trình C# [Assignment] Bài tập ôn luyên tổng quát C# - Lập Trình C# - Lập Trình C Sharp 1000 Bài tập lập trình C# - Lập trình C# - Lập Trình C Sharp Ôn tập OOP - Table - Trong C# - Lập Trình C# - Lập Trình C Sharp
C Sharp Tutorial

[Video] Chương trình quản lý khách sạn - Develop Hotel Project - Lập Trình C# - Lập Trình C Sharp

Chương trình quản lý khách sạn - Develop Hotel Project - Lập Trình C# - Lập Trình C Sharp

https://gozic.vn/chuong-trinh-quan-ly-khach-san-develop-hotel-project-lap-trinh-c-lap-trinh-c-sharp.html




🧩 I. Interface IPerson

🎯 Mục tiêu:

Khai báo 3 thuộc tính (property):

  • Skills — đọc/ghi (Read/Write)

  • DateOfBirth — chỉ đọc (Read-only)

  • Age — chỉ đọc (Read-only)

💡 Giải thích:

Interface chỉ khai báo, không có code xử lý bên trong.
Class nào implements interface này thì bắt buộc phải định nghĩa (override) các property trong đó.

🧠 Code:

public interface IPerson { string Skills { get; set; } // Read/Write DateTime DateOfBirth { get; } // Read-only int Age { get; } // Read-only }

🧩 II. Abstract Class Employee

🎯 Mục tiêu:

  • Có 2 field: _id, _name

  • 2 constructor

  • 2 property: ID (chỉ đọc), Name (đọc/ghi, kiểm tra độ dài)

  • 1 phương thức trừu tượng ShowInfo()

🧠 Code + Giải thích:

public abstract class Employee { // 🔹 1. Fields - private private int _id; private string _name; // 🔹 2. Constructor 1: chỉ có id public Employee(int id) { _id = id; _name = "No name"; // Giá trị mặc định } // 🔹 3. Constructor 2: có id + name public Employee(int id, string name) { _id = id; _name = name; } // 🔹 4. Property ID - chỉ đọc public int ID { get { return _id; } } // 🔹 5. Property Name - đọc/ghi public string Name { get { return _name; } set { if (value.Length < 3) throw new Exception("Name must be at least 3 characters!"); _name = value; } } // 🔹 6. Abstract method - bắt buộc class con phải override public abstract void ShowInfo(); }

🧩 III. Class Programmer (kế thừa Employee, implements IPerson)

🎯 Mục tiêu:

  • Kế thừa Employee

  • Cài đặt interface IPerson

  • Có thêm 3 field: _skills, _DOB, _age

  • 2 constructor

  • Các property override từ interface

  • Override ShowInfo()

🧠 Code + Giải thích:

public class Programmer : Employee, IPerson { // 🔹 1. Fields riêng private string _skills; private DateTime _DOB; private int _age; // 🔹 2. Constructor 1: id + name public Programmer(int id, string name) : base(id, name) { _skills = string.Empty; _DOB = DateTime.Now; } // 🔹 3. Constructor 2: id + name + skills + DOB public Programmer(int id, string name, string skills, DateTime dob) : base(id, name) { _skills = skills; _DOB = dob; } // 🔹 4. Property Skills (implement từ IPerson) public string Skills { get { return _skills; } set { if (value.Length < 1) throw new Exception("Skills cannot be empty!"); _skills = value; } } // 🔹 5. Property DateOfBirth (read-only) public DateTime DateOfBirth { get { return _DOB; } } // 🔹 6. Property Age (read-only, tính theo DOB) public int Age { get { return DateTime.Now.Year - _DOB.Year; } } // 🔹 7. Override method ShowInfo() public override void ShowInfo() { Console.WriteLine($"Id: {ID} | Name: {Name} | Skills: {Skills} | DOB: {_DOB.ToShortDateString()} | Age: {Age}"); } }

🧩 IV. Class HiredProgrammers

🎯 Mục tiêu:

  • Quản lý danh sách List<Programmer>

  • Có constructor nhận capacity

  • 2 method:

    • AddNew(Programmer p) — thêm vào danh sách, nếu đầy thì Exception

    • ShowFilterInfo(int underAge) — in ra các lập trình viên có Age <= underAge

🧠 Code + Giải thích:

public class HiredProgrammers { private List<Programmer> HPGM; private int capacity; // 🔹 Constructor public HiredProgrammers(int capacity) { this.capacity = capacity; HPGM = new List<Programmer>(capacity); } // 🔹 AddNew method public void AddNew(Programmer prog) { if (HPGM.Count >= capacity) throw new Exception("List is full!"); HPGM.Add(prog); } // 🔹 ShowFilterInfo method public int ShowFilterInfo(int underAge) { int count = 0; foreach (var p in HPGM) { if (p.Age <= underAge) { p.ShowInfo(); count++; } } return count; } }

🧩 V. Class Test (Main Program)

🎯 Mục tiêu:

  • Tạo đối tượng HiredProgrammers

  • Nhập 3 programmer (dùng try-catch)

  • Nhập giá trị underAge

  • Gọi ShowFilterInfo()

🧠 Code + Giải thích:

class Test { static void Main(string[] args) { HiredProgrammers myEmployee = new HiredProgrammers(3); for (int i = 0; i < 3; i++) { try { Console.WriteLine($"Enter info for programmer {i + 1}:"); Console.Write("ID: "); int id = int.Parse(Console.ReadLine()); Console.Write("Name: "); string name = Console.ReadLine(); Console.Write("Skills: "); string skills = Console.ReadLine(); Console.Write("Date of Birth (yyyy-mm-dd): "); DateTime dob = DateTime.Parse(Console.ReadLine()); Programmer p = new Programmer(id, name, skills, dob); myEmployee.AddNew(p); } catch (Exception ex) { Console.WriteLine($"Error: {ex.Message}"); } } Console.Write("\nEnter underage value to filter: "); int underAge = int.Parse(Console.ReadLine()); Console.WriteLine($"\nList of programmers age <= {underAge}:"); int count = myEmployee.ShowFilterInfo(underAge); Console.WriteLine($"Total: {count}"); } }

Tổng kết chức năng

LớpChức năng chính
IPersonĐịnh nghĩa khung cho thông tin cá nhân
EmployeeLớp trừu tượng mô tả nhân viên cơ bản
ProgrammerLớp con cụ thể cho lập trình viên
HiredProgrammersQuản lý danh sách lập trình viên
TestChương trình chính, nhập và xử lý dữ liệu


📁 Models/Customer.cs

using System; namespace Hotels.Models { public class Customer { public string CMTND { get; set; } public string Fullname { get; set; } public int Age { get; set; } public string Gender { get; set; } public string Address { get; set; } public Customer() { } public Customer(string cmtnd, string fullname, int age, string gender, string address) { CMTND = cmtnd; Fullname = fullname; Age = age; Gender = gender; Address = address; } public void Input() { Console.Write("Nhap CMTND: "); CMTND = Console.ReadLine(); InputWithoutCMTND(); } public void InputWithoutCMTND() { Console.Write("Nhap ten: "); Fullname = Console.ReadLine(); Console.Write("Nhap tuoi: "); Age = int.Parse(Console.ReadLine()); Console.Write("Nhap gioi tinh: "); Gender = Console.ReadLine(); Console.Write("Nhap dia chi: "); Address = Console.ReadLine(); } public void Display() { Console.WriteLine($"CMTND: {CMTND}, Ten: {Fullname}, Tuoi: {Age}, Gioi tinh: {Gender}, Dia chi: {Address}"); } } }

📁 Models/Room.cs

using System; namespace Hotels.Models { public class Room { public string RoomNo { get; set; } public string RoomName { get; set; } public float Price { get; set; } public int PeopleMax { get; set; } public int Floor { get; set; } public Room() { } public Room(string roomNo, string roomName, float price, int peopleMax, int floor) { RoomNo = roomNo; RoomName = roomName; Price = price; PeopleMax = peopleMax; Floor = floor; } public void Input() { Console.Write("Nhap ma phong: "); RoomNo = Console.ReadLine(); Console.Write("Nhap ten phong: "); RoomName = Console.ReadLine(); Console.Write("Nhap gia: "); Price = float.Parse(Console.ReadLine()); Console.Write("Nhap so nguoi toi da: "); PeopleMax = int.Parse(Console.ReadLine()); Console.Write("Nhap tang: "); Floor = int.Parse(Console.ReadLine()); } public void Display() { Console.WriteLine($"Ma phong: {RoomNo}, Ten phong: {RoomName}, Gia: {Price}, So nguoi toi da: {PeopleMax}, Tang: {Floor}"); } } }

📁 Models/Hotel.cs

using System; using System.Collections.Generic; namespace Hotels.Models { 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.Write("Nhap ma KS: "); HotelCode = Console.ReadLine(); Console.Write("Nhap ten KS: "); Name = Console.ReadLine(); Console.Write("Nhap dia chi: "); Address = Console.ReadLine(); Console.Write("Nhap loai KS (VIP/Binh Dan): "); Type = Console.ReadLine(); Console.Write("Nhap so phong cua khach san: "); int n = int.Parse(Console.ReadLine()); for (int i = 0; i < n; i++) { Console.WriteLine($"\nNhap thong tin phong thu {i + 1}:"); Room room = new Room(); room.Input(); RoomList.Add(room); } } public void Display() { Console.WriteLine($"\nMa KS: {HotelCode}, Ten KS: {Name}, Dia Chi: {Address}, Loai: {Type}"); foreach (Room room in RoomList) { room.Display(); } } } }

📁 Models/Book.cs

using System; using System.Collections.Generic; namespace Hotels.Models { 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 khach san!"); return; } Console.Write("Nhap CMTND: "); CMTND = Console.ReadLine(); bool exists = false; foreach (var c in customers) { if (c.CMTND.Equals(CMTND)) { exists = true; break; } } if (!exists) { Console.WriteLine("Khach hang moi - nhap thong tin:"); Customer newCus = new Customer(); newCus.CMTND = CMTND; newCus.InputWithoutCMTND(); customers.Add(newCus); } // Chon khach san Hotel currentHotel = null; do { Console.WriteLine("Danh sach khach san:"); foreach (var h in hotels) Console.WriteLine($"Ma KS: {h.HotelCode}, Ten KS: {h.Name}"); Console.Write("Nhap ma KS: "); string code = Console.ReadLine(); currentHotel = hotels.Find(h => h.HotelCode.Equals(code)); if (currentHotel == null) Console.WriteLine("Khong tim thay ma KS. Vui long nhap lai!"); } while (currentHotel == null); // Chon phong Room currentRoom = null; do { Console.WriteLine("Danh sach phong:"); foreach (var r in currentHotel.RoomList) Console.WriteLine($"Ma Phong: {r.RoomNo}, Ten Phong: {r.RoomName}"); Console.Write("Nhap ma phong: "); string roomNo = Console.ReadLine(); currentRoom = currentHotel.RoomList.Find(r => r.RoomNo.Equals(roomNo)); if (currentRoom == null) Console.WriteLine("Khong tim thay ma phong. Vui long nhap lai!"); else RoomNo = roomNo; } while (currentRoom == null); Console.Write("Nhap ngay CheckIn (dd/MM/yyyy): "); CheckIn = ConvertStringToDate(Console.ReadLine()); Console.Write("Nhap ngay CheckOut (dd/MM/yyyy): "); CheckOut = ConvertStringToDate(Console.ReadLine()); HotelCode = currentHotel.HotelCode; } private DateTime ConvertStringToDate(string value) { return DateTime.ParseExact(value, "dd/MM/yyyy", null); } } }

📁 Program.cs

using System; using System.Collections.Generic; using Hotels.Models; namespace Hotels { class Program { static void Main(string[] args) { 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: InputHotels(hotels); break; case 2: DisplayHotels(hotels); break; case 3: Booking(customers, hotels, books); break; case 4: FindAvailableRooms(hotels, books); break; case 5: CalculateRevenue(hotels, books); break; case 6: SearchCustomerHistory(customers, hotels, books); break; case 7: Console.WriteLine("Thoat chuong trinh..."); break; default: Console.WriteLine("Lua chon khong hop le!"); break; } } while (choose != 7); } static void ShowMenu() { Console.WriteLine("\n=========== MENU ==========="); Console.WriteLine("1. Nhap thong tin khach san"); Console.WriteLine("2. Hien thi thong tin khach san"); Console.WriteLine("3. Dat phong"); Console.WriteLine("4. Tim phong con trong"); Console.WriteLine("5. Thong ke doanh thu khach san"); Console.WriteLine("6. Tim kiem thong tin khach hang"); Console.WriteLine("7. Thoat"); Console.Write("Chon chuc nang: "); } static void InputHotels(List<Hotel> hotels) { Console.Write("Nhap so luong khach san: "); int n = int.Parse(Console.ReadLine()); for (int i = 0; i < n; i++) { Console.WriteLine($"\nNhap thong tin khach san thu {i + 1}:"); Hotel h = new Hotel(); h.Input(); hotels.Add(h); } } static void DisplayHotels(List<Hotel> hotels) { if (hotels.Count == 0) { Console.WriteLine("Chua co du lieu!"); return; } foreach (var h in hotels) h.Display(); } static void Booking(List<Customer> customers, List<Hotel> hotels, List<Book> books) { Book book = new Book(); book.Input(customers, hotels); books.Add(book); Console.WriteLine("Dat phong thanh cong!"); } static void FindAvailableRooms(List<Hotel> hotels, List<Book> books) { if (hotels.Count == 0) { Console.WriteLine("Chua co du lieu!"); return; } Console.Write("Nhap ma khach san: "); string code = Console.ReadLine(); Hotel hotel = hotels.Find(h => h.HotelCode.Equals(code)); if (hotel == null) { Console.WriteLine("Khong tim thay KS!"); return; } Console.Write("Nhap ngay CheckIn (dd/MM/yyyy): "); DateTime checkIn = DateTime.ParseExact(Console.ReadLine(), "dd/MM/yyyy", null); Console.Write("Nhap ngay CheckOut (dd/MM/yyyy): "); DateTime checkOut = DateTime.ParseExact(Console.ReadLine(), "dd/MM/yyyy", null); Console.WriteLine("\nCac phong trong:"); foreach (var room in hotel.RoomList) { bool occupied = false; foreach (var b in books) { if (b.HotelCode == code && b.RoomNo == room.RoomNo) { if (!(checkOut <= b.CheckIn || checkIn >= b.CheckOut)) { occupied = true; break; } } } if (!occupied) Console.WriteLine($"Ma phong: {room.RoomNo}, Ten phong: {room.RoomName}"); } } static void CalculateRevenue(List<Hotel> hotels, List<Book> books) { foreach (var hotel in hotels) { float total = 0; foreach (var b in books) { if (b.HotelCode == hotel.HotelCode) { Room room = hotel.RoomList.Find(r => r.RoomNo == b.RoomNo); if (room != null) { int days = (b.CheckOut - b.CheckIn).Days; total += days * room.Price; } } } Console.WriteLine($"Khach san {hotel.Name} thu duoc: {total} VND"); } } static void SearchCustomerHistory(List<Customer> customers, List<Hotel> hotels, List<Book> books) { Console.Write("Nhap CMTND khach hang: "); string cmt = Console.ReadLine(); Customer customer = customers.Find(c => c.CMTND.Equals(cmt)); if (customer == null) { Console.WriteLine("Khong tim thay khach hang!"); return; } Console.WriteLine($"Khach hang {customer.Fullname} da den cac khach san:"); foreach (var b in books) { if (b.CMTND == cmt) { Hotel hotel = hotels.Find(h => h.HotelCode.Equals(b.HotelCode)); if (hotel != null) Console.WriteLine($"- {hotel.Name}"); } } } } }

Tổng kết:

  • Đã hoàn thiện đầy đủ 7 chức năng trong menu.

  • Có kiểm tra lỗi nhập, danh sách trống, nhập lại khi sai.

  • Tính doanh thu tự động theo số ngày × giá phòng.

  • Tìm kiếm khách hàng hiển thị danh sách khách sạn họ từng đến.



Đăng nhập để làm bài kiểm tra

Chưa có kết quả nào trước đó

×