Управление информацией в автобусном парке

Автор: Пользователь скрыл имя, 15 Мая 2012 в 01:26, курсовая работа

Описание работы

С++ - это универсальный язык программирования, задуманный так, чтобы сделать программирование более приятным для серьезного программиста. За исключением второстепенных деталей С++ является надмножеством языка программирования C. Помимо возможностей, которые дает C, С++ предоставляет гибкие и эффективные средства определения новых типов. Используя определения новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части. Такой метод построения программ часто называют абстракцией данных

Содержание

Содержание
Содержание___________________________________________________________2
Введение_____________________________________________________________ 3
Постановка задачи_____________________________________________________4
Условие задачи_______________________________________________________4
Обзор методов________________________________________________________4
Структура входных и выходных данных __________________________________5
Диаграмма классов_____________________________________________________6
Описание классов______________________________________________________7 6.1 CityBus____________________________________________________________7
6.2 ComfortBus________________________________________________________8
6.3 List_______________________________________________________________9
6.4 mylist ____________________________________________________________10
6.8 ListNotFree________________________________________________________11
7. Описание алгоритмов_________________________________________________10
7.1 Блок схемы алгоритмов программы___________________________________10
Алгоритмы по шагам_______________________________________________12
8.Текст программы______________________________________________________13
8.1 CityBus.h _________________________________________________________13
8.2 CityBus.cpp _______________________________________________________13
8.3 ComfortBus.h______________________________________________________16 8.4 ComfortBus.cpp ____________________________________________________17
8.5 mylist.h _________________________________________________________ 19 8.6 Iterator.h _________________________________________________________25
8.7 Iterator.cpp ________________________________________________________26 8.8 exceptions.h _______________________________________________________28
8.9 database.cpp _______________________________________________________28
8.10 Form1.h _________________________________________________________29
9. Результат работы программы___________________________________________56
10.Заключение__________________________________________________________58
11.Литература___________________________________________________________

Работа содержит 1 файл

!!!!!!!!Пояснительная записка.docx

— 183.78 Кб (Скачать)

bool operator!= (const Iterator &p2) ;

const Iterator<T> & operator++ () ;

const Iterator<T> & operator++ (int) ;

const Iterator<T> & operator-- () ;

const Iterator<T> & operator-- (int) ;

T operator[] (int k) ;

T operator* () ;

T* getT ();

mylist<T>* getptr();

 

private:

class mylist<T> *ptr;

 

};

 

#endif

 

Файл «Iterator.cpp»

 

#include "stdafx.h"

#include "mylist.h"

#include "iterator.h"

//#include "exceptions.h"

 

template <typename T> class mylist;

template <typename T> class List;

template <typename T> class Algoritm;

 

template <typename T>

void Iterator<T>::Reset ()

{

for( ; ptr->prv != 0 ; ) ptr = ptr->prv;

}

 

 

template <typename T>

const Iterator<T> & Iterator<T>::operator= (const List<T> &p)

{

if (p.top != this->ptr) ptr = p.top;

return *this;

}

 

 

template <typename T>

const Iterator<T> & Iterator<T>::operator= (const mylist<T> &p)

{

if (p != *this) ptr = p;

return *this;

}

 

 

template <typename T>

bool Iterator<T>::operator== (const Iterator &p2)

{

if (ptr == p2.ptr) return true;

else return false;

}

 

 

template <typename T>

bool Iterator<T>::operator!= (const Iterator &p2)

{

if (ptr != p2.ptr) return true;

else return false;

}

 

 

template <typename T>

const Iterator<T> & Iterator<T>::operator++ ()

{

if (ptr->next) ptr = ptr->next;

return *this;

}

 

 

template <typename T>

const Iterator<T> & Iterator<T>::operator++ (int)

{

if (ptr) if (ptr->next) ptr = ptr->next;

return *this;

}

 

 

 

template <typename T>

const Iterator<T> & Iterator<T>::operator-- ()

{

if (ptr->prv) ptr = ptr->prv;

return *this;

}

 

 

template <typename T>

const Iterator<T> & Iterator<T>::operator-- (int)

{

if (ptr->prv) ptr = ptr->prv;

return *this;

}

 

 

template <typename T>

T Iterator<T>::operator[] (int k)

{

int d=k;

mylist<T> *point;

point = ptr;

for (; k; k--)

{

if (point->next) point = point->next; 

}

return point->data;

}

 

 

template <typename T>

T Iterator<T>::operator* ()

{

return ptr->data;

}

 

template <typename T>

mylist<T>* Iterator<T>::getptr()

{

return ptr;

}

 

template <typename T>

T* Iterator<T>::getT ()

{

return &(ptr->data);

}

 

 

 

 

Файл «exceptions.h»

 

#ifndef EXCEPT_H

#define EXCEPT_H

 

class ListNotFree {};

 

 

#endif

 

Файл «database.cpp»

 

// DataBase.cpp : main project file.

 

#include "stdafx.h"

#include "Form1.h"

 

using namespace DataBase;

 

[STAThreadAttribute]

int main(array<System::String ^> ^args)

{

// Enabling Windows XP visual effects before any controls are created

Application::EnableVisualStyles();  //Установка стиля отображения

Application::SetCompatibleTextRenderingDefault(false);

 

// Create the main window and run it

Application::Run(gcnew Form1());  //Запуск приложения

return 0;

}

 

Файл «Form1.h»

 

#pragma once

 

#include "citybus.h"

#include "citybus.cpp"

#include "comfortbus.h"

#include "mylist.h"

#include "iterator.h"

#include "iterator.cpp"

#include "mylist.cpp"

#include "Form2.h"

#include "Form3.h"

//#include "modellist.h"

//#include "servicelist.h"

#include <iostream>

 

using namespace System::Runtime::InteropServices;

 

 

class List<CityBus> mainlist;

class Iterator<CityBus> mainptr;

class List<ComfortBus> maincomlist;

class Iterator<ComfortBus> maincomptr;

 

 

int selectpos1 = 0;

int selectpos2 = 0;

 

 

 

//class List<servlist> servicelist;

//class listIter<servlist> serviceptr;

//class Algoritm<myclass> alg;

int postook;

bool findflag = false;

int posvisib = 0;

 

 

 

 

char * and_SysStringToChar(System::String^ string)

{

return (char*)(void*)Marshal::StringToHGlobalAnsi(string);

}

 

System::String^  and_CharToSysString(char* ch)

{

char * chr=new char[]=ch;

System::String^ str;

for(int i=0;chr[i]!='\0';i++)

{

str+=wchar_t(ch[i]);

}

return str;

}

 

 

namespace DataBase {

 

using namespace System;

using namespace System::ComponentModel;

using namespace System::Collections;

using namespace System::Windows::Forms;

using namespace System::Data;

using namespace System::Drawing;

 

 

public ref class Form1 : public System::Windows::Forms::Form

{

public:

Form1(void)

{

InitializeComponent();

//

//TODO: Add the constructor code here

//

}

 

protected:

/// <summary>

/// Clean up any resources being used.

/// </summary>

~Form1()

{

if (components)

{

delete components;

}

}

 

 

private: System::Void exitToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {

Application::Exit();

}

private: System::Void dataGridView1_CellContentClick(System::Object^  sender, System::Windows::Forms::DataGridViewCellEventArgs^  e) {

}

private: System::Void tabPage2_Click(System::Object^  sender, System::EventArgs^  e) {

}

private: System::Void radioButton1_CheckedChanged(System::Object^  sender, System::EventArgs^  e) {

 

int count = this->dataGridView2->RowCount;

int i = count;

while(i)

{

this->dataGridView2->Rows[i-1]->Visible = true;

i--;

};

}

private: System::Void aboutToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e) {

System::Windows::Forms::MessageBox::Show("   Bus Database editor  \n   Kozak Sergei         group 050504   \n   BSUIR 2012");

}

private: System::Void openFileDialog1_FileOk(System::Object^  sender, System::ComponentModel::CancelEventArgs^  e) {

}

private: System::Void openToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e)

//Открытие файла

{

System::String ^ ttv;

System::String ^ twc;

this->openFileDialog1->AddExtension = true;

this->openFileDialog1->DefaultExt = and_CharToSysString(".cbd");

this->openFileDialog1->Filter = and_CharToSysString("Bus Database (*.cbd)|*.cbd");

openFileDialog1->ShowDialog();

System::String ^ Filename = gcnew System::String(openFileDialog1->FileName);

this->textBox5->Text = Filename;

char *str = and_SysStringToChar(Filename);

bool flag = false;

do

{

if (flag)

{

this->dataGridView1->Rows->Clear();

do

{

mainlist.pop_back();

if (!mainlist.getweight()) break;

} while (1);

flag = false;

}

 

try

{

mainlist.PopFromFile(str);

 

}

catch(ListNotFree)

{

flag = true;

}

} while (flag);

 

int len = strlen(str);

len-=3;

*(str+len++) = 'm';

*(str+len++) = 'b';

*(str+len++) = 'd';

 

flag = false;

do

{

if (flag)

{

this->dataGridView2->Rows->Clear();

do

{

maincomlist.pop_back();

if (!maincomlist.getweight()) break;

} while (1);

flag = false;

}

 

try

{

maincomlist.PopFromFile(str);

 

}

catch(ListNotFree)

{

flag = true;

 

 

}

} while (flag);

mainptr = mainlist;

maincomptr = maincomlist;

 

 

if (mainlist.getweight())

{

  do

  {

this->dataGridView1->Rows->Add

(and_CharToSysString((*mainptr).getRegNumber() ),

  and_CharToSysString((*mainptr).getMark() ),

  and_CharToSysString((*mainptr).getState() ),

  (*mainptr).getSeats() ,

   and_CharToSysString((*mainptr).getST()));

if (mainptr.getptr() == mainlist.back()) break;

mainptr++;     

  } while (1);

}

mainptr = mainlist;

 

if (maincomlist.front() != NULL)

{

  do

  {

  if((*maincomptr).gettv())

     ttv = "Yes";

  else

  ttv = "No";

  if((*maincomptr).getbwc())

  twc = "Yes";

  else

  twc  = "No";

 

 

this->dataGridView2->Rows->Add

(and_CharToSysString((*maincomptr).getRegNumber()),

  and_CharToSysString((*maincomptr).getMark()),

  and_CharToSysString((*maincomptr).getState()),

  Convert::ToString((*maincomptr).getSeats()),

  twc,

  ttv);

if (maincomptr.getptr() == maincomlist.back()) break;

maincomptr++;     

} while (1);

}

maincomptr = maincomlist;

//if(maincomlist.getweight())

 

this->groupBox3->Visible = true;

this->groupBox4->Visible = true;

 

}

private: System::Void newToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e)

//Создание нового файла

{

char str[] = "NoNameBase.cbd";

this->textBox5->Text = and_CharToSysString(str);

 

bool flag = false;

do

{

if (flag)

{

this->dataGridView1->Rows->Clear();

do

{

mainlist.pop_back();

if (!mainlist.getweight()) break;

} while (1);

flag = false;

}

 

try

{

mainlist.PopFromFile(str);    

}

catch(ListNotFree)

{

flag = true;

}

} while (flag);

 

int len = strlen(str);

len-=3;

*(str+len++) = 'm';

*(str+len++) = 'b';

*(str+len++) = 'd';

flag = false;

do

{

if (flag)

{

this->dataGridView2->Rows->Clear();

do

{

maincomlist.pop_back();

if (!maincomlist.getweight()) break;

} while (1);

flag = false;

}

 

try

{

maincomlist.PopFromFile(str);    

}

catch(ListNotFree)

{

flag = true;

}

} while (flag);

maincomptr = maincomlist;

//bigcomptr = bigcomlist;

mainptr = mainlist;

//bigptr = biglist;

 

this->groupBox3->Visible = true;

this->groupBox4->Visible = true;

}

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e)

//Добавление новой записи об  автобусе

{

 Form2^ form2 = gcnew Form2;

if(form2->ShowDialog() == System::Windows::Forms::DialogResult::OK)

{

bool flag = false;

bool flag2 = false;

mainptr = mainlist;

maincomptr = maincomlist;

if(mainlist.getweight())

do

{

 

if(strcmp((*mainptr).getRegNumber(),and_SysStringToChar(form2->textBox2->Text)) == 0)

{

flag = true;

System::Windows::Forms::MessageBox::Show("Current number is already in use!" , "Entry error" ,MessageBoxButtons::OK,MessageBoxIcon::Exclamation);

break;

}

if(mainptr.getptr() == mainlist.back() ) break;

mainptr++;

}

while(1);

if(maincomlist.getweight())

do

{

//System::Windows::Forms::MessageBox::Show(and_CharToSysString((*maincomptr).getDriver1()) , "Entry error" ,MessageBoxButtons::OK,MessageBoxIcon::Exclamation);

if(!strcmp((*maincomptr).getRegNumber(),and_SysStringToChar(form2->textBox2->Text)) )

{

flag2 = true;

System::Windows::Forms::MessageBox::Show("Current number is already in use!" , "Entry error" ,MessageBoxButtons::OK,MessageBoxIcon::Exclamation);

break;

}

if(maincomptr.getptr() == maincomlist.back() ) break;

maincomptr++;

}

while(1);

if(form2->radioButton1->Checked && !flag && !flag2)

{

/* int number = 1;

bool numflag = false;

do

{

numflag = false;

mainptr = mainlist;

if (!mainlist.getweight()) break;

do

{

if (number == (*mainptr).getnum()) {number++; numflag = true; }

if (mainptr.getptr() == mainlist.back()) break;

mainptr++;

} while (1);

} while (numflag);*/

CityBus *temp = new CityBus(

Convert::ToInt32(form2->numericUpDown1->Text),

form2->textBox2->Text,

form2->comboBox1->Text,

form2->textBox1->Text,

form2->textBox3->Text,

form2->textBox4->Text,

form2->comboBox2->Text,

true,

true

);

 

 

this->dataGridView1->Rows->Add(form2->textBox2->Text,

form2->textBox1->Text,

form2->comboBox1->Text,

form2->numericUpDown1->Text,

 

form2->comboBox2->Text);

mainlist.push_back(*temp);

mainptr = mainlist;

/*

mainlist.Add(&mainptr,*temp);

mainptr = mainlist;

 

 

mainptr = mainlist;

this->dataGridView1->Rows->Clear();

 

do

{

 

this->dataGridView1->Rows->Add(and_CharToSysString((*mainptr).getRegNumber()),

and_CharToSysString((*mainptr).getMark()),

and_CharToSysString((*mainptr).getState()),

(*mainptr).getSeats(),

and_CharToSysString((*mainptr).getST()));

 

 

if(mainlist.back() == mainptr.getptr()) break;

mainptr++;

}

while(1);*/

 

 

 

}

else

{

if(!flag2 && !flag)

{

System::String ^ tmpwc;

bool boolwc;

System::String ^ tmptv;

bool booltv;

if(form2->checkBox1->Checked)

{

tmpwc = "Yes";

boolwc = true;

}

else

{

tmpwc = "No";

boolwc = false;

}

if(form2->checkBox2->Checked)

{

tmptv = "Yes";

booltv = true;

}

else

{

tmptv = "No";

booltv = false;

}

 

ComfortBus *tmp = new ComfortBus(

Convert::ToInt32(form2->numericUpDown1->Text),

form2->textBox2->Text,

form2->comboBox1->Text,

form2->textBox1->Text,

form2->textBox3->Text,

form2->textBox4->Text,

boolwc,

booltv);

 

 

this->dataGridView2->Rows->Add(form2->textBox2->Text, form2->textBox1->Text, form2->comboBox1->Text, form2->numericUpDown1->Text, tmptv, tmpwc);

maincomlist.push_back(*tmp);

maincomptr = maincomlist;

/* this->dataGridView2->Rows->Clear();

 

do

{

 

this->dataGridView2->Rows->Add(and_CharToSysString((*maincomptr).getRegNumber()),

and_CharToSysString((*maincomptr).getMark()),

and_CharToSysString((*maincomptr).getState()),

(*maincomptr).getSeats()

);

 

 

if(maincomlist.back() == maincomptr.getptr()) break;

maincomptr++;

}

while(1);*/

maincomptr = maincomlist;

}

}

}

 

private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e)

//Удаление записи об автобусе

{

if(this->tabControl1->SelectedTab == tabPage2 && maincomlist.getweight())

{

maincomptr = maincomlist;

for(int i = 0;i<selectpos2;i++)

maincomptr++;

maincomlist.Delete(&maincomptr);

this->dataGridView2->Rows->RemoveAt(selectpos2);

this->textBox1->Clear();

this->textBox2->Clear();

 

}

else

{

if(mainlist.getweight())

{

 

mainptr = mainlist;

for(int i = 0;i<selectpos1;i++)

mainptr++;

this->dataGridView1->Rows->RemoveAt(selectpos1);

mainlist.Delete(&mainptr);

 

this->textBox3->Clear();

this->textBox4->Clear();

}

}

 

}

private: System::Void dataGridView2_CellContentClick(System::Object^  sender, System::Windows::Forms::DataGridViewCellEventArgs^  e) {

}

private: System::Void toolStripButton1_Click(System::Object^  sender, System::EventArgs^  e)

//Создание нового файла

{

char str[] = "NoNameBase.cbd";

this->textBox5->Text = and_CharToSysString(str);

 

bool flag = false;

do

{

if (flag)

{

this->dataGridView1->Rows->Clear();

do

{

mainlist.pop_back();

if (!mainlist.getweight()) break;

} while (1);

flag = false;

}

 

try

{

mainlist.PopFromFile(str);    

}

catch(ListNotFree)

{

flag = true;

}

} while (flag);

 

int len = strlen(str);

len-=3;

*(str+len++) = 'm';

*(str+len++) = 'b';

*(str+len++) = 'd';

flag = false;

do

{

if (flag)

{

this->dataGridView2->Rows->Clear();

do

{

maincomlist.pop_back();

if (!maincomlist.getweight()) break;

} while (1);

flag = false;

}

 

try

{

maincomlist.PopFromFile(str);    

}

catch(ListNotFree)

{

flag = true;

}

} while (flag);

maincomptr = maincomlist;

bigcomptr = bigcomlist;

mainptr = mainlist;

bigptr = biglist;

 

this->groupBox3->Visible = true;

this->groupBox4->Visible = true;

 

}

private: System::Void saveToolStripMenuItem_Click(System::Object^  sender, System::EventArgs^  e)

//Сохранение в файл

{

 

 if(mainlist.getweight())

 if(maincomlist.getweight())

{

System::String ^ Filename = gcnew System::String(this->textBox5->Text);

char *str = and_SysStringToChar(Filename);

mainlist.SendToFile(str);

int len = strlen(str);

len-=3;

*(str+len++) = 'm';

*(str+len++) = 'b';

*(str+len++) = 'd';

 

 

maincomlist.SendToFile(str);

}

 

 

}

private: System::Void button3_Click(System::Object^  sender, System::EventArgs^  e) {

Form3^ form3 = gcnew Form3;

mainptr = mainlist;

 

maincomptr = maincomlist;

 

 

if(this->tabControl1->SelectedTab == tabPage1)

{

for (int i = 0;  i < selectpos1 ; i++) mainptr++;

form3->textBox1->Text = and_CharToSysString(mainptr[selectpos1].getMark());

form3->textBox2->Text = and_CharToSysString(mainptr[selectpos1].getRegNumber());

form3->comboBox1->Text = and_CharToSysString(mainptr[selectpos1].getState());

form3->numericUpDown1->Value = mainptr[selectpos1].getSeats();

form3->textBox3->Text = and_CharToSysString(mainptr[selectpos1].getDriver1());

form3->textBox4->Text = and_CharToSysString(mainptr[selectpos1].getDriver2());

form3->comboBox2->Text = and_CharToSysString(mainptr[selectpos1].getST());

form3->radioButton1->Checked = true;

}

else

{

for (int i = 0;  i < selectpos2 ; i++) maincomptr++;

form3->textBox1->Text = and_CharToSysString(maincomptr[selectpos2].getMark());

form3->textBox2->Text = and_CharToSysString(maincomptr[selectpos2].getRegNumber());

form3->comboBox1->Text = and_CharToSysString(maincomptr[selectpos2].getState());

form3->numericUpDown1->Value = maincomptr[selectpos1].getSeats();

form3->textBox3->Text = and_CharToSysString(maincomptr[selectpos2].getDriver1());

form3->textBox4->Text = and_CharToSysString(maincomptr[selectpos2].getDriver2());

form3->checkBox1->Checked = maincomptr[selectpos2].getbwc();

form3->checkBox2->Checked = maincomptr[selectpos2].gettv();

 

 

form3->radioButton2->Checked = true;

}

if(form3->ShowDialog() == System::Windows::Forms::DialogResult::OK)

{

if(this->tabControl1->SelectedTab == tabPage1)

{

mainptr.getT()->setMark(and_SysStringToChar(form3->textBox1->Text));

mainptr.getT()->setRegNumber(and_SysStringToChar(form3->textBox2->Text));

mainptr.getT()->setMark(and_SysStringToChar(form3->comboBox1->Text));

Информация о работе Управление информацией в автобусном парке