Автор: Пользователь скрыл имя, 20 Ноября 2012 в 13:07, курсовая работа
Цель работы: получение навыков разработки объектных программ, включая создание набора собственных взаимосвязанных классов для объектной реализации специализированного контейнера. Контейнер предназначен для хранения и обработки, данных некоторой информационной задачи. Контейнер представляет собой двухуровневую структуру данных, в которой уровни реализуются разными способами – один статически на базе массива (непрерывная реализация), другой – динамически с использованием адресных связей (связная реализация).
Выданная задача «Сеть библиотек»
* информационные объекты: книги (свойства – Название, Количество экземпляров)
* книги объединяются в рамках объекта Библиотека (свойство – Номер)
*библиотеки объединяются в рамках объекта-контейнера Библиотечная Сеть
Постановка задачи 3
Описание основных понятий и механизмов ООП 4
Теоретическое описание используемых структур данных 10
Описание разработанных классов 10
Алгоритмы реализации основных операций 13
Описание демонстрационного модуля 16
Описание использованных стандартных компонентов 19
Описание структуры проекта 21
Листинги подпрограмм разработанной программы 22
Список использованной литературы 40
begin
Writeln(f, FSome[i].GetNum); // библиотеки
Element := FSome[i].GetFirst;
while Assigned(Element) do
begin
Writeln(f, Element.GetBook.GetName, '*', Element.GetBook.GetCopyi); // книги, * - разделитель
Element := Element.GetNext;
end;
Writeln(f);
end;
CloseFile(f);
end;
end.
Листинг файла Unit1.pas
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, MeineClasse, ExtCtrls, Menus, XPMan, Buttons;
type
TForm1 = class(TForm)
Label1: TLabel;
Label3: TLabel;
Panel1: TPanel;
ListLibr: TListBox;
EditNum: TEdit;
Panel2: TPanel;
ListBook: TListBox;
EditBook: TEdit;
EditCopy: TEdit;
Label2: TLabel;
SaveDialog1: TSaveDialog;
OpenDialog1: TOpenDialog;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
XPManifest1: TXPManifest;
Label4: TLabel;
Label5: TLabel;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure ListLibrClick(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
FSomeLibrary: TSomeLibrary;
procedure ShowLibrary;
procedure ShowLibraryBook(NBook: integer);
function BookToString(const Book: TBook): string;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function TForm1.BookToString(const Book: TBook): string;
begin
Result := 'Название - ' + Book.GetName + ', количество - ' + IntToStr(Book.GetCopyi);
end;
procedure TForm1.ShowLibraryBook(NBook: integer);
var
Shelf: TLibrary;
Entry: TElement;
begin
ListBook.Items.Clear;
Label5.Caption:= '';
Shelf := FSomeLibrary.LibraryNo(NBook);
if not Assigned(Shelf) then Exit;
Entry := Shelf.GetFirst;
while Assigned(Entry) do
begin
ListBook.Items.Add(
Entry := Entry.GetNext;
end;
if Shelf.GetFirst <> nil then
Label5.Caption:= BookToString(Shelf.GetFirst.
end;
procedure TForm1.ShowLibrary;
var
i: integer;
begin
ListLibr.ItemIndex := -1;
ListLibr.Items.Clear;
for i := 0 to FSomeLibrary.GetCount - 1 do
ListLibr.Items.Add(IntToStr(
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
FSomeLibrary := TSomeLibrary.Create(4);
ShowLibrary;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
FSomeLibrary.Free;
end;
procedure TForm1.ListLibrClick(Sender: TObject);
var
No: integer;
begin
if ListLibr.ItemIndex < 0 then No := 0
else No := StrToInt(ListLibr.Items[
ShowLibraryBook(No);
end;
procedure TForm1.N2Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
FSomeLibrary.LoadFile(
ShowLibrary;
ListLibrClick(ListLibr);
end;
end;
procedure TForm1.N3Click(Sender: TObject);
begin
if SaveDialog1.Execute then
FSomeLibrary.SaveFile(
end;
procedure TForm1.N8Click(Sender: TObject);
var
i: integer;
begin
if EditNum.Text = '' then
begin
MessageDlg('Поле ввода пустое', mtError, [mbOk], 0);
EditNum.SetFocus;
EditNum.Clear;
Exit;
end;
try
i := FSomeLibrary.AddSL(StrToInt(
except
MessageDlg('Поле ввода должно содержать числовое значение', mtError, [mbOk], 0);
EditNum.SetFocus;
EditNum.Clear;
Exit;
end;
if StrToInt(EditNum.Text) <= 0 then
begin
MessageDlg('Номер библиотеки не может быть отрицательным значением или ровняться 0', mtError, [mbOk], 0);
EditNum.SetFocus;
EditNum.Clear;
Exit;
end;
ShowLibrary;
ListLibr.ItemIndex := i;
ListLibrClick(ListLibr);
EditNum.Clear;
end;
procedure TForm1.N9Click(Sender: TObject);
var
i,No: integer;
begin
No:=0;
if EditNum.Text = '' then
begin
MessageDlg('Не введен номер библиотеки', mtError, [mbOk], 0);
EditNum.SetFocus;
Exit;
end;
for i:=0 to ListLibr.Items.Count-1 do
if ListLibr.Items.Strings[i]=
No:=StrToInt(ListLibr.Items.
if FSomeLibrary.DeleteSL(No) <> 0 then
begin
ShowLibrary;
ListLibrClick(ListLibr);
end else
MessageDlg('Удаляемая библиотека не найдена!', mtError, [mbOk], 0);
EditNum.Text := '';
end;
procedure TForm1.N10Click(Sender: TObject);
var
B: TBook;
No,Tip: integer;
Shelf: TLibrary;
begin
if ListLibr.ItemIndex < 0 then Exit;
No := StrToInt(ListLibr.Items[
if (EditBook.Text = '') or (EditCopy.Text = '') then
begin
MessageDlg('Не введены данные о книге', mtError, [mbOk], 0);
EditBook.SetFocus;
Exit;
end;
try
Tip := StrToInt(EditCopy.Text);
except
MessageDlg('Поле ввода должно содержать числовое значение', mtError, [mbOk], 0);
ShowLibraryBook(No);
EditCopy.Clear;
Exit;
end;
if StrToInt(EditCopy.Text) <= 0 then
begin
MessageDlg('Количество экземпляров не может быть отрицательным значением или ровняться 0', mtError, [mbOk], 0);
ShowLibraryBook(No);
EditCopy.Clear;
Exit;
end;
No := StrToInt(ListLibr.Items[
Shelf := FSomeLibrary.LibraryNo(no);
if not Assigned(Shelf) then Exit;
b := TBook.Create(EditBook.Text, StrToInt(EditCopy.Text));
Shelf.AddBook(B);
ShowLibraryBook(No);
EditBook.Clear;
EditCopy.Clear;
end;
procedure TForm1.N11Click(Sender: TObject);
var
No: integer;
Shelf: TLibrary;
begin
if ListLibr.ItemIndex < 0 then No := 0
else No := StrToInt(ListLibr.Items[
Shelf := FSomeLibrary.LibraryNo(No);
if not Assigned(Shelf) then Exit;
if Shelf.DelFirst <> nil then ListLibrClick(ListLibr) else
MessageDlg('Стек пуст!', mtError, [mbOk], 0);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
N8.Click;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
N10.Click;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
N9.Click;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
N11.Click;
end;
end.
Список использованной литературы