Технология структурного программирования в среде 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