|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
26.05.2009, 20:39 | #1 |
Пользователь
Регистрация: 01.05.2009
Сообщений: 38
|
Классы в С++
Здраствуйте,помогите пожалуста с курсовой. Задание такое:
Программный проект представляет собой автоматизированную версию телефонной книги. Структура данных в телефонной книге имеет следующие поля: • фамилия, имя, отчество абонента; • адрес абонента; • год установки телефона; • номер телефона. Телефонная книга содержит не более 5000 записей и сохраняется в файле telefon.fam. Прикладная программа содержит следующие процедуры и функции: • Добавить (добавляет данные о новом абоненте в телефонную книгу); • Удалить (удаляет сведения о выбывшем абоненте из телефонной книги); • НайтиПоИмени (по введенной фамилии, инициалам и адресу ищет и выводит на экран телефон абонента. Если адрес абонента не введен ,и абонентов с указанной фамилией несколько, выводятся сведения обо всех таких абонентах); • Анализ (провести анализ о количестве установленных телефонов в определенном году); • Конец (выход из программы). Ввод данных в программу осуществляется в диалоге по запросам программы. Оператор программы инициирует запуск той или иной процедуры нажатием функциональных клавиш. Вывод результатов выполнения программы осуществляется согласно описаниям процедур, приведенным выше.. ОШИБКИ Ошибки ввода при диалоге должны приводить к повторению диалога. Если при поиске абонент с указанной фамилией не найден, то выдается сообщение "Абонент не найден" и процедура поиска завершается без выхода из программы. |
26.05.2009, 20:39 | #2 |
Пользователь
Регистрация: 01.05.2009
Сообщений: 38
|
вот мой код:
Код:
|
26.05.2009, 20:39 | #3 |
Пользователь
Регистрация: 01.05.2009
Сообщений: 38
|
Объясните пожалуста,почему не работает поиск по фамилии,году установки...
Функция поиска не выполняется так как надо (если есть одинаковые фамилии,при ее вводе фамилии выводит только последнюю фамилию и телефон),а когда фамилии такой в структуре нет-просто дальше не работает. И как написать функцию удаления,подскажите идею... |
26.05.2009, 21:26 | #4 |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Вы хотите сказать, что у вас функции поиска вообще как-то работают? У меня они виснут.
В функции Naity вообще не вижу, чтобы что-то из файла читалось. С функцией Analiz аналогичная ситуация. Функция LoadFile считывает данные из файла? В массив символов? Может, все-таки лучше сделать массив структур? Тогда и искать будет легче. И с удалением проблем не будет. Просто убираем (можно даже просто смещением остальных) удаляемый элемент и перезаписываем файл. Еще замечу, что у вас в файле много "мусора" в виде символов перевода строк и звездочек. ----------- Итог. Раз вы все равно собираетесь считывать в память весь файл, то сделайте лучше в классе массив (можно динамический) структур. Туда загрузите данные. Можно и списком сделать. Тогда искать по любому полю будет довольно просто.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
26.05.2009, 21:33 | #5 | ||
Пользователь
Регистрация: 01.05.2009
Сообщений: 38
|
Спасибо за совет...Но...
Цитата:
Цитата:
|
||
26.05.2009, 21:44 | #6 | |
Пользователь
Регистрация: 01.05.2009
Сообщений: 38
|
Цитата:
|
|
26.05.2009, 21:44 | #7 |
Пользователь
Регистрация: 01.05.2009
Сообщений: 38
|
и вот если ввел 2 одинаковые фамилии,но дааные остальные разные,выводится лиш последняя фамилия,а не обе...
|
26.05.2009, 21:48 | #8 | ||||
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Цитата:
Пусть будет что-то вроде: Код:
Далее в классе, в паблике (например), объявляете массив структур. Код:
Ну, или, как я уже сказал, делать динамический список. ----- Вот есть у вас массив. Далее заполняете его из файла. (там еще нужно объявить переменную, где запишем количество структур). И потом обращаетесь к любой записи примерно так: Код:
Цитата:
=================================== Цитата:
Цитата:
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
||||
26.05.2009, 22:01 | #9 | |
Пользователь
Регистрация: 01.05.2009
Сообщений: 38
|
Цитата:
Фамилия Имя отчество Адрес Год установки телефон Через fgetc?и если например переход на новую строку(то есть нажали enter- элемент 13)то это например mas[i].adress? |
|
26.05.2009, 22:03 | #10 |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Не надо через fgetc.
Вы же на C++ пишете. Вместо stdio используйте fstream. И с помощью getline считывайте файл построчно. Ну или fgets, на крайний случай. ---------- А вообще с помощью оператора '>>' можно читать.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Классы в С++ | S2S | Общие вопросы C/C++ | 0 | 15.03.2009 13:25 |
Классы | bondik | Общие вопросы C/C++ | 1 | 14.12.2008 14:19 |
Классы | MaxiMILLION | Помощь студентам | 4 | 12.10.2008 14:05 |
классы | ShenDy | Общие вопросы C/C++ | 1 | 12.04.2008 14:01 |