|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
16.01.2008, 22:23 | #1 | |
Регистрация: 16.01.2008
Сообщений: 5
|
Информационно-поисковая система "Библиотека" (С++)
ребят, у меня очень критическая ситуация, хуже не придумать!
завтра надо сдавать работу, значится она у нас как курсовая! Проблема в том что мы изучали информатику только на 1-м курсе, и то во лишь во 2-м семестре перешли уже непосредственно к СИ, а сейчас (3й семестр) у нас не было информатики, нам лишь дали вопросы по курсовой и чтобы сами изучили сделали и сдали работу! я попросила знакомого помочь - мне сделали работку, но я её полностью не понимаю, так как она в СИ++ сделана, и мне сказали либо разберешься в программе, либо переделывай на знакомый СИ. а переделывать времени нет! а мне в зачетку 3ка не нужна, поэтмоу надо отвечать что-то. я же примерная студентка вопрос у меня такой был: "Библиотека". Разработать информационно-поисковую систему доступа к ресурсам библиотеки. Сведения о печатном издании включают в себя: - автор; - название; - издательство; - год выпуска; - количество страниц; - жанр. Пользователь системы должен иметь возможность выполнять следующие запросы: - выдать список книг указанного автора; - сформировать список книг указанного жанра; - найти все книги указанного жанра, изданные в указанный период времени. вот в принципе и всё, моя программка в прикрепленном файле. во многом я в принципе разобралась, сегодня весь день пытаюсь изучить хоть что-то по си++ ))) хочу вас попросить помочь с файлом DBDescriptor.cpp - написать комментарий к каждой строчке, чтоб понять что там происходит и как! и еще что такое std ?? я прочитала весь справочник Бьерна Страуструпа, там много чего нашла, а про std не ясно... ну нупример почему везде у меня в программе пишется std::cin>> , std::cout<< а не просто cin>> и cout<<.... и еще интересно что мы делаем этими командами в DBDescriptor.h? Цитата:
и еще один вопросик: у меня слишком много понаписано в main.cpp (в методичке вообще написано что там почти ничего не должно быть). так как мне сделать меню для пользователя отдельно? надо функцию change() и всё начиная со switch ... файла main.cpp поместить как две функции в другом новом файле и потом лишь вызывать из main.cpp их?? я так пробовала, но не компилируется так программа! очень прошу выручить меня, мне завтра сдавать вечером, эх ( заранее всем спасибки и всех целую! |
|
17.01.2008, 00:05 | #2 | ||||
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Цитата:
Цитата:
cin - считывание данных с клавы cout - вывод на экран Цитата:
Цитата:
Код:
Код:
|
||||
17.01.2008, 01:01 | #3 | |
Регистрация: 16.01.2008
Сообщений: 5
|
Цитата:
вот c std, в частности std::cin и std::cout всё ясно, только тогда еще как понять >> и <<... насколько я помню это операции сдвига вправо и влево... и как это объясняется в нашем случае?? ну например std::cout<<"hello"<<std::end1; ?? блин, pu4koff, вообще спасибо огроменное, я уже что-то начинаю более менее понимать! чтобы я так делала (( хороший сайт! еще хочу заметить, как начинаешь что-то понимать в программировании - сразу это становится интересным и хочется изучать дальше.... только вот из-за загруженности в университете всё это дело запускается и забывается ( |
|
17.01.2008, 01:35 | #4 | |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Цитата:
cout << std::endl - это переход на новую строку. также hello можно вывести на экран хоть так: cout << "h" << "e" << "llo" << endl; cin >> s. соответственно означает, что мы в переменную s отправляем данные из потока cin, т.е. то, что с клавы ввели. |
|
17.01.2008, 01:52 | #5 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
совсем забыл про это:
typedef std::map<int, tablerow_t> database_t; а это означает, что database_t - это не что иное, как std::map<int, tablerow_t>. map - это, на сколько я знаю, что-то вроде таблицы, в которой ключ уникален. это шаблонный тип и мы в <> указываем тип ключа - int и тип данных (в нашем случае это строка таблицы) - tablerow_t |
17.01.2008, 02:46 | #6 | ||||
Регистрация: 16.01.2008
Сообщений: 5
|
tablerow_t я так поняла это тоже стандартный тип данных, который находится в каком-то заголовочном файле??
pu4koff, ты такой молодец! я тоже так хочу всё знать.... и вообще я твоя должница... ) само приятное что пишешь именно в точку, всё описываешь качественно, завтра, ой, вернее уже сегодня пойду сдавать - думаю препод будет в шоке! )) потом сообщу об оценке! ) слушай, напиши мне тогда пожалуйста как точно объясняютя эти строчки, чтобы при случае не примерно а точно ответить 1)здесь пугает немного &, хотя не очень но так на всякий случай... ) Цитата:
Цитата:
Цитата:
Цитата:
еще раз заранее спасибочки! думаю это, уфф, последние вопросики в этой теме от меня )) извините что всем так надоедаю, прекрасно понимаю, что спрашиваю абсолютную ерунду, которую можно даже, ничего не понимая в си, самостоятельно изучить за дней 5 максимум для статуса готовности )) но вот так получилось что и каких-то 5 дней не оказалось в свободном времени (( Последний раз редактировалось natasha_s; 17.01.2008 в 02:49. |
||||
17.01.2008, 06:47 | #7 | |||
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Цитата:
typedef struct { unsigned char Author[50]; unsigned char Name[50]; unsigned char Publisher[50]; unsigned char Genre[50]; int Year; int nPages; } tablerow_t; как видишь это структура для хранения информации по книге, т.е. записи таблицы 1) int change(tablerow_t &xRow) & указывает на то, что параметр передается по ссылке, т.е. все изменения xRow внутри этой функции коснутся передаваемого параметра. Если этого значка не написать, т.е. передать параметр по значению, то изменяца параметр этот внутри функции будет, но по выходу из нее изменения не сохраняца. Цитата:
Цитата:
это вроде как мы считываем строку символов, введенных с клавы, максимальной длиной 50 или пока пользователь не встретится Enter 3) Код:
когда компилятор встретит строчку: FileDescriptor file или FileDescriptor *file = new FileDescriptor , то выполница какраз этот конструктор. Есть еще конструкторы копирования - то же самое, но они просто с параметрами. Ну и на всякий случай есть еще деструкторы. если бы он был для данного класса прописан, то имел бы имя: ~FileDescriptor(). параметров у них быть не может. вызываются при уничтожении объекта для освобождения памяти и совершения еще каких-либо требуемых операций Последний раз редактировалось pu4koff; 17.01.2008 в 06:53. |
|||
18.01.2008, 22:53 | #8 | |
Регистрация: 16.01.2008
Сообщений: 5
|
ну вот, вчера ничего сдать не получилось, потому что там такая очередь огромная оказалась сдающих курсовые по информатике ( шокировать препода не получилось, зато шокировала своих одногруппничков ) а еще вчера с утра же сдала экзамен 1-й на 5, поздравьте меня )
сегодня прогоняла программу свою в очередной раз, и поняла что не могу объяснить вот эти вещи: из dbdescriptor.h 1) typedef std::map<int, tablerow_t>::iterator database_ti; смущает итератор, что это и с чем его едят, в своём справочнике не нашла ( 2) ___________________________ bool addRow(tablerow_t& xRow) ___________________________ вот здесь я запуталась... запуталась из-за до этого объясненной функции int change(tablerow_t &xrow) то есть опять смущает амперсант.. ( 3) __________ FILE* m_xFD; __________ что за FILE?? откуда взялся? и из dbdescriptor.cpp 4) Цитата:
5) DBDescriptor::DBDescriptor(unsigned char *pucFileName) : FileDescriptor(pucFileName) 6) memcpy(&(xChIter->second),&xNewRow,sizeof(xNewRow) ); 7) что за двойная ссылка да еще и никуда не пристроенная так сказать? if(iRead!=sizeof(xRow) && iRead!=0) 8) _____________ if (feof(m_xFD)) _____________ что такое feof? ___________________ ps. я оказывается такая дура.. ( pss. pu4koff, почему в аську не выходим, аа? у меня к тебе очень малюсенькое но тем не менее коммерческое предложение ) |
|
19.01.2008, 08:19 | #9 |
Регистрация: 16.01.2008
Сообщений: 5
|
видимо мне больше уже не помогут (
|
19.01.2008, 12:47 | #10 | ||||
Старожил
Регистрация: 22.05.2007
Сообщений: 9,065
|
Цитата:
Цитата:
это просто в классе прописан указатель на класс. Открывается файл здесь: bool FileDescriptor:pen(unsigned char *pucFileName) { m_xFD=fopen((const char*)pucFileName,"rb+"); ... } [/QUOTE] потому что создатель так захотел) используеца FILE*, значит и надо пользовать fopen, fread, fwrite,fclose,... r - открываем для чтения b - то, что файл - бинарный r+ - открываем и для чтения и для записи. файл должен уже существовать кажеца. видимо тут открываеца бинарный файл на запись и чтение Цитата:
создаем копию куска памяти размера sizeof(xNewRow), на который указывает &xNewRow и эту копию записываем по адресу &(xChIter->second). кажеца так. в общем в xChIter->second копируем xNewRow. Цитата:
{ if(iRead!=sizeof(xRow) && iRead!=0) { exit(0); } addRow(xRow); } if выполница тогда, когда в файл данные или не записались, или записались, но не полностью. хотя проверка "iRead!=0" по идее не нужна. ведь это выполница только если мы пишем данные размером 0 eof - end of file. Возвращет истину, если мы дошли до конца файла я там обычно чуть ли не круглые сутки. вчера правд я лег в 7 вечера, т.к. не спал два дня. А с утра экзамен был. ох уж эта сессия... ) |
||||
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка при использовании OlePropertyGet("Documents").OleProcedure("Add") в C++ Builder | AleksP | C++ Builder | 7 | 11.04.2009 13:06 |
если пользователь наберет какой-то другой символ не "y" или "n" и нажмет enter, программа проигнорирует | skobets | Общие вопросы C/C++ | 2 | 03.06.2008 06:51 |
Excel файл открывается не "до конца" (странички "не показываются" только серое поле) | Dorvir | Microsoft Office Excel | 2 | 28.03.2008 10:03 |
Создаю диаграмму "Bar". Подскажите как убрать растояние между "столбами" | MAcK | Компоненты Delphi | 11 | 24.10.2007 10:49 |