-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathVe.cpp
230 lines (194 loc) · 6.24 KB
/
Ve.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
#include "Ve.h"
/********************************************
* @Description Hàm khởi tạo Vé mới
********************************************/
Ve::Ve() {
_strMaVe = "";
_strMaChuyenBay = "";
_iSoGhe = 0;
_lTimestamp = 0;
_strDate = "";
}
/********************************************
* @Description Hàm khởi tạo Vé mới
* @parameter Chuỗi mã vé, chuỗi mã chuyến bay, chuỗi CMND/CCCD, chuỗi Họ Tên
********************************************/
Ve::Ve(string maVe, string maChuyenBay, string CMND, string hoTen) {
_strMaVe = maVe;
_strMaChuyenBay = maChuyenBay;
_strCMND = CMND;
_strHoTen = hoTen;
_lTimestamp = 0;
_strDate = "";
}
/********************************************
* @Description Hàm khởi tạo Vé mới
* @parameter Chuỗi mã vé, chuỗi mã chuyến bay, chuỗi CMND/CCCD, chuỗi Họ Tên, số ghế
********************************************/
Ve::Ve(string maVe, string maChuyenBay, string CMND, string hoTen, int soGhe) {
_strMaVe = maVe;
_strMaChuyenBay = maChuyenBay;
_strCMND = CMND;
_strHoTen = hoTen;
_iSoGhe = soGhe;
_lTimestamp = 0;
_strDate = "";
}
/********************************************
* @Description Hàm khởi tạo Vé mới
* @parameter Chuỗi mã vé, chuỗi mã chuyến bay, chuỗi CMND/CCCD, chuỗi Họ Tên, số ghế, ngày tạo
********************************************/
Ve::Ve(string maVe, string maChuyenBay, string CMND, string hoTen, int soGhe, string date) {
_strMaVe = maVe;
_strMaChuyenBay = maChuyenBay;
_strCMND = CMND;
_strHoTen = hoTen;
_iSoGhe = soGhe;
_lTimestamp = 0;
_strDate = date;
}
/********************************************
* @Description Hàm set số ghế cho Vé
* @parameter Chuỗi số ghế
* @attention Chuyển từ chuỗi số ghế thành số ghế, sau đó cập nhật cho Vé
********************************************/
void Ve::setSoGhe(string temp) {
stringstream ss(temp);
int soGhe;
ss >> soGhe;
_iSoGhe = soGhe;
}
/********************************************
* @Description Hàm lấy thông tin của Vé để chuẩn bị ghi file
* @return Chuỗi thông tin của Vé, ngăn cách bởi "|"
********************************************/
string Ve::thongTinFile() {
string result = "";
stringstream ss;
ss << _iSoGhe;
string soGheString;
ss >> soGheString;
result = _strMaVe + "|" + _strMaChuyenBay + "|" + _strCMND + "|" + _strHoTen + "|" + soGheString + "|" + _strDate;
return result;
}
/********************************************
* @Description Hàm hiển thị thông tin của Vé
********************************************/
void Ve::display() {
cout << _strMaVe << "|" << _strMaChuyenBay << "|" << _strCMND << "|" << _strHoTen << "|" << _iSoGhe << "|" << _strDate;
}
/********************************************
* @Description Hàm hiển thị thông tin chi tiết của Vé
********************************************/
void Ve::displayDetail() {
cout << setw(20) << left << _strMaVe;
cout << setw(20) << left << _strMaChuyenBay;
cout << setw(20) << left << _strCMND;
cout << setw(20) << left << _strHoTen;
cout << setw(20) << left << _iSoGhe;
cout << setw(50) << left << _strDate << endl;
}
/********************************************
* @Description Hàm lấy thông tin mã chuyến bay của Vé
* @return Chuỗi mã chuyến bay của Vé
********************************************/
string Ve::getMaChuyenBay() {
return _strMaChuyenBay;
}
/********************************************
* @Description Hàm lấy thông tin mã vé của Vé
* @return Chuỗi mã vé của Vé
********************************************/
string Ve::getMaVe() {
return _strMaVe;
}
/********************************************
* @Description Hàm lấy thông tin số ghế của Vé
* @return Số ghế của Vé
********************************************/
int Ve::getSoGhe() {
return _iSoGhe;
}
/********************************************
* @Description Hàm lấy thông tin họ tên của Vé
* @return Chuỗi họ tên của Vé
********************************************/
string Ve::getHoTen() {
return _strHoTen;
}
/********************************************
* @Description Hàm lấy thông tin ngày tạo của Vé
* @return Chuỗi ngày tạo của Vé
********************************************/
string Ve::getDate() {
return _strDate;
}
/********************************************
* @Description Hàm tạo file mới với tên là Mã vé của Vé
********************************************/
void Ve::createFile() {
char* fileName;
ofstream ofile;
string strFile = _strMaVe + ".txt";
fileName = new char[strFile.length() + 1];
strcpy(fileName, strFile.c_str());
if (fileName != NULL)
{
ofile.open(fileName, ios_base::out);
ofile << thongTinFile();
ofile.close();
}
delete[] fileName;
}
/********************************************
* @Description Hàm xóa file vé đã được tạo với tên là Mã vé của Vé
********************************************/
void Ve::deleteFile() {
string strFile = _strMaVe + ".txt";
char* fileName;
fileName = new char[strFile.length() + 1];
strcpy(fileName, strFile.c_str());
int status = remove(fileName);
if (status != 0) {
cout << "Error delete file." << endl;
}
}
/********************************************
* @Description Hàm set ngày tạo cho Vé
* @parameter Chuỗi ngày tháng
********************************************/
void Ve::setDate(string date) {
_strDate = date;
}
/********************************************
* @Description Hàm set timestamp cho Vé
********************************************/
void Ve::setTimestamp() {
string temp;
stringstream s(_strDate);
vector<string> separateData;
vector<int> result;
while (getline(s, temp, ' ')) {
separateData.push_back(temp);
}
if (separateData.size() == 2) {
stringstream ss;
ss << (separateData[0]);
while (getline(ss, temp, '/')) {
stringstream sss(temp);
int data;
sss >> data;
result.push_back(data);
}
stringstream ssss;
ssss << (separateData[1]);
while (getline(ssss, temp, ':')) {
stringstream sssss(temp);
int data;
sssss >> data;
result.push_back(data);
}
long convertTimestamp = convertDateToTimestamp(result[0], result[1], result[2], result[3], result[4], 0);
_lTimestamp = convertTimestamp;
}
}