Курсовая работа (т): Довідник астронома

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

комп'ютерний програмування файл навчальний

Список джерел

1.      Страуструп Б. Язык программирования С++. Специальное издание. - М., СПб.:”Издательство БИНОМ” - „Невский Диалект”, 2001г. - 1099 с.

2.      Дейтел Х., Дейтел П. Как программировать на С++. Третье издание.-М.: ЗАО „Издательство БИНОМ”, 2001г. - 1152с.

.        Эндрю Троельсен. C# и платформа.NET. Библиотека программиста. - СПб.: Питер, 2005. - 796 с.

.        Бондарев В.М., Объектно-ориентированное программирование на С#. Учебное пособие. - Харьков: СМИТ, 2009г. - 224 с.

.        Бондарев В.М., Программирование на С++. Учебное пособие. - Харьков: СМИТ, 2004г. - 294 с.

Додаток А

ЛІСТИНГ ПРОГРАМИ

#include <iostream>

#include <vector>

#include <string>

#include <fstream>

#include <stdio.h>

#include <conio.h>

#include <windows.h>

#include <sstream>namespace std;kolStar; //зберігає кількість зірок, що занесені до довідникаTime

{:minute;hour;date;month;() //конструктор класу

{

//встановлення дати та часу на

//15 травня 12:00= 5;= 15;= 12;= 0;

}

//метод встановлення датиsetDate(int setMonth, int setDate)

{= setMonth;= setDate;

}

//метод встановлення часуsetTime(int setHour, int setMinute)

{= setHour;= setMinute;

};Star

{:xKor; //схилення зоріyKor; //пряме сходження зоріstarBright; //видима яскравість зоріtrek; //відставнь до зоріconstellation; //назва сузіря до якого зоря входитьname; //назва зорі

//конструктор класу(string nameOfStar, float x, float y, string constel,bright, float setTrek)

{

//заповнення інформації про зорю, що створюється= nameOfStar;= setTrek;= x;= y;= constel;= bright;

};AstronomControl

{:lastDoKol; //зберігає довжину останнього списку зірок, котрі були запрошені<Star*> star; //вектор зірок

//конструктор класу()

{

//обнулення змінних.clear();= 0;= 0;

}

//метод додавання до каталогу нової зоріaddStar(string nameOfStar, float x, float y,zod, float bright, float setTrek)

{++; //оновлення кількості зорей у каталозі

//створення нового обьекта класу Зоря та занесення її до вектору

star.push_back (new Star(nameOfStar, x, y, zod, bright, setTrek));inFile("AstronomBook.txt", ios_base::app);<< nameOfStar << endl;<< x << endl;<< y << endl;<< zod << endl;<< bright << endl;<< setTrek << endl;.close();

}

//метод, що повертає зорі, на небосхилі у заданій широті та у заданий час<string> getStarsByPlace(float xKor, Time time){

//створення тимчасових змінних та

//обнулення інформації про кількість поточних зірок у векторі<string> ret;.clear();= 0;minZnach;maxZnach;

//вираховуємо змішення Землі від лінії весеннього рівноденняshiftTime = 24 * ((time.month - 1) * 30 + time.date - 81) / 365;.hour = time.hour + (int)shiftTime;.minute = time.minute + (shiftTime - ((int)shiftTime));

//якщо зміщення віходить за діапазон, виправляємо цю неточність(time.hour > 24).hour = time.hour - 24;

//розрахунок зірок у північній півкулі(xKor >= 0)

{

//знахождення максиального огляду за данної широти= xKor - 90;= 90 - xKor;

}//розрахунок зірок у південні півкулі

{

//знахождення максиального огляду за данної широти= xKor + 90;= -90 - xKor;

}

//шукаємо зорі, які видно у будь яку пору року(int i = 0; i < kolStar; i++)(star[i]->starBright >= maxZnach)

{

//заносимо її до веторуstr = "";+= star[i]->name;+= ", що знаходится в сузiр'ї ";+= star[i]->constellation;.push_back(str);++;

}

{((star[i]->starBright > minZnach) && (star[i]->starBright < maxZnach))

{(time.hour < 6)

{((star[i]->xKor < time.hour) || (star[i]->xKor < 24 - 6 + time.hour))

{str = "";

str += star[i]->name;+= ", що знаходится в сузiр'ї ";+= star[i]->constellation;.push_back(str);++;

}

}if (time.hour > 18)

{((star[i]->xKor > time.hour) || (star[i]->xKor < 6 - 24 + time.hour))

{str = "";+= star[i]->name;+= ", що знаходится в сузiр'ї ";+= star[i]->constellation;.push_back(str);++;

}

{((star[i]->xKor > time.hour - 6) && (star[i]->xKor < time.hour + 6)){str = "";+= star[i]->name;+= ", що знаходится в сузiр'ї ";+= star[i]->constellation;.push_back(str);++;

}ret;

}

//метод виведення найяскравіших зірок<string> getBrightersStars(){<string> ret; //змінна збереження списку найяскравіших зорей.clear(); //спорожнюємо вектор перед використанням= 0; //обнулення кількості єлементів у векторі

//перевірка всіх зорей на яскравість та при визначенні яскравості

//додавання до вектору цієї зорі(int i = 0; i < kolStar; i++)(star[i]->starBright < 0.5){.push_back(star[i]->name);++;

}ret;

}

\

//метод, що повертає вектор зорей, що знаходятся у заданному сузірї<string> getStartByConstellation(string searchConstellation)

{

//свторюємо вектор для запису зорей та обнулюєто змінні<string> ret;.clear();= 0;

//пошук зорей та додавання їх до ветора(int i = 0; i < kolStar; i++)(star[i]->constellation == searchConstellation)

{.push_back(star[i]->name);++;

}ret;

}

};

//свторення обьекту керування довідникомastronom;readInfoAboutStar()

{read("AstronomBook.txt"/*, ios_base::in*/);(read.is_open())

{isEnd = false;(!isEnd)

{name = "";sozvezdiye = "";x, y, bright, trek;>> name;>> x;>> y;>> sozvezdiye;>> bright;>> trek;(int i = 0; i < kolStar; i++)(name == astronom.star[i]->name)= true;(!isEnd).addStar(name, x, y, sozvezdiye, bright, trek);

//addStar("Сіріус", 6.45, -16.42, "Великого Пса", -1.46, 8.6);

}

{

//у вигляді [назва] [пряме сходження][схилення][сузірье][яскравість][відстань].addStar("Sirius", 6.45, -16.42, "BigDog", -1.46, 8.6);.addStar("Canopus", 6.23, -52.41, "Keel", -0.72, 310);.addStar("Toliman", 14.39, -60.50, "Centauri", -0.27, 4.3);.addStar("Arcturus", 14.15, 19.10, "Bootesа", -0.04, 34);.addStar("Vega", 18.36, 38.47, "Lira", 0.03, 25);.addStar("Chapel", 5.16, 45.59, "charioteer",0.08, 41);.addStar("Rigel", 5.14, -8.12, "Orionа", 0.12, 870);.addStar("Procyon", 7.39, 5.13, "Malagos", 0.38, 11.4);.addStar("Achernar", 1.37, -57.14, "Eridan", 0.46, 69);.addStar("Betelgeuse", 5.55, 7.24, "Orion", 0.5, 530);.addStar("Hadar", 14.03, -60.22, "Centauri", 0.61, 400);.addStar("Acrux", 12.26, -63.05, "Southern_Cross", 0.76, 330);.addStar("Altair", 19.50, 8.52, "Eagle", 0.77, 16);.addStar("Aldebaran", 4.35, 16.30, "Taurus", 0.85, 60);.addStar("Antares", 16.29, -26.25, "Scorpio", 0.96, 610);.addStar("Spica", 13.25, -11.09, "Virgin", 0.98, 250);.addStar("Pollux", 7.45, 28.01, "Twins", 1.14, 40);.addStar("Formalhaut", 22.57, -29.37, "Southern_Fish", 1.16, 22);.addStar("Becrux", 12.47, -59.41, "Southern_Cross", 1.25, 290);.addStar("Deneb", 20.41, 45.16, "Swan", 1.25, 1500);.addStar("Regul", 10.08, 11.58, "Lion", 1.35, 69);.addStar("Adar", 6.58, -28.58, "BigDog", 1.5, 400);.addStar("Castor", 7.34, 31.53, "Twins", 1.57, 49);.addStar("Gacrux", 12.31, -57.06, "Southern_Cross", 1.63, 120);.addStar("Shaul", 17.33, -37.06, "Scorpio", 1.63, 330);

}.close();

}Menu()

{

//параметр виходу встановлюємо як хибуisExit = false;chooseNum;

//меню програми

{<<"\t\t\tДовiдник астронома";<< endl<<endl;<< "1.Додати зорю" << endl;<< "2.Вивести найяскравiшi зорi" << endl;<< "3.Вивести зорi у заданому сузiр\"ї" << endl;<< "4.Вивести зорi у заданiй точцi свiту i у заданий час" << endl;<< "5.Вихiд" << endl;

//считування результату>> chooseNum;

//вибір результату(chooseNum)

{

//свторення нової зірки1:

{name = "";zodiak = "";x = 0;y = 0;velichina = 0;bright = 0;("cls");<< "Введiть назву зорi" << endl;>> name;<< "Введiть пряме пiднесення зорi у виглядi години.хвилини" << endl;>> x;<< "Введiть схилення зорi у виглядi градуси.хвилини" << endl;>> y;<< "Введiть вiдстань до зорi" << endl;>> velichina;<< "Введiть видиму зоряну величину" << endl;>> bright;<< "Оберiть сузiр\"я до якого вiдносится зоря" << endl;>> zodiak;<<"Нажмiть Enter для повернення в головне меню...";

_getch();("cls");

//додавання нової зірки до каталогу.addStar(name, x, y, zodiak, bright, velichina);

};2:

{

system("cls");

//виведння найяскравіших зірок<string> brithtersStar = astronom.getBrightersStars();(int i = 0; i < astronom.lastDoKol; i++)<< brithtersStar[i] << endl;

cout<<"\n\nНажмiть Enter для повернення в головне меню...";

_getch();("cls");

};3:

{("cls");

//виведення зірок що знаходятся в введеному сузірїnameOfConstellation = "";<string> starsVector;.clear();<< "Введiть iм'я сузiр\"я" << endl;>> nameOfConstellation;= astronom.getStartByConstellation(nameOfConstellation);<< "Результати пошуку зiрок у сузiр\"ї " << nameOfConstellation << endl;(int i = 0; i < astronom.lastDoKol; i++)<< starsVector[i] << endl;<< endl;<<"\n\nНажмiть Enter для повернення в головне меню...";

_getch();("cls");

};4:

{("cls");

//виведення видимих зорей у заданій широті та часіisTrueEnter = true;xKoord = 0;timeTemperOne;timeTemperTwo;time;<< "Введiть широту потрiбного мiсця(+ якщо пiвнiчного, - якщо пiвденного)" << endl;>> xKoord;<< "Введiть потрiбну годину" << endl;>> timeTemperOne;<< "Введiть потрiбну хвилину" << endl;>> timeTemperTwo;

if ((xKoord > 90) || (xKoord < -90) || (timeTemperOne > 23) || (timeTemperOne < 0)

|| (timeTemperTwo > 59) || (timeTemperTwo < 0))= false;(isTrueEnter).setTime(timeTemperOne, timeTemperTwo);<< "Введiть потрiбний мiсяць (1-12)" << endl;>> timeTemperOne;<< "Введiть потрiбний день" << endl;>> timeTemperTwo;((timeTemperOne > 12) || (timeTemperOne < 0)

|| (timeTemperTwo > 31) || (timeTemperTwo < 0))= false;(isTrueEnter){

//заповнення даних для подальшого використанні при пошуку зорей.setDate(timeTemperOne, timeTemperTwo);<string> starsVector;.clear();

//обробка отриманих результатів про зорі та виведння отриманної інформації= astronom.getStarsByPlace(xKoord, time);(int i = 0; i < astronom.lastDoKol; i++)<< starsVector[i] << endl;(astronom.lastDoKol == 0)<< "не знайдено жодної зорi" << endl;<< endl;

}<< "Ви ввели некоректнi даннi";<<"\n\nНажмiть Enter для повернення в головне меню...";

_getch();("cls");

};5:

//вихід з програми= true;

//реакція на введення некоректної цифри:("cls");<< "Ви зробили некоректний вибiр" << endl;<<"Нажмiть Enter для повернення...";

_getch();("cls");

}

} while(! isExit); //Поки не натиснути "5" програма буде правцювати

}main(){(LC_ALL,"russian");= 0;

//заповнення каталогу про зорі інформацією();();0;

}

Додаток Б

ФАЙЛ ПРОГРАМИ:6.45 -16.42 BigDog -1.46 8.66.23 -52.41 Keel -0.72 31014.39 -60.5 Centauri -0.27 4.314.15 19.1 Bootesа -0.04 3418.36 38.47 Lira 0.03 255.16 45.59 Charioteer 0.08 415.14 -8.12 Orionа 0.12 8707.39 5.13 Malagos 0.38 11.41.37 -57.14 Eridan 0.46 695.55 7.24 Orion 0.5 53014.03 -60.22 Centauri 0.61 40012.26 -63.05 Southern_Cross 0.76 33019.5 8.52 Eagle 0.77 164.35 16.3 Taurus 0.85 6016.29 -26.25 Scorpio 0.96 61013.25 -11.09 Virgin 0.98 2507.45 28.01 Twins 1.14 4022.57 -29.37 Southern_Fish 1.16 2212.47 -59.41 Southern_Cross 1.25 29020.41 45.16 Swan 1.25 150010.08 11.58 Lion 1.35 696.58 -28.58 BigDog 1.5 4007.34 31.53 Twins 1.57 4912.31 -57.06 Southern_Cross 1.63 12017.33 -37.06 Scorpio 1.63 33012.4 3.7 Scorpio 54.2 0.7

Источник: https://www.bibliofond.ru/detail.aspx?id=862746