Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
2 / 2 / 0
Регистрация: 26.05.2020
Сообщений: 331

Разработать консольное приложение «Записная книжка», включающее класс ContactBook и Program

14.11.2020, 13:30. Показов 2161. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Имеется следующее задание.
Разработать консольное приложение «Записная книжка»,
включающее класс ContactBook и Program. В классе ContactBook должны быть
следующие поля:
- имя,
- мобильный телефон,
- домашний адрес,
- рабочий адрес.
При этом поля имя и адрес должны быть реализованы с помощью структур:
имя (Фамилия, Имя, Отчество);
адрес (индекс, страна, город, улица, дом, квартира/офис).
Структуры должны иметь методы возвращающие поля структур:
Фамилия+Имя+Отчество и индекс+страна+город+улица+ дом+квартира/офис,
соответственно.
Класс Program должен позволить заполнить записную книжку данными на
несколько человек и вывести все записи из неё.

Я написал следующее, но я не могу вызвать эти структуры пока они находятся в классе ContactBook, а он здесь нужен по заданию. Подскажите что нужно делать с этим заданием.
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
    class ContactBook
    {
        public int phone;
        public struct User
        {
            public string name;
            public string secondname;
            public string thirdname;
 
            public void InfoUser()
            {
                Console.WriteLine($"Имя: {name}  Фамилия: {secondname} : Отчество {thirdname}");
            }
        }
 
        public struct adress
        {
            public int index;
            public string country;
            public string city;
            public string street;
            public int home;
            public int kvartofic;
 
            public void InfoAboutAdress()
            {
                Console.WriteLine($"Индекс: {index}  Страна: {country}  Город: {city}  Улица: {street}  Номер дома: {home}  Номер квартиры: {kvartofic}");
            }
 
        }
    }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.11.2020, 13:30
Ответы с готовыми решениями:

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

Создать приложение «Записная книжка»
помогите пожалуйста создать на паскале приложение «Записная книжка». Программа должна обеспечивать ввод и корректировку информации, а по...

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

7
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
14.11.2020, 14:28
Цитата Сообщение от danhiroman Посмотреть сообщение
При этом поля имя и адрес должны быть реализованы с помощью структур:
имя (Фамилия, Имя, Отчество);
адрес (индекс, страна, город, улица, дом, квартира/офис).
Здесь имеется ввиду, что для этих полей, вам нужно использовать структуры, например так:
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
public class ContactBook
{
    public Name name; // структура
    public int phone;
    public Address homeAddress; // структура
    public Address workAddress; // структура
 
}
 
public struct Name
{
    public string surname;      // фамилия
    public string name;         // имя
    public string middleName;   // отчество
 
    public override string ToString()
    {
        return $"surname:{surname}, name:{name}, middleName:{middleName}";
    }
}
 
public struct Address
{
    public int index;
    public string country;
    public string city;
    public string street;
    public int homeNumber;
    public int apartmentOfficeNumber;
 
    public override string ToString()
    {
        return $"Индекс: {index}  Страна: {country}  Город: {city}  Улица: {street}  Номер дома: {homeNumber}  Номер квартиры: {apartmentOfficeNumber}";
    }
}
0
2 / 2 / 0
Регистрация: 26.05.2020
Сообщений: 331
16.11.2020, 10:56  [ТС]
samana, Спасибо. А заполнять их будет лучше через конструктор или создать пустой объект и потом заполнять его поля?
0
 Аватар для samana
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
16.11.2020, 22:25
Цитата Сообщение от danhiroman Посмотреть сообщение
А заполнять их будет лучше через конструктор или создать пустой объект и потом заполнять его поля?
Смотрите, по факту, не все поля обязательны для заполнения. Например у контакта может не быть телефона, или рабочего адреса. Но вот имя контакта обязательно должно быть, поэтому есть смысл поместить в конструктор хотя бы имя, чтобы пользователь случайно не создал безымянных контактов.
А вообще всё на ваше усмотрение. Подумайте о том, как бы было удобно именно вам пользоваться такими структурами/классами.
0
2 / 2 / 0
Регистрация: 26.05.2020
Сообщений: 331
19.11.2020, 14:16  [ТС]
В итоге вот что получилось.
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
    public class ContactBook
    {
        public Name name; 
        public int phone;
        public Address homeAddress; 
        public Address workAddress; 
 
 
        Random rnd = new Random();
        string[,] WriteBook;
 
       
        public void AddInfo(int count)  //Метод, который заполняет
        {
            WriteBook = new string[count, 4];
            for (int i = 0; i < count; i++)
            {
                if (rnd.Next(0, 2) == 0) //определяю пол
                {
                    name.surname = familia[rnd.Next(0, familia.Length)];
                    name.name = imena[rnd.Next(0, imena.Length)];
                    name.middleName = imena[rnd.Next(0, imena.Length)] + "ович";
                }
                else
                {
                    name.surname = Femalefamilia[rnd.Next(0, Femalefamilia.Length)];
                    name.name = Femaleimena[rnd.Next(0, Femaleimena.Length)];
                    name.middleName = imena[rnd.Next(0, imena.Length)] + "овна";
                }
 
                WriteBook[i, 0] = name.InfoAboutName();
 
                WriteBook[i, 1] = Convert.ToString("Номер телефона:+89"+rnd.Next(100000000, 1000000000));
 
                for (int j = 0; j < 2; j++)
                {
                    
                    if (j == 0)
                    {
                        
                        homeAddress.index = rnd.Next(100000, 1000000);
                        homeAddress.country = Country[0];
                        homeAddress.city = Cities[rnd.Next(0, Cities.Length)];
                        homeAddress.street = Streets[rnd.Next(0, 5)];
                        homeAddress.homeNumber = rnd.Next(0, 50);
                        homeAddress.apartmentOfficeNumber = rnd.Next(0, 100);
                        WriteBook[i, 2] = homeAddress.InfoAboutAddress();
                    }
                    else
                    {
                        
                        workAddress.index = rnd.Next(100000, 1000000);
                        workAddress.country = Country[0];
                        workAddress.city = Cities[rnd.Next(0, Cities.Length)];
                        workAddress.street = Streets[rnd.Next(0, Streets.Length)];
                        workAddress.homeNumber = rnd.Next(0, 50);
                        workAddress.apartmentOfficeNumber = rnd.Next(0, 100);
                        WriteBook[i, 3] = workAddress.InfoAboutAddress1();
                    }
                }
            }
        }
        public void PokazNotes() // Вывожу все записи.
        {
            Console.WriteLine("Записи");
            for (int i = 0; i < WriteBook.GetUpperBound(0)+1; i++)
            {
                Console.Write(i + 1 + ")");
                for (int j = 0; j < 4; j++)
                    Console.Write(WriteBook[i, j]+"\n");
                Console.WriteLine();
            }
        }
 
}
А как можно сделать поиск по фамилии? Я ввожу человека с искомой фамилией и если такой(такие) есть в книжке, то он их выводит?
Я попробовал вот так, но ничего не получилось.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
               public void PokazPoSurname(string familia)
        {
            for (int i = 0; i < WriteBook.GetUpperBound(0) + 1; i++)
            {
                if (WriteBook[i,0] == familia)
                {
                    int k = i;
                    Console.WriteLine("Информация о найденном человеке");
                    for (int j = 0; j < 4; j++)
                        Console.Write(WriteBook[k, j] + "\n");
                    Console.WriteLine();
                    break;
                }
                else
                    Console.WriteLine("Человека с такой фамилией нет");
            }
        }
Добавлено через 21 минуту
Этот способ работает, только если вводить полное ФИО, а как сделать, чтобы можно было только по фамилии или отчеству?
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
19.11.2020, 14:21
Цитата Сообщение от danhiroman Посмотреть сообщение
как сделать, чтобы можно было только по фамилии или отчеству
Если у вас элемент в WriteBook[i,0] является строкой, то можно искать по подстроке, а не точному совпадению.
0
2 / 2 / 0
Регистрация: 26.05.2020
Сообщений: 331
19.11.2020, 14:40  [ТС]
Почтальон, элемент WriteBook[i,0] содержит имя фамилию отчество( Андреев Андрей Андреевич), я записал эти данные туда с помощью

C#
1
2
3
4
5
6
7
8
9
10
11
12
WriteBook[i, 0] = name.InfoAboutName();
    public struct Name
    {
        public string surname;      
        public string name;         
        public string middleName;   
 
        public string InfoAboutName()
        {
            return $"{surname} {name} {middleName}";
        }
    }
Добавлено через 48 секунд
Почтальон, Тоесть мне ещё один цикл нужно создать и пройтись по этим 3 элементам?
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
19.11.2020, 14:44
Цитата Сообщение от danhiroman Посмотреть сообщение
Тоесть мне ещё один цикл нужно создать и пройтись по этим 3 элементам?
Зачем ? У вас в WriteBook[i, 0] уже строка, если вы используете
C#
1
WriteBook[i, 0] = name.InfoAboutName();
поэтому тупо проверяйте на наличие подстроки
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.11.2020, 14:44
Помогаю со студенческими работами здесь

Описать класс “записная книжка”
Подскажите, кто знает может. Описать класс “записная книжка”. Предусмотреть возможность работы с произвольным числом записей, поиска...

Описать класс записная книжка
Описать класс «записная книжка». Предусмотреть возможность работы с произ-вольным числом записей, поиска записи по какому-либо признаку...

Записная книжка: Приложение должно содержать сведения о знакомых, коллегах и родственниках
Здравствуйте! Если не составит большого труда, помогите разработать приложение, обеспечивающее ввод, редактирование, удаление и поиск...

Разработать консольное приложение, в котором описать класс, работающий с одномерным массивом
Здравствуйте помогите пожалуйста решить задачу с массивами, читаю кучу литературы не помогло не понимаю ... Постановка задачи Требуется...

Создайте класс «записная книжка». Предусмотрите возможность работы с произвольным числом записей
Создайте класс «записная книжка». Предусмотрите возможность работы с произвольным числом записей, поиска записи по какому-либо признаку...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru