е меню ( cls );
printf ( Робота відбувається з файлом% s n raquo ;, filename); ( 1) Вибрати файл для роботи з даними n ); ( 2) Переглянути всі записи n ); ( 3) Виконати завдання n ); ( 4) Пошук і фільтрація даних n ); ( 0) Вихід з облікового запису n );
printf ( gt ;: ); (stdin); (% c raquo ;, amp; ch);
switch (ch)
{ 1 :
//якщо вибрали змінити файл, то записуємо зміни в старий
write_file (filename);
//вибираємо новий (filename, choose_file ());
//читаємо дані з нового
read_file (filename);
if (filename) {( Файлу спішно відкрито! n ); ( pause );
} else {
( Виникли проблеми з файлом. Спробуйте знову! n ); ( pause );
}
break;
//у всіх інших випадках виклик відповідних функцій
case laquo;2raquo;:_student();;laquo;3raquo;:_listplete_target();(laquo;pauseraquo;);;laquo;4raquo;:{(laquo;clsraquo;);(laquo;1) НайтіпоФ.І.О. N );
printf ( 2) Відфільтрувати по групі n ); ( 3) Знайти по П.І.Б. і групі n );
printf ( 0) Вийти n ); ( gt ;: ); (stdin); (% c raquo ;, amp; k); (k) {laquo;1raquo;:_list.filter_name();(laquo;pauseraquo;);;laquo;2raquo;:_list.filter_group();(laquo;pauseraquo;);;laquo;3raquo;:_list.filter_name_group();(laquo;pauseraquo;);;:;
};
} while (k!= 0 ) ;;:
break;
}
} while (ch!= 0 );
//запис змін при виході з меню
write_file (filename);
} main () {(LC_ALL, Russian ); symbol;
do
{
//меню першого рівня ( cls ); ( 1) Увійти як адміністратор n ); ( 2) Увійти як користувач n );
printf ( 0) Вихід n ); ( gt ;: ); (% c raquo ;, amp; symbol);
switch (symbol)
{ 1 :
//якщо авторизація пройшла, то меню адміна, інакше попередження
if (authorize ( admin )) {_admin ();
} else {( cls ); ( Перевірте комбінацію логіна і пароля! n ); ( pause );
}; 2 :
//якщо авторизація пройшла, то меню адміна, інакше попередження
if (authorize ( user )) {_user ();
} else {( cls ); ( Перевірте комбінацію логіна і пароля! n ); ( pause );
};:;
}
} while (symbol!= 0 );
}
//вибір імені файлу * choose_file () {filename [25];
system ( cls ); ( Введіть назву файлу. Якщо такого файлу не існує, то буде створено новий! n ); ( Максимальна довжина імені файлу 25 символів! n ); ( gt ;: ); (stdin);
//fgets для контролю переповнення
fgets (filename, 25, stdin); [strlen (filename) - 1]= 0 raquo ;;
//відкриваємо файл для дозаписи, якщо його не було, то він буде створений
FILE * file=fopen (filename, ab ); (file);
//повертаємо ім'я файлаfilename;
}
//читання даних з файлаread_file (char * filename) {
//відкриття файлу * file=fopen (filename, rb );
//очистка спіска_list.clear ();
//ініціалізація після очісткі_list.init ();
//обчислення кількості записів у файлі (file, 0, SEEK_END);
int size=ftell (file)/sizeof (student); (file, 0, SEEK_SET); (int i=0; i lt; size; i ++) {stud;
//читання з файлу ( amp; stud, sizeof (student), 1, file);
//додавання в спісок_list.add_back (stud);
}
//закриття файлу (file);
}
//запис у файл
void write_file (char * filename) {
//відкриття для запису зі знищенням вмісту
FILE * file=fopen (filename, wb ); (int i=1; i lt;=stud_list.get_size (); i ++) {
// достаемелементізспсіка stud=stud_list.get (i);
//записуємо його у файл ( amp; stud, sizeof (student), 1, file);
}
//закриваємо файл (file); (file);
}