Составление программы

Заказать работу

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

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

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

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

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

Составление программы.

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

Группа: 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<<endl<<"Main Menu:"<<endl<<endl;

cout<<" 1. Make New List." <<endl;

cout<<" 2. Add Element." <<endl;

cout<<" 3. Print List." <<endl;

cout<<" 4. Delete Element."<<endl;

cout<<" 5. Save List." <<endl;

cout<<" 6. Erase List." <<endl;

cout<<" 7. Open File." <<endl;

cout<<" 8. Find Element." <<endl;

cout<<" 9. Sort List." <<endl;

cout<<" 0. Exit." <<endl;

cout<<endl<<"Your choice : ";

int i;

do

{cin>>i;

if (i<0 || i>9) cout<<endl<<"Error! Try again : ";

}

while (i<0 || i>9);

return i;

 }

int TreeWork::SubMenu()

 {cout<<endl<<"Sub Menu:"<<endl;

cout<<"1. Sort list by increase."<<endl;

cout<<"2. Sort list by decrease."<<endl<<endl;

int i;

cout<<"Your choice: ";

do

{cin>>i;

if (i<1 || i>2) cout<<endl<<"Error! Try again : ";

}

while (i<1 || i>2);

return 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<<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:
Ту мы можем сортировать по возрастанию или убыванию (ведь у человека всегда должен быть выбор!). После сортировки Главное меню/Выход! Всё программа завершилась успешно! А поскольку эти тесты никто не читает, то можно сказать что компьютеры в нашем институте сделаны из дуба.

Другие материалы

  • Методика составления тестовых заданий по курсу "Механика"
  • ... требования. Надежность и валидность можно оценить с помощью таб­лицы 1.1.[1] 2. РАЗРАБОТКА ПАКЕТА ТЕСТОВЫХ ЗАДАНИЙ ДЛЯ ОПЕРАТИВНОГО КОНТРОЛЯ УРОВНЯ ЗНАНИЙ СТУДЕНТОВ ПО КУРСУ «МЕХАНИКА» Одним из эффективных инструментов при проведении педагогического эксперимента является компьютерная технология ...

  • Разработка программы для расчета финансовых показателей используемых в составлении бизнес-плана на языке Visual Basic
  • ... "Featuring Microsoft Visual Basic Technology". Это заставляет задуматься над тем, что же такое BASIC - "стандартный код для начинающих" или "основной язык для ос­новной среды"... ГЛАВА3. разработка программы для расчета показателей финансового состояния предприятия ...

  • Порядок составления и оформления документов в РФ
  • ... они готовились») или в безличной форме («срок хранения документов определяется по Перечню»). 20       Виды распорядительных документов, требования к их составлению и оформлению. Порядок составления и оформления приказов по основной деятельности   К наиболее ...

  • Составление сводного бюджета промышленного предприятия на примере УЗТИ
  • ... Для более глубокого знакомства с бюджетным планированием необходимо рассмотреть практический пример составления сводного бюджета предприятия, что мы и сделаем на примере вышеуказанного предприятия. Описание предприятия – Собственник ·  ОАО Фирма «Энергозащита» г. Москва. Основное ...

  • Планирование и программа аудита
  • ... системы. Составляя общий план и программу аудита, аудиторской организации следует учитывать степень автоматизации обработки учетной информации, что также позволит точнее определить объем и характер аудиторских процедур. При проведении общего планирования большое значение придается профессиональным ...

  • Бизнес план социально инвестиционной программы Пуховый мир
  • ... возможности улучшения делового планирования и призывает к созданию других подобных систем.Глава III. Бизнес – план социально инвестиционной программы «Пуховый мир»   Муниципальное образование «Верхнесалдинский район»Возрождение старинного рукодельного ремесла в Свердловской области Проект « ...

  • Внутризаводское планирование конверсионной программы
  • ... себестоимости вызовет рост годовой прибыли и приведет к увеличению эффективности проекта. Заключение. Внутризаводское планирование конверсионной программы приборного завода по производству электродвигателей переменного тока способствует повышению эффективности деятельности ...

  • Составление производственной программы
  • ... могут служить нормо-часы, т. е. затраты нормированного рабочего вре-. мени на изготовление продукции. Эти показатели применяются при составлении производственной программы цехов и участков с большой номенклатурой изготовляемых полуфабрикатов и дета­лей. Трудовые измерители не могут быть использованы ...

  • АСУ целевыми программами в некоммерческой организации
  • ... проект является частью комплексного проекта по разработке автоматизированной системы управления процессом формирования и реализации целевых программ в некоммерческой организации. И содержит предложения по решению задачи автоматизации учета и документооборота в рамках разрабатываемой темы. Обратим ...

  • Анализ программ государственного софинансирования пенсий
  • ... накоплений и повышения уровня пенсионного обеспечения граждан. В практической основе исследуемого вопроса: 1. На основании анализа процесса внедрения Программы государственного софинансирования пенсии в Российской Федерации на примере отдела Пенсионного Фонда Российской Федерации Ленинского района ...

  • Разработка программ по географии. Зарубежный опыт
  • ... Существует целый ряд принципов структурирования материала, которые используются при разработке программ по географии, однако в этой главе основное внимание будет уделено следующим вариантам организации материала: 1) на основе рассмотрения континентов и регионов мира; 2) на основе изучения понятийной ...

  • Программа регистрации процесса производства для автоматизированной системы управления предприятием электронной промышленности
  • ... дипломное проектирование. Необходимо разработать программу регистрации процеса производства партий полупроводниковых пластин для использования в автоматизированной системе управления. Программа должна обеспечивать контроль и регистрацию производственного процесса производства партий пластин. Вести ...

  • Программа установки защищенных сетевых соединений с использованием протокола ISAKMP
  • ... таблицы переставляются до тех пор, пока не получится упорядоченная диаграмма. Поиск сегментов рынка для программы установки защищенных сетевых соединений с помощью протокола ISAKMP Взрывной характер развития компьютерных технологий и резко возросшее количество действий совершаемых с помощью ...

Каталог учебных материалов

Свежие работы в разделе

Наша кнопка

Разместить ссылку на наш сайт можно воспользовавшись следующим кодом:

Контакты

Если у вас возникли какие либо вопросы, обращайтесь на email администратора: admin@kazreferat.info