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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
pcvir
0 / 0 / 0
Регистрация: 22.11.2014
Сообщений: 7
#1

Создание массива класса - C++

22.11.2014, 14:43. Просмотров 296. Ответов 4
Метки нет (Все метки)

Пишу курсовую, задание получил следующее:

"Разработать приложение на С++, позволяющее, собирать, накапливать сведения о студентах и занятиях, посещаемых ими. Структура приложения должна включать классы студента и занятия."

При этом требования еще такие:

- Студенту предоставляется право самостоятельно выбрать структуру и тип хранилища данных – текстовый файл либо база данных.

- После чтения данных, последние должны храниться в памяти и обрабатываться как классы.

- Работа в программе в консольном исполнении должна осуществляться с помощью меню операций. Данные должны выводиться в табличном виде.


С классами никогда не работал впринципе в с++, но вроде разобрался боле менее, пока с одним классом:

класс студент

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
class student
{
    string last_name;
    string name;
    string middle_name;
    string phone_number;
    int group_number;
 
public:
    void record_last_name () // метод_записи_фамилии
    {
        string temporary;
        for (;;)
        {
            getline (cin , temporary);
            if (temporary.empty()){cout << "Empty string\n";continue;}
            else{cout << "Record\n" << endl;break;}
        }
        last_name = temporary;
    }
 
    void record_name () // метод_записи_имени
    {
        string temporary;
        for (;;)
        {
            getline (cin , temporary);
            if (temporary.empty()){cout << "Empty string\n";continue;}
            else{cout << "Record\n" << endl;break;}
        }
        name = temporary;
    }
 
    void record_middle_name () // метод_записи_отчества
    {
        string temporary;
        for (;;)
        {
            getline (cin , temporary);
            if (temporary.empty()){cout << "Empty string\n" <<endl;continue;}
            else{cout << "Record\n" << endl;break;}
        }
        middle_name = temporary;
    }
 
    void record_phone_number () // метод_записи_телефонного_номера
    {
        string temporary;
        for (;;)
        {
            getline (cin , temporary);
            if (temporary.empty()){cout << "Empty string\n" <<endl;continue;}
            else{cout << "Record\n" << endl;break;}
        }
        phone_number = temporary;
    }
 
    void record_group_number () // метод_записи_номера_группы
    {
        int temporary = 0;
        do
        {
            cin >> temporary ;
        }while (temporary <= 0);
        group_number = temporary;
    }
 
    void Print () // вывод_на_экран_информации_о_студенте
    {
        cout << "Name of the student " << last_name << endl;
        cout << "The student's name " << name << endl;
        cout << "Student's first name " << middle_name << endl;
        cout << "Phone number of the student " << phone_number << endl;
        cout << "Group_number " << group_number << endl;
    }
 
    void create_student (int size)
    {
        system("mode con cols=70 lines=50");
 
        // выделяем память под массив из 10 элементов
//        int size = 1;
//        student *array = new student [size];
 
        // заполняем массив
        for (int i = 0; i < size; ++i)
        {
           cout << "Last name\n";
           array[i].record_last_name ();
 
           cout << "Name\n";
           array[i].record_name ();
 
           cout << "Middle name\n";
           array[i].record_middle_name ();
 
           cout << "Phone number\n";
           array[i].record_phone_number ();
 
           cout << "Group number\n";
           array[i].record_group_number ();
 
         }
 
     }
 
    student () // конструктор_класса
    {
        last_name = "NULL";
        name = "NULL";
        middle_name = "NULL";
        phone_number = "NULL";
        group_number = 0;
    }
 
    student (char *last_name_2, char *name_2, char *middle_name_2, char *phone_number_2,
        int group_number_2)  // конструктор с параметрами
    {
        last_name = last_name_2;
        name = name_2;
        middle_name = middle_name_2;
        phone_number = phone_number_2;
        group_number = group_number_2;
    }
 
    ~student (void){}; // деструктор_класса
 
 
};
и main

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void main ()
{
        int size = 1;
        student *array = new student [size];
 
        
        array[size].create_student(size);
 
 
      //вывод массива на экран
        cout << "Show\n";
        for (int i = 0; i < size; ++i)
        {
           array[i].Print ();
        }
 
 
 
        // удаляем массив
        delete [] array;
       
}
Проблема в том как вернуть созданный в функции create_student массив, чтоб из main его вывести на экран?


И вообще мб я слишком заморочился, может как то все проще можно сделать?(((

При таком коде, выводи пустой массив данных((
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2014, 14:43     Создание массива класса
Посмотрите здесь:

Создание Массива Объектов класса C++
Создание класса по обработке массива. C++
C++ Создание массива классов(обектов класса)
Создание класса по обработке данных массива C++
Явное создание экземпляра класса и явная специализация шаблона класса C++
C++ Создание массива объектов класса
Создание массива класса, с установленным конструктором C++
C++ Создание класса шаблона, ассоциативного массива
C++ Создание массива объектов класса
Создание массива элементов класса C++
C++ Создание массива экземпляров класса с не стандарным конструктором
C++ Создание массива объектов класса через список инициализации в конструкторе композита

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
egor2116
338 / 369 / 42
Регистрация: 20.01.2013
Сообщений: 1,123
22.11.2014, 15:09     Создание массива класса #2
Наверное как то так
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
class Student
{
    private:
        int * array; // массив структор и т.д.
        size_t SIZE;
    public: 
        Student(const size_t & size = 1)
        {
            SIZE = size;
            array = new int[SIZE];
        }
        ~Student(){ delete [] array; }
        
        void creat_student()
        {
            // TO DO
        }
        
        int * getArray(){ return array; } //получаем массив
        size_t getSize(){ return SIZE; }
        
        
};
 
 
int main() {
    
    Student st(5);
    
    int * arr = st.getArray();
    
    for(int i = 0; i < st.getSize(); ++i)
        std::cout << arr[i];
    
    return 0;
}
pcvir
0 / 0 / 0
Регистрация: 22.11.2014
Сообщений: 7
22.11.2014, 15:39  [ТС]     Создание массива класса #3
Чет я тпулю))) Я так понимаю это массив внутри класса, да? А мне нужен массив из элементов самого класса(
т.е. у нас допусти класс student и у него переменные фамилия имя отчество и тд., вот мне надо чтоб в каждой "ячейке" массива были все составляющие этого класса
egor2116
338 / 369 / 42
Регистрация: 20.01.2013
Сообщений: 1,123
22.11.2014, 16:24     Создание массива класса #4
Если я правильно понял:
вынеси работу с массивом за пределы класса. А то у тебя получается, что класс Student а в нем идет обработка группы студентов, 1 обьект = 1 студент.
как я это вижу
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
Student
{
  // to do
}
 
int main()
{
  const size_t size = 5;
  Student array[size];
  for (int i = 0; i < size; ++i)
        {
           cout << "Last name\n";
           array[i].record_last_name ();
 
           cout << "Name\n";
           array[i].record_name ();
 
           cout << "Middle name\n";
           array[i].record_middle_name ();
 
           cout << "Phone number\n";
           array[i].record_phone_number ();
 
           cout << "Group number\n";
           array[i].record_group_number ();
 
         }
}
Другими словами все что относится к ОДНОМУ студенту и действия с ОДНИМ студентом должно быть в классе, а создание группы студентов и манипуляции с группой за его пределами(в другом классе GROUP например или просто в main).
pcvir
0 / 0 / 0
Регистрация: 22.11.2014
Сообщений: 7
22.11.2014, 17:34  [ТС]     Создание массива класса #5
Во так уже понятнее)) спасибо большое попробую сделать, дело в том что мне нужно заполнение массива функцией, просто ее как отдельную надо делать, а не в классе.... если что отпишусь)
Yandex
Объявления
22.11.2014, 17:34     Создание массива класса
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru