Реферат по предмету "Программирование, Базы данных"


База данных пилотов Формулы 1

РоссийскийНовый Университет








Пояснительнаязаписка
к курсовой работе
по предмету «Программирование»
на тему:
«База данных пилотов Формулы 1».



Выполнилстудент гр. 424
    ФакультетаИС и КТ
   Шнайдер Юрий Юрьевич
Руководитель:Маслянкин В.И.



Курсоваяработа допущена к защите:
______________________






Москва
2006 г.
Содержание:

1.  Введение. Цели и задачи курсовой работы.

2.  Описание предметной области.
2.1.    Постановка задачи
2.2.    Объекты предметной области.
2.3.    Необходимые ресурсы.

3.  Разработка проекта.
3.1.    Классы: свойства и методы.
3.2.    Организация классов.
3.3.    Интерфейс пользователя.

4.  Реализация проекта.

5.  Перспективы доработки программы.
























1.Введение.Цели и задачи курсовой работы.

Эта программа написана длялюбителей гонок "формула 1". Используя её, пользователи могут найтиразличную информацию о пилоте, такую как количество титулов, побед, и т.п. Базаданных позволяет удалять пилотов и добавлять новых, а также найти пилота поопределённому параметру.



2.Описаниепредметной области.

2.1.        Постановка задачи.

Основныефункции программы:

     1. запоминать вводимые значения,показывать базу данных;
     2. добавлять, редактировать данные;
     3. осуществлять поиск в базе;
     4. сортировать данные базы позапрашиваемому параметру;
     5. удалятьи сохранять изменения в базе;
     6. сохранятьвсю информацию, а также иметь доступ к открытию информации.
2.2.        Объекты предметной области.

Объектыпринадлежащие, хранению и обработке:

struct Racer
{
      stringfamely;
      stringname;
      stringfrace;
      intraces;
      intwons;
      intpouls;
      inttituls;
int blaps;
};        

«famely»: фамилия гонщика. Текстовоезначение.
«name»: Имя гонщика. Текстовоезначение.
«frace»: Дебютная гонка в формуле1. Текстовое значение.
«races»: Количество проведённыхгонок. Цифровое значение.
«wons»: Количество побед. Цифровоезначение.
«pouls»: Количество поул-позиций(первое место на старте). Цифровое значение.
«tituls»: Количество титуловчемпиона мира. Цифровое значение.
«blaps»: Количество Лучших кругов вгонке. Цифровое значение.

2.3.        Необходимые ресурсы.

Дляреализации проекта необходимо подключение следующих заголовочных файлов:
, , , , , , , .
Так-же,необходимы следующие windows — библиотеки: “comctl32.lib” и “comdlg.lib”
3.  Разработкапроекта.

3.1.        Классы: поля и методы.
Классявляется абстрактным типом данных, определяемым пользователем, и представляетсобой модель реального объекта в виде данных и функций для работы с ними.
Программаразбита на 2-акласса. 1-ый отвечает за базу данных, 2-ой за взаимодействия с ним.

Рассмотрим1-ый класс:

classReader
{
public:
      Reader(); // Конструктор / деструкотор
      ~Reader();

      boolopen_db(const char * file); // Открыть бд
      boolsave_db(const char * file,vectorracer); // Сохранитьбд
      voidclose_db(); // Закрытьбд

      boolread(); // ЧитатьБД
      voidnew_paragraph(); // Новыйпараграф
      stringparagraph; // Имяпараграфа

      intloadAsInt(string name);  // Загружаемпараметркакцелоечисло
      stringloadAsString(string name); // Загружаемпараметркакстроку

private:
      fstream db;// Фаилбд
};










 Рассмотрим 2-ой класс:
                       
class Application
{
public:
Application();
~Application();

      bool db_load(const char *file); // Загружаем базу данных
      void db_close();// Закрываем базу данных
      bool db_save(const char *file); // Сохраняем базу данных

      void db_add_item();// Добавляем новый элемент
      void db_delete_item(int number); // Удаляем определённый элемент

      void bd_sortby(int value); // Сортировка

      vectorRacer>racers; // База данныых на основе вектора
private:
      Reader reader; // Файловый менеджер
};

3.2.        Организация классов

Выбранный контейнер для хранения объектовстандартный  “vector” из “vector.h”.


3.3.        Интерфейс пользователя.


Интерфейспользователя состоит из 2 основных элементов:
·       -контекстного меню, посредством которого пользователь может открывать,закрывать, создавать новые базы данных, добавлять и удалять элементы БД,сортировать по всем параметрам записи и производить поиск записей поопределённым параметрам.
·       -основное окно, содержащее инструменты для редактирования элементов базы данных,просмотра элементов, просмотра результатов поиска и сортировки БД, а такжезадавать параметры поиска.


3.4.        Хранение данных.

Базаданных содержит в начале каждой записи заголовок (параграф) "racer". После негочерез пробел содержатся элементы записи. Каждая запись начинается с новойстроки.







4.Реализация проекта.

Вкачестве языка программирования используем  С++. Компилятор VisualC++ версии 6.
Программаразбита на несколько файлов:
·        main.cpp — реализация основных методов и классовприложения.
·        main.h — описание идентификаторов меню.
·        Rsrc.rc — фаил ресурсов.


"main.cpp"
#include «main.h»
#include

#include
#include
#include
#include
#include
#include
#include
#include
#pragma comment(lib,«comctl32.lib»)

using namespace std;










/* Описание гонщика */
struct Racer
{
   stringfamely;
   string name;
   string frace;
   int races;
   int wons;
   int pouls;
   int tituls;
   int blaps;
};



//------------------------------------
// Файловая система

class Reader
{
public:
       Reader();// Конструктор / деструкотор
       ~Reader();

       boolopen_db(const char * file); // Открыть бд
       boolsave_db(const char * file,vectorracer); // Сохранить бд
       voidclose_db(); // Закрыть бд

       boolread(); // Читать БД
       voidnew_paragraph(); // Новый параграф
       stringparagraph; // Имя параграфа

       intloadAsInt(string name);       // Загружаем параметры
       stringloadAsString(string name);

private:
       fstreamdb; // Фаил бд
};


Reader::Reader() {}; // Конструктор / деструктор
Reader::~Reader() { db.close(); };


/* Открываем бд  */
bool Reader::open_db(const char *file)
{
        db.open(file);
     if(!db)return false;
    
     return true;
};

/*Сохраняем базу данных */
bool Reader::save_db(const char *file,vectorracer)
{
       ofstreamsave;
       save.open(file,ios::trunc);// Открываем фаил
       if(!save)return false;

       for(inti=0;iЗаписываем данные
       {
             save
             save
             save
             save
             save
             save
             save
             save
             save
             if(i
       };

       save.close();// Закрываем фаил
       save.clear();
      
       returntrue;
};

/* Закрываем бд */
void Reader::close_db()
{
       db.close();
       db.clear();
};


/* Читаем параграф */
bool Reader::read()
{
       if(db.eof()|| !db) return false; // Конец файла
       else db>> paragraph;

       returntrue;
};

/* Читаем число */
int Reader::loadAsInt(string name) // Loading As Int
{
       string s;
       db>> s;
       name+="=";

       returnatoi(s.substr(name.size(),s.size()).c_str());
};


/* Читаем строку */
string Reader::loadAsString(string name) // Loading AsString
{
       string s;
       db>> s;
       name+="=";

       returns.substr(name.size(),s.size());
};


/*Переход на новый параграф */
voidReader::new_paragraph()
{
       db.ignore(1,'n');
};


//----------------------------------------------------------------------------------------
//Работа приложения


class Application
{
public:
       Application();
       ~Application();

       booldb_load(const char *file); // Загрузка бд
       void db_close(); //Закрыть  текущую бд
       bool db_save(constchar *file); // Сохранить бд

       void db_add_item(); //Добавить элемент
       voiddb_delete_item(int number); // Удалить элемент

       void bd_sortby(intvalue); // Сортировать по элементу
       int bd_findby(intvalue,string look); // Искать в элементе

       vectorracers; // Гонщики
private:
       inline intfind_name(string value);
      

// -----------------------------------------------
       Readerreader; // Файловая система
};


Application::Application() {}; // Конструктор / деструктор
Application::~Application() {};

bool Application::db_load(const char * file)
{
       if(reader.open_db(file))
       {
             racers.clear();// Очищаем вектор
             while(reader.read())
             {
                    Racerm_racer;
                    m_racer.famely= reader.loadAsString(«SurName»);
                    m_racer.name=  reader.loadAsString(«Name»);
                    m_racer.races= reader.loadAsInt(«Races»);
                    m_racer.wons= reader.loadAsInt(«Wons»);
                    m_racer.pouls= reader.loadAsInt(«Pouls»);
                    m_racer.frace= reader.loadAsString(«FirstRace»);
                    m_racer.tituls= reader.loadAsInt(«Tituls»);
                    m_racer.blaps= reader.loadAsInt(«BestLaps»);
                    reader.paragraph;
                    racers.push_back(m_racer);// Добавляем гонщика в аккумулятор
             };
             reader.close_db();// Закрываем фаил

             returntrue;
       };

       returnfalse;
};


/* Закрываем бд */
void Application::db_close()
{
       racers.clear(); // Очищаем списокгонщиков
};


/* Сохранение бд */
bool Application::db_save(const char * name)
{
       if(!reader.save_db(name,racers))return false;

       returntrue;
};


/* Добавить элемент */
void Application::db_add_item()
{
       Racertemp;
       temp.blaps= 0;
       temp.famely= «Mr.Unknown»;
       temp.frace= «When?»;
       temp.name= «Unknown»;
       temp.pouls= 0;
       temp.races= 0;
       temp.tituls= 0;
       temp.wons= 0;
       racers.push_back(temp);
};

/* Удалить элемент */
void Application::db_delete_item(int  number)
{
       if(number>= racers.size() || number

       vector::iteratorit = racers.begin();
       for(inti=0;i
      
       racers.erase(it);
};



// -----------------------------------------------
/* Сортировка */

bool sort_famely(Racer &one,Racer &two);
bool sort_name(Racer &one,Racer &two);
bool sort_frace(Racer &one,Racer &two);
bool sort_blaps(Racer &one,Racer &two);
bool sort_pouls(Racer &one,Racer &two);
bool sort_races(Racer &one,Racer &two);
bool sort_tituls(Racer &one,Racer &two);
bool sort_wons(Racer &one,Racer &two);

inline bool sort_famely(Racer &one,Racer &two)
{


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.