-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain.cpp
136 lines (116 loc) · 2.45 KB
/
main.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
///////////////////////////////////////////////////////////
// main.cpp
// Author: Robert T
///////////////////////////////////////////////////////////
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
#include <iomanip>
#include "PriorityQueue.cpp"
#include "HuffmanTree.h"
#include "Cashier.h"
#include "Inventory.h"
#include "Report.h"
using namespace std;
int mainMenu()
{
int choice;
cout << "*****************************************" << endl;
cout << " Booksellers" << endl;
cout << " Main Menu " << endl
<< endl;
cout << "1. Cashier Module" << endl;
cout << "2. Inventory Database Module" << endl;
cout << "3. Report Module" << endl;
cout << "4. Exit" << endl;
cout << "*****************************************" << endl
<< endl;
cout << "Enter Your Choice:";
while (!(cin >> choice))
{
cin.clear();
cin.ignore(INT_MAX, '\n');
cout << "Invalid choice, please enter a whole number:";
}
return choice;
}
void exportTree()
{
// Encoding
string infile = "books.txt", outfile = "books.db";
PriorityQueue<char> Heap;
Heap.importDataFile(infile);
Heap.bubbleSort();
// Build Huffman tree
HuffmanTree<char> tree;
tree.buildTreeFromHeap(Heap);
tree.encode(infile, outfile);
}
void importTree()
{
// Encoding
string infile = "books.db";
// Build Huffman tree
HuffmanTree<char> tree;
tree.importTree(infile);
}
int main()
{
bool exit = false;
int user_choise;
// Polymorphism
Inventory *baseObj;
Cashier cashierObj;
Inventory inventoryObj;
Report reportObj;
//exportTree(); // Dump tree
importTree();
do
{
try
{
user_choise = mainMenu();
if (user_choise < 1 || user_choise > 4)
{
string error = "Invalid choice. Please re-enter.";
throw error;
}
else
{
if (user_choise == 1) // Casher
{
baseObj = &cashierObj; // Polymorphism
baseObj->importDatafile();
baseObj->menu();
system("cls");
}
else if (user_choise == 2) // Inventory
{
baseObj = &inventoryObj; // Polymorphism
baseObj->menu();
system("cls");
}
else if (user_choise == 3) // Report
{
reportObj.importDatafile();
reportObj.menu();
system("cls");
}
else if (user_choise == 4) // Exit
{
exit = true;
cout << "Goodbye!" << endl;
system("pause");
}
}
}
catch (string exception)
{
cout << exception << endl;
system("pause");
system("cls");
}
} while (exit == false);
return 0;
}