Преобразования информации перед передачей ее в канал связи

Пояснительная записка к курсовой работе

Разработал: студент Петров А. В.

Пензенский государственный университет, Кафедра “РЭСС и ЗИ”

Пенза 1998

Задание на курсовое проектирование по теме Разработка программы обработки информации на языке С++

1. Дисциплина – Алгоритмизация и программирование.

2. Вариант задания – 45.

3. Студент Петров А. В. группа 97ПС3.

4. Исходные данные на проектирование

4.1. Общие требования к программе:

– наличие пользовательского интерфейса

– чтение необходимой информации из файлов

– сохранение результатов в файлах

– контроль ошибок при работе с файлами

– преобразование информации по заданному алгоритму

– обратное преобразование информации

– использование избыточности для контроля ошибок

– одновременное отображение на экране преобразованной и не преобразованной информации.

4.2. Требования к пользовательскому интерфейсу:

– обеспечить управления программой посредством “горячих клавиш” (сочетании клавиш) из диапазона Alt-F1 – Alt-F10 , допускается использование клавиши Esc

– обеспечить одновременное отображение на экране преобразованной и не преобразованной информации

– обеспечить цветовое выделение искаженной информации.

4.3. Требования к преобразованию информации:

– преобразование символов с кодами 40h – 5Fh (верхний регистр латинского алфавита)

– использование для преобразования операци. перестановки:

Биты (0-1,1-0,2-3,3-2).

– использование для формирования избыточности операцию исключающего ИЛИ (сложение по модулю 2)

– избыточные символы формируются на каждые 3 символа информации.

5. Объем работы по проекту.

5.1. Содержание работы:

– разработка алгоритмов

– создание программы на базе разработанных алгоритмов

– описание работы программы

– описание пользовательского интерфейса программы

6. Графическая часть

7.Экспирементальная часть

– отладка отдельных частей программы

– проверка работоспособности программы

8. Календарный план выполнения курсового проекта.

8.1 Срок выполнения работ по разделам:

– выдача задания к 1998 г

– разработка алгоритма работы программы к 1998 г

– разработка и отладка пользотательского интерфейс к 1998 г

– разработка и отладка процедур записи и чтения файлов к 1998г

– разработка и отладка процедуры преобразования файлов к 1998г

– оформление П3 к 1998г

– подготовка к защите к 1998г.

Дата защиты проекта ” ” 1998г.

Руководитель проекта Дорошкевич В. В.

Задание получил ” ” 1998г.

Студент Петров А. В.

РЕФЕРАТ

Пояснительная записка содержит 16 листов, 1 рисунк, 2 источника,

2 таблицы, 2 приложения.

ПРОГРАММА, АЛГОРИТМ РАБОТЫ, ПЕРЕСТАНОВКА, ИЗБЫТОЧНОСТЬ.

Объект исследования: алгоритм преобразования информации перед передачей ее в канал связи и программа, реализующая этот алгоритм.

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

В результате была получена работающая программа, а также результаты ее работы.

Введение

В настоящее время индустрия производства компьютеров и программного обеспечения для них является одной из наиболее важных сфер экономики развитых стран. Ежегодно в мире продаются десятки миллионов компьютеров. Только в США объем продаж компьютеров составляет десятки миллионов долларов и постоянно продолжает расти.

В чем же причины такого стремительного роста индустрии персональных компьютеров и их сравнительная выгодность для многих деловых применений?

Простота использования, обеспеченная с помощью диалогового способа взаимодействия с компьютером.

Относительно высокие возможности по переработке информации, наличие программного обеспечения, а так же мощных систем для разработки нового программного обеспечения.

Язык С++ – универсальный язык общего назначения, область приложений которого – программирование систем в самом широком смысле. Кроме этого, С++ успешно используется как во многих приложениях, так и в мощных операционных системах. Реализация С++ осуществлена для машин в диапазоне от самых простых персональных компьютеров до самых мощных суперкомпьютеров и для всех операционных систем.

И потому в данной курсовой работе необходимо применить язык программирования С++ , как наиболее подходящий для решения поставленной задачи.

1. Постановка задачи

Заданием на данную курсовую работу является разработка программы на языке C++ для преобразования информации перед передачей ее в канал связи.

Программа должна выполнять следующие действия – создать многооконный интерфейс пользователя, вывести строку подсказки с назначениями каждой из “горячей клавиш” , организовать опрос клавиатуры, вызов той или иной функции, соответствующей нажатой “горячей клавише’. Исходные данные (преобразуемый текст) должны храниться в файле на диске до загрузки данной программы и считываться по запросу пользователя. Имя файла задается пользователем в диалоговом режиме. Кодирование и декодирование информации должно осуществляться при нажатии пользователем соответствующих “горячих клавиш” .

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

В качестве “горячих клавиш” должны использоваться клавиши (комбинации клавиш) из диапазона Alt+F1 – Alt+F10 , клавиша Esc может использоваться для выхода из программы.

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

Таблица 1

До перестановки0123
После перестановки1032

Избыточный байт в выходном файле формируется через каждые 3 символа путем сложения по модулю 2.

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

2. Разработка алгоритма решения задачи преобразования информации

По условиям, заданным в задаче, исходный текст должен кодироваться с избыточностью путем сложения по модулю 2 на каждые 3 символа. Kодирование должно осуществляться путем подстановки символа по следующей схеме (0-1,1-0,2-3,3-2)

В связи с этим был разработан алгоритм кодирования информации в соответствии с заданием на курсовое проектирование (вариант 45). Данный алгоритм изображен на рисунке 1 и содержит в себе следующие функциональные блоки:

1) начало функции

2) проверка попадания символа в интервал

3) проверка кода символа >=50

4) если код символа >=50 то переменная mask=50h

5) если код символа не >=50 то переменная mask=40h

6) обнулить половину кода

7) разложить по битам в массив buf c перестановкой

8) запись полученных битов в символ

9) вернуть половину кода

10) возвратить символ программе

11) конец функции

3. Разработка программы

Разработанная программа petrov. cpp предназначена для преобразования информации перед передачей ее в канал связи. Программа полностью отвечает требованиям, изложенным в разделе 1 (постановка задачи) и содержит в себе следующие функциональные модули:

1) функция getwin – осуществляет считывание позиции курсора

2) функция perest – осуществляет преобразование символа в соответствии с заданием.

3) основная программа – осуществляет оформление экрана, опрос клавиатуры [1] , вызов функций [1] в соответствии с нажатой “горячей клавиши”, вывод сообщения об ошибке при ее возникновении, очистку экрана, [1] выход из программы.

Данная программа использует при своей работе следующие переменные:

X1,y1,x2,y2 – координаты окна

Tc, tb – цвет окна

Px, py – позиция курсора

Fname[50] – имя файла.

Разработанная программа petrov. cpp была полностью протестирована, результаты тестирования приведены в приложении В. Анализ результатов показал, что программа является полностью работоспособной.

4. Руководство оператора

Разработанная программа petrov. cpp предназначена для преобразования информации перед передачей ее в канал связи.

Данная программа предназначена для своего использования операционной системой MS-DOS.

Для запуска программы необходимо вызвать на выполнение запускаемый файл petrov. exe. После запуска данной программы на экране появитс строка подсказки со списком “горячих клавиш”. Чтобы начать работу с программой, пользователю необходимо загрузить исходный файл, для чего нужно с помощью клавиш Alt+F1 загрузить исходный файл, с помощью клавиш Alt+F2 создать выходной файл и нажать сочетание клавиш Alt+F3 для кодирования информации.

Для декодирования информации необходимо загрузить уже записанный файл с помощью клавиш Alt+F2 и нажать сочетание клавиш Alt+F4.

Выход из программы осуществляется при помощи клавиши Esc.

Во всех случаях работы с файлами программа запрашивает имя файла в диалоговом режиме.

Для нормальной работы данной программы необходимо наличие персонального компьютера типа IBM PC стандартной конфигурации.

Заключение

В данной курсовой работе решена задача преобразования информации перед передачей ее в канал связи.

Разработан алгоритм решения поставленной задачи [2].

Составлена и отлажена программа на языке С++ [2] , реализующая кодирование информации.

В процессе отладки программы была получена полностью работоспособная программа.

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

Анализ результатов показал, что поставленная задача успешно решается.

Список литературы

1. Бьярн Страуструп. Язык программирования С++.в двух частях. Пер. с англ. Киев: “ДиаСофт” , 1993.-296 с.,ил.

2 . Корриган Джон : С++ основы программирования: Пер с англ. – М.:Энтроп, 1995. – 352 с., ил.

ПРИЛОЖЕНИЕ А

(обязательное)

Текст программы ptrov. cpp приведен в таблице А1

Таблица А1

КомандаПояснение

#include <stdio. h>

#include <conio. h>

#include <string. h>

Struct win_info

{

Int x1, y1, x2, y2

Int tc, tb

Int px, py

Char fname[50]

}win[2]

FILE *in, *out

Char c, ch

Int i

Void SetWin(win_info * w)

{

Textcolor(w->tc)

Textbackground(w->tb)

Window(w->x1,w->y1,w->x2,w->y2)

Gotoxy(w->px, w->py)

}

Void GetWin(win_info * w)

{

W->px=wherex()

W->py=wherey()

}

Char perest(char x)

{

If ((x>=0x40)&;(x<=0x5f))

{

Char mask, buf[4]

If (x>=0x50) mask=0x50

Else mask=0x40

X^=mask

Buf[0]=(x&;1)

Buf[1]=(x&;2)/2

Buf[2]=(x&;4)/4

Buf[3]=(x&;8)/8

X=buf[1]+buf[0]*2+buf[3]*4+buf[2]*8

X^=mask

}

Return x

}

Void main()

{

Textbackground(WHITE)

Textcolor(BLACK)

Clrscr()

For(i=1

I<2000

I++) putchar(176)

Window(1,25,80,25)

Textcolor(BLACK)

Textbackground(WHITE)

Clrscr()

Cprintf(” ALT-F1 Исходн. файл ALT-F2 Конечн. файл ALT-F3 Кодир. ALT-F4 Декодир. ESC-Выход”)

Win[0].x1=2

win[1].x1=2

Win[0].x2=79

win[1].x2=79

Win[0].y1=3

win[1].y1=14

Win[0].y2=12

win[1].y2=23

Win[0].py=1

win[1].px=1

Win[0].px=1

win[1].py=1

Win[0].tc=LIGHTBLUE

Win[1].tc=LIGHTBLUE

Win[0].tb=BLUE

Win[1].tb=BLUE

Window(1,1,80,1)

Textcolor(BLACK)

Textbackground(WHITE)

Clrscr()

_setcursortype(_NOCURSOR)

Do

{

Ch=getch()

If (ch==0) switch(getch())

{

Координаты окна

Цвета окна

Позиция курсора

Имя файла

Активизировать рабочее окно и

Установить курсор в текущую позицию

Считать поз. курсора

Проверка на принадлежность к

Обрабатываемым символам

Обнулить половину кода

Разложить по битам

Собрать биты в обратном порядке

Восстановить половину кода

Вернуть новый символ

Создать рабочий экран

Задать параметры рабочих окон

КомандаПояснение

Case 104 : fclose(in)

// Нажата ALT-F1

win[0].px=1

Win[0].py=1

window(1,1,80,1)

textcolor(BLACK)

textbackground(WHITE)

clrscr()

Printf(” Введите имя исходного файла : “)

_setcursortype(_NORMALCURSOR)

gets(win[0].fname)

_setcursortype(_NOCURSOR)

window(1,2,80,12)

clrscr()

for(i=1

I<=880

I++) putchar(176)

if((in=fopen(win[0].fname,”rt”))==NULL)

{

Window(1,1,80,1)

Textcolor(RED)

Clrscr()

Printf(” %cНемогуоткрытьфайл – %s – !!!”,7,&;win[0].fname)

} else

{

textcolor(RED)

textbackground(WHITE)

window(39-strlen(win[0].fname)/2,2,41+strlen(win[0].fname)/2,2)

clrscr()

printf(” %s”,&;win[0].fname)

SetWin(&;win[0])

clrscr()

while(!feof(in))

{

C=fgetc(in)

If(c!=’\n’) putch(c)

Else {

if (wherey()==10) break

cprintf(“\n\r”)

}

}

} break

case 105 : fclose(out)

win[1].px=1

Win[1].py=1

window(1,1,80,1)

textcolor(BLACK)

textbackground(WHITE)

clrscr()

printf(” Введитеимяконечногофайла : “)

_setcursortype(_NORMALCURSOR)

gets(win[1].fname)

_setcursortype(_NOCURSOR)

window(1,13,80,23)

clrscr()

for(i=1

I<=880

I++) putchar(176)

if((out=fopen(win[1].fname,”wt”))==NULL)

{

Window(1,1,80,1)

Textcolor(RED)

Clrscr()

Printf(“%c Немогусоздатьфайл – %s – !!!”,7,&;win[1].fname)

} else

{

textcolor(RED)

textbackground(WHITE)

window(39-strlen(win[1].fname)/2,13,41+strlen(win[1].fname)/2,13)

clrscr()

printf(” %s”,&;win[1].fname)

SetWin(&;win[1])

clrscr()

} break

case 106 : if((in!=NULL)&;(out!=NULL))

{

c=0

i=0

SetWin(&;win[0])

Clrscr()

GetWin(&;win[0])

SetWin(&;win[1])

Clrscr()

GetWin(&;win[1])

fseek(in,0,0)

fseek(out,0,0)

While(!feof(in))

Нажата ALT-F2

ALT-F3

КомандаПояснение

{

Ch=fgetc(in)

SetWin(&;win[0])

If (ch!=’\n’) putch(ch)

Else cprintf(“\n\r”)

GetWin(&;win[0])

Ch=perest(ch)

SetWin(&;win[1])

If (ch!=’\n’) putch(ch)

Else cprintf(“\n\r”)

GetWin(&;win[1])

C^=ch

I++

Fputc(ch, out)

If (i==3)

{

SetWin(&;win[1])

if (c!=’\n’) putch(c)

Else cprintf(“\n\r”)

GetWin(&;win[1])

fputc(c, out)

c=0

i=0

}

}

} break

Case 107 : if((in!=NULL)&;(out!=NULL))

{

ch=0

i=0

SetWin(&;win[0])

Clrscr()

GetWin(&;win[0])

SetWin(&;win[1])

Clrscr()

GetWin(&;win[1])

fseek(in,0,0)

fseek(out,0,0)

while(!feof(in))

if (i!=3)

{

C=fgetc(in)

SetWin(&;win[0])

If (c!=’\n’) putch(c)

Else cprintf(“\n\r”)

GetWin(&;win[0])

Ch^=c

I++

C=perest(c)

SetWin(&;win[1])

If (c!=’\n’) putch(c)

Else cprintf(“\n\r”)

GetWin(&;win[1])

Fputc(c, out)

} else

{

C=fgetc(in)

SetWin(&;win[0])

If (c!=’\n’) putch(c)

Else cprintf(“\n\r”)

GetWin(&;win[0])

If (c==ch)

{

ch=0

i=0

} else

{

textcolor(RED)

textbackground(WHITE)

window(1,1,80,1)

clrscr()

printf(” %cОшибкавфайле %s”,7,&;win[0].fname)

break

}

}

} break

}

}

While(ch!=27)

Fcloseall()

Textcolor(WHITE)

Textbackground(BLACK)

Window(1,1,80,25)

Clrscr()

}

ALT-F4

Выход, если нажат ESC

Закрыть все файлы

Очистить экран

ПРИЛОЖЕНИЕ В

РЕЗУЛЬТАТЫ РАБОТЫ ПРОГРАММЫ

Введите имя конечного файла : zzz

____________________________________ file _____________________________________

_Проверка программы преобразования информации_ _

_ _

_ _

_ _

_ _

_ _

_ _

_ _

_ _

_ _

_____________________________________ zzz ______________________________________

_Про-верчка *просграуммыы прoеобкразчовамнияъ ин%форкмацъии__ _

_ _

_ _

_ _

_ _

_ _

_ _

_ _

_ _

_ _

________________________________________________________________________________

ALT-F1 Исходн. файл ALT-F2 Конечн. файл ALT-F3 Кодир. ALT-F4 Декодир. ESC-Выход


Преобразования информации перед передачей ее в канал связи