Міністерство освіти і освіти України. b> p>
МОСКОВСЬКИЙ ДЕРЖАВНИЙ АВІАЦІЙНО-ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ b> p>
ім. К.Е. ЦІОЛКОВКОГО b> p>
b> p>
b> p>
b> p>
b> p>
b> p>
b> p>
b> p>
КАФЕДРА ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ b> p>
Курсова робота другого курсу другого семестру. b> p>
Складання програми. b> p>
Студент: Ліцентов Д. Б. b> p>
Група: 3ІТ-2-26 b> p>
Москва
1998 b> p>
Постановка завдання. b> p>
Необхідно реалізувати список виду: p>
p>
Технічний опис програми. b> p>
У програмі передбачена робота зі списком, що включає в себе: p>
1. Створення нового вписка; p>
2. Додавання елемента в список; p>
3. Виведення списку на дисплей; p>
4. Збереження даних списку в файл; p>
5. Чітеніе даних з файлу; p>
6. Видалення списку з пам'яті комп'ютера; p>
7. Пошук елемента в списку; p>
8. Сортування списку; p>
9. Видалення елемента списку. P>
Специфікація програми. b> p>
b> p>
Введення даних в програму може здійснюватися двома спосабамі: введення з клавіатури або з файлу. p>
Для роботи з файлом необхідно на відповідний запит програми ввести ім'я файлу, з якого будуть узяті
дані для побудови списку. p>
Для нормальної роботи програми потрібно PC сумісний комп'ютер і компілятор Borland
3.01 і вище. При використання іншого поєднуючи характеристик системи на якій буде тестуватися програма можливі деякі розбіжності з результатами
тесту, але в основному нічого страшного статися не повинно. p>
Текст b> b> програми b> . b> p>
# include p>
# include p>
class List p>
(struct Tree p>
(int Body; p>
Tree * LP; p>
Tree * RP; p>
Tree (int Bdy = 0) (Body = Bdy; LP = NULL; RP = NULL;) p>
~ Tree () (Body = 0; LP = NULL; RP = NULL;) p>
); p>
public: p>
List (int Digit = 0); p>
Tree * Root; p>
List * LNext; p>
List * LPrev; p>
); p>
List:: List (int Digit) p>
(Root = NULL; p>
for (int i = Digit * 10; i
(Tree * PTree; p>
PTree = new Tree (i); p>
PTree-> LP = NULL; p>
PTree-> RP = NULL; p>
if (Root == NULL) p>
Root = PTree; p>
else p>
(Tree * PTree1 = Root; p>
do p>
(if (PTree1-> LP! = NULL) p>
PTree1 = PTree1-> LP;) p>
while (PTree1-> LP! = NULL); p>
PTree1-> LP = PTree; p>
PTree = NULL; PTree1 = NULL; p>
) p>
) p>
) p>
class TreeWork: private List p>
(public: p>
void TreeWorkStart (); p>
private: p>
int ElementQuantity; p>
int Mass; p>
int i; p>
List * BegP; p>
List * PList; p>
int MainMenu (); p>
int Work (int Task); p>
int MakeNewList (); p>
int AddElements (); p>
int PrintList (); p>
void EraseList (); p>
int DeleteElement (); p>
int FindElement (); p>
int SubMenu (); p>
int SubWork (int Task); p>
int SortByIncrease (); p>
int SortByDecrease (); p>
int SaveList (); p>
int OpenList (); p>
protected: p>
void GoThroughTree (Tree * L); p>
void Erase (Tree * L); p>
); p>
int TreeWork:: MainMenu () p>
(cout <
cout << "1. Make New List." <
cout << "2. Add Element." <
cout << "3. Print List." <
cout << "4. Delete Element." <
cout << "5. Save List." <
cout << "6. Erase List." <
cout << "7. Open File." <
cout << "8. Find Element." <
cout << "9. Sort List." <
cout << "0. Exit." <
cout <
int i; p>
do p>
(cin>> i; p>
if (i <0 | | i> 9) cout <
) p>
while (i <0 | | i> 9); p>
return i; p>
) p>
int TreeWork:: SubMenu () p>
(cout <
cout << "1. Sort list by increase." <
cout << "2. Sort list by decrease." <
int i; p>
cout << "Your choice:"; p>
do p>
(cin>> i; p>
if (i <1 | | i> 2) cout <
) p>
while (i <1 | | i> 2); p>
return i; p>
) p>
int TreeWork:: SubWork (int Task) p>
(switch (Task) p>
(case 1: SortByIncrease (); break;// Increase p>
case 2: SortByDecrease (); break;// Decrease p>
) p>
return 0; p>
) p>
int TreeWork:: Work (int Task) p>
(switch (Task) p>
(case 1: ElementQuantity = MakeNewList (); break;// Make New List p>
case 2: ElementQuantity + = AddElements (); break;// Add Element p>
case 3: PrintList (); break;// Print List p>
case 4: DeleteElement (); break;// Delete Element p>
case 5: SaveList (); break;// Save List p>
case 6: ElementQuantity = 0; EraseList (); break;// Erase List p>
case 7: OpenList (); break;// Open File p>
case 8: FindElement (); break;// Find Element p>
case 9: SubWork (SubMenu ()); break;// Sort List p>
case 0: EraseList (); return -1;// Exit p>
) p>
return 0; p>
) p>
void TreeWork:: TreeWorkStart () p>
(ElementQuantity = 0; p>
do () while (Work (MainMenu ())!=- 1); p>
) p>
int TreeWork:: MakeNewList () p>
(if (BegP! = NULL) p>
(cout <
int Quant; p>
cout <
do p>
(cin>> Quant; p>
if (Quant <1) p>
cout <
) p>
while (Quant <1); p>
for (int i = 0; i
(cout <
int Digit; cin>> Digit; p>
PList = new List (Digit); p>
if (BegP == NULL) p>
(BegP = PList; p>
BegP-> LNext = BegP; p>
BegP-> LPrev = BegP; p>
PList = NULL;) p>
else p>
(List * PList1 = BegP-> LPrev; p>
if (PList1 == BegP) p>
(BegP-> LNext = PList; p>
BegP-> LPrev = PList; p>
PList-> LNext = BegP; p>
PList-> LPrev = BegP; p>
PList = NULL; PList1 = NULL;) p>
else p>
(BegP-> LPrev = PList; p>
PList1-> LNext = PList; p>
PList-> LNext = BegP; p>
PList-> LPrev = PList1; p>
PList = NULL; PList1 = NULL;) p>
) p>
) p>
return Quant; p>
) p>
int TreeWork:: AddElements () p>
(if (BegP == NULL) p>
(MakeNewList (); return 0;) p>
int Quant; p>
cout <
do p>
(cin>> Quant; p>
if (Quant <1) p>
cout <
) p>
while (Quant <1); p>
for (int i = 0; i
(cout <
int Digit; p>
cin>> Digit; p>
PList = new List (Digit); p>
List * PList1 = BegP-> LPrev; p>
if (PList1 == BegP) p>
(BegP-> LNext = PList; p>
BegP-> LPrev = PList; p>
PList-> LPrev = BegP; p>
PList-> LNext = BegP; p>
PList1 = NULL; PList = NULL;) p>
else p>
(BegP-> LPrev = PList; p>
PList-> LNext = BegP; p>
PList-> LPrev = PList1; p>
PList1-> LNext = PList; p>
PList = NULL; PList1 = NULL;) p>
) p>
return Quant; p>
) p>
int TreeWork:: PrintList () p>
(if (BegP == NULL) p>
(cout <
cout <
PList = BegP; p>
int i = 1; p>
do p>
(cout <
GoThroughTree (PList-> Root); p>
cout <
i ++; p>
PList = PList-> LNext;) p>
while (PList! = BegP); p>
return 0; p>
) p>
void TreeWork:: GoThroughTree (Tree * L) p>
(Tree * PL = L, * PL1; p>
if (PL-> LP! = NULL) p>
(PL1 = PL; p>
PL = PL-> LP; p>
cout <<"("<< PL1-> Body <<","<< PL-> Body << ")
"; p>
GoThroughTree (PL );} p>
if (PL-> RP! = NULL) p>
(PL1 = PL; p>
PL = PL-> RP; p>
cout <<"("<< PL1-> Body <<","<< PL-> Body << ")
"; p>
GoThroughTree (PL );} p>
) p>
void TreeWork:: Erase (Tree * L) p>
(Tree * PL = L; p>
if (PL-> LP! = NULL) p>
(PL = PL-> LP; p>
Erase (PL );} p>
if (PL-> RP! = NULL) p>
(PL = PL-> RP; p>
Erase (PL );} p>
PL-> LP = NULL; p>
PL-> RP = NULL; p>
) p>
void TreeWork:: EraseList () p>
(if (BegP! = NULL) p>
(do p>
(List * PList1 = BegP-> LNext; p>
PList = PList1-> LNext; p>
BegP-> LNext = PList; p>
PList-> LPrev = BegP; p>
Erase (PList1-> Root); p>
delete [] PList1; p>
) p>
while (PList! = BegP); p>
BegP = NULL; PList = NULL; p>
) p>
) p>
int TreeWork:: DeleteElement () p>
(cout <
int Number = 0; p>
cin>> Number; p>
if (Number> ElementQuantity | | Number <0) p>
(cout <
Number -; p>
PList = BegP; p>
for (int i = 0; i
PList = PList-> LNext; p>
List * PList1 = PList-> LNext, * PList2 = PList-> LPrev; p>
if (PList == BegP) p>
(PList1-> LPrev = PList2; p>
PList2-> LNext = PList1; p>
PList-> LNext = NULL; p>
PList-> LPrev = NULL; p>
delete [] PList; p>
BegP = PList1; p>
PList1 = NULL; PList2 = NULL;) p>
else p>
(PList1-> LPrev = PList2; p>
PList2-> LNext = PList1; p>
PList-> LNext = NULL; p>
PList-> LPrev = NULL; p>
delete [] PList; p>
PList1 = NULL; PList2 = NULL;) p>
ElementQuantity -; p>
return 0; p>
) p>
int TreeWork:: FindElement () p>
(cout <
int Number = 0; p>
cin>> Number; p>
PList = BegP; p>
do p>
(Tree * PT = PList-> Root; p>
if (Number> PT-> Body & & Number Body 10) p>
(cout <
GoThroughTree (PList-> Root); p>
PList = NULL; cout <
PList = PList-> LNext; p>
) p>
while (PList! = BegP); p>
cout <
PList = NULL; p>
return -1; p>
) p>
int TreeWork:: SortByIncrease () p>
( p>
if (BegP == NULL) (cout <
List * PList1 = BegP; PList = BegP; p>
do p>
(do p>
(if (PList1-> Root-> Body> PList-> Root-> Body) p>
(Tree * PT; p>
PT = PList1-> Root; p>
PList1-> Root = PList-> Root; p>
PList-> Root = PT; p>
PT = NULL;) p>
PList1 = PList1-> LNext; p>
) p>
while (PList1! = BegP); p>
PList = PList-> LNext; p>
) p>
while (PList! = BegP); p>
return 0; p>
) p>
int TreeWork:: SortByDecrease () p>
( p>
if (BegP == NULL) (cout <
List * PList1 = BegP; PList = BegP; p>
do p>
(do p>
(if (PList1-> Root-> Body Root-> Body) p>
(Tree * PT; p>
PT = PList1-> Root; p>
PList1-> Root = PList-> Root; p>
PList-> Root = PT; p>
PT = NULL;) p>
PList1 = PList1-> LNext; p>
) p>
while (PList1! = BegP); p>
PList = PList-> LNext; p>
) p>
while (PList! = BegP); p>
return 0; p>
) p>
int TreeWork:: SaveList () p>
(if (BegP == NULL) p>
(cout <
ofstream F; p>
char * FileName = new char [25]; p>
cout <> FileName; p>
F.open (FileName); p>
PList = BegP; p>
do p>
(i = 0; p>
Mass = PList-> Root-> Body; p>
PList = PList-> LNext; p>
if (PList! = BegP) p>
F <
else p>
F <
) p>
while (PList! = BegP); p>
F.close (); p>
delete [] FileName; p>
return 0; p>
) p>
int TreeWork:: OpenList () p>
(if (BegP! = NULL) p>
(cout <
cout <
char * FileName = new char [25]; p>
cin>> FileName; p>
ifstream f; p>
ElementQuantity = 0; p>
f.open (FileName); p>
char Next; p>
Next = f.peek (); p>
while (Next! = EOF) p>
( p>
f>> Mass; p>
PList = new List (Mass/10); p>
if (BegP == NULL) p>
(BegP = PList; p>
BegP-> LNext = BegP; p>
BegP-> LPrev = BegP; p>
PList = NULL;) p>
else p>
(List * PList1 = BegP-> LPrev; p>
if (PList1 == BegP) p>
(BegP-> LNext = PList; p>
BegP-> LPrev = PList; p>
PList-> LNext = BegP; p>
PList-> LPrev = BegP; p>
PList = NULL; PList1 = NULL;) p>
else p>
(BegP-> LPrev = PList; p>
PList1-> LNext = PList; p>
PList-> LNext = BegP; p>
PList-> LPrev = PList1; p>
PList = NULL; PList1 = NULL;) p>
) p>
Next = f.peek (); p>
ElementQuantity ++; p>
) p>
f.close (); p>
delete [] FileName; p>
return 0; p>
) p>
TreeWork TW; p>
void main () p>
(TW.TreeWorkStart ();} p>
Результати роботи програми. b> p>
Початок роботи: p>
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 (для прикладу): p>
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:
Далі відбувається введення списку як було описано вище.
Після вдалого завершення додавання елемента в список ми знову потрапляємо в головне меню, де вибираємо
пункт виведення списку на екран монітора: p>
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:
Швидко прослизнувши повз Ваших очей незрозумілі дані ви знову потрапляєте в головне меню, де обираєте пункт
видалення елемента: p>
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
Після чого елемент до введеного номера був знищений. Після вдалого завершення видалення елемента Ви знову
потрапляєте в головне меню, де обираєте пункт збереження списку: p>
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
Після введення імені файлу дані зі списку потрапляють на диск. І ви знову в головному меню, де
вибираєте видалення списку: p>
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
Ви вводите те що хотіли знайти і - знаходите в рядку ХХХХХ. Головне меню/Сортування: p>
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:
Ту ми можемо сортувати за зростанням або зменшенням (адже у людини завжди має бути
вибір!). Після сортування Головне меню/Вихід! Всі програма завершилася успішно! А оскільки ці тести ніхто не читає, то можна сказати що комп'ютери
в нашому інституті зроблені з дуба. p>