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

Анализ исходных данных. Определение структуры модуля для работы файлом. Разработка объектно-ориентированного приложения, использующего массив объектов, в среде Delphi. Модульная структура программного комплекса. Процедура сортировки методом вставки.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 20.09.2014
Размер файла 2,2 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

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

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.2.3. Разработка алгоритмов методов класса-варианта

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Реферат

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

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

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

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

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

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

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

· Введение

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

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

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

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

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

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

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

· Приложения

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

Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

var A, B: TMyArray; B:Livss;

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

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

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

type TDinArray = array of Integer; var A : TDinArray;

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

Begin

SetLength(A, 100);

end;

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

Классы

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

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

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

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

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

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

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

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

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

type

className = class(BaseClass)

private // Определения данных/методов локальные для этого модуля

protected // Определения данных/методов, локальных для этого класса + потомки

public // Определения данных/методов пригодных для использования всеми объектами этого класса

published // Внешне общественные определения end;

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

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

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

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

Типы файлов:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Имя

Тип

Семантика

inom

integer

Поле, содержащее Номер зачетной книжки

igrup

string

Поле, содержащее Группа

ipredmet

string

Поле, содержащее Дисциплина

idata

string

Поле, содержащее Дата получения оценки

iocenka

integer

Поле, содержащее Оценка

ifamp

string

Поле, содержащее Фамилия Преподавателя

Методы

Имя

Тип

Семантика

nom

integer

Доступ к полю inom для записи и чтения его значения

grup

string

Доступ к полю igrup для записи и чтения его значения

predmet

string

Доступ к полю ipredmet для записи и чтения его значения

data

string

Доступ к полю idata для записи и чтения его значения

ocenka

integer

Доступ к полю iocenka для записи и чтения его значения

famp

string

Доступ к полю ifamp для записи и чтения его значения

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

Процедура Create;

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

nom - Номер зачетной книжки

grup - Группа

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

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

ocenka - Оценка

famp - Фамилия преподавателя

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

destructor;

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

Свойства

Имя

Тип

Семантика

nom

integer

Чтение и запись значения поля inom

grup

string

Чтение и запись значения поля igrup

predmet

string

Чтение и запись значения поля ipredmet

data

string

Чтение и запись значения поля idata

ocenka

integer

Чтение и запись значения поля iocenka

famp

string

Чтение и запись значения поля ifamp

2.4.2 Класс-массив

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

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

Имя

Тип

Семантика

arr

Array of TStudents

Массив объектов типа TStudent

n

integer

Счетчик массива

Методы

· 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);

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

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

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 Тестирование класса массива

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

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

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

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

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

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

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

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

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

3.3 Тестирование

Тест 1

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

Тест 2

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

Тест 3

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

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

Тест 4

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

Тест 5

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

Тест 8

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

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

Вывод

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

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

Приложения

Приложение 1

Модуль Unit1.

unit Unit1;

interface

uses

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

Dialogs, StdCtrls, Grids, bukva, massiv, unit_def, unit_operation, zapisi;

type

TForm1 = class(TForm)

GroupBox1: TGroupBox;

GroupBox2: TGroupBox;

StringGrid1: TStringGrid;

GroupBox3: TGroupBox;

Label1: TLabel;

Edit1: TEdit;

Button1: TButton;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Edit5: TEdit;

Edit6: TEdit;

Edit7: TEdit;

Button2: TButton;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

GroupBox4: TGroupBox;

Button3: TButton;

Button9: TButton;

Memo1: TMemo;

Button10: TButton;

Memo2: TMemo;

Edit8: TEdit;

Edit9: TEdit;

Label8: TLabel;

Label9: TLabel;

GroupBox5: TGroupBox;

Button5: TButton;

Button6: TButton;

GroupBox6: TGroupBox;

Button7: TButton;

Button11: TButton;

Button12: TButton;

OpenDialog1: TOpenDialog;

Button13: TButton;

Button8: TButton;

Button14: TButton;

Button15: TButton;

GroupBox7: TGroupBox;

Button16: TButton;

StringGrid2: TStringGrid;

Label10: TLabel;

procedure FormCreate(Sender: TObject);

procedure Button8Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure Button6Click(Sender: TObject);

procedure Button14Click(Sender: TObject);

procedure Button13Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure Button7Click(Sender: TObject);

procedure Button11Click(Sender: TObject);

procedure Button12Click(Sender: TObject);

procedure clear_stringgrid;

procedure Button9Click(Sender: TObject);

procedure Button15Click(Sender: TObject);

procedure Button10Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button16Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

y,c,i,j: integer;

G: tgruppa;

RCST:rstudent;

S: tstudent;

St: string;

txt: textfile;

a:arr;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

with StringGrid1 do

begin

StringGrid1.Cells[0,0]:='№';

StringGrid1.cells[1,0]:='Номер зачетной книжки';

StringGrid1.cells[2,0]:='Шифр группы';

StringGrid1.cells[3,0]:='Название дисциплины';

StringGrid1.cells[4,0]:='Дата получения оценки';

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

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

end;

with StringGrid2 do

begin

StringGrid2.cells[0,0]:='Номер';

StringGrid2.cells[1,0]:='Шифр группы';

StringGrid2.cells[2,0]:='Дисциплина';

StringGrid2.cells[3,0]:='Преподаватель';

end;

end;

procedure TForm1.Button8Click(Sender: TObject);

begin

memo1.clear;

memo2.clear;

end;

procedure TForm1.Button1Click(Sender: TObject);

var j:integer;

begin

if (strtoint(edit1.Text))<=0 then

ShowMessage('Введено неверное количество')

else

begin

StringGrid1.RowCount:=strtoint(edit1.Text)+1;

for j:=1 to (strtoint(edit1.Text)) do

StringGrid1.Cells[0,j]:=inttostr(j);

ShowMessage('Вводите данные студента');

Groupbox1.Enabled:=true;

Groupbox5.Enabled:=true;

Groupbox2.Enabled:=true;

Groupbox6.Enabled:=true;

Groupbox4.Enabled:=true;

Stringgrid1.Enabled:=true;

end;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

if (j<strtoint(edit1.Text)) then

begin

inc(j);

if (StringGrid1.Cells[1,j]='') then

begin

StringGrid1.Cells[1,j]:=edit2.text;

StringGrid1.Cells[2,j]:=edit3.text;

StringGrid1.Cells[3,j]:=Tur(edit4.text);

StringGrid1.Cells[4,j]:=edit5.text;

StringGrid1.Cells[5,j]:=edit6.text;

StringGrid1.Cells[6,j]:=Tur(edit7.text);

end;

end

else

Begin

showmessage('Таблица заполнена');

end;

end;

procedure TForm1.Button6Click(Sender: TObject);

begin

Edit2.Clear;

Edit3.Clear;

Edit4.Clear;

Edit5.Clear;

Edit6.Clear;

Edit7.Clear;

end;

procedure TForm1.Button14Click(Sender: TObject);

begin

close;

end;

procedure TForm1.Button13Click(Sender: TObject);

var i,j:integer;

begin

with StringGRid1 do

for i:=1 to RowCount-1 do

for j:=0 to ColCount-1 do

Cells[j, i]:='';

end;

procedure TForm1.Button5Click(Sender: TObject);

var

i,j:integer;

begin

setlength(a,strtoint(edit1.text));

g:=tgruppa.create(strtoint(edit1.text));

begin

with stringgrid1 do

begin

for i:=1 to RowCount-1 do

begin

a[i-1]:=tstudent.create;

a[i-1].nom:=strtoint(cells[1,i]);

a[i-1].grup:=cells[2,i];

a[i-1].predmet:=cells[3,i];

a[i-1].data:=cells[4,i];

a[i-1].ocenka:=strtoint(cells[5,i]);

a[i-1].famp:=cells[6,i];

end;

end;

g.setarr(a);

clear_stringgrid;

g.getarr(a);

with stringgrid1 do

begin

for j:=1 to RowCount-1 do

begin

StringGrid1.Cells[1,j]:=inttostr(a[j-1].nom);

StringGrid1.Cells[2,j]:=a[j-1].grup;

StringGrid1.Cells[3,j]:=a[j-1].predmet;

StringGrid1.Cells[4,j]:=a[j-1].data;

StringGrid1.Cells[5,j]:=inttostr(a[j-1].ocenka);

StringGrid1.Cells[6,j]:=a[j-1].famp;

end;

end;

end;

end;

procedure TForm1.Button7Click(Sender: TObject);

var fi1:textfile; buf:string; i,j: integer;

begin

with OpenDialog1 do

begin

if opendialog1.Execute then

st:=opendialog1.FileName;

assignfile(fi1,st);

reset(fi1);

j:=1;

while not eof(fi1) do

begin

for i:=0 to 7 do begin

readln(fi1,buf);

StringGrid1.Cells[i,j]:=buf;

end;

inc(j);

end;

closefile(fi1)

end;

end;

procedure TForm1.Button11Click(Sender: TObject);

var student: rstudent; el:tstudent; i,j,k: integer; flt: file of rstudent;

begin

j:=1;

k:=0;

i:=0;

assignfile(flt,name);

rewrite(flt);

try

while k<=(length(a)-1) do begin

student.inom := el.nom;

student.igrup := el.grup;

student.ipredmet := el.predmet;

student.idata := el.data;

student.iocenka := el.ocenka;

student.ifamp := el.famp;

student.inom := strtoint(stringgrid1.cells[1,j]);

student.igrup := stringgrid1.cells[2,j];

student.ipredmet := stringgrid1.cells[3,j];

student.idata := stringgrid1.cells[4,j];

student.iocenka := strtoint(stringgrid1.cells[5,j]);

student.ifamp := stringgrid1.cells[6,j];

write(flt,student);

inc(i);

inc(j);

inc(k);

end;

except

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

end;

closefile(flt);

end;

procedure TForm1.Button12Click(Sender: TObject);

var

filegr:file of rstudent;

buf:string;

sstudent: tstudent;

student: rstudent;

t,d: integer;

begin

with OpenDialog1 do

begin

t:=1;

clear_stringgrid;

g:=tgruppa.create(0);

if opendialog1.Execute then

st:=opendialog1.FileName;

if fileExists(st) then begin

assignfile(filegr,st);

reset(filegr);

d:=0;

while not EOF(filegr) do begin

setlength(a,1+d);

read(filegr,student);

a[d]:=tstudent.Create;

a[d].nom := student.inom;

a[d].grup := student.igrup;

a[d].predmet := student.ipredmet;

a[d].data := student.idata;

a[d].ocenka := student.iocenka;

a[d].famp := student.ifamp;

stringgrid1.cells[1,1+d] := inttostr(a[d].nom);

stringgrid1.cells[2,1+d] := a[d].grup;

stringgrid1.cells[3,1+d] := a[d].predmet;

stringgrid1.cells[4,1+d] := a[d].data;

stringgrid1.cells[5,1+d] := inttostr(a[d].ocenka);

stringgrid1.cells[6,1+d] := a[d].famp;

inc(d);

end;

g.setarr(a);

end

else begin

assignfile(filegr,st);

rewrite(filegr);

end;

end;

closefile(filegr);

c:=d;

end;

procedure Tform1.clear_stringgrid;

var i,j: integer;

begin

with StringGrid1 do

for i:=1 to RowCount-1 do

for j:=0 to ColCount-1 do

Cells[j, i]:='';

end;

procedure TForm1.Button9Click(Sender: TObject);

var

b:arr;

s1,s2:string;

i:integer;

begin

memo1.clear;

s1:=edit8.text;

s2:=edit9.text;

g.statement(b,s1,s2);

for i:=0 to high(b) do

begin

s1:=inttostr(b[i].nom)+' '+b[i].grup+' '+b[i].predmet+' '+b[i].data+' '+inttostr(b[i].ocenka)+' '+b[i].famp;

memo1.Lines.Add(s1);

end;

g.setarr(b);

end;

procedure TForm1.Button15Click(Sender: TObject);

begin

edit8.Clear;

edit9.Clear;

end;

procedure TForm1.Button10Click(Sender: TObject);

var

sr:real;

s1,s2:string;

begin

s1:=edit8.text;

s2:=edit9.text;

sr:=g.sredn(a,s1,s2);

memo2.Lines.Add(floattostr(sr));

end;

procedure TForm1.Button3Click(Sender: TObject);

var

i,j:integer;

begin

clear_stringgrid;

g.setarr(a);

g.sort_vstavka(g);

g.getarr(a);

i:=0;

for j:=1 to (length(a)) do begin

stringgrid1.cells[1,j] := inttostr(a[i].nom);

stringgrid1.cells[2,j] := a[i].grup;

stringgrid1.cells[3,j] := a[i].predmet;

stringgrid1.cells[4,j] := a[i].data;

stringgrid1.cells[5,j] := inttostr(a[i].ocenka);

stringgrid1.cells[6,j] := a[i].famp;

inc(i);

end;

end;

procedure TForm1.Button16Click(Sender: TObject);

var

h:arr;

i,j:integer;

s1:string;

flag:boolean;

begin

g.setarr(a);

g.dvoechniki(h,g);

g.getarr(a);

i:=0;

for j:=1 to (length(h)) do

begin

stringgrid2.cells[0,j] := inttostr(h[i].nom);

stringgrid2.cells[1,j] := h[i].grup;

stringgrid2.cells[2,j] := h[i].predmet;

stringgrid2.cells[3,j] := h[i].famp;

inc(i);

end;

end;

end.

Приложение 2

Модуль Unit_def.

unit Unit_Def;

interface

uses sysutils, zapisi;

type

TStudent=class

private

inom : integer;

igrup : string;

ipredmet : string;

idata : string;

iocenka : integer;

ifamp : string;

public

constructor Create;

destructor Destroy(var msg:string);

property nom : integer read inom write inom;

property grup : string read igrup write igrup;

property predmet : string read ipredmet write ipredmet;

property data : string read idata write idata;

property ocenka : integer read iocenka write iocenka;

property famp : string read ifamp write ifamp;

end;

implementation

constructor Tstudent.Create;

begin

inom:=0;

igrup:='';

ipredmet:='';

idata:='';

iocenka:=0;

ifamp:='';

end;

destructor Tstudent.Destroy(var msg:string);

begin

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

end;

end.

Приложение 2

Модуль Unit_operation.

unit Unit_Operation;

interface

uses SysUtils, unit_def, massiv;

type

Tgruppa=class(tstudent)

private

gruppa:arr;

public

constructor create(n:integer);

procedure add_stud(s: tstudent);

procedure sort_vstavka(var g:tgruppa);

procedure getarr(var a:arr);

procedure setarr(a:arr);

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

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

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

end;

implementation

procedure Tgruppa.getarr(var a:arr);

begin

a:=gruppa;

end;

procedure tgruppa.setarr(a:arr);

var i:integer;

begin

setlength(gruppa,length(a));

for i:=0 to (length(gruppa)-1) do

begin

gruppa[i]:=tstudent.Create;

gruppa[i]:=a[i];

end;

end;

procedure tgruppa.sort_vstavka(var g:tgruppa);

var i,j,k:integer;

flag:boolean;

buf:tstudent;

max:string[50];

begin

for i:=0 to (length(gruppa)-2) do

begin

begin

flag:=false;

for j:=i+1 to ((length(gruppa))-1) do

if g.gruppa[i].predmet>g.gruppa[j].predmet then

begin

max:=g.gruppa[j].predmet;

k:=j;

flag:=true;

end;

if flag=true then

begin

buf:=g.gruppa[i];

g.gruppa[i]:=g.gruppa[k];

g.gruppa[k]:=buf;

end;

end;

end;

end;

function tgruppa.sredn(s: arr; s1,s2:string):real;

var

i,u,m,q:integer;

sr:real;

begin

u:=0;

m:=0;

for i:=0 to high(s) do

if ((s[i].grup)=s1) and ((s[i].predmet)=s2) then

begin

q:=s[i].ocenka;

u:=u+q;

m:=m+1;

end;

sr:=u/m;

result:=sr;

end;

constructor Tgruppa.create(n:integer);

var i:integer;

begin

setlength(gruppa,n);

for i:=0 to (n-1) do

gruppa[i]:=tstudent.Create;

end;

procedure Tgruppa.add_stud(s: tstudent);

begin

setlength(gruppa,length(gruppa)+1);

gruppa[length(gruppa)-1]:=s;

end;

procedure Tgruppa.statement(var s : arr; s1,s2:string);

var

i:integer;

begin

for i:=0 to high(gruppa) do

begin

if ((gruppa[i].grup)=s1) and ((gruppa[i].predmet)=s2) then

begin

setlength(s,length(s)+1);

s[length(s)-1]:=gruppa[i];

end;

end;

end;

procedure Tgruppa.dvoechniki(var s:arr ; var g:tgruppa);

var i:integer;

begin

for i:=0 to (high(gruppa)) do

begin

if (gruppa[i].ocenka=2) and (gruppa[i].nom=gruppa[i].nom) then

begin

setlength(s,length(s)+1);

s[length(s)-1]:=gruppa[i];

end;

end;

end;

end.

Приложение 4

Модуль massiv.

unit massiv;

interface

uses sysutils, unit_def, zapisi;

type

arr=array of tstudent;

rarr=array of rstudent;

implementation

end.

Приложение 5

Модуль zapisi

unit zapisi;

interface

uses sysutils;

type

rstudent=record

inom : integer;

igrup : string[255];

ipredmet : string[255];

idata : string[255];

iocenka : integer;

ifamp : string[255];

end;

implementation

end.

Приложение 3

Модуль bukva

unit bukva;

interface

uses SysUtils;

function Tur(const s:string):string;

implementation

function Tur(const s:string):string;

var

s1,s2:string;

begin

s1:=s;

s1:=ansiuppercase(s1);

s2:=copy(s1,2,length(s1)-1);

s2:=ansilowercase(s2);

insert(s2,s1,2);

s1:=copy(s1,1,length(s));

result:=s1;

end;

end.

Размещено на Allbest.ur


Подобные документы

  • Delphi - среда быстрой разработки, в которой в качестве языка программирования используется типизированный объектно-ориентированный язык Delphi. Варианты программного пакета. Особенности работы, вид экрана после запуска. Описание структуры программы.

    курсовая работа [1,3 M], добавлен 25.11.2014

  • Проектирование программного модуля в среде программирования Borland Delphi 7.0. Схемы алгоритмов решения задач по темам "Символьные переменные и строки", "Массивы", "Работа с файлами", "Создание анимации". Реализация программного модуля, код программы.

    отчет по практике [961,6 K], добавлен 21.04.2012

  • Описания объектов, свойств, методов, формы и основных модулей текста программы в среде Delphi. Создание Windows-приложения на алгоритмическом языке Object Pascal в среде визуального программирования. Анализ результатов тестирования программного продукта.

    курсовая работа [2,4 M], добавлен 27.08.2012

  • Предмет объектно-ориентированного программирования и особенности его применения в средах Паскаль, Ада, С++ и Delphi. Интегрированная среда разработки Delphi: общее описание и назначение основных команд меню. Процедуры и функции программы Delphi.

    курсовая работа [40,8 K], добавлен 15.07.2009

  • Ознакомление с историей создания и особенностями объектно-ориентированного языка программирования Delphi. Разработка приложения, фиксирующего количество повторений какого-либо слова в тексте, введённом в поле MEMO. Описание интерфейса программы.

    курсовая работа [880,1 K], добавлен 21.04.2015

  • Разработка программы по оформлению заказов на билеты Оренбургского государственного областного драматического театра им. Горького. Использование объектно-ориентированного программирования и реализация проекта в среде визуального программирования Delphi 7.

    курсовая работа [6,3 M], добавлен 12.11.2014

  • Теоретические основы применения технологии ADO в среде Delphi. Основные понятия и определения теории баз данных. Компоненты Delphi для создания приложений, оперирующих с базами данных. Общий вид и основные особенности работы приложения "Аптека".

    курсовая работа [1,4 M], добавлен 09.08.2012

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

    реферат [21,0 K], добавлен 13.01.2015

  • Разработка информационной системы административного управления. Выбор языка и среды программирования. Структура взаимодействия информации. Требования к программно-аппаратному окружению. Создание программы в Delphi и связывание ее с базой данных.

    курсовая работа [1010,9 K], добавлен 08.10.2015

  • Характеристика системы программирования. Главные составные части Delphi. Интерфейс программного приложения. Результаты работы программы. Руководство системного программиста и оператора. Язык программирования Delphi, среда компилятора Borland 7.0.

    курсовая работа [1,6 M], добавлен 29.05.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.