рефераты
рефераты
Поиск
Расширенный поиск
рефераты
рефераты
рефераты
рефераты
МЕНЮ
рефераты
рефераты Главная
рефераты
рефераты Астрономия и космонавтика
рефераты
рефераты Биология и естествознание
рефераты
рефераты Бухгалтерский учет и аудит
рефераты
рефераты Военное дело и гражданская оборона
рефераты
рефераты Государство и право
рефераты
рефераты Журналистика издательское дело и СМИ
рефераты
рефераты Краеведение и этнография
рефераты
рефераты Производство и технологии
рефераты
рефераты Религия и мифология
рефераты
рефераты Сельское лесное хозяйство и землепользование
рефераты
рефераты Социальная работа
рефераты
рефераты Социология и обществознание
рефераты
рефераты Спорт и туризм
рефераты
рефераты Строительство и архитектура
рефераты
рефераты Таможенная система
рефераты
рефераты Транспорт
рефераты
рефераты Делопроизводство
рефераты
рефераты Деньги и кредит
рефераты
рефераты Инвестиции
рефераты
рефераты Иностранные языки
рефераты
рефераты Информатика
рефераты
рефераты Искусство и культура
рефераты
рефераты Исторические личности
рефераты
рефераты История
рефераты
рефераты Литература
рефераты
рефераты Литература зарубежная
рефераты
рефераты Литература русская
рефераты
рефераты Авиация и космонавтика
рефераты
рефераты Автомобильное хозяйство
рефераты
рефераты Автотранспорт
рефераты
рефераты Английский
рефераты
рефераты Антикризисный менеджмент
рефераты
рефераты Адвокатура
рефераты
рефераты Банковское дело и кредитование
рефераты
рефераты Банковское право
рефераты
рефераты Безопасность жизнедеятельности
рефераты
рефераты Биографии
рефераты
рефераты Маркетинг реклама и торговля
рефераты
рефераты Математика
рефераты
рефераты Медицина
рефераты
рефераты Международные отношения и мировая экономика
рефераты
рефераты Менеджмент и трудовые отношения
рефераты
рефераты Музыка
рефераты
рефераты Кибернетика
рефераты
рефераты Коммуникации и связь
рефераты
рефераты Косметология
рефераты
рефераты Криминалистика
рефераты
рефераты Криминология
рефераты
рефераты Криптология
рефераты
рефераты Кулинария
рефераты
рефераты Культурология
рефераты
рефераты Налоги
рефераты
рефераты Начертательная геометрия
рефераты
рефераты Оккультизм и уфология
рефераты
рефераты Педагогика
рефераты
рефератыПолиграфия
рефераты
рефераты Политология
рефераты
рефераты Право
рефераты
рефераты Предпринимательство
рефераты
рефераты Программирование и комп-ры
рефераты
рефераты Психология
рефераты
рефераты Радиоэлектроника
рефераты
РЕКЛАМА
рефераты
 
рефераты

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

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

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

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

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

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

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

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

Дата сдачи: _____________

                                                          Подпись: _____________

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

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

Москва

1998

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


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









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


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


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

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

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

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

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

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

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

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

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




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

 

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

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


    Для нормальной работы программы требуется PC совместимый компьютер и компилятор Borland 3.01 и выше. При использование иного сочетая характеристик системы на которой будет тестироваться программа возможны некоторые расхождения с результатами теста, но в основном ничего страшного произойти не должно.



























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



#include <iostream.h>

#include <fstream.h>


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; i<Digit*10+10; i++)

   {Tree *PTree;

    PTree=new Tree(i);

    PTree->LP=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()

 

  cout<<" 1. Make New


int TreeWork::SubMenu()

 


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<<endl<<"You have existing list!"; return 0;}

  int Quant;

  cout<<endl<<"Input quantity of elements: ";

  do

   {cin>>Quant;

    if (Quant<1)

     cout<<endl<<"Error! Try againt: ";

   }

  while (Quant<1);

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

   {cout<<endl<<"Input digit: ";

    int Digit; cin>>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<<endl<<"Input quantity of elements: ";

  do

   {cin>>Quant;

    if (Quant<1)

     cout<<endl<<"Error! Try again: ";

   }

  while (Quant<1);

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

   {cout<<endl<<"Input digit: ";

    int Digit;

    cin>>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)

   {cout<<endl<<"The list is empty!"<<endl; return -1;}

  cout<<endl<<"Total elements: "<<ElementQuantity<<endl;

  PList=BegP;

  int i=1;

  do

   {cout<<endl<<" "<<i<<" element: "<<endl;

    GoThroughTree(PList->Root);

    cout<<endl;

    i++;

    PList=PList->LNext;}

  while (PList!=BegP);

  return 0;

 }


void TreeWork::GoThroughTree(Tree *L)

 {Tree *PL=L, *PL1;

  if (PL->LP!=NULL)

   {PL1=PL;

    PL=PL->LP;

    cout<<"("<<PL1->Body<<","<<PL->Body<<") ";

    GoThroughTree(PL);}

  if (PL->RP!=NULL)

   {PL1=PL;

    PL=PL->RP;

    cout<<"("<<PL1->Body<<","<<PL->Body<<") ";

    GoThroughTree(PL);}

 }


void TreeWork::Erase(Tree *L)

 {Tree *PL=L;

  if (PL->LP!=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<<endl<<"Input number of element: ";

  int Number=0;

  cin>>Number;

  if (Number>ElementQuantity || Number<0)

   {cout<<endl<<"Error!"; return -1;}

  Number--;

  PList=BegP;

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

   PList=PList->LNext;

  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<<endl<<"Input number, you want to find: ";

  int Number=0;

  cin>>Number;

  PList=BegP;

  do

   {Tree *PT=PList->Root;

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

     {cout<<endl<<"Element with this number: "<<endl;

      GoThroughTree(PList->Root);

      PList=NULL; cout<<endl; return 0;}

    PList=PList->LNext;

   }

  while (PList!=BegP);

  cout<<endl<<"There aren't such number in list!"<<endl;

  PList=NULL;

  return -1;

 }


int TreeWork::SortByIncrease()

 {

  if(BegP==NULL) {cout<<endl<<"Error!"<<endl; return -1;}

  List *PList1=BegP; PList=BegP;

  do

   {do

     {if (PList1->Root->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) {cout<<endl<<"Error!"<<endl; return -1;}

  List *PList1=BegP; PList=BegP;

  do

   {do

     {if (PList1->Root->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::SaveList()

 {if (BegP==NULL)

   {cout<<endl<<"The list is empty!"<<endl; return -1;}

  ofstream F;

  char *FileName=new char[25];

  cout<<endl<<"Input file name: "; cin>>FileName;

  F.open(FileName);

  PList=BegP;

  do

   {i=0;

    Mass=PList->Root->Body;

    PList=PList->LNext;

    if (PList!=BegP)

     F<<Mass<<endl;

    else

     F<<Mass;

   }

  while (PList!=BegP);

  F.close();

  delete [] FileName;

  return 0;

 }


int TreeWork::OpenList()

 {if (BegP!=NULL)

   {cout<<endl<<"The list is alredy exist!"<<endl; return -1;}

  cout<<endl<<"Input file name: ";

  char *FileName=new char[25];

  cin>>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:

Ту мы можем сортировать по возрастанию или убыванию (ведь у человека всегда должен быть выбор!). После сортировки Главное меню/Выход! Всё программа завершилась успешно! А поскольку эти тесты никто не читает, то можно сказать что компьютеры в нашем институте сделаны из дуба.


     



рефераты
рефераты
© 2011 Все права защищены