Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаб. 6 ОП (Вариант 20)

.docx
Скачиваний:
2
Добавлен:
30.08.2024
Размер:
44.94 Кб
Скачать

#include <stdio.h>

#include <clocale>

#include <iostream>

#include <cstring>

#include <iomanip>

#define N 999

#define L 20

/*

Проект: Банк (кредит)

Создайте структуру credit со следующими полями:

Тип данных Назначение поля

int номер счета

char* фамилия клиента

char* имя клиента

double сумма кредита

int процент по кредиту

Создать массив из n клиентов банка (ввод с клавиатуры)

Реализовать функции :

-> добавить новый счет;

-> распечатать информацию о счете в табличном виде;

-> Найти все счета и общую сумму кредитов у заданного клиента

(клиент – это фамилия + имя), результат вывести на экран;

-> Определить всех клиентов с заданным процентом по кредиту,

результат запомнить в массиве и вывести на экран;

*/

using namespace std;

struct credit {

int account_number;

char* surname;

char* name;

double sum;

int percent;

};

int menu() {

int x;

printf("Выберите команду, введя её номер:\n");

printf("1. Добавить новый счет\n");

printf("2. Информация о счёте\n");

printf("3. Показать все счета и общую сумму кредитов клиента\n");

printf("4. Определить всех клиентов с заданным процентом по кредиту\n");

printf("5. Выход из программы\n-> ");

cin >> x;

cout << "\n";

/*

if (x < 1 || x>5) {

do {

printf("Команды под данным номером не существует, выберите команду из списка:\n");

printf("1. Добавить новый счет\n");

printf("2. Информация о счёте\n");

printf("3. Показать все счета и общую сумму кредитов клиента\n");

printf("4. Определить всех клиентов с заданным процентом по кредиту\n");

printf("5. Выход из программы\n -> ");

int x;

cin >> x;

} while (x < 1 || x>5);

}

*/

return x;

}

void new_account(struct credit client[]) {

char buff[L];

char buf[L];

int c;

cout << "Введите номер счёта: ";

cin >> c;

if (c < 1 || c > 999) {

do {

cout << "Недопустимое значение!"<<"\n";

cout << "Введите номер счёта: ";

cin >> c;

} while (c < 1 || c > 999);

}

client[c].account_number = c;

cout << "Введите фамилию клиента: ";

//getchar();

//fgets(buff, L, stdin);

cin >> buff;

client[c].surname = new char[strlen(buff) + 1];

strcpy_s(client[c].surname, strlen(buff) + 1, buff);

cout << "Введите имя клиента: ";

//getchar();

//fgets(buff, L, stdin);

cin >> buff;

client[c].name = new char[strlen(buff) + 1];

strcpy_s(client[c].name, strlen(buff) + 1, buff);

double s;

cout << "Введите сумму кредита: ";

cin >> s;

if (s < 0 || s > 999999999999999999) {

do {

cout << "Недопустимое значение!" << "\n";

cout << "Введите сумму кредита: ";

cin >> s;

} while (s < 0 || s > 999999999999999999);

}

client[c].sum = s;

int p;

cout << "Введите процент по кредиту: ";

cin >> p;

if (p < 0 || p>100) {

do {

cout << "Недопустимое значение!" << "\n";

cout << "Введите процент по кредиту: ";

cin >> p;

} while (p < 0 || p > 100);

}

client[c].percent = p;

cout << "\n";

//delete(buff);

}

void inf_account(struct credit client[]) {

int c;

cout << "Введите номер счёта, о котором хотите узнать информацию: ";

cin >> c;

if (c < 1 || c > 999) {

do {

cout << "Недопустимое значение!" << "\n";

cout << "Введите номер счёта, о котором хотите узнать информацию: ";

cin >> c;

} while (c < 1 || c > 999);

}

for (int i = 0; i < L * 2; i++) printf("_"); printf("\n");

if (c > 0 && c < 10) {

printf(" Номер счёта: %d |\n", c);

}

if (c > 9 && c < 100) {

printf(" Номер счёта: %d |\n", c);

}

if (c > 99 && c < 1000) {

printf(" Номер счёта: %d |\n", c);

}

if (c > 999 && c < 10000) {

printf(" Номер счёта: %d |\n", c);

}

if (c > 9999 && c < 100000) {

printf(" Номер счёта: %d |\n", c);

}

for (int i = 0; i < L * 2; i++) printf("_"); printf("\n");

printf("Фамилия клиента |");

cout << setw(L) << client[c].surname << "|" << "\n";

for (int i = 0; i < L * 2; i++) printf("_"); printf("\n");

printf("Имя клиента |");

cout << setw(L) << client[c].name << "|" << "\n";

for (int i = 0; i < L * 2; i++) printf("_"); printf("\n");

printf("Сумма кредита |");

cout << setw(L) << client[c].sum << "|" << "\n";

for (int i = 0; i < L * 2; i++) printf("_"); printf("\n");

printf("Процент по кредиту |");

cout << setw(L) << client[c].percent << "|" << "\n";

for (int i = 0; i < L * 2; i++) printf("_"); printf("\n");

cout << "\n";

}

void cl_account(struct credit client[]) {

char buff[L];

char* ssurname;

char* nname;

cout << "Введите фамилию клиента: ";

//fgets(buff, L, stdin);

cin >> buff;

ssurname = new char[strlen(buff) + 1];

strcpy_s(ssurname, strlen(buff) + 1, buff);

cout << "Введите имя клиента: ";

//fgets(buff, L, stdin);

cin >> buff;

nname = new char[strlen(buff) + 1];

strcpy_s(nname, strlen(buff) + 1, buff);

for (int i = 0; i < L * 2; i++) printf("_"); printf("\n");

//printf(" %s |\n", *ssurname);

//printf(" %s |\n", *nname);

//for (int i = 0; i < L * 2; i++) printf("_"); printf("\n");

double ssum=0;

for (int i = 0; i < N; i++) {

if (client[i].account_number == i && (strcmp(client[i].surname, ssurname)==0) && (strcmp(client[i].name, nname)==0)) {

printf("Номер счёта |");

cout << setw(L) << client[i].account_number << "|" << "\n";

for (int i = 0; i < L; i++) printf("_ "); printf("\n");

printf("Cумма кредита |");

cout << setw(L) << client[i].sum << "|" << "\n";

for (int i = 0; i < L * 2; i++) printf("_"); printf("\n");

ssum += client[i].sum;

}

}

printf("Общая сумма |");

cout << setw(L) << ssum << "|" << "\n";

for (int i = 0; i < L * 2; i++) printf("_"); printf("\n");

cout << "\n";

delete ssurname;

delete nname;

}

void cl_percent(struct credit client[]) {

int perc;

cout << "Введите процент по кредиту: ";

cin >> perc;

if (perc < 0 || perc>100) {

do {

cout << "Недопустимое значение!" << "\n";

cout << "Введите процент по кредиту: ";

cin >> perc;

} while (perc < 0 || perc >100);

}

for (int i = 0; i < L * 2; i++) printf("_"); printf("\n");

if (perc > 0 && perc < 10) {

printf(" Процент по кредиту: %d |\n", perc);

}

if (perc > 9 && perc < 100) {

printf(" Процент по кредиту: %d |\n", perc);

}

for (int i = 0; i < L * 2+4; i++) printf("_"); printf("\n");

for (int i = 1; i < N; i++) {

if (i == client[i].account_number && perc == client[i].percent) {

cout << setw(4) << client[i].account_number << "|";

cout << setw(L) << client[i].surname;

cout << setw(L) << client[i].name << "|" << "\n";

for (int i = 0; i < L * 2+4; i++) printf("_"); printf("\n");

}

}

cout << "\n";

}

void main() {

setlocale(LC_ALL, "Russian");

system("chcp 1251");

//struct credit client[N];

credit* mass = (credit*)malloc(N * sizeof(credit));

int C = 0;

do {

int x = menu();

switch (x) {

case 1:

new_account(mass);

break;

case 2:

inf_account(mass);

break;

case 3:

cl_account(mass);

break;

case 4:

cl_percent(mass);

break;

case 5:

exit(0);

default:

printf("Команды под данным номером не существует\n");

break;

}

} while (C !=1);

free(mass);

}