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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Nee K
0 / 0 / 0
Регистрация: 21.12.2009
Сообщений: 8
#1

текст - C++

27.12.2009, 23:14. Просмотров 311. Ответов 0
Метки нет (Все метки)

Люди, помогите пожалуйста исправить программу, чтобы она выводила названия книг данного автора в определённый промежуток времени,
написал, выводит по фамилии автора всё остальное
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <locale.h>
 
struct books {
     char lastname[21];
     char bookname[16];
     char releasedate[16];
};
 
void menu();
void add();
void view();
void search();
 
FILE *f;
 
int main()
{
     setlocale(LC_ALL,".1251");
     printf("                                Задача 3.\n"
             "                                                                                "
             "Описание. Дан файл, содержащий сведения о книгах: фамилия автора, название и "
             "год издания. Найти названия всех книг данного автора в определённый год.\n "
             "Реализовать на двоичных файлах с помощью структур данных (struct).\n"
             "                                                                               \n"               
          );
     menu();
     char c;
     while (true) {
          printf("\rВыбери необходимый пункт меню: ");
          c=_getche();
          switch(c) {
               case '1': add(); menu(); break;
               case '2': view(); menu(); break;
               case '3': search(); menu(); break;
               case '0': return 0;
          }
     }
    getch();
}
 
void menu() {
     printf(
          "Меню\n"
          "1. Перезаписать/создать базу данных.\n"
          "2. Посмотреть базу данных.\n"
          "3. Поиск в базе данных.\n"
          "0. Выход.\n"
);
}
 
void add() 
{
     printf( "\n\n---Создание/перезапись базы данных.---------------------------------------------\n" );
     f = fopen( "database.dat", "wb+" );
     if( f == NULL ) {
          printf( "Невозможно открыть файл базы данных, продолжение работы программы невозможно.\n" );
          _getch;
          exit(-1);
     }
     books a;
     char k;
     while( true )  {
          printf( "\rДля продолжения нажми 1, для выхода в меню нажми 0: " );
          k=_getche();
          switch(k) {
               case '1':           fflush(stdin);
                                   printf( "\nВведи год издания: " );
                                   setlocale(LC_ALL,".866");
                                   scanf_s( "%15[^\n]s", a.releasedate, 16 );
                                   setlocale(LC_ALL,".1251");
                                   fflush(stdin);
                                   printf( "Введи фамилию автора: " );
                                   setlocale(LC_ALL,".866");
                                   scanf_s( "%20[^\n]s", a.lastname, 21 );
                                   setlocale(LC_ALL,".1251");
                                   fflush(stdin);
                                   printf( "Введи название книги: " );
                                   setlocale(LC_ALL,".866");
                                   scanf_s( "%15[^\n]s", a.bookname, 16 );
                                   setlocale(LC_ALL,".1251");
                                   fflush(stdin);     
                                   fwrite( &a, sizeof(a), 1, f );
                                   printf( "Запись создана.\n\n" );
                                   break;
               case '0': printf( "\n\n---Создание/перезапись базы данных: завершено-----------------------------------\n" );
                              fclose(f);
                           return;
          }
     }
}
 
void view() 
{
     printf( "\n\n---Просмотр базы данных.--------------------------------------------------------\n" );
     f = fopen( "database.dat", "rb" );
     if( f == NULL ) {
          printf( "Невозможно открыть файл базы данных, продолжение работы программы невозможно.\n" );
          _getch;
          exit(-1);
     }
books a;
     printf( "      Год издания       Фамилия автора            Название книги\n"
               "--------------------------------------------------------------------------------\n"
          );
     while( true )  {
          int n = fread( &a, sizeof(books), 1, f );
          if( n!= 1 ) break;
 
          
          setlocale( LC_ALL, ".866" );
          printf( "       %-20s", a.releasedate);
          printf( "%-26s", a.lastname);
          printf( "%-15s", a.bookname);
          printf( "\n");
          setlocale( LC_ALL, ".1251" );
     }
     fclose(f);
     printf( "\n\n---Просмотр базы данных: завершено----------------------------------------------\n" );
}
 
void search() 
{
     printf( "\n\n---Поиск в базе данных.---------------------------------------------------------\n" );
     f = fopen( "database.dat", "rb" );
     if( f == NULL ) {
          printf( "Невозможно открыть файл базы данных для поиска, продолжение работы программы невозможно.\n" );
          _getch;
          exit(-1);
     }
books a;
char s[21];
 
printf( "Введи фамилию автора для поиска: " );
setlocale(LC_ALL,".866");
scanf_s( "%20s", s, 21 );
printf( "\n");
setlocale(LC_ALL,".1251");
    
setlocale(LC_ALL,".866");
while( true ) {
     if( fread( &a, sizeof(books), 1, f ) !=1 ) break;
          if( strstr( a.lastname, s ) != NULL)
          {
          printf( "%-15s", a.bookname);
          printf( "\n");
          }
     }
setlocale( LC_ALL, ".1251" );
printf( "\n\n---Поиск в базе данных: завершено-----------------------------------------------\n" );
fclose(f);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2009, 23:14     текст
Посмотрите здесь:

текст C++
Разноцветный текст C++
Текст в CodeBlocks C++
C++ Преобразование текст -> двоичный код -> текст
ТЕКСТ C++
C++ Как переопределить текст в исходнике (текст, как идентификатор)?
C++ Отсечь текст
C++ Текст
C++ Как загнать текст из консоли в массив и как загнать текст из файла в массив
C++ Не выводит текст
Зашифровать текст С++ C++
Текст в if C++

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

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

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