Работа с коллекциями. Программа учета выполнения распоряжений руководства на предприятии - C#
Формулировка задачи:
Написать программу учета выполнения распоряжений руководства на предприятии. При выполнении задания необходимо его помечать как выполненное, при невыполнении в указанную дату, требуется помечать на какую дату было перенесено его выполнение.
Решение задачи: «Работа с коллекциями. Программа учета выполнения распоряжений руководства на предприятии»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication37
{
struct Orders
{
public DateTime dateStart;//Время начала выполнения распоряжения
public DateTime dateFinish;//Время окончания выполнения распоряжения
public string nameofOrder;//Распоряжение
public TimeSpan duration;//Время выполнения распоряжения
public Orders(DateTime dateStart, DateTime dateFinish, string nameofOrder, TimeSpan duration)
{
this.dateStart = dateStart;
this.dateFinish = dateFinish;
this.nameofOrder = nameofOrder;
this.duration = duration;
}
public void Print()
{
Console.WriteLine("Время начала выполнения распоряжения: {0}", dateStart);
Console.WriteLine("Время окончания выполнения распоряжения: {0}", dateFinish);
Console.WriteLine("Распоряжение: {0}", nameofOrder);
Console.WriteLine("Время выполнения распоряжения: {0}", duration);
Console.WriteLine();
}
}
class Program
{
static void Main()
{
DateTime dateStart;
DateTime dateFinish;
string nameofOrder;
TimeSpan duration;
int counter;
List<Orders> list = new List<Orders>();
while (true)
{
Console.WriteLine();
Console.WriteLine("Введите номер от 1 до 5: \n1) Для добавления распоряжения\n2) Для просмотра хода выполнения распоряжения и временного промежутка\n3) Для удаления информации\n4) Для редактирования информации\n5) Выход из программы");
int command = Convert.ToInt32(Console.ReadLine());
switch (command)
{
case 1:
Console.WriteLine();
Console.Write("Введите распоряжение: ");
nameofOrder = Console.ReadLine();
Console.Write("Введите время начала выполнения распоряжения (в формате HH:MM DD-MM-YYYY): ");
dateStart = DateTime.Parse(Console.ReadLine());
Console.Write("Введите время окончания выполнения распоряжения (в формате HH:MM DD-MM-YYYY): ");
dateFinish = DateTime.Parse(Console.ReadLine());
duration = dateFinish - dateStart;
list.Add(new Orders(dateStart, dateFinish, nameofOrder, duration));
break;
case 2:
Console.WriteLine();
foreach (Orders elem in list)
{
if (DateTime.Now > elem.dateFinish)
{
Console.WriteLine();
Console.WriteLine("Распоряжение {0} вышло за рамки исполнения", elem.nameofOrder);
}
else Console.WriteLine("Распоряжение {0} еще выполняется", elem.nameofOrder);
if (DateTime.Now == elem.dateFinish)
{
Console.WriteLine();
Console.WriteLine("Распоряжение {0} выполнено в срок", elem.nameofOrder);
}
}
break;
case 3:
{
Console.WriteLine();
Console.Write("Введите распоряжение, информацию о котором Вы хотите удалить:");
string newNumberOrder = Console.ReadLine();
counter = 0;
foreach (Orders elem in list)
{
if (elem.nameofOrder == newNumberOrder)
{
list.RemoveAt(counter);
Console.WriteLine("Информация о распоряжении '{0}' удалена", newNumberOrder);
break;
}
counter++;
}
break;
}
case 4:
Console.WriteLine();
Console.Write("Введите распоряжение, информацию о котором Вы хотите изменить:");
string orderNumber = Console.ReadLine();
counter = 0;
foreach (Orders elem in list)
{
if (elem.nameofOrder == orderNumber)
{
Console.WriteLine();
elem.Print();
nameofOrder = elem.nameofOrder;
Console.Write("Введите новое время начала выполнения распоряжения (в формате HH:MM DD-MM-YYYY): ");
dateStart = DateTime.Parse(Console.ReadLine());
Console.Write("Введите новое время окончания выполнения распоряжения (в формате HH:MM DD-MM-YYYY): ");
dateFinish = DateTime.Parse(Console.ReadLine());
duration = dateFinish - dateStart;
list[counter] = new Orders(dateStart, dateFinish, nameofOrder, duration);
break;
}
counter++;
}
break;
case 5:
Environment.Exit(0);
break;
default:
Console.WriteLine();
Console.WriteLine("Введенное число неверно. Повторите попытку\nВыберите пункт от 1 до 5");
break;
}
}
}
}
}