Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Borland C++ 3.1] База данных, глюки с поиском и прблемы с сортировкой 
V
    Опции темы
Lenysik89
Дата 13.5.2007, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 6.5.2007

Репутация: 2
Всего: 2



Мне 4е-то никто никак не может помо4ь=)))
Нужно написать простенькую базу данных:
Написать программу с использование структуры, содержащую следующие функции: основная, создания записи (клавиша 1), вывод записей на экран монитора в виде таблицы (клавиша 2), сортировка по заданному полю (клавиша 3), поиск по ключу (клавиша 4) Количество записей – 10. Выход из программы осуществляется нажатием клавиши ESC. 
Поля: номер по списку, название музея, продолжительность экскурсии (в часах), начало экскурсии (в часах), цена билета (в рублях), количество человек в группе. Сортировка записей по количеству человек в группе (поле - количество человек в группе). Ключ поиска – заданное количество человек в группе.

Написала прогу, НО есть глюк с поиском(после поиска зна4ения искомого элемента изменяются на ваще непонятные, а если поискать и вывести другой элемент они опять восстанавливаются......4удеса в решете=))))) 
и нет сортировки.................
Помогите пожалуйста!!!!!!
О4ень прошу....... smile 

Вот прога:

Код

#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;
}}}

PM MAIL   Вверх
Lenysik89
Дата 14.5.2007, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 6.5.2007

Репутация: 2
Всего: 2



Вот немножко поформатировала.......

Код

#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("   4tobi viyti najmite ESC\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;
}
}
}



//int sortirovka (void)

PM MAIL   Вверх
Lenysik89
Дата 14.5.2007, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 6.5.2007

Репутация: 2
Всего: 2



Ну спасибо тем, кто 4итал=))))
PM MAIL   Вверх
zkv
Дата 16.5.2007, 02:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 21
Всего: 92



Цитата(Lenysik89 @  14.5.2007,  23:19 Найти цитируемый пост)
Ну спасибо тем, кто 4итал=)))) 

это ирония? те уже не надо ничего? 
PM MAIL   Вверх
Lenysik89
Дата 16.5.2007, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 6.5.2007

Репутация: 2
Всего: 2



Не, правда спасибо!
Я сама справилась!=)))
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0448 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.