Лаб. 6 ОП (Вариант 20)
.docx
#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);
}