Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#如何在我的酒店管理系统中添加继承_C#_Class_Inheritance - Fatal编程技术网

C#如何在我的酒店管理系统中添加继承

C#如何在我的酒店管理系统中添加继承,c#,class,inheritance,C#,Class,Inheritance,我想在我的酒店管理系统中添加继承和更多的类,有什么想法吗? 我正在开发控制台应用程序,如果有人能给我更多的添加到这个程序中,我将不胜感激 该计划旨在复制一个基本的酒店客房预订计划。创建hotel number的实例后,通过调用checkIn()方法,程序检查是否有可用的房间,如果有,则保留房间 但是,如果在分配所有房间后,有人从一个房间(通过checkOut()方法)退房(例如1号房间),然后试图入住该房间,则该方法不起作用。当checkIn()调用hasRoomsAvailable()方法时会

我想在我的酒店管理系统中添加继承和更多的类,有什么想法吗? 我正在开发控制台应用程序,如果有人能给我更多的添加到这个程序中,我将不胜感激

该计划旨在复制一个基本的酒店客房预订计划。创建hotel number的实例后,通过调用checkIn()方法,程序检查是否有可用的房间,如果有,则保留房间

但是,如果在分配所有房间后,有人从一个房间(通过checkOut()方法)退房(例如1号房间),然后试图入住该房间,则该方法不起作用。当checkIn()调用hasRoomsAvailable()方法时会出现问题,在这种情况下,由于currentRoomNumber为5,该方法返回false而不是true

using System;

namespace HotelManagement
{
    //otel sınıfı
    public class Hotel
    {
        private bool[] available;
        private int totalNumberOfRooms;
        private int currentRoomNumber;

        // oda sayısını bilirleyecek
        private Hotel(int totalNumberOfRooms)
        {
            this.totalNumberOfRooms = totalNumberOfRooms;
            available = new bool[totalNumberOfRooms];

            for (int i = 0; i < totalNumberOfRooms; i++)
                available[i] = true;
        }

        //Returns true if room is available
        private bool hasRoomsAvailable()
        {
            if (currentRoomNumber < totalNumberOfRooms &&
                available[currentRoomNumber])
                return available[currentRoomNumber];
            else
                return false;
        }

        //Time Complexity: O(1)

        //en azından bir oda olup olmadığını kontrol eder ve rezerv eder
        private int checkIn()
        {
            if (hasRoomsAvailable())
            {
                available[currentRoomNumber] = false;
                return ++currentRoomNumber;
            }
            else
                return -1;
        }
        

        //Check out method
        private void checkOut(int roomNumber)
        {
            if (roomNumber <= totalNumberOfRooms && roomNumber != -1)
            {
                if (available[roomNumber - 1] == false)
                {
                    available[roomNumber - 1] = true;
                    Console.WriteLine("Check out oda: {0}", roomNumber);
                }
                else
                    Console.WriteLine("geçersiz Check Out : {0}", roomNumber);
            }
            else
                Console.WriteLine("yanlış oda numarası: {0}", roomNumber);
        }
        //Time Complexity: O(1)

        public static void Main(string[] args)
        {
            //Create an instance of 5 odalı bir otel
            Hotel hotel = new Hotel(5);
            int roomNum = -1;

            if (hotel.hasRoomsAvailable())
            {
                roomNum = hotel.checkIn();
                Console.WriteLine("tahsis edilen oda: {0}", roomNum);

                roomNum = hotel.checkIn();
                Console.WriteLine("tahsis edilen oda: {0}", roomNum);

                roomNum = hotel.checkIn();
                Console.WriteLine("tahsis edilen oda: {0}", roomNum);

                roomNum = hotel.checkIn();
                Console.WriteLine("tahsis edilen oda: {0}", roomNum);

                roomNum = hotel.checkIn();
                Console.WriteLine("tahsis edilen oda: {0}", roomNum);
            }

            hotel.checkOut(1);
            roomNum = hotel.checkIn();

            Console.WriteLine("tahsis edilen oda budur: {0}", roomNum);

            //pause program output on console
            Console.ReadLine();
        }
    }
}
使用系统;
命名空间酒店管理
{
//奥特尔sınıfı
公务舱酒店
{
私人bool[]可用;
私人房间;
私人房间号码;
//奥达·萨伊恩·比利勒耶切克(oda sayısınıbilirleyecek)
私人酒店(国际总客房数)
{
this.totalNumberOfRooms=总房间数;
可用=新bool[房间总数];
对于(int i=0;i如果(roomNumber作为一种通用方法,我建议编程时完全按照人类的方式(没有PC).他们会有一张纸写下当前房间号吗?可能不会。他们会有一张包含所有房间的桌子吗?是的。当有人入住时,他们会在桌子上加一个十字,当有人退房时会把它擦掉吗?是的。他们如何找到一个空房间

解决您的问题不需要继承。您正在尝试按照房间号的顺序分配房间。您可以使用
currentRoomNumber
跟踪这一点。它不是这样工作的。您可以根据床数、平方米大小、价格、楼层等来分配房间

相反,您应该遍历数组
bool available[]
并找到一个
false
。因为这看起来像是学习或家庭作业,所以我将把实现留给您。提示:使用
for
循环,跟踪索引并将
从循环中打断


对于面向对象的设计,可以执行以下操作:

  • 写下管理酒店意味着什么的句子
  • 识别名词,它们将成为类
  • 识别动词,它们将成为方法
  • 检查同义词,例如“房间”=“公寓”或“结帐”=“离开”,并仅选择一个单词
  • 把动词赋给名词
  • 想一想哪个动词需要哪些信息。如果信息不是名词自己知道的话,这将成为参数


main()方法看起来很像测试。请阅读“单元测试”,并将测试代码从酒店管理应用程序中分离出来。

作为一种通用方法,我建议您完全按照人类(没有PC)的方式进行编程.他们会有一张纸写下当前房间号吗?可能不会。他们会有一张包含所有房间的桌子吗?是的。当有人入住时,他们会在桌子上加一个十字,当有人退房时会把它擦掉吗?是的。他们如何找到一个空房间

解决您的问题不需要继承。您正在尝试按照房间号的顺序分配房间。您可以使用
currentRoomNumber
跟踪这一点。它不是这样工作的。您可以根据床数、平方米大小、价格、楼层等来分配房间

相反,您应该遍历数组
bool available[]
并找到一个
false
。因为这看起来像是学习或家庭作业,所以我将把实现留给您。提示:使用
for
循环,跟踪索引并将
从循环中打断


对于面向对象的设计,可以执行以下操作:

  • 写下管理酒店意味着什么的句子
  • 识别名词,它们将成为类
  • 识别动词,它们将成为方法
  • 检查同义词,例如“房间”=“公寓”或“结帐”=“离开”,并仅选择一个单词
  • 把动词赋给名词
  • 想一想哪个动词需要哪些信息。如果信息不是名词自己知道的话,这将成为参数


main()方法看起来很像测试。请阅读“单元测试”并将测试代码与您的酒店管理应用程序分开。

如果您真的对代码不起作用的原因感兴趣,那么在签出时,您不会将变量
currentRoomNumber
设置为您刚签出的房间号。在签出方法中添加此行可修复以下问题:

                available[roomNumber - 1] = true;
                currentRoomNumber = roomNumber - 1;
                Console.WriteLine("Check out oda: {0}", roomNumber);

如果您真的对代码不起作用的原因感兴趣,那么在签出时,您不会将变量
currentRoomNumber
设置为刚签出的房间号。在签出方法中添加此行可修复以下问题:

                available[roomNumber - 1] = true;
                currentRoomNumber = roomNumber - 1;
                Console.WriteLine("Check out oda: {0}", roomNumber);
你为什么要这么做