Автор: Пользователь скрыл имя, 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.Литература___________________________________________________________
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::
Application::
// 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::
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::
{
return (char*)(void*)Marshal::
}
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(
Application::Exit();
}
private: System::Void dataGridView1_
}
private: System::Void tabPage2_Click(System::Object^
}
private: System::Void radioButton1_CheckedChanged(
int count = this->dataGridView2->RowCount;
int i = count;
while(i)
{
this->dataGridView2->Rows[i-1]
i--;
};
}
private: System::Void aboutToolStripMenuItem_Click(
System::Windows::Forms::
}
private: System::Void openFileDialog1_FileOk(System:
}
private: System::Void openToolStripMenuItem_Click(
//Открытие файла
{
System::String ^ ttv;
System::String ^ twc;
this->openFileDialog1->
this->openFileDialog1->
this->openFileDialog1->Filter = and_CharToSysString("Bus Database (*.cbd)|*.cbd");
openFileDialog1->ShowDialog();
System::String ^ Filename = gcnew System::String(
this->textBox5->Text = Filename;
char *str = and_SysStringToChar(Filename);
bool flag = false;
do
{
if (flag)
{
this->dataGridView1->Rows->
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->
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((*
and_CharToSysString((*mainptr)
and_CharToSysString((*mainptr)
(*mainptr).getSeats() ,
and_CharToSysString((*mainptr)
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((*
and_CharToSysString((*
and_CharToSysString((*
Convert::ToString((*
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(
//Создание нового файла
{
char str[] = "NoNameBase.cbd";
this->textBox5->Text = and_CharToSysString(str);
bool flag = false;
do
{
if (flag)
{
this->dataGridView1->Rows->
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->
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::
{
bool flag = false;
bool flag2 = false;
mainptr = mainlist;
maincomptr = maincomlist;
if(mainlist.getweight())
do
{
if(strcmp((*mainptr).
{
flag = true;
System::Windows::Forms::
break;
}
if(mainptr.getptr() == mainlist.back() ) break;
mainptr++;
}
while(1);
if(maincomlist.getweight())
do
{
//System::Windows::Forms::
if(!strcmp((*maincomptr).
{
flag2 = true;
System::Windows::Forms::
break;
}
if(maincomptr.getptr() == maincomlist.back() ) break;
maincomptr++;
}
while(1);
if(form2->radioButton1->
{
/* 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->
form2->textBox2->Text,
form2->comboBox1->Text,
form2->textBox1->Text,
form2->textBox3->Text,
form2->textBox4->Text,
form2->comboBox2->Text,
true,
true
);
this->dataGridView1->Rows->
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->
do
{
this->dataGridView1->Rows->
and_CharToSysString((*mainptr)
and_CharToSysString((*mainptr)
(*mainptr).getSeats(),
and_CharToSysString((*mainptr)
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->
form2->textBox2->Text,
form2->comboBox1->Text,
form2->textBox1->Text,
form2->textBox3->Text,
form2->textBox4->Text,
boolwc,
booltv);
this->dataGridView2->Rows->
maincomlist.push_back(*tmp);
maincomptr = maincomlist;
/* this->dataGridView2->Rows->
do
{
this->dataGridView2->Rows->
and_CharToSysString((*
and_CharToSysString((*
(*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->
{
maincomptr = maincomlist;
for(int i = 0;i<selectpos2;i++)
maincomptr++;
maincomlist.Delete(&
this->dataGridView2->Rows->
this->textBox1->Clear();
this->textBox2->Clear();
}
else
{
if(mainlist.getweight())
{
mainptr = mainlist;
for(int i = 0;i<selectpos1;i++)
mainptr++;
this->dataGridView1->Rows->
mainlist.Delete(&mainptr);
this->textBox3->Clear();
this->textBox4->Clear();
}
}
}
private: System::Void dataGridView2_
}
private: System::Void toolStripButton1_Click(System:
//Создание нового файла
{
char str[] = "NoNameBase.cbd";
this->textBox5->Text = and_CharToSysString(str);
bool flag = false;
do
{
if (flag)
{
this->dataGridView1->Rows->
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->
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(
//Сохранение в файл
{
if(mainlist.getweight())
if(maincomlist.getweight())
{
System::String ^ Filename = gcnew System::String(this->textBox5-
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->
{
for (int i = 0; i < selectpos1 ; i++) mainptr++;
form3->textBox1->Text = and_CharToSysString(mainptr[
form3->textBox2->Text = and_CharToSysString(mainptr[
form3->comboBox1->Text = and_CharToSysString(mainptr[
form3->numericUpDown1->Value = mainptr[selectpos1].getSeats()
form3->textBox3->Text = and_CharToSysString(mainptr[
form3->textBox4->Text = and_CharToSysString(mainptr[
form3->comboBox2->Text = and_CharToSysString(mainptr[
form3->radioButton1->Checked = true;
}
else
{
for (int i = 0; i < selectpos2 ; i++) maincomptr++;
form3->textBox1->Text = and_CharToSysString(
form3->textBox2->Text = and_CharToSysString(
form3->comboBox1->Text = and_CharToSysString(
form3->numericUpDown1->Value = maincomptr[selectpos1].
form3->textBox3->Text = and_CharToSysString(
form3->textBox4->Text = and_CharToSysString(
form3->checkBox1->Checked = maincomptr[selectpos2].getbwc(
form3->checkBox2->Checked = maincomptr[selectpos2].gettv()
form3->radioButton2->Checked = true;
}
if(form3->ShowDialog() == System::Windows::Forms::
{
if(this->tabControl1->
{
mainptr.getT()->setMark(and_
mainptr.getT()->setRegNumber(
mainptr.getT()->setMark(and_
Информация о работе Управление информацией в автобусном парке