Программирование на языке Делфи

Задача решается методом сеток, происходит деление сторон пластинки на 100 частей, т.е получаем сетку размером 100 на 100.

Заданные значения

A = 3, Mk = 2, ωk = 1, N = 2, t = 1

Результат вычислений

ω(x, y, t) = 22,0735;

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

// Функция вычисления силы

function fmn(m, n :Integer; x, y : Real):Real;

const

a = 1; b = 1; pi = 3.14;

begin

fmn := sin(m*pi*x/a) * sin(n*pi*y/b);

end;

procedure TForm1.Button1Click(Sender: TObject);

var

i, j : Integer;

A, Mk, ok, N, t : Real;

x, y, d, c1, c2, qk, sm, om: Real;

u:array 1..100,1..100 of Real;

begin

// Считываем исходные данные

ok := StrToFloat(Edok.Text);

N := StrToFloat(EdN.Text);

t := StrToFloat(Edt.Text);

A := StrToFloat(EdA.Text);

Mk := StrToFloat(EdMk.Text);

// Заполняем матрицу значений силы

x := 0;

for i := 1 to 100 do

begin

x := x + 0.01;

y := 0;

for j := 1 to 100 do

begin

y := y + 0.01;

u i,j := fmn(i, j, x, y);

end;

end;

u 1,1 := 0;

u 1,100 := 0;

u 100,1 := 0;

u 100,100 := 0;

// Производим вычисления

sm := 0;

c1 := -(100*n *A)/(Mk * (5000 * ok*ok - ok*ok*ok*ok - 1000 * N*N));

d := A*(2500-ok*ok)/(Mk * (5000 * ok*ok - ok*ok*ok*ok - 1000 * N*N));

c2 := 50 * d / (N*N - ok*ok);

qk := exp(-N*t)*(c1*cos((N*N - ok*ok)*t) + c2*sin((N*N - ok*ok)*t)) -

c1 * cos (50*t) + d * sin(50 * t);

for i := 1 to 100 do

for j := 1 to 100 do

sm := sm + u i,j ;

om := qk * sm;

// Выводим результат

Edom.Text := FloatToStr(om);

end;

// Фильтруем ввод значений

procedure TForm1.EdAKeyPress(Sender: TObject; var Key: Char);

begin

if (Key in 0 .. 9 , . ) = False then

Key:=Chr(0) else

if (Key = . ) and (Pos( . ,(Sender as Tedit).Text) > 0) then Key:=Chr(0);

end;

РАЗРАБОТКА ПРОГРАММЫ «АБИТУРИЕНТ». КУРСОВОЙ.

Пояснительная записка к курсовой работе по дисциплине “Высокоуровневые методы информатики и программирования ”

Тема курсовой работы:

Разработка программы «Экзаменационная ведомость» для выдачи сводной экзаменационной ведомости '

Перечень вопросов, подлежащих исследованию или разработке:

1.Ввод ФИО студентов, наименований экзаменационных предметов, оценки по всем предметам в файл

2.Контроль вводимой информации

3.Подсчет среднего балла по всем предметам

4.Вывод ведомости

СОДЕРЖАНИЕ

Стр.

ВВЕДЕНИЕ………………………………………………………………………….'4

1 ТЕХНИЧЕСКОЕ ЗАДАНИЕ……………………………………………………..'5

2 ТЕХНИЧЕСКИЙ ПРОЕКТ……………………………………………………….'8

2.1 Разработка форм представления входных и выходных данных……………..'8

3 РАБОЧИЙ ПРОЕКТ………………………………………………………………'11

3.1 Описание программы …………………………………………………………..'11

3.2 Руководство пользователя………………………………………………………'19

ЗАКЛЮЧЕНИЕ………………………………………………………………………'27

СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ……………………………………'28

ПРИЛОЖЕНИЕ А Код основного модуля программы…………………………..'29

ВВЕДЕНИЕ

Основная цель данной курсовой работы – это написание программы, которая предназначена для формирования и выдачи сводной экзаменационной ведомости.

Область применения программы довольно широка. С ее помощью проводить учет сдачи студентами экзаменов и зачетов и автоматизировать подсчет среднего бала.

В работе рассмотрены следующие вопросы:

1 Формирование технического задания

'- организационно-экономическая сущность задачи,

'- описание исходной (входной) информации,

'- описание выходной информации,

'- описание алгоритма решения задачи.

2 Создание технического проекта (разработка форм представления входных и выходных данных)

3 Создание рабочего проекта

- описание программы,

- руководство пользователя.

1 ТЕХНИЧЕСКОЕ ЗАДАНИЕ

Название программы и ее назначение: Разработка программы «Экзаменационная ведомость» для выдачи сводной экзаменационной ведомости.

Основной функционал программы:

1. Ввод ФИО студентов, наименований экзаменационных предметов, оценки по всем предметам в файл.

2. Контроль вводимой информации

3. Подсчет среднего балла по всем предметам

4. Вывод ведомости

1. Организационно-экономическая сущность задачи

Наименование задачи: программа «Экзаменационная ведомость» для выдачи сводной экзаменационной ведомости.

Место решения задачи: компьютер пользователя.

Цель решения: вывод ведомостей, хранение данных и подсчет среднего бала.

Назначение: программа может применяться преподавателями или учителями.

Периодичность решения: во время экзаменационных сессий.

Требования к срокам решения: решение должно быть получено оперативно.

Источники и способы поступления данных: источниками данных являются ведомости по сдаваемым предметам.

Потребители результатной информации: преподаватели и учителя.

Информационная связь с другими задачами: информация, которая используется в программе может использоваться для анализа результатов сдачи сессии, для назначения стипендии и т.д.

2. Описание исходной (входной) информации

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

Формы представления: все данные приходят в бумажной форме.

Способы контроля ввода исходной информации: оценка полученная студентов должна лежать в диапазоне от 2-х до 5-ти.

3. Описание выходной информации

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

Формы представления: таблица, отображаемая в программе и файл на жестком диске.

4. Описание алгоритма решения задачи

Укрупненный алгоритм следующий:

1. Чтение из файла данных о сдаче экзаменов (шаг можно пропустить).

2. Если шаг первый был пропущен, то нужно создать новый файл.

3. Ввод данных о сдаче экзаменов. Автоматически данные добавляются в файл и выводятся на экран.

4. Расчет среднего бала.

Средний бал считается по формуле:

(1.1),

где о – оценка по предмету,

kol – количество оценок.

Введем обозначения переменных, определим тип, физический смысл и назначение переменных (таблица 1.1)

Таблица 1.1 - Описание данных №

п/п'Имя

переменной'Физический смысл

переменной'Назначение переменной'Ограничения 1'Vedom'информация о сдаче экзамена одним студентом 'исходные данные'запись 2'FIO'ФИО студента'исходные данные'строка, элемент записи 3'predmet'сдаваемый предмет'исходные данные'строка, элемент записи 4'ocenka'оценка'исходные данные'простая переменная целого типа, элемент записи, диапазон 2-5 5'mas'массив данных о сдаче экзаменов'исходные данные'массив из 1000 элементов 6'f'файл для хранения данных'исходные данные или результат'файловая переменная 7'FileName'имя файла 'вспомогательная переменная'строка 8'kol'количество записей'вспомогательная переменная'простая переменная целого типа 9'temp'временная переменная для проверки корректности ввода'вспомогательная переменная'простая переменная целого типа 10'i'индекс записи в массиве'вспомогательная переменная'простая переменная целого типа 11'sum'сумма оценок'вспомогательная переменная'простая переменная вещественного типа 12'sred'средний бал'результат'простая переменная вещественного типа 13'nom'номер записи'вспомогательная переменная'простая переменная целого типа

2 ТЕХНИЧЕСКИЙ ПРОЕКТ

2.1 Разработка форм представления входных и выходных данных

Исходя из ТЗ, созданная программа должна обеспечивать:

- ввод исходных данных (ФИО, название предмета, оценку);

- контроль вводимой информации (оценка должна быть в пределах от 2-х до 5-ти);

- просмотр результатов в виде ведомости;

- расчет среднего бала.

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

Основная сущность предметной области – это запись про сдачу экзамена. Так как составляющие этой информации имеют различный тип (ФИО и название предмета – строки, а оценка – целое число), то в качестве структуры данных для размещения этой информации выберем запись.

Тип данных запись (Record) предоставляет программисту возможность объединить в одну связную структуру различные по типу и смыслу элементы (поля). Элементами записи могут быть любые допустимые типы, в том числе и структурированные (например: массивы, строки, другие записи) кроме файловых типов. Для обработки доступны как отдельные поля записи, так и вся запись целиком.

Дадим записи название Vedom. В качестве полей записи используем значения ФИО студента, названия предмета и оценку. Тип полей (как уже было сказано) будет строковый (string) и целочисленный (integer). В результате объявление записи примет вид:

Vedom = record

FIO : string'250';

predmet : string'250';

ocenka : integer;

end;

Так как согласно заданию в программе может использоваться множество записей (ведомость), то используем для их хранения массив.

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

В памяти компьютера массив можно представить в виде последовательности ячеек памяти, имеющих одно имя, каждый элемент которой отличается индексом. Массивы подразделяются на одномерные и многомерные. Одномерные массивы (вектора) представляют собой линейную последовательность (например: строка клеток в тетради). Многомерные массивы можно представить как массив массивов. Например: двухмерный массив – страница в тетради, трехмерный массив – тетрадь, и т.д.

Описание одномерных массивов производится по следующему синтаксису:

<имя_массива>:Array <'нач_индех . . кон_индех'> of <Тип_элемента>

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

Так как мы заранее не знаем сколько будет записей в программе, то установим достаточно большой размер массива (например, 1000 элементов). Его объявление будет выглядеть следующими образом:

mas : array'1..1000' of Vedom;

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

Файловый тип данных или файл определяет упорядоченную совокупность произвольного числа однотипных компонент. При работе с файлами выполняются операции ввода - вывода. Операция ввода означает перепись данных с внешнего устройства (из входного файла) в основную память ЭВМ, операция вывода - это пересылка данных из основной памяти на внешнее устройство (в выходной файл).

Для работы с файлами в программе необходимо определить файловую переменную. Паскаль поддерживает три вида файлов: типизированные файлы, текстовые файлы, нетипизированные файлы. Для обозначения элемента файла с которым будет проводиться операция ввода/вывода используется файловый указатель.

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

Формат объявления:

<идентификатор >: File of <тип_элементов_файла>;

В нашем случае объявление примет вид:

f : file of Vedom;

Для работы с фалом файловую переменную нужно связать с конкретным файлом на диске при помощи процедуры assign.

После необходимо файл открыть для работы. Для этого используется одна из следующих стандартных процедур:

RESET(<имя файловой переменной>) - открыть файл для чтения

REWRITE(<имя файловой переменной>) - открыть файл для записи

Также создадим переменную FileName типа String для хранения имен файлов:

FileName : String;

Для подсчета числа записей в массиве объявим целочисленную переменную:

kol : integer;

Все вышеупомянутые переменные являются глобальными (видны во всех функциях и процедурах данного модуля).

3 РАБОЧИЙ ПРОЕКТ

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

Для задачи «Разработка программы «Экзаменационная ведомость» для выдачи сводной экзаменационной ведомости» создается основная форма «Экзаменационная ведомость» (рис. 3.1) и модуль Unit1.

Рис.3.1. Основная форма «Экзаменационная ведомость»

Программа состоит из одной формы, на которой и выполняются все основные действия.

На форме расположены 12 компонентов TButton, 7 компонентов TLabeledEdit, компонент TStringGrid, компонент TOpenDialog, компонент TSaveDialog, 2 компонента TGroupBox, 2 компонента TSpinEdit.

Рассмотрим предназначение компонентов.

TStringGrid – таблица для отображения сводной ведомости.

CreatePustFileButton – кнопка для создания нового файла.

OpenTipFileButton– кнопка для открытия файла.

AddToFileButton – кнопка внесения в файл и отображения на форме нового результата экзамена.

UpdateButton – кнопка вывода панели редактирования информации о результате экзамена.

DeleteButton – кнопка вывода панели удаления информации о результате экзамена.

CloseButton – кнопка для закрытия формы.

AveBal – кнопка для расчета среднего бала.

LE_FIO – поле для ввода ФИО студента.

LE_Predmet – поле для ввода названия дисциплины.

LE_Ocenka – поле для ввода оценки.

LE_Sred – поле для вывода среднего бала.

OpenDialog1 – диалог открытия файла.

SaveDialog1 – диалог сохранения файла.

StringGrid1 – таблица для вывода ведомости.

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

SENomDel – поле для ввода номера удаляемого элемента.

BtnDel – кнопка для удаления данных.

BTNCancelDel – кнопка для закрытия панели удаления информации о результате экзамена.

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

SENomRed – поле для ввода номера редактируемого элемента.

ButtonNom – кнопка для принятия номера редактируемого элемента.

ButtonUpdate – кнопка для редактирования данных.

BTNCancelRed – кнопка для закрытия панели редактирования информации о результате экзамена.

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

Создание формы.

procedure TForm1.FormCreate(Sender: TObject);

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

OpenDialog1.InitialDir := GetCurrentDir;

SaveDialog1.InitialDir := GetCurrentDir;

StringGrid1.Cells'0,0' := Номер ;

StringGrid1.Cells'1,0' := ФИО ;

StringGrid1.Cells'2,0' := Предмет ;

StringGrid1.Cells'3,0' := Оценка ;

Создание файла.

procedure TForm1.CreatePustFileButtonClick(Sender: TObject);

Для открытия файла используется обработчик события OnClick соответствующей кнопки (CreatePustFileButton) на форме.

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

1. Задается имя диалогу создания файла:

SaveDialog1.Title := Создать пустой файл ;

2. Открывается файловый диалог для указания имени и пути к файлу:

if SaveDialog1.Execute then

begin

…………………………………..

end;

3. В переменную FileName переписывается путь и имя к файлу:

FileName := SaveDialog1.FileName;

4. Файловая переменная связывается с конкретным файлом на диске при помощи процедуры assign и файл открывается для записи:

AssignFile(f_t, FileName);

Rewrite(f);

5. Число записей устанавливается в ноль:

kol := 0;

6. Разблокируются кнопки для добавления/редактирования/удаления данных:

AddToFileButton.Enabled := true;

UpdateButton.Enabled := true;

DeleteButton.Enabled := true;

7. Блокируется кнопка для расчета среднего бала:

AveBal.Enabled := false;

8. Число строк в таблице устанавливается в 2

StringGrid1.RowCount := 2;

Процедура отображения данных

procedure TForm1.ShowAll();

Для отображения данных используется созданная процедура ShowAll.

В данной процедуре производятся следующие основные действия.

1. Устанавливается число строк в таблице

StringGrid1.RowCount := kol + 1;

2. Построчно выводятся данные про сдачу экзамена:

for i := 1 to kol do

begin

StringGrid1.Cells'0,i' := IntToStr(i);

StringGrid1.Cells'1,i' := mas'i'.FIO;

StringGrid1.Cells'2,i' := mas'i'.predmet;

StringGrid1.Cells'3,i' := IntToStr(mas'i'.ocenka);

end;

Процедура сохранения данных

procedure TForm1.SaveToFile();

Для сохранения данных используется созданная процедура SaveToFile.

В данной процедуре производятся следующие основные действия.

1. Файл очищается

Rewrite(f);

2. Массив записей поэлементно записывается в файл:

for i := 1 to kol do

Write(f, mas'i');

Открытие файла

procedure TForm1.OpenTipFileButtonClick(Sender: TObject);

Для открытия файла используется обработчик события OnClick соответствующей кнопки (OpenTipFileButton) на форме.

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

1. Число записей устанавливается в ноль:

kol := 0;

2. Открывается файловый диалог для выбора файла:

if OpenDialog1.Execute then

begin

…………………………………..

end;

3. В переменную FileName переписывается путь и имя к файлу:

FileName := OpenDialog1.FileName;

4. Файловая переменная связывается с конкретным файлом на диске при помощи процедуры assign и файл открывается для чтения:

AssignFile(f, FileName);

Reset(f_t);

5. После этого производится чтение информации из данного файла. Для этого используется конструкция:

while not eof(f) do

begin

………………………

end;

6. Увеличивается на единицу количество записей:

inc(kol);

7. Данные из типизированного файла читаются сразу в массив записей:

Read(f, mas'kol');

8. Вызывается процедура отображения данных:

ShowAll();

9. Разблокируются кнопки для добавления/редактирования/удаления данных:

AddToFileButton.Enabled := true;

UpdateButton.Enabled := true;

DeleteButton.Enabled := true;

AddToFileButton.Enabled := true;

10. Разблокируется кнопка для расчета среднего бала:

AveBal.Enabled := true;

Добавление новых данных

procedure TForm1.AddToFileButtonClick(Sender: TObject);

Для добавления чисел в типизированный файл используется обработчик события OnClick соответствующей кнопки (AddToFileButton) на форме.

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

1. Выполняется проверка на заполненость всех полей:

if (LE_FIO.Text = ) or (LE_Predmet.Text = ) or (LE_Ocenka.Text = ) then

begin

MessageDlg( Не введены все данные , mtError, 'mbOk', 0);

Exit;

end;

2. Считывается значение оценки:

temp := StrToInt(LE_Ocenka.Text);

3. Проверяется принадлежность оценки диапазону 2-5:

if (temp < 2) or (temp > 5) then

begin

MessageDlg( Неверная оценка , mtError, 'mbOk', 0);

Exit;

end;

4. Увеличивается число записей:

inc(kol);

5. Значения ФИО, названия предмета и оценки заносятся в массив:

mas'kol'.FIO := LE_FIO.Text;

mas'kol'.predmet := LE_Predmet.Text;

mas'kol'.ocenka := temp;

6. Вызывается процедура отображения данных:

ShowAll();

7. Вызывается процедура записи данных:

SaveToFile();

7. Выполняется запись в файл:

Write(f, mas'kol');

8. Очищаются поля ввода

LE_FIO.Clear;

LE_Predmet.Clear;

LE_Ocenka.Clear;

Расчет среднего бала

procedure TForm1.AveBalClick(Sender: TObject);

Для расчета среднего бала используется обработчик события OnClick соответствующей кнопки (AveBal) на форме.

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

1. Производится проверка на наличие данных:

if (kol = 0) then

begin

MessageDlg( Нет данных для вычисления , mtError, 'mbOk', 0);

Exit;

end;

2. Вычисляется сумма оценок:

sum := 0;

for i := 1 to kol do

sum := sum + mas'i'.ocenka;

3. Вычисляется средняя оценка:

sred := sum / kol;

4. Результат выводится в соответствующее поле:

LE_Sred.Text := FloatToStrF(sred, ffFixed, 6, 2);

Блок-схема данного обработчика выглядит следующим образом (рис. 3.1):

Рисунок 3.1 Блок-схема алгоритма вычисления среднего бала

3.2 Руководство пользователя

После запуска программы на экране отображается главная форма программы (рисунок 3.2).

Активными на форме сразу после запуска являются только три кнопки:

- кнопка «Выход»,

- кнопка «Создать новый файл»,

- кнопка «Открыть существующий файл».

1. Создание нового файла.

Для этого необходимо нажать кнопку «Создать новый файл». В результате будет открыт диалог создания файлов (рисунок 3.3), в котором нужно указать путь и имя файла.

В результате форма примет вид, показанный на рисунке 3.4 – будут разблокированы кнопки «Внести», «Редактировать» и «Удалить».

Рисунок 3.2 – Главная форма программы

Рисунок 3.3 – Диалог создания файлов

Рисунок 3.4 – Главная форма программы после создания файла

2. Открытие существующего файла.

Для этого необходимо нажать кнопку «Открыть существующий файл». В результате будет открыт диалог открытия файлов (рисунок 3.5), в котором нужно указать путь и имя файла.

Рисунок 3.5 – Диалог открытия файлов

В результате форма примет вид, показанный на рисунке 3.6 – будут разблокированы кнопки «Внести», «Редактировать» и «Удалить» и кнопка «Вычислить средний бал».

Рисунок 3.6 – Главная форма программы после создания файла

3. Внесение данных.

Для этого необходимо ввести значения ФИО, названия дисциплины и оценки в соответствующие поля ввода (рисунок 3.7) и нажать кнопку «Внести».

Если каких либо данных не хватает, то будет выдано соответствующее сообщение (рисунок 3.8).

Если вместо оценки ввести другой символ, то будет выдано соответствующее сообщение (рисунок 3.9):

Рисунок 3.7 – Главная форма программы (добавление новых данных)

Рисунок 3.8 – Сообщение о неполноте данных

Рисунок 3.9 – Сообщение о неправильно вводе оценки

Если попытаться ввести оценку меньшую чем 2 или большую чем 5, , то будет выдано соответствующее сообщение (рисунок 3.10):

Рисунок 3.10 – Сообщение о неправильно вводе оценки

Результат удачного добавления показан на рисунке 3.11.

Рисунок 3.11 – Главная форма программы (новые данные добавлены)

4. Расчет среднего бала.

Для этого предназначена кнопка «Вычислить средний бал». Результат выполнения этой операции показан на рисунке 3.12:

Рисунок 3.12 – Главная форма программы (расчет среднего бала)

Для редактирования данных необходимо нажать кнопку «Редактировать». В результате будет открыта соответствующая панель (рис. 3.13)

Рисунок 3.13 – Панель редактирования данных

В данной панели необходимо ввести номер редактируемой записи и нажать кнопку «Принять». В результате в соответствующих полях будут показаны данные редактируемой записи (рис. 3.14)

Рисунок 3.14 – Отображение данных редактируемой записи

После этого необходимо внести требуемые изменения и нажать кнопку «Изменить».

Для удаления данных необходимо нажать кнопку «Удалить». В результате будет открыта соответствующая панель (рис. 3.15)

Рисунок 3.15 – Панель удаления данных

В данной панели необходимо ввести номер удаляемой записи и нажать кнопку «Удалить». Будет запрошено подтверждение удаления (рис. 3.16).

Рисунок 3.16 – Запрос на подтверждение удаления

ЗАКЛЮЧЕНИЕ

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

Созданная программа имеет следующий функционал:

1. Ввод ФИО студентов, наименований экзаменационных предметов, оценки по всем предметам в файл.

2. Контроль вводимой информации

3. Подсчет среднего балла по всем предметам

4. Вывод ведомости

В процессе работы было проведено формирование технического задания, в рамках которого рассмотрено:

'- организационно-экономическую сущность задачи,

'- описание исходной (входной) информации,

'- описание выходной информации,

'- описание алгоритма решения задачи.

После этого во втором разделе был создан технический проект, в рамках которого проведена разработка форм представления входных и выходных данных.

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

СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ

1. Архангельский А. Я. Приемы программирования в Delphi. Версии 5-7. - М: ЗАО Издательство БИНОМ, 2003

2. Архангельский А. Я. Delphi 7. Справочное пособие,- М: ЗАО Издательство БИНОМ, 2003

3. Архангельский А. Я. Object Pascal в Delphi. - М: ЗАО Издательство БИНОМ, 2002

4. Культин Н. Б. Delphi 6 Программирование на Object Pascal - СПб : БХВ-Петербург 2001 - 528 с : ил

5. Сухарев М.В. Основы Delphi. Профессиональный подход. - СПб.: Наука и Техника, 2004. 600 c.

6. Тейксейра C, Пачеко К Borland Delphi 6. Руководство разработчика. : Пер. с англ. — М. : Издательский дом “Вильямс”, 2002. — 1120 с.

7. Фленов М. Е. Библия Delphi. - СПб.: БХВ-Петербург, 2004. - 880 с.:

ПРИЛОЖЕНИЕ А Код основного модуля программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Grids, ExtCtrls, ComCtrls, Spin;

type

Vedom = record

FIO : string'250';

predmet : string'250';

ocenka : integer;

end;

TForm1 = class(TForm)

CreatePustFileButton: TButton;

AddToFileButton: TButton;

OpenTipFileButton: TButton;

LE_FIO: TLabeledEdit;

LE_Predmet: TLabeledEdit;

CloseButton: TButton;

LE_Ocenka: TLabeledEdit;

OpenDialog1: TOpenDialog;

SaveDialog1: TSaveDialog;

StringGrid1: TStringGrid;

AveBal: TButton;

LE_Sred: TLabeledEdit;

Label1: TLabel;

GBDelete: TGroupBox;

BtnDel: TButton;

BTNCancelDel: TButton;

GBUpdate: TGroupBox;

ButtonNom: TButton;

LERedFIO: TLabeledEdit;

LERedPred: TLabeledEdit;

LERedOcenka: TLabeledEdit;

BTNCancelRed: TButton;

ButtonUpdate: TButton;

Label2: TLabel;

SENomDel: TSpinEdit;

Label3: TLabel;

SENomRed: TSpinEdit;

UpdateButton: TButton;

DeleteButton: TButton;

procedure FormCreate(Sender: TObject);

procedure CloseButtonClick(Sender: TObject);

procedure CreatePustFileButtonClick(Sender: TObject);

procedure OpenTipFileButtonClick(Sender: TObject);

procedure AddToFileButtonClick(Sender: TObject);

procedure AveBalClick(Sender: TObject);

procedure SaveToFile();

procedure ShowAll();

procedure BTNCancelDelClick(Sender: TObject);

procedure BTNCancelRedClick(Sender: TObject);

procedure BtnDelClick(Sender: TObject);

procedure DeleteButtonClick(Sender: TObject);

procedure UpdateButtonClick(Sender: TObject);

procedure ButtonNomClick(Sender: TObject);

procedure ButtonUpdateClick(Sender: TObject);

private

' Private declarations '

public

' Public declarations '

end;

var

Form1: TForm1;

mas : array'1..1000' of Vedom;

f : file of Vedom;

FileName : String;

kol : integer;

implementation

'$R *.dfm '

procedure TForm1.FormCreate(Sender: TObject);

begin

OpenDialog1.InitialDir := GetCurrentDir;

SaveDialog1.InitialDir := GetCurrentDir;

StringGrid1.Cells'0,0' := Номер ;

StringGrid1.Cells'1,0' := ФИО ;

StringGrid1.Cells'2,0' := Предмет ;

StringGrid1.Cells'3,0' := Оценка ;

end;

procedure TForm1.CloseButtonClick(Sender: TObject);

begin

Close;

end;

procedure TForm1.CreatePustFileButtonClick(Sender: TObject);

begin

SaveDialog1.Title := Создать пустой файл ;

if SaveDialog1.Execute then

begin

FileName := SaveDialog1.FileName;

AssignFile(f, FileName);

Rewrite(f);

kol := 0;

end;

AddToFileButton.Enabled := true;

UpdateButton.Enabled := true;

DeleteButton.Enabled := true;

AveBal.Enabled := false;

StringGrid1.RowCount := 2;

end;

procedure TForm1.OpenTipFileButtonClick(Sender: TObject);

begin

kol := 0;

if OpenDialog1.Execute then

begin

FileName := OpenDialog1.FileName;

AssignFile(f, FileName);

Reset(f);

end;

while not eof(f) do

begin

inc(kol);

Read(f, mas'kol');

end;

ShowAll();

AddToFileButton.Enabled := true;

UpdateButton.Enabled := true;

DeleteButton.Enabled := true;

AveBal.Enabled := true;

end;

procedure TForm1.AddToFileButtonClick(Sender: TObject);

var

temp : integer;

begin

if (LE_FIO.Text = ) or (LE_Predmet.Text = ) or (LE_Ocenka.Text = ) then

begin

MessageDlg( Не введены все данные , mtError, 'mbOk', 0);

Exit;

end;

try

temp := StrToInt(LE_Ocenka.Text);

if (temp < 2) or (temp > 5) then

begin

MessageDlg( Неверная оценка , mtError, 'mbOk', 0);

Exit;

end;

inc(kol);

mas'kol'.FIO := LE_FIO.Text;

mas'kol'.predmet := LE_Predmet.Text;

mas'kol'.ocenka := temp;

ShowAll();

SaveToFile();

LE_FIO.Clear;

LE_Predmet.Clear;

LE_Ocenka.Clear;

except

MessageDlg( Ошибка при внесении данных , mtError, 'mbOk', 0);

end;

end;

procedure TForm1.AveBalClick(Sender: TObject);

var

i : integer;

sum, sred : real;

begin

if (kol = 0) then

begin

MessageDlg( Нет данных для вычисления , mtError, 'mbOk', 0);

Exit;

end;

sum := 0;

for i := 1 to kol do

sum := sum + mas'i'.ocenka;

sred := sum / kol;

LE_Sred.Text := FloatToStrF(sred, ffFixed, 6, 2);

end;

procedure TForm1.SaveToFile();

var

i : integer;

begin

Rewrite(f);

for i := 1 to kol do

Write(f, mas'i');

end;

procedure TForm1.ShowAll();

var

i : integer;

begin

StringGrid1.RowCount := kol + 1;

for i := 1 to kol do

begin

StringGrid1.Cells'0,i' := IntToStr(i);

StringGrid1.Cells'1,i' := mas'i'.FIO;

StringGrid1.Cells'2,i' := mas'i'.predmet;

StringGrid1.Cells'3,i' := IntToStr(mas'i'.ocenka);

end;

end;

procedure TForm1.BTNCancelDelClick(Sender: TObject);

begin

GBDelete.Visible := false;

end;

procedure TForm1.BTNCancelRedClick(Sender: TObject);

begin

GBUpdate.Visible := false;

end;

procedure TForm1.BtnDelClick(Sender: TObject);

var

i, nom : integer;

begin

nom := SENomDel.Value;

if MessageDlg( Удалить данные под номером + IntToStr(nom) + ? , mtConfirmation, 'mbYes, mbNo', 0) = mrYes then

begin

for i := nom to kol do

begin

mas'i'.FIO := mas'i + 1'.FIO;

mas'i'.predmet := mas'i + 1'.predmet;

mas'i'.ocenka := mas'i + 1'.ocenka;

end;

kol := kol - 1;

ShowAll();

SaveToFile();

end;

GBDelete.Visible := false;

end;

procedure TForm1.DeleteButtonClick(Sender: TObject);

begin

if kol = 0 then

MessageDlg( Удалять нечего! , mtError, 'mbOK', 0);

SENomDel.MaxValue := kol;

SENomDel.Value := 1;

GBDelete.Visible := true;

end;

procedure TForm1.UpdateButtonClick(Sender: TObject);

begin

if kol = 0 then

MessageDlg( Редактировать нечего! , mtError, 'mbOK', 0);

SENomRed.MaxValue := kol;

SENomRed.Value := 1;

LERedFIO.Clear;

LERedPred.Clear;

LERedOcenka.Clear;

ButtonUpdate.Enabled := false;

GBUpdate.Visible := true;

end;

procedure TForm1.ButtonNomClick(Sender: TObject);

var

nom : integer;

begin

nom := SENomRed.Value;

LERedFIO.Text := mas'nom'.FIO;

LERedPred.Text := mas'nom'.predmet;

LERedOcenka.Text := IntToStr(mas'nom'.ocenka);

ButtonUpdate.Enabled := true;

end;

procedure TForm1.ButtonUpdateClick(Sender: TObject);

var

temp : integer;

nom : integer;

begin

nom := SENomRed.Value;

try

temp := StrToInt(LERedOcenka.Text);

if (temp < 2) or (temp > 5) then

begin

MessageDlg( Неверная оценка , mtError, 'mbOk', 0);

Exit;

end;

mas'nom'.FIO := LERedFIO.Text;

mas'nom'.predmet := LERedPred.Text;

mas'nom'.ocenka := temp;

ShowAll();

SaveToFile();

GBUpdate.Visible := false;

except

MessageDlg( Ошибка при внесении данных , mtError, 'mbOk', 0);

end;

end;

end.


Способ заказа и контакты