Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <iostream>
- #include <stdio.h>
- #include <vector>
- #include <iomanip>
- #include <stdlib.h>
- #include <Windows.h>
- #include <string>
- #include <iterator>
- #include <fstream>
- #include <algorithm>
- using namespace std;
- struct FIO {
- char name[20];
- char surname[20];
- char patronymic[20];
- };
- struct Student {
- FIO fio;
- int group;
- int exams;
- int mark[7];
- char disp[7][20];
- };
- void print_info(vector<Student> v) {
- for (vector<Student>::iterator iter = v.begin(); iter != v.end(); ++iter) {
- cout << setw(25) << left << iter->fio.surname << " " << setw(4) << left << iter->exams;
- for (int j = 0; j < iter->exams; j++) {
- cout << iter->disp[j] << " ";
- }
- cout << endl;
- cout << setw(10) << left << iter->fio.name << " " << setw(15) << left << iter->fio.patronymic << setw(4) << left << iter->group << " ";
- for (int j = 0; j < iter->exams; j++) {
- cout << setw(4) << iter->mark[j] << " ";
- }
- cout << endl << endl;
- }
- cout << endl;
- }
- Student motif() {
- Student a;
- cout << "Введите ФИО студента: ";
- cin >> a.fio.surname;
- cin >> a.fio.name;
- cin >> a.fio.patronymic;
- cout << "Введите число экзаменов: ";
- cin >> a.exams;
- cout << "Введите номер группы: ";
- cin >> a.group;
- cout << "Введите названия экзаменов: ";
- for (int j = 0; j < a.exams; j++) {
- cin >> a.disp[j];
- }
- cout << "Введите оценки студента по этим предметам: ";
- for (int j = 0; j < a.exams; j++) {
- cin >> a.mark[j];
- }
- return a;
- }
- void add_info(vector<Student>& v) {
- Student help = motif();
- v.push_back(help);
- }
- void delete_info(vector<Student>& v) {
- char key1[20];
- cout << "Введите ключ,по которому хотите удалить: ";
- cin >> key1;
- for (int i = 0; i < v.size(); i++) {
- if ((strcmp(key1, v[i].fio.name) == 0) || (strcmp(key1, v[i].fio.surname) == 0) || (strcmp(key1, v[i].fio.patronymic) == 0)) {
- v.erase(v.begin() + i);
- i--;
- }
- }
- cout << endl;
- }
- void add_info1(vector<Student>& v) {
- int i;
- cout << "Введите номер строки, перед которой хотите вставить данные: ";
- cin >> i;
- vector<Student>::iterator iter = v.begin();
- Student help = motif();
- v.emplace(iter + i, help);
- }
- void add_info2(vector<Student>& v) {
- int i;
- cout << "Введите номер строки, после которой хотите вставить данные: ";
- cin >> i;
- Student help = motif();
- vector<Student>::iterator it = v.begin();
- v.emplace(it + i + 1, help);
- }
- void search_info(vector<Student> v) {
- char key[20];
- cout << "Введите слово для поиска: ";
- cin >> key;
- vector<Student>::iterator iter;
- cout << endl;
- for (int i = 0; i < v.size(); i++) {
- if (strcmp(key, v[i].fio.surname) == 0 || strcmp(key, v[i].fio.name) == 0 || strcmp(key, v[i].fio.patronymic) == 0) {
- iter = v.begin();
- advance(iter, i);
- cout << setw(25) << left << iter->fio.surname << " " << setw(4) << left << iter->exams;
- for (int j = 0; j < v[i].exams; j++) {
- cout << iter->disp[j] << " ";
- }
- cout << endl;
- cout << setw(10) << left << iter->fio.name << " " << setw(15) << left << iter->fio.patronymic << setw(4) << left << iter->group << " ";
- for (int j = 0; j < v[i].exams; j++) {
- cout << setw(4) << iter->mark[j] << " ";
- }
- cout << endl;
- cout << endl;
- }
- cout << endl;
- }
- }
- bool comp(Student a, Student b) {
- if (strcmp(a.fio.surname, b.fio.surname) < 0) {
- return true;
- }
- return false;
- }
- bool coolcomp(Student a, Student b) {
- if (strcmp(a.fio.surname, b.fio.surname) < 0 || strcmp(a.fio.surname, b.fio.surname) == 0 && strcmp(a.fio.name, b.fio.name) < 0) {
- return true;
- }
- return false;
- }
- vector<Student> v;
- Student stud;
- int main() {
- setlocale(LC_ALL, "rus");
- ifstream fail;
- fail.open("students_info.txt", ios::in);
- int i = 0, n = 0;
- int k = -1;
- while (k != 10) {
- printf(" 1-формирование данных\n 2-добавить данные\n 3-поиск данных по ключу\n 4-удаление данных по ключу\n 5-вставка данных в массив перед i-ой записью\n 6-вставка данных в массив после i-ой записи\n 7-сортировка по фамилии\n 8-сортировка по имени и фамилии\n 9-сохранение данных в файл\n 0-вывод данных\n 10-выход\n");
- cin >> k;
- if (k == 1) {
- while (fail) {
- fail >> stud.fio.surname;
- fail >> stud.exams;
- for (int j = 0; j < stud.exams; j++) {
- fail >> stud.disp[j];
- }
- fail >> stud.fio.name;
- fail >> stud.fio.patronymic;
- fail >> stud.group;
- for (int j = 0; j < stud.exams; j++) {
- fail >> stud.mark[j];
- }
- v.push_back(stud);
- }v.pop_back(); fail.close();
- }
- if (k == 2) {
- add_info(v);
- }
- if (k == 3)
- search_info(v);
- if (k == 4) {
- delete_info(v);
- }
- if (k == 5) {
- add_info1(v);
- }
- if (k == 6) {
- add_info2(v);
- }
- if (k == 7) {
- sort(v.begin(), v.end(), comp);
- }
- if (k == 8) {
- sort(v.begin(), v.end(), coolcomp);
- }
- if (k == 9) {
- ofstream files;
- files.open("students_info2.txt", ios::out);
- for (int i = 0; i < v.size(); i++) {
- files << setw(25) << left << v[i].fio.surname << " " << setw(4) << left << v[i].exams;
- for (int j = 0; j < v[i].exams; j++) {
- files << v[i].disp[j] << " ";
- }
- files << endl;
- files << setw(10) << left << v[i].fio.name << " " << setw(15) << left << v[i].fio.patronymic << setw(4) << left << v[i].group << " ";
- for (int j = 0; j < v[i].exams; j++) {
- files << setw(4) << v[i].mark[j] << " ";
- }
- files << endl;
- }
- files.close();
- }
- if (k == 0)
- print_info(v);
- if (k == 10) {
- }
- }
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement