-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPriorityList.cpp
248 lines (196 loc) · 5.45 KB
/
PriorityList.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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
#include <bits/stdc++.h>
#include <fstream>
using namespace std;
void help()
{ // cmd -help
cout << " Usage:-\n";
cout << " ./task add 2 hello world # Add a new item with priority 2 and text \"hello world\" to the list\n";
cout << " ./task ls # Show incomplete priority list items sorted by priority in ascending order\n";
cout << " ./task del INDEX # Delete the incomplete item with the given index\n";
cout << " ./task done INDEX # Mark the incomplete item with the given index as complete\n";
cout << " ./task help # Show usage\n";
cout << " ./task report # Statistics\n";
}
void printTasks()
{ // cmd -ls
ifstream read;
read.open("task.txt");
string s;
int i = 1;
while (getline(read, s))
{
stringstream ss(s);
string word;
ss >> word;
string task = s.substr(word.length(), s.length() - word.length());
cout << i << ". " << task << " [" << word << "] " << endl;
i++;
}
read.close();
}
void add(string s)
{ // cmd -add
ofstream file;
file.open("task.txt", ios::app);
file << s << endl;
file.close();
ifstream read;
read.open("task.txt");
vector<string> ar;
while (getline(read, s))
{
ar.push_back(s);
}
read.close();
sort(ar.begin(), ar.end(), [](string a, string b)
{
stringstream s1(a);
stringstream s2(b);
string word1, word2;
s1 >> word1;
s2 >> word2;
int w1 = stoi(word1);
int w2 = stoi(word2);
if (w1 < w2)
return true;
else if (w1 == w2)
return false;
else
return false;
});
ofstream file2("task.txt");
int size=ar.size();
for (int i = 0; i <size; i++)
{ // inserting tasks back again after sorting
file2 << ar[i] << endl;
}
}
void done_del(int i, int code) // cmd -done i // code-1 for done // code-2 for delete
{
ifstream file;
file.open("task.txt");
ofstream tempfile; // temporray file to store the content fo file
tempfile.open("temp.txt", ios::app);
string s;
int cnt = 0;
while (getline(file, s))
{ cnt++;
if(cnt!=i){
tempfile<<s<<endl;
}
if (cnt == i and code==1)
{ // marking it complete
ofstream complete;
complete.open("CompletedTask.txt", ios::app); // writing into COMPLETED.TXT file
complete << s << endl;
complete.close();
}
else if(cnt==i and code==2) {
continue;
}
}
if (i > cnt )
{
cout<<"Error: item with index "<<i<<" does not exist. Nothing deleted."<<endl;
}
else {
if(code==1){
cout<<"Marked item as done."<<endl;
}
else{
cout<<"Deleted task #"<<i<<endl;
}
}
file.close(); // first close it and then remove it
remove("task.txt");
tempfile.close(); // first close it and then rename it
rename("temp.txt", "task.txt");
}
void report()
{
ifstream read;
read.open("task.txt");
string s;
int lines=0;
int i = 1;
while(getline(read, s)){
lines++;
}
read.close();
ifstream read1;
read1.open("task.txt");
cout<<"Pending: "<<lines<<endl;
while (getline(read1, s))
{
stringstream ss(s);
string word;
ss >> word;
string task = s.substr(word.length(), s.length() - word.length());
cout << i << ". " << task << " [" << word << "] " << endl;
i++;
}
read1.close();
cout<<endl;
ifstream readcomp;
readcomp.open("CompletedTask.txt");
//string scomp;
int linescomp=0;
i=1;
while(getline(readcomp, s)){
linescomp++;
}
readcomp.close();
ifstream readcomp1;
readcomp1.open("CompletedTask.txt");
cout<<"Completed: "<<linescomp<<endl;
while (getline(readcomp1, s))
{
stringstream ss(s);
string word;
ss >> word;
string task = s.substr(word.length(), s.length() - word.length());
cout << i << ". " << task << endl;
i++;
}
readcomp1.close();
}
int main(int argc, char *argv[])
{
if (argc == 1)
help();
else if (argc == 2)
{
string s1 = argv[1];
if (s1 == "help")
help();
else if (s1 == "ls")
printTasks();
else if(s1=="report")
report();
}
else if(argc==3){
string s1=argv[1];
string s2=argv[2];
if(s1=="del"){
int i= stoi(s2);
done_del(i, 2);
}
else if(s1=="done"){
int i= stoi(s2);
done_del(i, 1);
}
}
else if (argc == 4)
{
string s1 = argv[1];
string s2 = argv[2];
string s3 = argv[3];
if (s1 == "add")
{
string s = s2 + " " + s3;
add(s);
cout << "Added task: \"" << s3 << "\" with priority " << s2 << endl;
}
}
return 0;
}