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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



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

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

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. Вывод ФИО и года 2. Вывод ФИО и номера группы 3. Вывод всей информации 4. Выход
  Поля структуры: номер поезда, маршрут, время отправления. Структура меню второго уровня: 1. Вывод номера поезда и маршрута 2. Вывод номера поезда и времени отправления 3. Вывод всей информации 4. Выход
  Поля структуры: наименование товара, оптовая цена, розничная цена. Структура меню второго уровня: 1. Вывод наименования товара и оптовой цены 2. Вывод наименования товара и розничной цены 3. Вывод всей информации 4. Выход
  Поля структуры: ФИО предпринимателя, название предприятия, сумма налога. Структура меню второго уровня: 1. Вывод ФИО предпринимателя и названия предприятия 2. Вывод ФИО предпринимателя и суммы налога 3. Вывод всей информации 4. Выход

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

 

Вариант задания Условия задачи
  Поля структуры: наименование, адрес банка, номер счета. Структура меню второго уровня: 1. Вывод наименования и адреса банка 2. Вывод наименования банка и номера счета 3. Вывод всей информации 4. Выход
  Поля структуры: ФИО, номер водительского удостоверения, марка автомобиля. Структура меню второго уровня: 1. Вывод ФИО и номера водительского удостоверения 2. Вывод ФИО и марки автомобиля 3. Вывод всей информации 4. Выход
  Поля структуры, тема реферата, дата сдачи. Структура меню второго уровня: 1. Вывод ФИО студента и темы реферата 2. Вывод ФИО студента и даты сдачи 3. Вывод всей информации 4. Выход
  Поля структуры: ФИО рабочего, табельный номер, средняя заработная плата. Структура меню второго уровня: 1. Вывод ФИО рабочего и табельного номера 2. Вывод ФИО рабочего и средней заработной платы 3. Вывод всей информации 4. Выход
  Поля структуры: ФИО владельца, порода собаки, номер амбулаторной карты. Структура меню второго уровня: 1. Вывод ФИО владельца и породы собаки 2. Вывод ФИО владельца и номера амбулаторной карты 3. Вывод всей информации 4. Выход
  Поля структуры: ФИО студента, номер группы, средний балл за последнюю сессию. Структура меню второго уровня: 1. Вывод ФИО студента и номера группы 2. Вывод ФИО студента и среднего балла за последнюю сессию 3. Вывод всей информации 4. Выход
  Поля структуры: название города, численность населения, площадь. Структура меню второго уровня: 1. Вывод названия города и численности населения 2. Вывод названия города и площади 3. Вывод всей информации 4. Выход
  Поля структуры: шифр детали, количество на складе, стоимость. Структура меню второго уровня: 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;

}

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

  1. Что такое объединение? Как объявить объединение в программе?
  2. Что такое тег? Какова область значение тега?
  3. Какие типы допускается объявлять для элементов объединения?
  4. Каким образам осуществляется доступ к элементу объединения?
  5. Особенности ввода и вывода значений объединений?
  6. Основные отличия структуры от объединения?

Лабораторная работа №18



Поделиться:


Последнее изменение этой страницы: 2017-02-19; просмотров: 179; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 54.166.141.52 (0.043 с.)