Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЗВІТ АБРАШКІНА О.І.doc
Скачиваний:
1
Добавлен:
15.07.2019
Размер:
176.13 Кб
Скачать
  1. Постановка задачі

Даний курсовий проект присвячений розробці програмного продукту для клубу кінологів.

Для кожної з собаки необхідно зберігати таку інформацію:

  • кличка;

  • порода;

  • вік;

  • вид собаки;

  • дата тренування;

  • послуги.

Клуб кінологів можуть відвідувати такі види собак:

  • декоративні;

  • бійцівські;

  • службові.

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

Слід реалізувати такі операції:

  • введення інформації про собак та збереження її у файлі;

  • вивід інформації;

  • редагування та вилучення інформації про собак;

  • пошук собак за кличкою і за породою;

  • сортування інформації за різними полями.

Для реалізації поставленої задачі було обрано середовище Borland C++.

  1. Опис програмного продукту

    1. Діаграми класів.

    2. Діаграми дій.

    3. Опис класів та методів.

При розробці даного курсового проекту було розроблено наступні класи:

клас Avto_base – базовий клас;

клас Avto – похідний клас від Avto_base;

клас Bus – похідний клас від Avto;

клас Truck – похідний клас від Avto;

класс DBF для робот из файлами.

Розглянемо детальніше дані і методи цих класів.

Клас Avto_base призначений для збереження загальної інформації про автомобіль. Він містить такі дані:

Nomer типу AnsiString – для збереження номерного знаку авто;

Marka типу AnsiString – для збереження марки авто;

Colir типу AnsiString – для збереження кольору авто;

Vodiy типу AnsiString – для збереження інформації про водія;

Data типу AnsiString – для збереження дати відвідування мийки;

Chas типу AnsiString – для збереження часу відвідування мийки.

Всі дані цього класу мають рівень доступу protected.

Для роботи з даними цього класу були розроблені відповідні set-методи та get-методи. Set-методи встановлюють необхідне значення для відповідного даного класу, а get-методи відповідно повертають це значення.

Клас Avto_base містить наступні методи:

AnsiString Avto_Base::getNomer() {return Nomer;}

AnsiString Avto_Base::getVodiy() {return Vodiy;}

AnsiString Avto_Base::getMarka(){return Marka;}

AnsiString Avto_Base::getColir(){return Colir;}

AnsiString Avto_Base::getData(){return Data;}

AnsiString Avto_Base::getChas(){return Chas;}

void Avto_Base::setNomer(AnsiString a){Nomer=a;};

void Avto_Base::setMarka(AnsiString a){Marka=a;};

void Avto_Base::setColir(AnsiString a){Colir=a;};

void Avto_Base::setVodiy(AnsiString a){Vodiy=a;};

void Avto_Base::setData(AnsiString a){Data=a;};

void Avto_Base::setChas(AnsiString a){Chas=a;};

Клас Avto є похідним від класу Avto _Base і призначений для збереження інформації про послуги легкових автомобілів. Він містить такі дані:

Moyka типу bool – містить значення true у випадку, коли водій замовляє мийку, і false в іншому випадку;

Vosk типу bool – призначений для послуги воскування кузова;

Poliruvannya типу bool – призначений для послуги полірування кузова;

Salon типу bool- призначений для послуги хімчистки салону.

Описані вище поля також мають рівень доступу protected.

Для роботи з цими полями було створено відповідні set-методи і get-методи:

bool Avto::getMoyka(){return Moyka;};

bool Avto::getVosk(){return Vosk;};

bool Avto::getPoliruvannya(){return Poliruvannya;};

bool Avto::getSalon(){return Salon;};

void Avto::setMoyka(bool f){Moyka=f;};

void Avto::setVosk(bool f){Vosk=f;};

void Avto::setPolir(bool f){Poliruvannya=f;};

void Avto::setSalon(bool f){Salon=f;};

При записі даних у файл для кожного з типів авто використовуються так звана «мітка». Для легкових авто вона є «1.», для автобусів «2.», а для вантажівок «3.». Для цього кожен з класів про авто містить метод getType(), який і повертає цю мітку. Для класу Avto цей метод має вигляд:

int Avto::getType(){return 1;};

Для запису інформації про легковий автомобіль і його послуги призначений метод Add(), параметром для якого є назва файлу. Він має такий протип: void Add(AnsiString name_file);

Робота з файлами реалізована за допомогою бібліотеки fstream.h.

Файлова змінна для запису описується відповідно ofstream f;

відкривається файл для запису за допомогою методу

open(<назва файлу>, ios::app), запис у файл здійснюється за допомогою оператора f<<endl<<(дані, що записуються у файл).

Для розрахунку вартості послуг, що надає автомийка даному авто, розроблено метод

double calcPrice();

Відповідно для розрахунку тривалості послуг розроблено метод

double calcTime();

В цих методах використовуються дані, що заносяться в масиви PriceList[3][5] та TimeList[3][5], що містять тарифи на послуги для кожного з типів авто та тривалість виконання відповідних послуг. Для занесення даних в ці масиви призначена функція

setPriceTimeList(double mas_p[3][5], double mas_t[3][5]).

Розглянемо клас Bus. Він є похідним від Avto і має таку структуру:

class Bus:public Avto

{

public:

int getType();

void Add(AnsiString name_file);

double calcPrice();

double calcTime();

};

Тут перевизначено методи getType(), Add(), calcPrice() та CalcTime().

Клас Truck є похідним від класу Avto і призначений для роботи з вантажівками. Він має схожу структуру з класом Bus, але в ньому добавлено дане MoykaPr і відповідно методи bool getMoykaPr()i void setMoykaPr(bool f).

Тепер розглянемо клас DBF, який призначений для роботи з файлом бази даних. Він має таку структуру:

class DBF

{private:

AnsiString Name_file;

public:

int Print(Truck rez[100]);

void Delete(AnsiString nomer);

int Search_product(AnsiString x, Truck *rez);

void setName_file(AnsiString a);

AnsiString getName_file();

};

Поле Name_file призначене для збереження назви файлу. В даному проекті цей текстовий файл має ім’я «baza.txt».

Відповідно для встановлення імені файлу та отримання назви файлу призначені методи setName_file(AnsiString a) і getName_file().

Також клас містить метод int Print(Truck rez[100]), який читає файл та заносить інформацію в масив rez[100] об’єктів Truck. Цей метод повертає кількість записів у файлі.

Метод Delete(AnsiString nomer) призначений для вилучення автомобіля з файлу за його номерним знаком.

Відповідно метод int Search_product(AnsiString x, Truck *rez) призначений для пошуку автомобіля у файлі за його номерним знаком. Результуючий набір записів заноситься в масив rez об’єктів Truck. Повертає цей метод кількість записів, що відповідають умові пошуку.

Всі описані вище класи оформлені у вигляді бібліотеки «Avto_Base» і розміщені у файлах «Avto_Base.h» і «Avto_Base.cpp», тексти яких наведені в додатку.