#include <iostream>

Ольга в категроии Информатика, вопрос открыт 26.05.2018 в 20:13


#include <string>

#include <fstream>

#include <vector>

#include <cstdlib>

#include <algorithm>



using namespace std;



struct Student

{ string surname;

string name;

string patron;

int birth;

int study;

string group;

string department;



void load(fstream &fin) {

fin » surname » name » patron » birth » study » group » department;

}



void input() {

cout « "Input data for new student" « endl;

cout « "Surname: "; cin » surname;

cout « "Name: "; cin » name;

cout « "Patronymic: "; cin » patron;

cout « "Birth year: "; cin » birth;

cout « "Study year: "; cin » study;

cout « "Group: "; cin » group;

cout « "Department: "; cin » department;

}



void print() {

cout « surname « " " « name « " " « patron « " " « birth « " " « study « " " « group « " " « department « endl;

}



void save(fstream &fout) {

fout « surname « " " « name « " " « patron « " " « birth « " " « study « " " « group « " " « department « endl;

}

};



vector<Student> stud;



void exit()

{ cout « "Bye." « endl;

}



void print()

{ cout « endl;

int n = stud.size();

for (int i = 0; i<n; i++)

{ cout « i + 1 « " ";

stud[i].print();

}

}



void load()

{ stud.clear();

fstream fin("C:\\Users\\lordi\\Desktop\\data.txt", fstream::in);

if (!fin)

cout « "Can't open file" « endl;

else

cout « "Complite!" « endl;

int n;

fin » n;

Student s;

for (int i = 0; i<n; i++)

{ s.load(fin);

stud.push_back(s);

}

fin.close();

}



void save()

{ fstream fout("C:\\Users\\lordi\\Desktop\\data.txt", fstream::out);

fout « stud.size() « endl;

for (auto &s : stud)

s.save(fout)

fout.close();

}



void add()

{ Student s;

s.input();

stud.push_back(s);

}





void edit()

{ print();

int i;

cout « "input # to edit: "; cin » i;

stud[i - 1].input();

}



void sort()

{ int n;

cout « "Sort by: 1-Surname, 2-Name, 3-Patronymic, 4-Birth year, 5-Study year, 6-Group, 7-Department" « endl;

cout « "You choise: "; cin » n;

if (n == 1) sort(stud.begin(), stud.end(), [](const Student& s1, const Student& s2) { return s1.surname < s2.surname; });

if (n == 2) sort(stud.begin(), stud.end(), [](const Student& s1, const Student& s2) { return s1.name < s2.name; });

if (n == 3) sort(stud.begin(), stud.end(), [](const Student& s1, const Student& s2) { return s1.patron < s2.patron; });

if (n == 4) sort(stud.begin(), stud.end(), [](const Student& s1, const Student& s2) { return s1.birth < s2.birth; });

if (n == 5) sort(stud.begin(), stud.end(), [](const Student& s1, const Student& s2) { return s1.study < s2.study; });

if (n == 6) sort(stud.begin(), stud.end(), [](const Student& s1, const Student& s2) { return s1.group< s2.group; });

if (n == 7) sort(stud.begin(), stud.end(), [](const Student& s1, const Student& s2) { return s1.department< s2.department; });

print();

}



void search()

{ int n;

cout « "Search by: 1-Surname, 2-Name, 3-Patronymic, 4-Birth year, 5-Study year, 6-Group, 7-Department" « endl;

cout « "You choise: "; cin » n;

string str;

cout « "Find what: "; cin » str;

cout « endl;

for (auto& s : stud)

{

if (n == 1 && s.surname.find(str) != string::npos) s.print();

if (n == 2 && s.name.find(str) != string::npos) s.print();

if (n == 3 && s.patron.find(str) != string::npos) s.print();

if (n == 4 && s.birth == stoi(str)) s.print();

if (n == 5 && s.study == stoi(str)) s.print();

if (n == 6 && s.group.find(str) != string::npos) s.print();

if (n == 7 && s.department.find(str) != string::npos) s.print();

}

cout « endl;

}



int menu()

{ cout « "0-Exit " « (ред.)"1-Load " « "2-Print " « "3-Add " « "4-Edit " « "5-Search " « "6-Sort " « "7-Save" « endl;

int choise = 0;

cout « "> "; cin » choise;

return choise;

}



void(*func[])() = { exit, load, print, add, edit, search, sort, save };



int main()

{ int choise;

do {

choise = menu();

func[choise]();

cout « endl;

} while (choise != 0);}

0 ответов

Нет результатов.
Оставлять ответы могут только авторизированные пользователи.
Зарегистрируйтесь или  авторизируйтесь на сайте чтобы оставить ответ на вопрос.