РефератыИнформатика, программированиеПрПреобразования информации перед передачей её в канал связи

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

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


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


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


Пенза 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














До перестановки 0 1 2 3
После перестановки 1 0 3 2

Избыточный байт в выходном файле формируется через каждые 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 стандартной конфигурации.


Заключение

p>

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


Разработан алгоритм решения поставленной задачи [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("nr")


}


}


} 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("nr")


GetWin(&win[0])


ch=perest(ch)


SetWin(&win[1])


if (ch!='n') putch(ch)


else cprintf("nr")


GetWin(&win[1])


c^=ch


i++


fputc(ch,out)


if (i==3)


{


SetWin(&win[1])


if (c!='n') putch(c)


else cprintf("nr")


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("nr")


GetWin(&win[0])


ch^=c


i++


c=perest(c)


SetWin(&win[1])


if (c!='n') putch(c)


else cprintf("nr")


GetWin(&win[1])


fputc(c,out)


} else


{


c=fgetc(in)


SetWin(&win[0])


if (c!='n') putch(c)


else cprintf("nr")


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-Выход

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

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

Слов:2159
Символов:21477
Размер:41.95 Кб.