Технология структурного программирования в среде Delphi

 

Задание на курсовую работу


1.Наименование и основание для выполнения курсового проекта.

1.1.Наименование курсовой работы.

1.2.Постановка задачи

Разработать класс (класс варианта), определенный вариантом. Разработать второй класс-массив, элементами которого являются объекты класса-варианта. Разработать приложение, демонстрирующее применение класса-массива.

Класс-вариант:

Успеваемость студента (Сведения об успеваемости одного студента по одной дисциплине: Номер зачетной книжки, Шифр группы, Название дисциплины, Дата получения оценки, Оценка, Фамилия преподавателя При вводе данных в строковые поля предусмотреть преобразование их к формату: первая буква большая, остальные маленькие)

Операции класса-варианта:

·Заполнение объекта класса

·Вывод объекта класса

·Изменение значения любого члена данных класса

·Доступ к значению любого члена данных класса

Класс-массив: Успеваемость группы

Операции класса-массив:

·Создать массив из N элементов. Количество элементов вводит пользователь.

·Заполнить массив

·Вывести массив

·Сортировать массив методом Центральной Вставки по Названию дисциплины.

·Сформировать ведомость успеваемости группы по определенной дисциплине (Шифр группы и Название дисциплины вводятся).

·Найти средний балл группы по Дисциплине.

·Вывести студентов, у которых есть двойки.

1.3.Исходные данные для разработки.

Система программирования Delphi7.

1.4.Выходные данные

Проект приложения в электронном виде.

1.5.Основание для выполнения КР (курсовой работы)-учебный план по дисциплине Программирование на ЯВУ

2.Цели и задачи KP.

2.1.Целью курсовой работы является получение практических навыков самостоятельной разработки приложений.

Частными целями KP являются:

·обучение элементам технологии создания программного продукта

·использование знаний по технологии структурного программирования с использованием современных средств: модуль и объект

·обучение качественному оформлению документации на программное обеспечение

2.2.Задачи решаемые в КP.

2.2.1.Анализ исходных данных, постановки задачи, исследование предложенной вариантом задачи.

2.2.2.Определение структуры класса-варианта.

.2.3.Разработка алгоритмов методов класса-варианта

.2.4.Разработка текстового файла, содержащего тесты для тестирования класса-варианта.

.2.5.Тестирование класса-варианта.

.2.6.Определение структуры класса-массива.

.2.7.Разработка алгоритмов методов класса-массива

.2.8.Разработка текстового файла, содержащего тесты для тестирования класса-массива.

.2.9.Тестирование класса-массива.

.2.10.Разработать приложение, демонстрирующее использование класса-массива.

3.Требования к разработке

3.1.Определения классов должны быть представлены модулями Unit.

3.2.Приложение, демонстрирующее использование класса-массива должно управляться с помощью интерфейса, представленного диалоговыми окнами (формами).

.3.Тестовые данные должны быть подготовлены в текстовых файлах. Для ускорения доступа к тестовым данным необходимо переписать их в типизированный файл, соответствующей структуры. Результаты тестирования должны быть представлены в элементах диалоговых форм. Предусмотреть использование аппарата исключительных ситуаций (try) при обработке файлов.

.4.Приложение должно позволить пользователю в интерактивном режиме выбрать устройство вывода результатов тестирования: на монитор или на принтер.

4.Требования к документации.

Документация должна быть оформлена в форме pасчетно-пояснительной (РПЗ) записки согласно требований к РПЗ


Реферат


1.1.Общее число страниц, количество таблиц, рисунков, количество разделов

·Общее число страниц:

·Количество таблиц:

·Количество рисунков:

·Количество разделов:

·Количество приложений

1.2.Краткий обзор содержания основных разделов расчетно-пояснительной записки

·Введение

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

·Теоретическая часть

Кратко рассмотрены основные структуры, применяемые в курсовой работе.

·Проектная часть

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

·Экспериментальная часть

Постановка функциональных задач и выбор метода ее решения. Тестирование программы в исключительных ситуациях. Разработка руководства к программе

·Приложения

Приведены коды всех модулей программы. Скриншот интерфейса.


Введение


Цель данной курсовой работы - получение навыков разработки приложений, демонстрирующих реализацию поставленной задачи в среде Delphi, а также разработка класса (класс вариант), определённый вариантом, и класса - массива, элементами которого являются объекты класса - варианта.

Реализация программного комплекса - на языке Object Pascal в среде Delphi 7.

В ходе разработки были спроектированы модули, реализующие подпрограммы, необходимые для работы с объектами класса-массива.

Данная курсовая работа преследует несколько частных целей:

·Демонстрация полученных знаний по технологии структурного программирования с помощью использования современных средств: модуль и объект;

·Демонстрация умения работы с классами и объектами.

Курсовая работа демонстрирует создание классов, работу с ними на примере класса-варианта «Житель» и класса-массива «Жители Городов».


.Теоретическая часть


1.1Массив данных


Массив - это структура данных, доступ к элементам которой осуществляется по номеру (или индексу). Все элементы массива имеют одинаковый тип.

Описание массива имеет вид

имя_типа_массива = array [диапазон] of тип_элемента;


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

Livss = array of Livers;Type TMyArray = array [1 .. 100] of Integer;


Теперь можно описать переменные типа TMyArray и Livss :

A, B: TMyArray; B:Livss;


Вместо присвоения типа можно явно описать переменные как массивы:

A, B : array [1..100] of Integer;


Кроме вышеописанных, так называемых статических массивов, у которых количество элементов неизменно, в Delphi можно использовать динамическиемассивы, количество элементов в которых допускается изменять в зависимости от требований программы. Это позволяет экономить ресурсы компьютера, хотя работа с такими массивами происходит гораздо медленнее. Описываются динамические массивы аналогично статическим, но без указания диапазона индексов

TDinArray = array of Integer; var A : TDinArray;


После создания в динамическом массиве нет ни одного элемента. Необходимый размер задаётся в программе специальной процедурой SetLength. Массив из ста элементов:

(A, 100);;


1.2Принципы ООП


Классы

В языке Object Pascal классы - это специальные типы данных, используемые для описания объектов. Соответственно объект, имеющий тип какого-либо класса, является экземпляром этого класса или переменной этого типа.

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

Основные понятия

Классы были изобретены программистами для упрощения разработки сложных программ и улучшения их качества. В основе классов лежат 3 фундаментальных принципа: Инкапсуляция, Наследование, Полиморфизм.

Объявление класса

Ключевое слово Class - это центральная часть Объектно-ориентированного кода.

Это определение содержит так называемые 'члены' - данные и методы (подпрограммы). Когда объект класса создан, он становится автономным элементом - вы можете обратиться к данным и методам объекта независимо от любого другого объекта. Оно похоже на запись Delphi, но с активными компонентами - методами.

Эти элементы определены в определении типов класса. Элементы метода осуществлены в разделе implementation модуля.

Объявление класса имеет следующее типичное описание:

= class(BaseClass)// Определения данных/методов локальные для этого модуля// Определения данных/методов, локальных для этого класса + потомки// Определения данных/методов пригодных для использования всеми объектами этого класса// Внешне общественные определения end;


.3Структура данных - файл


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

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

При работе с файлами выполняются операции ввода - вывода. Файлы на внешних устройствах часто называют физическими файлами. Их имена определяются операционной системой. В программах имена файлов задаются с помощью строк.

Типы файлов:

·Текстовые файлы;

·Типизированные файлы;

·Не типизированные файлы;

Переменную файлового типа описывают одним из трех способов:

·File of <тип> - типизированный файл (указан тип компоненты);

·Textfile - текстовый файл;

·File - не типизированный файл.

Текстовый файл

Текстовый файл - это структура данных, размещенная на внешнем носителе, элементом которой является символ. Текстовый файл может содержать символы управления: конец строки(#10), перевод каретки(#13), конец файла(#26). Последовательность символов, заканчивающаяся символом конец строки, называют строкой текстового файла. Файл организован последовательно, то есть новый элемент добавляется всегда в конец файла.

Типизированный файл

Типизированный файл - это файл, в котором записаны идентичные структуры. Типизированный файл можно создать только программным путем. Он состоит из записей фиксированной длины. Содержимое файла - это машинное представление данных. Типизированные файлы так же называют двоичными т.к. они содержат информацию в двоичном коде. С каждым типизированным файлом связана переменная - указатель. Указатель определяет смещение от начала файла в количестве прочитанных или записанных записей. При открытии файла значение указателя равно нулю, т.е. не выполнено ни одной операции ввода/вывода. Если только одна запись записана или прочитана, то значение указателя равно единице.

Не типизированный файл

Не типизированные файлы - это последовательность компонент произвольного типа.


2.Проектная часть


2.1Постановка задачи


Задачей данного проекта является написание программы, демонстрирующей использование классов и работу с типизированными файлами. Требуется разработать: класс - вариант (Успеваемость студента); класс-массив (Успеваемость группы), элементами которого являются объекты класса-варианта. А так же разработать приложение, демонстрирующее применение класса - массива.


.2Выбор метода решения


Для решения задачи была использована визуальная среда программирования Delphi 7, что позволило создать удобный пользовательский интерфейс. Помимо этого был использован метод ООП. Объектно-ориентированный подход был выбран в связи с тем, что ознакомление с задачей показало, что оба класса, предполагая возможность их дальнейшего применения, должны быть инкапсулированы и самодостаточны. А также, применение этого метода программирования способствует тому, что код программ приобретает более структурированный вид, что в свою очередь делает процесс выполнения поставленной задачи более удобным и простым. В соответствии с выданным заданием, были созданы классы TStudent и Tgruppa, а также реализовано визуальное приложение, обеспечивающее работу с объектами.


.3Модульная структура программного комплекса


Программный модуль состоит из 6-ти модулей:

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

·Unit_def - модуль, содержащий описание базового класса TStudent. Реализует возможность ввода, вывода, доступа к полям данных, используя свойства, а также содержащий описание переменных, используемых в программе.

·Unit_operation - модуль, содержащий описание базового класса Tgruppa. Реализует возможность ввода, вывода, доступа к полям данных, используя свойства, а также методы добавления нового студента, сортировки по названию дисциплины , вывод успеваемости группы по одной дисциплине, вывод студентов, у которых есть двойка.

·massiv - модуль, содержащий объявление массивов класса и записи студентов.

·bukva - модуль, содержащий функцию форматирования введённых данных по типу «Первая буква заглавная, остальные маленькие»


2.4Описание применяемых структур данных


2.4.1Класс - вариант

Tstudent- класс-вариант


Поля Таблица 2.4.1.1

ИмяТипСемантикаinomintegerПоле, содержащее Номер зачетной книжкиigrupstringПоле, содержащее ГруппаipredmetstringПоле, содержащее ДисциплинаidatastringПоле, содержащее Дата получения оценкиiocenkaintegerПоле, содержащее ОценкаifampstringПоле, содержащее Фамилия ПреподавателяМетоды

ИмяТипСемантикаnomintegerДоступ к полю inom для записи и чтения его значенияgrupstringДоступ к полю igrup для записи и чтения его значенияpredmetstringДоступ к полю ipredmet для записи и чтения его значенияdatastringДоступ к полю idata для записи и чтения его значенияocenkaintegerДоступ к полю iocenka для записи и чтения его значенияfampstringДоступ к полю ifamp для записи и чтения его значения

·Create- процедура создания класса

Процедура Create;

Исходные данные: - Номер зачетной книжки

grup - Группа

predmet - Дисциплина

data - Дата получения оценки

ocenka - Оценка- Фамилия преподавателя

·destructor - процедура уничтожения класса

destructor;

Нет исходных данных


Свойства

ИмяТипСемантикаnomintegerЧтение и запись значения поля inomgrupstringЧтение и запись значения поля igruppredmetstringЧтение и запись значения поля ipredmetdatastringЧтение и запись значения поля idataocenkaintegerЧтение и запись значения поля iocenkafampstringЧтение и запись значения поля ifamp

.4.2Класс-массив

Tgruppa - класс-массив

Поля Таблица 2.4.2.1

ИмяТипСемантикаarrArray of TStudentsМассив объектов типа TStudentnintegerСчетчик массива

Методы

·constructor Create (n:integer); - процедура создания класса-массива

Процедура constructor Create (n:integer);

Исходные данные

p-количество элементов в массиве;

·Процедура Add_stud (s: tstudent);- увеличивает длину массива на 1 и создает в конце массива элемент TStudent присваивая его полям значения inom, igrup, ipredmet, idata, iocenka, ifamp .

Add_stud (s: tstudent);

Исходные данные:

s - класс студентов

·Процедура Getarr (var a: arr); - получение массива студентов

Procedure Getarr(var a: arr);

Исходные параметры:

a -массив студентов;

·Процедура Setarr (var a: arr); - создание массива студентов

Procedure Getarr(var a: arr);

Исходные параметры:

a -массив студентов

·Процедура sort_vstavka(var g:tgruppa)- сортирует массив по названию дисциплины методом вставки.

Не имеет исходных параметров;

·Процедура statement(var s : arr; s1,s2:string); - формирование успеваемости группы по одной дисциплине

Procedure statement(var s : arr; s1,s2:string);

Исходные данные:

s - массив студентов

s1 - шифр группы

s2 - дисциплина

·Процедура dvoechniki(var s:arr ; var g:tgruppa);- установка значения Х равным l.

Procedure dvoechniki(var s: arr; var g:tgruppa);

Исходные параметры - массив студентов.

G - класс группы

·Функция sredn (s: arr; s1,s2:string):real; - возвращает cредний балл группы по одной дисциплине

Function sredn(s: arr; s1,s2:string):real;

Исходные данные:

s - массив студентов

s1 - шифр группы


2.4.2.1Процедура сортировки методом вставки.


2.4.3 Определение структуры модуля для работы с файлом

В модуле для работы с типизированным файлом(Form1.pas) определен один пользовательский тип - rstudent - типа запись и имеющие поля для хранения информации данных о жителе.


3.Экспериментальная часть


3.1Тестирование класса массива


Разработать программу тестирующая класс-массив .

Программа обеспечивает взаимодействие с пользователем Средствами диалогового интерфейса.



.2 Описание интерфейса программы


Интерфейс состоит из 5 панелей. Панель «Заполнение массива из файла» содержит кнопку, отвечающую за создание массива студентов. Содержит кнопку «Заполнить массив»,выводит сообщение если неправильно введен символ или поле осталось пусты

Панель «Ввод данных студента» содержит форму для ввода данных.

После нажатия кнопки «Добавить», в Стринггрид будут выведены фамилии или выведется окно с сообщением.

На панели «Операции с ведомостью» расположены кнопки, сортирующие массив студентов по названию дисциплины

Панель «Использование файла» загрузит типизированный файл в таблицу. Кнопка «Открыть типизированный файл» выведет типизированный файл в таблицу.

Кнопка «Вывести студентов-двоечников» выведет студентов, имеющих двойки. Кнопка «Х» предложит закрыть программу. Кнопка «Сформировать ведомость» выведет в мемо успеваемость группы по одной дисциплине, кнопка «Средний балл» выведет средний балл группы по дисциплине.


.3Тестирование


Тест 1

Ввод данных в таблицу, для начала вводится количество студентов



Тест 2

Заполнение массива



Тест 3

Сортировка записей массива

Результат Отсортировано



Тест 4

Вывод успеваемости группы по одной дисциплине и средний балл



Тест 5

Вывод студентов-двоечников


Тест 8

Загрузка файла в таблицу

Результат Загрузка файла и вывод в таблицу



Вывод


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

модуль файл массив delphi

Приложения


Приложение 1


Модуль Unit1.

unit Unit1;


, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Grids, bukva, massiv, unit_def, unit_operation, zapisi;

= class(TForm): TGroupBox;: TGroupBox;: TStringGrid;: TGroupBox;: TLabel;: TEdit;: TButton;: TEdit;: TEdit;: TEdit;: TEdit;: TEdit;: TEdit;: TButton;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TGroupBox;: TButton;: TButton;: TMemo;: TButton;: TMemo;: TEdit;: TEdit;: TLabel;: TLabel;: TGroupBox;: TButton;: TButton;: TGroupBox;: TButton;: TButton;: TButton;: TOpenDialog;: TButton;: TButton;: TButton;: TButton;: TGroupBox;: TButton;: TStringGrid;: TLabel;FormCreate(Sender: TObject);Button8Click(Sender: TObject);Button2Click(Sender: TObject);Button1Click(Sender: TObject);Button6Click(Sender: TObject);Button14Click(Sender: TObject);Button13Click(Sender: TObject);Button5Click(Sender: TObject);Button7Click(Sender: TObject);Button11Click(Sender: TObject);Button12Click(Sender: TObject);clear_stringgrid;Button9Click(Sender: TObject);Button15Click(Sender: TObject);Button10Click(Sender: TObject);Button3Click(Sender: TObject);Button16Click(Sender: TObject);

{ Private declarations }

{ Public declarations };

: TForm1;,c,i,j: integer;: tgruppa;:rstudent;: tstudent;: string;: textfile;:arr;


{$R *.dfm}

TForm1.FormCreate(Sender: TObject);StringGrid1 do.Cells[0,0]:='№';.cells[1,0]:='Номер зачетной книжки';.cells[2,0]:='Шифр группы';.cells[3,0]:='Название дисциплины';1.cells[4,0]:='Дата получения оценки';

StringGrid1.cells[5,0]:='Оценка';

StringGrid1.cells[6,0]:='Фамилия преподавателя';

end;StringGrid2 do.cells[0,0]:='Номер';.cells[1,0]:='Шифр группы';.cells[2,0]:='Дисциплина';.cells[3,0]:='Преподаватель';;;

TForm1.Button8Click(Sender: TObject);.clear;.clear;;

TForm1.Button1Click(Sender: TObject);j:integer;(strtoint(edit1.Text))<=0 then('Введено неверное количество')

else

begin

StringGrid1.RowCount:=strtoint(edit1.Text)+1;j:=1 to (strtoint(edit1.Text)) do.Cells[0,j]:=inttostr(j);('Вводите данные студента');.Enabled:=true;.Enabled:=true;.Enabled:=true;.Enabled:=true;.Enabled:=true;.Enabled:=true;;;

TForm1.Button2Click(Sender: TObject);(j<strtoint(edit1.Text)) then(j);(StringGrid1.Cells[1,j]='') then.Cells[1,j]:=edit2.text;.Cells[2,j]:=edit3.text;.Cells[3,j]:=Tur(edit4.text);.Cells[4,j]:=edit5.text;.Cells[5,j]:=edit6.text;.Cells[6,j]:=Tur(edit7.text);;('Таблица заполнена');;;

TForm1.Button6Click(Sender: TObject);.Clear;.Clear;.Clear;.Clear;.Clear;.Clear;;

TForm1.Button14Click(Sender: TObject);;;TForm1.Button13Click(Sender: TObject);i,j:integer;StringGRid1 doi:=1 to RowCount-1 doj:=0 to ColCount-1 do[j, i]:='';;

TForm1.Button5Click(Sender: TObject);,j:integer;(a,strtoint(edit1.text));:=tgruppa.create(strtoint(edit1.text));stringgrid1 doi:=1 to RowCount-1 do[i-1]:=tstudent.create;[i-1].nom:=strtoint(cells[1,i]);[i-1].grup:=cells[2,i];[i-1].predmet:=cells[3,i];[i-1].data:=cells[4,i];[i-1].ocenka:=strtoint(cells[5,i]);[i-1].famp:=cells[6,i];;;.setarr(a);_stringgrid;.getarr(a);stringgrid1 doj:=1 to RowCount-1 do.Cells[1,j]:=inttostr(a[j-1].nom);.Cells[2,j]:=a[j-1].grup;.Cells[3,j]:=a[j-1].predmet;.Cells[4,j]:=a[j-1].data;.Cells[5,j]:=inttostr(a[j-1].ocenka);.Cells[6,j]:=a[j-1].famp;;;;;

TForm1.Button7Click(Sender: TObject);fi1:textfile; buf:string; i,j: integer;OpenDialog1 doopendialog1.Execute then:=opendialog1.FileName;(fi1,st);(fi1);:=1;not eof(fi1) doi:=0 to 7 do begin(fi1,buf);.Cells[i,j]:=buf;;(j);;(fi1);;

TForm1.Button11Click(Sender: TObject);student: rstudent; el:tstudent; i,j,k: integer; flt: file of rstudent;:=1;:=0;:=0;(flt,name);(flt);k<=(length(a)-1) do begin.inom := el.nom;.igrup := el.grup;.ipredmet := el.predmet;.idata := el.data;.iocenka := el.ocenka;.ifamp := el.famp;.inom := strtoint(stringgrid1.cells[1,j]);.igrup := stringgrid1.cells[2,j];.ipredmet := stringgrid1.cells[3,j];.idata := stringgrid1.cells[4,j];.iocenka := strtoint(stringgrid1.cells[5,j]);.ifamp := stringgrid1.cells[6,j];(flt,student);(i);(j);(k);;


ShowMessage('Не задана длина массива');

end;(flt);;

TForm1.Button12Click(Sender: TObject);:file of rstudent;:string;: tstudent;: rstudent;,d: integer;OpenDialog1 do:=1;_stringgrid;:=tgruppa.create(0);opendialog1.Execute then:=opendialog1.FileName;fileExists(st) then begin(filegr,st);(filegr);:=0;not EOF(filegr) do begin(a,1+d);(filegr,student);[d]:=tstudent.Create;[d].nom := student.inom;[d].grup := student.igrup;[d].predmet := student.ipredmet;[d].data := student.idata;[d].ocenka := student.iocenka;[d].famp := student.ifamp;.cells[1,1+d] := inttostr(a[d].nom);.cells[2,1+d] := a[d].grup;.cells[3,1+d] := a[d].predmet;.cells[4,1+d] := a[d].data;.cells[5,1+d] := inttostr(a[d].ocenka);.cells[6,1+d] := a[d].famp;(d);;.setarr(a);begin(filegr,st);(filegr);;;(filegr);:=d;;Tform1.clear_stringgrid;i,j: integer;StringGrid1 doi:=1 to RowCount-1 doj:=0 to ColCount-1 do[j, i]:='';;

TForm1.Button9Click(Sender: TObject);:arr;,s2:string;:integer;.clear;:=edit8.text;:=edit9.text;.statement(b,s1,s2);i:=0 to high(b) do:=inttostr(b[i].nom)+' '+b[i].grup+' '+b[i].predmet+' '+b[i].data+' '+inttostr(b[i].ocenka)+' '+b[i].famp;.Lines.Add(s1);;.setarr(b);;

TForm1.Button15Click(Sender: TObject);.Clear;.Clear;;

TForm1.Button10Click(Sender: TObject);:real;,s2:string;:=edit8.text;:=edit9.text;:=g.sredn(a,s1,s2);.Lines.Add(floattostr(sr));;

TForm1.Button3Click(Sender: TObject);,j:integer;_stringgrid;.setarr(a);.sort_vstavka(g);.getarr(a);:=0;j:=1 to (length(a)) do begin.cells[1,j] := inttostr(a[i].nom);.cells[2,j] := a[i].grup;.cells[3,j] := a[i].predmet;.cells[4,j] := a[i].data;.cells[5,j] := inttostr(a[i].ocenka);.cells[6,j] := a[i].famp;(i);;

;

TForm1.Button16Click(Sender: TObject);:arr;,j:integer;:string;:boolean;.setarr(a);.dvoechniki(h,g);.getarr(a);:=0;j:=1 to (length(h)) do.cells[0,j] := inttostr(h[i].nom);.cells[1,j] := h[i].grup;.cells[2,j] := h[i].predmet;.cells[3,j] := h[i].famp;(i);;;

.

Приложение 2

Модуль Unit_def.

unit Unit_Def;sysutils, zapisi;=class : integer; : string;: string; : string; : integer; : string;Create;Destroy(var msg:string);nom : integer read inom write inom;grup : string read igrup write igrup;predmet : string read ipredmet write ipredmet;data : string read idata write idata;ocenka : integer read iocenka write iocenka;famp : string read ifamp write ifamp;

;

Tstudent.Create;:=0;:='';:='';:='';:=0;:='';;

Tstudent.Destroy(var msg:string);

msg:='Объект был удалён!';

end;.


Приложение 2


Модуль Unit_operation.

unit Unit_Operation;

SysUtils, unit_def, massiv;=class(tstudent):arr;create(n:integer);add_stud(s: tstudent);sort_vstavka(var g:tgruppa);getarr(var a:arr);setarr(a:arr);statement(var s : arr; s1,s2:string);sredn(s: arr; s1,s2:string):real;dvoechniki(var s:arr ; var g:tgruppa);;

Tgruppa.getarr(var a:arr);:=gruppa;;

tgruppa.setarr(a:arr);i:integer;(gruppa,length(a));i:=0 to (length(gruppa)-1) do[i]:=tstudent.Create;[i]:=a[i];;;

tgruppa.sort_vstavka(var g:tgruppa);i,j,k:integer;:boolean;:tstudent;:string[50];i:=0 to (length(gruppa)-2) do:=false;j:=i+1 to ((length(gruppa))-1) dog.gruppa[i].predmet>g.gruppa[j].predmet then:=g.gruppa[j].predmet;:=j;:=true;;flag=true then:=g.gruppa[i];.gruppa[i]:=g.gruppa[k];.gruppa[k]:=buf;;;;;

tgruppa.sredn(s: arr; s1,s2:string):real;,u,m,q:integer;:real;:=0;:=0;i:=0 to high(s) do((s[i].grup)=s1) and ((s[i].predmet)=s2) then:=s[i].ocenka;:=u+q;:=m+1;;:=u/m;:=sr;;

Tgruppa.create(n:integer);i:integer;(gruppa,n);i:=0 to (n-1) do[i]:=tstudent.Create;;

Tgruppa.add_stud(s: tstudent);(gruppa,length(gruppa)+1);[length(gruppa)-1]:=s;;

Tgruppa.statement(var s : arr; s1,s2:string);:integer;i:=0 to high(gruppa) do((gruppa[i].grup)=s1) and ((gruppa[i].predmet)=s2) then(s,length(s)+1);[length(s)-1]:=gruppa[i];;;;

Tgruppa.dvoechniki(var s:arr ; var g:tgruppa);i:integer;i:=0 to (high(gruppa)) do(gruppa[i].ocenka=2) and (gruppa[i].nom=gruppa[i].nom) then(s,length(s)+1);[length(s)-1]:=gruppa[i];;;;

.

Приложение 4

Модуль massiv.

unit massiv;sysutils, unit_def, zapisi;=array of tstudent;=array of rstudent;.

Приложение 5

Модуль zapisizapisi;

sysutils;=record : integer; : string[255];: string[255]; : string[255]; : integer; : string[255];;.


Приложение 3


Модуль bukvabukva;


SysUtils;Tur(const s:string):string;Tur(const s:string):string;,s2:string;:=s;:=ansiuppercase(s1);:=copy(s1,2,length(s1)-1);:=ansilowercase(s2);(s2,s1,2);:=copy(s1,1,length(s));:=s1;;

.


Задание на курсовую работу 1.Наименование и основание для выполнения курсового проекта. 1.1.Наименование курсовой работы. 1.2.Постановка задачи

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ