Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otchyot_praktika_1.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
750.49 Кб
Скачать

Галахова Наталья Романовна ИУ6-21

Практикум по программированию Вариант 4E

Тема: Turbo Delphi. Создание программной системы

В сведениях о компьютерах представлены следующие характеристики: тип микропроцессора, объем памяти, объем винчестера, цена. Программа должна в интерактивном режиме воспринимать каждый из перечисленных запросов и давать на него ответ.

1. Определить характеристики компьютеров, цена которых не превышает данную.

2. Определить типы микропроцессоров и цены всех компьютеров с памятью не менее заданного объема.

3. Определить цены всех компьютеров с данным типом микропроцессора, обладающих одновременно памятью и винчестерами не менее заданных объемов.

4. Построить график зависимости стоимости компьютера от объема памяти.

Иерархии используемых классов

Диаграммы состояний пользовательского интерфейса

Форма frmMain

Форма frmEdit

Формы frmDiagram и frmPlot (аналогичны)

Объектная декомпозиция

Текст программы

unit THardwareDef;

interface

type

THardware = class

private

h_CPU: string;

h_memory, h_hdd: integer;

h_price: real;

procedure SetCPU(const nCPU: string);

procedure SetMemory(const nmem: integer);

procedure SetHDD(const nhdd: integer);

procedure SetPrice(const nprice: real);

function GetCPU: string;

function GetMemory: integer;

function GetHDD: integer;

function GetPrice: real;

public

constructor Create; overload;

constructor Create (nCPU:string;nmem,nhdd:integer;nprice:real); overload;

constructor Create (obj: THardware); overload;

destructor Destroy (var error: boolean);

property CPU: string read GetCPU write SetCPU;

property Memory: integer read GetMemory write SetMemory;

property HDD: integer read GetHDD write SetHDD;

property Price: real read GetPrice write SetPrice;

end;

implementation

procedure THardware.SetCPU(const nCPU: string);

begin

h_CPU := nCPU;

end;

procedure THardware.SetMemory(const nmem: integer);

begin

h_memory := nmem;

end;

procedure THardware.SetHDD(const nhdd: integer);

begin

h_hdd := nhdd;

end;

procedure THardware.SetPrice(const nprice: real);

begin

h_price := nprice;

end;

function THardware.GetCPU: string;

begin

result := h_CPU;

end;

function THardware.GetMemory: integer;

begin

result := h_memory;

end;

function THardware.GetHDD: integer;

begin

result := h_hdd;

end;

function THardware.GetPrice: real;

begin

result := h_price;

end;

constructor THardware.Create;

begin

inherited Create;

h_CPU := '';

h_memory := 0;

h_hdd := 0;

h_price := 0;

end;

constructor THardware.Create(nCPU:string;nmem,nhdd:integer;nprice:real);

begin

inherited Create;

h_CPU := nCPU;

h_memory := nmem;

h_hdd := nhdd;

h_price := nprice;

end;

constructor THardware.Create(obj: THardware);

begin

inherited Create;

h_CPU := obj.h_CPU;

h_memory := obj.h_memory;

h_hdd := obj.h_hdd;

h_price := obj.h_price;

end;

destructor THardware.Destroy(var error: boolean);

begin

try

inherited Destroy;

error := False;

except

error := True;

end;

end;

end.

unit TStoreDef;

Interface

uses

THardwareDef;

type

TStock = array of THardware;

TStore = class

private

stock: TStock;

public

constructor Create;

destructor Destroy(var error: boolean);

function GetElement(index: integer): THardware;

function GetMaxIndex: integer;

function GetMaxMemory: integer;

function GetMaxPrice: real;

procedure Add(nCPU:string;nmem,nhdd:integer;nprice:real); overload;

procedure Add(obj: THardware); overload;

procedure Delete(index: integer);

procedure Edit(index:integer; nCPU:string;nmem,nhdd:integer;nprice:real);

overload;

procedure Edit(index: integer; obj: THardware); overload;

end;

implementation

constructor TStore.Create;

begin

inherited Create;

SetLength(stock, 1);

end;

destructor TStore.Destroy(var error: boolean);

begin

try

inherited Destroy;

error := False;

except

error := True;

end;

end;

function TStore.GetElement(index: integer): THardware;

begin

result := stock[index];

end;

function TStore.GetMaxIndex: integer;

begin

result := High(stock);

end;

function TStore.GetMaxMemory: integer;

var

i: integer;

begin

result := stock[0].Memory;

for i := 1 to High(stock) do

if stock[i].Memory > result then result := stock[i].Memory;

end;

function TStore.GetMaxPrice: real;

var

i: integer;

begin

result := stock[0].Price;

for i := 1 to High(stock) do

if stock[i].Price > result then result := stock[i].Price;

end;

procedure TStore.Add(nCPU:string;nmem,nhdd:integer;nprice:real);

var

i, j: integer;

begin

i := 0;

if not (stock[0] = nil) then

begin

SetLength(stock, length(stock)+1);

while (i<High(stock))and

(stock[i].Memory<=nmem)and(stock[i].Memory<=nprice) do

inc(i);

for j := High(stock) downto i+1 do

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

end;

if not(stock[i] = nil) then stock[i] := nil;

stock[i] := THardware.Create(nCPU,nmem,nhdd,nprice);

end;

procedure TStore.Add(obj: THardware);

var

i, j: integer;

begin

i := 0;

if not(stock[0] = nil) then

begin

SetLength(stock, length(stock)+1);

while (i<High(stock))and

(stock[i].Memory<=obj.Memory)and(stock[i].Price<=obj.Price) do

inc(i);

for j := High(stock) downto i+1 do

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

end;

if not(stock[i] = nil) then stock[i] := nil;

stock[i] := THardware.Create(obj);

end;

procedure TStore.Delete(index: integer);

var

i: integer;

err: boolean;

begin

for i := index to High(stock)-1 do

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

SetLength(stock, length(stock)-1);

end;

procedure TStore.Edit(index:integer; nCPU:string;nmem,nhdd:integer;nprice:real);

var

err: boolean;

begin

stock[index].Destroy(err);

stock[index] := THardware.Create(nCPU,nmem,nhdd,nprice);

end;

procedure TStore.Edit(index: integer; obj: THardware);

var

err: boolean;

begin

stock[index].Destroy(err);

stock[index] := THardware.Create(obj);

end;

end.

unit Globals;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]