Скачиваний:
97
Добавлен:
02.05.2014
Размер:
601.72 Кб
Скачать

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

Соседние файлы в папке Курсовая работа - База данных Сооружения аэропорта