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

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

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

grup - Группа

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

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

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

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

destructor;

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

Свойства

Имя

Тип

Семантика

nom

integer

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

grup

string

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

predmet

string

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

data

string

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

ocenka

integer

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

famp

string

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


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

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

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

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

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

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


Тест 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.

Приложение 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;;

.

Источник: https://www.bibliofond.ru/detail.aspx?id=786630