2015-09-13 55 views
-3

这是简单的控制台应用程序租房。方法Bill有问题,当我测试应用程序时,它总是0。我与房间的价格的多个预留天数,但somethig是错误的。有人能帮我吗?代码C有问题#

static void Main(string[] args) 
    { 
     Room RoomOne = new Room(11, 1, 6, false); 
     Room RoomTwo = new Room(21, 2, 5, false); 
     Room RoomThree = new Room(31, 3, 9, true); 
     Customer CustomerOne = new Customer("Bob Marley", "Male", 39, 1); 
     Customer CustomerTwo = new Customer("Isaac Newton", "Male", 67, 2); 
     Customer CustomerThree = new Customer("Frankenstein", "Male", 50, 3); 
     Console.WriteLine(""); 
     CustomerOne.ReserveRoom(); 
     RoomOne.IsRoomOccupied(); 
     Console.WriteLine(""); 
     CustomerTwo.ReserveRoom(); 
     RoomTwo.IsRoomOccupied(); 
     Console.WriteLine(""); 
     CustomerThree.ReserveRoom(); 
     RoomThree.IsRoomOccupied(); 
     Console.ReadKey(); 
    } 

class Customer : Room 
{ 
    private string Name; 
    private string Gendre; 
    private int Age; 
    private int ID; 

    public Customer() 
    { 
    } 

    public Customer(string name, string gendre, int age, int id) 
    { 
     Name = name; 
     Gendre = gendre; 
     Age = age; 
     ID = id; 
    } 

    public void ReserveRoom() 
    { 
     Console.WriteLine("Welcome to Plaza Hotel!!!\nWhat kind of room would you like? We have Standard, Moderate and Superior."); 
     string roomtype = Console.ReadLine(); 

     switch (roomtype) 
     { 
      case "Standard": 
        { 
         Standard RoomOne = new Standard(); 
        } 
        break; 
      case "Moderate": 
        { 
         Standard RoomTwo = new Standard(); 
        } 
        break; 
      case "Superior": 
        { 
         Standard RoomThree = new Standard(); 
        } 
        break; 
      default: 
       { 
        Console.WriteLine("That type of room doesn't exist!!!"); 
       } 
       break; 
     } 
    } 
} 

class Room 
{ 
    private int RoomNumber; 
    private int FloorNumber; 
    private double Price; 
    private int NumberOfDaysOccupied; 
    private bool Occupied = false; 
    private string TypeOfRoom; 

    public Room() 
    { 

    } 
    public Room(int room, int floor,int nodo, bool occupied) 
    { 
     RoomNumber = room; 
     FloorNumber = floor; 
     NumberOfDaysOccupied = nodo; 
     Occupied = occupied; 
    } 

    public void NumberOfRoom() 
    { 
     Console.WriteLine("Room number is: {0}", RoomNumber); 
    } 

    public void NumberOfFloor() 
    { 
     Console.WriteLine("Floor number is: {0}", FloorNumber); 
    } 

    public double Bill() 
    { 
     return NumberOfDaysOccupied * Price; 
    } 

    public void IsRoomOccupied() 
    { 
     if (Occupied == true) 
     { 
      Console.WriteLine("This type of room is occupied!!!"); 
     } 
     else 
     { 
      Console.WriteLine("Your room number is: {0} on floor: {1}, reserve for: {2} and your bill is: {3}" ,RoomNumber, FloorNumber, NumberOfDaysOccupied, Bill()); 
     } 
    } 

    public class Standard : Room 
    { 
     public Standard() 
     { 
      Price = 50; 
      TypeOfRoom = "Standard"; 
     } 
    } 

    public class Moderate : Room 
    { 
     public Moderate() 
     { 
      Price = 100; 
      TypeOfRoom = "Moderate"; 
     } 
    } 

    public class Superior : Room 
    { 
     public Superior() 
     { 
      Price = 200; 
      TypeOfRoom = "Superior"; 
     } 
    } 
} 
+0

后的信息我们需要的不是整个代码 – deathismyfriend

+0

的代码没有按甚至不会为我编译。检查你的构造函数参数。 – Cyral

+0

我擦除获取并设置属性为短代码... – dozvola

回答

-1

您的标准/中等/高级类继承Room,但不要调用Room上的构造函数来设置价格。如果不提供要调用的基类构造函数,则会调用默认的构造函数,但不会设置任何选项。

你需要更新你的房间更喜欢:

public class Standard : Room 
{ 
    public Standard(int room, int floor, int nodo, bool occupied) 
     : base(room, floor, nodo, occupied) 
    { 
     Price = 50; 
     TypeOfRoom = "Standard"; 
    } 
} 

然后设置你的房间,如:只

Room standardRoom = new Standard(11, 1, 6, false); 
+0

我做到了,但房间的价格仍然是0 ... – dozvola

+0

您是否正在查看Room对象或Standard对象的价格属性? – Steve

+0

A dont understand ...在哪里可以更改此代码Room standardRoom = new Standard(11,1,6,false);在我的主要方法或储备房间... – dozvola