Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Threading;
- namespace ConsoleApp1
- {
- class Program
- {
- public enum ItemType { MessageType, PersonType, CarType };
- #region Abstract MenuItem class
- abstract public class MenuItem
- {
- public MenuItem()
- {
- timeCreated = DateTime.Now;
- }
- public DateTime timeCreated { get; private set; }
- public virtual void Print()
- {
- Console.Write("[" + timeCreated.ToString() + "]");
- }
- }
- #endregion
- #region Message class
- public class Message : MenuItem
- {
- private Message()
- {
- }
- public Message(string newMsg) : base()
- {
- msg = newMsg;
- }
- public override void Print()
- {
- base.Print();
- Console.Write(" [Message] " + msg);
- }
- private string msg;
- }
- #endregion
- #region Person class
- public class Person : MenuItem
- {
- private Person()
- {
- }
- public Person(string newName, string newLastName, int newAge) : base()
- {
- name = newName;
- lastName = newLastName;
- age = newAge;
- }
- public override void Print()
- {
- base.Print();
- Console.Write(" [Person] " + name + " " + lastName + ", " + age);
- }
- private string name;
- private string lastName;
- private int age;
- }
- #endregion
- #region Car class
- public class Car : MenuItem
- {
- private Car()
- {
- }
- public Car(string newModel, int newYearReleased) : base()
- {
- model = newModel;
- yearReleased = newYearReleased;
- }
- public override void Print()
- {
- base.Print();
- Console.Write(" [Car] " + model + " " + yearReleased);
- }
- private string model;
- private int yearReleased;
- }
- #endregion
- public class DataHolder
- {
- public DataHolder()
- {
- items = new List<MenuItem>();
- }
- public void AddItem(ItemType type)
- {
- if (type == ItemType.MessageType)
- {
- Console.Write("Message: ");
- Message tempMsg = new Message(Console.ReadLine());
- items.Add(tempMsg);
- }
- else if (type == ItemType.PersonType)
- {
- Console.Write("Name: ");
- string tempName = Console.ReadLine();
- Console.Write("Last name: ");
- string tempLastName = Console.ReadLine();
- Console.Write("Age: ");
- try
- {
- int tempAge = int.Parse(Console.ReadLine());
- items.Add(new Person(tempName, tempLastName, tempAge));
- }
- catch (Exception e)
- {
- Console.WriteLine("Incorrect age! Press any key to continue.");
- Console.ReadKey(true);
- return;
- }
- }
- else if (type == ItemType.CarType)
- {
- Console.Write("Model: ");
- string tempModel = Console.ReadLine();
- Console.Write("Year released: ");
- try
- {
- int tempYear = int.Parse(Console.ReadLine());
- while (tempYear < 0 || tempYear > DateTime.Now.Year)
- {
- Console.Write("Year is smaller that zero or greater the current year! Try again!\n");
- tempYear = int.Parse(Console.ReadLine());
- }
- items.Add(new Car(tempModel, tempYear));
- }
- catch (Exception e)
- {
- Console.WriteLine("Incorrect year! Press any key to continue.");
- Console.ReadKey(true);
- return;
- }
- }
- }
- public void PrintData()
- {
- for (int i = 0; i < items.Count; ++i)
- {
- Console.Write(i + 1 + ". ");
- items[i].Print();
- Console.WriteLine();
- }
- Console.ReadKey(true);
- }
- public void RemoveItem(int itemNumber)
- {
- if (itemNumber < 1 || itemNumber > items.Count)
- {
- Console.Write("No such item number! Press any key to continue.");
- Console.ReadKey(true);
- return;
- }
- items.RemoveAt(itemNumber - 1);
- }
- private List<MenuItem> items;
- }
- public class MainMenu
- {
- private DataHolder dataHolder;
- public MainMenu()
- {
- dataHolder = new DataHolder();
- }
- public void Start()
- {
- char currentChoice = '1';
- while(true)
- {
- Console.Clear();
- Console.WriteLine("1. Print items");
- Console.WriteLine("2. Add item");
- Console.WriteLine("3. Remove item");
- Console.WriteLine("Q. Exit");
- currentChoice = Console.ReadKey(true).KeyChar;
- if (currentChoice == '1')
- {
- Console.Clear();
- dataHolder.PrintData();
- }
- else if (currentChoice == '2')
- {
- Console.Clear();
- Console.WriteLine("1. Message");
- Console.WriteLine("2. Person");
- Console.WriteLine("3. Car");
- char itemChoice = Console.ReadKey().KeyChar;
- Console.Clear();
- if (itemChoice == '1')
- {
- dataHolder.AddItem(ItemType.MessageType);
- }
- else if (itemChoice == '2')
- {
- dataHolder.AddItem(ItemType.PersonType);
- }
- else if (itemChoice == '3')
- {
- dataHolder.AddItem(ItemType.CarType);
- }
- else
- {
- Console.Write("No such option! Press any key to continue.");
- return;
- }
- }
- else if (currentChoice == '3')
- {
- Console.Clear();
- Console.Write("Delete item number: ");
- int deleteNum = -1;
- try
- {
- deleteNum = int.Parse(Console.ReadLine());
- dataHolder.RemoveItem(deleteNum);
- }
- catch (Exception e)
- {
- Console.Write("Incorrect number! Press any key to continue");
- Console.ReadKey(true);
- }
- }
- else if (currentChoice == 'Q' || currentChoice == 'q')
- {
- break;
- }
- }
- }
- }
- static void Main(string[] args)
- {
- MainMenu menu = new MainMenu();
- menu.Start();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement