Закрытие консоли во время выполнения программы - C#
Формулировка задачи:
Консоль закрывается до того, как выполнится вся программа. В коде написаны комментарии и место, после которого операторы не выполняются и консоль закрывается.
Код:
Ну и второстепенно - какие-нибудь комментарии к коду может будут.
Задача:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string[] Users = new string[6]; //Пользователи
Users[0] = "Павел";
Users[1] = "Артём";
Users[2] = "Гость";
Users[3] = "Admin";
Users[4] = "Екатерина";
Users[5] = "Ольга";
object[,] Objects = new object[6, 4]; // Массив Объектов и прав доступа к ним
for (int i = 0; i < 6; i++)
{
for (int j = 0; j < 4; j++)
{
switch (i)
{
case 0: //Пользователь с id = 0
switch (j)
{
case 0:
Objects[i, j] = "Полные права";
break;
case 1:
Objects[i, j] = "Чтение";
break;
case 2:
Objects[i, j] = "Чтение";
break;
case 3:
Objects[i, j] = "Запись";
break;
}
break;
case 1: //Пользователь с id = 1
switch (j)
{
case 0:
Objects[i, j] = "Полные права";
break;
case 1:
Objects[i, j] = "Чтение";
break;
case 2:
Objects[i, j] = "Передача прав";
break;
case 3:
Objects[i, j] = "Запись";
break;
}
break;
case 2: //Пользователь с id = 2
switch (j)
{
case 0:
Objects[i, j] = "Чтение";
break;
case 1:
Objects[i, j] = "Чтение";
break;
case 2:
Objects[i, j] = "Чтение";
break;
case 3:
Objects[i, j] = "Чтение";
break;
}
break;
case 3:
switch (j)
{
case 0:
Objects[i, j] = "Полные";
break;
case 1:
Objects[i, j] = "Полные";
break;
case 2:
Objects[i, j] = "Полные";
break;
case 3:
Objects[i, j] = "Полные";
break;
}
break;
case 4:
switch (j)
{
case 0:
Objects[i, j] = "Полные права";
break;
case 1:
Objects[i, j] = "Чтение";
break;
case 2:
Objects[i, j] = "Чтение";
break;
case 3:
Objects[i, j] = "Запись";
break;
}
break;
case 5:
switch (j)
{
case 0:
Objects[i, j] = "Полные права";
break;
case 1:
Objects[i, j] = "Передача прав";
break;
case 2:
Objects[i, j] = "Чтение";
break;
case 3:
Objects[i, j] = "Чтение";
break;
}
break;
}
}
}
/*for (int i = 0; i < 6; i++)
{
Console.WriteLine();
Console.WriteLine("-------------------------------------------------");
Console.WriteLine("Пользователь с id " + i);
Console.WriteLine();
for (int j = 0; j < 4; j++)
{
Console.Write("Об. " + j + ": " + Objects[i, j] + "; ");
}
}
Console.ReadLine();*/
string name;
int id = 999;
while (id == 999)
{
Console.WriteLine("Введите Ваше имя пользователя: ");
name = Console.ReadLine();
for (int i = 0; i < Users.Length; i++) //Выясняю id пользователя по имени
{
if (name == Users[i])
{
id = i;
}
}
if (id == 999)
{
Console.WriteLine("Такого пользователя не существует. Попробуйте снова...");
}
}
Console.WriteLine("Ваш id: " + id);
Console.Read();
Console.WriteLine("Ваши права: ");
for (int j = 0; j < 4; j++) // Вывод прав на объекты для конкретного пользователя
{
Console.Write("Объект:" + j + " - ");
Console.Write(Objects[id, j]);
Console.WriteLine("; ");
}
Console.WriteLine("Жду указаний: (действие)"); // Дальше операторы не выполняются - закрывается консоль
string cmd = Console.ReadLine();
switch (cmd) // не завершено - проверка прав на действия с объектом
{
case "read":
Console.WriteLine("Вы выбрали чтение объекта. Введите номер.");
Console.ReadLine();
break;
case "write":
Console.WriteLine("Вы выбрали запись объекта. Введите номер.");
Console.ReadLine();
break;
case "get_rights":
Console.WriteLine("Вы выбрали передачу прав. Введите номер объекта и имя пользователя.");
Console.ReadLine();
break;
}
}
}
}Реализовать программное заполнение матрицы доступа, содержащей количество пользователей и объектов. Также может проводиться идентификация пользователя и вывод ему его прав на объекты. Наверное стоит переделать матрицу доступа в виде числовых идентификаторов прав, а там уже выводить название права по его ключу.
Решение задачи: «Закрытие консоли во время выполнения программы»
textual
Листинг программы
Console.WriteLine("Введите Ваше имя пользователя: ");
string name = Console.ReadLine();
int id = Array.IndexOf(Users, name);
while (id<0)
{
Console.WriteLine("Такого пользователя не существует. Попробуйте снова...");
Console.WriteLine("Введите Ваше имя пользователя: ");
name = Console.ReadLine();
id = Array.IndexOf(Users, name);
}