2017-06-09 20 views
-4

Ich frage mich, ob es eine Möglichkeit gibt, einen bestimmten Code durch den Benutzer ausführen, wenn das Programm ausgeführt wird (Das Programm ist Befehlszeilenschnittstelle).C# Ausführen von spezifischen Code

Das Programm führt alles in Ordnung, aber das ist nicht was ich will.

Hier sind zwei Screenshots wie das Programm läuft und der Code dahinter.

[Program while running]

 // Read all the bookings between dates: 
     Console.WriteLine("Input start date in the format yyyy-mm-dd"); 
     DateTime bookingStartDate = DateTime.Parse(Console.ReadLine()); 
     Console.WriteLine("Input end date in the format yyyy-mm-dd"); 
     DateTime bookingEndDate = DateTime.Parse(Console.ReadLine()); 
     DbBookings bookings = new DbBookings(bookingStartDate, bookingEndDate); 
     foreach (DbBooking booking in bookings.Bookings) 
     { 
      Console.WriteLine("booking start date = " + booking.startDate); 
      Console.WriteLine("booking end date = " + booking.endDate); 
      Console.WriteLine("booking room No = " + booking.roomNo); 
      Console.WriteLine("booking guest = " + booking.guestName); 
      Console.WriteLine("booking guest phone No = " + booking.guestPhone); 
      Console.WriteLine("booking cost = " + booking.cost); 
     } 


     //Create a new booking 
     Console.WriteLine("Bed and breakfast create new booking"); 

     Console.WriteLine("Input start date in the format yyyy-mm-dd"); 
     DateTime startDate = DateTime.Parse(Console.ReadLine()); 
     Console.WriteLine("Input end date in the format yyyy-mm-dd"); 
     DateTime endDate = DateTime.Parse(Console.ReadLine()); 
     Console.WriteLine("What room?"); 
     int room = int.Parse(Console.ReadLine()); 
     Console.WriteLine("Customer Name"); 
     string name = Console.ReadLine(); 
     Console.WriteLine("Customer phone number"); 
     string phone = Console.ReadLine(); 
     double cost = (endDate.ToOADate() - startDate.ToOADate()) * 29; 

     DbBooking newBooking = new DbBooking(
      startDate, 
      startDate, 
      room, 
      name, 
      phone, 
      cost 
      ); 
     Console.ReadLine(); 

Was ich das Programm wollen 2 Fragen stellen zu tun ist, ‚Möchten Sie die Buchungen lesen möchten‘ und ‚Haben Sie neue Buchung hinzufügen möchten‘ würden Sie diese beantworten zu Fragen durch Eingabe von "1" oder "2"

+0

[diese Antwort] (https://stackoverflow.com/a/11141262/5174469) sollten Sie den richtigen Start geben, wie eine solche Schnittstelle erstellen –

+0

Test-Argumente zählen. Wenn Null, werden die Eingaben von ReadLine() erhalten. Wenn größer als Null Werte von args-Array erhalten. Verwenden Sie: args.Count() – jdweng

+0

Veröffentlichen Sie keine Bilder Ihres Codes, kopieren Sie den Code in die Frage, markieren Sie ihn und drücken Sie die Symbolleistenschaltfläche, die aussieht wie '{}', wenn der Code im Vorschaufenster nicht richtig formatiert aussieht . –

Antwort

0

Sie müssen Ihrem Code Logik hinzufügen, wenn Sie möchten, dass sich das Verhalten auf der Basis verschiedener Benutzereingabewerte unterschiedlich verhält. This link wird erklären, wie die Schlüsselwörter if, else if und else funktionieren. Wenn Sie Ihr Wissen über die Verzweigung erweitern möchten, können Sie auch switch statements verwenden.

static void Main(string[] args) { 
    Console.WriteLine("Do you want to read the bookings?"); 
    string response = Console.ReadLine(); 
    if (response == "1") 
     ReadBookings(); 
    else { 
     Console.WriteLine("Do you want to create a booking?"); 
     response = Console.ReadLine(); 
     if (response == "1") 
      CreateBooking(); 
    } 

    Console.WriteLine("Press any key to exit."); 
    Console.ReadKey(); 
} 

static void ReadBookings() { 
    DateTime startDate, endDate; 

    Console.WriteLine("Input start date in the format yyyy-mm-dd"); 
    startDate = DateTime.Parse(Console.ReadLine()); 

    Console.WriteLine("Input end date in the format yyyy-mm-dd"); 
    endDate = DateTime.Parse(Console.ReadLine()); 

    DbBookings bookings = new DbBookings(bookingStartDate, bookingEndDate); 
    foreach (DbBooking booking in bookings.Bookings) 
     Console.WriteLine($"booking start date: {booking.startDate}\nbooking end date: {booking.endDate}\nbooking room No: {booking.roomNo}\nbooking guest: {booking.guestName}\nbooking guest phone No: {booking.guestPhone}\nbooking cost: {booking.cost}); 
} 

static void CreateBooking() { 
    DateTime startDate, endDate; 
    string name, phone; 
    int room; 
    double cost; 

    Console.WriteLine("Bed and breakfast create new booking"); 
    Console.WriteLine("Input start date in the format yyyy-mm-dd"); 
    startDate = DateTime.Parse(Console.ReadLine()); 

    Console.WriteLine("Input end date in the format yyyy-mm-dd"); 
    endDate = DateTime.Parse(Console.ReadLine()); 

    Console.WriteLine("What room?"); 
    room = int.Parse(Console.ReadLine()); 

    Console.WriteLine("Customer Name"); 
    name = Console.ReadLine(); 

    Console.WriteLine("Customer phone number"); 
    phone = Console.ReadLine(); 
    cost = (endDate.ToOADate() - startDate.ToOADate()) * 29; 

    DbBooking newBooking = new DbBooking(startDate, endDate, room, name, phone, cost); 
} 
+0

Beachten Sie auch, dass Console.WriteLine Ersatz wie String.Format behandelt, und C# 6.0 hat das '$' Zeichen, das sich gleich, aber in einer lesbareren Weise verhält. Sie können es genau wie das '@' Wort verwenden. – lxxtacoxxl

Verwandte Themen