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

Создать расширенный класс СТУДЕНТ - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
3Doleg
40 / 40 / 15
Регистрация: 22.10.2012
Сообщений: 217
01.04.2014, 18:11     Создать расширенный класс СТУДЕНТ #1
Здраствуйте, есть довольно не малое задание, код которого почти полностью представлен ниже:

Задание:
1. Создать класс СТУДЕНТ, который вмещает фамилию, им'я, отчество, номер курса, id номер, рейтинг(100 бальная шкала).
2.Определить конструктор инициализации, копирования, деструктор и методы для чтения и изменения значений полей данных класса.
3. Перегрузить операцию инкремента(++) (дружеская к классу функция) для изменения курса, операцию =, потоковие операции ввода-вывода(<<, >>) обьектов.
4. Создать класс - потомок ДИПЛОМНИКИ, который вмещает тему дипломной работы(строка символов) и процент выполнения етой роботы в даный момент. Определить конструкторы, деструктор и метод для изменения назвы дипломной работы.
5. В границах иерархии класов создать полиморфический кластер для чтения полей-строк символов(имени студента или названия дипломной работы). Продемонстрировать механизм познего связывания.
6. Создать класс ГРУПА, который вмещает массив обьектов класса ДИПЛОМНИК. Определить фамилии студентов, процент выполнения дипломной роботы > 80%.
7. Для роботы с массивом обьектов использовать класс - итератор.

Сообственно программа работает. Но было бы очень хорошо, если кто-то бы смог направить меня на правильность написания етой програмы, правильность инкапсуляции, полиморфизма и другого в даном коде, т.к. мой код очень ужасен(посмотрев, вы поймете о чем я) . Буду ОЧЕНЬ благодарен за помощь в переработке на хорошый код и прочее замечания.
// Програма включает все, кроме строки с курсивом в 6 пункте. Извиняйте что без коментариев(

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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <string>
 
#include <vector>
 
using namespace std;
 
class Student {
 
private:
 
    string surName;
    string name;
    string last;
    int course;
    int id;
    float raiting;
 
public:
    //empty constructor
    Student(void){
    }
 
    Student(string surName, string name, string last, int course, int id, float raiting) {
        this->surName = surName;
        this->name = name;
        this->last = last;
        this->course = course;
        this->id = id;
        this->raiting = raiting;
    }
 
    Student(const Student& student) {
        this->surName = student.surName;
        this->name = student.name;
        this->last = student.last;
        this->course = student.course;
        this->id = student.id;
        this->raiting = student.raiting;
 
        setSurName(surName);
        setName(name);
        setLast(last);
        setCourse(course);
        setId(id);
        setRaiting(raiting);
    }
 
    ~Student() {}
 
    void Student::setSurName(string surName) {
        cout << "Vvedit prizvuwe: " << endl;
        cin >> surName;
 
        this->surName = surName;
    }
 
    string Student::getSurName() {
        return this->surName;
    }
 
    void Student::setName(string name) {
        cout << "Vvedit imya: " << endl;
        cin >> name;
 
        this->name = name;
    }
 
    string Student::getName() {
        return this->name;
    }
 
    void Student::setLast(string last) {
        cout << "Vvedit po-batkovi: " << endl;
        cin >> last;
 
        this->last = last;
    }
 
    string Student::getLast() {
        return this->last;
    }
 
    void Student::setCourse(int course) {
        cout << "Vvedit kyrs: " << endl;
        cin >> course;
 
        this->course = course;
    }
 
    int Student::getCourse() {
        return this->course;
    }
 
    void Student::setId(int id) {
        cout << "Vvedit id: " << endl;
        cin >> id;
 
        this->id = id;
    }
 
    int Student::getId() {
        return this->id;
    }
 
    void Student::setRaiting(float raiting) {
        cout << "Vvedit reitung: " << endl;
        cin >> raiting;
 
        this->raiting = raiting;
    }
 
    float Student::getRaiting() {
        return this->raiting;
    }
 
    //virtual
    virtual void Student::setDWork(char* dWork) {
        cout << "Test class Student!" << endl;
    }
    //\virtual
 
    friend Student& operator ++(Student& left);
 
    Student& operator = (const Student& right) {
 
        //test same recognition
        if (this == &right) {
            return *this;
        }
 
        surName = right.surName;
        name = right.name;
        last = right.last;
        course = right.course;
        id = right.id;
        raiting = right.raiting;
        return *this;
    }
 
    friend std::ostream& operator << (std::ostream& out, Student const& data);
    friend std::istream& operator >> (std::istream& in, Student& data);
 
};
 
Student& operator ++(Student& left) {
    left.course++;
    return left;
}
 
std::ostream& operator << (std::ostream& out, Student const& data) {
    return (out << "SurName: " << data.surName << "\nName: " << data.name << "\nLastName: " << data.last
                << "\nCourse: " << data.course << "\nId: " << data.id << "\nRaiting: " << data.raiting);
}
 
std::istream& operator >> (std::istream& in, Student& data) {
    return (in >> data.surName >> data.name >> data.last >> data.course >> data.id >> data.raiting);
}
 
 
 
class Graduate : public Student {
 
private:
 
    string surName = getSurName();
    string name = getName();
    string last = getLast();
    int course = getCourse();
    int id = getId();
    float raiting = getRaiting();
 
    char buf[80];
    char* dWork = buf;
    float percent;
    Student student = Student(surName, name, last, course, id, raiting);
 
public:
 
    Graduate(void) :student() {
        studentInfo();
        setDWork();
        setPercentNow();
    }
 
    Graduate(float raiting) {
    }
 
    Graduate(char* dWork, float percent, Student student) {
        this->student = student;
        this->percent = percent;
    }
 
    Graduate(const Graduate& graduate)  :student() {
        studentInfo();
        setPercentNow();
 
        //late binding mechanizm
        Graduate dWorkObject;
        Graduate& link = dWorkObject;
        link.setDWork();
    }
 
    ~Graduate() {}
 
    void Graduate::studentInfo() {
        student.setSurName(surName);
        student.setName(name);
        student.setLast(last);
        student.setCourse(course);
        student.setId(id);
        student.setRaiting(raiting);
    }
 
    virtual void Graduate::setDWork() {
        cout << "Vvedit temy duplomnoji: " << endl;
        cin >> dWork;
 
        this->dWork = dWork;
    }
 
    char* Graduate::getDWork() {
        return this->dWork;
    }
 
    void Graduate::setPercentNow() {
        cout << "Vvedit procent vukonanoi robotu na danui moment: " << endl;
        cin >> percent;
 
        this->percent = percent;
    }
 
    float Graduate::getPercentNow() {
        return this->percent;
    }
 
    friend std::ostream& operator << (std::ostream& out, Graduate const& data);
};
 
std::ostream& operator << (std::ostream& out, Graduate const& data) {
    return (out << "\nTema duplomnoi: " << data.dWork << "\nProcent vukonannya na danui moment: " << data.percent
                << "\n" << data.student);
}
 
 
class Group {
 
private:
    float raiting;
    unsigned int count = 0;
 
public:
 
    Group(void) {
        catalog();
    }
 
    Group(Group& group) {
        group.catalog();
    }
 
    ~Group() {}
 
    void Group::catalog() {
        cout << "Enter count students in group: ";
        cin >> count;
 
        //creating container 'vector'
        vector<Graduate> numbers(count);
 
        //iterator point on container 'vector'
        vector<Graduate>::iterator i;
 
        //clear screen
        system("cls");
 
        cout << "Student catalog: \n" << endl;
 
        for (i = numbers.begin(); i < numbers.end(); i++) {
                cout << *i << endl;
        }
    }
 
};
 
 
int main(void) {
    
    Group object;
 
    return 0;
}
Пример вывода:
Миниатюры
Создать расширенный класс СТУДЕНТ  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.04.2014, 20:59     Создать расширенный класс СТУДЕНТ
Еще ссылки по теме:

C++ Создать класс "Студент"
Создать класс "студент" C++
C++ Создать класс "Студент", имеющий имя (указатель на строку), курс и идентификационный номер

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

Или воспользуйтесь поиском по форуму:
3Doleg
40 / 40 / 15
Регистрация: 22.10.2012
Сообщений: 217
06.04.2014, 20:59  [ТС]     Создать расширенный класс СТУДЕНТ #21
Никто не подскажет, как без индуского кода выполнить следущее задание?
Определить фамилии студентов, процент выполнения дипломной роботы > 80%
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Yandex
Объявления
06.04.2014, 20:59     Создать расширенный класс СТУДЕНТ
Ответ Создать тему
Опции темы

Текущее время: 13:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru