Программа на делфи Разработать программу обработки данных о счетах клиентов банка. Для каждого клиента задается: учетный номер, фамилия, сумма денег на счете. Программа должна организовать диалоговый цикл для выполнения следующих действий: ввод нового клиента в массив записей с заданием всех необходимых данных, вывод списка клиентов, поиск клиента по фамилии, добавление денег на счет заданного клиента, снятие денег со счета с проверкой возможности снятия, сохранение массива записей в типизированном файле, загрузка данных из ранее созданного файла. Каждое действие оформляется как подпрограмма. Главная программа реализует только диалоговый цикл взаимодействия с пользователем.
procedure PrintClients(); var i: Integer; begin for i := 0 to High(clients) do begin WriteLn('Account number: ', clients[i].accountNumber); WriteLn('Last name: ', clients[i].lastName); WriteLn('Balance: ', clients[i].balance); WriteLn('-----------------------'); end; end;
procedure FindClientByLastName(lastName: string); var i: Integer; begin for i := 0 to High(clients) do begin if clients[i].lastName = lastName then begin WriteLn('Account number: ', clients[i].accountNumber); WriteLn('Last name: ', clients[i].lastName); WriteLn('Balance: ', clients[i].balance); Exit; end; end;
WriteLn('Client not found'); end;
procedure AddMoney(accountNumber: Integer; amount: Real); var i: Integer; begin for i := 0 to High(clients) do begin if clients[i].accountNumber = accountNumber then begin clients[i].balance := clients[i].balance + amount; WriteLn('Money added successfully'); Exit; end; end;
WriteLn('Client not found'); end;
procedure WithdrawMoney(accountNumber: Integer; amount: Real); var i: Integer; begin for i := 0 to High(clients) do begin if clients[i].accountNumber = accountNumber then begin if clients[i].balance >= amount then begin clients[i].balance := clients[i].balance - amount; WriteLn('Money withdrawn successfully'); end else begin WriteLn('Not enough money on the account'); end; Exit; end; end;
WriteLn('Client not found'); end;
procedure SaveToFile(filename: string); var fileVar: file of Client; i: Integer; begin Assign(fileVar, filename); Rewrite(fileVar);
for i := 0 to High(clients) do begin Write(fileVar, clients[i]); end;
Close(fileVar); end;
procedure LoadFromFile(filename: string); var fileVar: file of Client; tempClient: Client; begin Assign(fileVar, filename); Reset(fileVar);
while not EOF(fileVar) do begin Read(fileVar, tempClient); SetLength(clients, Length(clients) + 1); clients[High(clients)] := tempClient; end;
begin repeat WriteLn('1. Add client'); WriteLn('2. Print clients'); WriteLn('3. Find client by last name'); WriteLn('4. Add money to account'); WriteLn('5. Withdraw money from account'); WriteLn('6. Save to file'); WriteLn('7. Load from file'); WriteLn('8. Exit');
Write('Enter your choice: '); ReadLn(choice); case choice of 1: AddClient; 2: PrintClients; 3: begin Write('Enter last name: '); ReadLn(lastName); FindClientByLastName(lastName); end; 4: begin Write('Enter account number: '); ReadLn(accountNumber); Write('Enter amount to add: '); ReadLn(amount); AddMoney(accountNumber, amount); end; 5: begin Write('Enter account number: '); ReadLn(accountNumber); Write('Enter amount to withdraw: '); ReadLn(amount); WithdrawMoney(accountNumber, amount); end; 6: begin Write('Enter filename to save data: '); ReadLn(filename); SaveToFile(filename); end; 7: begin Write('Enter filename to load data: '); ReadLn(filename); LoadFromFile(filename); end; end;
program BankAccounts;
type
Client = record
accountNumber: Integer;
lastName: string;
balance: Real;
end;
var
clients: array of Client;
procedure AddClient();
var
newClient: Client;
begin
Write('Enter account number: ');
ReadLn(newClient.accountNumber);
Write('Enter last name: ');
ReadLn(newClient.lastName);
Write('Enter balance: ');
ReadLn(newClient.balance);
SetLength(clients, Length(clients) + 1);
clients[High(clients)] := newClient;
end;
procedure PrintClients();
var
i: Integer;
begin
for i := 0 to High(clients) do
begin
WriteLn('Account number: ', clients[i].accountNumber);
WriteLn('Last name: ', clients[i].lastName);
WriteLn('Balance: ', clients[i].balance);
WriteLn('-----------------------');
end;
end;
procedure FindClientByLastName(lastName: string);
var
i: Integer;
begin
for i := 0 to High(clients) do
begin
if clients[i].lastName = lastName then
begin
WriteLn('Account number: ', clients[i].accountNumber);
WriteLn('Last name: ', clients[i].lastName);
WriteLn('Balance: ', clients[i].balance);
Exit;
end;
end;
WriteLn('Client not found');
end;
procedure AddMoney(accountNumber: Integer; amount: Real);
var
i: Integer;
begin
for i := 0 to High(clients) do
begin
if clients[i].accountNumber = accountNumber then
begin
clients[i].balance := clients[i].balance + amount;
WriteLn('Money added successfully');
Exit;
end;
end;
WriteLn('Client not found');
end;
procedure WithdrawMoney(accountNumber: Integer; amount: Real);
var
i: Integer;
begin
for i := 0 to High(clients) do
begin
if clients[i].accountNumber = accountNumber then
begin
if clients[i].balance >= amount then
begin
clients[i].balance := clients[i].balance - amount;
WriteLn('Money withdrawn successfully');
end
else
begin
WriteLn('Not enough money on the account');
end;
Exit;
end;
end;
WriteLn('Client not found');
end;
procedure SaveToFile(filename: string);
var
fileVar: file of Client;
i: Integer;
begin
Assign(fileVar, filename);
Rewrite(fileVar);
for i := 0 to High(clients) do
begin
Write(fileVar, clients[i]);
end;
Close(fileVar);
end;
procedure LoadFromFile(filename: string);
var
fileVar: file of Client;
tempClient: Client;
begin
Assign(fileVar, filename);
Reset(fileVar);
while not EOF(fileVar) do
begin
Read(fileVar, tempClient);
SetLength(clients, Length(clients) + 1);
clients[High(clients)] := tempClient;
end;
Close(fileVar);
end;
var
choice: Integer;
lastName: string;
accountNumber: Integer;
amount: Real;
filename: string;
begin
Write('Enter your choice: ');repeat
WriteLn('1. Add client');
WriteLn('2. Print clients');
WriteLn('3. Find client by last name');
WriteLn('4. Add money to account');
WriteLn('5. Withdraw money from account');
WriteLn('6. Save to file');
WriteLn('7. Load from file');
WriteLn('8. Exit');
ReadLn(choice);
case choice of
1: AddClient;
2: PrintClients;
3: begin
Write('Enter last name: ');
ReadLn(lastName);
FindClientByLastName(lastName);
end;
4: begin
Write('Enter account number: ');
ReadLn(accountNumber);
Write('Enter amount to add: ');
ReadLn(amount);
AddMoney(accountNumber, amount);
end;
5: begin
Write('Enter account number: ');
ReadLn(accountNumber);
Write('Enter amount to withdraw: ');
ReadLn(amount);
WithdrawMoney(accountNumber, amount);
end;
6: begin
Write('Enter filename to save data: ');
ReadLn(filename);
SaveToFile(filename);
end;
7: begin
Write('Enter filename to load data: ');
ReadLn(filename);
LoadFromFile(filename);
end;
end;
until choice = 8;
end.