База данных "Студенты"
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
?ия библиотек необходимых для работы определенных функций.
#include - для работы с файлами, структурами и функциями.
#include - для функции strcmp().
#include - для функции очистки экрана. [4].
Определение глобальных объектов: структурного типа, указателей структуры, массив структур.
struct student
{name[20];inik[4];curs;fak[5];jobname[20];job[9];usp;student *prior;student *next;
}[100];int M=100;control
{nb;nf;student *bbeg;student *bend;student *fbeg;student *fend;
} ctrl;
Связь все элементов массива структур в список свободных элементов и установка начальных значений управляющих переменных.
int init(void)
{student *point=st;i;.nb=0;.nf=0;.bbeg=NULL;.bend=NULL;.fbeg=st;.fend=st;=st;("---------------------------");("|inicializacia massiva|");
printf("-----------------------------\n\n\n");(i=0;i<M-1;i++)
{(ctrl.nf!=0)
{-> prior=point-1;-> next=point+1;
}
{-> prior=NULL;-> next=point+1;
}++;.nf++;.fend++;
}.nf++;->prior=point-1;-> next=NULL;0;
}fr(struct student *ptr)
{(ctrl.nb==M)
{>prior=NULL;>next=NULL;.fbeg->prior=ptr;.fbeg=ptr;
}
prior=NULL;>next=ctrl.fbeg;.fbeg->prior=ptr;.fbeg=ptr;">{>prior=NULL;>next=ctrl.fbeg;.fbeg->prior=ptr;.fbeg=ptr;
}.nb--;.nf++;
return 0;
}
Возвращение свободного элемента в список свободных элементов.
int fr(struct student *ptr)
Выполняется действия по поиску нужного элемента в списке. Аргументом поиска элемента является фамилия студента. Для сравнения строк (фамилия, введенная терминала, и фамилия в структуре) используется стандартная библиотечная функция strcmp(), параметры которой являются указатели на сравниваемые строки.
struct student *find(char *nam)
{i;student *ptf;
ptf=ctrl.bbeg;(i=0;i<ctrl.nb;i++)
{((strcmp(nam,ptf->name))==0)ptf;=ptf->next;
}NULL;
}
Поиск нужного элемента в списке занятых элементов и удаление найденного элемента (возврат элемента в список свободных элементов).
int delet (void)
{nam[20];
int i;student *ptr;("--------------------------");("|Funkcia udalenia elementa|");("---------------------------\n");(ctrl.nb==0)
{("Spicok zaniatih elementov pust\n");-1;
}("Vvedite Familiu:\n");("%s",nam);((ptr=find(nam))==0)
{("Familia ne neidena\n");
return -1;
}(ptr==ctrl.bbeg)
{(ctrl.nb==1)
{.bend=NULL;(ptr);0;
}
{.bbeg=ptr->next;.bbeg->prior=NULL;(ptr);0;
}
}
{(ptr==ctrl.bend)
{>prior->next=NULL;.bend=ptr->prior;(ptr);0;
}
{>prior->next=ptr->next;>next->prior=ptr->prior;
fr(ptr);0;
}
}
}
Вставка нового элемента в список занятых элементов. Ввод сведений о новом студенте: фамилия, имя, отчество, курс, факультет, название специальности, код группы, успеваемость. Подключение элемента к списку занятых элементов.
int input(void)
{
struct student *ptr;
printf("-------------------------");("|funkcia vstavki elemntov |");("----------------------------\n\n");(ctrl.nf==0)
{("Svobodnih elementov net\n");
return -1;
name);("Vvediteiniciali:");("%s",ptr->inik);("Vveditecurs:");("%d",&ptr->curs);("Vveditefakultet:");("%s",ptr->fak);("Vveditenaimenovaniespecialnosti:");("%s",ptr->jobname);("Vveditecodgruppi:");("%s",ptr->job);("Vvediteuspevaemost:");("%d",&ptr->usp);(ctrl.nf==1)">} {= ctrl.fbeg;("Vvedite familiu:");(" %s",ptr->name);("Vvedite iniciali:");(" %s",ptr->inik);("Vvedite curs:");(" %d",&ptr->curs);("Vvedite fakultet:");(" %s",ptr->fak);("Vvedite naimenovanie specialnosti:");(" %s",ptr->jobname);("Vvedite cod gruppi:");(" %s",ptr->job);("Vvedite uspevaemost:");(" %d",&ptr->usp);(ctrl.nf==1)
next=NULL;>prior=ctrl.bend;.bend->next=ptr;.bend=ptr;.fend=NULL;">{.fbeg=NULL;>next=NULL;>prior=ctrl.bend;.bend->next=ptr;.bend=ptr;.fend=NULL;
}
next;>next=NULL;>prior=ctrl.bend;.bend->next=ptr;.bend=ptr;.fbeg->prior=NULL;">{(ctrl.nb==0).bbeg=ptr;.fbeg=ptr->next;>next=NULL;>prior=ctrl.bend;.bend->next=ptr;.bend=ptr;.fbeg->prior=NULL;
}.nb++;.nf--;0;
} }
Печать занятых элементов структуры.
int print(void)
{i;student *ptr;=ctrl.bbeg;(" DATEBASE \"STUDENT\"\n\n");(ctrl.nb==0)
{(" __________________\n");("|Baza dannih pusta|\n");(" ------------------\n\n\n");-1;
}("________________________________________________________________________________");("|NO| Familia | I.O |Kurs|Fakultet| Sprcialnost | Kod |Uspevaemost|");("| | | | | | | | |");("|--|-----------------|-----|----|--------|----------------|--------|-----------|");(i=0;i<ctrl.nb;i++)
{("|| s|",i+1,ptr->name);(" %4s|",ptr->inik);(" |",ptr->curs);(" %5s|",ptr->fak);(" s|",ptr->jobname);(" %7s|",ptr->job);(" |",ptr->usp);("|--|-----------------|-----|----|--------|----------------|--------|-----------|");=ptr->next;
}("\n Obshee chislo zapisei = %d\n",i);
return 0;
}
Запись в файл на диске всех элементов массива структур. Открытие файла для записи.
int save(void)
{i,k;student *ptr;*c;*pti;*fl;((fl=fopen("bdd.txt","w"))==NULL)
Загрузка из файла всего массива структур. Открытие файла для чтения.load(void)
{i;student *ptr;*pti;*c,d;*fl;((fl=fopen("bdd.txt","r"))==NULL)
Поиск студента по фамилии. Поиск нужного элемента в списке занятых элементов. Печать найденного элемента.
int postav (void)
{fam[20];i;
struct student *ptr;("----------------------------");("|Funkcia poiska studenta|");("---------------------------\n");(ctrl.nb==0)
{("Spicok zaniatih elementov pust\n");-1;
}("Vvedite Familiu:\n");("%s",fam);((ptr=find(fam))==0)
{("\nFamilia ne neidena\n");
return -1;
}(ptr==ctrl.bbeg)
{(ctrl.nb==1)
{(" Student naiden\n");("_____________________________________________________________________________\n");("| Familia | I.O |Kurs|Fakultet| Sprcialnost | Kod |Uspevaemost|\n");("| | | | | | | |\n");("|-----------------|-----|----|--------|----------------|--------|-----------|\n");("| s|",ptr->name);(" %4s|",ptr->inik);(" |",ptr->curs);(" %5s|",ptr->fak);(" s|",ptr->jobname);(" %7s|",ptr->job);(" |\n",ptr->usp);("|-----------------|-----|----|--------|----------------|--------|-----------|\n\n");
}
Механизм управления базой данных с помощью меню. Вывод меню на экран. Ввод и обработка номера работы программы.
void main(void)
{numb[10];();(1)
{("\t MENU \n");("\t______________________________________\n");("\t|1| Vvod svedenii o novom sotrudnike |\n");("\t|-|----------------------------------|\n");("\t|2| Udalenie svedenii o sotrudnike |\n");("\t|-|----------------------------------|\n");("\t|3| Pechat soderjimogo bazi dannih |\n");("\t|-|----------------------------------|\n");("\t|4| Sohranenie bazi dannih v fail |\n");("\t|-|----------------------------------|\n");("\t|5| Zagruzka bazi dannih iz faila |\n");
printf("\t|-|----------------------------------|\n");("\t|6| Inicializacia bazi dannih |\n");("\t|-|----------------------------------|\n");("\t|7| Poisk studenta |\n");("\t|-|------