Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические указания по С++.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
793.09 Кб
Скачать

Лабораторная работа №16 Организация работы в текстовом режиме

Цель работы – овладение навыками работы в текстовом режиме, использования стандартных функций для работы в текстовом режиме.

Задания для самостоятельной подготовки:

1. Изучить:

- особенности работы в текстовом режиме в изучаемом языке программирования;

- возможности стандартных функций для работы в текстовом режиме.

2. Разработать алгоритм решения в соответствии с заданием.

3. Составить программу решения задачи.

Задание к работе:

Составить и выполнить на ЭВМ программу, иллюстрирующую работу изученных стандартных функций для работы в текстовом режиме.

Пример выполнения работы

Задание. Составить и выполнить на ЭВМ программу, иллюстрирующую работу изученных стандартных функций для работы в текстовом режиме.

Программа решения задачи имеет вид:

#include<stdio.h>

#include<math.h>

#include<conio.h>

#include<stdlib.h>

void main() {

textbackground(7); //установка цвета фона

clrscr(); //очистка экрана

window(2,2,78,24); //задание окна

textbackground(1);

clrscr();

window(4,3,76,22);

textbackground(4);

clrscr();

textcolor(3); // установка цвета символов

cprintf(" Russian color "); //вывод на экран

window(7,5,70,19);

textbackground(0);

clrscr();

textattr(6+7*16); // установка цвета фона и символов

clrscr();

cprintf(" !!!!!!!!!!! \r\n");

textattr(1+7*16);

highvideo(); //установка повышенной яркости

cprintf(" !!!!!!!!!!! \r\n");

lowvideo(); //установка пониженной яркости

cprintf(" !!!!!!!!!!! \r\n");

getch();

gotoxy(2,2); //перемещение курсора

getch();

gotoxy(7,4);

getch();

movetext(8,6,13,6,10,20); //перемещение области экрана

getch();

movetext(8,5,60,5,10,23);

getch();

movetext(8,5,60,5,10,21);

getch();

movetext(8,5,60,5,10,22);

getch();

movetext(8,5,60,5,10,24);

getch();

gotoxy(1,1);

delline(); //удаление строки

getch();

gotoxy(1,1);

insline(); //вставка строки

getch();

return;

}

Контрольные вопросы

  1. Перечислить особенности работы в текстовом режиме.

  2. Перечислить возможности работы в текстовом режиме.

  3. Пояснить, как работают рассмотренные функции для работы в текстовом режиме.

Лабораторная работа №17 Создание светового меню

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

Задания для самостоятельной подготовки:

1. Изучить:

-основную терминологию, связанную с переменной объединение: определение, элемент объединения;

- организацию доступа к элементам объединения;

- функции для обработки нажатия клавиши на клавиатуре;

- принципы организации вывода и управления светового меню.

2. Разработать алгоритм решения в соответствии с заданием.

3. Составить программу решения задачи.

4. Подготовить тестовый вариант исходных данных. Выполнить на ЭВМ программу с тестовым вариантом.

Задание к работе:

Написать программу, осуществляющую вывод и управление меню с подсветкой. Главное меню должно содержать пункты:

1. Ввод информации

2. Вывод информации

3. Выход

При выборе первого пункта осуществить ввод информации в массив структур (согласно варианту из таблицы 15). При выборе второго пункта осуществить вывод меню второго уровня (согласно варианту из таблицы 15).

Таблица 15

Вариант задания

Условия задачи

1

Поля структуры: ФИО, год рождения, номер группы.

Структура меню второго уровня:

  1. Вывод ФИО и года

  2. Вывод ФИО и номера группы

  3. Вывод всей информации

  4. Выход

2

Поля структуры: номер поезда, маршрут, время отправления.

Структура меню второго уровня:

  1. Вывод номера поезда и маршрута

  2. Вывод номера поезда и времени отправления

  3. Вывод всей информации

  4. Выход

3

Поля структуры: наименование товара, оптовая цена, розничная цена.

Структура меню второго уровня:

  1. Вывод наименования товара и оптовой цены

  2. Вывод наименования товара и розничной цены

  3. Вывод всей информации

  4. Выход

4

Поля структуры: ФИО предпринимателя, название предприятия, сумма налога.

Структура меню второго уровня:

  1. Вывод ФИО предпринимателя и названия предприятия

  2. Вывод ФИО предпринимателя и суммы налога

  3. Вывод всей информации

  4. Выход

Продолжение таблицы 15

Вариант задания

Условия задачи

5

Поля структуры: наименование, адрес банка, номер счета.

Структура меню второго уровня:

  1. Вывод наименования и адреса банка

  2. Вывод наименования банка и номера счета

  3. Вывод всей информации

  4. Выход

6

Поля структуры: ФИО, номер водительского удостоверения, марка автомобиля.

Структура меню второго уровня:

  1. Вывод ФИО и номера водительского удостоверения

  2. Вывод ФИО и марки автомобиля

  3. Вывод всей информации

  4. Выход

7

Поля структуры, тема реферата, дата сдачи.

Структура меню второго уровня:

  1. Вывод ФИО студента и темы реферата

  2. Вывод ФИО студента и даты сдачи

  3. Вывод всей информации

  4. Выход

8

Поля структуры: ФИО рабочего, табельный номер, средняя заработная плата.

Структура меню второго уровня:

  1. Вывод ФИО рабочего и табельного номера

  2. Вывод ФИО рабочего и средней заработной платы

  3. Вывод всей информации

  4. Выход

9

Поля структуры: ФИО владельца, порода собаки, номер амбулаторной карты.

Структура меню второго уровня:

  1. Вывод ФИО владельца и породы собаки

  2. Вывод ФИО владельца и номера амбулаторной карты

  3. Вывод всей информации

  4. Выход

10

Поля структуры: ФИО студента, номер группы, средний балл за последнюю сессию.

Структура меню второго уровня:

  1. Вывод ФИО студента и номера группы

  2. Вывод ФИО студента и среднего балла за последнюю сессию

  3. Вывод всей информации

  4. Выход

11

Поля структуры: название города, численность населения, площадь.

Структура меню второго уровня:

  1. Вывод названия города и численности населения

  2. Вывод названия города и площади

  3. Вывод всей информации

  4. Выход

12

Поля структуры: шифр детали, количество на складе, стоимость.

Структура меню второго уровня:

  1. Вывод шифра детали и количества на складе

  2. Вывод шифра детали и стоимости

  3. Вывод всей информации

  4. Выход

Пример выполнения работы

Задание.

Написать программу, осуществляющую вывод и управление меню с подсветкой. Главное меню должно содержать пункты:

1. Ввод информации

2. Вывод информации

3. Выход

При выборе первого пункта осуществить ввод в массив структур информации

- ФИО рабочего;

- год рождения;

- табельный номер.

При выборе второго пункта осуществить вывод меню второго уровня

  1. Вывод ФИО рабочего и года рождения

  2. Вывод ФИО рабочего и табельного номера

  3. Вывод всей информации

  4. Выход.

Программа решения задачи имеет вид:

#include<stdio.h>

#include<string.h>

#include<conio.h>

#include<stdlib.h>

#include<graphics.h>

#include<math.h>

#include<dos.h>

#include<bios.h>

struct pass //структура

{

char fio[30]; int god; int tabn; //fio[30]-фамилия, god-год рождения, tabn-табельный номер

};

void menu(int j, int c1, int c2, int ys, char *textmenu[]) //функция вывода подпунктов меню

//j-количество пунктов меню, c1-номер цвета текста, с2-номер цвета фона

//ys-координата по у начала первого пункта меню, textmenu[]-содержание пунктов меню

{ int i;

textcolor(c1); //функция задаёт цвет текста

textbackground(c2); //функция задаёт цвет фона

for(i=0;i<j;i++) //цикл осуществляет вывод пунктов меню

{

gotoxy(1,ys); //функция позиционирует курсор по указанным координатам

clreol(); //функция очищает строку,на которой находится курсор

cprintf("%s",textmenu[ys/2-1]); //вывод пункта меню

ys+=2;

}

return;

}

int winmenu(char* u[]) //функция задаёт интерфейс меню

//u[]- массив пунктов меню

{int y,predy; //координаты пункта меню по у

union //объединение для считывания кода клавиши

{

int p;

unsigned char b[2];

}key;

textbackground(0);

clrscr(); //очистка экрана

window(7,3,73,22); //задание размеров окна

textbackground(15);

clrscr();

window(10,4,70,21);

textbackground(2);

clrscr();

y=2;

predy=2;

menu(3,0,2,2,u); //вызов функции меню, где 3-количество пунктов меню

// 0-номер цвета текста 2-номер цвета фона

// 2-координата начала первой строки меню по у в заданном окне u-массив пунктов меню

menu(1,15,0,2,u); // установить подсветку на пункте меню

for(;;)

{

key.p=bioskey(0);

switch (key.b[1])

//выполнение одной из альтернатив, в зависимости от того, какая клавиша нажата

{

case 72: y-=2; //нажата стрелка вверх

if(y<2) y=6;

break;

//оператор разрыва, передаёт управление следующему за switch оператору

case 80: y+=2; //нажата стрелка вниз

if(y>6) y=2;

break;

case 28: return y/2; //нажата клавиша Enter

}

menu(1,0,2,predy,u); //убрать подсветку на пункте меню

menu(1,15,0,y,u); // установить подсветку на пункте меню

predy=y;

}

}

int vvod(struct pass mas[]) //функция ввода данных

{

int kol;

int i; //kol-количество жителей

clrscr();

cprintf("Введите кол-во жителей:");

scanf("%d",&kol); //функция считывает введённые с клавиатуры данные

for(i=0;i<kol;i++) //цикл ввода данных

{

cprintf("\r\n");

cprintf("Введите ФИО: ");

scanf("%s", &mas[i].fio);

cprintf("\r\nВведите год рождение: ");

scanf("%d", &mas[i].god);

cprintf("\r\nВведите его табельный номер: ");

scanf("%d", &mas[i].tabn);

}

return kol; //функция возвращает количество жителей

}

void vivod(int k,struct pass mas[],int de) //функция вывода введённых данных

{

int i; //i-переменная цикла

clrscr();

for(i=0;i<k;i++) //цикл вывода данных на экран

switch(de) //в зависимости о пункта меню de вывод требуемых данных

{

case 1:cprintf("ФИО:%20s\r\nГод рождения:%5d\r\n",mas[i].fio,mas[i].god); break;

case 2:cprintf("ФИО:%20s\r\nТабельный номер:%d\r\n",mas[i].fio,mas[i].tabn); break;

case 3:cprintf("ФИО:%20s\r\nГод рождения:%5d\r\n\

Табельный номер:%d\r\n",mas[i].fio,mas[i].god,mas[i].tabn);

}

getch(); //останов выполнения программы до нажатия любой клавиши

return;

}

void main()

{

struct pass s[30];

int koll,R=1,P=1; //koll-количество жителей

char *textmenu1[]={"1.Ввод инфо","2.Вывод инфо","3.Выход"};

char *textmenu2[]={"1.Вывод ФИО и год рождения",

"2.Вывод ФИО и табельный номер","3.Вывод всей инфо"};

clrscr();

_setcursortype(_NOCURSOR); //убирает курсор с экрана

while(R!=3) //пока пользователь не выбрал последний пункт меню “Выход”

{ R=winmenu(textmenu1); //номер пункта в главном меню

switch(R)

{

case 1: koll=vvod(s); break; //ввод данных

case 2: P=winmenu(textmenu2); //номер пункта в меню второго уровня

vivod(koll,s,P); break; //вывод данных

case 3: clrscr(); textcolor(4); cprintf("Программа завершила работу"); getch();

//выход

}

}

return;

}