Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.68
Galiman
0 / 0 / 0
Регистрация: 23.01.2013
Сообщений: 4
#1

Составить программу, которая содержит текущую информацию о книгах в библиотеке - C++

23.01.2013, 09:40. Просмотров 5347. Ответов 8
Метки нет (Все метки)

Уважаемые форумчане, нужна ваша помощь.
нужно составить программу, которая содержит текущую информацию о книгах в библиотеке.
Сведения о книгах включают:
а)номер УДК
б)фамилию и инициалы автора
в)название
г)год издания
д)количество экземпляров данной книги в библиотеке.
Программа должна обеспечить:
а)начальное формирование данных обо всех книгах в библиотеке в виде списка
б)при выдаче книги на руки вводится номер УДК и программа уменьшает значение количества книг на одну единицу или выдает сообщение, что соответствующей книги в наличии нет
в)при возвращении книги вводится номер УДК и программа увеличивает значение количества книг на одну единицу
г)по запросу выдается список всех книг в библиотеке.
За помощь буду очень благодарен!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2013, 09:40
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Составить программу, которая содержит текущую информацию о книгах в библиотеке (C++):

Составить программу, которая содержит текущую информацию о книгах в библиотеке
Всем добрый вечер, прошу помощи с программой! Не работают функции взятия и...

Составить программу, которая содержит текущую информацию о книгах в библиотеке
1.Составить программу, которая содержит текущую информацию о книгах в...

Динамические структуры данных. Составить программу, которая содержит текущую информацию о книгах в библиотеке
не могу решить Составить программу, которая содержит текущую информацию о...

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

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

Составить программу, которая содержит текущую информацию о заявках на авиабилеты
Помогите пожалуйста! Пишу программу и столкнулся с проблемой! Вот...

8
Shepard90
5 / 5 / 3
Регистрация: 18.10.2010
Сообщений: 140
23.01.2013, 12:31 #2
Было у меня такое задание на лабах... и даже код остался
Писал я тогда по-моему под MS Visual Studio 2008
Не компилил, но тогда все работало
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
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include <iostream>
using namespace std;
const int lim=25;
 
 
 
void getline(char *str,int lim) 
{
    int c,i;
    c=1;
    for(i=0;(i<lim-1) && (c!=(int)'\n');i++) 
    {
        c=getchar();    
        str[i]=c;
    }
        str[i]='\0'; 
}
        
        struct book
    {
        int UDKnumber;
        char autor[lim];
        char bookname[lim];
        long int year;
        int kolvo;
        book* next;
    };
    book* firstbook = new book;
    book* lastbook = firstbook;
    bool isFirst=true;
    
 
    
 
int _tmain(int argc, _TCHAR* argv[])
{
    
    int n,i,c,j,k;
    int zapros;
    char *str;
    printf("Opredelite assortiment biblioteki\n");
    cin>>n;
 
    for(i=0;i<=n-1;i++)
    {
        if(isFirst) isFirst=false;
    else
    {
        lastbook->next=new book;
        lastbook=lastbook->next;
    }
    printf("ZAPIS #%d\n",i+1);
    printf("UDK: ");
    cin>>lastbook->UDKnumber;
    putchar((int)'\n');
    fflush(stdin);
    printf("Autor: ");
    str=&lastbook->autor[0];
    getline(str,lim);
    putchar((int)'\n');
    printf("BookName: ");
    str=&lastbook->bookname[0];
    getline(str,lim);
    putchar((int)'\n');
    printf("Year: ");
    cin>>lastbook->year;
    putchar((int)'\n');
    printf("Kolvo: ");
    cin>>lastbook->kolvo;
    lastbook->next=NULL;    
    }
    for(k=0;k>=0;k++)
    {
        fflush(stdin);
        printf("Vibor operacii\n");
        printf("1-Vidacha knigi 2-Sdacha knigi 3-Zapros o nalichii knig 4-Exit Program\n");
        c=getchar();
        switch(c)
        {
        case '1':
            printf("Vvedite zapros UDK: ");
            cin>>zapros;
            j=0;
            for(book* t=firstbook;t!=NULL;t=t->next)
            {
                if(zapros==t->UDKnumber)
                {
                    if(t->kolvo!=0)
                    {
                        t->kolvo=t->kolvo-1;
                        break;
                    }
                    else 
                    {
                        printf("kniga na danniy moment otsutstvuet\n");
                        break;
                    }
                }
                if(j==n-1) printf("takoy knigi net v biblioteke\n");
                j++;
            }
            break;
        case '2':
            printf("Vvedite zapros UDK: ");
            cin>>zapros;
            j=0;
            for(book* t=firstbook;t!=NULL;t=t->next)
            {
                if(zapros==t->UDKnumber)
                {
                    t->kolvo=t->kolvo+1;
                    break;
                }
                if(j==n-1) printf("takoy knigi net v biblioteke\n");
                t = t->next;
                j++;
            }
            break;
        case '3':
            printf("UDK | AUTOR     | NAMEBOOK    | YEAR | COUNT\n");
            for(book* t=firstbook;t!=NULL;t=t->next)
            {
                printf("%d      ",t->UDKnumber);
                for(i=0;t->autor[i]!=10;i++)
                cout<<t->autor[i];
                cout<<"    ";
                for(i=0;t->bookname[i]!=10;i++)
                cout<<t->bookname[i];
                cout<<"    ";
                printf("%d  ",t->year);
                printf("%d\n",t->kolvo); 
            }
            break;
        case '4':
    
            goto exit;
 
        }
    }
exit:
    delete firstbook;
 
}
1
lemegeton
2933 / 1362 / 467
Регистрация: 29.11.2010
Сообщений: 2,725
23.01.2013, 14:08 #3
Тут недавно делал одному такое же задание. Препод не принял -- задача оказалась с подвохом. Надо было, оказывается, правильно декомпозировать, а не делать прямо по тексту.

Главная проблема в том, что количество книг в хранилище не является свойством книги и нельзя его делать членом класса. Нужно делать отдельную сущность (а-ля DAO), которая уже будет управлять книгами и хранить соответствие "книга"-"её количество".

В общем, две сущности, и несколько операторов для работы с ними.

Задача была на сущности, поэтому пример примитивнейший.
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
#include <iostream>
#include <string>
#include <map>
 
class Book {
 public:
  Book(const std::string &udcCode, const std::string &author,
    const std::string &name, int year) : udcCode(udcCode),
    author(author), name(name), year(year) {}
  const std::string &getUdcCode() const { return udcCode; }
  const std::string &getAuthor() const { return author; }
  const std::string &getName() const { return name; }
  int getYear() const { return year; }
 private:
  std::string udcCode;
  std::string author;
  std::string name;
  int year;
};
 
bool operator==(const Book &a, const Book &b) {
  return (&a == &b) || 
    (a.getUdcCode() == b.getUdcCode() &&
    a.getAuthor() == b.getAuthor() &&
    a.getYear() == b.getYear());
};
 
bool operator!=(const Book &a, const Book &b) {
  return !(a == b);
};
 
bool operator<(const Book &a, const Book &b) {
  if (a.getUdcCode() == b.getUdcCode()) {
    if (a.getAuthor() == b.getAuthor()) {
      if (a.getName() == b.getName()) {
        return a.getYear() < b.getYear();
      } else {
        return a.getName() < b.getName();
      }
    } else {
      return a.getAuthor() < b.getAuthor();
    }
  } else {
    return a.getUdcCode() < b.getUdcCode();
  }
};
 
std::ostream &operator<<(std::ostream &stream, const Book &book) {
  return stream << "Book{" <<
    "udcCode=\"" << book.getUdcCode() << "\"," <<
    "author=\"" << book.getAuthor() << "\"," <<
    "name=\"" << book.getName() << "\"," <<
    "year=" << book.getYear() << "}";
};
 
class Library {
 public:
  typedef std::map<Book, int> StorageType;
  typedef StorageType::iterator Iterator;
  typedef StorageType::const_iterator ConstIterator;
  Library() : books() {}
  void add(const Book &book, int count) {
    books[book] = count;
  }
  int get(const Book &book, int count) {
    if (books[book] < count) {
      count = books[book];
    }
    books[book] -= count;
    return count;
  }
  size_t size() const { return books.size(); }
  ConstIterator begin() const { return books.begin(); }
  Iterator begin() { return books.begin(); }
  ConstIterator end() const { return books.end(); }
  Iterator end() { return books.end(); }
 private:
  StorageType books;
};
 
std::ostream &operator<<(std::ostream &stream, const Library &library) {
  stream << "Library{";
  for (Library::ConstIterator i = library.begin(); i != library.end(); ++i) {
    stream << "{book=" << i->first << ",count=" << i->second << "},";
  }
  return stream << "}";
}
 
int main(int argc, char **argv) {
  Library library;
  
  // добавление книг
  library.add(Book("51-76", "Peace, Green", "Biohazard in Numbers", 2001), 2);
  library.add(Book("51-76", "Peace, Green", "Total Waste", 1987), 1);
  library.add(Book("613.6.015", "Propaganda Department", "Take care of your teeth", 2002), 5);
 
  // вывод всех книг
  std::cout << library << std::endl;
 
  Book aBook = Book("51-76", "Peace, Green", "Total Waste", 1987);
 
  // попытка взять две книги
  std::cout << "Requesting 2x" << aBook << std::endl;
  int count = library.get(aBook, 2);
  if (count > 0) {
    std::cout << "Was able to get " << count << " book(s) of 2 requested." << std::endl;
  } else {
    std::cout << "Was not able to get a book." << std::endl;
  }
  
  // возврат
  std::cout << "Returning " << count << "x" << aBook << std::endl;
  library.add(aBook, count);
  
  return 0;
};
1
Galiman
0 / 0 / 0
Регистрация: 23.01.2013
Сообщений: 4
23.01.2013, 15:27  [ТС] #4
Shepard90,
lemegeton, спасибо большое)
0
Lesik
0 / 0 / 0
Регистрация: 08.01.2013
Сообщений: 5
23.01.2013, 16:53 #5
Shepard90, удаляют( у тебя есть скайп?
0
Crimsoland
0 / 0 / 0
Регистрация: 07.06.2013
Сообщений: 1
10.06.2013, 23:11 #6
хелп плс!(( кому не сложно
Написать программу, которая содержит текущую информацию о книгах в библиотеке. Сведения о книгах включают:
• номер УДК;
• фамилию и инициалы автора;
• название;
• год издания;
• количество экземпляров данной книге в библиотеке.
Программа должна обеспечивать:
• начальное формирование данных обо всех книгах в библиотеке в виде списка;
• добавление данных о книгах, вновь поступивших в библиотеку;
• удаление данных о списываемых книгах;
• по запросу выдаются сведения о наличии книг в библиотеке, упорядоченные по годам издания.

.... йа кран((

Добавлено через 7 минут
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
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
 
using namespace std;
 
struct LIBRARY
{
char nomer[30];
char FIO[30];
char nazvanie[40];
int Year;
int kolvo;
};
 
struct STR
{
LIBRARY *Library;
STR *next;
};
 
STR * create(LIBRARY * Library)
{
STR *root=new STR;
root->Library=Library;
root->next=NULL;
return root;
}
 
void add(LIBRARY *Library, STR* root) 
{
while(root->next)
root=root->next;
root->next=new STR;
root->next->Library=Library;
root->next->next=NULL;
}
 
void printLIBRARY(LIBRARY *Library) //âûâîä Г*Г* ГЅГЄГ°Г*Г* 
{
 
cout<<"Nomer => "<<Library->nomer<<endl;
cout<<"FIO => "<<Library->FIO<<endl;
cout<<"Nazvanie => "<<Library->nazvanie<<endl;
cout<<"Year => "<<Library->Year<<endl;
cout<<"Kolvo => "<<Library->kolvo<<endl; 
cout<<endl;
 
}
LIBRARY * makeLIBRARY() 
{
cout<<"Enter book data:"<<endl;
LIBRARY *Library=new LIBRARY;
fflush(stdin);
cout<<"Enter book nomer: => ";
cin.getline(Library->nomer,30);
 
cout<<"Enter Author's FIO: => ";
cin.getline(Library->FIO,30);
 
cout<<"Enter book name: => ";
cin.getline(Library->nazvanie,40);
 
cout<<"Enter made year: => ";
cin>>Library->Year;
 
cout<<"Enter count of books: => ";
cin>>Library->kolvo;
 
return Library;
}
int choice()
{
int answer;
getch();
system("cls");
cout<<"Main menu"<<endl;
cout<<"1. Add new books to the list"<<endl;
cout<<"2. Print LIBRARY at list"<<endl;
cout<<"3. Search and delete"<<endl;
cout<<"4. Clear all entries"<<endl;
cout<<"5. Load"<<endl;
cout<<"6. Save"<<endl;
cout<<"0. Exit"<<endl;
cout<<"Enter your choice: ";
cin>>answer;
fflush(stdin);
if(answer>=1 && answer<=5)
return answer;
else
return 0;
}
 
int main()
{
STR *root=NULL;
int ch;
while(1)
{
ch=choice();
if(ch==1)
{
cout<<endl;
if(root==NULL)
root=create(makeLIBRARY());
else
add(makeLIBRARY(),root);
}
 
else if(ch==2)
{
cout<<endl;
int i=0;
int N=0;
 
STR *proot=root;
while (root)
{
N++;
root=root->next;
}
 
LIBRARY *buf;
LIBRARY **pLibrary=new LIBRARY*[N];
root=proot;
 
while (root)
{
pLibrary[i]=root->Library;
root=root->next;
i++;
}
 
root=proot;
 
 
for (i=0;i<N;i++)
printLIBRARY(pLibrary[i]);
 
}
 
else if(ch==3)
{
char qwe[30];
char qw[30], q[1];
cout<<"Enter nomer of book => "<<endl;
cin.getline(qwe,30);
while (root)
{
if (!strcmp(qwe,root->Library->nomer))
{ 
{
printLIBRARY(root->Library);
cout<<"Do you want clear this entries? (y/n) "<<endl;
cin.getline(q,1);
if (!strcmp(q,"y"))
{
root->Library=NULL;
}
root=root->next;
}
}
else if (strcmp(qwe,root->Library->nomer))
root=root->next;
}
 
cout<<endl;
}
 
else if(ch==5)
{
break;
cout<<endl;
}
 
}
return 0;
}
что тут не так?(
0
trapeznikova
0 / 0 / 0
Регистрация: 12.01.2015
Сообщений: 6
12.01.2015, 02:30 #7
lemegeton,здравствуйте, можете мне помочь с такой же темой?)))
0
lemegeton
2933 / 1362 / 467
Регистрация: 29.11.2010
Сообщений: 2,725
18.01.2015, 14:31 #8
А чем вас не устраивает мой предыдущий ответ? Там, конечно, есть одна неточность, но вряд ли её кто-либо заметил.
0
velion72
0 / 0 / 0
Регистрация: 19.01.2017
Сообщений: 7
19.01.2017, 19:29 #9
можно рабочий код с описанием?
0
19.01.2017, 19:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2017, 19:29
Привет! Вот еще темы с решениями:

Составить программу, которая содержит текущую информацию о заявках на авиабилеты
Выполняю задание. Условие следующее: Составить программу, которая содержит...

Составить программу, которая содержит текущую динамическую информацию о заявках на авиабилеты
Составить программу, которая содержит текущую динамическую информацию о заявках...

Составить программу, которая содержит текущую информацию об успеваемости студентов в виде связного списка
1.) Составить программу, которая содержит текущую информацию об успеваемости...

Составить программу, которая содержит информацию о сотрудниках
Язык С или С++ Составить программу, которая содержит информацию о сотрудниках...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru