Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
1 / 1 / 0
Регистрация: 12.05.2015
Сообщений: 9
1

Класс Паспорт

08.06.2015, 20:57. Просмотров 1298. Ответов 1
Метки нет (Все метки)


Помогите новичку в программирование подогнать программу под требования,выручите пожалуйста
вот требования:
Класс Паспорт
Скрытые поля:
• Номер по порядку (назначается автоматически);
• ФИО владельца (составляется случайным образом, из заготовленных вариантов фамилий имён и отчеств, считанных из трёх разных файлов);
• Месяц рождения (гарнируется случайным образом, в диапазоне 1-12);
• Число рождения (генерируется случайным образом, в диапазоне, зависящем от месяца)
• Год рождения (генерируется случайным образом, не позже 2000г.);
• Серия паспорта (две заглавные русские буквы, генерирующиеся случайно);
• Номер паспорта (переменная из 6 случайных цифр, генерируемых по-отдельности);
• Возраст владельца (вычисляется, исходя из предыдущих данных используя сегодняшнюю дату).
Публичные поля:
• Статический счётчик количества экземпляров.
Скрытые методы:
• Вычисление возраста владельца паспорта.
Публичные методы:
• Конструктор (присваивает значения всем полям);
• Деструктор (уменьшает статический счётчик);
• Ручная смена года рождения в выбранном паспорте (с пересчётом возраста владельца);
• Вывод на экран всех полей (кроме статических);
Программа:
Создать массив экземпляров класса из 20 элементов. Затем предложить пользователю меню, позволяющее запускать публичные методы (кроме конструктора и деструктора), выводить данные на экран в таких режимах:
• Вывод на экран всего списка;
• Вывод на экран одного экземпляра с заданным порядковым номером;
• Вывод на экран всех экземпляров старше выбранного возраста;
а также выйти из программы. Меню зациклить. После выполнения каждого пункта очищать экран. Предусмотреть максимальное количество ошибок пользователя.

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
#include <iostream>
#include <string>
#include <Windows.h>
#include <ctime> 
#include <fstream>
 
 
using namespace std;
 
string FIO();
 
class Pasport
{
    int num; // номер
    int chislo, mes, god; // дата рождения
    int vozr; // возраст
    string PassSer, PassNumber; // паспортные данные
    string FullName; // ФИО
 
public:
    static int cn;
    Pasport()
    {
        cn++;
        num = cn;
        FullName = FIO();
        chislo = rand() % 31 + 1;
        mes = rand() % 12 + 1;
        god = rand() % 2000;
        /*struct tm   *newTime;
        time_t      szClock;
        // получение времени в секундах
        time(&szClock);
        // конвертируем время
        newTime = localtime(&szClock);
        vozr = newTime->tm_year + 1900 - god;*/
        PassSer = "АБ";
        PassNumber = "123456";
    }
    ~Pasport()
    {
        cn--;
    }
    void Print()
    {
        cout << endl << "№" << num << ' ' << FullName << endl;
        cout << "Серия паспорта:" << PassSer << " Номер паспорта:" << PassNumber << " Дата рождения:" << chislo << "." << mes << "." << god << " Возраст " << vozr << endl;
    }
    int GETgod()
    {
        return god;
    }
 
    void zamena1()
    {
        cout << "Выберите год рождения на который вы заменяете изменить:";
        cin >> god;
        /*struct tm   *newTime;
        time_t      szClock;
        // получение времени в секундах
        time(&szClock);
        // конвертируем время
        newTime = localtime(&szClock);
        vozr = newTime->tm_year + 1900 - god;*/
 
    }
};
int Pasport::cn = 0;
string FIO()
{
    const int N = 10;
    string first_name[N], second_name[N], last_name[N];
    ifstream txt;
    txt.open("Имена.txt");
    for (int i = 0; i < N; i++)
    {
        txt >> first_name[i];
    }
    txt.close();
    txt.open("Отчества.txt");
    for (int i = 0; i < N; i++)
    {
        txt >> second_name[i];
    }
    txt.close();
    txt.open("Фамилии.txt");
    for (int i = 0; i < N; i++)
    {
        txt >> last_name[i];
    }
    txt.close();
    int random = rand() % N;
    string name = first_name[random] + " ";
    random = rand() % N;
    name = second_name[random] + " " + name;
    random = rand() % N;
    name = last_name[random] + " " + name;
    return name;
}
 
void main()
{
    
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    
    srand(time(0));
    Pasport p[20];
 
    bool d = true;
    int q, a;
    int gam = 0;
    int r = 0;
    string qwe;
 
    {
        while (d)
            
        {
            system("cls");
            cout << "Выберите пункт меню" << endl; cout << "==================================" << endl;
            cout << "1.Вывод на экран всего списка" << endl;
            cout << "2.Вывод на экран одного экземпляра с заданным порядковым номером" << endl;
            cout << "3.Вывод на экран всех экземпляров старше выбранного возраста" << endl;
            cout << "4.Заменить год рождения" << endl;
            cout << "5.Выход из программы " << endl;
            cout << "=============================" << endl;
            cin >> a;
            switch (a)
            {
            case 1: 
            { 
                system("cls");
                cout << "1.Вывод на экран всего списка" << endl;
                for (int i = 0; i < 20; i++)
                {
                    p[i].Print();
 
                }
        
                system("pause");
                break;
 
 
            case 2:
                system("cls");
                cout << "Какой экземпляр вы хотите вывести?\n";
                cin >> q;
                p[q - 1].Print();
                system("pause");
            
                break;
                case 3:
                    system("cls");
                    cout << "Старше какого возраста вы хотите вывести?\n";
                    cin >> q;                   
                    p[q - 1].Print();
                    system("pause");
                    break;
 
                case 4:
 
                    system("cls");
                    cout << "Введите № екземпляра год рождения которого вы хотите изменить.\n ";
                    cin >> r;
                    p[r - 1].zamena1();
                    break;
 
                 case 5:
                    d = false;
                     break;
 
                 default:
                  cout << "Вы ввели не верное число попробуйте  еще раз.\n";
                  system("pause");
 
            }
            }
            cout << "Спасибо за внимание.\n";
        
 
        }
    }
}
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.06.2015, 20:57
Ответы с готовыми решениями:

Класс паспорт и его наследование
Помогите пожалуйста с таким заданием: Задание 1. Создайте класс «Паспорт». - Данные класса -...

Создайте класс Passport (паспорт), который будет содержать паспортную информацию о гражданине Украины
Создайте класс Passport (паспорт), который будет содержать паспортную информацию о гражданине...

Есть класс A и класс B, класс B вложен в класс A и вложен в него, как классу B получить доступ к переменным класса A просто по имени?
На самом деле ничё фантастического я не прошу, ведь: template &lt;class T&gt; class matrix { ...

Класс таблиц баз данных и класс записей в таблице(реляционная таблица). Предусмотреть класс связей между таблицами
Здравствуйте! Никак не могу продумать структуру этой программы. Проходим наследование, но я все...

1
mr_mczakenberg
08.06.2015, 21:00     Класс Паспорт
  #2

Не по теме:

Цитата Сообщение от OLEG31 Посмотреть сообщение
C++
1
cout << "Спасибо за внимание.\n";
Уже третий раз вижу эту строчку в подобных темах :)

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2015, 21:00
Привет! Вот еще темы с ответами:

Класс: Разработать абстрактный класс класс Point для задания координаты...
Всем привет, помогите пожалуйста решить задачу, я уже всю голову сломал, не знаю как решить... ...

Отдельно класс данных, класс формул и главный класс
Здравствуйте! У меня есть три вопроса. Первый вопрос. Скажите пожалуйста! Правильный ли это...

Паспорт HDD
Кто-нибудь знает можно ли написать программу на C++, которая читала бы паспорт жесткого диска и...

Биометрический паспорт
Привет всем. Такое дело... Встал передо мной вопрос, оформлять ли биометрический паспорт? Вроде...


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

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

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