Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

22.11.2014, 14:43. Просмотров 314. Ответов 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 его вывести на экран?


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

При таком коде, выводи пустой массив данных((
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.11.2014, 14:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создание массива класса (C++):

Создание массива объектов класса - C++
Создание массива объектов класса. E2451 Undefined symbol 'myZKH' По-разному уже пробовал-безуспешно. /* Создание...

Создание массива объектов класса - C++
Здравствуйте Подскажите пожалуйста как правилььно создать массив объектов класса, что бы не создавать промежуточный объект класса &quot;Rtd&quot;: ...

Создание класса по обработке массива. - C++
Помогите, пожалуйста решить!!! Задание: Напишите программу по обработке массива, как объекта созданного Вами класса &quot;Массив&quot; и...

Создание Массива Объектов класса - C++
Здравствуйте, такая вот проблемка возникла: нужно создать массив B объектов класса TGoods. И далее по определенному значению year...

Создание массива объектов класса - C++
Доброго времени суток! Хотела бы разобраться с вашей помощью в чем-таки состоит моя ошибка. //Создаю класс class TaleGreen { ...

Создание массива элементов класса - C++
Добрый день. Возможно ли сделать следующий финт: class Device { byte mGroup; public: Device(byte gr=0) { ...

4
egor2116
342 / 373 / 42
Регистрация: 20.01.2013
Сообщений: 1,132
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;
}
1
pcvir
0 / 0 / 0
Регистрация: 22.11.2014
Сообщений: 7
22.11.2014, 15:39  [ТС] #3
Чет я тпулю))) Я так понимаю это массив внутри класса, да? А мне нужен массив из элементов самого класса(
т.е. у нас допусти класс student и у него переменные фамилия имя отчество и тд., вот мне надо чтоб в каждой "ячейке" массива были все составляющие этого класса
0
egor2116
342 / 373 / 42
Регистрация: 20.01.2013
Сообщений: 1,132
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).
1
pcvir
0 / 0 / 0
Регистрация: 22.11.2014
Сообщений: 7
22.11.2014, 17:34  [ТС] #5
Во так уже понятнее)) спасибо большое попробую сделать, дело в том что мне нужно заполнение массива функцией, просто ее как отдельную надо делать, а не в классе.... если что отпишусь)
0
22.11.2014, 17:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.11.2014, 17:34
Привет! Вот еще темы с ответами:

Создание класса шаблона, ассоциативного массива - C++
При компиляции возникают проблемы следующего характера. 1. В конструкторе IContainer компилятор пишет waring: преобразование const double...

Создание массива классов(обектов класса) - C++
Здрасти, для этого я использую vector std::vector&lt;Sprite&gt; sprites; После чего пытаюсь добавить объект в этот вектор Sprite sp =...

Создание массива класса, с установленным конструктором - C++
Не могу разобраться, создаю ссылку на класс в h файле, далее в cpp инициализирую, *.h FILE* file. *.cpp, вот тут мне нужен...

Создание класса по обработке данных массива - C++
Добрый день!!!Помогите в решении задачи на массивы. А то в них вообще бум-бум.. Нужно написать программу по обработке массива, как...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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