-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.js
More file actions
308 lines (274 loc) · 9.71 KB
/
Copy pathmain.js
File metadata and controls
308 lines (274 loc) · 9.71 KB
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
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
/**
* Quản lý tuyển sinh
*
* Đầu vào:
* Input: Điểm chuẩn
* Chọn khu vực: A, B, C
* Chọn đối tượng: 1, 2, 3
* Điểm môn thứ 1
* Điểm môn thứ 2
* Điểm môn thứ 3
*
* Xử lý:
* Tính tổng điểm 3 môn
* Cộng điểm theo khu vực: A +2, B +1, C +0.5, undefine +0
* Cộng điểm theo đối tượng: 1 +2.5, 2 +1.5, 3 +1, undefine +0
* Tính tổng số điểm thí sinh đạt được
* So sánh tổng số điểm với điểm chuẩn:
* - >= thí sinh đậu
* - < thí sinh rớt
* - Thí sinh rớt ngay lập tức khi có 1 trong 3 môn bị điểm 0
*
* Đầu ra:
* Hiển thị kết quả trên browser
*
*/
// Điểm cộng đối tượng
const A = 2;
const B = 1;
const C = 0.5;
// Điểm cộng khu vực
const kv1 = 2.5;
const kv2 = 1.5;
const kv3 = 1;
const diemChuan = document.getElementById("diemChuan");
function diemCongKV() {
// Tìm selector có tag là input, chỉ lấy input có thuộc tính là name="khuvuc" => :checked xem cái nào được chọn
const groupKhuVuc = document.querySelector(
'input[name="khuvuc"]:checked'
)?.value;
let diemKhuVuc = 0;
switch (groupKhuVuc) {
case "A":
diemKhuVuc = 2;
break;
case "B":
diemKhuVuc = 1;
break;
case "C":
diemKhuVuc = 0.5;
break;
default:
diemKhuVuc = 0;
}
return diemKhuVuc;
}
function diemCongDT() {
// Tìm selector có tag là input, chỉ lấy input có thuộc tính là name="khuvuc" => :checked xem cái nào được chọn
const groupDoiTuong = document.querySelector(
'input[name="doiTuong"]:checked'
)?.value;
let diemDoiTuong = 0;
switch (groupDoiTuong) {
case "1":
diemDoiTuong = 2.5;
break;
case "2":
diemDoiTuong = 1.5;
break;
case "3":
diemDoiTuong = 1;
break;
default:
diemDoiTuong = 0;
}
return diemDoiTuong;
}
const calScore = () => {
const diemChuan = document.getElementById("diemChuan").value * 1;
const diemMon1 = document.getElementById("diemMon1").value * 1;
const diemMon2 = document.getElementById("diemMon2").value * 1;
const diemMon3 = document.getElementById("diemMon3").value * 1;
const diemKhuVuc = diemCongKV();
const diemDoituong = diemCongDT();
const tongDiem = diemKhuVuc + diemDoituong + diemMon1 + diemMon2 + diemMon3;
if (diemMon1 === 0 || diemMon2 === 0 || diemMon3 === 0) {
alert("Thí sinh không trúng tuyển vì có môn bị điểm 0.");
}
if (tongDiem >= diemChuan) {
alert(`Thí sinh trúng tuyển với tổng điểm là: ${tongDiem}`);
} else {
alert(`Thí sinh không trúng tuyển với tổng điểm là: ${tongDiem}`);
}
};
// ########################################################################
/**
* Tính Tiền Điện theo logic dưới đây:
* 50kw đầu: 500đ/kw
* 50kw kế: 650đ/kw
* 100kw kế: 850đ/kw
* 150kw kế: 1100đ/kw
* Còn lại: 1300đ/kw
*
* Đầu vào:
* - Lấy tên và số KW do người dùng nhập
*
* Xử lý:
* Tính tiền điện theo cách tính lũy tiến, bậc thang
* số kw <= 50km: soDien * 500
* 51 <= số kw <= 100: (50 * 500) + (soDien-50) * 650
* 101 <= số kw <= 200: (50 * 500) + (50 * 650) + (soDien-100) * 850
* 201 <= số kw <= 350: (50 * 500) + (50 * 650) + (100 * 850) + (soDien -200)* 1100
* số kw => 350: (50 * 500) + (50 * 650) + (100 * 850) + (150 * 1100) + (soDien -350)* 1300
*
* Đầu ra:
* Alert tiền điện ra ngoài
*
*/
function calUtilities() {
const ten1 = document.getElementById("ten1").value;
const soDien = document.getElementById("soDien").value * 1;
let tienDien = 0;
if (soDien <= 50) {
tienDien = soDien * 500;
} else if (soDien <= 100) {
tienDien = 50 * 500 + (soDien - 50) * 650;
} else if (soDien <= 200) {
tienDien = 50 * 500 + 50 * 650 + (soDien - 100) * 850;
} else if (soDien <= 350) {
tienDien = 50 * 500 + 50 * 650 + 100 * 850 + (soDien - 200) * 1100;
} else if (soDien > 350) {
tienDien =
50 * 500 + 50 * 650 + 100 * 850 + 150 * 1100 + (soDien - 350) * 1300;
} else {
alert("Vui lòng nhập số KW");
}
alert(`Tiền điện của khách ${ten1} là: ${tienDien}`);
console.log(soDien);
console.log(tienDien);
}
// ########################################################################
/**
* Tính thuế TNCN
*
* Đầu vào:
* - Nhận tên, số người phụ thuộc, tổng thu nhập năm từ người dùng nhập
*
* Xử lý:
* - Tạo biến ten2
* - Tạo biến nguoiPT
* - Tạo biến tongTN
* - Tạo biến thueTNCN = 0
* - Tạo biến thuNhapChiuThue = tongTN - 4000000 - (nguoiPT * 1600000)
* - Tính thueTNCN theo logic:
* thuNhapChiuThue <= 60 000 000 => thueTNCN = thuNhapChiuThue * 0.05
* thuNhapChiuThue <= 120 000 000 => thueTNCN = thuNhapChiuThue * 0.1
* thuNhapChiuThue <= 210 000 000 => thueTNCN = thuNhapChiuThue * 0.15
* thuNhapChiuThue <= 384 000 000 => thueTNCN = thuNhapChiuThue * 0.2
* thuNhapChiuThue <= 624 000 000 => thueTNCN = thuNhapChiuThue * 0.25
* thuNhapChiuThue <= 960 000 000 => thueTNCN = thuNhapChiuThue * 0.3
* thuNhapChiuThue > 960 000 000 => thueTNCN = thuNhapChiuThue * 0.35
*
* Đầu ra:
* - Thống báo Thuế TNCN phải chịu
*/
function calTaxTNCN() {
const ten2 = document.getElementById("ten2").value;
const nguoiPT = document.getElementById("nguoiPT").value * 1;
const tongTN = document.getElementById("tongTN").value * 1;
const thuNhapChiuThue = tongTN - 4000000 - nguoiPT * 1600000;
let thueTNCN = 0;
if (thuNhapChiuThue <= 60000000) {
thueTNCN = thuNhapChiuThue * 0.05;
} else if (thuNhapChiuThue <= 120000000) {
thueTNCN = thuNhapChiuThue * 0.1;
} else if (thuNhapChiuThue <= 210000000) {
thueTNCN = thuNhapChiuThue * 0.15;
} else if (thuNhapChiuThue <= 384000000) {
thueTNCN = thuNhapChiuThue * 0.2;
} else if (thuNhapChiuThue <= 624000000) {
thueTNCN = thuNhapChiuThue * 0.25;
} else if (thuNhapChiuThue <= 960000000) {
thueTNCN = thuNhapChiuThue * 0.3;
} else if (thuNhapChiuThue > 960000000) {
thueTNCN = thuNhapChiuThue * 0.35;
} else {
alert("Vui lòng nhập thông tin");
}
alert(`Thuế TNCN của ${ten2} có ${nguoiPT} người phụ thuộc là: ${thueTNCN}`);
}
// ########################################################################
/**
* Tính tiền cáp
*
* Đầu vào
* - Chọn loại khách hàng: Nhân dân hoặc Doanh nghiệp từ User lựa chọn
* - User nhập mã khách hàng
* - User nhập số lượng kết nối nếu là khách hàng doanh nghiệp
* - User nhập số lượng kênh cao cấp
*
* Xử lý:
* Tạo các biến hằng số liên quan đến khách hàng là nhân dân:
* - Tạo biến phiHoaDon_ND = 4.5$
* - Tạo biến phiDVCB_ND = 20.5$
* - Tạo biến thueKenhCC_ND = 7.5$ / Kênh
*
* Tạo các biến hằng số liên quan đến khách hàng là doanh nghiệp:
* - Tạo biến phiHoaDon_DN = 15$
* - Tạo biến phí 10 đầu kết nối đầu phiDVCB_DN = 75$
* - Tạo biến kết nối phụ phiDVCB_DN_Extra = 5$ / kết nối
* - Tạo biến thueKenhCC_DN = 50$ / Kênh
*
* Các thông tin user input:
* - Tạo biến ten3 để lưu tên KH
* - Tạo biến maKH để lưu mã KH
* - Tạo biến loaiKH để phân biệt khách hàng là Nhân Dân hay DN
* - Tạo biến numKenhCC để KH nhập số lượng kênh cao cấp đã thuê
* - Tạo biến numKetNoi để KH nhập số lượng kết nối, biến này chỉ xuất hiện với KH là DN
*
* Tính tiền cáp:
* Dùng loaiKH để xác định KH là đối tượng nào:
* - Với khách hàng là ND:
* + Tạo biến tienCapND = phiHoaDon_ND + phiDVCB_ND + (thueKenhCC_ND * numKenhCC)
*
* - Với khách hàng là DN:
* + SL kết nối lớn hơn 10 => tienCapDN = phiHoaDon_DN + phiDVCB_DN + (phiDVCB_DN_Extra * numKetNoi) + (thueKenhCC_DN * numKenhCC)
* + SL kết nối từ 10 trở xuống => tienCapDN = phiHoaDon_DN + phiDVCB_DN + (thueKenhCC_DN * numKenhCC)
*/
const phiHoaDon_ND = 4.5;
const phiDVCB_ND = 20.5;
thueKenhCC_ND = 7.5;
const tinhTienCapND = (slKenhCaoCap) => {
const tinhTien = phiHoaDon_ND + phiDVCB_ND + thueKenhCC_ND * slKenhCaoCap;
return tinhTien;
};
const phiHoaDon_DN = 15;
const phiDVCB_DN = 75; // 10 đầu kết nối đầu tiên
const phiDVCB_DN_Extra = 5; // từ đầu kết nối thứ 11 trở đi
const thueKenhCC_DN = 50;
const tinhTienCapDN = (slKenhCaoCap, slKetNoi) => {
let tinhTien = 0;
if (slKetNoi <= 10) {
tinhTien = phiHoaDon_DN + phiDVCB_DN + thueKenhCC_DN * slKenhCaoCap;
} else if (slKetNoi > 10) {
tinhTien =
phiHoaDon_DN +
phiDVCB_DN +
phiDVCB_DN_Extra * (slKetNoi - 10) +
thueKenhCC_DN * slKenhCaoCap;
}
return tinhTien;
};
document.getElementById("loaiKH").addEventListener("change", (e) => {
const loaiKHValue = e.target.value;
if (loaiKHValue == "DN") {
document.getElementById("handleSLKN").classList.remove("hidden");
} else {
document.getElementById("handleSLKN").classList.add("hidden");
}
});
function tinhTienCap() {
const ten3 = document.getElementById("ten3").value;
const maKH = document.getElementById("maKH").value;
const numKenhCC = document.getElementById("numKenhCC").value * 1;
const numKetNoi = document.getElementById("numKetNoi").value * 1;
const loaiKH = document.getElementById("loaiKH").value;
// const tienCapND = tinhTienCapND(numKenhCC);
if (loaiKH === "ND") {
const tienCapND = tinhTienCapND(numKenhCC);
alert(`Tiền cáp của khách ${ten3} với mã ${maKH} là ${tienCapND}`);
} else if (loaiKH === "DN") {
const tienCapDN = tinhTienCapDN(numKenhCC, numKetNoi);
alert(`Tiền cáp của DN ${ten3} với mã ${maKH} là ${tienCapDN}`);
}
}