Delphi. Описание классов

Ответить
allazutin
Сообщения: 2
Зарегистрирован: 25 май 2008, 13:14

Приветствую всех. Нам в ВУЗе задали написать программу, со своим описанием классов, причем про Delphi речи никогда и не шло, собственно про классы имею смутно представление, поэтому решил обратиться сюда.
Суть задачи такова:
Описать класс "домашняя библиотека". Предусмотреть возможность работы с произвольным числом книг, поиска книги по какому-либо признаку (автор, название, год издания), добавление книг в библиотеку, удаления книг из нее, сортировки книг по разным полям.
Написать программу, демонстрирующую работу с данным классом.
MOTOCoder
Сообщения: 548
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

Вообще советую почитать соответствующую литературу, или, хотя бы, статьи в интернете. Там нет ничего сложного.
Ни что так не ограничивает фантазию программиста, как компилятор...
BHy4ok
Сообщения: 237
Зарегистрирован: 01 май 2007, 09:03
Откуда: г.Находка
Контактная информация:

БЕсплатно врядли кто возьмется писать ее с нуля.
< L3X. (ICQ: 8721378, Mail - l3x@list.ru)
allazutin
Сообщения: 2
Зарегистрирован: 25 май 2008, 13:14

Можете хотя бы дать ссылку на статьи в интернете
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
TANYA_BRABUS)
Сообщения: 2
Зарегистрирован: 21 окт 2009, 19:51

А у меня такой же вопрос..только программу я написала...и прокомпилировала...но работает совсем неправильно..уже 4 недели мучаюсь с ней..помогите пожалуйста!!!!!!!!!!!

вот сама программа:

[syntax="Delphi"]
program Biblioteka;

{$APPTYPE CONSOLE}

uses
SysUtils,

Myb in 'Myb.pas';

var N: TDom_Biblioteka ;
begin
N:= TDom_Biblioteka.Create;
N.Vvod;//вод книг в библ-ку
N. Poisk;//поик кники в биб-ке по автору
N. Ydalenie_Knigi;//удаление книги
N. Dobavlenie;//добавление в конец
N. Sortirovka;//сортировка по году издания
readln;
end.

//А вот модуль:

unit Myb;

interface

uses Classes, SysUtils;
const delta = 2;
type TBibl = record
Avtor : string;
Nazvanie : string;
God : integer; end;

Bibl = array of TBibl; //массив записей

TDom_Biblioteka = class

Private

b: Bibl; //переменная массива Bibl

Public
Constructor Create;
procedure Ydalenie_Knigi;
procedure Sortirovka;
procedure Poisk;
procedure Dobavlenie;
Procedure Vvod;
end;

Implementation

Constructor TDom_Biblioteka.Create ;
begin
inherited Create;
Setlength (B, delta); end;

Procedure TDom_Biblioteka.Vvod;//вводим авторов, названия,год издания
var //и выводим библиотеку на экран
i:integer;
begin
writeln(' Vvod novoi knigi'); readln;
Setlength(b,delta);
for i:=0 to delta-1 do begin
writeln ('Avtor:');
readln(b.Avtor);//вводим автора
writeln('Nazvanie:');
readln(b.Nazvanie);//вводим название
writeln('God:');
readln (b.God);//вводим год издания
end;
for i := 0 to delta-1 do begin //выводим полученную библиотеку
writeln('Avtor:' , b.Avtor);
writeln('Nazvanie:' , b.Nazvanie);
writeln('God:' , b.God);
end;
end;

procedure TDom_Biblioteka.Dobavlenie;
var
i,k:integer;
begin
writeln(' Dobavim knigy'); readln;
setlength(b,1);
i:= high(b);
writeln ('Avtor:');
readln(b.Avtor);//вводим автора
writeln('Nazvanie:');
readln(b.Nazvanie);//вводим название
writeln('God:');
readln (b.God);//вводим год издания
for k:=0 to high(b) do begin
writeln('Avtor:' , b[k].Avtor);
writeln('Nazvanie:' , b[k].Nazvanie);
writeln('God:' , b[k].God); readln end; end;




Procedure TDom_Biblioteka.Sortirovka;//сортируем по году издания

var
i,t,m, min:integer;
b: Bibl;
begin
for i := 0 to delta-1 do
begin
min:=b.God;
t:=i;
for m := (i+1) to high(bibl) do
if min > b[i].God then begin
min:=b[i].God ;
t:=m;
b[t].God:=b[i].God;
b[i].God:=min;
writeln('Avtor:' , b[i].Avtor);
writeln('Nazvanie:' , b[i].Nazvanie);
writeln('God:' , b[i].God); end
else writeln('Avtora ne obnaryjeno') end; end;


Procedure TDom_Biblioteka.Poisk; //поиск книги по автору
var
i:integer;
m:string;
b: Bibl;
begin
writeln(' Poisk');
writeln('Vvedite avtora'); readln;
readln(m);
while i<= high(b) do
begin
if m = b[i].Avtor then
begin
writeln('Avtor:' , b[i].Avtor);
writeln('Nazvanie:' , b[i].Nazvanie);
writeln('God:' , b[i].God); readln
end
else
if m<> b[i].Avtor then
writeln('Avtora ne obnarujeno'); readln
end;
end;

Procedure TDom_Biblioteka.Ydalenie_knigi;//удаляем книгу из массива
var
i, last:integer;
k:string;
b: Bibl;
begin
writeln('Vvedite nazvanie knigi, kotoryu xotite ydalit');
readln(k);
while i<= high(b) do
begin
if k<> (b[i].Nazvanie) then writeln ('Knigi ne obnarujeno')
else if k=b[i].Nazvanie then
begin
writeln('Ydalyaemaya kniga:');
writeln('Avtor:' , b[i].Avtor);
writeln('Nazvanie:' , b[i].Nazvanie);
writeln('God:' , b[i].God); readln;
end; end; end; end.
[/syntax]


//пожалуйста!!!!!!!!!!!!
atavin-ta
Сообщения: 585
Зарегистрирован: 30 янв 2009, 06:38

Не правильно, это как? Что получается вместо того, что тебе нужно? Фатальная ошибка? Если нет, давай демку. если да - пиши, в какой строчке.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
TANYA_BRABUS)
Сообщения: 2
Зарегистрирован: 21 окт 2009, 19:51

Описать класс "домашняя библиотека". Предусмотреть возможность работы с произвольным числом книг, поиска книги по какому-либо признаку (автор, название, год издания), добавление книг в библиотеку, удаления книг из нее, сортировки книг по разным полям.
Написать программу, демонстрирующую работу с данным классом.

Единственная процедура, которая работает- VVod. В остальных процедурах, они начинают работу, и не выводя результат, который требуется - перескакивает на следующую. Далее или вылетает или зацикливается.
***везде перед циклами while не обнулила счётчик. Но проб
лемы те же
Ответить