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

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

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

Составить программу, которая содержит текущую информацию о книгах в библиотеке C++
C++ Составить программу, которая содержит динамическую информацию о наличии автобусов в автобусном парке.
C++ Составить программу, которая содержит текущую информацию о заявках на авиабилеты
Динамические структуры данных. Составить программу, которая содержит текущую информацию о книгах в библиотеке C++
Составить программу , которая содержит динамическую информацию о наличие автобусов в парке C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Shepard90
5 / 5 / 0
Регистрация: 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;
 
}
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
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;
};
Galiman
0 / 0 / 0
Регистрация: 23.01.2013
Сообщений: 4
23.01.2013, 15:27  [ТС]     Составить программу, которая содержит текущую информацию о книгах в библиотеке #4
Shepard90,
lemegeton, спасибо большое)
Lesik
0 / 0 / 0
Регистрация: 08.01.2013
Сообщений: 5
23.01.2013, 16:53     Составить программу, которая содержит текущую информацию о книгах в библиотеке #5
Shepard90, удаляют( у тебя есть скайп?
Crimsoland
Сообщений: n/a
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;
}
что тут не так?(
trapeznikova
0 / 0 / 0
Регистрация: 12.01.2015
Сообщений: 6
12.01.2015, 02:30     Составить программу, которая содержит текущую информацию о книгах в библиотеке #7
lemegeton,здравствуйте, можете мне помочь с такой же темой?)))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2015, 14:31     Составить программу, которая содержит текущую информацию о книгах в библиотеке
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
18.01.2015, 14:31     Составить программу, которая содержит текущую информацию о книгах в библиотеке #8
А чем вас не устраивает мой предыдущий ответ? Там, конечно, есть одна неточность, но вряд ли её кто-либо заметил.
Yandex
Объявления
18.01.2015, 14:31     Составить программу, которая содержит текущую информацию о книгах в библиотеке
Ответ Создать тему
Опции темы

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