- •Перелік позначень та скорочень
- •1 Огляд предметної області та постановка задачі
- •1.1 Постановка задачi
- •1.2 Програмні засоби
- •2 Алгоритмічне забезпечення програмного засобу
- •2.1 Алгоритм розв’язання постановленої задачі
- •Перелік джерел інформації
- •Додаток а блок – схема
- •Додаток б код програми
- •Міністерство освіти і науки україни
- •Додаток в презентаційні матеріали
Перелік джерел інформації
Буч Г. Объектно-ориентированный анализ и проектирование. – СПб: Бином, Невский диалект, 2008.
Архангельский А.Я. Программирование в С++ Builder 6. - М.: «Бином», 2003.
Хортон А. Visual С++ 2005: базовый курс. – М: «Вильямс», 2007.
Макконнелл С. Совершенный код. – СПб: Питер, 2007.
Корн Г., Корн Т. Справочник по математике. – М: Наука, 1973.
Уроки програмирования на С++ с нуля // [Електронний ресурс] // Режим доступа: https://code-live.ru/tag/cpp-manual/
С++ для начинающих // [Електронний ресурс] // Режим доступа: http://valera.asf.ru/cpp/book/
Язык программирования С++// [Електронний ресурс] // Режим доступа: http://cppstudio.com/
Основы программирования на С / С++ (Си++) для начинающих и новичков // [Електронний ресурс] // Режим доступа: http://cppstudio.com/cat/274/
. С++ // [Електронний ресурс] // Режим доступа: http://kvodo.ru/category/lessons/cplusplus
Додаток а блок – схема
Додаток б код програми
#include<iostream>
#include<Windows.h>
#include<string>
#include<conio.h>
#include<fstream>
#include<ctime>
using namespace std;
int const C = 15;
int const O = 30;
int const Y = 20;
class loger{
int sec, min, hour, day, mon, year, Viv;
public:
void timer(){
//Текущее время.
time_t t = time(0);
tm now;
localtime_s(&now, &t);
t = time(0);
localtime_s(&now, &t);
sec = (now.tm_sec);
min = (now.tm_min);
hour = (now.tm_hour);
day = (now.tm_mday);
mon = (now.tm_mon + 1);
year = (now.tm_year + 1900);
//------------------------------------------------------------------------------------------------------------
ofstream logg;
logg.open("logg.txt", ios::app);
logg << " " << day << "." << mon << "." << year << "|" << hour << ":" << min << ":" << sec << "" << endl;
logg.close();
}
void var(boolean &u){
ofstream logg;
logg.open("logg.txt", ios::app);
logg << "========================================================================" << endl;
timer();
logg << " Вывод мeню на экран." << endl;
logg.close();
}
void var(){
ofstream logg;
logg.open("logg.txt", ios::app);
logg << "/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/" << endl;
timer();
logg << " Запуск класса." << endl << "Считывание из файлов." << endl << "Вычисление данных." << endl << "Создание экземпляров класса." << endl << "Вывод меню на экран" << endl << "Метод вызвавший событие - main" << endl;
logg.close();
}
void var(string wr){
ofstream logg;
logg.open("logg.txt", ios::app);
logg << "========================================================================" << endl;
timer();
logg << " Очистка экрана." << endl << " Выбран пункт " << wr << endl;
logg.close();
}
void var(int &bob){
ofstream logg;
logg.open("logg.txt", ios::app);
timer();
logg << " Выведено " << bob << " паспорт (а)(ов)." << endl << endl;
logg.close();
}
void var(char &V, int Viv){
ofstream logg;
logg.open("logg.txt", ios::app);
timer();
logg << " Выбран " << Viv << " экземпляр." << endl << " Вывод на экран экземпляра." << endl;
logg.close();
}
void var(int viv, int no){
ofstream logg;
logg.open("logg.txt", ios::app);
timer();
logg << " Выбранный возраст: " << viv << endl << " Вывод на экран экземпляра с номером " << no << endl << endl;
logg.close();
}
void var(int eks, string bon){
ofstream logg;
logg.open("logg.txt", ios::app);
logg << "========================================================================" << endl;
timer();
logg << " Выбран " << eks << " экземпляр." << endl;
timer();
logg << " Вывод на экран экземпляра." << endl << " Запрос ввода новой даты рождения." << endl;
logg.close();
}
void var(string bonny, int &ko){
ofstream logg;
logg.open("logg.txt", ios::app);
logg << "========================================================================" << endl;
timer();
logg << " Введенная дата: " << ko << "." << endl;
timer();
logg << " Вывод обновленного элемента." << endl;
logg.close();
}
void var(char &l, char &p){
ofstream logg;
logg.open("logg.txt", ios::app);
logg << "========================================================================" << endl;
timer();
logg << " Введено некорректное значение. => Возврат в меню." << endl;
logg.close();
}
void var(bool &seriy, bool &FI, bool &chy, bool &Me, bool &Yea, bool &Cit, bool &getvo, bool &setNewvo, bool &Vivo){
ofstream logg;
logg.open("logg.txt", ios::app);
if (seriy == true){
logg << endl << "Выведен экземпляр. Активированы такие методы:" << endl;
logg << "Метод 'seriya' - успешно выполнен " << endl;
}
if (FI == true){
logg << "Метод 'FIO' - успешно выполнен " << endl;
}
if (chy == true){
logg << "Метод 'ch' - успешно выполнен " << endl;
}
if (Me == true){
logg << "Метод 'Mes' - успешно выполнен " << endl;
}
if (Yea == true){
logg << "Метод 'Year' - успешно выполнен " << endl;
}
if (Cit == true){
logg << "Метод 'Cit' - успешно выполнен " << endl;
}
if (getvo == true){
logg << "Метод 'getvoz' - успешно выполнен " << endl;
}
if (setNewvo == true){
logg << "Метод 'setNewvoz' - успешно выполнен " << endl;
}
if (Vivo == true){
logg << "Метод 'Vivod' - успешно выполнен " << endl << endl;
}
logg.close();
}
void var(string &m, boolean &z){
ofstream logg;
logg.open("logg.txt", ios::app);
logg << "========================================================================" << endl;
timer();
logg << " Выход из программы." << endl;
logg << "/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/~/" << endl;
logg.close();
}
};
class Zapasp
{ //Заполнение паспорта.
int Nomer, o, p, mes, NumPas, God, chi, i, MasY;
int DataD[12];
int nDay, nMon, nYea, Godik;
string LNa5me, Name, SName;
string familia, imy, otchestvo, Bukvi, goro;
void Godiko(){
if (nDay < chi || nMon < mes){
Godik = nYea - MasY - 1;
cout << " ( Возраст " << Godik << " )" << endl;
}
else{
Godik = nYea - MasY;
cout << " ( Возраст " << Godik << " )" << endl;
}
}
public:
static loger *tg;
bool seriy, FI, chy, Me, Yea, Cit, getvo, setNewvo, Vivo;
static int cnt;
Zapasp(){
int NomPas;
string famil[C];
string imya[C];
string otch[C];
string gorod[C];
cnt++;
Nomer = cnt;
NumPas = 0;
//------------------------------------------------------------------------------------------------------------
//Фамилия.
ifstream Famil;
Famil.open("Famil.txt");
for (o = 0; o < C; o++){
Famil >> famil[o];
}
o = rand() % 15;
familia = famil[o];
//------------------------------------------------------------------------------------------------------------
//Имя.
ifstream Imya;
Imya.open("Imya.txt");
for (o = 0; o < C; o++){
Imya >> imya[o];
}
o = rand() % 15;
imy = imya[o];
//------------------------------------------------------------------------------------------------------------
// Отчество.
ifstream Otchestvo;
Otchestvo.open("Otchestvo.txt");
for (o = 0; o < C; o++){
Otchestvo >> otch[o];
}
o = rand() % 15;
otchestvo = otch[o];
string Bukv[O]; //Серия паспорта.
//------------------------------------------------------------------------------------------------------------
//Буквы.
ifstream Lat;
Lat.open("Lat.txt");
for (o = 0; o < O; o++){
Lat >> Bukv[o];
}
o = rand() % 15;
p = rand() % 15;
Bukvi = Bukv[o] + Bukv[p];
//------------------------------------------------------------------------------------------------------------
//Цифры.
for (int i = 0; i < 6; i++)
{
NomPas = rand() % 10;
for (int j = i + 1; j < 6; j++){
NomPas *= 10;
}
NumPas += NomPas;
}
//------------------------------------------------------------------------------------------------------------
//Месяц.
i = 0;
for (i; i < 12; i++)
{
DataD[i] = rand() % 12 + 1;
}
mes = DataD[rand() % 12];
ch(chi, i);
//------------------------------------------------------------------------------------------------------------
//Дата.
MasY = rand() % 80;
MasY = MasY + 1920;
//------------------------------------------------------------------------------------------------------------
//Город.
ifstream City;
City.open("City.txt");
for (o = 0; o < C; o++){
City >> gorod[o];
}
o = rand() % 15;
goro = gorod[o];
//------------------------------------------------------------------------------------------------------------
//Текущее время.
time_t t = time(0);
tm now;
localtime_s(&now, &t);
t = time(0);
localtime_s(&now, &t);
nDay = (now.tm_mday);
nMon = (now.tm_mon + 1);
nYea = (now.tm_year + 1900);
//------------------------------------------------------------------------------------------------------------
}
void seriya(){
cout << "===================================" << Bukvi << " ";
cout << NumPas;
cout << "================================";
cout << "№ " << Nomer << endl;
seriy = true;
tg -> var(seriy, FI, chy, Me, Yea, Cit, getvo, setNewvo, Vivo);
}
void FIO(){
cout << " " << familia << " ";
cout << imy << " ";
cout << otchestvo << " " << endl << endl << " ";
seriy = false;
FI = true;
tg->var(seriy, FI, chy, Me, Yea, Cit, getvo, setNewvo, Vivo);
}
void ch(int & chi, int & i){
if (mes == 1, 3, 5, 7, 8, 10, 12){
chi = rand() % 31 + 1;
}
else{
if (mes == 2){
chi = rand() % 29 + 1;
}
else{
if (mes == 4, 6, 9, 11){
chi = rand() % 30 + 1;
}
}
}
FI = false;
chy = true;
//tg->var(seriy, FI, chy, Me, Yea, Cit, getvo, setNewvo, Vivo);
}
void Mes(){
cout << chi << " ";
switch (mes){
case 1:
cout << "Января "; // 31
break;
case 2:cout << "Февраля "; // 29
break;
case 3:cout << "Марта "; // 31
break;
case 4:cout << "Апреля "; // 30
break;
case 5:cout << "Мая "; // 31
break;
case 6:cout << "Июня "; // 30
break;
case 7:cout << "Июля "; // 31
break;
case 8:cout << "Августа "; // 31
break;
case 9:cout << "Сентября ";// 30
break;
case 10:cout << "Октября ";// 31
break;
case 11:cout << "Ноября "; // 30
break;
case 12:cout << "Декабря ";// 31
break;
}
chy = false;
Me = true;
tg->var(seriy, FI, chy, Me, Yea, Cit, getvo, setNewvo, Vivo);
}
void Year(){
cout << MasY << " года.";
Me = false;
Yea = true;
tg->var(seriy, FI, chy, Me, Yea, Cit, getvo, setNewvo, Vivo);
}
void City(){
cout << endl << " город " << goro << endl << " Харьковской области." << endl;
Yea = false;
Cit = true;
tg->var(seriy, FI, chy, Me, Yea, Cit, getvo, setNewvo, Vivo);
}
int getvoz(){
return Godik;
Cit = false;
getvo = true;
tg->var(seriy, FI, chy, Me, Yea, Cit, getvo, setNewvo, Vivo);
}
void setNewvozr(int &newvoz){
MasY = newvoz;
getvo = false;
setNewvo = true;
tg->var(seriy, FI, chy, Me, Yea, Cit, getvo, setNewvo, Vivo);
}
void Vivod(){
seriya();
FIO();
Mes();
Year();
Godiko();
City();
setNewvo = false;
Vivo = true;
}
~Zapasp(){
Vivo = false;
Nomer--;
}
};
void menus(Zapasp classi[20], loger log, int &x){
string wr, bonny, bon, m;
boolean u, z;
char V, l, p;
int VibNom2, VibNom3, VibNom4, menu, he, t, newvoz, stvoz, bob, nome, Viv, no, viv, eks, ko;
for (int i = 1; i > 0;){
log.var(u);
cout << "======================================МЕНЮ======================================" << endl;
cout << " 1: Вывести все паспорта." << endl << " 2: Вывод на экран желаемый экземпляр." << endl << " 3: Вывод на экран экземпляра старше заданного возраста." << endl << " 4: Смена возраста выбранного паспорта." << endl << " Esc: Выйти из программы." << endl;
while (1){
menu = _getch();
switch (menu){
case (49) :
wr = "Первый. (Вывести все паспорта.) \n";
log.var(wr);
system("cls");
for (i = 0; i < Y;){
for (int l = 0; l < 2; l++){
classi[i].Vivod();
cout << endl;
i++;
}
system("pause");
bob = i;
log.var(bob);
}
system("cls");
menus(classi, log, x);
break;
//2------------------------------------------------------------------------------------------------------------
case (50) : system("cls");
wr = "Второй. (Вывод на экран желаемый экземпляр.) \n";
log.var(wr);
cout << "Выберите экземпляр который хотите вывести: ";
nome = 2;
cin >> VibNom2;
if (VibNom2 > 20 || VibNom2 == 0){
log.var(l, p);
for (i = 3; i > 0; i--){
system("cls");
cout << "Такого экземпляра не существует." << endl;
cout << "Возврат в меню: " << i;
Sleep(1000);
}
system("cls");
menus(classi, log, x);
}
else{
classi[VibNom2 - 1].Vivod();
Viv = VibNom2;
log.var(V, Viv);
//log.var(seriy, FI, chy, Me, Yea, Cit, getvo, setNewvo, Vivo);
}
system("pause");
system("cls");
menus(classi, log, x);
break;
//3------------------------------------------------------------------------------------------------------------
case (51) : system("cls");
wr = "Третий. (Вывод на экран экземпляра старше заданного возраста.) \n";
log.var(wr);
cout << "Введите желаемый возраст: ";
cin >> VibNom3;
if (VibNom3 >= 97|| VibNom3 <= 15){
log.var(l, p);
for (i = 3; i > 0; i--){
system("cls");
cout << "Экземпляра с таким возрастом не существует." << endl;
cout << "Возврат в меню: " << i;
Sleep(1000);
system("cls");
}
system("cls");
menus(classi, log, x);
}
else{
for (i = 0; i < Y; i++){
classi[i].getvoz();
int vozr = classi[i].getvoz();
if (classi[i].getvoz() > VibNom3){
classi[i].Vivod();
system("pause");
no = i;
no++;
viv = VibNom3;
log.var(viv, no);
//log.var(seriy, FI, chy, Me, Yea, Cit, getvo, setNewvo, Vivo);
}
}
}
system("pause");
system("cls");
menus(classi, log, x);
break;
//4------------------------------------------------------------------------------------------------------------
case (52) : system("cls");
wr = "Четвертый. (Смена возраста выбранного паспорта.) \n";
log.var(wr);
cout << "Выберите экземпляр который хотите изменить: ";
cin >> VibNom4;
eks = VibNom4;
log.var(eks);
if (VibNom4 > 20 || VibNom4 == 0){
log.var(l, p);
for (i = 3; i > 0; i--){
system("cls");
cout << "Такого экземпляра не существует." << endl;
cout << "Возврат в меню: " << i;
Sleep(1000);
system("cls");
}
system("cls");
menus(classi, log, x);
}
else{
classi[VibNom4 - 1].Vivod();
cout << endl << "Введите новый год рождения владельца:" << endl;
cin >> newvoz;
if (newvoz < 1919 || newvoz > 1999){ cout << "Недопустимый возраст!" << endl; log.var(l, p); Sleep(1500); system("cls"); menus(classi, log, x); }
ko = newvoz;
log.var(bonny, ko);
classi[VibNom4 - 1].setNewvozr(newvoz);
classi[VibNom4 - 1].Vivod();
system("pause");
system("cls");
}
system("cls");
menus(classi, log, x);
break;
//Esc------------------------------------------------------------------------------------------------------------
case (27) : log.var(m,z); exit(0);;
break;
}
}
}
system("cls");
}
int Zapasp::cnt = 0;
loger *Zapasp::tg;
void main(){
int x;
srand(time(0));
loger log;
log.var();
setlocale(LC_CTYPE, "rus");
Zapasp classi[20];
Zapasp::tg = &log;
x = 0;
x--;
menus(classi, log, x);
}
