Главная страница

Курсовая работа коммунальная компания. Комунальные услуги упр компании. Разработка объектной программы для задачи Учета оплаты коммунальных услуг в управляющей компании


Скачать 192.38 Kb.
НазваниеРазработка объектной программы для задачи Учета оплаты коммунальных услуг в управляющей компании
АнкорКурсовая работа коммунальная компания
Дата15.04.2022
Размер192.38 Kb.
Формат файлаdocx
Имя файлаКомунальные услуги упр компании.docx
ТипКурсовая
#476802
страница3 из 3
1   2   3

function FindDom(Ylica : string; number : integer) : TDom;

function GetCountDom() : integer;

function GetAllData() : string;

function GetAllPlata : integer;

procedure SaveTo(namef : string);

procedure LoadFrom(namef: string);
end;

implementation

uses Unit1;

constructor TYpravKomp.Create(newName:string); //Создание Управляющей компании

begin

name := newName;

countDom := 0;

end;
procedure TYpravKomp.LoadFrom(namef: string);

var i,flag : integer; f : text; str : string; str1 , str2 : array of string;

begin

flag := 0;

assign(f, namef);

reset(f);

while (not EOF(f)) do

begin

readln(f, str);

if (str = '{') then

flag := 1;

if (flag = 0) then

begin

str1 := str.Split('|');

AddDom(str1[0], strtoint(str1[1]));

str := '';

end

else

begin

if (str = '}') then

flag := 0;

if (str <> '{') and (flag = 1) then

begin

str2 := str.Split('|');

FindDom(str1[0],strtoint(str1[1])).AddKvartira(strtoint(str2[0]), strtoInt(str2[1]));

str := '';

end

else

str := '';

end;

end;

close(f);

GetAllData();

end;
procedure TYpravKomp.SaveTo(namef : string); //получить всю информацию

var

Temp : TAgent;

i : integer;

f : text;

begin

assign(f, namef);

rewrite(f);

Temp := Agent;

while (Temp <> nil) do

begin

writeln(f, Temp.GetDom().getYlica() + '|' + Temp.GetDom().GetNumber());

writeln(f, '{');

write(f, Temp.getDom().GetAllKvartira());

writeln(f, '}');

Temp := Temp.getNext();

end;

close(f);

end;
function TYpravKomp.getFirstAg(): TAgent; //получение первого агента

begin

result:= Agent;

end;

function TYpravKomp.getlastAg(): TAgent; //получение последнего агента

var

Temp : TAgent;

begin

Temp := Agent;

if (Temp <> nil) then

begin

while (Temp.getNext() <> Nil) do

Temp := Temp.getNext();

result:= Temp;

end

else

result:= nil;

end;
procedure TYpravKomp.AddDom(Ylica : string; number : integer); //Добавление дома

var

Temp: TAgent;

begin

Temp := Agent;

if (getLastAg() = nil) then

Agent := TAgent.Create(nil, TDom.Create(Ylica,number))

else

begin

Temp := getLastAg;

Temp.SetNext(TAgent.Create(nil, TDom.Create(Ylica, number)));

end;

end;
function TYpravKomp.DelDom() : boolean; //удаление дома

begin

result := false;

if (Agent <> nil) then

begin

Agent:= Agent.getNext();

result := true;

end;

end;
function TYpravKomp.FindDom(Ylica : string; number : integer) : TDom;//Найти дом по улице и номеру

var

Temp : TAgent;

begin

Temp := Agent;

result:= nil;

if (Temp <> nil) then

begin

while (Temp <> nil) and ((number <> strtoInt(Temp.getDom().getnumber()))

or (Ylica <> Temp.getDom().getYlica)) do

Temp := Temp.getNext();

if (Temp <> nil) then

result:= Temp.getDom();

end;

end;
function TYpravKomp.GetCountDom() : integer;//получение кол-ва домов

begin

result:= CountDom;

end;
function TYpravKomp.GetAllPlata : integer;//получение платы всей управ компанией

var

Temp : TAgent;

begin

Temp := Agent;

result := 0;

if (Temp = nil) then

result:= 0;

while (Temp <> nil) do

begin

result:= result + Temp.GetDom().GetAllKvPlata();

Temp := Temp.getNext();

end;

end;
function TYpravKomp.GetAllData() : string; //получить всю информацию

var

Temp : TAgent;

i : integer;

begin

Temp := Agent;

i := 1;

With Form1.DomG do

begin

RowCount := 2;

while (Temp <> nil) do

begin

Cells[0, i] := Temp.GetDom().getYlica();

Cells[1, i] := Temp.GetDom().GetNumber();

Cells[2, i] := inttostr(Temp.GetDom().GetAllKvPlata());

inc(i);

RowCount := RowCount + 1;

Temp := Temp.getNext();

end;

Cells[0,i] := 'Общая плата = ' + InttoStr(GetAllPlata);

end;

end;
end.
unit Agent;
{$mode objfpc}{$H+}
interface
uses

Classes, SysUtils, Dom;
type TAgent = class

private

NextAgent : TAgent;

Dom : TDom;

public

constructor Create(nextAg : TAgent; newDom : TDom);

function getNext() : TAgent;

function getDom() : TDom;

procedure setNext(nextAg : TAgent);

procedure setDom(newDom : TDom);

end;

implementation

constructor TAgent.Create(nextAg : TAgent; newDom : TDom);

begin

NextAgent := nextAg;

Dom := newDom;

end;
function TAgent.getNext() : TAgent; //получить следующего агента

begin

result := NextAgent;

end;
function TAgent.getDom() : TDom; //получить следующий сеанс

begin

result := Dom;

end;
procedure TAgent.setNext(nextAg : TAgent); //установить следующего агента

begin

NextAgent := nextAg;

end;
procedure TAgent.setDom(newDom : TDom); //установить сеанс у агента

begin

Dom := newDom;

end;
end.
unit Dom;
{$mode objfpc}{$H+}
interface

uses

Classes, SysUtils, crt, Kvartira;
type TDom = class
private

Ylica: string; //Улица и номер дома

number: integer;

Count: integer; //кол-во квартир

Arr: Array [0..2] of TKvartira; //набор квартир
public

constructor Create(newYlica : string; newnumber: integer);

function AddKvartira(newCountnumber : integer; newCountPlata : integer) : boolean;

function DeleteKvartira(NumberDelete : integer) : boolean;

function getnumber() : string;

function FindKv(numberfind : integer) : boolean;

function getYlica() : string;

procedure setnumber(newnumber : integer);

procedure setYlica(newYlica : string);

function getAllKvartira(): string;

function getAllKvPlata() : integer;

procedure KvToGrid();

end;

implementation

uses Unit1;

constructor TDom.Create(newYlica : string; newnumber: integer); //создание дома

begin

Count := 0;

Ylica := newYlica;

number := newNumber;

end;
function TDom.AddKvartira(newCountnumber : integer; newCountPlata : integer) : boolean;//добавить квартиру

var

i : integer;

j : integer;

begin

i:= 0;

j:= Count;

result := false;

while ((i < Count) and (newCountnumber > StrToInt(Arr[i].getNumber()))) do

i:=i + 1;

if (i = Count) then

begin

Arr[Count] := TKvartira.Create(newCountnumber, newCountPlata);

result:= true;

end

else

begin

while (j > i) do

begin

Arr[j] := Arr[j-1];

j:= j - 1;

end;

result := true;

Arr[j] := TKvartira.Create(newCountnumber, newCountPlata);

end;

if (result = true) then

Count:= Count + 1;

end;
function TDom.FindKv(numberfind : integer) : boolean;

var

i : integer;

j : integer;

begin

result := false;

i := 0;

while (i < Count) do

begin

if (NumberFind = strtoint(Arr[i].getNumber())) then

result := true;

i := i + 1;

end;

end;
function TDom.DeleteKvartira(NumberDelete : integer) : boolean; //Удалить квартиру c номером

var

i : integer;

j : integer;

begin

i:=0;

if (count = 0) then

result:= false

else

begin

while ((i < Count) and (NumberDelete <> strtoint(Arr[i].getNumber()))) do

i := i + 1;

if (NumberDelete = strtoint(Arr[i].getNumber())) then

if (i = Count) then

begin

Arr[i]:= nil;

result:= true;

count:= count-1;

end

else

begin

while (i < Count) do

begin

Arr[i] := Arr[i+1];

i:= i + 1;

end;

//writeln(result, ' ' , i, ' ', count);

result:= true;

Arr[i]:= nil;

count:= count-1;

end;

end;

end;
function TDom.getnumber() : string; //Получить номер дома

begin

result := IntTostr(number);

end;
function TDom.getYlica() : string; //Получить улицу дома

begin

result:= ylica;

end;
procedure TDom.setYlica(newYlica : string); //Поменять улицу дома

begin

ylica := newYlica;

end;
procedure TDom.setnumber(newnumber : integer);//Поменять номер дома

begin

number:= newnumber;

end;
function TDom.getAllKvartira(): string; //Получить информацию о квартирах

var

i: integer;

begin

i := 0;

if (Count = 0) then

else

begin

while (i < Count) do

begin

result:= result + Arr[i].getInfoKv() + chr(13) + chr(10);

i:= i + 1;

end;

end;

end;
procedure TDom.KvToGrid();//получить плату по всем квартирам дома

var

i: integer;

j : integer;

begin

i := 0;

j := 1;

if (Count <> 0) then

begin

with Form1.KvarGrid do

begin

RowCount := 2;

while (i < Count) do

begin

RowCount := RowCount + 1;

Cells[0,j] := Arr[i].getNumber();

Cells[1,j] := inttostr(Arr[i].getPlata());

inc(j);

i:= i + 1;

end;

end;

end;

end;
function TDom.getAllKvPlata() : integer;//получить плату по всем квартирам дома

var

i: integer;

begin

i := 0;

result:= 0;

if (Count = 0) then

result:= 0

else

begin

while (i < Count) do

begin

result:= result + Arr[i].getPlata();

i:= i + 1;

end;

end;

end;
end.
unit Kvartira;
{$mode objfpc}{$H+}
interface

uses

Classes, SysUtils, crt;
type TKvartira = class

private

number : integer; //номер квартиры

Plata : integer; //плата за услуги

public

constructor Create(thisnumber : integer; thisPlata : integer);

function getNumber() : string;

procedure setnumber(newNumber : integer);

procedure setPlata(newPlata : integer);

function getPlata() : integer;

function getInfoKv() : string;

end;
implementation
constructor TKvartira.Create(thisnumber : integer; thisPlata : integer);

begin

number := thisnumber;

Plata := thisPlata;

end;
function TKvartira.getNumber() : string;//получить номер квартиры

begin

result := IntToStr(number);

end;
procedure TKvartira.setnumber(newNumber : integer); //установить номер квартиры

begin

number := newNumber;

end;
procedure TKvartira.setPlata(newPlata : integer);//установить плату

begin

Plata := newPlata;

end;
function TKvartira.getPlata() : integer; //вывести плату

begin

result:= Plata;

end;
function TKvartira.GetInfoKv() : string;

begin

result := IntToStr(number) + '|' + IntToStr(Plata);

end;
end.
1   2   3


написать администратору сайта