|
||||||||||||
|
||||||||||||
|
|||||||||
МЕНЮ
|
БОЛЬШАЯ ЛЕНИНГРАДСКАЯ БИБЛИОТЕКА - РЕФЕРАТЫ - Программирование на С++Программирование на С++МИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ. МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННО-ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ им. К.Э. ЦИОЛКОВКОГО КАФЕДРА ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ Курсовая работа второго курса второго семестра. Руководитель: Чернадский Дата сдачи: _____________ Подпись: _____________ Студент: Лицентов Д.Б. Группа: 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() while (i<0 int TreeWork::SubMenu() cout<<"1. Sort list by increase."<<endl; 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: | Ту мы можем сортировать по возрастанию или убыванию (ведь у человека всегда должен быть выбор!). После сортировки Главное меню/Выход! Всё программа завершилась успешно! А поскольку эти тесты никто не читает, то можно сказать что компьютеры в нашем институте сделаны из дуба. |
РЕКЛАМА
|
|||||||||||||||||
|
БОЛЬШАЯ ЛЕНИНГРАДСКАЯ БИБЛИОТЕКА | ||
© 2010 |