Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 8.38 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.                         if (tempYear < 0 || tempYear > DateTime.Now.Year)
  151.                         {
  152.                             throw new Exception("Year is smaller that zero or greater the current year!");
  153.                         }
  154.                         items.Add(new Car(tempModel, tempYear));
  155.                     }
  156.                     catch (Exception e)
  157.                     {
  158.                         Console.WriteLine("Incorrect age! Press any key to continue.");
  159.                         Console.ReadKey(true);
  160.                         return;
  161.                     }
  162.                 }
  163.             }
  164.             public void PrintData()
  165.             {
  166.                 for (int i = 0; i < items.Count; ++i)
  167.                 {
  168.                     Console.Write(i + 1 + ". ");
  169.                     items[i].Print();
  170.                     Console.WriteLine();
  171.                 }
  172.                 Console.ReadKey(true);
  173.             }
  174.             public void RemoveItem(int itemNumber)
  175.             {
  176.                 if (itemNumber < 1 || itemNumber > items.Count)
  177.                 {
  178.                     Console.Write("No such item number! Press any key to continue.");
  179.                     Console.ReadKey(true);
  180.                     return;
  181.                 }
  182.  
  183.                 items.RemoveAt(itemNumber - 1);
  184.             }
  185.  
  186.             private List<MenuItem> items;
  187.         }
  188.  
  189.         public class MainMenu
  190.         {
  191.             private DataHolder dataHolder;
  192.  
  193.             public MainMenu()
  194.             {
  195.                 dataHolder = new DataHolder();
  196.             }
  197.  
  198.             public void Start()
  199.             {
  200.                 char currentChoice = '1';
  201.  
  202.                 while(true)
  203.                 {
  204.                     Console.Clear();
  205.                     Console.WriteLine("1. Print items");
  206.                     Console.WriteLine("2. Add item");
  207.                     Console.WriteLine("3. Remove item");
  208.                     Console.WriteLine("Q. Exit");
  209.  
  210.                     currentChoice = Console.ReadKey(true).KeyChar;
  211.  
  212.                     if (currentChoice == '1')
  213.                     {
  214.                         Console.Clear();
  215.                         dataHolder.PrintData();
  216.                     }
  217.                     else if (currentChoice == '2')
  218.                     {
  219.                         Console.Clear();
  220.                         Console.WriteLine("1. Message");
  221.                         Console.WriteLine("2. Person");
  222.                         Console.WriteLine("3. Car");
  223.  
  224.                         char itemChoice = Console.ReadKey().KeyChar;
  225.  
  226.                         Console.Clear();
  227.                         if (itemChoice == '1')
  228.                         {
  229.                             dataHolder.AddItem(ItemType.MessageType);
  230.                         }
  231.                         else if (itemChoice == '2')
  232.                         {
  233.                             dataHolder.AddItem(ItemType.PersonType);
  234.                         }
  235.                         else if (itemChoice == '3')
  236.                         {
  237.                             dataHolder.AddItem(ItemType.CarType);
  238.                         }
  239.                         else
  240.                         {
  241.                             Console.Write("No such option! Press any key to continue.");
  242.                             return;
  243.                         }
  244.                     }
  245.                     else if (currentChoice == '3')
  246.                     {
  247.                         Console.Clear();
  248.                         Console.Write("Delete item number: ");
  249.  
  250.                         int deleteNum = -1;
  251.                         try
  252.                         {
  253.                             deleteNum = int.Parse(Console.ReadLine());
  254.  
  255.                             dataHolder.RemoveItem(deleteNum);
  256.                         }
  257.                         catch (Exception e)
  258.                         {
  259.                             Console.Write("Incorrect number! Press any key to continue");
  260.                         }
  261.                     }
  262.                     else if (currentChoice == 'Q' || currentChoice == 'q')
  263.                     {
  264.                         break;
  265.                     }
  266.                 }
  267.             }
  268.  
  269.         }
  270.         static void Main(string[] args)
  271.         {
  272.             MainMenu menu = new MainMenu();
  273.  
  274.             menu.Start();
  275.         }
  276.     }
  277. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement