Разработка Windows-приложения «Склонение числительных» средствами Borland Delphi

Автор работы: Пользователь скрыл имя, 18 Июня 2013 в 22:26, курсовая работа

Описание работы

Целью данной курсовой работы является разработка Windows-приложения для склонения натуральных чисел не превосходящих 100000. Для разработки требуемого приложения будет использоваться Borland Delphi.

Файлы: 1 файл

КУРСОВИК ТЕОРИЯ испр..doc

— 2.53 Мб (Скачать файл)

OnClick – событие, выполняемое  при нажатии пользователем на  кнопку.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Заключение

 

В данной курсовой работе было разработано Windows-приложение «Склонение числительных», позволяющее осуществить ввод натурального числа, не превосходящего 100000 и получить на экране соответствующее количественное числительное во всех падежах.

В ходе курсового проектирования был изучен теоретический материал по теме «Склонение числительных». Также была  проанализирована среда разработки приложений Delphi.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Список источников

 

  1. Мисири Г.С. Русский язык. – М., 1979.
  2. Русский язык. Энциклопедия / Под ред. Ю.Н. Караулова. – М., 1998.
  3. Супрун А.Е. Имя числительное и его изучение в школе. – М., 1964.
  4. Фаронов В.В. Delphi. Программирование на языке высокого уровня. Учебник для вузов. – СПб.: Питер, 2003. 
    Приложения

Листинг 1. Unit1. Форма с главным меню


 

 

 

 

 

 

 

 

 

 

// процедура, обрабатывающая  нажатие на пункт меню Выход:

procedure TMainWnd.N1Click(Sender: TObject);

begin

self.Close;

end;

// процедура, обрабатывающая  нажатие на пункт меню Ввести  значение:

procedure TMainWnd.Entervalue1Click(Sender: TObject);

begin

EnterWnd.ShowModal;

end;

// процедура, обрабатывающая  нажатие на пункт меню О программе

procedure TMainWnd.Exit1Click(Sender: TObject);

begin

AboutWnd.ShowModal;

end;

// процедура, обрабатывающая  нажатие на пункт меню Сохранить  в файл

procedure TMainWnd.Saveto1Click(Sender: TObject);

begin

if SaveDialog1.Execute then

  begin

  CurrentFile := SaveDialog1.FileName;

   Memo1.Lines.SaveToFile(CurrentFile);

   Memo1.Modified:=false;

  end;

end;

Листинг 2. Unit2. Окно ввода пользовательских данных


 

 

 

 

 

 

 

//=========================================================================

// Здесь происходит обработка нажатия на кнопку "Отмена"

// ========================================================================

procedure TEnterWnd.Button2Click(Sender: TObject);

begin

self.close;   // Выход  из данного диалога

end;

 

// ========================================================================

// Здесь происходит  обработка вводимых символов  в поле Edit

// Фильтруем вводимые  символы в поле Edit.

// Разрешаем вводить  только цифры от 0 до 9

// ========================================================================

procedure TEnterWnd.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

if not (key in['0'..'9',decimalseparator,#8,#13]) then //проверка на вводимые цифры  от 0 до 9

  begin

   key:=#0; //если введенное  число 0

   beep; // Бикаем при вводе запрещённого символа

  end;

end;

 

// ========================================================================

// Здесь происходит  обработка нажатия на кнопку "Ввести"

// Получаем число из Edit и выводим результат его  преобразования в Memo

// ========================================================================

procedure TEnterWnd.Button1Click(Sender: TObject);

var

s, m: integer;

begin

if Edit1.Modified then  // Проверяем,  есть ли на вводе число

  begin

   s:=strtoint(Edit1.Text);  // Получаем строку из Edit1 и преобразуем  её в число

    if (s<>0) then    // Проверяем, равно ли введённое  число 0

     begin

      if (s<=100000) then   // Проверяем, больше ли введённое число 100000

       begin

        MainWnd.Memo1.Clear; // очищаем поле Меmо

        MainWnd.Memo1.Lines.Add('Вы ввели число: ');

        MainWnd.Memo1.SelStart:=16;

        MainWnd.Memo1.SelLength:=6;

        MainWnd.Memo1.SelText:=inttostr(s); // выводим введенное  пользователем число

        MainWnd.Memo1.Lines.add(''+#13+#10+''); // перенос на  следующую строку

        MainWnd.Memo1.Lines.add('Склонение числительного  по падежам:');

        MainWnd.Memo1.Lines.add(''+#13+''); // перенос на следующую строку

        for m:=0 to 5 do  // Производим циклический  вывод результата

        MainWnd.Memo1.Lines.Add(KolToStrin(m, Edit1.Text)); // выводим  данные, полученные в ходе работы  модуля KolToStrin из юнита Sumstr

        Edit1.Clear;

        self.close;

     end

      else // если  введенное число больше 100000

       Edit1.Text:='Вы  ввели слишком большое число' ;

       Edit1.SetFocus;

     end

    else //если пользователь  ввел 0

     Edit1.Text:='Вы  ввели ноль. Повторите';

     Edit1.SetFocus;

  end

else // если пользователь  ничего не ввел

  Edit1.Text:='Введите значение  от 1 до 100000';

  Edit1.SetFocus;

end;

 

// ========================================================================

// Стираем поле Edit при запуске (событие FormOnShow) окна диалога

// ========================================================================

procedure TEnterWnd.FormShow(Sender: TObject);

begin

Edit1.Clear;

Edit1.SetFocus;

end;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Листинг 3. Unit3. Форма описания возможностей программы и информация о разработчике программы


 

 

 

 

 

 

 

 

 

 

 

 

 

procedure TAboutWnd.Button1Click(Sender: TObject); // процедура обработки нажатия  кнопки Закрыть

begin

self.close

end;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Листинг 4. Sumstr. Функция обработки введенных пользователем данных. (function KolToStrin)

 

function KolToStrin(Padej: integer; Value: string): string;

 

implementation

const //создаем массивы  со всеми необходимыми формами  числительных

//Именительный и винительный  падежи

  a: array[0..4, 0..9] of string = (

    ('', 'один ', 'два  ', 'три ', 'четыре ', 'пять ', 'шесть ', 'семь ','восемь ', 'девять '),

    ('', '', 'двадцать ', 'тридцать ', 'сорок ', 'пятьдесят  ', 'шестьдесят ','семьдесят ', 'восемьдесят  ', 'девяносто '),

    ('', 'сто ', 'двести ', 'триста ', 'четыреста ', 'пятьсот ', 'шестьсот ','семьсот ', 'восемьсот ', 'девятьсот '),

    ('тысяч ', 'одна  тысяча ', 'две тысячи ', 'три тысячи ', 'четыре тысячи ','пять тысяч  ', 'шесть тысяч ', 'семь тысяч  ', 'восемь тысяч ','девять тысяч  '),

    ('', '', 'двадцать ', 'тридцать ', 'сорок ', 'пятьдесят ', 'шестьдесят ','семьдесят ', 'восемьдесят ', 'девяносто '));

  b: array[0..9] of string =

  ('десять ', 'одинадцать ', 'двенадцать ', 'тринадцать ', 'четырнадцать ','пятнадцать ', 'шестнадцать ', 'семнадцать ', 'восемнадцать ','девятнадцать ');

 

// Родительный падеж

  ra: array[0..4, 0..9] of string = (

    ('', 'одного ', 'двух ', 'трех ', 'четырёх ', 'пяти ', 'шести  ', 'семи ','восьми ', 'девяти '),

    ('', '', 'двадцати ', 'тридцати ', 'сорока ', 'пятидесяти ', 'шестидесяти ','семидесяти ', 'восьмидесяти ', 'девяноста '),

    ('', 'ста ', 'двухсот  ', 'трехсот ', 'четырехсот ', 'пятисот  ', 'шестисот ','семисот ', 'восьмисот  ', 'девятисот '),

    ('тысяч ', 'одной  тысячи ', 'двух тысяч ', 'трех тысяч ', 'четырех тысяч ','пяти тысяч ', 'шести тысяч ', 'семи тысяч ', 'восьми тысяч ','девяти тысяч '),

    ('', '', 'двадцати ', 'тридцати ', 'сорока ', 'пятидесяти ', 'шестидесяти  ','семидесяти ', 'восьмидесяти ', 'девяноста  '));

  rb: array[0..9] of string =

  ('десяти ', 'одинадцати ', 'двенадцати ', 'тринадцати ', 'четырнадцати ','пятнадцати ', 'шестнадцати ', 'семнадцати ', 'восемнадцати ','девятнадцати ');

 

    // Дательный  падеж

  da: array[0..4, 0..9] of string = (

    ('', 'одному ', 'двум ', 'трем ', 'четырём ', 'пяти ', 'шести ', 'семи ','восьми ', 'девяти '),

    ('', '', 'двадцати ', 'тридцати ', 'сорока ', 'пятидесяти ', 'шестидесяти  ','семидесяти ', 'восьмидесяти ', 'девяноста  '),

    ('', 'ста ', 'двухстам ', 'трехстам ', 'четырехстам ', 'пятистам ', 'шестистам ','семистам ', 'восьмистам ', 'девятистам '),

    ('тысячам ', 'одной тысячи ', 'двум тысячам  ', 'трем тысячам ', 'четырем тысячам  ','пяти тысячам ', 'шести тысячам  ', 'семи тысячам ', 'восьми тысячам  ','девяти тысячам '),

    ('', '', 'двадцати ', 'тридцати ', 'сорока ', 'пятидесяти ', 'шестидесяти ','семидесяти ', 'восьмидесяти ', 'девяноста '));

  db: array[0..9] of string =

  ('десяти ', 'одинадцати ', 'двенадцати ', 'тринадцати ', 'четырнадцати ','пятнадцати ', 'шестнадцати ', 'семнадцати ', 'восемнадцати ','девятнадцати ');

 

   // Творительный  падеж

  ta: array[0..4, 0..9] of string = (

    ('', 'одним ', 'двумя ', 'тремя ', 'четырьмя ', 'пятью  ', 'шестью ', 'семью ','восемью ', 'девятью  '),

    ('', '', 'двадцатью  ', 'тридцатью ', 'сорока ', 'пятьюдесятью ', 'шестьюдесятью ','семьюдесятью ', 'восемьюдесятью ', 'девяностами '),

    ('', 'ста ', 'двумястами ', 'тремястами ', 'четырьмястами ', 'пятьюстами ', 'шестьюстами ','семьюстами ', 'восемьюстами ', 'девятьюстами '),

    ('тысячами ', 'одной тысячью ', 'двумя тысячами ', 'тремя тысячами ', 'четырьмя тысячами ','пятью тысячами ', 'шестью тысячами ', 'семью тысячами ', 'восемью тысячами ','девятью тысячами '),

    ('', '', 'двадцатью  ', 'тридцатью ', 'сорока ', 'пятьюдесятью ', 'шестьюдесятью ','семьюдесятью ', 'восемьюдесятью ', 'девяностами '));

  tb: array[0..9] of string =

  ('десятью ', 'одинадцатью  ', 'двенадцатью ', 'тринадцатью ', 'четырнадцатью  ','пятнадцатью ', 'шестнадцатью ', 'семнадцатью  ', 'восемнадцатью ','девятнадцатью ');

 

   // Предложный падеж

  pa: array[0..4, 0..9] of string = (

    ('', 'одном ', 'двух ', 'трех ', 'четырёх ', 'пяти ', 'шести  ', 'семи ','восьми ', 'девяти '),

    ('', '', 'двадцати ', 'тридцати ', 'сорока ', 'пятидесяти ', 'шестидесяти  ','семидесяти ', 'восьмидесяти ', 'девяноста '),

    ('', 'ста ', 'двухстах ', 'трехстах ', 'четырехстах ', 'пятистах ', 'шестистах ','семистах ', 'восьмистах ', 'девятистах '),

    ('тысячах ', 'одной тысяче ', 'двух тысячах  ', 'трех тысячах ', 'четырёх тысячах  ','пяти тысячах ', 'шести тысячах ', 'семи тысячах ', 'восьми тысячах ','девяти тысячах '),

    ('', '', 'двадцати ', 'тридцати ', 'сорока ', 'пятидесяти ', 'шестидесяти  ','семидесяти ', 'восьмидесяти ', 'девяноста  '));

  pb: array[0..9] of string =

  ('десяти ', 'одинадцати ', 'двенадцати ', 'тринадцати ', 'четырнадцати ','пятнадцати ', 'шестнадцати ', 'семнадцати ', 'восемнадцати ','девятнадцати ');

 

// ========================================================================

// Тело функции

// ========================================================================

function kolToStrin(Padej: integer; Value: string): string;

var

  s, t, rt, dt, tt, pt: string;

  p, pp, i, k: integer;

begin

s := value;  // Принимаем  "число"

if (s='100000') then  // Склоняем  число 100000

  begin

   t := 'Сто тысяч  ';

   rt := 'Ста тысяч  ';

   dt := 'Ста тысячам  ';

Информация о работе Разработка Windows-приложения «Склонение числительных» средствами Borland Delphi