Для старта программы нужно запустить файл project1.exe. Запуститься программа, после этого пользователь увидит окно представленное ниже.
Для навигации и управления проектом пользователя предоставлены многочисленные виджеты, такие как меню, кнопки управления, флажки и переключатели, а также многочисленные выпадающие окна.
Все органы управления имеют всплывающие подсказки.
Для поиска нужно нажать кнопку Поиск, а для удаления кнопку DEL, все операции программы дублированы пользовательским меню.
Для загрузки списков нужно перемещать переключатели в 3 разных положения, а для просмотра списка необходимо вызвать одноименный пункт меню, или нажать соответствующую кнопку.
Заключение
В ходе работы над проектом были закреплены навыки работы с технологией ООП, были изучены структуры и то как они представлены в памяти компьютера. В ходе работы над проектом были доработаны и закреплены навыки работы в среде визуальной разработки приложений Delphi.
Данный проект очень интересен тем, что он дает студенту возможность попробовать себя в разработке простейшей базы данных, знания, полученные во время работы над проектом пригодятся в дальнейшей трудовой деятельности, а также в предметах курса, изучающих принципы построения и работы с базами данных.
Данный курсовой проект сможет пригодиться для изучения возможностей ООП использования структур данных
Литература
1. Бакнелл Д.М. Фундаментальные алгоритмы и структуры данных в Delphi. - СПб: ООО «ДиаСофтЮП», 2003. - 506 с.
2. Вирт Н. Алгоритмы и структуры данных. - СПб: Невский диалект, 2001. – 352 с.
3. Гудрич М.Т. Структуры данных и алгоритмы в Java. / М.Т. Гудрич, Р. Тамассия. – Мн.: Новое знание, 2003. – 671 с.
4. Кормен Т.Х., Лейзерсон Ч.И., Ривест Р.Л., Штайн К. Алгоритмы: построение и анализ. – М.: Издательский дом «Вильямс», 2009. – 1296 с.
5. Круз Р.Л. Структуры данных и проектирование программ. – М.: БИНОМ. Лаборатория знаний, 2008. – 765 с.
6. Седжвик Р. Фундаментальные алгоритмы на С. Части 1-4: Анализ / Структуры данных / Сортировка / Поиск. - К.: Издательство «ДиаСофт», 2003. - 672 с.
Приложение
Текст главного модуля Unit1.pas
// ==============
// Created by Kamenev A.I.
// gr 417318
// Minsk 2010 MIDO BNTU
// ===================
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Grids, XPMan, UnitCl, Menus, Unit2;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Button1: TButton;
Button2: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
XPManifest1: TXPManifest;
Button7: TButton;
Bevel1: TBevel;
CheckBox1: TCheckBox;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
Bevel2: TBevel;
Button3: TButton;
Button8: TButton;
FindDialog1: TFindDialog;
procedure Button6Click (Sender: TObject);
procedure FormCreate (Sender: TObject);
procedure RadioButton1Click (Sender: TObject);
procedure RadioButton2Click (Sender: TObject);
procedure RadioButton3Click (Sender: TObject);
procedure CheckBox1Click (Sender: TObject);
procedure Button4Click (Sender: TObject);
procedure Button1Click (Sender: TObject);
procedure N2Click (Sender: TObject);
procedure N10Click (Sender: TObject);
procedure N8Click (Sender: TObject);
procedure Button5Click (Sender: TObject);
procedure Button2Click (Sender: TObject);
procedure N3Click (Sender: TObject);
procedure Button7Click (Sender: TObject);
procedure N4Click (Sender: TObject);
procedure FormActivate (Sender: TObject);
procedure Button3Click (Sender: TObject);
procedure Button8Click (Sender: TObject);
procedure N6Click (Sender: TObject);
procedure N7Click (Sender: TObject);
private
{Private declarations}
public
{Public declarations}
end;
var
Form1: TForm1;
implementation
uses Unit3, Unit4;
{$R *.dfm}
// ===================
procedure TForm1. Button6Click (Sender: TObject);
begin
// Остановка программы:
Halt;
end;
procedure TForm1. FormCreate (Sender: TObject);
begin
// Инициализация формы и чтение из файла в стринг грид – из класса
CheckBox1Click(Sender);
Kp. ReadXD(StringGrid1);
Kp. Free;
end;
// ===================
procedure TForm1. RadioButton1Click (Sender: TObject);
begin
// Дублир XD
FormCreate(Sender);
Button8Click(Sender);
end;
// ===================
procedure TForm1. RadioButton2Click (Sender: TObject);
begin
// Открытие WTK автоматом из файла
Kp. Clear(StringGrid1); // Очистка грида
// инициал формы WTK
Kp.WTKGr(StringGrid1);
Kp. RowC(StringGrid1);
Kp. ReadWTK(StringGrid1);
Kp. Free;
Button8Click(Sender);
end;
procedure TForm1. RadioButton3Click (Sender: TObject);
begin
// Открытиефайла BANK
Kp. Clear(StringGrid1); // Очисткагрида
// Инициалформы Bank
Kp.BANGr(StringGrid1);
Kp. RowC(StringGrid1);
Kp. ReadBAN(StringGrid1);
Kp. Free;
Button8Click(Sender);
end;
// ===================
procedure TForm1. CheckBox1Click (Sender: TObject);
begin
// запрет на редактир снять – поставить
If CheckBox1. Checked Then
StringGrid1. Options:=[goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goRowSizing, goColSizing]
else
StringGrid1. Options:=[goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goRowSizing, goColSizing, goEditing]
end;
// ===================
procedure TForm1. Button4Click (Sender: TObject);
begin
Form3. Top:=Trunc (Form1. Top + Form1. Height/2 – Form3. Height/2);
Form3. Left:=Trunc (Form1. Left +Form1. Width/2 – Form3. Width/2);
Form3. ShowModal;
end;
// ===================
procedure TForm1. Button1Click (Sender: TObject);
begin
// процедураочисткигридаповыборурадиокнопы
Kp. Clear(StringGrid1); // Вызов процедуры из класса
If RadioButton1. Checked Then //
begin //
Kp.XDGr(StringGrid1); // –
Kp. RowC(StringGrid1);
end
else if RadioButton2. Checked Then
begin
Kp.WTKGr(StringGrid1);
Kp. RowC(StringGrid1);
end
else if RadioButton3. Checked Then
begin
Kp.BANGr(StringGrid1);
Kp. RowC(StringGrid1);
end;
Kp. Free;
end;
// = ОПРОГРАММЕ
=====
procedure TForm1.N2Click (Sender: TObject);
begin
ShowMessage
('КУРСОВОЙ ПРОЕКТ'+#13+#13+'Разработал Каменев А.И. гр 417 318 / 10 вариант'
+#13+'МИДО БНТУ 2010 г.'+#13+#13+'Структуры и алгоритмы обработки данных.');
end;
// ===================
procedure TForm1.N10Click (Sender: TObject);
begin
// Менюдублвыход
Button6Click(Sender);
end;
// ===================
procedure TForm1.N8Click (Sender: TObject);
begin
// Сбросдублменю
Button1Click(Sender);
end;
// ===================
procedure TForm1. Button5Click (Sender: TObject);
begin
Form4. Top:=Trunc (Form1. Top + Form1. Height/2 – Form4. Height/2);
Form4. Left:=Trunc (Form1. Left +Form1. Width/2 – Form4. Width/2);
Form4. ShowModal;
end;
// ===================
procedure TForm1. Button2Click (Sender: TObject);
// Записьвфайл
begin
If RadioButton1. Checked Then
Kp. WriteXD(StringGrid1)
else if RadioButton2. Checked Then
Kp. WriteWTK(StringGrid1)
else if RadioButton3. Checked Then
Kp. WriteBAN(StringGrid1);
ShowMessage ('Данные записаны в файл!');
Kp. Free;
end;
// ===================
procedure TForm1.N3Click (Sender: TObject);
begin
// менюдублир
Button2Click(Sender);
end;
procedureTForm1. Button7Click (Sender: TObject);
begin
Form2. Top:=Trunc (Form1. Top + Form1. Height/2 – Form2. Height/2);
Form2. Left:=Trunc (Form1. Left +Form1. Width/2 – Form2. Width/2);
Form2. ShowModal;
// Элемент пользовательского интерфейса
// очистка cells'ов
// в StringGrid1
end;
// ===================
procedure TForm1.N4Click (Sender: TObject);
begin
// Меню – дублирование – удаление строки
Button7Click(Sender);
end;
// ===================
procedure TForm1. FormActivate (Sender: TObject);
begin
// Очистка головы списка №1 №2 №3
Kp.null;
end;
// ===================
procedure TForm1. Button3Click (Sender: TObject);
begin
// процедурапоказа
If RadioButton1. Checked Then
Kp.XDShow
else if RadioButton2. Checked Then
Kp.WTKShow
else if RadioButton3. Checked Then
Kp.BANKShow;
Kp. Free;
end;
// ===================
procedure TForm1. Button8Click (Sender: TObject);
begin
FormActivate(Sender);
// процедуравнесениясодержимого StrigGrid всписок
If RadioButton1. Checked Then
Kp.XD(StringGrid1)
else if RadioButton2. Checked Then
Kp.WTK(StringGrid1)
else if RadioButton3. Checked Then
Kp.BANK(StringGrid1);
Kp. Free;
end;
// ===================
procedure TForm1.N6Click (Sender: TObject);
begin
// Поиск-меню-дублирующее
Button4Click(Sender);
end;
// ===================
procedure TForm1.N7Click (Sender: TObject);
begin
// Сортировка-меню-дублирующее
Button5Click(Sender);
end;
// ===================
end.
ТекстмодуляклассаUnitCl.pas
// ************
// Created by Kamenev A.I. 417 318 10 var.
// Minsk MIDO BNTU.
// САОД– КУРСОВОЙ
// ************
unit UnitCl;
interface
uses
SysUtils, Forms, StdCtrls, Grids, Classes, Dialogs;
type
TKp = class (TObject)
Private
{Private data}
Public
procedure RowC (AStringGrid:TStringGrid);
procedure XDGr (AStringGrid:TStringGrid);
procedure WTKGr (AStringGrid:TStringGrid);
procedure BANGr (AStringGrid:TStringGrid);
procedure Clear (AStringGrid:TStringGrid);
procedure WriteXD (AStringGrid:TStringGrid);
procedure WriteWTK (AStringGrid:TStringGrid);
procedure WriteBAN (AStringGrid:TStringGrid);
procedure ReadXD (AStringGrid:TStringGrid);
procedure ReadWTK (AStringGrid:TStringGrid);
procedure ReadBAN (AStringGrid:TStringGrid);
procedure BANK (AStringGrid:TStringGrid);
procedure WTK (AStringGrid:TStringGrid);
procedure XD (AStringGrid:TStringGrid);
procedure XDShow;
procedure WTKShow;
procedure BANKShow;
procedure null;
procedure FindXD (AEdit1:TEdit; AStringGrid:TStringGrid);
procedure FindWTK (AEdit1:TEdit; AStringGrid:TStringGrid);
procedure FindBANK (AEdit1:TEdit; AStringGrid:TStringGrid);
procedure MoySort1 (AStringGrid:TStringGrid);
procedure MoySort2 (AStringGrid:TStringGrid);
procedure MoySort5 (AStringGrid:TStringGrid);
procedure MoySort7 (AStringGrid:TStringGrid);
end;
// ********** глобальная переменная
var
kp:TKp;
i, Row, CP: Integer;
SList: TStringList;
n: integer; // длина (кол-во элементов) списка
st: string; // строковое представление списка
Fil: string;
FirstStr: string;
// ********** разделописаний
implementation
type
TPSpisXD=^TSpisXD;
TSpisXD = record
numb:string[20]; // номер
datzak:string[20]; // дата заключения
datzav:string[20]; // дата завершения
temadog:string[40]; // тема
namorg:string[20]; // наименование организации
priznak:string[15]; // признак
stoimost:string[10]; // стоимость в тыс руб.
next: TPSpisXD; // следующий элемент списка
end;
type
TPSpisWTK=^TSpisWTK;
TSpisWTK=record
fam:string[20]; // фамилия
name:string[20]; // имя
otc:string[20]; // отчество
god:string[40]; // дата рождения
kod:string[20]; // код договора
prznak:string[15]; // признак
zarplat:string[20]; // зарплата
adres:string[20]; // адрес
banknum:string[20]; // номербанка
rasschet:string[40]; // Р/С
next: TPSpisWTK;
end;
type
TPSpisBAN=^TSpisBAN;
TSpisBAN=record
numotd:string[20]; // фамилия
gorod:string[20]; // имя
adress:string[20]; // отчество
naim:string[40]; // датарождения
kod:string[20]; // кодотделения
next: TPSpisBAN;
end;
var
head1: TPSpisXD; // начало (голова) списка XD
head2: TPSpisWTK; // голова списка WTK
head3: TPSpisBAN; // голова списка BAN
// ===================
procedure TKp.null;
// Обнуление начала списка
begin
head1:=NIL;
head2:=NIL;
head3:=NIL;
end;
// ===================
procedure TKp. MoySort1 (AStringGrid:TStringGrid);
var
node: TPSpisXD; // новый узел списка
curr: TPSpisXD; // текущий узел списка
pre: TPSpisXD; // предыдущий, относительно curr, узел
i:integer; // counter
begin
Kp.null;
i:=1;
//repeat