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

Лаб. 1 ООП (Вариант 18)

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

#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);

}