Лаб. 1 ООП (Вариант 18)
.docx
#include <stdio.h>
#include <clocale>
#include <iostream>
#include <cstring>
#include <iomanip>
#include <fstream>
#define N 999
#define L 20
using namespace std;
struct deposit {
char* surname;
char* name;
int account_number;
double sum;
};
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";
return x;
}
void new_account(struct deposit client[]) {
char buff[L];
char buf[L];
int c;
cout << "Введите номер счёта (1-999): ";
cin >> c;
if (c < 1 || c > 999 || c == client[c].account_number) {
do {
cout << "Недопустимое значение!" << "\n";
cout << "Введите номер счёта (1-999): ";
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 > 9999999) {
do {
cout << "Недопустимое значение!" << "\n";
cout << "Введите сумму депозита: ";
cin >> s;
} while (s < 0 || s > 9999999);
}
client[c].sum = s;
cout << "\n";
}
void cl_account(struct deposit client[]) {
char buff[L];
char* ssurname;
char* nname;
int a=0;
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;
}
if (i != client[i].account_number) {
a++;
}
}
if (a == N) {
cout << "Пользователи не введены" << "\n";
}
//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_sm(struct deposit client[]) {
int sm;
int a = 0;
cout << "Введите сумму: ";
cout << "\n";
cin >> sm;
if (sm < 0 || sm>9999999) {
do {
cout << "Недопустимое значение!" << "\n";
cout << "Введите процент по кредиту: ";
cin >> sm;
} while (sm < 0 || sm >9999999);
}
printf(" № | Фамилия Имя|\n");
for (int i = 0; i < L * 2 + 5; i++) printf("_"); printf("\n");
for (int i = 1; i < N; i++) {
if (i == client[i].account_number && sm < client[i].sum) {
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 + 5; i++) printf("_"); printf("\n");
}
if (i != client[i].account_number) {
a++;
}
}
if (a == N) {
cout << "Пользователи не введены" << "\n";
}
cout << "\n";
}
void sort(struct deposit client[]) {
int n, s;
int a = 0;
char buff[L];
printf(" № | Фамилия Имя| Сумма |\n");
for (int i = 0; i < 53; i++) printf("_"); printf("\n");
for (int i = 1; i < N - 1; i++) {
for (int j = i + 1; j < N; j++) {
if ((i == client[i].account_number && j == client[j].account_number) && (strcmp(client[i].surname, client[j].surname) > 0)) {
//strcpy_s(buff, strlen(buff) + 1, client[i].surname);
//strcpy_s(client[i].surname, strlen(buff) + 1, client[j].surname);
//strcpy_s(client[i].surname, strlen(buff) + 1, buff);
swap(client[i].surname, client[j].surname);
//strcpy_s(buff, strlen(buff) + 1, client[i].name);
//strcpy_s(client[i].name, strlen(buff) + 1, client[j].name);
//strcpy_s(client[i].name, strlen(buff) + 1, buff);
swap(client[i].name, client[j].name);
//n = client[i].account_number;
//client[i].account_number = client[j].account_number;
//client[j].account_number = n;
swap(client[i].account_number, client[j].account_number);
//s = client[i].sum;
//client[i].sum = client[j].sum;
//client[j].sum = s;
swap(client[i].sum, client[j].sum);
/*
cout << setw(4) << client[i].account_number << "|";
cout << setw(L) << client[i].surname;
cout << setw(L) << client[i].name << "|";
cout << setw(7) << client[i].sum << "|" << "\n";
for (int i = 0; i < 53; i++) printf("_"); printf("\n");
*/
}
if (i != client[i].account_number) {
a++;
}
}
}
if (a == N) {
cout << "Пользователи не введены" << "\n";
}
else{
//printf(" № | Фамилия Имя| Сумма |\n");
//for (int i = 0; i < 53; i++) printf("_"); printf("\n");
for (int i = 1; i < N; i++) {
for (int j = 1; j < N; j++) {
if (i == client[j].account_number) {
cout << setw(4) << client[i].account_number << "|";
cout << setw(L) << client[i].surname;
cout << setw(L) << client[i].name << "|";
cout << setw(7) << client[i].sum << "|" << "\n";
for (int i = 0; i < 53; i++) printf("_"); printf("\n");
}
}
}
}
cout << "\n";
}
void load_work(struct deposit client[]) {
ofstream file;
file.open("labone.txt");
if (!file.is_open()) {
cout << "Ошибка открытия файла";
}
else {
for (int i = 1; i < N; i++) {
if (i == client[i].account_number) {
file << client[i].account_number << "\n";
file << client[i].surname << "\n";
file << client[i].name << "\n";
file << client[i].sum << "\n";
file << "----------" << "\n";
}
}
}
file.close();
}
void main() {
setlocale(LC_ALL, "Russian");
system("chcp 1251");
//struct credit client[N];
deposit* mass = (deposit*)malloc(N * sizeof(deposit));
int C = 0;
do {
int x = menu();
switch (x) {
case 1:
new_account(mass);
break;
case 2:
cl_account(mass);
break;
case 3:
cl_sm(mass);
break;
case 4:
sort(mass);
break;
case 5:
load_work(mass);
exit(0);
default:
printf("Команды под данным номером не существует\n");
break;
}
} while (C != 1);
free(mass);
}