Организация пользовательского интерфейса


 

Простейший интерфейс для выбора одного элемента из нескольких может быть реализован в теле двойного цикла (см. листинг ниже) в три этапа:

1. Вывод на консоль инструкции пользователю, включающей в себя приглашение к выбору, перечень возможных вариантов и указания по управлению. В данном примере операции 1 – 2 осуществляют создание списка, а операции 3 – 6 связаны с обработкой существующего списка, поэтому во внешнем цикле объявлена переменная k0, которая инициализируется значением 3, если объект list, созданный пустым в начале метода Main, так и остался пустым, и значением 7 в случае наличия данных в объекте list.

2. Управление осуществляется чаще всего посредством клавиатуры. Для этого во внутреннем цикле после очистки консоли и вывода инструкции запрашивается чтение целочисленной величины в переменную item. При ввода чего-либо нецелочисленного выводится сообщение и происходит переход к следующей итерации. Выход из внутреннего цикла осуществляется, если item находится в промежутке между 1 и k0, и в этом случае в переменной item содержится номер выбранного действия.

Для выбора пункта меню может быть реализовано перемещение указателя по пунктам, что делается с помощью обработки нажатия клавиш со стрелками, а также Tab, Esc и Enter, во внешнем цикле.

3. Обработка результатов выполняется с использованием структурного оператора switch case, который размещается во внешнем цикле интерфейса сразу после завершения внутреннего (см. листинг 2.1). После завершения оператора switch проверяется значение item, которой при выходе присваивается 0. Если item равно нулю, то происходит выход из бесконечного цикла, иначе осуществляется переход к пункту 1.

 

Процедура выхода из приложения может быть усовершенствована на случай ошибочного выбора данного варианта в меню, что не всегда может быть приемлемо, так как при этом уничтожается список, который хранится в оперативной памяти машины. С этой целью в обработчик позиции «Выход в Windows» включается например такой блок:

 

Console.Clear();

Console.Write("\nВы действительно хотите выйти? (y/n) ");

string c = Console.ReadLine();

if ((c == "y") || (c == "н"))

item = 0;

break;

 

и при нажатии клавиши <y/н> item будет сброшена в 0, что обеспечит выход из внешнего цикла.

 

 

Структура метода Main() для организации простейшего меню:

 

static void Main()

{

const string PressAnyKey = "\nНажмите любую клавишу...";

int item;

List list = null;

do

{

int k0;

do

{

Console.Clear();

Console.WriteLine("\nВыберите одно из следующих действий:");

Console.WriteLine("\n 1. Создание нового списка");

Console.WriteLine("\n 2. Загрузка списка из файла");

if (list == null)

{

Console.WriteLine("\n 3. Выход в Windows");

k0 = 3;

}

else

{

Console.WriteLine("\n 3. Модификация списка...");

Console.WriteLine("\n 4. Спецоперации с записями...");

Console.WriteLine("\n 5. Статистическая обработка");

Console.WriteLine("\n 6. Сохранение списка");

Console.WriteLine("\n 7. Выход в Windows");

k0 = 7;

}

Console.Write("\n Введите номер выбранного действия: ");

item = 0;

try

{

item = Convert.ToInt16(Console.ReadLine());

}

catch (FormatException ex)

{

Console.WriteLine("\nНеобходимо вводить целые числа от 1 до " + Convert.ToString(k0) + PressAnyKey);

Console.ReadKey();

}

} while ((item < 1) || (item > k0));

switch (item)

{

case 1:

{

// Создание нового списка

Break;

}

case 2:

{

// Загрузка списка из файла

Break;

}

case 3:

{

if (k0 == 3)

item = 0; // Реализация выхода из приложения

else // Модификация списка...

Break;

}

// … другие действия, если список существует

}

if (item == 0) break;

} while (true);

}

 

Задание

 

1. Составить программу на языке C# для обработки данных с помощью динамических структур данных в соответствии с индивидуальным заданием к лабораторной работе №.7 (табл. 10). В программе предусмотреть:

­ организацию заданного вида односвязного списка (табл. 13);

­ ввод с клавиатуры и добавление записей в список согласно его специфике;

­ удаление записей из списка согласно его специфике;

­ выполнение заданной операции с указанными записями;

­ вывод списка в соответствии с индивидуальным заданием;

­ обработку необходимых исключений (ввод данных, работа с памятью, арифметика, файловый вывод).

Работу выполнить без использования стандартного класса List!

2. В методе Main реализовать текстовое меню для организации работы со списком.

3. Разработать блок-схему алгоритма метода Main.

4. В отчете представить:

­ листинг программы;

­ блок-схему алгоритма;

­ экранную копию реализованного текстового меню;

­ распечатку результатов ввода данных и вывода результирующего списка;

­ результаты обработки исключений;

­ выводы по работе.

 

Таблица 13. Варианты индивидуальных заданий к лабораторной работе №10

№ вар. Вид односвязного списка Операции с указанными записями Вывод списка пользователю
очередь изменение указанной записи на консоль
стек удаление указанной записи в файл
очередь добавление записи в указанную позицию в файл
стек изменение указанной записи на консоль
очередь добавление записи в указанную позицию на консоль
стек удаление указанной записи в файл
очередь удаление указанной записи в файл
стек изменение указанной записи на консоль
очередь добавление записи в указанную позицию на консоль
стек удаление указанной записи в файл
очередь изменение указанной записи на консоль
стек удаление указанной записи в файл
очередь добавление записи в указанную позицию в файл
стек изменение указанной записи на консоль
очередь добавление записи в указанную позицию на консоль
стек удаление указанной записи в файл
очередь удаление указанной записи в файл
стек изменение указанной записи на консоль
очередь добавление записи в указанную позицию на консоль
20 стек удаление указанной записи в файл

 


 



Дата добавления: 2021-12-14; просмотров: 241;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.013 сек.