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

Описание программы. Листинг. Исходный текст программы. Текст модуля.

ВНИМАНИЕ! Работа на этой странице представлена для Вашего ознакомления в текстовом (сокращенном) виде. Для того, чтобы получить полностью оформленную работу в формате Word, со всеми сносками, таблицами, рисунками (вместо pic), графиками, приложениями, списком литературы и т.д., необходимо скачать работу.

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


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


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


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


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


Выполнил:    студент группы  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г.


Скачиваний: 1
Просмотров: 0
Скачать реферат Заказать реферат