Мне 4е-то никто никак не может помо4ь=))) Нужно написать простенькую базу данных: Написать программу с использование структуры, содержащую следующие функции: основная, создания записи (клавиша 1), вывод записей на экран монитора в виде таблицы (клавиша 2), сортировка по заданному полю (клавиша 3), поиск по ключу (клавиша 4) Количество записей – 10. Выход из программы осуществляется нажатием клавиши ESC. Поля: номер по списку, название музея, продолжительность экскурсии (в часах), начало экскурсии (в часах), цена билета (в рублях), количество человек в группе. Сортировка записей по количеству человек в группе (поле - количество человек в группе). Ключ поиска – заданное количество человек в группе. Написала прогу, НО есть глюк с поиском(после поиска зна4ения искомого элемента изменяются на ваще непонятные, а если поискать и вывести другой элемент они опять восстанавливаются......4удеса в решете=))))) и нет сортировки................. Помогите пожалуйста!!!!!! О4ень прошу....... Вот прога: | Код | #include <stdio.h> #include <string.h> #include <conio.h> #include <stdlib.h>
struct Excursion { char MuseumName[30]; int TimeForExcursion; int Beginning; int Price; int Koli4tstvoLudei; struct Excursion *prior; //ykazatel na predidywiy element spiska struct Excursion *next; //ykazatel na sled. element spiska } st[10]; const int M=10; struct control { int nb; //4islo zaniatix elementov int nf; //4islo svobiodnix elementov struct Excursion *bbeg; //na4alo spiska zaniatix elementov struct Excursion *bend; //konec spiska zaniatix struct Excursion *fbeg; //na4alo spiska svobodnix elementov struct Excursion *fend; //konec spiska svobodnix elementov } ctrl; int init(void); int input(void); int poisk(void); //int sortirovka(void); int print(void); struct Excursion *find(int PCount);
void main(void) { clrscr(); printf("Baza dannix EKSKYRSII\n"); printf("Najmite lubyiu klaviwy\n"); getch(); clrscr();
init(); char command; while(1) {
printf("1.Vvod svedeniy o ekskyrsii\n"); printf("2.Vivod soderjimogo\n"); printf("3.sortirovka po kol-vy 4elovek v gryppe\n"); printf("4.Poisk po zadannomy 4isly 4elovek v gryppe\n"); printf("\nVvedite nomer pynkta menu\n"); char command; command=getch(); switch (command) { case '1': input(); clrscr(); break; case '2': clrscr(); print(); break; case '3': //sortirovka(); break; case '4': poisk(); break;
case 27: return; default: printf("\n\nNeverniy pynkt menu\n\n"); } } }
int init(void) { struct Excursion *point=st; int i; ctrl.nb=0; ctrl.nf=0; ctrl.bbeg=NULL; ctrl.bend=NULL; ctrl.fbeg=st; ctrl.fend=st; point=st; for (i=0;i<M-1;i++) { if (ctrl.nf!=0) { point -> prior=point-1; point -> next =point+1; } else { point -> prior=NULL; point -> next=point+1; } point++; ctrl.nf++; ctrl.fend++; } ctrl.nf++; point -> prior=point-1; point -> next=NULL; return 0; }
int input(void) { struct Excursion *ptr; printf("\n\n \n"); if (ctrl.nf==0) { printf("Svobodnix elementov net\n"); return -1; } ptr=ctrl.fbeg; printf("Vvedite Imia Myzeja \n"); scanf("%s",ctrl.fbeg->MuseumName); printf("Vvedite vremia ekskyrsii \n"); scanf("%d",&ptr->TimeForExcursion); printf("Vvedite vremia na4ala ekskyrsii \n"); scanf("%d",&ptr->Beginning); printf("Vvedite ceny v rybliax\n"); scanf("%d",&ptr->Price); printf("Vvedite kol-vo lydei \n"); scanf("%d",&ptr->Koli4tstvoLudei); if (ctrl.nf==1) { ctrl.fbeg=NULL; ptr->next=NULL; ptr->prior=ctrl.bend; ctrl.bend->next=ptr; ctrl.bend=ptr; ctrl.fend=NULL; } else { if (ctrl.nb==0) ctrl.bbeg=ptr; ctrl.fbeg=ptr->next; ptr->next=NULL; ptr->prior=ctrl.bend; ctrl.bend->next=ptr; ctrl.bend=ptr; ctrl.fbeg->prior=NULL; } ctrl.nb++; ctrl.nf--; return 0; } int print(void) { int i; struct Excursion *ptr; ptr=ctrl.bbeg; printf("Baza:\n\n"); if (ctrl.nb==0) { printf("V baze net zapisei\n\n"); return -1; } for (i=0;i<ctrl.nb;i++) { printf("%d MuseumName: %s\n",(i+1),ptr->MuseumName); printf(" vremia ekskyrsii: %d\n",ptr->TimeForExcursion); printf(" vremia na4ala: %d\n",ptr->Beginning); printf(" Cena: %d\n",ptr->Price); printf(" Kol-vo lydei %d\n",ptr->Koli4tstvoLudei); ptr=ptr->next; } printf("\n\n Vsego zapisei=%d\n\n",i); return 0; }
struct Excursion *find(int PCount) { int i; struct Excursion *ptf; ptf=ctrl.bbeg; for (i=0;i<ctrl.nb;i++) //nb - 4islo zaniatix elementov { if( PCount==ptf->Koli4tstvoLudei) return ptf; else ptf=ptf->next; } return NULL; }
int poisk(void) { int PCount; int i; struct Excursion *ptr; if (ctrl.nb==0) { printf("\nV baze net zapisei\n\n"); return -1; } printf("Vvedite 4islo ludei dlia poiska: \n"); scanf("%d", &PCount); if ((ptr=find(PCount))==0) { printf("Ni4ego ne naideno\n"); return -1; } if (ptr==ctrl.bbeg) { if (ctrl.nb==1) { printf(" MuseumName: %s\n",ptr->MuseumName); printf(" vremia ekskyrsii: %d\n",ptr->TimeForExcursion); printf(" vremia na4ala: %d\n",ptr->Beginning); printf(" Cena: %d\n",ptr->Price); printf(" Kol-vo lydei %d\n",ptr->Koli4tstvoLudei); return 0; } else { ctrl.bbeg=ptr->next; printf(" MuseumName: %s\n",ptr->MuseumName); printf(" vremia ekskyrsii: %d\n",ptr->TimeForExcursion); printf(" vremia na4ala: %d\n",ptr->Beginning); printf(" Cena: %d\n",ptr->Price); printf(" Kol-vo lydei %d\n",ptr->Koli4tstvoLudei); return 0; }} else {if (ptr==ctrl.bend) {printf(" MuseumName: %s\n",ptr->MuseumName); printf(" vremia ekskyrsii: %d\n",ptr->TimeForExcursion); printf(" vremia na4ala: %d\n",ptr->Beginning); printf(" Cena: %d\n",ptr->Price); printf(" Kol-vo lydei %d\n",ptr->Koli4tstvoLudei); ctrl.bend=ptr->prior; return 0; } else { ptr->prior->next=ptr->next; ptr->next->prior=ptr->prior; return 0; }}}
|
|