|
Разработка базы данных для расписания занятий
Разработка базы данных для расписания занятий
МГТУ имени БауманаПояснительная записка по курсовому проекту на тему:”Разработка базы данных для расписания занятий”МОСКВА 2006Содержание1. Введение1.1 Постановка задачи1.2 Описание работы2. Алгоритмы используемые в процессе выполнения проекта3. Приложение4. Литература1. Введение1.1 Постановка задачиЗадачей данной курсовой работы является написание базы данных применимой для расписания занятий в университете. Программа реализована на языках программирования “C++”.База данных содержит список предметов. С расписанием занятий ведётся такая основная работа как: a. ввод новой записи b. изменение базы данных c. просмотр базы данных d. поиск данных и т.д. 1.2 Описание работыРеализация базы данных включает в себя следующие компоненты:- Вводиться группа, подгруппа,- Вводятся неделя, день недели и время- Вводятся предмет и фамилия преподавателя- Выбирается аудитория2. Алгоритмы используемые в процессе выполнения проектаВ данной программе использовались стандартные приемы программирования, характерные для написания баз данных. Использовался структурный тип для описания одной записи: struct zap { char fio_teacher[20]; int n_pdgrup; char n_audit[6]; char predmet[10]; struct ti { int n_ned; char den_ned[11]; struct wat { int fst_time,scd_time; }watch; }time; char n_group[6]; }; struct spisok { zap zip[1]; struct spisok *a; }; Поиск записи происходит по следующему алгоритму: void outzap() { int h,time_zip,time_zip_end,time_zill,x_up,p; char chose; textbackground(BLACK); window(1,1,80,23); clrscr(); textcolor(WHITE); window(27,5,50,20); if (kolzap==0) { puts("Записей нет!"); getche(); exit(0); } window(1,1,80,23);gotoxy(10,3); gotoxy(27,6); puts("Введите группу:"); scanf("%s",zill[1].n_group); gotoxy(27,7); puts("Введите подгруппу:"); scanf("%d",zill[1].n_pdgrup); gotoxy(27,8); puts("Введите неделю:"); scanf("%d",zill[1].time.n_ned); gotoxy(27,9); puts("Введите день недели:"); scanf("%s",zill[1].time.den_ned); gotoxy(20,10); puts("Вывести расписание на день или по времени(y/n)"); chose=getche(); switch (chose) { case 'y': { u2=u1; clrscr(); x_up=5; p=0; while (u2!=NULL) { if ((u2->zip[1].n_group==zill[1].n_group)&&(u2->zip[1].n_pdgrup==zill[1].n_pdgrup)&& (u2->zip[1].time.n_ned==zill[1].time.n_ned)&&(u2->zip[1].time.den_ned==zill[1].time.den_ned)) { gotoxy(20,x_up); if (u2->zip[1].time.watch.scd_time<10) printf("%d",u2->zip[1].time.watch.fst_time,":0",u2->zip[1].time.watch.scd_time); else printf("%d",u2->zip[1].time.watch.fst_time,":",u2->zip[1].time.watch.scd_time); gotoxy(27,x_up); printf("%s",u2->zip[1].predmet); gotoxy(39,x_up); printf("%s",u2->zip[1].n_audit); x_up=x_up+1; p=1; } u2=u2->a; } if (p==0) { gotoxy(20,6); puts("Возможно группа задана неверно или у нее нет пар."); } scanf("%d",&a); getche(); exit(0); } case 'n': при нажатии клавиши “n” запись ищется по времени. 3. Приложение #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<io.h> FILE *f; typedef char arr_string[7][25]; struct zap { char fio_teacher[20]; int n_pdgrup; char n_audit[6]; char predmet[10]; struct ti { int n_ned; char den_ned[11]; struct wat { int fst_time,scd_time; }watch; }time; char n_group[6]; }; struct spisok { zap zip[1]; struct spisok *a; }; struct zap zill[1]; struct spisok *sled,*u1,*u2,*pred,*pred2; int i,j,col_pr,col_pn,kolzap,l,pl,b; char kbd,kod,yes,a; char dg[20],fm[20],filename[20]; int p; arr_string s,d; void outdone(); void menu(); void newzap(); void delzap(); void outzap(); //----------------------------------------------------------------------------- void schet() { kolzap=0; u2=u1; while (u2!=NULL) { kolzap=kolzap+1; u2=u2->a; } } //------------------------------------------------------------------------------------- void formir_spisok() { u1=NULL; u2=NULL; if (!feof(f)) exit(0); u1=(struct spisok *)malloc(sizeof(struct spisok)); fread(u1->zip,sizeof u1->zip,1,f); u1->a=NULL; u2=u1; while (feof(f)!=0) { u2->a=(struct spisok *)malloc(sizeof(struct spisok)); u2=u2->a; fread(u2->zip,sizeof u1->zip,1,f); u2->a=NULL; } pred=u2; fclose(f); } //------------------------------------------------------------------------------ void menudiag() { textbackground(BLACK); window(1,1,80,23); clrscr(); textbackground(BLACK); window(27,5,47,5); textbackground(RED); textcolor(GREEN); printf(d[1]); window(27,7,47,7); textbackground(BLACK); textcolor(GREEN); printf(d[2]); window(27,9,47,9); textbackground(BLACK); textcolor(GREEN); printf(d[3]); i=5;j=1;p=1; col_pr=GREEN; col_pn=RED; } //------------------------------------------------------------------------------- void quit() { outdone(); exit(0); } //--------------------------------------------------------------------------- void quit2() { exit(0); } //--------------------------------------------------------------------------- void move_line(int kol_proced,void (*proced)(),void (*proced1)(),void (*proced2)(),void (*proced3)(),void (*proced4)(), arr_string string_arr) { proced(); do { kbd=getche(); if ((kbd!=27)&&(kbd!=13)&&(kbd!=0)) { kbd=getche(); switch (kbd) { case 72: { window(27,i,47,i); textbackground(BLACK); textcolor(col_pr); clreol(); printf("%s",string_arr[j]); if (i==5) { i=5+kol_proced*2-2; j=kol_proced; } else { i=i-2; j=j-1; } window(27,i,47,i); textbackground(col_pn); textcolor(col_pr); clreol(); printf("%s",string_arr[j]); } case 80: { window(27,i,47,i); textbackground(BLACK); textcolor(col_pr); clreol(); printf("%s",string_arr[j]); if (i==5+kol_proced*2-2) { i=5; j=1; } else { i=i+2; j=j+1; } window(27,i,47,i); textbackground(col_pn); textcolor(col_pr); clreol(); printf("%s",string_arr[j]); } } } switch (kbd) { case 27:exit(0); case 13:{ switch (j) { case 1:proced1(); case 2:proced2(); case 3:proced3(); case 4:{ proced4(); exit(0); } } proced(); } } }while (p==0); } //---------------------------------------------------------------------------------- void open() { textbackground(BLACK); window(1,1,80,23); clrscr(); textbackground(BLACK); window(20,5,78,5); clrscr(); gotoxy(20,5); textcolor(WHITE); printf("Введите путь и имя файла:"); gets(filename); if((f=fopen(filename,”wb"))==NULL) { textbackground(BLACK); window(1,1,80,23); clrscr(); gotoxy(27,5); textcolor(WHITE); printf("Файл отсутствует!"); getche(); exit(0); } formir_spisok(); schet(); move_line(4,menu,newzap,outzap,delzap,quit,s); } //---------------------------------------------------------------------------------- void newfile() { textbackground(BLACK); window(1,1,80,23); clrscr(); textbackground(BLACK); window(20,5,78,5); clrscr(); gotoxy(20,5); textcolor(WHITE); printf("Введитe путь и имя файла:"); gets(filename); f=fopen(filename,"wb"); formir_spisok(); schet(); move_line(4,menu,newzap,outzap,delzap,quit,s); } //------------------------------------------------------------------------------- void menu() { textbackground(BLACK); clrscr(); textbackground(BLACK); window(27,5,46,5); textbackground(RED); textcolor(GREEN); puts(s[1]); window(27,7,46,7); textbackground(BLACK); textcolor(GREEN); puts(s[2]); window(27,9,46,9);puts(s[3]); window(27,11,46,11);puts(s[4]); window(27,13,46,13);puts(s[5]); window(27,15,46,15);puts(s[6]); window(27,17,46,17);puts(s[7]); window(27,5,46,5); i=5;j=1;p=1; col_pr=GREEN; col_pn=RED; } //---------------------------------------------------------------------------------- void newzap() { char a; if (kolzap==0) { u1=(struct spisok *)malloc(sizeof(struct spisok)); textbackground(BLACK); window(1,1,80,23); clrscr(); textcolor(WHITE); gotoxy(27,5); puts("Заполните новую запись"); gotoxy(27,6); puts("Введите группу:"); scanf("%s",zill[1].n_group); gotoxy(27,7); puts("Введите подгруппу:"); scanf("%d",&zill[1].n_pdgrup); gotoxy(27,8); puts("Введите неделю:"); scanf("%d",zill[1].time.n_ned); gotoxy(27,9); puts("Введите день недели:"); scanf("%s",zill[1].time.den_ned); gotoxy(27,10); puts("Введите время: :"); gotoxy(41,10); a=getche(); printf("%d",a); b=(ord(a)-48)*10; gotoxy(42,10); a=getche(); printf("%d",a); b=b+(ord(a)-48); zill[1].time.watch.fst_time=b; gotoxy(44,10); a=getche(); printf("%d",a); b=(ord(a)-48)*10; gotoxy(45,10); a=getche(); printf("%d",a); b=b+(ord(a)-48); zill[1].time.watch.scd_time=b; gotoxy(27,12); puts("Введите предмет:"); scanf("%s",zill[1].predmet); gotoxy(27,13); puts("Введите фамилию преподавателя:"); scanf("%s",zill[1].fio_teacher); gotoxy(27,14); puts("Введите аудиторию:"); scanf("%s",zill[1].n_audit); u1->zip[1]=zill[1]; u1->a=NULL; u2=u1; pred=u1; } else { textbackground(BLACK); window(1,1,80,23); clrscr(); textcolor(WHITE); gotoxy(27,5); puts("Заполните новую запись"); gotoxy(27,6); puts("Введите группу:"); scanf("%s",zill[1].n_group); gotoxy(27,7); puts("Введите подгруппу:"); scanf("%d",zill[1].n_pdgrup); gotoxy(27,8); puts("Введите неделю:"); scanf("%d",zill[1].time.n_ned); gotoxy(27,9); puts("Введите день недели:"); scanf("%s",zill[1].time.den_ned); gotoxy(27,10); puts("Введите время: :"); gotoxy(41,10); a=getche(); printf("%d",a); b=(ord(a)-48)*10; gotoxy(42,10); a=getche(); printf("%d",a); b=b+(ord(a)-48); zill[1].time.watch.fst_time=b; gotoxy(44,10); a=getche(); printf("%d",a); b=(ord(a)-48)*10; gotoxy(45,10); a=getche(); printf("%d",a); b=b+(ord(a)-48); zill[1].time.watch.scd_time=b; gotoxy(27,12); puts("Введите предмет:"); scanf("%s",zill[1].predmet); gotoxy(27,13); puts("Введите фамилию преподавателя:"); scanf("%s",zill[1].fio_teacher); gotoxy(27,14); puts("Введите аудиторию:"); scanf("%s",zill[1].n_audit); u2=pred; u2->a=(struct spisok *)malloc(sizeof(struct spisok)); u2=u2->a; u2->zip[1]=zill[1]; u2->a=NULL; pred=u2; } kolzap=kolzap+1; } //--------------------------------------------------------------------------------- void delzap() { int h,x,y,p; char c,key,a; textbackground(BLACK); window(1,1,80,23); clrscr(); textcolor(WHITE); window(1,1,80,23); if (kolzap==0) { gotoxy(27,6); puts("Записей нет!"); getche(); exit(0); } gotoxy(27,6); puts("Введите группу:"); scanf("%s",zill[1].n_group); gotoxy(27,7); puts("Введите подгруппу:"); scanf("%d",zill[1].n_pdgrup); gotoxy(27,8); puts("Введите неделю:"); scanf("%d",zill[1].time.n_ned); gotoxy(27,9); puts("Введите день недели:"); scanf("%s",zill[1].time.den_ned); gotoxy(27,10); puts("Введите время: :"); gotoxy(41,10); a=getche();printf("%d",a);b=(ord(a)-48)*10; gotoxy(42,10); a=getche();printf("%d",a);b=b+(ord(a)-48); zill[1].time.watch.fst_time=b; gotoxy(44,10); a=getche();printf("%d",a);b=(ord(a)-48)*10; gotoxy(45,10); a=getche();printf("%d",a);b=b+(ord(a)-48); zill[1].time.watch.scd_time=b; gotoxy(27,12); puts("Введите предмет:"); scanf("%s",zill[1].predmet); gotoxy(27,13); puts("Введите фамилию преподавателя:"); scanf("%s",zill[1].fio_teacher); gotoxy(27,14); puts("Введите аудиторию:"); scanf("%s",zill[1].n_audit); u2=u1; pred2=u2; p=0; while ((u2!=NULL)&&(p==0)) { if ((u2->zip[1].n_group==zill[1].n_group)&&(u2->zip[1].n_pdgrup==zill[1].n_pdgrup)&& (u2->zip[1].time.n_ned==zill[1].time.n_ned)&&(u2->zip[1].time.den_ned==zill[1].time.den_ned)&& (u2->zip[1].time.watch.fst_time==zill[1].time.watch.fst_time)&&(u2->zip[1].time.watch.scd_time==zill[1].time.watch.scd_time)&& (u2->zip[1].predmet==zill[1].predmet)&&(u2->zip[1].fio_teacher==zill[1].fio_teacher)&& (u2->zip[1].n_audit==zill[1].n_audit)) { p=1; gotoxy(10,20); puts("Вы хотели бы изменить или удалить запись?(y-изменить/n-удалить):"); c=getche(); switch (c) { case 'y':{ clrscr(); gotoxy(10,2); puts("Для изменения нажмите клавишу Y, далее-клавишу N : "); x=wherex(); y=wherey(); gotoxy(10,4); puts("Не забывайте переключать раскладку клавиатуры (Англ\Рус)"); gotoxy(15,6); printf("Группа:%s",zill[1].n_group); gotoxy(x,y); key=getche(); if ((key=='y')||(key=='н')||(key=='Y')||(key=='Н')) { gotoxy(15,6); puts("Группа: "); gotoxy(22,6); scanf("%s",u2->zip[1].n_group); } gotoxy(x-1,y); puts(" "); gotoxy(15,7); printf("Подгруппа:%s",zill[1].n_pdgrup); gotoxy(x,y); key=getche(); if ((key=='y')||(key=='н')||(key=='Y')||(key=='Н')) { gotoxy(15,7); puts("Подгруппа: "); gotoxy(25,7); scanf("%d",&u2->zip[1].n_pdgrup); } gotoxy(x-1,y); puts(" "); gotoxy(15,8); printf("Неделя:%d",zill[1].time.n_ned); gotoxy(x,y); key=getche(); if ((key=='y')||(key=='н')||(key=='Y')||(key=='Н')) { gotoxy(15,8); puts("Неделя: "); gotoxy(22,8); scanf("%d",&u2->zip[1].time.n_ned); } gotoxy(x-1,y); puts(" "); gotoxy(15,9); printf("День недели:%s",zill[1].time.den_ned); gotoxy(x,y); key=getche(); if ((key=='y')||(key=='н')||(key=='Y')||(key=='Н')) { gotoxy(15,9); puts("День недели: "); gotoxy(27,9); scanf("%s",u2->zip[1].time.den_ned); } gotoxy(x-1,y); puts(" "); gotoxy(15,10); if (zill[1].time.watch.scd_time<10) printf("Время:%d",zill[1].time.watch.fst_time,":0%d",zill[1].time.watch.scd_time); else printf("Время:%d",zill[1].time.watch.fst_time,":%d",zill[1].time.watch.scd_time); gotoxy(x,y); key=getche(); if ((key=='y')||(key=='н')||(key=='Y')||(key=='Н')) { gotoxy(15,10); puts("Время: : "); gotoxy(21,10); a=getche();printf("%d",a); b=(ord(a)-48)*10; gotoxy(22,10); a=getche();printf("%d",a); b=b+(ord(a)-48); u2->zip[1].time.watch.fst_time=b; gotoxy(24,10); a=getche(); printf("%d",a); b=(ord(a)-48)*10; gotoxy(25,10); a=getche(); printf("%d",a); b=b+(ord(a)-48); u2->zip[1].time.watch.scd_time=b; } gotoxy(x-1,y); puts(" "); gotoxy(15,11); printf("Предмет:%s",zill[1].predmet); gotoxy(x,y); key=getche(); if ((key=='y')||(key=='н')||(key=='Y')||(key=='Н')) { gotoxy(15,11); puts("Предмет: "); gotoxy(23,11); scanf("%s",u2->zip[1].predmet); } gotoxy(x-1,y); puts(" "); gotoxy(15,12); printf("Фамилия преподавателя:%S",zill[1].fio_teacher); gotoxy(x,y); key=getche(); if ((key=='y')||(key=='н')||(key=='Y')||(key=='Н')) { gotoxy(15,12); puts("Фамилия преподователя: "); gotoxy(37,12); scanf("%s",u2->zip[1].fio_teacher); } gotoxy(x-1,y); puts(" "); gotoxy(15,13); printf("Аудитория:%s",zill[1].n_audit); gotoxy(x,y); key=getche(); if ((key=='y')||(key=='н')||(key=='Y')||(key=='Н')) { gotoxy(15,13); puts("Аудитория: "); gotoxy(25,13); scanf("%s",u2->zip[1].n_audit); } } case 'n': { if (kolzap==1) { free(u2); u1=NULL; u2=NULL; kolzap=kolzap-1; exit(0); } if (kolzap!=1) { h=1;u2=u1; while (u2!=NULL) { if ((u2->zip[1].n_group==zill[1].n_group)&&(u2->zip[1].n_pdgrup==zill[1].n_pdgrup)&&(u2->zip[1].time.n_ned==zill[1].time.n_ned)&&(u2->zip[1].time.den_ned==zill[1].time.den_ned)&& (u2->zip[1].time.watch.fst_time==zill[1].time.watch.fst_time)&&(u2->zip[1].time.watch.scd_time==zill[1].time.watch.scd_time)&&(u2->zip[1].predmet==zill[1].predmet)&&(u2->zip[1].fio_teacher==zill[1].fio_teacher)&& (u2->zip[1].n_audit==zill[1].n_audit)) { sled=u2->a; free(u2); if (h==1) { u1=sled; kolzap=kolzap-1; exit(0); } if (sled==NULL) { pred2->a=NULL; pred=pred2; kolzap=kolzap-1; exit(0); } pred2->a=sled; kolzap=kolzap-1; exit(0); } pred2=u2; h=h+1; u2=u2->a; } } } } } u2=u2->a; } if (p==0) { gotoxy(27,15); puts("Такой записи нет!"); getche(); exit(0); } } //--------------------------------------------------------------------------------- void outzap() { int h,time_zip,time_zip_end,time_zill,x_up,p; char chose; textbackground(BLACK); window(1,1,80,23); clrscr(); textcolor(WHITE); window(27,5,50,20); if (kolzap==0) { puts("Записей нет!"); getche(); exit(0); } window(1,1,80,23);gotoxy(10,3); gotoxy(27,6); puts("Введите группу:"); scanf("%s",zill[1].n_group); gotoxy(27,7); puts("Введите подгруппу:"); scanf("%d",zill[1].n_pdgrup); gotoxy(27,8); puts("Введите неделю:"); scanf("%d",zill[1].time.n_ned); gotoxy(27,9); puts("Введите день недели:"); scanf("%s",zill[1].time.den_ned); gotoxy(20,10); puts("Вывести расписание на день или по времени(y/n)"); chose=getche(); switch (chose) { case 'y': { u2=u1; clrscr(); x_up=5; p=0; while (u2!=NULL) { if ((u2->zip[1].n_group==zill[1].n_group)&&(u2->zip[1].n_pdgrup==zill[1].n_pdgrup)&& (u2->zip[1].time.n_ned==zill[1].time.n_ned)&&(u2->zip[1].time.den_ned==zill[1].time.den_ned)) { gotoxy(20,x_up); if (u2->zip[1].time.watch.scd_time<10) printf("%d",u2->zip[1].time.watch.fst_time,":0",u2->zip[1].time.watch.scd_time); else printf("%d",u2->zip[1].time.watch.fst_time,":",u2->zip[1].time.watch.scd_time); gotoxy(27,x_up); printf("%s",u2->zip[1].predmet); gotoxy(39,x_up); printf("%s",u2->zip[1].n_audit); x_up=x_up+1; p=1; } u2=u2->a; } if (p==0) { gotoxy(20,6); puts("Возможно группа задана неверно или у нее нет пар."); } scanf("%d",&a); getche(); exit(0); } case 'n': { gotoxy(20,10);puts(" "); gotoxy(27,10);puts("Введите время: :"); gotoxy(41,10);a=getche();printf("%d",a);b=(ord(a)-48)*10; gotoxy(42,10);a=getche();printf("%d",a);b=b+(ord(a)-48); zill[1].time.watch.fst_time=b; gotoxy(44,10);a=getche();printf("%d",a);b=(ord(a)-48)*10; gotoxy(45,10);a=getche();printf("%d",a);b=b+(ord(a)-48); zill[1].time.watch.scd_time=b; u2=u1;h=1; time_zill=zill[1].time.watch.fst_time*60; time_zill=time_zill+zill[1].time.watch.scd_time; while (u2!=NULL) { if ((u2->zip[1].n_group==zill[1].n_group)&&(u2->zip[1].n_pdgrup==zill[1].n_pdgrup)&& (u2->zip[1].time.n_ned==zill[1].time.n_ned)&&(u2->zip[1].time.den_ned==zill[1].time.den_ned)) { time_zip=u2->zip[1].time.watch.fst_time*60; time_zip=time_zip+u2->zip[1].time.watch.scd_time; time_zip_end=time_zip+90; if ((time_zill>=time_zip)&&(time_zill<=time_zip_end)) { gotoxy(27,12); printf("Предмет:%s",u2->zip[1].predmet); gotoxy(27,13); printf("Фамилия преподователя:%s",u2->zip[1].fio_teacher); gotoxy(27,14); printf("Аудитория:%s",u2->zip[1].n_audit); scanf("%d",&a); getche(); exit(0); } } u2=u2->a; } gotoxy(20,14); puts("Вероятно у группы нет пары в это время"); scanf("%d",a); getche(); } } } //-----------------------запись записи в файл------------------------------ void outdone() { f=fopen(filename,"wb"); u2=u1; while (u2!=NULL) { fwrite(u2->zip,sizeof u2->zip,1,f); u1=u2->a; free(u2); u2=u1; } fclose(f); } //------------------------------------------------------------------------------- void main() { move_line(3,menudiag,open,newfile,quit2,quit2,d); } 4. Литература 1. Березин Б.И., Березин С.Б. Б48 Начальный курс С и С++. - М.: ДИАЛОГ-МИФИ, 2000.-288 с. 2. Франка П. Ф83 С++: учебный курс - СПб: ЗАО ”Издательство ”Питер”, 1999. - 528 с.: ил.
|
|