Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdio.h>
- #include <windows.h>
- #include <fstream>
- using namespace std;
- struct predm {
- char name[20];
- int mark;
- };
- struct session {
- int predm_co;
- predm p[10];
- };
- struct student {
- char fam[20];
- char im[20];
- char ot[20];
- int b_day;
- int b_month;
- int b_year;
- int year_apply;
- char kaf[20];
- char group[20];
- int zachetka;
- int sess_co;
- session s[10];
- int pos = 0;
- };
- class input {
- public:
- char key;
- void switcher_in() {
- cout << " ---МЕНЮ---\n Введите k для ввода информации о студенте \n Для выхода введите e \n Для просмотра информации, которую вы ввели, нажмите r"<< endl;
- cin >> key;
- }
- };
- class f : public virtual input {
- public:
- FILE* ou;
- int s = 0;
- void f_in() {
- fopen_s(&ou, "flilk", "wb");
- struct student chel;
- for (; 1;) {
- cout << "\n вы собираетесь вводить ? Для продолжения выберите нужный вариант \n 1 - для продолжения ввода \n 0 - для выхода 1/0\n";
- cin >> s;
- if (!s) break;
- cout << "Введите имя, фамилию и отчество студента " << endl;
- cin >> chel.im >> chel.fam >> chel.ot;
- cout << "Введите дату рожедния студента, день, месяц и год " << endl;
- cin >> chel.b_day >> chel.b_month >> chel.b_year;
- cout << "Введите кафедру, номер груммы и номер зачётки студента " << endl;
- cin >> chel.kaf >> chel.group >> chel.zachetka;
- cout << "Введите количество СЕССИЙ, по которым вы хотите ввести информацию по данному студенту " << endl;
- cin >> chel.sess_co;
- for (int i = 0; i < chel.sess_co; i++) {
- cout << "Введите количество предметов в "<< chel.sess_co<< " сессии, по которым вы хотите ввести данные этой сессии " << endl;
- cin >> chel.s[i].predm_co;
- for (int j = 0; j < chel.s[i].predm_co; j++) {
- cout << "Введите название предмета, а затем оценку по нему" << endl;
- cin >> chel.s[i].p[j].name >> chel.s[i].p[j].mark;
- }
- }
- }
- cout << "Введёная вами информация сохраняется в файл";
- fwrite(&chel, sizeof(chel), 1, ou);
- fclose(ou);
- cout << "Введённая вами информация была успешно осхранена в файл";
- }
- };
- class read : public virtual f{
- public:
- void f_read() {
- struct student chel;
- fopen_s(&ou, "flilk", "rb");
- fread(&chel, sizeof(chel), 1, ou);
- while (!feof(ou)) {
- cout << " ФИО студента " << chel.im << " " << chel.fam << " " << chel.ot << endl;
- cout << " Дата рождения студента " << chel.b_day << " " << chel.b_month << " " << chel.b_year << endl;
- cout << " Кафедра, номер группы и зачётки " << chel.kaf << " " << chel.group << " " << chel.zachetka << endl;
- cout << " Количество ссесий " << chel.sess_co << endl;
- for (int i = 0; i < chel.sess_co; i++) {
- cout << " Количество предметов данной сессии " << endl;
- cout << chel.s[i].predm_co << endl;
- for (int j = 0; j < chel.s[i].predm_co; j++) {
- cout << "Название предмета и оценка" << endl;
- cout << chel.s[i].p[j].name <<" " << chel.s[i].p[j].mark << endl;
- }
- }
- fread(&chel, sizeof(chel), 1, ou);
- }
- fclose(ou);
- }
- };
- class rewrite : public virtual read {
- public:
- struct student all[1000];
- struct student all_rep[1000];
- struct student chel;
- void f_correst() {
- int count = 0;
- fopen_s(&ou, "flilk", "rb");
- fread(&chel, sizeof(chel), 1, ou);
- while (!feof(ou)) {
- all[count] = chel;
- count++;
- fread(&chel, sizeof(chel), 1, ou);
- }
- cout << "Введите фамилию человека, данные которого вы хотите заменить";
- char temp[100];
- int count_rep=0;
- cin >> temp;
- for (int i = 0; i < count; i++) {
- if (all[i].fam == temp) {
- all[i].pos = i;
- all_rep[count_rep] = all[i];
- count_rep++;
- }
- }
- int temp_numb;
- int numb_replased_stud;
- switch (temp_numb){
- case 0: {
- cout << "Небыло найдено подходящих записей, возвращяю в меню";
- numb_replased_stud = 0;
- goto end;
- }
- case 1: cout << "Был найден всего 1 подходящий студент, вы направлены меню изменения его данных";
- default: {
- cout << "Было найденно " << count_rep << " студент(ов) с такой фамилией, далее будут выведены их ФИО и номера зачёток " << endl;
- for (temp_numb; temp_numb < count_rep; temp_numb++) {
- cout << all_rep[temp_numb].fam << " " << all_rep[temp_numb].im << " " << all_rep[temp_numb].ot << " с номером зачётки " << all_rep[temp_numb].zachetka << endl;
- }
- cout << "Введите номер подходящего ученика для замены данных ";
- cin >> numb_replased_stud;
- }
- }
- choose:
- cout << "--МЕНЮ ИЗМЕНЕИЯ ДАННЫХ СТУДЕНТА--\n Список доступных пунтов для изменения, для выбора подходящего введите его номер ";
- cout << "0 - для выхода из меню";
- cout << "1 - для изменения имени, текущее значение " << all_rep[numb_replased_stud].im;
- cout << "2 - для изменения фамилии, текущее значение " << all_rep[numb_replased_stud].fam;
- cout << "3 - для изменения отчества, текущее значение " << all_rep[numb_replased_stud].ot;
- cout << "4 - для изменения года рождения, текущее значение " << all_rep[numb_replased_stud].b_year;
- cout << "5 - для изменения месяйа рождения, текущее значение " << all_rep[numb_replased_stud].b_month;
- cout << "6 - для изменения дня рождения, текущее значение " << all_rep[numb_replased_stud].b_day;
- cout << "7 - для изменения кафедры, текущее значение " << all_rep[numb_replased_stud].kaf;
- cout << "8 - для изменения группы, текущее значение " << all_rep[numb_replased_stud].group;
- cout << "9 - для изменения номера зачётки, текущее значение " << all_rep[numb_replased_stud].zachetka;
- cout << "10 - для перехода в меню изменения сессий и оценок студента";
- int temp_action;
- cin >> temp_action;
- switch (temp_action) {
- case 0: break;
- case 1: {cout << "Введите новое значение для поля имя "; cin >> all_rep[numb_replased_stud].im; }
- case 2: {cout << "Введите новое значение для поля фамилия "; cin >> all_rep[numb_replased_stud].fam; }
- case 3: {cout << "Введите новое значение для поля отчество "; cin >> all_rep[numb_replased_stud].ot; }
- case 4: {cout << "Введите новое значение для поля год рождения "; cin >> all_rep[numb_replased_stud].b_year; }
- case 5: {cout << "Введите новое значение для поля месяц рождения "; cin >> all_rep[numb_replased_stud].b_month; }
- case 6: {cout << "Введите новое значение для поля день рождения "; cin >> all_rep[numb_replased_stud].b_day; }
- case 7: {cout << "Введите новое значение для поля кафедра "; cin >> all_rep[numb_replased_stud].kaf; }
- case 8: {cout << "Введите новое значение для поля код группы "; cin >> all_rep[numb_replased_stud].group; }
- case 9: {cout << "Введите новое значение для поля номер зачётки "; cin >> all_rep[numb_replased_stud].zachetka; }
- case 10: {
- cout << "-- меню редактирования сессий -- ";
- cout << "Имеются даннные по " << all_rep[numb_replased_stud].sess_co << " числу сессий, введите номер сессии для исправления этой сессии" << endl;
- int temp_sess_rewrite;
- cin >> temp_sess_rewrite;
- cout << "В " << temp_sess_rewrite << " сессии имеются данные по " << all_rep[numb_replased_stud].s[temp_sess_rewrite].predm_co << " предмету(ам), введите номер предмета для изменения его данных" << endl;
- int temp_subj_rewrite;
- cin >> temp_subj_rewrite;
- int temp_action_rewrite;
- start_ww:
- cout << "Введите, что вы хотите изменить в данном предмете" << endl;
- cout << "0 - для выхода из данного меню" << endl;
- cout << "1 - название предмета, текущее " << all_rep[numb_replased_stud].s[temp_sess_rewrite].p[temp_subj_rewrite].name << endl;
- cout << "2 - отметка по предмету, текущая " << all_rep[numb_replased_stud].s[temp_sess_rewrite].p[temp_subj_rewrite].mark << endl;
- cin >> temp_action_rewrite;
- switch (temp_action_rewrite) {
- case 0: break;
- case 1: {cout << "Введите новое название предмета "; cin >> all_rep[numb_replased_stud].s[temp_sess_rewrite].p[temp_subj_rewrite].name; }
- case 2: {cout << "Введите новую отметку по предмету "; cin >> all_rep[numb_replased_stud].s[temp_sess_rewrite].p[temp_subj_rewrite].mark; }
- default: {cout << "Вы ввели что-то не то, возвращаю вас на момент ввода, или нажмите 0 для выхода " << endl; goto start_ww; }
- }
- }
- default: {cout << "Вы неверно введи номер действия, введите его заново или введите 0 для выхода"; goto choose; }
- }
- end:
- }
- };
- int main()
- {
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- read func;
- func.switcher_in();
- while (func.key != 'e') {
- switch (func.key) {
- case 'k': {func.f_in(); break; }
- case 'r': func.f_read();
- }
- func.switcher_in();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement