Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- #include <iomanip>
- #include <cstring>
- #include <fstream>
- #include <Windows.h>
- using namespace std;
- const int Max_students_count{ 100 }, Max_length_of_word{ 20 };
- enum Menu_commands {
- Input_from_keyboard = 1,
- Input_from_text_file = 2,
- Input_from_binary_file = 3,
- Display_entering = 4,
- Output_data_to_file = 5,
- Request = 6,
- Convert_to_text_file = 7,
- Convert_to_binary_file = 8,
- Add_note = 9,
- Change_note = 10,
- Delete_note = 11,
- Sort_database = 12,
- Exit = 0
- };
- enum Sort_commands {
- Name_sorting = 1,
- Surname_sorting = 2,
- Year_of_admission_sorting = 3,
- Course_sorting = 4,
- Math_sorting = 5,
- Rus_sorting = 6,
- Eng_sorting = 7,
- };
- enum Sort_by_datatype {
- Int = 1,
- Char = 2
- };
- enum Type_of_sorting {
- Ascending = 1,
- Descending = 2
- };
- struct Student {
- char name[Max_length_of_word]{ "No name" };
- char surname[Max_length_of_word]{ "No surname" };
- int year_of_admission{};
- int course{};
- int marks[3]{};
- int year_of_born{};
- char group[Max_length_of_word]{ "No group" };
- };
- Student students[Max_students_count]{};
- /* Функции */
- int Check_int(int min_num, int max_num); //проверка на числа
- void Check_char(char ret_val[], int maxCountOfSymbols); //проверка на слова
- void Menu_items(); //вывод меню
- int Input_students_count(); //вывод количества студентов
- void Keyboard_input(int count_students, int maxCountOfSymbols, Student students[]); //ввод данных
- void Input_from_text_file_fun(int maxCountOfSymbols, int& countOfStudents, Student students[]);
- void Display_database(int countOfStudents, Student* students);
- void Output_database_to_file(int countOfStudents, Student* students);
- void Query(int countOfStudents, Student* students);
- void Add_a_note(int& countOfStudents, int maxCountOfSymbols, Student* students);
- void Change_a_note(int& countOfStudents, int maxCountOfSymbols, Student* students);
- void Delete_a_note(int& countOfStudents, Student* students);
- void Database_sorting(int maxCountOfSymbols, int countOfStudents, Student* students);
- void Display_sorting_menu();
- int Type_of_sorting();
- void Sorting_int(int maxCountOfSymbols, int countOfStudents, int valueSortingType, int* sort_charact,
- Student* students);
- void Sorting_char(int maxCountOfSymbols, int countOfStudents, int valueSortingType, char** sort_charact,
- Student* students);
- void strCopy(char* dynamicSymbolsArray, char* staticSymbolsArray);
- void swapInt(int& number1, int& number2);
- void convertToTextFile(int countOfStudents, Student students[]);
- void Convert_to_binary(int maxCountOfSymbols);
- void Input_from_binary(int& countOfStudents, Student* students);
- /* конец */
- int main() {
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- int countOfStudents{}, menu_item = -1;
- int* pointerCountOfStudents = &countOfStudents;
- Student students[Max_students_count]{};
- while (menu_item != 0) {
- Menu_items();
- menu_item = Check_int(0, 12);
- system("cls");
- switch (menu_item) {
- case Exit:
- break;
- case Input_from_keyboard:
- countOfStudents = 2;
- system("cls");
- Keyboard_input(countOfStudents, Max_length_of_word, students);
- break;
- case Input_from_text_file:
- Input_from_text_file_fun(Max_length_of_word, countOfStudents, students);
- break;
- case Input_from_binary_file:
- Input_from_binary(countOfStudents, students);
- break;
- case Display_entering:
- Display_database(countOfStudents, students);
- break;
- case Output_data_to_file:
- Output_database_to_file(countOfStudents, students);
- break;
- case Request:
- Query(countOfStudents, students);
- break;
- case Convert_to_text_file:
- convertToTextFile(countOfStudents, students);
- break;
- case Convert_to_binary_file:
- Convert_to_binary(Max_length_of_word);
- break;
- case Add_note:
- Add_a_note(countOfStudents, Max_length_of_word, students);
- break;
- case Change_note:
- Change_a_note(countOfStudents, Max_length_of_word, students);
- break;
- case Delete_note:
- Delete_a_note(countOfStudents, students);
- break;
- case Sort_database:
- Database_sorting(Max_length_of_word, countOfStudents, students);
- break;
- }
- system("pause");
- system("cls");
- }
- return 0;
- }
- int Check_int(int min_num, int max_num) {
- int number = 0;
- bool correct_num = false;
- cin >> number;
- while (!(correct_num)) {
- if (!((number >= min_num) && (number <= max_num))) {
- cout << endl;
- cout << "Вы ввели некорректное число!" << endl << " Введите число в диапазоне от " << min_num << " до "
- << max_num << " включительно: " << endl;
- cin >> number;
- }
- else {
- correct_num = true;
- }
- }
- cin.ignore(1, '\n');
- return number;
- }
- void Check_char(char ret_val[], int maxCountOfSymbols) {
- const int Edge = 1000;
- char* value = new char[Edge] {};
- bool correct_val = false;
- cin.getline(value, Edge);
- while (!(correct_val)) {
- if ((strlen(value) < maxCountOfSymbols) && (strcmp(value, ""))) {
- strCopy(ret_val, value);
- correct_val = true;
- }
- else {
- cout << endl;
- cout
- << "Вы ввели неправильное значение!" << endl << "(либо поле пустое)" << endl <<
- "Введите значение,не превышающее " << maxCountOfSymbols << " символов: " << endl;
- cin.getline(value, Edge);
- }
- }
- delete[] value;
- }
- void Menu_items() {
- cout << "***Работа с базой данных*** " << endl;
- cout << "Выберите пункт меню: " << endl;
- cout << endl;
- cout << " 1) Ввод информации с клавиатуры" << endl;
- cout << " 2) Ввод информации из уже созданного текстового файла" << endl;
- cout << " 3) Ввод информации из уже созданного бинарного файла" << endl;
- cout << " 4) Вывод данных на экран" << endl;
- cout << " 5) Вывод данных в файл" << endl;
- cout << " 6) Вывод распечатки информации данных по запросу" << endl;
- cout << " 7) Перевод базы данных в текстовый файл" << endl;
- cout << " 8) Перевод содержимого текстового файла в бинарный файл" << endl;
- cout << " 9) Добавить запись" << endl;
- cout << "10) Изменить запись" << endl;
- cout << "11) Удалить запись" << endl;
- cout << "12) Сортировать базу данных" << endl;
- cout << " 0) Выход" << endl;
- cout << endl;
- }
- int Input_students_count() {
- int countOfStudents{};
- cout << "В базу данных можно ввести не больше, чем " << Max_students_count << " студентов" << endl
- << "Информацию о каком количестве студентов вы хотите ввести?" << endl << "Количество студентов: " << endl;
- countOfStudents = Check_int(1, 100);
- return countOfStudents;
- }
- void Keyboard_input(int countOfStudents, int maxCountOfSymbols, Student students[]) {
- cout << "Введите информацию о студентах, количество которых равно " << countOfStudents << endl << endl;
- for (int i = 0; i < countOfStudents; i++) {
- cout << "Имя " << i + 1 << "-го студента: " << endl;
- Check_char(students[i].name, maxCountOfSymbols);
- cout << "Фамилия " << i + 1 << "-го студента: " << endl;
- Check_char(students[i].surname, maxCountOfSymbols);
- cout << "Год поступления " << i + 1 << "-го студента: " << endl;
- students[i].year_of_admission = Check_int(1900, 2021);
- cout << "Курс " << i + 1 << "-го студента: " << endl;
- students[i].course = Check_int(1, 5);
- cout << "Оценка " << i + 1 << "-го студента по Математике: " << endl;
- students[i].marks[0] = Check_int(2, 5);
- cout << "Оценка " << i + 1 << "-го студента по Русскому: " << endl;
- students[i].marks[1] = Check_int(2, 5);
- cout << "Оценка " << i + 1 << "-го студента по Английскому: " << endl;
- students[i].marks[2] = Check_int(2, 5);
- system("cls");
- }
- }
- void Input_from_binary(int& countOfStudents, Student* students) {
- ifstream fin;
- fin.open("database.bin", ios::binary);
- if (fin.is_open()) {
- fin.read((char*)&countOfStudents, sizeof(countOfStudents));
- for (int i = 0; i < countOfStudents; i++) {
- fin.read((char*)&students[i], sizeof(students[i]));
- }
- }
- else {
- system("cls");
- cout << "***Ошибка открытия файла***";
- system("pause");
- }
- fin.close();
- }
- void Display_database(int countOfStudents, Student* students) {
- cout << "+------+----------------+--------------------+-------------------+--------+------------+------------+------------+"
- << endl;
- cout << "|" << setw(6) << "№" << "|" << setw(16) << "Имя" << "|" << setw(20) << "Фамилия" << "|" << setw(19)
- << "Год поступления" << "|" << setw(8) << "Курс" << "|" << setw(12) << "Математика" << "|" << setw(12)
- << "Русский" << "|" << setw(12) << "Английский" << "|" << endl;
- for (int i = 0; i < countOfStudents; i++) {
- cout << "+------+----------------+--------------------+-------------------+--------+------------+------------+------------+"
- << endl;
- cout << "|" << left << setw(6) << i + 1;
- cout << "|" << left << setw(16) << students[i].name;
- cout << "|" << left << setw(20) << students[i].surname;
- cout << "|" << left << setw(19) << students[i].year_of_admission;
- cout << "|" << left << setw(8) << students[i].course;
- cout << "|" << left << setw(12) << students[i].marks[0];
- cout << "|" << left << setw(12) << students[i].marks[1];
- cout << "|" << left << setw(12) << students[i].marks[2] << "|";
- cout << endl;
- }
- cout << "+------+----------------+--------------------+-------------------+--------+------------+------------+------------+" << endl;
- cout << endl;
- }
- void Output_database_to_file(int countOfStudents, Student* students) {
- ofstream fout;
- fout.open("stud_dbase.txt");
- if (fout.is_open()) {
- fout << "+------+----------------+--------------------+-------------------+--------+------------+------------+------------+"
- << endl;
- fout << "|" << setw(6) << "№" << "|" << setw(16) << "Имя" << "|" << setw(20) << "Фамилия" << "|" << setw(19)
- << "Год поступления" << "|" << setw(8) << "Курс" << "|" << setw(12) << "Математика" << "|" << setw(12)
- << "Русский" << "|" << setw(12) << "Английский" << "|" << endl;
- for (int i = 0; i < countOfStudents; i++) {
- fout << "+------+----------------+--------------------+-------------------+--------+------------+------------+------------+"
- << endl;
- fout << "|" << left << setw(6) << i + 1;
- fout << "|" << left << setw(16) << students[i].name;
- fout << "|" << left << setw(20) << students[i].surname;
- fout << "|" << left << setw(19) << students[i].year_of_admission;
- fout << "|" << left << setw(8) << students[i].course;
- fout << "|" << left << setw(12) << students[i].marks[0];
- fout << "|" << left << setw(12) << students[i].marks[1];
- fout << "|" << left << setw(12) << students[i].marks[2] << "|";
- fout << endl;
- }
- fout << "+------+----------------+--------------------+-------------------+--------+------------+------------+------------+" << endl;
- fout << endl;
- }
- else {
- system("cls");
- cout << "Ошибка открытия файла.";
- system("pause");
- }
- fout.close();
- }
- void Query(int countOfStudents, Student* students) {
- int num = 1000; int min_i = -1;
- for (int i = 0; i < countOfStudents; i++) {
- int sum = 0;
- sum += (students)[i].marks[0];
- sum += (students)[i].marks[1];
- sum += (students)[i].marks[2];
- if (sum < num) {
- num = sum;
- min_i = i;
- }
- }
- cout << "+------+----------------+--------------------+-------------------+--------+------------+------------+------------+"
- << endl;
- cout << "|" << setw(6) << "№" << "|" << setw(16) << "Имя" << "|" << setw(20) << "Фамилия" << "|" << setw(19)
- << "Год поступления" << "|" << setw(8) << "Курс" << "|" << setw(12) << "Математика" << "|" << setw(12)
- << "Русский" << "|" << setw(12) << "Английский" << "|" << endl;
- cout << "Студент с минимальным средним баллом "<< endl;
- cout << "+------+----------------+--------------------+-------------------+--------+------------+------------+------------+"
- << endl;
- cout << "|" << left << setw(6) << min_i + 1;
- cout << "|" << left << setw(16) << students[min_i].name;
- cout << "|" << left << setw(20) << students[min_i].surname;
- cout << "|" << left << setw(19) << students[min_i].year_of_admission;
- cout << "|" << left << setw(8) << students[min_i].course;
- cout << "|" << left << setw(12) << students[min_i].marks[0];
- cout << "|" << left << setw(12) << students[min_i].marks[1];
- cout << "|" << left << setw(12) << students[min_i].marks[2] << "|";
- cout << endl;
- cout << "+------+----------------+--------------------+-------------------+--------+------------+------------+------------+" << endl;
- }
- void convertToTextFile(int countOfStudents, Student students[]) {
- ofstream fout;
- fout.open("inp_dbase.txt");
- if (fout.is_open()) {
- fout << countOfStudents << endl;
- for (int i = 0; i < countOfStudents; i++) {
- fout << students[i].name << endl;
- fout << students[i].surname << endl;
- fout << students[i].year_of_admission << endl;
- fout << students[i].course << endl;
- fout << students[i].marks[0] << endl;
- fout << students[i].marks[1] << endl;
- fout << students[i].marks[2] << endl;
- }
- }
- else {
- system("cls");
- cout << "Ошибка открытия файла.";
- system("pause");
- }
- fout.close();
- }
- void Convert_to_binary(int maxCountOfSymbols) {
- Student tempStudent{};
- int Students_count{};
- ifstream fin;
- ofstream fout;
- fin.open("inp_dbase.txt");
- fout.open("database.bin", ios::binary);
- if (fin.is_open() && fout.is_open()) {
- fin >> Students_count;
- fout.write((char*)&Students_count, sizeof(Students_count));
- fin.ignore(1, '\n');
- for (int i = 0; i < Students_count; i++) {
- fin.getline(tempStudent.name, maxCountOfSymbols);
- fin.getline(tempStudent.surname, maxCountOfSymbols);
- fin >> tempStudent.year_of_admission;
- fin >> tempStudent.course;
- fin >> tempStudent.marks[0];
- fin >> tempStudent.marks[1];
- fin >> tempStudent.marks[2];
- char tmp[100];
- fin.getline(tmp, 100);
- fout.write((char*)&tempStudent, sizeof(tempStudent));
- }
- }
- else {
- system("cls");
- cout << "Ошибка открытия файла.";
- system("pause");
- }
- }
- void Add_a_note(int& countOfStudents, int maxCountOfSymbols, Student* students) {
- cout << "Введите информацию о студентах, количество которых равно " << countOfStudents + 1 << endl << endl;
- cout << "Имя студента номер " << countOfStudents + 1 << ": " << endl;
- Check_char(students[countOfStudents].name, maxCountOfSymbols);
- cout << "Фамилия студента номер " << countOfStudents + 1 << ": " << endl;
- Check_char(students[countOfStudents].surname, maxCountOfSymbols);
- cout << "Год поступления студента номер " << countOfStudents + 1 << ": " << endl;
- students[countOfStudents].year_of_admission = Check_int(1900, 2021);
- cout << "Курс студента номер " << countOfStudents + 1 << ": " << endl;
- students[countOfStudents].course = Check_int(1, 6);
- cout << "Оценка по Математике номер " << countOfStudents + 1 << ": " << endl;
- students[countOfStudents].marks[0] = Check_int(2, 5);
- cout << "Оценка по Русскому номер " << countOfStudents + 1 << ": " << endl;
- students[countOfStudents].marks[1] = Check_int(2, 5);
- cout << "Оценка по Английскому номер " << countOfStudents + 1 << ": " << endl;
- students[countOfStudents].marks[2] = Check_int(2, 5);
- countOfStudents = countOfStudents + 1;
- system("cls");
- }
- void Change_a_note(int& countOfStudents, int maxCountOfSymbols, Student* students) {
- int indexOfItemBeingModified{};
- cout << "Введите номер студента: " << endl;
- indexOfItemBeingModified = Check_int(1, countOfStudents);
- indexOfItemBeingModified--;
- cout << "Введите обновленную информацию о студенте" << endl;
- cout << endl;
- cout << "Имя студента: " << endl;
- Check_char(students[indexOfItemBeingModified].name, maxCountOfSymbols);
- cout << "Фамилия студента: " << endl;
- Check_char(students[indexOfItemBeingModified].surname, maxCountOfSymbols);
- cout << "Год поступления студента: " << endl;
- students[indexOfItemBeingModified].year_of_admission = Check_int(1900, 2021);
- cout << "Курс студента: " << endl;
- students[indexOfItemBeingModified].course = Check_int(1, 6);
- cout << "Оценка по Математике студента: " << endl;
- students[indexOfItemBeingModified].marks[0] = Check_int(2, 5);
- cout << "Оценка по Русскому студента: " << endl;
- students[indexOfItemBeingModified].marks[0] = Check_int(2, 5);
- cout << "Оценка по Английскому студента: " << endl;
- students[indexOfItemBeingModified].marks[0] = Check_int(2, 5);
- system("cls");
- }
- void Delete_a_note(int& countOfStudents, Student* students) {
- int indexOfItemToRemove{};
- cout << "Введите номер студента: " << endl;
- indexOfItemToRemove = Check_int(1, countOfStudents);
- indexOfItemToRemove--;
- for (int i = indexOfItemToRemove; i < countOfStudents - 1; i++) {
- strcpy_s(students[i].name, students[i + 1].name);
- strcpy_s(students[i].surname, students[i + 1].surname);
- students[i].year_of_admission = students[i + 1].year_of_admission;
- students[i].course = students[i + 1].course;
- students[i].marks[0] = students[i + 1].marks[0];
- students[i].marks[1] = students[i + 1].marks[1];
- students[i].marks[2] = students[i + 1].marks[2];
- }
- memset(students[countOfStudents - 1].name, 0, Max_length_of_word);
- memset(students[countOfStudents - 1].surname, 0, Max_length_of_word);
- students[countOfStudents - 1].year_of_admission = 0;
- students[countOfStudents - 1].course = 0;
- students[countOfStudents - 1].marks[0] = 0;
- students[countOfStudents - 1].marks[1] = 0;
- students[countOfStudents - 1].marks[2] = 0;
- countOfStudents = countOfStudents - 1;
- system("cls");
- }
- void Database_sorting(int maxCountOfSymbols, int countOfStudents, Student* students) {
- int itemNumber{ -1 }, valueSortingType{}, dataTypeToSort{};
- int* sort_charact_int = new int[countOfStudents] {};
- char** sort_charact_char = new char* [countOfStudents] {nullptr};
- for (int i = 0; i < countOfStudents; i++) {
- sort_charact_char[i] = new char[maxCountOfSymbols];
- }
- Display_sorting_menu();
- itemNumber = Check_int(1, 4);
- system("cls");
- valueSortingType = Type_of_sorting();
- switch (itemNumber) {
- case Name_sorting:
- for (int i = 0; i < countOfStudents; i++) {
- sort_charact_char[i] = students[i].name;
- }
- dataTypeToSort = Char;
- break;
- case Surname_sorting:
- for (int i = 0; i < countOfStudents; i++) {
- sort_charact_char[i] = students[i].surname;
- }
- dataTypeToSort = Char;
- break;
- case Year_of_admission_sorting:
- for (int i = 0; i < countOfStudents; i++) {
- sort_charact_int[i] = students[i].year_of_admission;
- }
- dataTypeToSort = Int;
- break;
- case Course_sorting:
- for (int i = 0; i < countOfStudents; i++) {
- sort_charact_int[i] = students[i].course;
- }
- dataTypeToSort = Int;
- break;
- }
- if (dataTypeToSort == Int) {
- Sorting_int(maxCountOfSymbols, countOfStudents, valueSortingType, sort_charact_int, students);
- }
- else if (dataTypeToSort == Char) {
- Sorting_char(maxCountOfSymbols, countOfStudents, valueSortingType, sort_charact_char, students);
- }
- delete[] sort_charact_int;
- delete[] sort_charact_char;
- }
- void Display_sorting_menu() {
- cout << "1) Сортировать по имени" << endl;
- cout << "2) Сортировать по фамилии" << endl;
- cout << "3) Сортировать по году поступления" << endl;
- cout << "4) Сортировать по курсу" << endl;
- cout << endl;
- cout << "Введите номер пункта: " << endl;
- }
- int Type_of_sorting() {
- int itemNumber{};
- cout << "1) Сортировать по возрастанию" << endl;
- cout << "2) Сортировать по убыванию" << endl;
- cout << endl;
- cout << "Введите номер пункта: " << endl;
- itemNumber = Check_int(1, 2);
- system("cls");
- return itemNumber;
- }
- void Sorting_int(int maxCountOfSymbols, int countOfStudents, int valueSortingType, int* sort_charact,
- Student* students) {
- char* tempName = new char[maxCountOfSymbols] {};
- char* tempSurname = new char[maxCountOfSymbols] {};
- char* tempGroup = new char[maxCountOfSymbols] {};
- if (valueSortingType == Ascending) {
- for (int i = 1; i < countOfStudents; i++) {
- for (int j = 0; j < countOfStudents - i; j++) {
- if (sort_charact[j] > sort_charact[j + 1]) {
- swapInt(sort_charact[j], sort_charact[j + 1]);
- swapInt(students[j].year_of_admission, students[j + 1].year_of_admission);
- swapInt(students[j].course, students[j + 1].course);
- swapInt(students[j].marks[0], students[j + 1].marks[0]);
- swapInt(students[j].marks[1], students[j + 1].marks[1]);
- swapInt(students[j].marks[2], students[j + 1].marks[2]);
- strCopy(tempName, students[j].name);
- strCopy(tempSurname, students[j].surname);
- strcpy_s(students[j].name, students[j + 1].name);
- strcpy_s(students[j].surname, students[j + 1].surname);
- strcpy_s(students[j + 1].name, tempName);
- strcpy_s(students[j + 1].surname, tempSurname);
- }
- }
- }
- }
- else if (valueSortingType == Descending) {
- for (int i = 1; i < countOfStudents; i++) {
- for (int j = 0; j < countOfStudents - i; j++) {
- if (sort_charact[j] < sort_charact[j + 1]) {
- swapInt(sort_charact[j], sort_charact[j + 1]);
- swapInt(students[j].year_of_admission, students[j + 1].year_of_admission);
- swapInt(students[j].course, students[j + 1].course);
- swapInt(students[j].marks[0], students[j + 1].marks[0]);
- swapInt(students[j].marks[1], students[j + 1].marks[1]);
- swapInt(students[j].marks[2], students[j + 1].marks[2]);
- strCopy(tempName, students[j].name);
- strCopy(tempSurname, students[j].surname);
- strcpy_s(students[j].name, students[j + 1].name);
- strcpy_s(students[j].surname, students[j + 1].surname);
- strcpy_s(students[j + 1].name, tempName);
- strcpy_s(students[j + 1].surname, tempSurname);
- }
- }
- }
- }
- delete[] tempName;
- delete[] tempSurname;
- delete[] tempGroup;
- }
- void Sorting_char(int maxCountOfSymbols, int countOfStudents, int valueSortingType, char** sort_charact,
- Student* students) {
- char* tempName = new char[maxCountOfSymbols] {};
- char* tempSurname = new char[maxCountOfSymbols] {};
- char* tempGroup = new char[maxCountOfSymbols] {};
- char* temp_sort_charact = new char[maxCountOfSymbols] {};
- if (valueSortingType == Ascending) {
- for (int i = 1; i < countOfStudents; i++) {
- for (int j = 0; j < countOfStudents - i; j++) {
- if (sort_charact[j][0] > sort_charact[j + 1][0]) {
- swapInt(students[j].year_of_admission, students[j + 1].year_of_admission);
- swapInt(students[j].course, students[j + 1].course);
- swapInt(students[j].marks[0], students[j + 1].marks[0]);
- swapInt(students[j].marks[1], students[j + 1].marks[1]);
- swapInt(students[j].marks[2], students[j + 1].marks[2]);
- strCopy(temp_sort_charact, sort_charact[j]);
- strCopy(tempName, students[j].name);
- strCopy(tempSurname, students[j].surname);
- strCopy(sort_charact[j], sort_charact[j + 1]);
- strcpy_s(students[j].name, students[j + 1].name);
- strcpy_s(students[j].surname, students[j + 1].surname);
- strCopy(sort_charact[j + 1], temp_sort_charact);
- strcpy_s(students[j + 1].name, tempName);
- strcpy_s(students[j + 1].surname, tempSurname);
- }
- }
- }
- }
- else if (valueSortingType == Descending) {
- for (int i = 1; i < countOfStudents; i++) {
- for (int j = 0; j < countOfStudents - i; j++) {
- if (sort_charact[j][0] < sort_charact[j + 1][0]) {
- swapInt(students[j].year_of_admission, students[j + 1].year_of_admission);
- swapInt(students[j].course, students[j + 1].course);
- swapInt(students[j].marks[0], students[j + 1].marks[0]);
- swapInt(students[j].marks[1], students[j + 1].marks[1]);
- swapInt(students[j].marks[2], students[j + 1].marks[2]);
- strCopy(temp_sort_charact, sort_charact[j]);
- strCopy(tempName, students[j].name);
- strCopy(tempSurname, students[j].surname);
- strCopy(sort_charact[j], sort_charact[j + 1]);
- strcpy_s(students[j].name, students[j + 1].name);
- strcpy_s(students[j].surname, students[j + 1].surname);
- strCopy(sort_charact[j + 1], temp_sort_charact);
- strcpy_s(students[j + 1].name, tempName);
- strcpy_s(students[j + 1].surname, tempSurname);
- }
- }
- }
- }
- delete[] tempName;
- delete[] tempSurname;
- delete[] tempGroup;
- delete[] temp_sort_charact;
- }
- void strCopy(char* symbolsArray1, char* symbolsArray2) {
- for (unsigned int i = 0; i < strlen(symbolsArray1); i++) {
- symbolsArray1[i] = ' ';
- }
- for (unsigned int i = 0; i < strlen(symbolsArray2); i++) {
- symbolsArray1[i] = symbolsArray2[i];
- }
- }
- void swapInt(int& number1, int& number2) {
- int tempNumber{};
- tempNumber = number1;
- number1 = number2;
- number2 = tempNumber;
- }
- void swapStrings(char* symbolsArray1, char* symbolsArray2, int maxCountOfSymbols) {
- char* tempSymbolsArray = new char[maxCountOfSymbols] {};
- }
- void Input_from_text_file_fun(int maxCountOfSymbols, int& countOfStudents, Student students[]) {
- ifstream fin;
- fin.open("inp_dbase.txt");
- if (fin.is_open()) {
- fin >> countOfStudents;
- fin.ignore(1, '\n');
- for (int i = 0; i < countOfStudents; i++) {
- fin.getline(students[i].name, maxCountOfSymbols);
- fin.getline(students[i].surname, maxCountOfSymbols);
- fin >> students[i].year_of_admission;
- fin >> students[i].course;
- fin >> students[i].marks[0];
- fin >> students[i].marks[1];
- fin >> students[i].marks[2];
- char tmp[100];
- fin.getline(tmp, 100);
- }
- }
- else {
- system("cls");
- cout << "Ошибка открытия файла.";
- system("pause");
- }
- fin.close();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement