проходимо від початку списку до потрібного місця
for (int i=1; i lt; index; i ++) {
current=current- gt; next;
}
//обнуляем пов'язані з елементно покажчики
current- gt; prev- gt; next=current- gt; next; gt; next- gt; prev=current- gt; prev;
//видаляємо елементcurrent;
//зменшуємо розмір -;
};
}
//функція отримання елемента зі списку
user_data amp; get (int index) {_user_data * current=first;
//проходимо по циклу до потрібного елемента
for (int i=0; i lt; index; i ++) {= current- gt; next;
}
//повертаємо вміст узлаcurrent- gt; data;
}
//розмір спіскаget_size () {
//повертаємо розмір списку;
}
//функція роздруківки () {
//якщо розмір дорівнює 0, то виводимо попередження
if (size == 0) {( cls ); ( Спісокпуст! n );
} else {
//інакше малюємо красиву таблицю, проходять в циклі по всьому списку
node_user_data * current=first; i=1; ( cls ); ( # |% - 15s |% - 15s |% - 6s |% - 10s | n raquo ;, Логін raquo ;, Пароль raquo ;, Права raquo ;, laquo;Активностьraquo;);(laquo;-----|-----------------|-----------------|--------|------------|nraquo;);(current !=NULL) {_data user=current- gt; data; (% - 3d |% - 15s |% - 15s |% - 6s |% - 10s n raquo ;, i, user.login, user.password, user.rights, .active? Так raquo ;: Ні ); ++;=current- gt; next;
}(laquo;-----|-----------------|-----------------|--------|------------|nraquo;);
}
}
//функція очищення спіскаclear () {
//якщо є що очищати (size gt; 0) {
//в циклі викликаємо функцію видалення за індексом
for (int i=1; i lt;=size; i ++) {(i);
}
}
}
};
# include lt; stdlib.h gt;
# include lt; stdio.h gt;
# include lt; conio.h gt;
# include lt; locale.h gt;
# include lt; Windows.h gt;
# include lt; direct.h gt;
# include student.h
# include user_data.h
# include student_list.h
# include user_data_list.h
//оголошення списку зі студентамі_list stud_list;
//вибір імені файлу * choose_file ();
//читання списку зі студентами з файлу
void read_file (char * filename);
//запис списку зі студентами в файл
void write_file (char * filename);
//функція для додавання студента в спісокadd_student ();
//зміна студента зі списку
voidchange_student ();
//удаленія_student ();
//виводу на екран
voidprint_student ();
//функція авторизації
boolauthorize (char * rights) {
//створення структури з одними даними
user_data auth;
//ініціалізаціяее.init (rights);
//введення логіна.enter_login ();
//введення пароля.enter_password ();
//відкриття файлу з одними даними і обчислення його розміру
FILE * file_user_data=fopen ( users.bin raquo ;, rb ); (file_user_data, 0, SEEK_END); num_users=ftell (file_user_data)/sizeof (user_data); (file_user_data, 0, SEEK_SET); (int i=0; i lt; num_users; i ++) {
user_data user;
//читання даних з файлу
fread ( amp; user, sizeof (user_data), 1, file_user_data);
//якщо збігаються логіни, права доступу, паролі та запису не забанена, то закриваємо файл і повертаємо true
if (strcmp (auth.login, user.login) == 0 amp; amp; strcmp (auth.rights, user.rights) == 0
amp; amp; strcmp (auth.password, user.password) == 0 amp; amp; user.active == true) {(file_user_data); true;
}