Практический пример


 

Рассмотрим пример структуры, содержащей сведения о сотрудниках предприятия: табельный номер, фамилия, имя, отчество, возраст, пол, домашний адрес.

 

public struct PData

{

public long TabNom;

public string Surname;

public string Firstname;

public string Lastname;

public byte Age;

public string Pol;

public string Adress;

}

 

static PData InputData()

{

PData s;

Console.WriteLine("Введите поля новой записи:");

Console.Write("Табельный номер:");

s.TabNom = Convert.ToUInt32(Console.ReadLine());

Console.Write("Фамилия:\t");

s.Surname = Console.ReadLine();

Console.Write("Имя:\t\t");

s.Firstname = Console.ReadLine();

Console.Write("Отчество:\t");

s.Lastname = Console.ReadLine();

Console.Write("Возраст (лет):\t");

s.Age = Convert.ToByte(Console.ReadLine());

Console.Write("Пол (М/Ж):\t");

do

s.Pol = Console.ReadLine();

while ((s.Pol!=”М”)&&( s.Pol!=”Ж”))

Console.Write("Адрес:\t\t");

s.Adress = Console.ReadLine();

Console.WriteLine();

return s;

}

 

void Main()

{

int n = 35;

PData [] d = new PData[n];

for(int i=0;i<n;i++)

d[i] = InputData();

}

 

Рассмотрим пример организации цикла, в теле которого осуществляется ввод новой записи и сохранение ее в файл. Признаком прекращения дальнейшего ввода служит нажатие клавиши «минус». Блок-схема метода Main() показана на рис. 5.

 

 

Рисунок 5. Блок-схема метода обработки структуры данных

 

Команда для чтения юникода нажатой клавиши и его явное преобразование в ASCII-код (аргумент true метода ReadKey подавляет вывод на консоль символа нажатой клавиши, возвращаемого свойством KeyChar этого метода):

 

byte n = Convert.ToByte(Console.ReadKey(true).KeyChar);

ASCII-коды некоторых функциональных клавиш:

TAB 9

ENTER 13

ESC 27

SPASE 32

 

Задание

 

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

­ создание структурного типа PData для хранения заданного набора данных (см. табл. 11) и объявление структурной переменной типа PData;

­ создание файла данных с расширением .txt; имя которого следует предварительно запросить с клавиатуры;

­ создание пользовательской функции static PData InputData() для инициализации структурной переменной данными, введенными с клавиатуры (перед вводом очищать консоль);

­ создание пользовательской функции static void SaveData(PData s, StreamWriter fs) для добавления записи s в файл, представленный потоком fs;

NB: Запись должна выводиться в одну строку в виде значений полей (без подписей), разделенных пробелами или символами табуляции.

­ организацию цикла для выполнения заданного запроса действий пользователя (см. табл. 11), а также ввода новой записи (вызов функции InputData) и сохранения ее в файл (вызов функции SaveData);

­ вывод сообщения о полном имени файла с данными и о количестве сохраненных в него записей;

­ на всех этапах обработки обеспечить контроль исключительных ситуаций при работе с файлами.

2. Разработать модульный тест для ручного тестирования функции SaveData с сохранением результатов проверки корректности работы функции в файл test.log. Код теста оформить в виде пользовательской функции UnitTest(PData s, string source_file_name). В теле функции UnitTest сохранять только 1 (одну) переданную запись PData s, затем считывать последнюю строку из файла данных и сравнивать с PData s. Результаты сравнения выводить в файл test.log.

3. Разработать блок-схемы алгоритмов метода Main, функций InputData и SaveData.

4. В отчете представить: листинг программы, листинг метода тестирования, блок-схемы алгоритмов, распечатку полученного файла данных, выводы по работе.

 

Таблица 11. Варианты индивидуальных заданий

 

№ вар. Набор данных Запрос действий пользователя
Каждая запись по штатному расписанию предприятия содержит следующие данные: номер цеха, фамилию и инициалы, профессию, разряд, стаж работы. Для ввода следующей записи нажмите +
Сводки о выполнении плана содержат шифр продукции, наименование продукции, единицы измерения, план, фактическое выполнение. Чтобы завершить ввод сводок, нажмите Escape
Экзаменационная сводная ведомость содержит номер зачетной книжки, фамилию и инициалы, оценку по четырем дисциплинам. Для ввода следующей ведомости нажмите пробел
Записи о работающих с почасовой формой оплаты: номер цеха, табельный номер, фамилию и инициалы, размер ставки за час, количество отработанных часов. Для добавления следующей записи нажмите Enter
Сведения о пациентах больницы: фамилия, имя, отчество, год рождения, пол, дата поступления, диагноз, номер палаты, дата выписки. Чтобы прекратить ввод, нажмите пробел, иначе – любая клавиша
Сведения о сотрудниках вуза: фамилия, имя, отчество, факультет, кафедра, ученая степень, ученое звание, занимаемая должность, год рождения, пол, домашний адрес. Чтобы добавить данные о новом сотруднике, введите 1
Сведения о квартиросъемщиках: фамилия, имя, отчество, полный адрес, площадь квартиры (полная и полезная), количество комнат, количество проживающих в квартире человек. Для завершения ввода данных о квартиросъемщиках введите 0
Сведения об автомобилях включают следующие данные: страна изготовитель, марка, мощность, год выпуска, первоначальная цена. Если хотите добавить сведения об автомобиле, то нажмите Enter
Сведения о книгах: наименование книги, автор, год издания, количество страниц, издательство, цена. Чтобы ввести данные об очередной книге, нажмите пробел
Сведения о товарах, поступивших на склад, включающие: шифр, наименование товара, наименование поставщика, единицы измерения, стоимость одной единицы без НДС, количество. Чтобы завершить приходование товаров, нажмите Escape
Обмен валют: ФИО клиента, валюты обмена, обменный курс, суммы обмена, табельный номер кассира Чтобы добавить данные о новой операции, введите «A»
Сведения о приеме врача: ФИО врача, ФИО пациента, возраст пациента, жалоба, диагноз (код МКБ) Для завершения ввода данных о приемах введите E
Сведения о ездках грузовиков: дата, модель грузовика, госномер, ФИО водителя, номер рейса, время выезда с базы, время возврата на базу, расход топлива Если хотите добавить сведения о новой ездке, то нажмите Enter
Журнал регистрации проживающих в гостинице: ФИО клиента, паспортные данные, номер и класс номера вселения, дата заезда, дата выезда, ранний заезд, поздний выезд, сумма оплаты Чтобы ввести данные об очередном клиенте, нажмите клавишу «Звездочка»
Сведения о меню столовой: название блюда, время приготовления, вес, цена, калорийность, признаки: вегетарианское, безлактозное, детское Чтобы завершить ввод меню, нажмите клавишу End

 



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


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

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

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

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