Российский Новый Университет
Пояснительная записка
к курсовой работе
по предмету «Программирование»
на тему:
«База данных пилотов Формулы 1».
Выполнил студент гр. 424
Факультета ИС и КТ
Шнайдер Юрий Юрьевич
Руководитель: Маслянкин В.И.
Курсовая работа допущена к защите:
______________________
Москва
2006 г.
Содержание:
1. Введение. Цели и задачи курсовой работы.
2. Описание предметной области.
2.1. Постановка задачи
2.2. Объекты предметной области.
2.3. Необходимые ресурсы.
3. Разработка проекта.
3.1. Классы: свойства и методы.
3.2. Организация классов.
3.3. Интерфейс пользователя.
4. Реализация проекта.
5. Перспективы доработки программы.
Эта программа написана для любителей гонок "формула 1". Используя её, пользователи могут найти различную информацию о пилоте, такую как количество титулов, побед, и т.п. База данных позволяет удалять пилотов и добавлять новых, а также найти пилота по определённому параметру.
2.1. Постановка задачи.
Основные функции программы:
1. запоминать вводимые значения, показывать базу данных;
2. добавлять, редактировать данные;
3. осуществлять поиск в базе;
4. сортировать данные базы по запрашиваемому параметру;
5. удалять и сохранять изменения в базе;
6. сохранять всю информацию, а также иметь доступ к открытию информации.
Объекты принадлежащие, хранению и обработке:
struct Racer
{
string famely;
string name;
string frace;
int races;
int wons;
int pouls;
int tituls;
int blaps;
};
«famely»: фамилия гонщика. Текстовое значение.
«name»: Имя гонщика. Текстовое значение.
«frace»: Дебютная гонка в формуле 1. Текстовое значение.
«races»: Количество проведённых гонок. Цифровое значение.
«wons»: Количество побед. Цифровое значение.
«pouls»: Количество поул-позиций (первое место на старте). Цифровое значение.
«tituls»: Количество титулов чемпиона мира. Цифровое значение.
«blaps»: Количество Лучших кругов в гонке. Цифровое значение.
Для реализации проекта необходимо подключение следующих заголовочных файлов:
<stdlib.h> , <algorithm> , <fstream> , <string> , <iostream>, <vector> , <commctrl.h> , <commdlg.h>.
Так-же, необходимы следующие windows - библиотеки: “comctl32.lib” и “comdlg.lib”
3.1. Классы: поля и методы.
Класс является абстрактным типом данных, определяемым пользователем, и представляет собой модель реального объекта в виде данных и функций для работы с ними.
Программа разбита на 2-а класса. 1-ый отвечает за базу данных, 2-ой за взаимодействия с ним.
Рассмотрим 1-ый класс:
class Reader
public:
Reader(); // Конструктор / деструкотор
~Reader();
bool open_db(const char * file); // Открыть бд
bool save_db(const char * file,vector<Racer> racer); // Сохранить бд
void close_db(); // Закрыть бд
bool read(); // Читать БД
void new_paragraph(); // Новый параграф
string paragraph; // Имя параграфа
int loadAsInt(string name); // Загружаем параметр как целое число
string loadAsString(string name); // Загружаем параметр как строку
private:
fstream db; // Фаил бд
Рассмотрим 2-ой класс:
class Application
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); // Сортировка
vector<Racer> racers; // База данныых на основе вектора
Reader reader; // Файловый менеджер
3.2. Организация классов
Выбранный контейнер для хранения объектов стандартный “vector” из “vector.h”.
Интерфейс пользователя состоит из 2 основных элементов:
· - контекстного меню, посредством которого пользователь может открывать, закрывать, создавать новые базы данных, добавлять и удалять элементы БД, сортировать по всем параметрам записи и производить поиск записей по определённым параметрам.
· - основное окно, содержащее инструменты для редактирования элементов базы данных, просмотра элементов, просмотра результатов поиска и сортировки БД, а также задавать параметры поиска.
3.4. Хранение данных.
База данных содержит в начале каждой записи заголовок (параграф) "racer". После него через пробел содержатся элементы записи. Каждая запись начинается с новой строки.
В качестве языка программирования используем С++. Компилятор Visual C++ версии 6.
Программа разбита на несколько файлов:
· main.cpp - реализация основных методов и классов приложения.
· main.h - описание идентификаторов меню.
· Rsrc.rc - фаил ресурсов.
"main.cpp"
#include "main.h"
#include <windows.h>
#include <stdlib.h>
#include <algorithm>
#include <fstream>
#include <string>
#include <iostream>
#include <vector>
#include <commctrl.h>
#include <commdlg.h>
#pragma comment(lib,"comctl32.lib")
using namespace std;
/* Описание гонщика */
//------------------------------------
// Файловая система
int loadAsInt(string name); // Загружаем параметры
string loadAsString(string name);
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,vector<Racer> racer)
ofstream save;
save.open(file,ios::trunc); // Открываем фаил
if(!save) return false;
for(int i=0;i<racer.size();i++) // Записываем данные
save << "racer ";
save << "SurName=" << racer[i].famely;
save << " Name=" << racer[i].name;
save << " Races=" << racer[i].races;
save << " Wons=" << racer[i].wons;
save << " Pouls=" << racer[i].pouls;
save << " FirstRace=" << racer[i].frace;
save << " Tituls=" << racer[i].tituls;
save << " BestLaps=" << racer[i].blaps;
if(i<racer.size()-1) save << endl;
Страницы: 1, 2, 3, 4, 5