Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Лабораторная работа № 2. Представление информации в виде структуры



Структура – это составной объект (пользовательский тип данных), совокупность логически связанных данных различного типа, объединенных под одним идентификатором.

Задание Краткие теоретические сведения
1. Изучить способы организации данных в виде структуры, выполнив программу, записанную в данном пункте. Дополнить структуру дополнительными сведениями о работниках и вывести их вместе с фамилиями на экран. Пример. Пусть надо описать структуру с именем WORKER, содержащую следующие поля: фамилия работника; название занимаемой должности; год поступления на работу. Необходимо написать программу, выполняющую следующие действия: ввод с клавиатуры данных в массив, состоящий из трех объектов структуры WORKER; вывод на дисплей фамилий работников, чей стаж работы в организации превышает значение, введенное с клавиатуры; если таких работников нет, то на дисплей должен выводиться соответствующий текст. В программе, текст которой приведен ниже, структура описана следующим образом: struct WORKER { char F[30]; char Wrk[30]; int Year; }; Здесь предусмотрены компоненты: F[30]для ввода фамилий, Wrk[30] -для должности, Year- для года поступления на работу. Запись WORKER a[size]; означает, что a[size]- массив из объектов структуры в количестве size. Для доступа к членам структуры используется операция принадлежности “. ” (точка): a[i].F, a[i].Wrk, a[i].Year.    
2. В правой части приведен пример программы, в которой используется указатель на структуру. Выполнить программу, меняя скорость вывода информации. Написать пояснения к программе. В данном примере используется указатель на структуру. При обращении к структуре с помощью указателя используется операция косвенной адресации “ -> “ (стрелка). Программа осуществляет отображение на экране программного таймера пользователя. Скорость работы таймера можно регулировать, изменяя макроопределение DELAY. Функция kbhit()возвращает истину, если нажата какая-либо клавиша на клавиатуре. В против­ном случае возвращается 0.
3. В правой части приведен пример программы, которая осуществляет работу с таблицей данных, содержащей информацию о студентах: №, Фамилия, Год рождения, Факультет. В программе использована структура. Проанализировать работу главной функции и функций, входящих в программу. Добавить операторы выдачи сообщений об ошибках при вводе данных неправильного типа.  
# include < iostream> # define kol 30 # define strk 30 int r; using namespace std; struct student { char name[kol]; int birth; char fakultet[5]; }; struct student Stud[strk]; struct student bad; int sch = 0; void enter_new() { cout< < " Ввод информации" < < endl; if(sch < strk) { cout< < " Строка номер "; cout< < sch+1; cout< < endl< < " Фамилия " < < endl; cin> > Stud[sch].name; cout< < " Год рождения " < < endl; cin> > Stud[sch].birth; cout< < " Факультет " < < endl; cin> > Stud[sch].fakultet; sch++; } else cout< < " Введено максимальное кол-во строк"; cout< < " Что дальше? " < < endl; cin> > r; }
void del() { int d; cout< < " \nНомер строки, которую надо удалить (для удаления всех строк нажать 99)" < < endl; cin> > d; if (d! = 99) { for (int de1 = (d - 1); de1 < sch; de1++) Stud[de1] = Stud[de1 + 1]; sch = sch - 1; } if (d == 99) for(int i = 0; i < strk; i++) Stud[i] = bad; cout< < " Что дальше? " < < endl; cin> > r; } void change() { int n, per; cout< < " \nВведите номер строки" < < endl; cin> > n; do { cout< < " Введите: " < < endl; cout< < " 1-для изменения фамилии" < < endl; cout< < " 2-для изменения года рождения" < < endl; cout< < " 3-для изменения факультета" < < endl; cout< < " 4-конец\n"; cin> > per; switch (per) { case 1: cout< < " Новая фамилия"; cin> > Stud[n - 1].name; break; case 2: cout< < " Новый год рождения"; cin> > Stud[n - 1].birth; break; case 3: cout< < " Новый факультет "; cin> > Stud[n - 1].fakultet; break; } } while(per! = 4); cout< < " Что дальше? " < < endl; cin> > r; }
void out() { int sw, n; cout< < " 1-вывод 1 строки" < < endl; cout< < " 2-вывод всех строк" < < endl; cin> > sw; if(sw == 1) { cout< < " Номер выводимой строки " < < endl; cin> > n; cout< < endl; cout< < " Фамилия "; cout< < Stud[n - 1].name < < endl; cout< < " Год рождения "; cout< < Stud[n - 1].birth < < endl; cout< < " Факультет "; cout< < Stud[n - 1].fakultet< < endl; } if(sw == 2) { for(int i = 0; i < sch; i++) { cout< < " Фамилия "; cout< < Stud[i].name< < endl; cout< < " Год рождения "; cout< < Stud[i].birth< < endl; cout< < " Факультет "; cout< < Stud[i].fakultet< < endl; } } cout< < " Что дальше? " < < endl; cin> > r; } int main() { setlocale(LC_CTYPE, " Russian" ); cout< < " Данных нет" < < endl; cout< < " Введите: " < < endl; cout< < " 1-для удаления записи" < < endl; cout< < " 2-для ввода новой записи" < < endl; cout< < " 3-для изменения записи" < < endl; cout< < " 4-для вывода записи(ей)" < < endl; cout< < " 5-для выхода" < < endl; cin> > r; do { switch(r) { case 1: del(); break; case 2: enter_new(); break; case 3: change(); break; case 4: out(); break; } } while(r! = 5); }

4. В соответствии со своим вариантом разработать программу для работы с таблицей данных по образцу программы п. 3. Определить структурированный тип, меню для работы с массивом структур.

В перечень обязательных должны войти функции:

- ввод элементов структуры с клавиатуры;

- вывод элементов структуры;

- удаление всех структурированных переменных;

- удаление заданной структурированной переменной;

- поиск информации.

№ варианта Условие задачи
Горожанин. Ф.И.О., дата рождения, адрес, пол (м, ж). Реализовать выборку по полу и году рождения.
Список клиентов гостиницы. Паспортные данные, даты приезда и отъезда, номер, тип размещения (люкс, одноместный, двухместный, трехместный, апартаменты). Поиск гостя по дате приезда или по фамилии.
Клиенты банка. Ф.И.О., тип счета (срочный, льготный и т. д.), номер счета, сумма на счете, дата последнего изменения. Выбор по номеру счета, по диапазону суммы (< 100, > 100).
Личная библиотека. Автор книги, название, издательство, раздел библиотеки (специальная литература, хобби, домашнее хозяйство, беллетристика и т. д.), происхождение (покупка, кража, подарок) и наличие книги в данный момент. Выбор книг по автору, году; инвентаризация библиотеки (вывод всего списка книг по категориям).
Ломбард. База хранимых товаров и недвижимости: анкетные данные клиента, наименование товара, оценочная стоимость; сумма, выданная под залог, дата сдачи, срок хранения. Выбор товаров по истечении срока хранения, по наименованию товара.
Склад. Наименование товара, цена, количество, процент торговой надбавки (5, 10, 15, 20, 35, 30). Выбор по наименованию, цене. Вывод всего списка товаров на складе с расчетом сумм.
Авиарейсы. Номер рейса, пункт назначения, время вылета, дата вылета, стоимость билета, количество мест. Выбор по пункту назначения, дате вылета.
Ученики. Ф.И.О., класс (цифра+буква) предметы, оценки, средний балл. Выбор по фамилии, выбор по среднему баллу.
Студенты. Ф.И.О., дата поступления, специальность, группа, факультет, средний балл. Выбор по году поступления, фамилии, среднему баллу, группе.
Справочник автомобилей. Марка автомобиля, цвет, заводской номер, дата выпуска, тип кузова (седан, универсал и т. п.), дата последнего техосмотра, владелец. Выбор транспортных средств по владельцу или номеру. Формирование приглашений на техосмотр в соответствии со сроком.
Записная книжка. Ф.И.О, дата рождения, адрес, телефон, место работы или учебы, должность. Автоматическое формирование поздравления с днем рождения (по текущей дате). Поиск по фамилии.
Государство. Наименование, столица, численность населения, площадь, фамилия президента. Выбор государства по названию, занимаемой площади (> заданного значения).
Вокзал. Номер поезда, пункт назначения, дни следования, время прибытия, время отправления. Выбор по пункту назначения, дате. Вывод расписания по времени.
Справочник абитуриента. Наименование вуза, адрес, перечень специальностей, конкурс прошлого года по каждой специальности, размер оплаты при договорном обучении. Выбор по разным критериям: все о данном вузе; все о данной специальности, поиск минимального конкурса по данной специальности.
Преподаватели. Фамилия преподавателя, название экзамена, дата экзамена. Выбор по фамилии, дате экзамена.
Отдел кадров. Ф.И.О. работника, образование, специальность, подразделение, должность, оклад, дата поступления на предприятие. Выбор по должности, стражу работы.

 

 

 

 

В начало практикума


Поделиться:



Популярное:

  1. I. СИСТЕТЕХНИЧЕСКОЕ ПРЕДСТАВЛЕНИЕ ТЕХНОЛОГИЧЕСКОГО ПРОЦЕССА ПРОИЗВОДСТВА ЭЛЕКТРОННЫХ СРЕДСТВ
  2. II. Работа с раздаточным материалом
  3. III. Перечень вопросов для проведения проверки знаний кандидатов на получение свидетельства коммерческого пилота с внесением квалификационной отметки о виде воздушного судна - самолет
  4. III. Работа по теме урока Представление журналов
  5. IV. Работа над пройденным материалом.
  6. IХ. Органы управления, контрольно-ревизионный орган и консультативно-совещательные структуры РСМ
  7. MS Excel. Расчеты с условиями. Работа со списками
  8. MS Word. Работа с математическими формулами
  9. V. Представление и проверка контрольной работы
  10. V. Работа над пройденным материалом.
  11. VI. Рефлексия Работа по учебнику
  12. VII. Перечень вопросов для проведения проверки знаний кандидатов на получение свидетельства линейного пилота с внесением квалификационной отметки о виде воздушного судна - вертолет


Последнее изменение этой страницы: 2017-03-08; Просмотров: 923; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.023 с.)
Главная | Случайная страница | Обратная связь