Форум программистов, компьютерный форум CyberForum.ru

Поисковая система библиотечного архива - C++

Восстановить пароль Регистрация
 
Wirus
Сообщений: n/a
02.11.2008, 13:15     Поисковая система библиотечного архива #1
посмотрите пожалуйста прогу ни си она почему - то глючит:

код poisk.h:

Код
#ifndef POISK_H
#define POISK_H


struct book
{
char avtor[30];
char nazvanie[30];
char izdatelstvo[30];
int god;
int koll;
char janr[30];
};

int i, j, year, number;
char bukva[256];
extern book books1[500];

bool kniguadd(book *books);
void knigudele(book *books);
void knigavtorobzor(book *books);
void janrobzorknig(book *books);
void knigjanr_godobzor(book *books);

#endif
код poisk.cpp:

Код
#include "poisk.h"
#include <stdlib.h>
#include <stdio.h>
#include "stdafx.h"


FILE *pFile;

bool add_knigu(book *books)
{
j++;
pFile = fopen ( "bd.txt", "a+t" ); 
if ( pFile != NULL )
{
printf("vvod avora\n");
scanf("%s",&(books+j)->avtor);
printf("vvod nazvaniya\n");
scanf("%s",&(books+j)->nazvanie);
printf("vvod izdatelstva\n");
scanf("%s",&(books+j)->izdatelstvo);
printf("vvod janra\n");
scanf("%s",&(books+j)->janr);
printf("vvod goda\n");
scanf("%s",&(books+j)->god);
printf("vvod kollichestva stranic\n");
scanf("%s",&(books+j)->koll);
fprintf(pFile, "#%d-kniga#\n",j);
fprintf(pFile,"%s\n", &(books+j)->avtor);
fprintf(pFile,"%s\n", &(books+j)->nazvanie);
fprintf(pFile,"%s\n", &(books+j)->izdatelstvo);
fprintf(pFile,"%s\n", &(books+j)->janr);
fprintf(pFile,"%d\n", &(books+j)->god);
fprintf(pFile,"%d\n\n\n", &(books+j)->koll);
printf("dannie v faile!\n\n");
fclose(pFile);
return true;
}
else
{
return false;
}
}

bool dele_knigu(book *books) 
{
pFile = fopen ( "bd.txt", "a+t" );
if ( pFile != NULL )
{
if(j>-1)
{
printf("vvedite nomer knigi\n");
scanf("%d", &number);
for(i=0;i<256;i++)
(books+number)->avtor[i]=NULL;

for(i=0;i<256;i++)
(books+number)->nazvanie[i]=NULL;

for(i=0;i<256;i++)
(books+number)->izdatelstvo[i]=NULL;

(books+number)->god=NULL;

(books+number)->koll=NULL;

for(i=0;i<256;i++)
(books+number)->janr[i]=NULL;
j--;
}
else
{
printf("arxiw pust\n\n");
return 0;
}

fclose(pFile);
return true;
}
else
{
return false;
}
}


bool obzor_knig_avtor(book *books) \\ в этой функции ещё не сделано обращение к файлу и вынос из него данных по определённой книге не знаю как???
{
pFile = fopen ( "bd.txt", "w+t" );
if ( pFile != NULL )
{
int index, flag;
char awtor[256];
printf("vvedite avtora\n");
scanf("%s", &awtor); 
flag = 0;
for (i=0;i<=500;i++)
{
for (index = 0; index < 256; index++)

if (awtor[index] != (books+i)->avtor[index])

{

flag = 1;

break;

}

if (flag != 1)

fscanf(pFile, "%s\n", &(books+index)->avtor);
fscanf(pFile, "%s\n", &(books+index)->nazvanie);
fscanf(pFile, "%s\n", &(books+index)->izdatelstvo);
fscanf(pFile, "%s\n", &(books+index)->janr);
fscanf(pFile, "%d\n", &(books+index)->god);
fscanf(pFile, "%d\n\n", &(books+index)->koll);
}
fclose(pFile);
return true;
}
else
{
return false;
}
}

bool obzor_knig_janr(book *books) \\ в этой функции ещё не сделано обращение к файлу и вынос из него данных по определённой книге не знаю как???
{ 
pFile = fopen ( "bd.txt", "w+t" ); //проверяем, смогли ли мы открыть файл для записи
if ( pFile != NULL )
{

int index, flag;
char janr[256];
printf("vvedite janr\n");
scanf("%s", &janr); 
flag = 0;
for (i=0;i<=500;i++)
{
for (index = 0; index < 256; index++)

if (janr[index] != (books+i)->janr[index])

{

flag = 1;

break;

}

if (flag != 1)

fscanf(pFile, "%s\n", &(books+index)->avtor);
fscanf(pFile, "%s\n", &(books+index)->nazvanie);
fscanf(pFile, "%s\n", &(books+index)->izdatelstvo);
fscanf(pFile, "%s\n", &(books+index)->janr);
fscanf(pFile, "%d\n", &(books+index)->god);
fscanf(pFile, "%d\n\n", &(books+index)->koll);
}
fclose(pFile);
return true;
}
else
{
return false;
}
}

bool obzor_knig_janr_god(book *books) \\ в этой функции ещё не сделано обращение к файлу и вынос из него данных по определённой книге не знаю как???
{ 
pFile = fopen ( "bd.txt", "w+t" );
if ( pFile != NULL )
{

int index, flag;
char janr[256];
printf("vvedite janr\n");
scanf("%s", &janr); 
printf("vvedite god\n");
scanf("%d", &year);
flag = 0;
for (i=0;i<=500;i++)
{
for (index = 0; index < 256; index++)

if (janr[index] != (books+i)->janr[index])

{

flag = 1;

break;

}

if (flag != 1)
if ((books+i)->god == year)
{
fscanf(pFile, "%s\n", &(books+index)->avtor);
fscanf(pFile, "%s\n", &(books+index)->nazvanie);
fscanf(pFile, "%s\n", &(books+index)->izdatelstvo);
fscanf(pFile, "%s\n", &(books+index)->janr);
fscanf(pFile, "%d\n", &(books+index)->god);
fscanf(pFile, "%d\n\n", &(books+index)->koll);
}
}
fclose(pFile);
return true;
}
else
{
return false;
}
}
код main.cpp:

Код
#include <stdlib.h>
#include <stdio.h>
#include "stdafx.h"
#include "poisk.cpp"

void main()
{
int mode;
struct book knigi;
while (1)
{ 
printf("v archive %d knig\n",j);
printf("viberite operaciu\n");
printf("1 dobavit knigu\n");
printf("2 udalit knigu\n");
printf("3 vidat spisok knig avtora\n");
printf("4 vidat knigi ukazannogo janra\n");
printf("5 vidat knigi janra v dannom periode\n");
printf("0 exit\n");


scanf("%d",&mode);

switch(mode)
{
case 1 : add_knigu(&knigi); break;
case 2 : dele_knigu(&knigi); break;
case 3 : obzor_knig_avtor(&knigi); break;
case 4 : obzor_knig_janr(&knigi); break;
case 5 : obzor_knig_janr_god(&knigi); break;
case 0 : return; break;
default : printf("nevernii vvod\n"); break;
} 
}
}

спасибо заранее!!!

задание проги:

условие задачи: написать прогу чтобы она работала как поисковая система библиотечного архива
ввод описания книги в проге должно быть:
-автор
-издательство
-год
-колл-во страниц
-жанр
(всё с клавы)
________________________
(основная проблема)-->>
с функциями поиска:
- найти книги автора(с клавы ввод)
- найти книги жанра(с клавы ввод)
- найти книги по жанру и определённого года издания(с клавы ввод)
p.s. : колл-во книг любое
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2008, 13:15     Поисковая система библиотечного архива
Посмотрите здесь:

Извлечение файлов из SFX-архива в указанную папку C++
Создание своего архива и работа с ним C++
C++ Система уравнений
C++ Создание ZIP архива
Распаковка архива C++
C++ 16-ричная система
C++ экспертная система
C++ В чём различие заголовочного и библиотечного файла в C++?
C++ Распаковка zip-архива средствами С++
C++ Создание архива rar/zip на C++
Система плагинов C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 04:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru