«Розробка програми для розрахунку вантажу пароплава»



бет7/7
Дата29.11.2022
өлшемі1.51 Mb.
#465961
1   2   3   4   5   6   7
Звіт з курсової роботи (Міцай Руслан)90.100

Висновок


В ході даної курсової роботи я зміг використати свої навички здобуті за час вивчення курсу ООП. Покращив свої навички застосування функції та роботи з файлом, навчився правильно розробляти ієрархію класів. Дана робота вимагала від мене застосування майже всіх понять яких нас навчили, таких як наслідування, перевантаження та інкапсуляція.

Список використаних джерел


  1. Що таке ООП(об’єктно-орієнтоване програмування)? : Веб-сайт. URL: https://foxminded.ua/shho-take-oop-ob-iektno-oriientovane-programuvannja/ (Дата звернення 20.11.2022)

  2. Що таке компілятор? : Веб-сайт. URL: https://uk.theastrologypage.com/compiler (Дата звернення 20.11.2022)

  3. Декомпілятор – Словник з інформатики : Веб-сайт. URL: http://іт.словник.укр/index.php/%D0%94%D0%B5%D0%BA%D0%BE%D0%BC%D0%BF%D1%96%D0%BB%D1%8F%D1%82%D0%BE%D1%80 (Дата звернення 20.11.2022)

  4. Об’єктно-орієнтоване програмування : Веб-сайт. URL: http://programming.in.ua/programming/basisprogramming/25-oop.html (Дата звернення 20.11.2022)



Додатки

1 Додаток


#include
#include
#include
#include

using namespace std;


const float massPass=0.07;//константа для маси пасажирів(тони)
class Paroplav
{
protected://змінні до яких будуть мати доступ нащадки
string company, nameShip;
int tonaj;
public:
Paroplav()//конструктор без параметра
{
nameShip="Defolt Name";
company="Defolt";
tonaj = 999999;
}

Paroplav(int tonaj, string company, string nameShip)//конструктор з параметром


{
this->nameShip=nameShip;
this->tonaj=tonaj;
this->company=company;
}
//сетери і гетери
void setMassa(int tonaj){this->tonaj=tonaj;}
void setNameShip(string nameShip){this->nameShip=nameShip;}
void setCompany(string company){this->company=company;}
string getCompany(){return company;}
string getNameShip(){return nameShip;}
int getMassa(){return tonaj;}
~Paroplav(){}//деструктор

};
class Passajir : public Paroplav//спадкування


{
protected:
int kilkistPass;
int vaga;
public:
Passajir()
{
vaga = 900;
kilkistPass=900;
}
Passajir(int kilkistPass, int tonaj, string company, string nameShip)
{
this->kilkistPass=kilkistPass;
this->nameShip=nameShip;
this->tonaj=tonaj;
this->company=company;
vaga=kilkistPass*massPass;
}
int getKilkist() {return kilkistPass;}
void setKilkist(int kilkistPass) {kilkistPass=kilkistPass;}
~Passajir(){}

};

class Way : public Passajir


{
protected:
string startPort, finishPort;
public:
Way(){ this->startPort="City 1"; this->finishPort="City 2";}
Way(string nameShip, string startPort, string finishPort, int kilkistPass, int tonaj, string company)
{
this->startPort=startPort;
this->finishPort=finishPort;
this->kilkistPass=kilkistPass;
this->nameShip=nameShip;
this->tonaj=tonaj;
this->company=company;
vaga=kilkistPass*massPass;
}
void setStart(string startCity){this->startPort=startPort;}
void setFinish(string finishCity){this->finishPort=finishPort;}
string getStart(){return startPort;}
string getFinish(){return finishPort;}
int getVaga(){return vaga;}
int overweight() const//розрахунок перевантаження
{
if(massPass*kilkistPass>tonaj) {return 1;} else{return 0;}
}
void Print()//вивід інформації
{
//вивід на дисплей і у файл пункти призначення, куди пароплав не прибуде, тому що перевантажений, а також назву компанії, що здійснює таку перевозку.
if(overweight() == 1)
{
cout<<"Корабель: "<cout<<" Мав відправлятися з порту: "<cout<<"Проте цей рейс відмінили, адже корабель перевантажений"<}
}
~Way(){}
friend ofstream& operator <<(ofstream& t, Way& w); // запис у файл
friend ifstream& operator >>(ifstream& t, Way& w);//виведення з файлу
};
class File : public Way//клас роботи з файлом
{
private:
Way* NewShip;//створення нового елемента класу
int counter = 0;//поточна довжина списку
int maxCounter;// максимальна довжина списку
public:
void SortAlphabet(Way* NewShip)//сортування за алфавітом
{
for (int i = 0; i < counter; i++)
{
Way* first_ele = &NewShip[i];
for (int j = i + 1; j < counter; j++)
{
if(NewShip[i].getNameShip() > first_ele[j].getNameShip())
{
swap(NewShip[i], NewShip[j]);
}
}

}
}
File (int maxCounter)// Створення списку максимальногоx розміру


{
this->maxCounter = maxCounter;
NewShip = new Way[maxCounter]; // виділення пам'яті для списку
counter = 0; //обнулення списку
}
~File()
{
if (maxCounter > 0)
delete[] NewShip; // звільнення пам'яті
}
bool Pystota()//Перевірка на пустоту
{
return counter == 0;
}
int Counter()//Розрахунок кількості елементів списку
{
return counter;
}
bool Povnota()// Перевірка на повноту списку
{
return counter == maxCounter;
}
//Функція додавання до списку
void AddInfo(string nameShip, string startPort, string finishPort, int kilkistPass, int tonaj, string company)
{
if (!Povnota())//Перевірка на повноту списку
{
NewShip[counter++] = Way(nameShip, startPort, finishPort, kilkistPass, tonaj, company);
}
}
void DeleteElementFromFile(int del)//Видалення елементу зі списку за номером
{
Way fordelete;
cout << "Введiть номер корабля за списком для виделення зі списку" << endl;
if (!Pystota()) // Якщо список заповнений
{
Way fordelete = NewShip[del];//Перезапис першого елементу списку
for (int i = del; i < counter; i++)//зсув списку
NewShip[i - 1] = NewShip[i];
counter--;
}
}
void ReadFile()//читання файлу
{
int kilkistSTR = 0;
string str;
ifstream fin("in.txt");
if (fin) {
while (!fin.eof())
{
getline(fin, str, '\n');
kilkistSTR++;
}
fin.clear();
fin.seekg(0);
for (int i = 0; i < kilkistSTR - 1; i++)//зчитування елементі з файлу
{ fin>>nameShip; fin>>startPort; fin>>finishPort; fin>>kilkistPass; fin>>tonaj; fin>>company;
if (!Povnota())//Запис якщо список не заповнений
{
NewShip[counter++] = Way(nameShip, startPort, finishPort, kilkistPass, tonaj, company);
}
}
SortAlphabet(NewShip);//виклик сортування
PrintFinal();//вивід одразу інформації з файлу
fin.close();//закриття файлу
}
}
void Zapisb()//Запис поточного списку до файлу
{
ofstream filex("in.txt");
for (int i = 0; i < counter; i++) {
filex << NewShip[i];
cout << endl;
}
filex.close();
}
void PrintFinal()//Функція, що виводить список
{
cout << "Кораблі, що перевантажені" << endl;
SortAlphabet(NewShip);
int j = 1;
for (int i = 0; i < counter; i++) {
if (NewShip[i].overweight() == 1) {
cout << j++ << ") ";
NewShip[i].Print();
cout << endl;
}
}
}

};

ofstream& operator <<(ofstream& t, Way& w)//запис у файл


{
t << w.nameShip << " " << w.startPort << " " << w.finishPort << " " << w.kilkistPass << " " << w.tonaj << " " << w.company << endl;
return t;
}
ifstream& operator >>(ifstream& t, Way& w)//читання з файлу
{
t >> w.nameShip;
t >> w.startPort;
t >> w.finishPort;
t >> w.kilkistPass;
t >> w.tonaj;
t >> w.company;
return t;
}

int main()


{
system("CHCP 65001");
int size = 10, del, kilkistPass, tonaj;
string nameShip, startPort, finishPort, company;
int MenuNum = 0;
bool flag = true;
File* NewShip = new File(size);
cout << "\tПочаток роботи" << endl;
cout << "\t СПИСОК ПУСТИЙ\n\n\n" << endl;
while (flag) {
cout << "1)Вивести поточний список перевантажених кораблів" << endl;
cout << "2)Додати корабель до списку" << endl;
cout << "3)Видалити перевантажений корабель" << endl;
cout << "4)Записати поточний список до файлу" << endl;
cout << "5)Заповнити список з файлу" << endl;
cin >> MenuNum;
switch (MenuNum)
{
case 1:
NewShip->PrintFinal();
break;
case 2:
cout << "\tВведіть дані для додання нового пароплаву" << endl;
cout << "Введіть назву пароплаву" << endl;
cin >> nameShip;
cout<<"Введіть тонаж пароплаву"<cin>>tonaj;
cout<<"Введіть назву компанії тримаючої пароплав"<cin>>company;
cout << "Введіть місто з якого він відпливає" << endl;
cin >> startPort;
cout << "Введіть місто пробутя" << endl;
cin >> finishPort;
cout << "Введіть кількість пасажирів" << endl;
cin >> kilkistPass;
NewShip->AddInfo(nameShip, startPort, finishPort, kilkistPass, tonaj, company);
break;
case 3:
cout << "\tВведіть номер корабля у списку, який ви бажаєте видалити" << endl;
cin >> del;
NewShip->DeleteElementFromFile(del);
break;
case 4:
NewShip->Zapisb();
break;
case 5:
NewShip->ReadFile();
break;
default:
cout << "\tРОБОТУ ЗАВЕРШЕНО";
flag = false;
break;
}
}
return 0;
}


Достарыңызбен бөлісу:
1   2   3   4   5   6   7




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет