Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 8.51 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Threading;
  7.  
  8. namespace ConsoleApp1
  9. {
  10.     class Program
  11.     {
  12.  
  13.         public enum ItemType { MessageType, PersonType, CarType };
  14.  
  15.  
  16.         #region Abstract MenuItem class
  17.         abstract public class MenuItem
  18.         {
  19.             public MenuItem()
  20.             {
  21.                 timeCreated = DateTime.Now;
  22.             }
  23.  
  24.             public DateTime timeCreated { get; private set; }
  25.  
  26.             public virtual void Print()
  27.             {
  28.                 Console.Write("[" + timeCreated.ToString() + "]");
  29.             }
  30.         }
  31.         #endregion
  32.  
  33.         #region Message class
  34.         public class Message : MenuItem
  35.         {
  36.             private Message()
  37.             {
  38.             }
  39.  
  40.             public Message(string newMsg) : base()
  41.             {
  42.                 msg = newMsg;
  43.             }
  44.             public override void Print()
  45.             {
  46.                 base.Print();
  47.                 Console.Write(" [Message] " + msg);
  48.             }
  49.             private string msg;
  50.         }
  51.         #endregion
  52.  
  53.         #region Person class
  54.         public class Person : MenuItem
  55.         {
  56.             private Person()
  57.             {
  58.             }
  59.  
  60.             public Person(string newName, string newLastName, int newAge) : base()
  61.             {
  62.                 name = newName;
  63.                 lastName = newLastName;
  64.                 age = newAge;
  65.             }
  66.  
  67.             public override void Print()
  68.             {
  69.                 base.Print();
  70.                 Console.Write(" [Person] " + name + " " + lastName + ", " + age);
  71.             }
  72.  
  73.             private string name;
  74.             private string lastName;
  75.             private int age;
  76.         }
  77.         #endregion
  78.  
  79.         #region Car class
  80.         public class Car : MenuItem
  81.         {
  82.             private Car()
  83.             {
  84.             }
  85.  
  86.             public Car(string newModel, int newYearReleased) : base()
  87.             {
  88.                 model = newModel;
  89.                 yearReleased = newYearReleased;
  90.             }
  91.  
  92.             public override void Print()
  93.             {
  94.                 base.Print();
  95.                 Console.Write(" [Car] " + model + " " + yearReleased);
  96.             }
  97.  
  98.             private string model;
  99.             private int yearReleased;
  100.         }
  101.         #endregion
  102.  
  103.         public class DataHolder
  104.         {
  105.             public DataHolder()
  106.             {
  107.                 items = new List<MenuItem>();
  108.             }
  109.  
  110.             public void AddItem(ItemType type)
  111.             {
  112.                 if (type == ItemType.MessageType)
  113.                 {
  114.                     Console.Write("Message: ");
  115.                     Message tempMsg = new Message(Console.ReadLine());
  116.                     items.Add(tempMsg);
  117.                 }
  118.                 else if (type == ItemType.PersonType)
  119.                 {
  120.                     Console.Write("Name: ");
  121.                     string tempName = Console.ReadLine();
  122.  
  123.                     Console.Write("Last name: ");
  124.                     string tempLastName = Console.ReadLine();
  125.  
  126.                     Console.Write("Age: ");
  127.                     try
  128.                     {
  129.                         int tempAge = int.Parse(Console.ReadLine());
  130.  
  131.                         items.Add(new Person(tempName, tempLastName, tempAge));
  132.                     }
  133.                     catch (Exception e)
  134.                     {
  135.                         Console.WriteLine("Incorrect age! Press any key to continue.");
  136.                         Console.ReadKey(true);
  137.                         return;
  138.                     }
  139.                 }
  140.                 else if (type == ItemType.CarType)
  141.                 {
  142.                     Console.Write("Model: ");
  143.                     string tempModel = Console.ReadLine();
  144.  
  145.                     Console.Write("Year released: ");
  146.                     try
  147.                     {
  148.                         int tempYear = int.Parse(Console.ReadLine());
  149.  
  150.                         while (tempYear < 0 || tempYear > DateTime.Now.Year)
  151.                         {
  152.                             Console.Write("Year is smaller that zero or greater the current year! Try again!\n");
  153.                             tempYear = int.Parse(Console.ReadLine());
  154.                         }
  155.  
  156.                         items.Add(new Car(tempModel, tempYear));
  157.                     }
  158.                     catch (Exception e)
  159.                     {
  160.                         Console.WriteLine("Incorrect year! Press any key to continue.");
  161.                         Console.ReadKey(true);
  162.                         return;
  163.                     }
  164.                 }
  165.             }
  166.             public void PrintData()
  167.             {
  168.                 for (int i = 0; i < items.Count; ++i)
  169.                 {
  170.                     Console.Write(i + 1 + ". ");
  171.                     items[i].Print();
  172.                     Console.WriteLine();
  173.                 }
  174.                 Console.ReadKey(true);
  175.             }
  176.             public void RemoveItem(int itemNumber)
  177.             {
  178.                 if (itemNumber < 1 || itemNumber > items.Count)
  179.                 {
  180.                     Console.Write("No such item number! Press any key to continue.");
  181.                     Console.ReadKey(true);
  182.                     return;
  183.                 }
  184.  
  185.                 items.RemoveAt(itemNumber - 1);
  186.             }
  187.  
  188.             private List<MenuItem> items;
  189.         }
  190.  
  191.         public class MainMenu
  192.         {
  193.             private DataHolder dataHolder;
  194.  
  195.             public MainMenu()
  196.             {
  197.                 dataHolder = new DataHolder();
  198.             }
  199.  
  200.             public void Start()
  201.             {
  202.                 char currentChoice = '1';
  203.  
  204.                 while(true)
  205.                 {
  206.                     Console.Clear();
  207.                     Console.WriteLine("1. Print items");
  208.                     Console.WriteLine("2. Add item");
  209.                     Console.WriteLine("3. Remove item");
  210.                     Console.WriteLine("Q. Exit");
  211.  
  212.                     currentChoice = Console.ReadKey(true).KeyChar;
  213.  
  214.                     if (currentChoice == '1')
  215.                     {
  216.                         Console.Clear();
  217.                         dataHolder.PrintData();
  218.                     }
  219.                     else if (currentChoice == '2')
  220.                     {
  221.                         Console.Clear();
  222.                         Console.WriteLine("1. Message");
  223.                         Console.WriteLine("2. Person");
  224.                         Console.WriteLine("3. Car");
  225.  
  226.                         char itemChoice = Console.ReadKey().KeyChar;
  227.  
  228.                         Console.Clear();
  229.                         if (itemChoice == '1')
  230.                         {
  231.                             dataHolder.AddItem(ItemType.MessageType);
  232.                         }
  233.                         else if (itemChoice == '2')
  234.                         {
  235.                             dataHolder.AddItem(ItemType.PersonType);
  236.                         }
  237.                         else if (itemChoice == '3')
  238.                         {
  239.                             dataHolder.AddItem(ItemType.CarType);
  240.                         }
  241.                         else
  242.                         {
  243.                             Console.Write("No such option! Press any key to continue.");
  244.                             return;
  245.                         }
  246.                     }
  247.                     else if (currentChoice == '3')
  248.                     {
  249.                         Console.Clear();
  250.                         Console.Write("Delete item number: ");
  251.  
  252.                         int deleteNum = -1;
  253.                         try
  254.                         {
  255.                             deleteNum = int.Parse(Console.ReadLine());
  256.  
  257.                             dataHolder.RemoveItem(deleteNum);
  258.                         }
  259.                         catch (Exception e)
  260.                         {
  261.                             Console.Write("Incorrect number! Press any key to continue");
  262.                             Console.ReadKey(true);
  263.                         }
  264.                     }
  265.                     else if (currentChoice == 'Q' || currentChoice == 'q')
  266.                     {
  267.                         break;
  268.                     }
  269.                 }
  270.             }
  271.  
  272.         }
  273.         static void Main(string[] args)
  274.         {
  275.             MainMenu menu = new MainMenu();
  276.  
  277.             menu.Start();
  278.         }
  279.     }
  280. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement