
Программирование на C / C++ / Курсовая работа - База данных Сооружения аэропорта / Курсовая
.pdf
case '1': view(base);break; case '2': edit(base);break; case '3': add(base);break; case '4': delet(base);break; case '5': find(base);break; case '6': sort(base);break; case '7': exit(0); break; default: exit(0);
}}
void sort(char *base){ clrscr();
textcolor(5);
cprintf("Please select field:\r\n1.Naimenovanie 2.Ploshad 3.Etagnost 4.God soorugeniya 5.Zena\n6.Back to menu");
do ch=getch(); while((ch!='1')&&(ch!='2')&&(ch!='3')&&(ch!='4')&&(ch!='5')&&(ch!='6')); switch (ch){
case '1': sort1();break; case '2': sort2();break; case '3': sort3();break; case '4': sort4();break; case '5': sort5();break; case '6': open(base);break; default: exit(0);} textcolor(15);save(base);
cprintf("\r\nSorting...OK! View base"); getch();open(base);}
void sort1(){ int i,j;
for (i=0; i<size; i++) for (j=0; j<size; j++)
if (strcmp(list[j].na,list[j+1].na)>0) replace(j);
}
void sort2(){ int i,j;
for (i=0; i<size; i++) for (j=0; j<size; j++)
if (list[j].pl<list[j+1].pl) replace(j);}
void sort3(){ int i,j;
for (i=0; i<size; i++) for (j=0; j<size; j++)
if (list[j].et<list[j+1].et) replace(j);}
void sort4(){ int i,j;
for (i=0; i<size; i++) for (j=0; j<size; j++)
if (list[j].ye<list[j+1].ye) replace(j);}
void sort5(){ int i,j;
for (i=0; i<size; i++) for (j=0; j<size; j++)
if (list[j].ze<list[j+1].ze) replace(j);}
21

void replace(int x){ strcpy(tmp.na,list[x].na); tmp.pl=list[x].pl;tmp.et=list[x].et; tmp.ye=list[x].ye;tmp.ze=list[x].ze; strcpy(list[x].na,list[x+1].na); list[x].pl=list[x+1].pl;list[x].et=list[x+1].et; list[x].ye=list[x+1].ye;list[x].ze=list[x+1].ze; strcpy(list[x+1].na,tmp.na); list[x+1].pl=tmp.pl;list[x+1].et=tmp.et; list[x+1].ye=tmp.ye;list[x+1].ze=tmp.ze; strcpy(tmp.na, ""); tmp.pl=0;tmp.et=0;tmp.ye=0;tmp.ze=0;}
void find(char *base){ clrscr();
textcolor(5);cprintf("Please enter find record:\r\n"); printf("Naimenovanie: ");cin.getline(tmp.na,30); printf("Ploshad (m^2): ");scanf("%f",&tmp.pl); printf("Etagnost: ");scanf("%u",&tmp.et); printf("God soorugeniya: ");scanf("%u",&tmp.ye); printf("Zena (mln. rub.): ");scanf("%f",&tmp.ze); char *css;int t=0;
for (;t<=strlen(tmp.na);t++){
css=strchr (tmp.na,' '); if (css) *(css)='_';} int j=0,i=0;
for (;j<=size;j++) if
((strcmp(tmp.na,list[j].na)==0)||(tmp.pl==list[j].pl)||(tmp.et==list[j].et)||(tmp.ye==list[j].ye)||(tmp.ze
==list[j].ze)){
strcpy(fin[i].na,list[j].na);
fin[i].pl=list[j].pl;fin[i].et=list[j].et;
fin[i].ye=list[j].ye;fin[i].ze=list[j].ze;
fin[i].id=list[j].id;i++;} fs=--i;
strcpy(tmp.na, ""); tmp.pl=0;tmp.et=0;tmp.ye=0;tmp.ze=0; getch();
textcolor(tab);int z,l,p=0;clrscr();
cout<<char(201); for(z=1; z<=3; z++)cout<<char(205); cout<<char(203); for(z=1; z<=20; z++)cout<<char(205); cout<<char(203); for(z=1; z<=15; z++)cout<<char(205); cout<<char(203); for(z=1; z<=4; z++)cout<<char(205); cout<<char(203); for(z=1; z<=15; z++)cout<<char(205); cout<<char(203); for(z=1; z<=15; z++)cout<<char(205); cout<<char(187)<<"\n";
cout<<char(186); textcolor(zag); cprintf("%3s","ID"); textcolor(tab); cout<<char(186); textcolor(zag); cprintf("%20s","Name"); textcolor(tab); cout<<char(186); textcolor(zag); cprintf("%15s","Plosad"); textcolor(tab); cout<<char(186); textcolor(zag); cprintf("%4s","Etag"); textcolor(tab); cout<<char(186); textcolor(zag); cprintf("%15s","Year"); textcolor(tab); cout<<char(186); textcolor(zag); cprintf("%15s","Zena"); textcolor(tab); cout<<char(186)<<"\n";
cout<<char(204); for(l=1; l<=3; l++)cout<<char(205); cout<<char(206); for(l=1; l<=20; l++)cout<<char(205); cout<<char(206); for(l=1; l<=15; l++)cout<<char(205); cout<<char(206); for(l=1; l<=4; l++)cout<<char(205); cout<<char(206); for(l=1; l<=15; l++)cout<<char(205); cout<<char(206); for(l=1; l<=15; l++)cout<<char(205); cout<<char(185)<<"\n";
for(z=0; z<=fs; z++){
22

cout<<char(186); textcolor(tex); cprintf("%3u",fin[z].id);textcolor(tab); cout<<char(186); textcolor(tex); cprintf("%20s", fin[z].na);textcolor(tab); cout<<char(186); textcolor(tex); cprintf("%15.2f", fin[z].pl);textcolor(tab); cout<<char(186); textcolor(tex); cprintf("%4u", fin[z].et);textcolor(tab); cout<<char(186); textcolor(tex); cprintf("%15u", fin[z].ye);textcolor(tab); cout<<char(186); textcolor(tex); cprintf("%15.2f", fin[z].ze);textcolor(tab); cout<<char(186)<<"\n";
if (z<=(fs-1)){ cout<<char(204);
for(l=1; l<=3; l++)cout<<char(205); cout<<char(206); for(l=1; l<=20; l++)cout<<char(205); cout<<char(206); for(l=1; l<=15; l++)cout<<char(205); cout<<char(206); for(l=1; l<=4; l++)cout<<char(205); cout<<char(206); for(l=1; l<=15; l++)cout<<char(205); cout<<char(206); for(l=1; l<=15; l++)cout<<char(205); cout<<char(185)<<"\n";} p++;
if (p==10){ p=0;getch();}} cout<<char(200);
for(z=1; z<=3; z++)cout<<char(205); cout<<char(202); for(z=1; z<=20; z++)cout<<char(205); cout<<char(202); for(z=1; z<=15; z++)cout<<char(205); cout<<char(202); for(z=1; z<=4; z++)cout<<char(205); cout<<char(202); for(z=1; z<=15; z++)cout<<char(205); cout<<char(202); for(z=1; z<=15; z++)cout<<char(205); cout<<char(188)<<"\n"; getch();open(base);}
void delet(char *base){ clrscr();int i,j;
textcolor(1);cprintf("ID: ");scanf("%u",&i);--i; if (i==size) --size;else{
for (j=i;j<size;j++){ strcpy(list[j].na,list[j+1].na); list[j].pl=list[j+1].pl; list[j].et=list[j+1].et; list[j].ye=list[j+1].ye; list[j].ze=list[j+1].ze; }--size;}
textcolor(4);cprintf("\r\nDelete record %u...OK!\r\n",i+1); getch();save(base);open(base);}
void edit(char *base){ clrscr();int i;
textcolor(1);cprintf("ID: ");scanf("%u",&i);--i; cprintf("\r\nOLD:\r\n"); printf("Naimenovanie : %30s\n",list[i].na); printf("Ploshad (m^2) : %30.2f\n",list[i].pl); printf("Etagnost : %30u\n",list[i].et); printf("God soorugeniya : %30u\n",list[i].ye); printf("Zena (mln. rub.): %30.2f\n",list[i].ze); cprintf("\r\nNEW:\r\n");
printf("Naimenovanie: ");cin.getline(tmp.na,30); printf("Ploshad (m^2): ");scanf("%f",&tmp.pl); printf("Etagnost: ");scanf("%u",&tmp.et); printf("God soorugeniya: ");scanf("%u",&tmp.ye); printf("Zena (mln. rub.): ");scanf("%f",&tmp.ze); char *css;int t=0;
for (;t<=strlen(tmp.na);t++){
css=strchr (tmp.na,' '); if (css) *(css)='_';} strcpy(list[i].na,tmp.na);
23

list[i].pl=tmp.pl;list[i].et=tmp.et;
list[i].ye=tmp.ye;list[i].ze=tmp.ze; strcpy(tmp.na, ""); tmp.pl=0;tmp.et=0;tmp.ye=0;tmp.ze=0; save(base);getch();open(base);}
void view(char *base){ textcolor(tab);int z,l,p=0;clrscr();
cout<<char(201); for(z=1; z<=3; z++)cout<<char(205); cout<<char(203); for(z=1; z<=20; z++)cout<<char(205); cout<<char(203); for(z=1; z<=15; z++)cout<<char(205); cout<<char(203); for(z=1; z<=4; z++)cout<<char(205); cout<<char(203); for(z=1; z<=15; z++)cout<<char(205); cout<<char(203); for(z=1; z<=15; z++)cout<<char(205); cout<<char(187)<<"\n";
cout<<char(186); textcolor(zag); cprintf("%3s","ID"); textcolor(tab); cout<<char(186); textcolor(zag); cprintf("%20s","Name"); textcolor(tab); cout<<char(186); textcolor(zag); cprintf("%15s","Plosad"); textcolor(tab); cout<<char(186); textcolor(zag); cprintf("%4s","Etag"); textcolor(tab); cout<<char(186); textcolor(zag); cprintf("%15s","Year"); textcolor(tab); cout<<char(186); textcolor(zag); cprintf("%15s","Zena"); textcolor(tab); cout<<char(186)<<"\n";
cout<<char(204); for(l=1; l<=3; l++)cout<<char(205); cout<<char(206); for(l=1; l<=20; l++)cout<<char(205); cout<<char(206); for(l=1; l<=15; l++)cout<<char(205); cout<<char(206); for(l=1; l<=4; l++)cout<<char(205); cout<<char(206); for(l=1; l<=15; l++)cout<<char(205); cout<<char(206); for(l=1; l<=15; l++)cout<<char(205); cout<<char(185)<<"\n";
for(z=0; z<=size; z++){
cout<<char(186); textcolor(tex); cprintf("%3u",list[z].id);textcolor(tab); cout<<char(186); textcolor(tex); cprintf("%20s", list[z].na);textcolor(tab); cout<<char(186); textcolor(tex); cprintf("%15.2f", list[z].pl);textcolor(tab); cout<<char(186); textcolor(tex); cprintf("%4u", list[z].et);textcolor(tab); cout<<char(186); textcolor(tex); cprintf("%15u", list[z].ye);textcolor(tab); cout<<char(186); textcolor(tex); cprintf("%15.2f", list[z].ze);textcolor(tab); cout<<char(186)<<"\n";
if (z<=(size-1)){ cout<<char(204);
for(l=1; l<=3; l++)cout<<char(205); cout<<char(206); for(l=1; l<=20; l++)cout<<char(205); cout<<char(206); for(l=1; l<=15; l++)cout<<char(205); cout<<char(206); for(l=1; l<=4; l++)cout<<char(205); cout<<char(206); for(l=1; l<=15; l++)cout<<char(205); cout<<char(206); for(l=1; l<=15; l++)cout<<char(205); cout<<char(185)<<"\n";} p++;
if (p==10){ p=0;getch();}} cout<<char(200);
for(z=1; z<=3; z++)cout<<char(205); cout<<char(202); for(z=1; z<=20; z++)cout<<char(205); cout<<char(202); for(z=1; z<=15; z++)cout<<char(205); cout<<char(202); for(z=1; z<=4; z++)cout<<char(205); cout<<char(202); for(z=1; z<=15; z++)cout<<char(205); cout<<char(202); for(z=1; z<=15; z++)cout<<char(205); cout<<char(188)<<"\n"; getch();open(base);}
void add(char *base){ clrscr();
FILE *f=fopen(base,"a");
24

textcolor(15);
printf("Naimenovanie: ");cin.getline(tmp.na,30); printf("Ploshad (m^2): ");scanf("%f",&tmp.pl); printf("Etagnost: ");scanf("%u",&tmp.et); printf("God soorugeniya: ");scanf("%u",&tmp.ye); printf("Zena (mln. rub.): ");scanf("%f",&tmp.ze); char *css;int t=0;
for (;t<=strlen(tmp.na);t++){
css=strchr (tmp.na,' '); if (css) *(css)='_';} size++;
strcpy(list[size].na,tmp.na);
list[size].pl=tmp.pl;
list[size].et=tmp.et;
list[size].ye=tmp.ye;
list[size].ze=tmp.ze; strcpy(tmp.na, ""); tmp.pl=0;tmp.et=0; tmp.ye=0;tmp.ze=0; fclose(f); save(base); open(base);
}
void save(char *base){ int j=0;
FILE *f=fopen(base,"w");
fprintf(f,"%s %1.2f %u %u %1.2f", list[j].na, list[j].pl, list[j].et, list[j].ye, list[j].ze); for (j=1;j<=size;j++)
fprintf(f,"\n%s %1.2f %u %u %1.2f", list[j].na, list[j].pl, list[j].et, list[j].ye, list[j].ze); fclose(f);
}
void load(char *base){ int j=0;
FILE *f=fopen(base,"r"); while(!feof(f)){
fscanf(f,"%s %f %u %u %f", &tmp.na , &tmp.pl, &tmp.et, &tmp.ye, &tmp.ze); if (strcmp(tmp.na,"")!=0){
strcpy(list[j].na,tmp.na);
list[j].pl=tmp.pl;
list[j].et=tmp.et;
list[j].ye=tmp.ye;
list[j].ze=tmp.ze;
list[j].id=j+1;
j++;} strcpy(tmp.na, ""); tmp.pl=0;tmp.et=0;
tmp.ye=0;tmp.ze=0;} size=--j;fclose(f);}
25

4. Тестирование:
На рисунке 1 представлено главное меню программы, которое позволяет осуществить открытие базы данных, создание базы данных или выход из программы.
Рис 1. – Главное меню программы
На рисунке 2 представлено меню программы для работы с БД, позволяющее открытие, редактирование, поиск и сортировку базы данных
Рис 2. – Меню выбора различных действий для работы с базой данных
На рисунке 3 осуществлён просмотр базы данных
Рис 3. – Просмотр базы данных
26

На рисунке 4 представлена процедура редактирования БД
Рис 4. – Изменение записи в базе
На рисунке 5 представлен результат поиска в БД
Рис 5. – Результаты поиска
На рисунке 6 представлен процесс сортировки БД
Рис 6. – Сортировка
27
Заключение:
В ходе выполнения курсовой работы разработана программа на языке Си для обработки данных типа структура. Обработка данных включает:
9создания новой БД
9просмотр существующей БД
9редактирование БД
9дополнение БД
9удаление записей из БД
9сортировка БД по определённому полю
9поиск записи по одному или нескольким критериям Также в программе разработана графическая заставка.
При разработке программе использовались функции, массивы, циклы, указатели. Для реализации заставки использовалась графическая библиотека Си.
Разработанная программа позволяет повысить эффективность обработки данных и сократить время на поиск необходимых записей.
28