РефератыИнформатикаСоСоздание текстового редактора

Создание текстового редактора

Министерство энергетики РФ


Уфимский Энергетический Колледж


Курсовая работа


по Основам алгоритмизации и программирования


на тему “Создание текстового редактора”


Выполнил: студент группы 2 – АС – 3 ____________ Тимофеев Т.П.


Проверил: ____________ Ганиев А.Э.


Уфа – 2001г.


Содержание


Задание ……………………………………………………… стр. 3


Описание программы ………………………………………. стр. 4


Листинг ……………………………………………………… стр. 5


Исходный текст программы .…………………………. стр. 5


Текст модуля ……………….………………………….. стр.10


Заключение ………………………………………………….. стр.18


Список использованной литературы ……………………… стр.19


Задание.


Создать программу, обеспечивающую:


Cоздание файлов.


Переименование файлов.


Удаление файлов.


Копирование файла в другой файл.


Открытие файла для просмотра.


Программа должна быть написана на Turbo Pascal в текстовом режиме с использованием любых модулей, которые необходимы для её реализации (допускаются также модули пользователя).


Описание программы.


Timofeev Word v.1.0
– это программа для работы с текстом. С её помощью можно создавать, удалять, переименовывать, открывать, копировать файлы друг в друга. Конечно, всё это можно проделать и в MS-DOS, но преимущество этой программы в том, что все эти команды тщательно спрятаны под красивым
и дружественным
интерфейсом моей программы.


Так как в программе Timofeev Word v.1.0
много процедур, я создал собственный модуль Tim.tpu
, куда их (процедуры) и отправил.


Процедуры:


Table
– рисует оболочку программы.


Enter_Sandman
– происходит проигрывание музыки на песню группы Metallica - “Enter Sandman”. Я не стал делать так, чтобы при нажатии какой-либо клавиши она прекращала играть, потому что для меня (не знаю как для других) это свято.


Menu
– эта процедура вызывает меню, где содержится информация о программе и помощь (если её так можно назвать).


Keys
– процедура, считывающая код нажатой клавиши.


В этой программе, конечно много недоработок, но я надеюсь, что вскоре появятся дополненные версии 1.2, 1.3, 2.0,2.1,……, n.m.


Эта программа может использоваться в о-о-о-о-о-очень маленьких офисах, которые не имеют возможности приобрести качественный лицензионный продукт, к примеру Microsoft Office’9x, ’2000 (если кто-то имеет на примете такой офис, я с удовольствием продам, за символическую цену, свой программный продукт). Также программа может использоваться для обучения детей в детских садах работе на персональных компьютерах. И, наконец, ей могут воспользоваться студенты I курса для сдачи её как Курсовой работы на следующем курсе.


Листинг.


Исходный текст программы.


Program Redaktor;


Uses Crt,Tim; {использовать модули Crt и Tim}


Label b; {метка}


Var {тело}


Programname,Cmdline:string;


nn,i,x,y:integer;


f1,f1_new:text;


Name,New_name:string[12];


txt,text:string;


ch:char;


begin


i:=1;


textbackground(red);


clrscr;


textcolor(yellow);


gotoxy(22,10);


writeln('Текстовый процессор Timofeev Word');


gotoxy(22,11);


writeln(' Версия 1.0 (2001 год)');


gotoxy(40,15);


writeln('Составил Тимофеев Тимур (2-АС-3)');


textcolor(green);


gotoxy(40,16);


writeln('Все права защищены.');


gotoxy(40,17);


writeln('Незаконное копирование');


gotoxy(40,18);


writeln('или подделка без согласия автора');


gotoxy(40,19);


writeln('преследуется по понятиям !!!');


delay(5000);


textcolor(yellow);


table;


gotoxy(2,21);


write('Введите имя:');


readln(name);


assign(f1,name);


rewrite(f1);


gotoxy(2,21);


write('Вводите текст !!! ');


gotoxy(1,2);


repeat


write(chr(179),':>');


readln(txt);


writeln(f1,txt);


until txt='';


close(f1);


gotoxy(2,21);


writeln('Ввод окончен, нажмите чего-нибудь ...');


repeat


readkey;


keys(nn);


case nn of {определяет нажатие функциональных клавиш}


59:menu; {F1}


60:begin {F2}


table;


gotoxy(2,21);


write(' ');


gotoxy(2,21);


write('Введите имя:');


readln(name);


assign(f1,name);


rewrite(f1);


gotoxy(2,21);


write('Вводите текст !!! ');


gotoxy(1,2);


repeat


write(chr(179),':>');


readln(txt);


writeln(f1,txt);


until txt='';


close(f1);


gotoxy(2,21);


writeln('Ввод окончен, нажмите чего-нибудь ...');


end;


61:begin {F3}


gotoxy(2,21);


write('Введите имя файла, в который копир-я файл ',name,'->');


readln(new_name);


reset(f1);


assign(f1_new,new_name);


append(f1_new);


while not eof(f1) do


begin


readln(f1,txt);


writeln(f1_new,txt);


end;


close(f1);


close(f1_new);


gotoxy(2,21);


writeln('Файл ',name,' скопирован в ',new_name,' нажмите


чего-нибудь ...');


end;


62:begin {F4}


gotoxy(2,21);


write(' ');


gotoxy(2,21);


write('Введите новое имя файла:');


readln(new_name);


assign(f1,name);


rename(f1,new_name);


gotoxy(2,21);


writeln('Файл ',name,' перименован в ',new_name,' нажмите


чего-нибудь ... ');


end;


63:begin {F5}


erase(f1);


gotoxy(2,21);


writeln('Файл ',name,' удалён с диска, нажмите чего-нибудь ...');


end;


64:begin {F6}


{$I-}


repeat


gotoxy(2,21);


write('Введите имя файла для считывания текста ->');


readln(name);


assign(f1,name);


reset(f1);


if ioresult<>0 then


begin


gotoxy(2,21);


writeln('Файл не найден ... ');


close(f1);


end;


until ioresult=0;


{$I+}


table;


gotoxy(1,2);


while not eof(f1) do


begin


readln(f1,txt);


writeln(chr(179),txt);


end;


close(f1);


gotoxy(2,21);


write('Файл считан, нажмите чего-нибудь ... ');


end;


68:goto b; {F10} {Происходит выход на метку}


end;


until i<

;0; {считывай функциональные клавиши пока i<0,


а т.к. i=1 и не изменяется, то этот процесс бесконечен}


b:end.


Текст модуля.


Unit Tim;


Interface


Uses Crt,Dos;


Procedure keys(var n:integer);


Procedure table;


Procedure Enter_sandman;


Procedure menu;


Implementation


Procedure keys(var n:integer);{процедура нажатия клавиши}


var c:char;


begin


if keypressed then


begin


c:=readkey;


if c=#0 then c:=readkey;


n:=ord(c);


end;


end;


Procedure Enter_sandman; {музыка}


Const


m:array [1..6] of integer=(165,330,392,233,220,330);


t:array [1..6] of integer=(1100,600,600,600,1100,600);


e:array [1..7] of integer=(165,165,165,165,165,165,170);


r:array [1..7] of integer=(600,600,600,600,600,600,1100);


w:array [1..5] of integer=(167,167,167,294,233);


q:array [1..5] of integer=(1100,600,600,600,1100);


o:array [1..9] of integer=(165,182,165,182,165,196,165,182,165);


b:array [1..9] of integer=(600,1100,600,600,600,600,600,600,3000);


var a,u,z,x:integer; i:byte;


begin


for a:=1 to 4 do


begin


for i:=1 to 6 do


begin


sound(m[i]);


delay(t[i]);


nosound;


end;


end;


for u:=1 to 3 do


begin


for i:=1 to 7 do


begin


sound(e[i]);


delay(r[i]);


nosound;


end;


end;


for z:=1 to 3 do


begin


for i:=1 to 5 do


begin


sound(w[i]);


delay(q[i]);


nosound;


end;


end;


for i:=1 to 9 do


begin


sound(o[i]);


delay(b[i]);


nosound;


end;


end;


Procedure table; {рисует таблицу}


var


w,h:integer;


c1,c2,c3,c4,c7,c5,c6,c8,c9,c10:char;


begin


textbackground(blue);


clrscr;


textcolor(yellow);


w:=1;


h:=1;


c1:=chr(218);


c2:=chr(196);


c3:=chr(191);


c4:=chr(179);


c5:=chr(192);


c6:=chr(217);


c7:=chr(195);


c8:=chr(180);


c9:=chr(193);


c10:=chr(194);


for h:=2 to 25 do


begin


gotoxy(w,h);


write(c4);


end;


gotoxy(w,h);


write(c5);


for w:=2 to 79 do


begin


gotoxy(w,h);


write(c2);


end;


gotoxy(w,h);


write(c6);


for h:=24 downto 1 do


begin


gotoxy(w,h);


write(c4);


end;


gotoxy(w,h);


write(c3);


for w:=78 downto 1 do


begin


gotoxy(w,h);


write(c2);


end;


gotoxy(w,h);


write(c1);


gotoxy(1,20);


write(c7);


for w:=2 to 59 do


begin


gotoxy(w,20);


write(c2);


end;


gotoxy(w,1);


write(c10);


for h:=2 to 24 do


begin


gotoxy(w,h);


write(chr(179));


end;


gotoxy(w,20);


write(c8);


gotoxy(59,25);


write(c9);


gotoxy(62,4);


writeln('F1-Помошь');


gotoxy(62,5);


writeln('F2-Новый');


gotoxy(62,6);


writeln('F3-Копировать');


gotoxy(62,7);


writeln('F4-Переименовать');


gotoxy(62,8);


writeln('F5-Удалить');


gotoxy(62,9);


writeln('F6-Просмотреть');


gotoxy(62,10);


writeln('F10-Выход');


end;


Procedure menu;


Const


NORM=$17;{ цвет невыделеного пункта }


SEL=$70;{ цвет выделенного пункта }


N=3;


var


menu:array[1..N] of string[12];{ названия пунктов меню }


punkt:integer;{ номер выделенного пункта }


ch:char;{ введенный символ }


x,y,i:integer;{ координаты первой строки меню }


Procedure punkt1;


begin


ClrScr;


writeln('Выполнил студент гр. 2-АС-3 Тимофеев Т.П. (2001 г.)');


writeln('Курсовая работа-а-а-а-а-а-а-а !!!!!!!!!!!!!!!!!');


readln;


end;


Procedure punkt2;


begin


ClrScr;


writeln('Тута всё понятно даже ребёнку.');


readln;


end;


Procedure MenuToScr;{ вывод меню на экран }


var i:integer;


begin


ClrScr;


for i:=1 to N do begin


GoToXY(x,y+i-1);


write(menu[i]);


end;


TextAttr:=SEL;


GoToXY(x,y+punkt-1);


write(menu[punkt]);{ выделим строку меню }


TextAttr:=NORM;


end;


begin


menu[1]:=' О программе ';


menu[2]:=' Помощь ';


menu[3]:=' Выход ';


punkt:=1;


x:=5;


y:=5; TextAttr:=NORM;


MenuToScr;


repeat


ch:=ReadKey;


if ch=char(0) then begin


ch:=ReadKey;


case ch of


chr(80):{ стрелка вниз }


if punkt<N then begin


GoToXY(x,y+punkt-1);


write(menu[punkt]);


punkt:=punkt+1;


TextAttr:=SEl;


GoToXY(x,y+punkt-1);


write(menu[punkt]);


TextAttr:=NORM;


end;


chr(72):{ стрелка вверх }


if punkt>1 then begin


GoToXY(x,y+punkt-1);


write(menu[punkt]);


punkt:=punkt-1;


TextAttr:=SEl;


GoToXY(x,y+punkt-1);


write(menu[punkt]);


TextAttr:=NORM;


end;


end;


end


else


if ch=chr(13) then begin { нажата клавиша <Enter> }


case punkt of


1:punkt1;


2:punkt2;


3:i:=2;{ выход }


end;


MenuToScr;


end;


until i=2;


end;


end.


Заключение.


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


Программа основана на стандартных процедурах и функциях модуля Crt: Rename, Erase, Append, Rewrite, Reset, Assign и др.


Список использованной литературы.


Попов В.Б.
“Turbo Pascal для школьников”:


Учеб.пособие. – 3-е доп. изд. – М.: Финансы и статистика, 2001г.


Вирт Н.
“Алгоритмы и структуры данных”:


Пер. с англ. – М.: Мир, 1989г.


Прайс Д.
“Программирование на языке Паскаль: Практическое руководство”.


Пер. с англ. – М.: Мир, 1987г.

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

Название реферата: Создание текстового редактора

Слов:1319
Символов:15601
Размер:30.47 Кб.