Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/43: Рейтинг темы: голосов - 43, средняя оценка - 4.79
4 / 4 / 2
Регистрация: 03.12.2009
Сообщений: 71

Класс "Записная книжка"

07.10.2010, 22:10. Показов 8712. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте
сразу дам текст и потом напишу что хочу узнать



Описать класс «записная книжка». Предусмотреть возможность работы с произвольным числом записей, поиска записи по какому-либо признаку (например, по фамилии, дате рождения или номеру телефона), добавления и удаления записей, сортировки по разным полям.
Написать программу, демонстрирующую работу с этим классом. Программа должна содержать меню, позволяющее осуществить проверку всех методов класса.


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

То есть мне надо что бы можно было добавить пользователя за которым будут закреплены его данные,
что бы можно было сортировать их по разным пунктам


P.S. Или лучше через бинарное дерево это всё сделать?

Добавлено через 35 минут
Типа стек в стеке сделать?

Добавлено через 1 минуту
вот моё

C++
1
2
3
4
5
6
void STEK::push()
{
    char name[10];
    char familia[10];
    char phone[15];
    char birthday[10];
но я же не могу просто добавлять данные в стек, мне надо их присваивать определённому лицу!

 Комментарий модератора 
Дублирование тем запрещено правилами форума (п. 3.4.).
Не плодите одинаковых тем.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.10.2010, 22:10
Ответы с готовыми решениями:

Описать класс «записная книжка».
1. Определить класс с именем Note, содержащий следующие поля: • Фамилия, имя; • Номер телефона; • День рождения (массив из трех...

СРОЧНО!Нужен код программы записная телефонная книжка
1. Нужно использовать контейнер <map> 2. Каждая запись даолжна хранить имя и номер.

Класс Записная книжка
Определить класс Записная книжка, содержащая фамилию и имя, номер телефона, день рождения. Определить методы доступа к этим полям и...

8
98 / 94 / 16
Регистрация: 16.05.2010
Сообщений: 310
07.10.2010, 22:29
На мое мнение здесь лучше использовать связные списки, в которые помещать ваши объекты класса «записная книжка». Здесь уж как хотите, хоть сами пишите, используйте list/vector не знаю. Деревья, зачем усложнять себе жизнь? А если использовать стек, то как же сортировать?
0
4 / 4 / 2
Регистрация: 03.12.2009
Сообщений: 71
08.10.2010, 01:18  [ТС]
Ну ок, а как реализовать тогда? вотя строю список из 3-ёх связанных файлов

Spisok.h
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
#include <malloc.h>
#include <iostream>
using namespace std;
 
 
struct SP
{ 
char data[100]; 
SP *pointer; 
};
 
class SPISOK
{ 
private: 
SP *q; 
public: 
SPISOK (); 
~SPISOK (); 
void push(); 
void choice(); 
void pop();
void search();
void del();
void sort();
};

Spisok.cpp

C++
1
2
3
4
5
6
7
8
9
10
11
#include <malloc.h>
#include <iostream>
#include "Spisok.h"
 
 
void SPISOK::push()
{
    char name[10];
    char familia[10];
    char phone[15];
           char birthday[10]

Я вот не понимаю как реализовать саму функцию записи контактов в записную книжку что бы один контакт содержал одно а другой другое!

помогите плз реализовать само добавление контакта с его личной информацией...
0
98 / 94 / 16
Регистрация: 16.05.2010
Сообщений: 310
08.10.2010, 02:57
LuBu, почитайте книгу "Освой самостоятельно С++ за 21 день" Д. Либерти - Связные списки и другие структуры стр 360. Прекрасно всё описано

Цитата Сообщение от LuBu Посмотреть сообщение
что бы один контакт содержал одно а другой другое!
в смысле?
0
4 / 4 / 2
Регистрация: 03.12.2009
Сообщений: 71
08.10.2010, 08:36  [ТС]
спасибо почитаю книжку!)
0
sergei1132006
09.11.2010, 22:36
попробуй создать два класса

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
#include <string>
 
class Адрес
{
private:
    std::string Фамилия_;
    std::string Имя_;
    std::string Телефон_;
    std::string Адресc_;
    int НомерId_;
 
public:
    Адрес::Адрес():НомерId_(0){}
 
    int НомерId()const{return НомерId_;}
    void НомерId(int i){НомерId_=i;}
 
    std::string Фамилия()const {return Фамилия_;}
    void Фамилия(const std::string&);
 
    std::string Имя()const {return  Имя_;}
    void Имя (const std::string&);
 
    std::string Телефон()const {return Телефон_;}
    void Телефон(const std::string&);
 
    std::string Адресc()const {return Адресc_;}
    void Адресc(const std::string&);
};
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
#include"Адрес.h"
#include<vector>
 
class АдреснаяКнига
{
private:
 
 
    std::vector<Адрес>АдресВектор_;
    static int NextId_;
 
    int ПолучитьАдрес_ПоId(int номерId)const;
    enum{НетЗаписи=-1};
 
public:
    АдреснаяКнига();
    ~АдреснаяКнига();
 
    int ВставитьАдрес (const Адрес& addr, int номерId=0);
    void УдалитьАдрес (int НомерId);
    void ЗаменитьАдрес (const Адрес& addr, int номерId=0);
    const Адрес& ПолучитьАдрес(int номерId)const;
 
    void Печать()const;// эта функция для тестирования
};
вот вроде так или нет

Добавлено через 6 часов 18 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//Адрес.cpp
#include"Адрес.h"
 
void Адрес::Фамилия(const std::string &s)
{
    Фамилия_=s;
}
 
void Адрес::Имя(const std::string &s)
{
    Имя_=s;
}
 
void Адрес::Телефон(const std::string &s)
{
    Телефон_=s;
}
 
void Адрес::Адресc(const std::string &s)
{
    Адресc_=s;
}
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
//Адресная книга.cpp
#include<iostream>
#include"Адресная книга.h"
 
int АдреснаяКнига::NextId_=1;
 
АдреснаяКнига::АдреснаяКнига()
{
}
АдреснаяКнига::~АдреснаяКнига()
{
}
 
int АдреснаяКнига::ВставитьАдрес(const Адрес& addr, int номерId)
{
    if(номерId==0)
        номерId=NextId_++;
    else if(номерId>=NextId_)
        NextId_=номерId+1;
 
    АдресВектор_.push_back(addr);
 
    АдресВектор_.back().НомерId(номерId);
 
    return номерId;
}
 
int АдреснаяКнига::ПолучитьАдрес_ПоId(int номерId)const
{
    for(unsigned int i=0;i<АдресВектор_.size();++i)
        if(АдресВектор_[i].НомерId()==номерId)
            return i;
    return НетЗаписи;
}
 
void АдреснаяКнига::УдалитьАдрес(int номерId)
{
    int index=ПолучитьАдрес_ПоId(номерId);
 
    АдресВектор_[index]=АдресВектор_.back();
 
    АдресВектор_.pop_back();
}
 
void АдреснаяКнига::ЗаменитьАдрес (const Адрес& addr, int номерId)
 
{
    if(номерId==0)
        номерId=addr.НомерId();
 
    int index=ПолучитьАдрес_ПоId(номерId);
 
    АдресВектор_[index]=addr;
    АдресВектор_[index].НомерId(номерId);
}
 
const Адрес& АдреснаяКнига::ПолучитьАдрес(int номерId)const
{
    int index=ПолучитьАдрес_ПоId(номерId);
 
    return АдресВектор_[index];
}
 
void АдреснаяКнига::Печать()const
{
    std::cout<<"****************************************\n";
    for(unsigned int i=0;i<АдресВектор_.size();++i)
    {
        const Адрес z=АдресВектор_[i];
        std::cout<<"номерId: "<<z.НомерId()<<"\n";
        std::cout<<z.Фамилия()<<' '<<z.Имя()<<"\n";
        std::cout<<z.Телефон()<<"\n";
        std::cout<<z.Адресc()<<"\n"<<std::endl;
    }
}
Вот вроде одно из решений с помощью vector
Но с помощью list вроде как лучше но я еще не разбирал

Добавлено через 21 минуту
вот еще просмотри

• test.at(i) - равносильно записи test[i], но при этом, если i-ого элемента не существует, программа не вылетит
• test.asign(n,m) - записывает в массив n элементов со значением m
• test.asign(start,end) - записывает в вектор значения от start до end. Внимание!!! start и end - интераторы (указатели) на элементы другого вектор.
• test.front() - возвращает ссылку на первый элемент
• test.back() - возвращает ссылку на последний элемент
• test.begin() - возвращает интератор первого элемента вектора
• test.end() - последнего + 1
• test.clear() - очищает вектор
• test.erase(i) или test.erase(start,end) - удаляет элемент с итератором i или элементы с интераторами между старт и енд
• test.size() - возвращает количество элементов в векторе
• test.swap(test2) - меняет местами содержимое вектора test и вектора test2
• test.insert(a,b) - вставляет в test переменную b перед элементом с интератором a и возвращает интератор вставленного элемента
• test.insert(a,n,b) - вставляет n копий b
• test.insert(a,start,end) - вставляет элементы между между итераторами start и end перед a
• test.push_back(что положиш)-для записи в вектор
• test.pop_back()-для удоления последнего элемента вектора
Armada333
03.05.2014, 13:14
LuBu, Приветствую,вы пишете програму Записная книжка?Вы написали уже её?
4 / 4 / 2
Регистрация: 03.12.2009
Сообщений: 71
03.05.2014, 20:40  [ТС]
Да, уже давно
0
2 / 2 / 2
Регистрация: 01.06.2014
Сообщений: 92
03.05.2015, 09:16
Можете показать код?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.05.2015, 09:16
Помогаю со студенческими работами здесь

Написать класс "Записная книжка" (контейнер List)
Описать класс «записная книжка». Предусмотреть возможность работы с произвольным числом записей, реализовать поиск необходимой...

Реализовать класс "записная книжка" с конструктором и деструктором
1. Написать класс, объектами которого являются записи в записной книжке. Каждая запись состоит из следующих полей: имя, фамилия, номер...

Разработать класс "Записная книжка"
Разработать класс &quot;Записная книжка&quot;. Используйте массив для хранения записей.Реализуйте методы добавления, удаления, поиска телефона по...

Описать класс "Записная книжка"
Описать класс &quot;записная книжка&quot;. Предусмотреть возможность работы с произвольным числом записи по какому либо признаку (например, по...

Записная книжка
Здравствуйте. Помогите запустить проект &quot;записная книжка&quot;, проект взят из книжки C++ Builder, автор Культин. В C++ Buildere не очень...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru