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

нужно описать класс Студент. правильно все делаю? - C++

Восстановить пароль Регистрация
 
nicshe
 Аватар для nicshe
1 / 1 / 1
Регистрация: 23.11.2012
Сообщений: 37
14.04.2013, 18:42     нужно описать класс Студент. правильно все делаю? #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
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
#include <iostream>
#include <iomanip>      
#include <fstream>
#include <string.h>        
 
//Описание класса Студент
 
using namespace std;
class Student
 { private:
      char pName[30];                // Cтрока, содержащая фамилию и инициалы студента
      int NumGroup;                  // номер группы
      float Rating[3];                     // оценка
   public:                           
      Student(){};                       // Пустой конструктор
 
      // Переопределенная операция для поиска студента с заданными Ф.И.О.
      // если строки совпадают (необходимо подключить модуль string.h)
      int operator ==(char Name[30]){return !strcmp(pName,Name);}
 
      // Переопределенная операция для поиска студента с средним баллом больше 4.0.
      int operator >(float SRating[3]){
          SRating[3]=4.0;
          return(Rating>SRating);}
     
      // Переопределенные методы потокового ввода и вывода
      friend istream& operator >>(istream&, Student&);  
      friend ostream& operator <<(ostream&, Student&);
 };
 
 //Переопределенный потоковый ввод
istream& operator >>(istream& in, Student& ob)
 { in>>ob.pName;                     // Читаем из входного потока фамилию и инициалы
   in>>ob.NumGroup;                  // Читаем из входного потока номер группы
   in>>ob.Rating[3];                       // Читаем из входного потока оценку
   return in;
 }
 
 //Переопределенный потоковый вывод
ostream& operator <<(ostream& out, Student& ob)
 { out<<setw(30)<<ob.pName;          // Помещаем в выходной поток фамилию и инициалы
   out<<setw(6)<<ob.NumGroup;        // Помещаем в выходной поток номер группы
   out<<setw(3)<<ob.Rating[3]<<"\n";      // Помещаем в выходной поток оценку
   return out;                      
 }
 
//ОПИСАНИЕ ФУНКЦИЙ ДЛЯ РАБОТЫ С БАЗОЙ ДАННЫХ
 
//Описание функции для ввода информации в базу данных
void InputBD()
 { ofstream f;                            // Описание выходного файлового потока
   // Описание объекта типа Студент для чтения и записи информации
   Student S;                                 
   f.open("C:\Documents\Visual Studio 2010\Projects\СТУДЕНТ\СТУДЕНТ\bd.dat");// Открытие файлового потока для записи
   int answer=1;
   while (answer)
    {  cout<<"\nВведите фамилию и инициалы в формате Фамилия И.О. <Enter>\n";
       cout<<"Номер группы <Enter>\n";
       cout<<"Введите оценку <Enter>\n";
       cout<<">";
       cin>>S;                       //Чтение данных из входного потока (с клавиатуры)
       f<<S;                         // Запись в файл введенных данных
       cout<<"\nПродолжить? 1-Да,0-Нет>";
       cin>>answer;
    }
   cout<<"=====================================================\n";
   cout<<"Ввод данных завершен\n";
   f.close();                        // Закрытие файлового потока
 }
 
//Описание функции для просмотра содержимого базы данных
 
 void ShowBD()
 { ifstream f;                            // Описание входного файлового потока
   // Описание объекта типа Студент для чтения и записи информации
   Student S;
   f.open("C:\Documents\Visual Studio 2010\Projects\СТУДЕНТ\СТУДЕНТ\bd.dat");// Открытие файлового потока для записи
   // Печать шапки таблицы
   cout<<"\n=====================================================\n";
   cout<<setw(30)<<"Фамилия И.О."<<setw(6)<<"группа"<<setw(3)<<"оценка"<<"\n";
   f>>S;                                  // Чтение данных из входного потока (из файла)
   while (!f.eof())
    { cout<<S;                            // Вывод данных на экран
      f>>S;                               // Чтение данных из входного потока (из файла)
    }
  cout<<"=====================================================\n";
  f.close();                              // Закрытие файлового потока
 }
 
//Описание функции для поиска студента с средним баллом больше 4.0.
//Входной параметр функции – оценка
void SearchRating(float SRating[3])
 { ifstream f;               // Описание входного файлового потока
   int found=0;              // Описание переменной для определения успешности поиска
   // Описание объекта типа Студент для чтения и записи информации
   Student S;
   f.open("C:\Documents\Visual Studio 2010\Projects\СТУДЕНТ\СТУДЕНТ\bd.dat");  // Открытие файлового потока для записи
   // Печать шапки таблицы          
   cout<<"\n=====================================================\n";
   cout<<setw(30)<<"Фамилия И.О."<<setw(6)<<"группа"<<setw(3)<<"оценка"<<"\n";
   f>>S;// Чтение данных из входного потока (из файла)
   while (!f.eof())          // Пока не конец файла
    { if (S>SRating)         // Если оценка > чем 4.0
      { cout<<S;             // Выводим информацию о сотруднике на экран
        found =1;            // Переопределяем переменную found
      }
      f>>S;                  // Чтение данных из входного потока (из файла)
    }
   if (!found)               // Если совпадений не было
      cout<<"\nТаких студентов нет\n";     // Выводим сообщение
  cout<<"=====================================================\n";
  f.close();                 // Закрытие файлового потока
 }
 
//Описание функции для поиска записей с заданными Ф.И.О.
void SearchName(char Name[30])
 { ifstream f;
   int found=0;
   Student S;
   f.open("C:\Documents\Visual Studio 2010\Projects\СТУДЕНТ\СТУДЕНТ\bd.dat");
   cout<<"\n=====================================================\n";
   cout<<setw(30)<<"Фамилия И.О."<<setw(6)<<"группа"<<setw(3)<<"оценка"<<"\n";
   f>>S;
   while (!f.eof())
    { if (S==Name)                 // Если фамилия и инициалы совпадают с заданными
      { cout<<S;                   // Выводим информацию о сотруднике
        found=1;
      }
      f>>S;
    }
   if (!found)
       cout<<"\nТаких студентов нет\n";
   cout<<"=====================================================\n";
   f.close();
 }
 
//Главная функция
void main()
 { 
   setlocale(LC_CTYPE, "Russian_Russia.1251");
   InputBD();                                   // Ввод информации в базу данных
   ShowBD();                                    // Вывод содержимого базы данных
   cout<<"Поиск студентов, чья оценка больше 4.0\n";
   cout<<"Поиск завершается при вводе значения, равного -1\n";
   float S_rating;                                // Заданная оценка
   while(1)                                      // Используем бесконечный цикл
     {  cout<<"Введите величину оклада или -1\n";
        cin>>S_rating;                             // Вводим искомую оценку
        if(S_rating==-1)                           // Если введено значение -1,
            break;                                // завершаем поиск
        SearchRating(S_rating);                       // Иначе осуществляем поиск
     }
   cout<<"Поиск студентов с заданными Ф.И.О.\n";
   cout<<"Поиск завершается при вводе значения, равного 0\n";
   char Name[30];                                 // Заданная строка Ф.И.О.
   int answer=1;                                  // Переменная для организации цикла
   while(answer)
     {  cout<<"\nВведите фамилию и инициалы в виде Фамилия И.О.<Enter>\n";
        cin>>Name;                                // Вводим строку - Ф.И.О.
        SearchName(Name);                         // Осуществляем поиск
        cout<<"\nПродолжить? Да-1, Нет-0>";
        cin>>answer;
     }
 }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2013, 18:42     нужно описать класс Студент. правильно все делаю?
Посмотрите здесь:

[C++] Создать класс студент и классы бюджетный студент и коммерческий студент. C++
C++ Правильно ли я делаю??
нужно описать класс Студент? подскажите в чем ошибка? C++
Разработать класс Man (человек) и производный класс Student (студент). Описать атрибуты. C++
C++ Функция в обьекте-можно ли создать?Нужно ли?Что я вобще делаю?И как правильно?
C++ НУжно Поправить класс студент
C++ Описать класс студент
C++ Нужно описать класс «множество»

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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