Рефераты

Программирование на С++

Программирование на С++

МИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ.

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННО-ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ

им. К.Э. ЦИОЛКОВКОГО

КАФЕДРА ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

Курсовая работа второго курса второго семестра.

Руководитель: Чернадский

Дата сдачи: _____________

Подпись: _____________

Студент: Лицентов Д.Б.

Группа: 3ИТ-2-26

Москва

1998

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

Необходимо реализовать список вида:

Техническое описание программы.

В программе предусмотрена работа со списком, которая включает в себя:

1. Создание нового вписка;

2. Добавление элемента в список;

3. Вывод списка на дисплей;

4. Сохранение данных списка в файл;

5. Читение данных из файла;

6. Удаление списка из памяти компьютера;

7. Поиск элемента в списке;

8. Сортировка списка;

9. Удаление элемента списка.

Спецификация программы.

Ввод данных в программу может осуществляться двумя спосабами: ввод с

клавиатуры или из файла.

Для работы с файлом необходимо на соответствующий запрос программы ввести

имя файла, из которого будут взяты данные для построения списка.

Для нормальной работы программы требуется PC совместимый компьютер и

компилятор Borland 3.01 и выше. При использование иного сочетая

характеристик системы на которой будет тестироваться программа возможны

некоторые расхождения с результатами теста, но в основном ничего страшного

произойти не должно.

Текст программы.

#include

#include

class List

{struct Tree

{int Body;

Tree *LP;

Tree *RP;

Tree(int Bdy=0) {Body=Bdy; LP=NULL; RP=NULL;}

~Tree() {Body=0; LP=NULL; RP=NULL;}

};

public:

List(int Digit=0);

Tree *Root;

List *LNext;

List *LPrev;

};

List::List(int Digit)

{Root=NULL;

for (int i=Digit*10; iLP=NULL;

PTree->RP=NULL;

if (Root==NULL)

Root=PTree;

else

{Tree *PTree1=Root;

do

{if (PTree1->LP!=NULL)

PTree1=PTree1->LP;}

while (PTree1->LP!=NULL);

PTree1->LP=PTree;

PTree=NULL; PTree1=NULL;

}

}

}

class TreeWork : private List

{public:

void TreeWorkStart();

private:

int ElementQuantity;

int Mass;

int i;

List *BegP;

List *PList;

int MainMenu();

int Work(int Task);

int MakeNewList();

int AddElements();

int PrintList();

void EraseList();

int DeleteElement();

int FindElement();

int SubMenu();

int SubWork(int Task);

int SortByIncrease();

int SortByDecrease();

int SaveList();

int OpenList();

protected:

void GoThroughTree(Tree *L);

void Erase(Tree *L);

};

int TreeWork::MainMenu()

int TreeWork::SubMenu()

int i;

int TreeWork::SubWork(int Task)

{switch (Task)

{case 1 : SortByIncrease(); break; //Increase

case 2 : SortByDecrease(); break; //Decrease

}

return 0;

}

int TreeWork::Work(int Task)

{switch (Task)

{case 1 : ElementQuantity=MakeNewList(); break; //Make New List

case 2 : ElementQuantity+=AddElements(); break; //Add Element

case 3 : PrintList(); break; //Print List

case 4 : DeleteElement(); break; //Delete Element

case 5 : SaveList(); break; //Save List

case 6 : ElementQuantity=0; EraseList(); break; //Erase List

case 7 : OpenList(); break; //Open File

case 8 : FindElement(); break; //Find Element

case 9 : SubWork(SubMenu()); break; //Sort List

case 0 : EraseList(); return -1; //Exit

}

return 0;

}

void TreeWork::TreeWorkStart()

{ElementQuantity=0;

do {} while (Work(MainMenu())!=-1);

}

int TreeWork::MakeNewList()

{if (BegP!=NULL)

{cout>Quant;

if (Quant>Digit;

PList=new List(Digit);

if (BegP==NULL)

{BegP=PList;

BegP->LNext=BegP;

BegP->LPrev=BegP;

PList=NULL;}

else

{List *PList1=BegP->LPrev;

if (PList1==BegP)

{BegP->LNext=PList;

BegP->LPrev=PList;

PList->LNext=BegP;

PList->LPrev=BegP;

PList=NULL; PList1=NULL;}

else

{BegP->LPrev=PList;

PList1->LNext=PList;

PList->LNext=BegP;

PList->LPrev=PList1;

PList=NULL; PList1=NULL;}

}

}

return Quant;

}

int TreeWork::AddElements()

{if (BegP==NULL)

{MakeNewList(); return 0;}

int Quant;

cout>Quant;

if (Quant>Digit;

PList=new List(Digit);

List *PList1=BegP->LPrev;

if (PList1==BegP)

{BegP->LNext=PList;

BegP->LPrev=PList;

PList->LPrev=BegP;

PList->LNext=BegP;

PList1=NULL; PList=NULL;}

else

{BegP->LPrev=PList;

PList->LNext=BegP;

PList->LPrev=PList1;

PList1->LNext=PList;

PList=NULL; PList1=NULL;}

}

return Quant;

}

int TreeWork::PrintList()

{if (BegP==NULL)

{coutRoot);

coutLNext;}

while (PList!=BegP);

return 0;

}

void TreeWork::GoThroughTree(Tree *L)

{Tree *PL=L, *PL1;

if (PL->LP!=NULL)

{PL1=PL;

PL=PL->LP;

coutBodyBodyRP!=NULL)

{PL1=PL;

PL=PL->RP;

coutBodyBodyLP!=NULL)

{PL=PL->LP;

Erase(PL);}

if (PL->RP!=NULL)

{PL=PL->RP;

Erase(PL);}

PL->LP=NULL;

PL->RP=NULL;

}

void TreeWork::EraseList()

{if (BegP!=NULL)

{do

{List *PList1=BegP->LNext;

PList=PList1->LNext;

BegP->LNext=PList;

PList->LPrev=BegP;

Erase(PList1->Root);

delete [] PList1;

}

while (PList!=BegP);

BegP=NULL; PList=NULL;

}

}

int TreeWork::DeleteElement()

{cout>Number;

if (Number>ElementQuantity || NumberLNext;

List *PList1=PList->LNext, *PList2=PList->LPrev;

if (PList==BegP)

{PList1->LPrev=PList2;

PList2->LNext=PList1;

PList->LNext=NULL;

PList->LPrev=NULL;

delete [] PList;

BegP=PList1;

PList1=NULL; PList2=NULL;}

else

{PList1->LPrev=PList2;

PList2->LNext=PList1;

PList->LNext=NULL;

PList->LPrev=NULL;

delete [] PList;

PList1=NULL; PList2=NULL;}

ElementQuantity--;

return 0;

}

int TreeWork::FindElement()

{cout>Number;

PList=BegP;

do

{Tree *PT=PList->Root;

if (Number>PT->Body && NumberBody+10)

{coutRoot);

PList=NULL; coutLNext;

}

while (PList!=BegP);

coutRoot->Body>PList->Root->Body)

{Tree *PT;

PT=PList1->Root;

PList1->Root=PList->Root;

PList->Root=PT;

PT=NULL;}

PList1=PList1->LNext;

}

while (PList1!=BegP);

PList=PList->LNext;

}

while (PList!=BegP);

return 0;

}

int TreeWork::SortByDecrease()

{

if(BegP==NULL) {coutRoot->BodyRoot->Body)

{Tree *PT;

PT=PList1->Root;

PList1->Root=PList->Root;

PList->Root=PT;

PT=NULL;}

PList1=PList1->LNext;

}

while (PList1!=BegP);

PList=PList->LNext;

}

while (PList!=BegP);

return 0;

}

int TreeWork::SaveList()

{if (BegP==NULL)

{cout>FileName;

F.open(FileName);

PList=BegP;

do

{i=0;

Mass=PList->Root->Body;

PList=PList->LNext;

if (PList!=BegP)

F>FileName;

ifstream f;

ElementQuantity=0;

f.open(FileName);

char Next;

Next=f.peek();

while (Next!=EOF)

{

f>>Mass;

PList=new List(Mass/10);

if (BegP==NULL)

{BegP=PList;

BegP->LNext=BegP;

BegP->LPrev=BegP;

PList=NULL;}

else

{List *PList1=BegP->LPrev;

if (PList1==BegP)

{BegP->LNext=PList;

BegP->LPrev=PList;

PList->LNext=BegP;

PList->LPrev=BegP;

PList=NULL; PList1=NULL;}

else

{BegP->LPrev=PList;

PList1->LNext=PList;

PList->LNext=BegP;

PList->LPrev=PList1;

PList=NULL; PList1=NULL;}

}

Next=f.peek();

ElementQuantity++;

}

f.close();

delete [] FileName;

return 0;

}

TreeWork TW;

void main()

{TW.TreeWorkStart();}

Результаты работы программы.

Начало работы:

| |

|Main Menu: |

| |

|1. Make New List. |

|2. Add Element. |

|3. Print List. |

|4. Delete Element. |

|5. Save List. |

|6. Erase List. |

|7. Open File. |

|8. Find Element. |

|9. Sort List. |

|0. Exit. |

| |

|Your choice : |

Для создания списка выбираем пункт 1:

| |

|Main Menu: |

| |

|1. Make New List. |

|2. Add Element. |

|3. Print List. |

|4. Delete Element. |

|5. Save List. |

|6. Erase List. |

|7. Open File. |

|8. Find Element. |

|9. Sort List. |

|0. Exit. |

| |

|Your choice : 1 |

| |

|Input kol-vo of elements: |

Вводим количество элементов в списке (предположим 4):

| |

|Main Menu: |

| |

|1. Make New List. |

|2. Add Element. |

|3. Print List. |

|4. Delete Element. |

|5. Save List. |

|6. Erase List. |

|7. Open File. |

|8. Find Element. |

|9. Sort List. |

|0. Exit. |

| |

|Your choice : 1 |

| |

|Input kol-vo of elements: 4 |

| |

|Input digit: |

Успешное завершение ввода списка:

| |

|Input kol-vo of elements: 4 |

| |

|Input digit: 1 |

| |

|Input digit: 2 |

| |

|Input digit: 3 |

| |

|Input digit: 4 |

| |

|Main Menu: |

| |

|1. Make New List. |

|2. Add Element. |

|3. Print List. |

|4. Delete Element. |

|5. Save List. |

|6. Erase List. |

|7. Open File. |

|8. Find Element. |

|9. Sort List. |

|0. Exit. |

| |

|Your choice : |

После ввода списка попадаем в главное меню где выбираем пункт добавления

элемента :

| |

|Input digit: 1 |

| |

|Input digit: 2 |

| |

|Input digit: 3 |

| |

|Input digit: 4 |

| |

|Main Menu: |

| |

|1. Make New List. |

|2. Add Element. |

|3. Print List. |

|4. Delete Element. |

|5. Save List. |

|6. Erase List. |

|7. Open File. |

|8. Find Element. |

|9. Sort List. |

|0. Exit. |

| |

|Your choice : 2 |

| |

|Input kol-vo of elements: |

Программа просит ввести количечтво элементов которое мы хотим добавит к

нашему списку. Вводим 1 (для примера):

| |

|Input digit: 2 |

| |

|Input digit: 3 |

| |

|Input digit: 4 |

| |

|Main Menu: |

| |

|1. Make New List. |

|2. Add Element. |

|3. Print List. |

|4. Delete Element. |

|5. Save List. |

|6. Erase List. |

|7. Open File. |

|8. Find Element. |

|9. Sort List. |

|0. Exit. |

| |

|Your choice : 2 |

| |

|Input kol-vo of elements: 1 |

| |

|Input digit: |

Далее происходит ввод списка как было описано выше.

После удачного завершения добавления элемента в список мы вновь попадаем в

главное меню, где выбираем пункт вывода списка на экран монитора:

| |

|1 element: 1234 |

| |

|2 element: 2345 |

| |

|3 element: 3456 |

| |

|4 element: 4567 |

| |

|5 element: 2345 |

| |

|Main Menu: |

| |

|1. Make New List. |

|2. Add Element. |

|3. Print List. |

|4. Delete Element. |

|5. Save List. |

|6. Erase List. |

|7. Open File. |

|8. Find Element. |

|9. Sort List. |

|0. Exit. |

| |

|Your choice : |

Быстро проскользнув мимо Ваших глаз непонятные данные вы снова попадаете в

главное меню, где выбираете пункт удаление элемента:

| |

|2 element: 2345 |

| |

|3 element: 3456 |

| |

|4 element: 4567 |

| |

|5 element: 2345 |

| |

|Main Menu: |

| |

|1. Make New List. |

|2. Add Element. |

|3. Print List. |

|4. Delete Element. |

|5. Save List. |

|6. Erase List. |

|7. Open File. |

|8. Find Element. |

|9. Sort List. |

|0. Exit. |

| |

|Your choice : 4 |

| |

|Input number of element: 5 |

После чего элемент с введённым номером удален. После удачного завершения

удаления элемента Вы снова попадаете в главное меню, где выбираете пункт

сохранение списка:

|Main Menu: |

| |

|1. Make New List. |

|2. Add Element. |

|3. Print List. |

|4. Delete Element. |

|5. Save List. |

|6. Erase List. |

|7. Open File. |

|8. Find Element. |

|9. Sort List. |

|0. Exit. |

| |

|Your choice : 5 |

| |

|Input file name: demon13.txt |

После ввода имени файла данные из списка попадают на диск. И вы снова в

главном меню, где выбираете удаление списка:

|5. Save List. |

|6. Erase List. |

|7. Open File. |

|8. Find Element. |

|9. Sort List. |

|0. Exit. |

| |

|Your choice : 5 |

| |

|Input file name: demon13.txt |

| |

|Main Menu: |

| |

|1. Make New List. |

|2. Add Element. |

|3. Print List. |

|4. Delete Element. |

|5. Save List. |

|6. Erase List. |

|7. Open File. |

|8. Find Element. |

|9. Sort List. |

|0. Exit. |

| |

|Your choice : 6 |

После чего все данные в списке безвозвратно умирают и Вы опять у

главного списка, и выбираете Вы – открыть файл:

|5. Save List. |

|6. Erase List. |

|7. Open File. |

|8. Find Element. |

|9. Sort List. |

|0. Exit. |

| |

|Your choice : 6 |

| |

|Main Menu: |

| |

|1. Make New List. |

|2. Add Element. |

|3. Print List. |

|4. Delete Element. |

|5. Save List. |

|6. Erase List. |

|7. Open File. |

|8. Find Element. |

|9. Sort List. |

|0. Exit. |

| |

|Your choice : 7 |

| |

|Input file name: demon13.txt |

После чего ваш список оживает и … не надо «и» - лучше продолжим – Вы в

главном меню и Вы выбираете найти элемент:

|Main Menu: |

| |

|1. Make New List. |

|2. Add Element. |

|3. Print List. |

|4. Delete Element. |

|5. Save List. |

|6. Erase List. |

|7. Open File. |

|8. Find Element. |

|9. Sort List. |

|0. Exit. |

| |

|Your choice :8 |

| |

| |

|Input number, you want to find: 2 |

| |

|The first element that we fined out: |

|1234 |

Вы вводите то что хотели найти и – находите в строчке ХХХХХ. Главное

меню/Сортировка:

| |

|Main Menu: |

| |

|1. Make New List. |

|2. Add Element. |

|3. Print List. |

|4. Delete Element. |

|5. Save List. |

|6. Erase List. |

|7. Open File. |

|8. Find Element. |

|9. Sort List. |

|0. Exit. |

| |

|Your choice : 9 |

| |

|Sub Menu: |

|1. Sort list by increase. |

|2. Sort list by decrease. |

| |

|Your choice: |

Ту мы можем сортировать по возрастанию или убыванию (ведь у человека

всегда должен быть выбор!). После сортировки Главное меню/Выход! Всё

программа завершилась успешно! А поскольку эти тесты никто не читает, то

можно сказать что компьютеры в нашем институте сделаны из дуба.


© 2010 Современные рефераты