├── .gitattributes
├── README.md
├── gitattributes
└── studentManagementSystem
├── build.xml
├── build
├── built-jar.properties
└── classes
│ ├── image
│ └── logo.jpg
│ └── studentmanagementsystem
│ ├── FXMLDocument.fxml
│ ├── FXMLDocumentController.class
│ ├── StudentManagementSystem.class
│ ├── courseData.class
│ ├── dashboard.fxml
│ ├── dashboardController.class
│ ├── dashboardDesign.css
│ ├── database.class
│ ├── getData.class
│ ├── loginDesign.css
│ └── studentData.class
├── dist
├── lib
│ ├── fontawesomefx-8.2.jar
│ ├── jfreechart-1.0.19.jar
│ ├── mysql-connector-java-5.1.48.jar
│ └── ojdbc14-10.2.0.2.0.jar
├── studentManagementSystem.html
├── studentManagementSystem.jar
├── studentManagementSystem.jnlp
└── web-files
│ ├── dtjava.js
│ ├── error.png
│ ├── get_java.png
│ ├── get_javafx.png
│ ├── javafx-chrome.png
│ ├── javafx-loading-100x100.gif
│ ├── javafx-loading-25x25.gif
│ ├── upgrade_java.png
│ └── upgrade_javafx.png
├── manifest.mf
├── nbproject
├── build-impl.xml
├── configs
│ ├── Run_as_WebStart.properties
│ └── Run_in_Browser.properties
├── genfiles.properties
├── jfx-impl.xml
├── private
│ ├── configs
│ │ ├── Run_as_WebStart.properties
│ │ └── Run_in_Browser.properties
│ ├── private.properties
│ └── private.xml
├── project.properties
└── project.xml
└── src
└── studentmanagementsystem
├── FXMLDocument.fxml
├── FXMLDocumentController.java
├── StudentManagementSystem.java
├── courseData.java
├── dashboard.fxml
├── dashboardController.java
├── dashboardDesign.css
├── database.java
├── getData.java
├── loginDesign.css
└── studentData.java
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # StudentManagementSystem
2 | Student Management System Project in JavaFX
3 |
--------------------------------------------------------------------------------
/gitattributes:
--------------------------------------------------------------------------------
1 | ## Unity ##
2 |
3 | *.cs diff=csharp text
4 | *.cginc text
5 | *.shader text
6 |
7 | *.mat merge=unityyamlmerge eol=lf
8 | *.anim merge=unityyamlmerge eol=lf
9 | *.unity merge=unityyamlmerge eol=lf
10 | *.prefab merge=unityyamlmerge eol=lf
11 | *.physicsMaterial2D merge=unityyamlmerge eol=lf
12 | *.physicMaterial merge=unityyamlmerge eol=lf
13 | *.asset merge=unityyamlmerge eol=lf
14 | *.meta merge=unityyamlmerge eol=lf
15 | *.controller merge=unityyamlmerge eol=lf
16 |
17 |
18 | ## git-lfs ##
19 |
20 | #Image
21 | *.jpg filter=lfs diff=lfs merge=lfs -text
22 | *.jpeg filter=lfs diff=lfs merge=lfs -text
23 | *.png filter=lfs diff=lfs merge=lfs -text
24 | *.gif filter=lfs diff=lfs merge=lfs -text
25 | *.psd filter=lfs diff=lfs merge=lfs -text
26 | *.ai filter=lfs diff=lfs merge=lfs -text
27 | *.tif filter=lfs diff=lfs merge=lfs -text
28 |
29 | #Audio
30 | *.mp3 filter=lfs diff=lfs merge=lfs -text
31 | *.wav filter=lfs diff=lfs merge=lfs -text
32 | *.ogg filter=lfs diff=lfs merge=lfs -text
33 |
34 | #Video
35 | *.mp4 filter=lfs diff=lfs merge=lfs -text
36 | *.mov filter=lfs diff=lfs merge=lfs -text
37 |
38 | #3D Object
39 | *.FBX filter=lfs diff=lfs merge=lfs -text
40 | *.fbx filter=lfs diff=lfs merge=lfs -text
41 | *.blend filter=lfs diff=lfs merge=lfs -text
42 | *.obj filter=lfs diff=lfs merge=lfs -text
43 |
44 | #ETC
45 | *.a filter=lfs diff=lfs merge=lfs -text
46 | *.exr filter=lfs diff=lfs merge=lfs -text
47 | *.tga filter=lfs diff=lfs merge=lfs -text
48 | *.pdf filter=lfs diff=lfs merge=lfs -text
49 | *.zip filter=lfs diff=lfs merge=lfs -text
50 | *.dll filter=lfs diff=lfs merge=lfs -text
51 | *.unitypackage filter=lfs diff=lfs merge=lfs -text
52 | *.aif filter=lfs diff=lfs merge=lfs -text
53 | *.ttf filter=lfs diff=lfs merge=lfs -text
54 | *.rns filter=lfs diff=lfs merge=lfs -text
55 | *.reason filter=lfs diff=lfs merge=lfs -text
56 | *.lxo filter=lfs diff=lfs merge=lfs -text
57 | *.bc filter=lfs diff=lfs merge=lfs -text
--------------------------------------------------------------------------------
/studentManagementSystem/build.xml:
--------------------------------------------------------------------------------
1 |
2 | Builds, tests, and runs the project studentManagementSystem.
3 |
4 |
53 |
54 |
--------------------------------------------------------------------------------
/studentManagementSystem/build/built-jar.properties:
--------------------------------------------------------------------------------
1 | #Sun, 25 Sep 2022 08:59:10 +0800
2 |
3 |
4 | C\:\\Users\\WINDOWS\ 10\\Documents\\NetBeansProjects\\studentManagementSystem=
5 |
--------------------------------------------------------------------------------
/studentManagementSystem/build/classes/image/logo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marcoman2/StudentManagementSystem/5faefd174097704404068ef808e77b9b25676671/studentManagementSystem/build/classes/image/logo.jpg
--------------------------------------------------------------------------------
/studentManagementSystem/build/classes/studentmanagementsystem/FXMLDocument.fxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
25 |
26 |
27 |
28 |
29 |
30 |
35 |
36 |
37 |
38 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/studentManagementSystem/build/classes/studentmanagementsystem/FXMLDocumentController.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marcoman2/StudentManagementSystem/5faefd174097704404068ef808e77b9b25676671/studentManagementSystem/build/classes/studentmanagementsystem/FXMLDocumentController.class
--------------------------------------------------------------------------------
/studentManagementSystem/build/classes/studentmanagementsystem/StudentManagementSystem.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marcoman2/StudentManagementSystem/5faefd174097704404068ef808e77b9b25676671/studentManagementSystem/build/classes/studentmanagementsystem/StudentManagementSystem.class
--------------------------------------------------------------------------------
/studentManagementSystem/build/classes/studentmanagementsystem/courseData.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marcoman2/StudentManagementSystem/5faefd174097704404068ef808e77b9b25676671/studentManagementSystem/build/classes/studentmanagementsystem/courseData.class
--------------------------------------------------------------------------------
/studentManagementSystem/build/classes/studentmanagementsystem/dashboard.fxml:
--------------------------------------------------------------------------------
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 |
40 |
45 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
66 |
71 |
72 |
77 |
82 |
87 |
92 |
101 |
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 |
136 |
141 |
142 |
143 |
144 |
145 |
146 |
151 |
156 |
157 |
158 |
159 |
160 |
161 |
166 |
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 |
262 |
263 |
268 |
269 |
274 |
275 |
280 |
281 |
286 |
287 |
292 |
293 |
298 |
299 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
316 |
317 |
318 |
319 |
320 |
321 |
322 |
323 |
324 |
325 |
326 |
327 |
328 |
329 |
330 |
331 |
336 |
337 |
342 |
343 |
348 |
349 |
350 |
351 |
352 |
353 |
354 |
355 |
356 |
357 |
358 |
359 |
360 |
361 |
362 |
363 |
364 |
365 |
366 |
367 |
368 |
369 |
370 |
371 |
372 |
373 |
374 |
375 |
376 |
377 |
378 |
379 |
380 |
381 |
386 |
391 |
392 |
397 |
398 |
399 |
404 |
405 |
410 |
411 |
412 |
413 |
414 |
415 |
416 |
417 |
418 |
419 |
420 |
421 |
422 |
423 |
424 |
425 |
426 |
427 |
428 |
429 |
430 |
431 |
432 |
433 |
434 |
435 |
436 |
437 |
438 |
439 |
440 |
441 |
442 |
443 |
444 |
--------------------------------------------------------------------------------
/studentManagementSystem/build/classes/studentmanagementsystem/dashboardController.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marcoman2/StudentManagementSystem/5faefd174097704404068ef808e77b9b25676671/studentManagementSystem/build/classes/studentmanagementsystem/dashboardController.class
--------------------------------------------------------------------------------
/studentManagementSystem/build/classes/studentmanagementsystem/dashboardDesign.css:
--------------------------------------------------------------------------------
1 | /*
2 | To change this license header, choose License Headers in Project Properties.
3 | To change this template file, choose Tools | Templates
4 | and open the template in the editor.
5 | */
6 | /*
7 | Created on : 09 17, 22, 10:45:44 AM
8 | Author : WINDOWS 10
9 | */
10 |
11 | .top-form{
12 | -fx-background-color:#fff;
13 | -fx-border-color:#000;
14 | -fx-border-width:.4px .4px .2px .4px;
15 | }
16 |
17 | .semi-top-form{
18 | -fx-background-color:#efefef;
19 | -fx-border-color:#000;
20 | -fx-border-width:.2px .4px .4px .4px;
21 | }
22 |
23 | .close{
24 | -fx-background-color:transparent;
25 | -fx-cursor:hand;
26 | }
27 | .close:hover{
28 | -fx-background-color:#fb3d63;
29 | }
30 |
31 | .minimize{
32 | -fx-background-color:transparent;
33 | -fx-cursor:hand;
34 | }
35 | .minimize:hover{
36 | -fx-background-color:#ddd;
37 | }
38 |
39 | .nav-form{
40 | -fx-background-color:linear-gradient(to bottom right, #2d658c, #2ca772);
41 | }
42 |
43 | .nav-btn{
44 | -fx-background-color:transparent;
45 | -fx-cursor:hand;
46 | -fx-text-fill:#fff;
47 | -fx-font-size:15px;
48 | -fx-font-family:"Arial";
49 | -fx-alignment:CENTER-LEFT;
50 | }
51 |
52 | .logout{
53 | -fx-background-color:#2c84bf;
54 | -fx-background-radius:10px;
55 | -fx-cursor:hand;
56 | }
57 | .logout:hover{
58 | -fx-background-color:#1593e7;
59 | }
60 |
61 | .shadow{
62 | -fx-effect:dropshadow(three-pass-box, rgba(0,0,0,0.4), 6,0,0,0);
63 | }
64 |
65 | .white-bg{
66 | -fx-background-color:#fff;
67 | -fx-background-radius:8px;
68 | }
69 |
70 | .card{
71 | -fx-background-color:linear-gradient(to right, #344250, #3c6382);
72 | -fx-background-radius:4px;
73 | }
74 |
75 | .search{
76 | -fx-background-color:transparent;
77 | -fx-border-color:linear-gradient(to bottom right, #2d658c, #2ca772);
78 | -fx-border-width:.8px;
79 | -fx-border-radius:8px;
80 | -fx-font-family:"Tahoma";
81 | -fx-font-size:14px;
82 | -fx-padding:0px 0px 0px 28px;
83 | }
84 |
85 | .search:focused{
86 | -fx-border-width:1.8px;
87 | }
88 |
89 | .table-view{
90 | -fx-background-color:transparent;
91 | -fx-padding:0px;
92 | -fx-border-color:linear-gradient(to bottom right, #2d658c, #2ca772);
93 | -fx-border-width:2px;
94 | -fx-border-radius:8px;
95 | }
96 | .table-view .table-column{
97 | -fx-alignment: CENTER;
98 | }
99 | .table-view .column-header-background{
100 | -fx-background-color:linear-gradient(to bottom right, #2d658c, #2ca772);
101 | -fx-background-radius:8px 8px 0px 0px;
102 | -fx-background-inset: 0 0 0 0;
103 | }
104 | .table-view .column-header, .filter{
105 | -fx-background-color:transparent;
106 | -fx-size:40px;
107 | }
108 | .table-view .column-header .label{
109 | -fx-text-fill:#fff;
110 | -fx-font-family:"Arial";
111 | }
112 |
113 | .textfield{
114 | -fx-background-color:linear-gradient(to bottom, #efefef, #eee);
115 | -fx-background-radius:4px;
116 | -fx-border-color:linear-gradient(to bottom right, #2d658c, #2ca772);
117 | -fx-border-width:.8px;
118 | -fx-font-family:"Tahoma";
119 | -fx-border-radius:4px;
120 | }
121 | .textfield:focused{
122 | -fx-background-color:#fff;
123 | -fx-border-width:1px;
124 | }
125 |
126 | .insert-btn{
127 | -fx-background-color:transparent;
128 | -fx-text-fill:red;
129 | -fx-font-size:14px;
130 | -fx-font-family:"Arial";
131 | -fx-cursor:hand;
132 | }
133 |
134 | .add-btn{
135 | -fx-background-color:#2d5278;
136 | -fx-background-radius:8px;
137 | -fx-cursor:hand;
138 | -fx-text-fill:#fff;
139 | -fx-font-size:14px;
140 | -fx-font-family:"Arial";
141 | }
142 | .add-btn:hover{
143 | -fx-background-color:#2268ae;
144 | }
145 |
146 | .update-btn{
147 | -fx-background-color:#2d7755;
148 | -fx-background-radius:8px;
149 | -fx-cursor:hand;
150 | -fx-text-fill:#fff;
151 | -fx-font-size:14px;
152 | -fx-font-family:"Arial";
153 | }
154 | .update-btn:hover{
155 | -fx-background-color:#22ad72;
156 | }
157 |
158 | .delete-btn{
159 | -fx-background-color:#90242f;
160 | -fx-background-radius:8px;
161 | -fx-cursor:hand;
162 | -fx-text-fill:#fff;
163 | -fx-font-size:14px;
164 | -fx-font-family:"Arial";
165 | }
166 | .delete-btn:hover{
167 | -fx-background-color:#c51f32;
168 | }
169 |
170 | .clear-btn{
171 | -fx-background-color:#6e2275;
172 | -fx-background-radius:8px;
173 | -fx-cursor:hand;
174 | -fx-text-fill:#fff;
175 | -fx-font-size:14px;
176 | -fx-font-family:"Arial";
177 | }
178 | .clear-btn:hover{
179 | -fx-background-color:#ae21ac;
180 | }
181 |
182 | .label-info{
183 | -fx-background-color:#fff;
184 | -fx-background-radius:4px;
185 | -fx-border-color:linear-gradient(to bottom right, #2d658c, #2ca772);
186 | -fx-border-width:.8px;
187 | -fx-font-family:"Tahoma";
188 | -fx-border-radius:4px;
189 | -fx-padding:0px 0px 0px 5px;
190 | }
191 | /* NOW FINALLY WE FINISHED THE COMPONENTS, NOW LETS NAME ALL OF THEM : )*/
--------------------------------------------------------------------------------
/studentManagementSystem/build/classes/studentmanagementsystem/database.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marcoman2/StudentManagementSystem/5faefd174097704404068ef808e77b9b25676671/studentManagementSystem/build/classes/studentmanagementsystem/database.class
--------------------------------------------------------------------------------
/studentManagementSystem/build/classes/studentmanagementsystem/getData.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marcoman2/StudentManagementSystem/5faefd174097704404068ef808e77b9b25676671/studentManagementSystem/build/classes/studentmanagementsystem/getData.class
--------------------------------------------------------------------------------
/studentManagementSystem/build/classes/studentmanagementsystem/loginDesign.css:
--------------------------------------------------------------------------------
1 | /*
2 | To change this license header, choose License Headers in Project Properties.
3 | To change this template file, choose Tools | Templates
4 | and open the template in the editor.
5 | */
6 | /*
7 | Created on : 09 17, 22, 10:12:46 AM
8 | Author : WINDOWS 10
9 | */
10 |
11 | .left-form{
12 | -fx-background-color:linear-gradient(to bottom right, #2d658c, #2ca772);
13 | -fx-border-color:#000;
14 | -fx-border-width:.4px 0px .4px .4px;
15 | }
16 |
17 | .right-form{
18 | -fx-background-color:#fff;
19 | -fx-border-color:#000;
20 | -fx-border-width:.4px .4px .4px 0px;
21 | }
22 |
23 | .close{
24 | -fx-background-color:transparent;
25 | -fx-cursor:hand;
26 | }
27 | .close:hover{
28 | -fx-background-color:#fb3d63;
29 | }
30 |
31 | .textfield{
32 | -fx-background-color:linear-gradient(to bottom, #efefef, #eee);
33 | -fx-background-radius:5px;
34 | -fx-border-color:#000;
35 | -fx-border-width:.2px;
36 | -fx-border-radius:5px;
37 | -fx-font-size:13px;
38 | -fx-font-family:"Tahoma";
39 | }
40 | .textfield:focused{
41 | -fx-background-color:#fff;
42 | -fx-border-color:linear-gradient(to bottom right, #2d658c, #2ca772);
43 | -fx-border-width:.8px;
44 | }
45 |
46 | .login-btn{
47 | -fx-background-color:linear-gradient(to bottom, #2968a7, #14405d);
48 | -fx-background-radius:4px;
49 | -fx-cursor:hand;
50 | -fx-text-fill:#fff;
51 | -fx-font-size:14px;
52 | -fx-font-family:"Arial";
53 | }
54 | .login-btn:hover{
55 | -fx-background-color:linear-gradient(to bottom, #277bd0, #1b6fa4);
56 | }
--------------------------------------------------------------------------------
/studentManagementSystem/build/classes/studentmanagementsystem/studentData.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marcoman2/StudentManagementSystem/5faefd174097704404068ef808e77b9b25676671/studentManagementSystem/build/classes/studentmanagementsystem/studentData.class
--------------------------------------------------------------------------------
/studentManagementSystem/dist/lib/fontawesomefx-8.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marcoman2/StudentManagementSystem/5faefd174097704404068ef808e77b9b25676671/studentManagementSystem/dist/lib/fontawesomefx-8.2.jar
--------------------------------------------------------------------------------
/studentManagementSystem/dist/lib/jfreechart-1.0.19.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marcoman2/StudentManagementSystem/5faefd174097704404068ef808e77b9b25676671/studentManagementSystem/dist/lib/jfreechart-1.0.19.jar
--------------------------------------------------------------------------------
/studentManagementSystem/dist/lib/mysql-connector-java-5.1.48.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marcoman2/StudentManagementSystem/5faefd174097704404068ef808e77b9b25676671/studentManagementSystem/dist/lib/mysql-connector-java-5.1.48.jar
--------------------------------------------------------------------------------
/studentManagementSystem/dist/lib/ojdbc14-10.2.0.2.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marcoman2/StudentManagementSystem/5faefd174097704404068ef808e77b9b25676671/studentManagementSystem/dist/lib/ojdbc14-10.2.0.2.0.jar
--------------------------------------------------------------------------------
/studentManagementSystem/dist/studentManagementSystem.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
17 |
18 |
38 |
39 |
40 | Test page for studentManagementSystem
41 | Webstart: click to launch this app as webstart
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/studentManagementSystem/dist/studentManagementSystem.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marcoman2/StudentManagementSystem/5faefd174097704404068ef808e77b9b25676671/studentManagementSystem/dist/studentManagementSystem.jar
--------------------------------------------------------------------------------
/studentManagementSystem/dist/studentManagementSystem.jnlp:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | studentManagementSystem
5 | WINDOWS 10
6 | null
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/studentManagementSystem/dist/web-files/error.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marcoman2/StudentManagementSystem/5faefd174097704404068ef808e77b9b25676671/studentManagementSystem/dist/web-files/error.png
--------------------------------------------------------------------------------
/studentManagementSystem/dist/web-files/get_java.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marcoman2/StudentManagementSystem/5faefd174097704404068ef808e77b9b25676671/studentManagementSystem/dist/web-files/get_java.png
--------------------------------------------------------------------------------
/studentManagementSystem/dist/web-files/get_javafx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marcoman2/StudentManagementSystem/5faefd174097704404068ef808e77b9b25676671/studentManagementSystem/dist/web-files/get_javafx.png
--------------------------------------------------------------------------------
/studentManagementSystem/dist/web-files/javafx-chrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marcoman2/StudentManagementSystem/5faefd174097704404068ef808e77b9b25676671/studentManagementSystem/dist/web-files/javafx-chrome.png
--------------------------------------------------------------------------------
/studentManagementSystem/dist/web-files/javafx-loading-100x100.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marcoman2/StudentManagementSystem/5faefd174097704404068ef808e77b9b25676671/studentManagementSystem/dist/web-files/javafx-loading-100x100.gif
--------------------------------------------------------------------------------
/studentManagementSystem/dist/web-files/javafx-loading-25x25.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marcoman2/StudentManagementSystem/5faefd174097704404068ef808e77b9b25676671/studentManagementSystem/dist/web-files/javafx-loading-25x25.gif
--------------------------------------------------------------------------------
/studentManagementSystem/dist/web-files/upgrade_java.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marcoman2/StudentManagementSystem/5faefd174097704404068ef808e77b9b25676671/studentManagementSystem/dist/web-files/upgrade_java.png
--------------------------------------------------------------------------------
/studentManagementSystem/dist/web-files/upgrade_javafx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marcoman2/StudentManagementSystem/5faefd174097704404068ef808e77b9b25676671/studentManagementSystem/dist/web-files/upgrade_javafx.png
--------------------------------------------------------------------------------
/studentManagementSystem/manifest.mf:
--------------------------------------------------------------------------------
1 | Manifest-Version: 1.0
2 | X-COMMENT: Main-Class will be added automatically by build
3 |
4 |
--------------------------------------------------------------------------------
/studentManagementSystem/nbproject/configs/Run_as_WebStart.properties:
--------------------------------------------------------------------------------
1 | # Do not modify this property in this configuration. It can be re-generated.
2 | $label=Run as WebStart
3 |
--------------------------------------------------------------------------------
/studentManagementSystem/nbproject/configs/Run_in_Browser.properties:
--------------------------------------------------------------------------------
1 | # Do not modify this property in this configuration. It can be re-generated.
2 | $label=Run in Browser
3 |
--------------------------------------------------------------------------------
/studentManagementSystem/nbproject/genfiles.properties:
--------------------------------------------------------------------------------
1 | build.xml.data.CRC32=0b1199f9
2 | build.xml.script.CRC32=446de782
3 | build.xml.stylesheet.CRC32=8064a381@1.80.1.48
4 | # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
5 | # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
6 | nbproject/build-impl.xml.data.CRC32=0b1199f9
7 | nbproject/build-impl.xml.script.CRC32=15999bd7
8 | nbproject/build-impl.xml.stylesheet.CRC32=830a3534@1.80.1.48
9 |
--------------------------------------------------------------------------------
/studentManagementSystem/nbproject/private/configs/Run_as_WebStart.properties:
--------------------------------------------------------------------------------
1 | # Do not modify this property in this configuration. It can be re-generated.
2 | javafx.run.as=webstart
3 |
--------------------------------------------------------------------------------
/studentManagementSystem/nbproject/private/configs/Run_in_Browser.properties:
--------------------------------------------------------------------------------
1 | # Do not modify this property in this configuration. It can be re-generated.
2 | javafx.run.as=embedded
3 |
--------------------------------------------------------------------------------
/studentManagementSystem/nbproject/private/private.properties:
--------------------------------------------------------------------------------
1 | auxiliary.org-netbeans-modules-projectapi.issue214819_5f_fx_5f_enabled=true
2 | # No need to modify this property unless customizing JavaFX Ant task infrastructure
3 | endorsed.javafx.ant.classpath=.
4 | javafx.run.inbrowser=
5 | javafx.run.inbrowser.path=C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE
6 | user.properties.file=C:\\Users\\WINDOWS 10\\AppData\\Roaming\\NetBeans\\8.2\\build.properties
7 |
--------------------------------------------------------------------------------
/studentManagementSystem/nbproject/private/private.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | file:/C:/Users/WINDOWS%2010/Documents/NetBeansProjects/studentManagementSystem/src/studentmanagementsystem/dashboardController.java
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/studentManagementSystem/nbproject/project.properties:
--------------------------------------------------------------------------------
1 | annotation.processing.enabled=true
2 | annotation.processing.enabled.in.editor=false
3 | annotation.processing.processor.options=
4 | annotation.processing.processors.list=
5 | annotation.processing.run.all.processors=true
6 | annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
7 | application.title=studentManagementSystem
8 | application.vendor=WINDOWS 10
9 | build.classes.dir=${build.dir}/classes
10 | build.classes.excludes=**/*.java,**/*.form
11 | # This directory is removed when the project is cleaned:
12 | build.dir=build
13 | build.generated.dir=${build.dir}/generated
14 | build.generated.sources.dir=${build.dir}/generated-sources
15 | # Only compile against the classpath explicitly listed here:
16 | build.sysclasspath=ignore
17 | build.test.classes.dir=${build.dir}/test/classes
18 | build.test.results.dir=${build.dir}/test/results
19 | compile.on.save=true
20 | compile.on.save.unsupported.javafx=true
21 | # Uncomment to specify the preferred debugger connection transport:
22 | #debug.transport=dt_socket
23 | debug.classpath=\
24 | ${run.classpath}
25 | debug.test.classpath=\
26 | ${run.test.classpath}
27 | # This directory is removed when the project is cleaned:
28 | dist.dir=dist
29 | dist.jar=${dist.dir}/studentManagementSystem.jar
30 | dist.javadoc.dir=${dist.dir}/javadoc
31 | endorsed.classpath=
32 | excludes=
33 | file.reference.fontawesomefx-8.2.jar=D:\\Users\\WINDOWS 10\\Desktop\\jar files\\New folder\\fontawesomefx-8.2.jar
34 | file.reference.jfreechart-1.0.19.jar=D:\\Users\\WINDOWS 10\\Desktop\\jar files\\jfreechart-1.0.19.jar
35 | file.reference.mysql-connector-java-5.1.48.jar=D:\\Users\\WINDOWS 10\\Desktop\\jar files\\New folder\\mysql-connector-java-5.1.48.jar
36 | file.reference.ojdbc14-10.2.0.2.0.jar=D:\\Users\\WINDOWS 10\\Desktop\\jar files\\New folder\\ojdbc14-10.2.0.2.0.jar
37 | includes=**
38 | # Non-JavaFX jar file creation is deactivated in JavaFX 2.0+ projects
39 | jar.archive.disabled=true
40 | jar.compress=false
41 | javac.classpath=\
42 | ${javafx.classpath.extension}:\
43 | ${file.reference.fontawesomefx-8.2.jar}:\
44 | ${file.reference.mysql-connector-java-5.1.48.jar}:\
45 | ${file.reference.ojdbc14-10.2.0.2.0.jar}:\
46 | ${file.reference.jfreechart-1.0.19.jar}
47 | # Space-separated list of extra javac options
48 | javac.compilerargs=
49 | javac.deprecation=false
50 | javac.processorpath=\
51 | ${javac.classpath}
52 | javac.source=1.8
53 | javac.target=1.8
54 | javac.test.classpath=\
55 | ${javac.classpath}:\
56 | ${build.classes.dir}
57 | javac.test.processorpath=\
58 | ${javac.test.classpath}
59 | javadoc.additionalparam=
60 | javadoc.author=false
61 | javadoc.encoding=${source.encoding}
62 | javadoc.noindex=false
63 | javadoc.nonavbar=false
64 | javadoc.notree=false
65 | javadoc.private=false
66 | javadoc.splitindex=true
67 | javadoc.use=true
68 | javadoc.version=false
69 | javadoc.windowtitle=
70 | javafx.application.implementation.version=1.0
71 | javafx.binarycss=false
72 | javafx.classpath.extension=\
73 | ${java.home}/lib/javaws.jar:\
74 | ${java.home}/lib/deploy.jar:\
75 | ${java.home}/lib/plugin.jar
76 | javafx.deploy.allowoffline=true
77 | # If true, application update mode is set to 'background', if false, update mode is set to 'eager'
78 | javafx.deploy.backgroundupdate=false
79 | javafx.deploy.embedJNLP=true
80 | javafx.deploy.includeDT=true
81 | # Set true to prevent creation of temporary copy of deployment artifacts before each run (disables concurrent runs)
82 | javafx.disable.concurrent.runs=false
83 | # Set true to enable multiple concurrent runs of the same WebStart or Run-in-Browser project
84 | javafx.enable.concurrent.external.runs=false
85 | # This is a JavaFX project
86 | javafx.enabled=true
87 | javafx.fallback.class=com.javafx.main.NoJavaFXFallback
88 | # Main class for JavaFX
89 | javafx.main.class=studentmanagementsystem.StudentManagementSystem
90 | javafx.preloader.class=
91 | # This project does not use Preloader
92 | javafx.preloader.enabled=false
93 | javafx.preloader.jar.filename=
94 | javafx.preloader.jar.path=
95 | javafx.preloader.project.path=
96 | javafx.preloader.type=none
97 | # Set true for GlassFish only. Rebases manifest classpaths of JARs in lib dir. Not usable with signed JARs.
98 | javafx.rebase.libs=false
99 | javafx.run.height=600
100 | javafx.run.width=800
101 | # Pre-JavaFX 2.0 WebStart is deactivated in JavaFX 2.0+ projects
102 | jnlp.enabled=false
103 | # Main class for Java launcher
104 | main.class=com.javafx.main.Main
105 | # For improved security specify narrower Codebase manifest attribute to prevent RIAs from being repurposed
106 | manifest.custom.codebase=*
107 | # Specify Permissions manifest attribute to override default (choices: sandbox, all-permissions)
108 | manifest.custom.permissions=
109 | manifest.file=manifest.mf
110 | meta.inf.dir=${src.dir}/META-INF
111 | platform.active=default_platform
112 | run.classpath=\
113 | ${dist.jar}:\
114 | ${javac.classpath}:\
115 | ${build.classes.dir}
116 | run.test.classpath=\
117 | ${javac.test.classpath}:\
118 | ${build.test.classes.dir}
119 | source.encoding=UTF-8
120 | src.dir=src
121 | test.src.dir=test
122 |
--------------------------------------------------------------------------------
/studentManagementSystem/nbproject/project.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | org.netbeans.modules.java.j2seproject
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | studentManagementSystem
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/studentManagementSystem/src/studentmanagementsystem/FXMLDocument.fxml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
25 |
26 |
27 |
28 |
29 |
30 |
35 |
36 |
37 |
38 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/studentManagementSystem/src/studentmanagementsystem/FXMLDocumentController.java:
--------------------------------------------------------------------------------
1 | /*
2 | * To change this license header, choose License Headers in Project Properties.
3 | * To change this template file, choose Tools | Templates
4 | * and open the template in the editor.
5 | */
6 | package studentmanagementsystem;
7 |
8 | import java.net.URL;
9 | import java.sql.Connection;
10 | import java.sql.PreparedStatement;
11 | import java.sql.ResultSet;
12 | import java.util.ResourceBundle;
13 | import javafx.event.ActionEvent;
14 | import javafx.fxml.FXML;
15 | import javafx.fxml.FXMLLoader;
16 | import javafx.fxml.Initializable;
17 | import javafx.scene.Parent;
18 | import javafx.scene.Scene;
19 | import javafx.scene.control.Alert;
20 | import javafx.scene.control.Alert.AlertType;
21 | import javafx.scene.control.Button;
22 | import javafx.scene.control.Label;
23 | import javafx.scene.control.PasswordField;
24 | import javafx.scene.control.TextField;
25 | import javafx.scene.input.MouseEvent;
26 | import javafx.scene.layout.AnchorPane;
27 | import javafx.stage.Stage;
28 | import javafx.stage.StageStyle;
29 |
30 | /**
31 | *
32 | * @author WINDOWS 10
33 | */
34 | public class FXMLDocumentController implements Initializable {
35 |
36 | @FXML
37 | private AnchorPane main_form;
38 |
39 | @FXML
40 | private TextField username;
41 |
42 | @FXML
43 | private PasswordField password;
44 |
45 | @FXML
46 | private Button loginBtn;
47 |
48 | @FXML
49 | private Button close;
50 |
51 | // DATABASE TOOls
52 | private Connection connect;
53 | private PreparedStatement prepare;
54 | private ResultSet result;
55 |
56 | // NOW LETS CREATE OUR DATABASE : )
57 |
58 | private double x= 0 ;
59 | private double y= 0;
60 |
61 | public void loginAdmin(){
62 |
63 | String sql = "SELECT * FROM admin WHERE username = ? and password = ?";
64 |
65 | connect = database.connectDb();
66 |
67 | try{ // IT WORKS GOOD : ) NOW LETS DESIGN THE DASHBOARD FORM : )
68 | Alert alert;
69 |
70 | prepare = connect.prepareStatement(sql);
71 | prepare.setString(1, username.getText());
72 | prepare.setString(2, password.getText());
73 |
74 | result = prepare.executeQuery();
75 | // CHECK IF FIELDS ARE EMPTTY
76 | if(username.getText().isEmpty() || password.getText().isEmpty()){
77 | alert = new Alert(AlertType.ERROR);
78 | alert.setTitle("Error Message");
79 | alert.setHeaderText(null);
80 | alert.setContentText("Please fill all blank fields");
81 | alert.showAndWait();
82 | }else{
83 | if(result.next()){
84 | // THEN PROCEED TO DASHBOARD FORM
85 |
86 | getData.username = username.getText();
87 |
88 | alert = new Alert(AlertType.INFORMATION);
89 | alert.setTitle("Information Message");
90 | alert.setHeaderText(null);
91 | alert.setContentText("Successfully Login!");
92 | alert.showAndWait();
93 |
94 | // TO HIDE THE LOGIN FORM
95 | loginBtn.getScene().getWindow().hide();
96 | //LINK YOUR DASHBOARD
97 | Parent root = FXMLLoader.load(getClass().getResource("dashboard.fxml"));
98 |
99 | Stage stage = new Stage();
100 | Scene scene = new Scene(root);
101 |
102 | root.setOnMousePressed((MouseEvent event) ->{
103 | x = event.getSceneX();
104 | y = event.getSceneY();
105 | });
106 |
107 | root.setOnMouseDragged((MouseEvent event) ->{
108 | stage.setX(event.getScreenX() - x);
109 | stage.setY(event.getScreenY() - y);
110 | });
111 |
112 | stage.initStyle(StageStyle.TRANSPARENT);
113 |
114 | stage.setScene(scene);
115 | stage.show();
116 |
117 | }else{
118 | // THEN ERROR MESSAGE WILL APPEAR
119 | alert = new Alert(AlertType.ERROR);
120 | alert.setTitle("Error Message");
121 | alert.setHeaderText(null);
122 | alert.setContentText("Wrong Username/Password");
123 | alert.showAndWait();
124 | }
125 | }
126 | }catch(Exception e){e.printStackTrace();}
127 |
128 | }
129 |
130 | public void close(){
131 | System.exit(0);
132 | }
133 |
134 | //LETS NAME THE COMPONENTS ON LOGIN FORM : )
135 |
136 | @Override
137 | public void initialize(URL url, ResourceBundle rb) {
138 | // TODO
139 | }
140 |
141 | }
142 |
--------------------------------------------------------------------------------
/studentManagementSystem/src/studentmanagementsystem/StudentManagementSystem.java:
--------------------------------------------------------------------------------
1 | /*
2 | * To change this license header, choose License Headers in Project Properties.
3 | * To change this template file, choose Tools | Templates
4 | * and open the template in the editor.
5 | */
6 | package studentmanagementsystem;
7 |
8 | import javafx.application.Application;
9 | import javafx.fxml.FXMLLoader;
10 | import javafx.scene.Parent;
11 | import javafx.scene.Scene;
12 | import javafx.scene.input.MouseEvent;
13 | import javafx.stage.Stage;
14 | import javafx.stage.StageStyle;
15 |
16 | /**
17 | *
18 | * @author WINDOWS 10
19 | * SUBSCRIBE OUR YOUTUBE CHANNEL -> https://www.youtube.com/channel/UCPgcmw0LXToDn49akUEJBkQ
20 | * THANKS FOR YOUR SUPPORT : )
21 | */
22 | public class StudentManagementSystem extends Application {
23 |
24 | private double x = 0 ;
25 | private double y = 0;
26 |
27 | @Override
28 | public void start(Stage stage) throws Exception {
29 | Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
30 |
31 | Scene scene = new Scene(root);
32 | // LETS DESIGN IT USING CSS : )
33 |
34 | root.setOnMousePressed((MouseEvent event) ->{
35 | x = event.getSceneX();
36 | y = event.getSceneY();
37 | });
38 |
39 | root.setOnMouseDragged((MouseEvent event) ->{
40 | stage.setX(event.getScreenX() - x);
41 | stage.setY(event.getScreenY() - y);
42 |
43 | stage.setOpacity(.8);
44 | });
45 |
46 | root.setOnMouseReleased((MouseEvent event) ->{
47 | stage.setOpacity(1);
48 | });
49 |
50 | stage.initStyle(StageStyle.TRANSPARENT);
51 |
52 | stage.setScene(scene);
53 | stage.show();
54 | }
55 | //WE FORGOT TO IMPORT FONT AWESOME JAR FILE TO LIBRARIES : )
56 | /**
57 | * @param args the command line arguments
58 | */
59 | public static void main(String[] args) {
60 | launch(args);
61 | }
62 |
63 | }
64 |
--------------------------------------------------------------------------------
/studentManagementSystem/src/studentmanagementsystem/courseData.java:
--------------------------------------------------------------------------------
1 | /*
2 | * To change this license header, choose License Headers in Project Properties.
3 | * To change this template file, choose Tools | Templates
4 | * and open the template in the editor.
5 | */
6 | package studentmanagementsystem;
7 |
8 | /**
9 | *
10 | * @author WINDOWS 10
11 | * SUBSCRIBE OUR YOUTUBE CHANNEL -> https://www.youtube.com/channel/UCPgcmw0LXToDn49akUEJBkQ
12 | * THANKS FOR YOUR SUPPORT : )
13 | */
14 | public class courseData {
15 |
16 | private String course;
17 | private String description;
18 | private String degree;
19 |
20 | public courseData(String course, String description, String degree){
21 | this.course = course;
22 | this.description = description;
23 | this.degree = degree;
24 | }
25 | public String getCourse(){
26 | return course;
27 | }
28 | public String getDescription(){
29 | return description;
30 | }
31 | public String getDegree(){
32 | return degree;
33 | }
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/studentManagementSystem/src/studentmanagementsystem/dashboard.fxml:
--------------------------------------------------------------------------------
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 |
40 |
45 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
66 |
71 |
72 |
77 |
82 |
87 |
92 |
101 |
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 |
136 |
141 |
142 |
143 |
144 |
145 |
146 |
151 |
156 |
157 |
158 |
159 |
160 |
161 |
166 |
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 |
262 |
263 |
268 |
269 |
274 |
275 |
280 |
281 |
286 |
287 |
292 |
293 |
298 |
299 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
316 |
317 |
318 |
319 |
320 |
321 |
322 |
323 |
324 |
325 |
326 |
327 |
328 |
329 |
330 |
331 |
336 |
337 |
342 |
343 |
348 |
349 |
350 |
351 |
352 |
353 |
354 |
355 |
356 |
357 |
358 |
359 |
360 |
361 |
362 |
363 |
364 |
365 |
366 |
367 |
368 |
369 |
370 |
371 |
372 |
373 |
374 |
375 |
376 |
377 |
378 |
379 |
380 |
381 |
386 |
391 |
392 |
397 |
398 |
399 |
404 |
405 |
410 |
411 |
412 |
413 |
414 |
415 |
416 |
417 |
418 |
419 |
420 |
421 |
422 |
423 |
424 |
425 |
426 |
427 |
428 |
429 |
430 |
431 |
432 |
433 |
434 |
435 |
436 |
437 |
438 |
439 |
440 |
441 |
442 |
443 |
444 |
--------------------------------------------------------------------------------
/studentManagementSystem/src/studentmanagementsystem/dashboardController.java:
--------------------------------------------------------------------------------
1 | /*
2 | * To change this license header, choose License Headers in Project Properties.
3 | * To change this template file, choose Tools | Templates
4 | * and open the template in the editor.
5 | */
6 | package studentmanagementsystem;
7 |
8 | import java.io.File;
9 | import java.net.URL;
10 | import java.sql.Connection;
11 | import java.sql.PreparedStatement;
12 | import java.sql.ResultSet;
13 | import java.sql.Statement;
14 | import java.time.LocalDate;
15 | import java.util.ArrayList;
16 | import java.util.Date;
17 | import java.util.List;
18 | import java.util.Optional;
19 | import java.util.ResourceBundle;
20 | import javafx.collections.FXCollections;
21 | import javafx.collections.ObservableList;
22 | import javafx.collections.transformation.FilteredList;
23 | import javafx.collections.transformation.SortedList;
24 | import javafx.event.ActionEvent;
25 | import javafx.fxml.FXML;
26 | import javafx.fxml.FXMLLoader;
27 | import javafx.fxml.Initializable;
28 | import javafx.scene.Parent;
29 | import javafx.scene.Scene;
30 | import javafx.scene.chart.AreaChart;
31 | import javafx.scene.chart.BarChart;
32 | import javafx.scene.chart.LineChart;
33 | import javafx.scene.chart.XYChart;
34 | import javafx.scene.control.Alert;
35 | import javafx.scene.control.Alert.AlertType;
36 | import javafx.scene.control.Button;
37 | import javafx.scene.control.ButtonType;
38 | import javafx.scene.control.ComboBox;
39 | import javafx.scene.control.DatePicker;
40 | import javafx.scene.control.Label;
41 | import javafx.scene.control.TableColumn;
42 | import javafx.scene.control.TableView;
43 | import javafx.scene.control.TextField;
44 | import javafx.scene.control.cell.PropertyValueFactory;
45 | import javafx.scene.image.Image;
46 | import javafx.scene.image.ImageView;
47 | import javafx.scene.input.MouseEvent;
48 | import javafx.scene.layout.AnchorPane;
49 | import javafx.stage.FileChooser;
50 | import javafx.stage.FileChooser.ExtensionFilter;
51 | import javafx.stage.Stage;
52 | import javafx.stage.StageStyle;
53 |
54 | /**
55 | *
56 | * SUBSCRIBE OUR YOUTUBE CHANNEL -> https://www.youtube.com/channel/UCPgcmw0LXToDn49akUEJBkQ
57 | * THANKS FOR YOUR SUPPORT : )
58 | */
59 | public class dashboardController implements Initializable {
60 |
61 | @FXML
62 | private AnchorPane main_form;
63 |
64 | @FXML
65 | private Button close;
66 |
67 | @FXML
68 | private Button minimize;
69 |
70 | @FXML
71 | private Label username;
72 |
73 | @FXML
74 | private Button home_btn;
75 |
76 | @FXML
77 | private Button addStudents_btn;
78 |
79 | @FXML
80 | private Button availableCourse_btn;
81 |
82 | @FXML
83 | private Button studentGrade_btn;
84 |
85 | @FXML
86 | private Button logout;
87 |
88 | @FXML
89 | private AnchorPane home_form;
90 |
91 | @FXML
92 | private Label home_totalEnrolled;
93 |
94 | @FXML
95 | private Label home_totalFemale;
96 |
97 | @FXML
98 | private Label home_totalMale;
99 |
100 | @FXML
101 | private BarChart, ?> home_totalEnrolledChart;
102 |
103 | @FXML
104 | private AreaChart, ?> home_totalFemaleChart;
105 |
106 | @FXML
107 | private LineChart, ?> home_totalMaleChart;
108 |
109 | @FXML
110 | private AnchorPane addStudents_form;
111 |
112 | @FXML
113 | private TextField addStudents_search;
114 |
115 | @FXML
116 | private TableView addStudents_tableView;
117 |
118 | @FXML
119 | private TableColumn addStudents_col_studentNum;
120 |
121 | @FXML
122 | private TableColumn addStudents_col_year;
123 |
124 | @FXML
125 | private TableColumn addStudents_col_course;
126 |
127 | @FXML
128 | private TableColumn addStudents_col_firstName;
129 |
130 | @FXML
131 | private TableColumn addStudents_col_lastName;
132 |
133 | @FXML
134 | private TableColumn addStudents_col_gender;
135 |
136 | @FXML
137 | private TableColumn addStudents_col_birth;
138 |
139 | @FXML
140 | private TableColumn addStudents_col_status;
141 |
142 | @FXML
143 | private TextField addStudents_studentNum;
144 |
145 | @FXML
146 | private ComboBox> addStudents_year;
147 |
148 | @FXML
149 | private ComboBox> addStudents_course;
150 |
151 | @FXML
152 | private TextField addStudents_firstName;
153 |
154 | @FXML
155 | private TextField addStudents_lastName;
156 |
157 | @FXML
158 | private DatePicker addStudents_birth;
159 |
160 | @FXML
161 | private ComboBox> addStudents_status;
162 |
163 | @FXML
164 | private ComboBox> addStudents_gender;
165 |
166 | @FXML
167 | private ImageView addStudents_imageView;
168 |
169 | @FXML
170 | private Button addStudents_insertBtn;
171 |
172 | @FXML
173 | private Button addStudents_addBtn;
174 |
175 | @FXML
176 | private Button addStudents_updateBtn;
177 |
178 | @FXML
179 | private Button addStudents_deleteBtn;
180 |
181 | @FXML
182 | private Button addStudents_clearBtn;
183 |
184 | @FXML
185 | private AnchorPane availableCourse_form;
186 |
187 | @FXML
188 | private TextField availableCourse_course;
189 |
190 | @FXML
191 | private TextField availableCourse_description;
192 |
193 | @FXML
194 | private TextField availableCourse_degree;
195 |
196 | @FXML
197 | private Button availableCourse_addBtn;
198 |
199 | @FXML
200 | private Button availableCourse_updateBtn;
201 |
202 | @FXML
203 | private Button availableCourse_clearBtn;
204 |
205 | @FXML
206 | private Button availableCourse_deleteBtn;
207 |
208 | @FXML
209 | private TableView availableCourse_tableView;
210 |
211 | @FXML
212 | private TableColumn availableCourse_col_course;
213 |
214 | @FXML
215 | private TableColumn availableCourse_col_description;
216 |
217 | @FXML
218 | private TableColumn availableCourse_col_degree;
219 |
220 | @FXML
221 | private AnchorPane studentGrade_form;
222 |
223 | @FXML
224 | private TextField studentGrade_studentNum;
225 |
226 | @FXML
227 | private Label studentGrade_year;
228 |
229 | @FXML
230 | private Label studentGrade_course;
231 |
232 | @FXML
233 | private TextField studentGrade_firstSem;
234 |
235 | @FXML
236 | private TextField studentGrade_secondSem;
237 |
238 | @FXML
239 | private Button studentGrade_updateBtn;
240 |
241 | @FXML
242 | private Button studentGrade_clearBtn;
243 |
244 | @FXML
245 | private TableView studentGrade_tableView;
246 |
247 | @FXML
248 | private TableColumn studentGrade_col_studentNum;
249 |
250 | @FXML
251 | private TableColumn studentGrade_col_year;
252 |
253 | @FXML
254 | private TableColumn studentGrade_col_course;
255 |
256 | @FXML
257 | private TableColumn studentGrade_col_firstSem;
258 |
259 | @FXML
260 | private TableColumn studentGrade_col_secondSem;
261 |
262 | @FXML
263 | private TableColumn studentGrade_col_final;
264 |
265 | @FXML
266 | private TextField studentGrade_search;
267 |
268 | private Connection connect;
269 | private PreparedStatement prepare;
270 | private Statement statement;
271 | private ResultSet result;
272 |
273 | private Image image;
274 |
275 | public void homeDisplayTotalEnrolledStudents() {
276 |
277 | String sql = "SELECT COUNT(id) FROM student";
278 |
279 | connect = database.connectDb();
280 |
281 | int countEnrolled = 0;
282 |
283 | try {
284 | prepare = connect.prepareStatement(sql);
285 | result = prepare.executeQuery();
286 |
287 | if (result.next()) {
288 | countEnrolled = result.getInt("COUNT(id)");
289 | }
290 |
291 | home_totalEnrolled.setText(String.valueOf(countEnrolled));
292 |
293 | } catch (Exception e) {
294 | e.printStackTrace();
295 | }
296 |
297 | }
298 |
299 | public void homeDisplayFemaleEnrolled() {
300 |
301 | String sql = "SELECT COUNT(id) FROM student WHERE gender = 'Female' and status = 'Enrolled'";
302 |
303 | connect = database.connectDb();
304 |
305 | try {
306 | int countFemale = 0;
307 |
308 | prepare = connect.prepareStatement(sql);
309 | result = prepare.executeQuery();
310 |
311 | if (result.next()) {
312 | countFemale = result.getInt("COUNT(id)");
313 | }
314 |
315 | home_totalFemale.setText(String.valueOf(countFemale));
316 |
317 | } catch (Exception e) {
318 | e.printStackTrace();
319 | }
320 |
321 | }
322 |
323 | public void homeDisplayMaleEnrolled() {
324 |
325 | String sql = "SELECT COUNT(id) FROM student WHERE gender = 'Male' and status = 'Enrolled'";
326 |
327 | connect = database.connectDb();
328 |
329 | try {
330 | int countMale = 0;
331 |
332 | prepare = connect.prepareStatement(sql);
333 | result = prepare.executeQuery();
334 |
335 | if (result.next()) {
336 | countMale = result.getInt("COUNT(id)");
337 | }
338 | home_totalMale.setText(String.valueOf(countMale));
339 |
340 | } catch (Exception e) {
341 | e.printStackTrace();
342 | }
343 |
344 | }
345 |
346 | public void homeDisplayTotalEnrolledChart() {
347 |
348 | home_totalEnrolledChart.getData().clear();
349 |
350 | String sql = "SELECT date, COUNT(id) FROM student WHERE status = 'Enrolled' GROUP BY date ORDER BY TIMESTAMP(date) ASC LIMIT 5";
351 |
352 | connect = database.connectDb();
353 |
354 | try {
355 | XYChart.Series chart = new XYChart.Series();
356 |
357 | prepare = connect.prepareStatement(sql);
358 | result = prepare.executeQuery();
359 |
360 | while (result.next()) {
361 | chart.getData().add(new XYChart.Data(result.getString(1), result.getInt(2)));
362 | }
363 |
364 | home_totalEnrolledChart.getData().add(chart);
365 |
366 | } catch (Exception e) {
367 | e.printStackTrace();
368 | }
369 |
370 | }
371 |
372 | public void homeDisplayFemaleEnrolledChart() {
373 |
374 | home_totalFemaleChart.getData().clear();
375 |
376 | String sql = "SELECT date, COUNT(id) FROM student WHERE status = 'Enrolled' and gender = 'Female' GROUP BY date ORDER BY TIMESTAMP(date) ASC LIMIT 5";
377 |
378 | connect = database.connectDb();
379 |
380 | try {
381 | XYChart.Series chart = new XYChart.Series();
382 |
383 | prepare = connect.prepareStatement(sql);
384 | result = prepare.executeQuery();
385 |
386 | while (result.next()) {
387 | chart.getData().add(new XYChart.Data(result.getString(1), result.getInt(2)));
388 | }
389 |
390 | home_totalFemaleChart.getData().add(chart);
391 |
392 | } catch (Exception e) {
393 | e.printStackTrace();
394 | }
395 |
396 | }
397 |
398 | public void homeDisplayEnrolledMaleChart() {
399 |
400 | home_totalMaleChart.getData().clear();
401 |
402 | String sql = "SELECT date, COUNT(id) FROM student WHERE status = 'Enrolled' and gender = 'Male' GROUP BY date ORDER BY TIMESTAMP(date) ASC LIMIT 5";
403 |
404 | connect = database.connectDb();
405 |
406 | try {
407 | XYChart.Series chart = new XYChart.Series();
408 |
409 | prepare = connect.prepareStatement(sql);
410 | result = prepare.executeQuery();
411 |
412 | while (result.next()) {
413 | chart.getData().add(new XYChart.Data(result.getString(1), result.getInt(2)));
414 | }
415 |
416 | home_totalMaleChart.getData().add(chart);
417 |
418 | } catch (Exception e) {
419 | e.printStackTrace();
420 | }
421 |
422 | }
423 |
424 | public void addStudentsAdd() {
425 |
426 | String insertData = "INSERT INTO student "
427 | + "(studentNum,year,course,firstName,lastName,gender,birth,status,image,date) "
428 | + "VALUES(?,?,?,?,?,?,?,?,?,?)";
429 |
430 | connect = database.connectDb();
431 |
432 | try {
433 | Alert alert;
434 |
435 | if (addStudents_studentNum.getText().isEmpty()
436 | || addStudents_year.getSelectionModel().getSelectedItem() == null
437 | || addStudents_course.getSelectionModel().getSelectedItem() == null
438 | || addStudents_firstName.getText().isEmpty()
439 | || addStudents_lastName.getText().isEmpty()
440 | || addStudents_gender.getSelectionModel().getSelectedItem() == null
441 | || addStudents_birth.getValue() == null
442 | || addStudents_status.getSelectionModel().getSelectedItem() == null
443 | || getData.path == null || getData.path == "") {
444 | alert = new Alert(AlertType.ERROR);
445 | alert.setTitle("Error Message");
446 | alert.setHeaderText(null);
447 | alert.setContentText("Please fill all blank fields");
448 | alert.showAndWait();
449 | } else {
450 | // CHECK IF THE STUDENTNUMBER IS ALREADY EXIST
451 | String checkData = "SELECT studentNum FROM student WHERE studentNum = '"
452 | + addStudents_studentNum.getText() + "'";
453 |
454 | statement = connect.createStatement();
455 | result = statement.executeQuery(checkData);
456 |
457 | if (result.next()) {
458 | alert = new Alert(AlertType.ERROR);
459 | alert.setTitle("Error Message");
460 | alert.setHeaderText(null);
461 | alert.setContentText("Student #" + addStudents_studentNum.getText() + " was already exist!");
462 | alert.showAndWait();
463 | } else {
464 | prepare = connect.prepareStatement(insertData);
465 | prepare.setString(1, addStudents_studentNum.getText());
466 | prepare.setString(2, (String) addStudents_year.getSelectionModel().getSelectedItem());
467 | prepare.setString(3, (String) addStudents_course.getSelectionModel().getSelectedItem());
468 | prepare.setString(4, addStudents_firstName.getText());
469 | prepare.setString(5, addStudents_lastName.getText());
470 | prepare.setString(6, (String) addStudents_gender.getSelectionModel().getSelectedItem());
471 | prepare.setString(7, String.valueOf(addStudents_birth.getValue()));
472 | prepare.setString(8, (String) addStudents_status.getSelectionModel().getSelectedItem());
473 |
474 | String uri = getData.path;
475 | uri = uri.replace("\\", "\\\\");
476 | prepare.setString(9, uri);
477 |
478 | Date date = new Date();
479 | java.sql.Date sqlDate = new java.sql.Date(date.getTime());
480 | prepare.setString(10, String.valueOf(sqlDate));
481 |
482 | prepare.executeUpdate();
483 |
484 | String insertStudentGrade = "INSERT INTO student_grade "
485 | + "(studentNum,year,course,first_sem,second_sem,final) "
486 | + "VALUES(?,?,?,?,?,?)";
487 |
488 | prepare = connect.prepareStatement(insertStudentGrade);
489 | prepare.setString(1, addStudents_studentNum.getText());
490 | prepare.setString(2, (String) addStudents_year.getSelectionModel().getSelectedItem());
491 | prepare.setString(3, (String) addStudents_course.getSelectionModel().getSelectedItem());
492 | prepare.setString(4, "0");
493 | prepare.setString(5, "0");
494 | prepare.setString(6, "0");
495 |
496 | prepare.executeUpdate();
497 |
498 | alert = new Alert(AlertType.INFORMATION);
499 | alert.setTitle("Information Message");
500 | alert.setHeaderText(null);
501 | alert.setContentText("Successfully Added!");
502 | alert.showAndWait();
503 |
504 | // TO UPDATE THE TABLEVIEW
505 | addStudentsShowListData();
506 | // TO CLEAR THE FIELDS
507 | addStudentsClear();
508 | }
509 | }
510 |
511 | } catch (Exception e) {
512 | e.printStackTrace();
513 | }
514 | }
515 |
516 | public void addStudentsUpdate() {
517 |
518 | String uri = getData.path;
519 | uri = uri.replace("\\", "\\\\");
520 |
521 | String updateData = "UPDATE student SET "
522 | + "year = '" + addStudents_year.getSelectionModel().getSelectedItem()
523 | + "', course = '" + addStudents_course.getSelectionModel().getSelectedItem()
524 | + "', firstName = '" + addStudents_firstName.getText()
525 | + "', lastName = '" + addStudents_lastName.getText()
526 | + "', gender = '" + addStudents_gender.getSelectionModel().getSelectedItem()
527 | + "', birth = '" + addStudents_birth.getValue()
528 | + "', status = '" + addStudents_status.getSelectionModel().getSelectedItem()
529 | + "', image = '" + uri + "' WHERE studentNum = '"
530 | + addStudents_studentNum.getText() + "'";
531 |
532 | connect = database.connectDb();
533 |
534 | try {
535 | Alert alert;
536 | if (addStudents_studentNum.getText().isEmpty()
537 | || addStudents_year.getSelectionModel().getSelectedItem() == null
538 | || addStudents_course.getSelectionModel().getSelectedItem() == null
539 | || addStudents_firstName.getText().isEmpty()
540 | || addStudents_lastName.getText().isEmpty()
541 | || addStudents_gender.getSelectionModel().getSelectedItem() == null
542 | || addStudents_birth.getValue() == null
543 | || addStudents_status.getSelectionModel().getSelectedItem() == null
544 | || getData.path == null || getData.path == "") {
545 | alert = new Alert(AlertType.ERROR);
546 | alert.setTitle("Error Message");
547 | alert.setHeaderText(null);
548 | alert.setContentText("Please fill all blank fields");
549 | alert.showAndWait();
550 | } else {
551 |
552 | alert = new Alert(AlertType.CONFIRMATION);
553 | alert.setTitle("Confirmation Message");
554 | alert.setHeaderText(null);
555 | alert.setContentText("Are you sure you want to UPDATE Student #" + addStudents_studentNum.getText() + "?");
556 | Optional option = alert.showAndWait();
557 |
558 | if (option.get().equals(ButtonType.OK)) {
559 | statement = connect.createStatement();
560 | statement.executeUpdate(updateData);
561 |
562 | alert = new Alert(AlertType.INFORMATION);
563 | alert.setTitle("Information Message");
564 | alert.setHeaderText(null);
565 | alert.setContentText("Successfully Updated!");
566 | alert.showAndWait();
567 |
568 | // TO UPDATE THE TABLEVIEW
569 | addStudentsShowListData();
570 | // TO CLEAR THE FIELDS
571 | addStudentsClear();
572 |
573 | } else {
574 | return;
575 | }
576 | }
577 | } catch (Exception e) {
578 | e.printStackTrace();
579 | }
580 | }
581 |
582 | public void addStudentsDelete() {
583 |
584 | String deleteData = "DELETE FROM student WHERE studentNum = '"
585 | + addStudents_studentNum.getText() + "'";
586 |
587 | connect = database.connectDb();
588 |
589 | try {
590 | Alert alert;
591 | if (addStudents_studentNum.getText().isEmpty()
592 | || addStudents_year.getSelectionModel().getSelectedItem() == null
593 | || addStudents_course.getSelectionModel().getSelectedItem() == null
594 | || addStudents_firstName.getText().isEmpty()
595 | || addStudents_lastName.getText().isEmpty()
596 | || addStudents_gender.getSelectionModel().getSelectedItem() == null
597 | || addStudents_birth.getValue() == null
598 | || addStudents_status.getSelectionModel().getSelectedItem() == null
599 | || getData.path == null || getData.path == "") {
600 | alert = new Alert(AlertType.ERROR);
601 | alert.setTitle("Error Message");
602 | alert.setHeaderText(null);
603 | alert.setContentText("Please fill all blank fields");
604 | alert.showAndWait();
605 | } else {
606 | alert = new Alert(AlertType.CONFIRMATION);
607 | alert.setTitle("Confirmation Message");
608 | alert.setHeaderText(null);
609 | alert.setContentText("Are you sure you want to DELETE Student #" + addStudents_studentNum.getText() + "?");
610 |
611 | Optional option = alert.showAndWait();
612 |
613 | if (option.get().equals(ButtonType.OK)) {
614 |
615 | statement = connect.createStatement();
616 | statement.executeUpdate(deleteData);
617 |
618 | String checkData = "SELECT studentNum FROM student_grade "
619 | + "WHERE studentNum = '" + addStudents_studentNum.getText() + "'";
620 |
621 | prepare = connect.prepareStatement(checkData);
622 | result = prepare.executeQuery();
623 |
624 | // IF THE STUDENT NUMBER IS EXIST THEN PROCEED TO DELETE
625 | if (result.next()) {
626 | String deleteGrade = "DELETE FROM student_grade WHERE "
627 | + "studentNum = '" + addStudents_studentNum.getText() + "'";
628 |
629 | statement = connect.createStatement();
630 | statement.executeUpdate(deleteGrade);
631 |
632 | }// IF NOT THEN NVM
633 |
634 | alert = new Alert(AlertType.INFORMATION);
635 | alert.setTitle("Information Message");
636 | alert.setHeaderText(null);
637 | alert.setContentText("Successfully Deleted!");
638 | alert.showAndWait();
639 |
640 | // TO UPDATE THE TABLEVIEW
641 | addStudentsShowListData();
642 | // TO CLEAR THE FIELDS
643 | addStudentsClear();
644 |
645 | } else {
646 | return;
647 | }
648 |
649 | }
650 | } catch (Exception e) {
651 | e.printStackTrace();
652 | }
653 |
654 | }
655 |
656 | public void addStudentsClear() {
657 | addStudents_studentNum.setText("");
658 | addStudents_year.getSelectionModel().clearSelection();
659 | addStudents_course.getSelectionModel().clearSelection();
660 | addStudents_firstName.setText("");
661 | addStudents_lastName.setText("");
662 | addStudents_gender.getSelectionModel().clearSelection();
663 | addStudents_birth.setValue(null);
664 | addStudents_status.getSelectionModel().clearSelection();
665 | addStudents_imageView.setImage(null);
666 |
667 | getData.path = "";
668 | }
669 |
670 | public void addStudentsInsertImage() {
671 |
672 | FileChooser open = new FileChooser();
673 | open.setTitle("Open Image File");
674 | open.getExtensionFilters().add(new ExtensionFilter("Image File", "*jpg", "*png"));
675 |
676 | File file = open.showOpenDialog(main_form.getScene().getWindow());
677 |
678 | if (file != null) {
679 |
680 | image = new Image(file.toURI().toString(), 120, 149, false, true);
681 | addStudents_imageView.setImage(image);
682 |
683 | getData.path = file.getAbsolutePath();
684 |
685 | }
686 | } //WHILE WE INSERT THE DATA ON STUDENT, WE SHOULD INSERT ALSO THE DATA TO STUDENT_GRADE
687 |
688 | public void addStudentsSearch() {
689 |
690 | FilteredList filter = new FilteredList<>(addStudentsListD, e -> true);
691 |
692 | addStudents_search.textProperty().addListener((Observable, oldValue, newValue) -> {
693 |
694 | filter.setPredicate(predicateStudentData -> {
695 |
696 | if (newValue == null || newValue.isEmpty()) {
697 | return true;
698 | }
699 |
700 | String searchKey = newValue.toLowerCase();
701 |
702 | if (predicateStudentData.getStudentNum().toString().contains(searchKey)) {
703 | return true;
704 | } else if (predicateStudentData.getYear().toLowerCase().contains(searchKey)) {
705 | return true;
706 | } else if (predicateStudentData.getCourse().toLowerCase().contains(searchKey)) {
707 | return true;
708 | } else if (predicateStudentData.getFirstName().toLowerCase().contains(searchKey)) {
709 | return true;
710 | } else if (predicateStudentData.getLastName().toLowerCase().contains(searchKey)) {
711 | return true;
712 | } else if (predicateStudentData.getGender().toLowerCase().contains(searchKey)) {
713 | return true;
714 | } else if (predicateStudentData.getBirth().toString().contains(searchKey)) {
715 | return true;
716 | } else if (predicateStudentData.getStatus().toLowerCase().contains(searchKey)) {
717 | return true;
718 | } else {
719 | return false;
720 | }
721 | });
722 | });
723 |
724 | SortedList sortList = new SortedList<>(filter);
725 |
726 | sortList.comparatorProperty().bind(addStudents_tableView.comparatorProperty());
727 | addStudents_tableView.setItems(sortList);
728 |
729 | }
730 |
731 | private String[] yearList = {"First Year", "Second Year", "Third Year", "Fourth Year"};
732 |
733 | public void addStudentsYearList() {
734 |
735 | List yearL = new ArrayList<>();
736 |
737 | for (String data : yearList) {
738 | yearL.add(data);
739 | }
740 |
741 | ObservableList ObList = FXCollections.observableArrayList(yearL);
742 | addStudents_year.setItems(ObList);
743 |
744 | }
745 |
746 | public void addStudentsCourseList() {
747 |
748 | String listCourse = "SELECT * FROM course";
749 |
750 | connect = database.connectDb();
751 |
752 | try {
753 |
754 | ObservableList listC = FXCollections.observableArrayList();
755 |
756 | prepare = connect.prepareStatement(listCourse);
757 | result = prepare.executeQuery();
758 |
759 | while (result.next()) {
760 | listC.add(result.getString("course"));
761 | }
762 | addStudents_course.setItems(listC);
763 |
764 | } catch (Exception e) {
765 | e.printStackTrace();
766 | }
767 |
768 | }
769 |
770 | private String[] genderList = {"Male", "Female", "Others"};
771 |
772 | public void addStudentsGenderList() {
773 | List genderL = new ArrayList<>();
774 |
775 | for (String data : genderList) {
776 | genderL.add(data);
777 | }
778 |
779 | ObservableList ObList = FXCollections.observableArrayList(genderL);
780 | addStudents_gender.setItems(ObList);
781 | }
782 |
783 | private String[] statusList = {"Enrolled", "Not Enrolled", "Inactive"};
784 |
785 | public void addStudentsStatusList() {
786 | List statusL = new ArrayList<>();
787 |
788 | for (String data : statusList) {
789 | statusL.add(data);
790 | }
791 |
792 | ObservableList ObList = FXCollections.observableArrayList(statusL);
793 | addStudents_status.setItems(ObList);
794 | }
795 |
796 | // NOW WE NEED THE COURSE, SO LETS WORK NOW THE AVAILABLE COURSE FORM : )
797 | // LETS WORK FIRST THE ADD STUDENTS FORM : )
798 | public ObservableList addStudentsListData() {
799 |
800 | ObservableList listStudents = FXCollections.observableArrayList();
801 |
802 | String sql = "SELECT * FROM student";
803 |
804 | connect = database.connectDb();
805 |
806 | try {
807 | studentData studentD;
808 | prepare = connect.prepareStatement(sql);
809 | result = prepare.executeQuery();
810 |
811 | while (result.next()) {
812 | studentD = new studentData(result.getInt("studentNum"),
813 | result.getString("year"),
814 | result.getString("course"),
815 | result.getString("firstName"),
816 | result.getString("lastName"),
817 | result.getString("gender"),
818 | result.getDate("birth"),
819 | result.getString("status"),
820 | result.getString("image"));
821 |
822 | listStudents.add(studentD);
823 | }
824 |
825 | } catch (Exception e) {
826 | e.printStackTrace();
827 | }
828 | return listStudents;
829 | }
830 |
831 | private ObservableList addStudentsListD;
832 |
833 | public void addStudentsShowListData() {
834 | addStudentsListD = addStudentsListData();
835 |
836 | addStudents_col_studentNum.setCellValueFactory(new PropertyValueFactory<>("studentNum"));
837 | addStudents_col_year.setCellValueFactory(new PropertyValueFactory<>("year"));
838 | addStudents_col_course.setCellValueFactory(new PropertyValueFactory<>("course"));
839 | addStudents_col_firstName.setCellValueFactory(new PropertyValueFactory<>("firstName"));
840 | addStudents_col_lastName.setCellValueFactory(new PropertyValueFactory<>("lastName"));
841 | addStudents_col_gender.setCellValueFactory(new PropertyValueFactory<>("gender"));
842 | addStudents_col_birth.setCellValueFactory(new PropertyValueFactory<>("birth"));
843 | addStudents_col_status.setCellValueFactory(new PropertyValueFactory<>("status"));
844 |
845 | addStudents_tableView.setItems(addStudentsListD);
846 |
847 | }
848 |
849 | public void addStudentsSelect() {
850 |
851 | studentData studentD = addStudents_tableView.getSelectionModel().getSelectedItem();
852 | int num = addStudents_tableView.getSelectionModel().getSelectedIndex();
853 |
854 | if ((num - 1) < -1) {
855 | return;
856 | }
857 |
858 | addStudents_studentNum.setText(String.valueOf(studentD.getStudentNum()));
859 | addStudents_firstName.setText(studentD.getFirstName());
860 | addStudents_lastName.setText(studentD.getLastName());
861 | addStudents_birth.setValue(LocalDate.parse(String.valueOf(studentD.getBirth())));
862 |
863 | String uri = "file:" + studentD.getImage();
864 |
865 | image = new Image(uri, 120, 149, false, true);
866 | addStudents_imageView.setImage(image);
867 |
868 | getData.path = studentD.getImage();
869 |
870 | }
871 |
872 | public void availableCourseAdd() {
873 |
874 | String insertData = "INSERT INTO course (course,description,degree) VALUES(?,?,?)";
875 |
876 | connect = database.connectDb();
877 |
878 | try {
879 | Alert alert;
880 |
881 | if (availableCourse_course.getText().isEmpty()
882 | || availableCourse_description.getText().isEmpty()
883 | || availableCourse_degree.getText().isEmpty()) {
884 | alert = new Alert(AlertType.ERROR);
885 | alert.setTitle("Error Message");
886 | alert.setHeaderText(null);
887 | alert.setContentText("Please fill all blank fields");
888 | alert.showAndWait();
889 | } else {
890 | // CHECK IF THE COURSE YOU WANT TO INSERT IS ALREADY EXIST!
891 | String checkData = "SELECT course FROM course WHERE course = '"
892 | + availableCourse_course.getText() + "'";
893 |
894 | statement = connect.createStatement();
895 | result = statement.executeQuery(checkData);
896 |
897 | if (result.next()) {
898 | alert = new Alert(AlertType.ERROR);
899 | alert.setTitle("Error Message");
900 | alert.setHeaderText(null);
901 | alert.setContentText("Course: " + availableCourse_course.getText() + " was already exist!");
902 | alert.showAndWait();
903 | } else {
904 | prepare = connect.prepareStatement(insertData);
905 | prepare.setString(1, availableCourse_course.getText());
906 | prepare.setString(2, availableCourse_description.getText());
907 | prepare.setString(3, availableCourse_degree.getText());
908 |
909 | prepare.executeUpdate();
910 |
911 | alert = new Alert(AlertType.INFORMATION);
912 | alert.setTitle("Information Message");
913 | alert.setHeaderText(null);
914 | alert.setContentText("Successfully Added!");
915 | alert.showAndWait();
916 |
917 | // TO BECOME UPDATED OUR TABLEVIEW ONCE THE DATA WE GAVE SUCCESSFUL
918 | availableCourseShowListData();
919 | // TO CLEAR THE TEXT FIELDS
920 | availableCourseClear();
921 |
922 | }
923 | }
924 | } catch (Exception e) {
925 | e.printStackTrace();
926 | }
927 | }
928 |
929 | public void availableCourseUpdate() {
930 |
931 | String updateData = "UPDATE course SET description = '"
932 | + availableCourse_description.getText() + "', degree = '"
933 | + availableCourse_degree.getText() + "' WHERE course = '"
934 | + availableCourse_course.getText() + "'";
935 |
936 | connect = database.connectDb();
937 |
938 | try {
939 | Alert alert;
940 |
941 | if (availableCourse_course.getText().isEmpty()
942 | || availableCourse_description.getText().isEmpty()
943 | || availableCourse_degree.getText().isEmpty()) {
944 | alert = new Alert(AlertType.ERROR);
945 | alert.setTitle("Error Message");
946 | alert.setHeaderText(null);
947 | alert.setContentText("Please fill all blank fields");
948 | alert.showAndWait();
949 | } else {
950 |
951 | alert = new Alert(AlertType.CONFIRMATION);
952 | alert.setTitle("Confirmation Message");
953 | alert.setHeaderText(null);
954 | alert.setContentText("Are you sure you want to UPDATE Course: " + availableCourse_course.getText() + "?");
955 | Optional option = alert.showAndWait();
956 |
957 | if (option.get().equals(ButtonType.OK)) {
958 | statement = connect.createStatement();
959 | statement.executeUpdate(updateData);
960 |
961 | alert = new Alert(AlertType.INFORMATION);
962 | alert.setTitle("Information Message");
963 | alert.setHeaderText(null);
964 | alert.setContentText("Successfully Updated!");
965 | alert.showAndWait();
966 |
967 | // TO BECOME UPDATED OUR TABLEVIEW ONCE THE DATA WE GAVE SUCCESSFUL
968 | availableCourseShowListData();
969 | // TO CLEAR THE TEXT FIELDS
970 | availableCourseClear();
971 |
972 | } else {
973 | return;
974 | }
975 |
976 | }
977 |
978 | } catch (Exception e) {
979 | e.printStackTrace();
980 | }
981 |
982 | }
983 |
984 | public void availableCourseDelete() {
985 |
986 | String deleteData = "DELETE FROM course WHERE course = '"
987 | + availableCourse_course.getText() + "'";
988 |
989 | connect = database.connectDb();
990 |
991 | try {
992 | Alert alert;
993 |
994 | if (availableCourse_course.getText().isEmpty()
995 | || availableCourse_description.getText().isEmpty()
996 | || availableCourse_degree.getText().isEmpty()) {
997 | alert = new Alert(AlertType.ERROR);
998 | alert.setTitle("Error Message");
999 | alert.setHeaderText(null);
1000 | alert.setContentText("Please fill all blank fields");
1001 | alert.showAndWait();
1002 | } else {
1003 | // ALL GOOD GUYS! NOW LETS PROCEED TO ADD STUDENTS FORM
1004 | alert = new Alert(AlertType.CONFIRMATION);
1005 | alert.setTitle("Confirmation Message");
1006 | alert.setHeaderText(null);
1007 | alert.setContentText("Are you sure you want to DELETE Course: " + availableCourse_course.getText() + "?");
1008 | Optional option = alert.showAndWait();
1009 |
1010 | if (option.get().equals(ButtonType.OK)) {
1011 | statement = connect.createStatement();
1012 | statement.executeUpdate(deleteData);
1013 |
1014 | alert = new Alert(AlertType.INFORMATION);
1015 | alert.setTitle("Information Message");
1016 | alert.setHeaderText(null);
1017 | alert.setContentText("Successfully Deleted!");
1018 | alert.showAndWait();
1019 |
1020 | // TO BECOME UPDATED OUR TABLEVIEW ONCE THE DATA WE GAVE SUCCESSFUL
1021 | availableCourseShowListData();
1022 | // TO CLEAR THE TEXT FIELDS
1023 | availableCourseClear();
1024 |
1025 | } else {
1026 | return;
1027 | }
1028 | }
1029 |
1030 | } catch (Exception e) {
1031 | e.printStackTrace();
1032 | }
1033 |
1034 | }
1035 |
1036 | public void availableCourseClear() {
1037 | availableCourse_course.setText("");
1038 | availableCourse_description.setText("");
1039 | availableCourse_degree.setText("");
1040 | }
1041 |
1042 | public ObservableList availableCourseListData() {
1043 |
1044 | ObservableList listData = FXCollections.observableArrayList();
1045 |
1046 | String sql = "SELECT * FROM course";
1047 |
1048 | connect = database.connectDb();
1049 |
1050 | try {
1051 | courseData courseD;
1052 | prepare = connect.prepareStatement(sql);
1053 | result = prepare.executeQuery();
1054 |
1055 | while (result.next()) {
1056 | courseD = new courseData(result.getString("course"),
1057 | result.getString("description"),
1058 | result.getString("degree"));
1059 |
1060 | listData.add(courseD);
1061 | }
1062 |
1063 | } catch (Exception e) {
1064 | e.printStackTrace();
1065 | }
1066 | return listData;
1067 | }
1068 |
1069 | private ObservableList availableCourseList;
1070 |
1071 | public void availableCourseShowListData() {
1072 | availableCourseList = availableCourseListData();
1073 |
1074 | availableCourse_col_course.setCellValueFactory(new PropertyValueFactory<>("course"));
1075 | availableCourse_col_description.setCellValueFactory(new PropertyValueFactory<>("description"));
1076 | availableCourse_col_degree.setCellValueFactory(new PropertyValueFactory<>("degree"));
1077 |
1078 | availableCourse_tableView.setItems(availableCourseList);
1079 |
1080 | }
1081 |
1082 | public void availableCourseSelect() {
1083 | courseData courseD = availableCourse_tableView.getSelectionModel().getSelectedItem();
1084 | int num = availableCourse_tableView.getSelectionModel().getSelectedIndex();
1085 |
1086 | if ((num - 1) < -1) {
1087 | return;
1088 | }
1089 |
1090 | availableCourse_course.setText(courseD.getCourse());
1091 | availableCourse_description.setText(courseD.getDescription());
1092 | availableCourse_degree.setText(courseD.getDegree());
1093 |
1094 | }
1095 |
1096 | public void studentGradesUpdate() {
1097 | double finalCheck1 = 0;
1098 | double finalCheck2 = 0;
1099 |
1100 | String checkData = "SELECT * FROM student_grade WHERE studentNum = '"
1101 | + studentGrade_studentNum.getText() + "'";
1102 |
1103 | connect = database.connectDb();
1104 |
1105 | double finalResult = 0;
1106 |
1107 | try {
1108 |
1109 | prepare = connect.prepareStatement(checkData);
1110 | result = prepare.executeQuery();
1111 |
1112 | if (result.next()) {
1113 | finalCheck1 = result.getDouble("first_sem");
1114 | finalCheck2 = result.getDouble("second_sem");
1115 | }
1116 |
1117 | if (finalCheck1 == 0 || finalCheck2 == 0) {
1118 | finalResult = 0;
1119 | } else { //LIKE (X+Y)/2 AVE WE NEED TO FIND FOR FINALS
1120 | finalResult = (Double.parseDouble(studentGrade_firstSem.getText())
1121 | + Double.parseDouble(studentGrade_secondSem.getText()) / 2);
1122 | }
1123 |
1124 | String updateData = "UPDATE student_grade SET "
1125 | + " year = '" + studentGrade_year.getText()
1126 | + "', course = '" + studentGrade_course.getText()
1127 | + "', first_sem = '" + studentGrade_firstSem.getText()
1128 | + "', second_sem = '" + studentGrade_secondSem.getText()
1129 | + "', final = '" + finalResult + "' WHERE studentNum = '"
1130 | + studentGrade_studentNum.getText() + "'";
1131 |
1132 | Alert alert;
1133 |
1134 | if (studentGrade_studentNum.getText().isEmpty()
1135 | || studentGrade_year.getText().isEmpty()
1136 | || studentGrade_course.getText().isEmpty()) {
1137 | alert = new Alert(AlertType.ERROR);
1138 | alert.setTitle("Error Message");
1139 | alert.setHeaderText(null);
1140 | alert.setContentText("Please fill all blank fields");
1141 | alert.showAndWait();
1142 |
1143 | } else {
1144 |
1145 | alert = new Alert(AlertType.CONFIRMATION);
1146 | alert.setTitle("Confirmation Message");
1147 | alert.setHeaderText(null);
1148 | alert.setContentText("Are you sure you want to UPDATE Student #" + studentGrade_studentNum.getText() + "?");
1149 | Optional option = alert.showAndWait();
1150 |
1151 | if (option.get().equals(ButtonType.OK)) {
1152 | statement = connect.createStatement();
1153 | statement.executeUpdate(updateData);
1154 |
1155 | alert = new Alert(AlertType.INFORMATION);
1156 | alert.setTitle("Information Message");
1157 | alert.setHeaderText(null);
1158 | alert.setContentText("Successfully Updated!");
1159 | alert.showAndWait();
1160 |
1161 | // TO UPDATE THE TABLEVIEW
1162 | studentGradesShowListData();
1163 | } else {
1164 | return;
1165 | }
1166 |
1167 | }// NOT WE ARE CLOSER TO THE ENDING PART :) LETS PROCEED TO DASHBOARD FORM
1168 | } catch (Exception e) {
1169 | e.printStackTrace();
1170 | }
1171 | }
1172 |
1173 | public void studentGradesClear() {
1174 | studentGrade_studentNum.setText("");
1175 | studentGrade_year.setText("");
1176 | studentGrade_course.setText("");
1177 | studentGrade_firstSem.setText("");
1178 | studentGrade_secondSem.setText("");
1179 | }
1180 |
1181 | public ObservableList studentGradesListData() {
1182 |
1183 | ObservableList listData = FXCollections.observableArrayList();
1184 |
1185 | String sql = "SELECT * FROM student_grade";
1186 |
1187 | connect = database.connectDb();
1188 |
1189 | try {
1190 | studentData studentD;
1191 |
1192 | prepare = connect.prepareStatement(sql);
1193 | result = prepare.executeQuery();
1194 |
1195 | while (result.next()) {
1196 | studentD = new studentData(result.getInt("studentNum"),
1197 | result.getString("year"),
1198 | result.getString("course"),
1199 | result.getDouble("first_sem"),
1200 | result.getDouble("second_sem"),
1201 | result.getDouble("final"));
1202 |
1203 | listData.add(studentD);
1204 | }
1205 | } catch (Exception e) {
1206 | e.printStackTrace();
1207 | }
1208 | return listData;
1209 | }
1210 |
1211 | private ObservableList studentGradesList;
1212 |
1213 | public void studentGradesShowListData() {
1214 | studentGradesList = studentGradesListData();
1215 |
1216 | studentGrade_col_studentNum.setCellValueFactory(new PropertyValueFactory<>("studentNum"));
1217 | studentGrade_col_year.setCellValueFactory(new PropertyValueFactory<>("year"));
1218 | studentGrade_col_course.setCellValueFactory(new PropertyValueFactory<>("course"));
1219 | studentGrade_col_firstSem.setCellValueFactory(new PropertyValueFactory<>("firstSem"));
1220 | studentGrade_col_secondSem.setCellValueFactory(new PropertyValueFactory<>("secondSem"));
1221 | studentGrade_col_final.setCellValueFactory(new PropertyValueFactory<>("finals"));
1222 | // WE NEED TO FIX THE DELETE ON ADD STUDENT FORM
1223 | studentGrade_tableView.setItems(studentGradesList);
1224 |
1225 | }
1226 |
1227 | public void studentGradesSelect() {
1228 |
1229 | studentData studentD = studentGrade_tableView.getSelectionModel().getSelectedItem();
1230 | int num = studentGrade_tableView.getSelectionModel().getSelectedIndex();
1231 |
1232 | if ((num - 1) < -1) {
1233 | return;
1234 | }
1235 |
1236 | studentGrade_studentNum.setText(String.valueOf(studentD.getStudentNum()));
1237 | studentGrade_year.setText(studentD.getYear());
1238 | studentGrade_course.setText(studentD.getCourse());
1239 | studentGrade_firstSem.setText(String.valueOf(studentD.getFirstSem()));
1240 | studentGrade_secondSem.setText(String.valueOf(studentD.getSecondSem()));
1241 | }
1242 |
1243 | public void studentGradesSearch() {
1244 |
1245 | FilteredList filter = new FilteredList<>(studentGradesList, e -> true);
1246 |
1247 | studentGrade_search.textProperty().addListener((Observable, oldValue, newValue) -> {
1248 |
1249 | filter.setPredicate(predicateStudentData -> {
1250 |
1251 | if (newValue.isEmpty() || newValue == null) {
1252 | return true;
1253 | }
1254 | String searchKey = newValue.toLowerCase();
1255 |
1256 | if (predicateStudentData.getStudentNum().toString().contains(searchKey)) {
1257 | return true;
1258 | } else if (predicateStudentData.getYear().toLowerCase().contains(searchKey)) {
1259 | return true;
1260 | } else if (predicateStudentData.getCourse().toLowerCase().contains(searchKey)) {
1261 | return true;
1262 | } else if (predicateStudentData.getFirstSem().toString().contains(searchKey)) {
1263 | return true;
1264 | } else if (predicateStudentData.getSecondSem().toString().contains(searchKey)) {
1265 | return true;
1266 | } else if (predicateStudentData.getFinals().toString().contains(searchKey)) {
1267 | return true;
1268 | } else {
1269 | return false;
1270 | }
1271 | });
1272 | });
1273 |
1274 | SortedList sortList = new SortedList<>(filter);
1275 |
1276 | sortList.comparatorProperty().bind(studentGrade_tableView.comparatorProperty());
1277 | studentGrade_tableView.setItems(sortList);
1278 |
1279 | }
1280 |
1281 | private double x = 0;
1282 | private double y = 0;
1283 |
1284 | public void logout() {
1285 |
1286 | try {
1287 |
1288 | Alert alert = new Alert(AlertType.CONFIRMATION);
1289 | alert.setTitle("Confirmation Message");
1290 | alert.setHeaderText(null);
1291 | alert.setContentText("Are you sure you want to logout?");
1292 |
1293 | Optional option = alert.showAndWait();
1294 |
1295 | if (option.get().equals(ButtonType.OK)) {
1296 |
1297 | //HIDE YOUR DASHBOARD FORM
1298 | logout.getScene().getWindow().hide();
1299 |
1300 | //LINK YOUR LOGIN FORM
1301 | Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));
1302 | Stage stage = new Stage();
1303 | Scene scene = new Scene(root);
1304 |
1305 | root.setOnMousePressed((MouseEvent event) -> {
1306 | x = event.getSceneX();
1307 | y = event.getSceneY();
1308 | });
1309 |
1310 | root.setOnMouseDragged((MouseEvent event) -> {
1311 | stage.setX(event.getScreenX() - x);
1312 | stage.setY(event.getScreenY() - y);
1313 |
1314 | stage.setOpacity(.8);
1315 | });
1316 |
1317 | root.setOnMouseReleased((MouseEvent event) -> {
1318 | stage.setOpacity(1);
1319 | });
1320 |
1321 | stage.initStyle(StageStyle.TRANSPARENT);
1322 |
1323 | stage.setScene(scene);
1324 | stage.show();
1325 |
1326 | } else {
1327 | return;
1328 | }
1329 |
1330 | } catch (Exception e) {
1331 | e.printStackTrace();
1332 | }
1333 |
1334 | }
1335 |
1336 | public void displayUsername(){
1337 | username.setText(getData.username);
1338 | }
1339 | // THATS IT FOR THESE VIDEOS, THANKS FOR WATCHING!! SUBSCRIBE AND TURN ON NOTIFICATION
1340 | // TO NOTIF YOU FOR MORE UPCOMING VIDEOS THANKS FOR THE SUPPORT! : )
1341 | public void defaultNav(){
1342 | home_btn.setStyle("-fx-background-color:linear-gradient(to bottom right, #3f82ae, #26bf7d);");
1343 | }
1344 |
1345 | public void switchForm(ActionEvent event) {
1346 | if (event.getSource() == home_btn) {
1347 | home_form.setVisible(true);
1348 | addStudents_form.setVisible(false);
1349 | availableCourse_form.setVisible(false);
1350 | studentGrade_form.setVisible(false);
1351 |
1352 | home_btn.setStyle("-fx-background-color:linear-gradient(to bottom right, #3f82ae, #26bf7d);");
1353 | addStudents_btn.setStyle("-fx-background-color:transparent");
1354 | availableCourse_btn.setStyle("-fx-background-color:transparent");
1355 | studentGrade_btn.setStyle("-fx-background-color:transparent");
1356 |
1357 | homeDisplayTotalEnrolledStudents();
1358 | homeDisplayMaleEnrolled();
1359 | homeDisplayFemaleEnrolled();
1360 | homeDisplayEnrolledMaleChart();
1361 | homeDisplayFemaleEnrolledChart();
1362 | homeDisplayTotalEnrolledChart();
1363 |
1364 | } else if (event.getSource() == addStudents_btn) {
1365 | home_form.setVisible(false);
1366 | addStudents_form.setVisible(true);
1367 | availableCourse_form.setVisible(false);
1368 | studentGrade_form.setVisible(false);
1369 |
1370 | addStudents_btn.setStyle("-fx-background-color:linear-gradient(to bottom right, #3f82ae, #26bf7d);");
1371 | home_btn.setStyle("-fx-background-color:transparent");
1372 | availableCourse_btn.setStyle("-fx-background-color:transparent");
1373 | studentGrade_btn.setStyle("-fx-background-color:transparent");
1374 |
1375 | // TO BECOME UPDATED ONCE YOU CLICK THE ADD STUDENTS BUTTON ON NAV
1376 | addStudentsShowListData();
1377 | addStudentsYearList();
1378 | addStudentsGenderList();
1379 | addStudentsStatusList();
1380 | addStudentsCourseList();
1381 | addStudentsSearch();
1382 |
1383 | } else if (event.getSource() == availableCourse_btn) {
1384 | home_form.setVisible(false);
1385 | addStudents_form.setVisible(false);
1386 | availableCourse_form.setVisible(true);
1387 | studentGrade_form.setVisible(false);
1388 |
1389 | availableCourse_btn.setStyle("-fx-background-color:linear-gradient(to bottom right, #3f82ae, #26bf7d);");
1390 | addStudents_btn.setStyle("-fx-background-color:transparent");
1391 | home_btn.setStyle("-fx-background-color:transparent");
1392 | studentGrade_btn.setStyle("-fx-background-color:transparent");
1393 |
1394 | availableCourseShowListData();
1395 |
1396 | } else if (event.getSource() == studentGrade_btn) {
1397 | home_form.setVisible(false);
1398 | addStudents_form.setVisible(false);
1399 | availableCourse_form.setVisible(false);
1400 | studentGrade_form.setVisible(true);
1401 |
1402 | studentGrade_btn.setStyle("-fx-background-color:linear-gradient(to bottom right, #3f82ae, #26bf7d);");
1403 | addStudents_btn.setStyle("-fx-background-color:transparent");
1404 | availableCourse_btn.setStyle("-fx-background-color:transparent");
1405 | home_btn.setStyle("-fx-background-color:transparent");
1406 |
1407 | studentGradesShowListData();
1408 | studentGradesSearch();
1409 |
1410 | }
1411 | }
1412 |
1413 | public void close() {
1414 | System.exit(0);
1415 | }
1416 |
1417 | public void minimize() {
1418 | Stage stage = (Stage) main_form.getScene().getWindow();
1419 | stage.setIconified(true);
1420 | }
1421 |
1422 | // SORRY ABOUT THAT, I JUST NAMED THE DIFFERENT COMPONENTS WITH THE SAME NAME
1423 | // MAKE SURE THAT THE NAME YOU GAVE TO THEM ARE DIFFERENT TO THE OTHER OKAY?
1424 | @Override
1425 | public void initialize(URL location, ResourceBundle resources) {
1426 | displayUsername();
1427 | defaultNav();
1428 |
1429 | homeDisplayTotalEnrolledStudents();
1430 | homeDisplayMaleEnrolled();
1431 | homeDisplayFemaleEnrolled();
1432 | homeDisplayEnrolledMaleChart();
1433 | homeDisplayFemaleEnrolledChart();
1434 | homeDisplayTotalEnrolledChart();
1435 |
1436 | // TO SHOW IMMIDIATELY WHEN WE PROCEED TO DASHBOARD APPLICATION FORM
1437 | addStudentsShowListData();
1438 | addStudentsYearList();
1439 | addStudentsGenderList();
1440 | addStudentsStatusList();
1441 | addStudentsCourseList();
1442 |
1443 | availableCourseShowListData();
1444 |
1445 | studentGradesShowListData();
1446 |
1447 | }
1448 |
1449 | }
1450 |
--------------------------------------------------------------------------------
/studentManagementSystem/src/studentmanagementsystem/dashboardDesign.css:
--------------------------------------------------------------------------------
1 | /*
2 | To change this license header, choose License Headers in Project Properties.
3 | To change this template file, choose Tools | Templates
4 | and open the template in the editor.
5 | */
6 | /*
7 | Created on : 09 17, 22, 10:45:44 AM
8 | Author : WINDOWS 10
9 | * SUBSCRIBE OUR YOUTUBE CHANNEL -> https://www.youtube.com/channel/UCPgcmw0LXToDn49akUEJBkQ
10 | * THANKS FOR YOUR SUPPORT : )
11 | */
12 |
13 | .top-form{
14 | -fx-background-color:#fff;
15 | -fx-border-color:#000;
16 | -fx-border-width:.4px .4px .2px .4px;
17 | }
18 |
19 | .semi-top-form{
20 | -fx-background-color:#efefef;
21 | -fx-border-color:#000;
22 | -fx-border-width:.2px .4px .4px .4px;
23 | }
24 |
25 | .close{
26 | -fx-background-color:transparent;
27 | -fx-cursor:hand;
28 | }
29 | .close:hover{
30 | -fx-background-color:#fb3d63;
31 | }
32 |
33 | .minimize{
34 | -fx-background-color:transparent;
35 | -fx-cursor:hand;
36 | }
37 | .minimize:hover{
38 | -fx-background-color:#ddd;
39 | }
40 |
41 | .nav-form{
42 | -fx-background-color:linear-gradient(to bottom right, #2d658c, #2ca772);
43 | }
44 |
45 | .nav-btn{
46 | -fx-background-color:transparent;
47 | -fx-cursor:hand;
48 | -fx-text-fill:#fff;
49 | -fx-font-size:15px;
50 | -fx-font-family:"Arial";
51 | -fx-alignment:CENTER-LEFT;
52 | }
53 |
54 | .logout{
55 | -fx-background-color:#2c84bf;
56 | -fx-background-radius:10px;
57 | -fx-cursor:hand;
58 | }
59 | .logout:hover{
60 | -fx-background-color:#1593e7;
61 | }
62 |
63 | .shadow{
64 | -fx-effect:dropshadow(three-pass-box, rgba(0,0,0,0.4), 6,0,0,0);
65 | }
66 |
67 | .white-bg{
68 | -fx-background-color:#fff;
69 | -fx-background-radius:8px;
70 | }
71 |
72 | .card{
73 | -fx-background-color:linear-gradient(to right, #344250, #3c6382);
74 | -fx-background-radius:4px;
75 | }
76 |
77 | .search{
78 | -fx-background-color:transparent;
79 | -fx-border-color:linear-gradient(to bottom right, #2d658c, #2ca772);
80 | -fx-border-width:.8px;
81 | -fx-border-radius:8px;
82 | -fx-font-family:"Tahoma";
83 | -fx-font-size:14px;
84 | -fx-padding:0px 0px 0px 28px;
85 | }
86 |
87 | .search:focused{
88 | -fx-border-width:1.8px;
89 | }
90 |
91 | .table-view{
92 | -fx-background-color:transparent;
93 | -fx-padding:0px;
94 | -fx-border-color:linear-gradient(to bottom right, #2d658c, #2ca772);
95 | -fx-border-width:2px;
96 | -fx-border-radius:8px;
97 | }
98 | .table-view .table-column{
99 | -fx-alignment: CENTER;
100 | }
101 | .table-view .column-header-background{
102 | -fx-background-color:linear-gradient(to bottom right, #2d658c, #2ca772);
103 | -fx-background-radius:8px 8px 0px 0px;
104 | -fx-background-inset: 0 0 0 0;
105 | }
106 | .table-view .column-header, .filter{
107 | -fx-background-color:transparent;
108 | -fx-size:40px;
109 | }
110 | .table-view .column-header .label{
111 | -fx-text-fill:#fff;
112 | -fx-font-family:"Arial";
113 | }
114 |
115 | .textfield{
116 | -fx-background-color:linear-gradient(to bottom, #efefef, #eee);
117 | -fx-background-radius:4px;
118 | -fx-border-color:linear-gradient(to bottom right, #2d658c, #2ca772);
119 | -fx-border-width:.8px;
120 | -fx-font-family:"Tahoma";
121 | -fx-border-radius:4px;
122 | }
123 | .textfield:focused{
124 | -fx-background-color:#fff;
125 | -fx-border-width:1px;
126 | }
127 |
128 | .insert-btn{
129 | -fx-background-color:transparent;
130 | -fx-text-fill:red;
131 | -fx-font-size:14px;
132 | -fx-font-family:"Arial";
133 | -fx-cursor:hand;
134 | }
135 |
136 | .add-btn{
137 | -fx-background-color:#2d5278;
138 | -fx-background-radius:8px;
139 | -fx-cursor:hand;
140 | -fx-text-fill:#fff;
141 | -fx-font-size:14px;
142 | -fx-font-family:"Arial";
143 | }
144 | .add-btn:hover{
145 | -fx-background-color:#2268ae;
146 | }
147 |
148 | .update-btn{
149 | -fx-background-color:#2d7755;
150 | -fx-background-radius:8px;
151 | -fx-cursor:hand;
152 | -fx-text-fill:#fff;
153 | -fx-font-size:14px;
154 | -fx-font-family:"Arial";
155 | }
156 | .update-btn:hover{
157 | -fx-background-color:#22ad72;
158 | }
159 |
160 | .delete-btn{
161 | -fx-background-color:#90242f;
162 | -fx-background-radius:8px;
163 | -fx-cursor:hand;
164 | -fx-text-fill:#fff;
165 | -fx-font-size:14px;
166 | -fx-font-family:"Arial";
167 | }
168 | .delete-btn:hover{
169 | -fx-background-color:#c51f32;
170 | }
171 |
172 | .clear-btn{
173 | -fx-background-color:#6e2275;
174 | -fx-background-radius:8px;
175 | -fx-cursor:hand;
176 | -fx-text-fill:#fff;
177 | -fx-font-size:14px;
178 | -fx-font-family:"Arial";
179 | }
180 | .clear-btn:hover{
181 | -fx-background-color:#ae21ac;
182 | }
183 |
184 | .label-info{
185 | -fx-background-color:#fff;
186 | -fx-background-radius:4px;
187 | -fx-border-color:linear-gradient(to bottom right, #2d658c, #2ca772);
188 | -fx-border-width:.8px;
189 | -fx-font-family:"Tahoma";
190 | -fx-border-radius:4px;
191 | -fx-padding:0px 0px 0px 5px;
192 | }
193 | /* NOW FINALLY WE FINISHED THE COMPONENTS, NOW LETS NAME ALL OF THEM : )*/
--------------------------------------------------------------------------------
/studentManagementSystem/src/studentmanagementsystem/database.java:
--------------------------------------------------------------------------------
1 | /*
2 | * To change this license header, choose License Headers in Project Properties.
3 | * To change this template file, choose Tools | Templates
4 | * and open the template in the editor.
5 | */
6 | package studentmanagementsystem;
7 |
8 | import java.sql.Connection;
9 | import java.sql.DriverManager;
10 |
11 | /**
12 | *
13 | * @author WINDOWS 10
14 | * SUBSCRIBE OUR YOUTUBE CHANNEL -> https://www.youtube.com/channel/UCPgcmw0LXToDn49akUEJBkQ
15 | * THANKS FOR YOUR SUPPORT : )
16 | */
17 | public class database {
18 |
19 | public static Connection connectDb(){
20 |
21 | try{
22 |
23 | Class.forName("com.mysql.jdbc.Driver");
24 |
25 | Connection connect = DriverManager.getConnection("jdbc:mysql://localhost/studentdata", "root", "");
26 | return connect;
27 | }catch(Exception e){e.printStackTrace();}
28 | return null;
29 | }
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/studentManagementSystem/src/studentmanagementsystem/getData.java:
--------------------------------------------------------------------------------
1 | /*
2 | * To change this license header, choose License Headers in Project Properties.
3 | * To change this template file, choose Tools | Templates
4 | * and open the template in the editor.
5 | */
6 | package studentmanagementsystem;
7 |
8 | /**
9 | *
10 | * @author WINDOWS 10
11 | * SUBSCRIBE OUR YOUTUBE CHANNEL -> https://www.youtube.com/channel/UCPgcmw0LXToDn49akUEJBkQ
12 | * THANKS FOR YOUR SUPPORT : )
13 | */
14 | public class getData {
15 |
16 | public static String username;
17 | public static String path;
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/studentManagementSystem/src/studentmanagementsystem/loginDesign.css:
--------------------------------------------------------------------------------
1 | /*
2 | To change this license header, choose License Headers in Project Properties.
3 | To change this template file, choose Tools | Templates
4 | and open the template in the editor.
5 | */
6 | /*
7 | Created on : 09 17, 22, 10:12:46 AM
8 | Author : WINDOWS 10
9 | SUBSCRIBE OUR YOUTUBE CHANNEL -> https://www.youtube.com/channel/UCPgcmw0LXToDn49akUEJBkQ
10 | * THANKS FOR YOUR SUPPORT : )
11 | */
12 |
13 | .left-form{
14 | -fx-background-color:linear-gradient(to bottom right, #2d658c, #2ca772);
15 | -fx-border-color:#000;
16 | -fx-border-width:.4px 0px .4px .4px;
17 | }
18 |
19 | .right-form{
20 | -fx-background-color:#fff;
21 | -fx-border-color:#000;
22 | -fx-border-width:.4px .4px .4px 0px;
23 | }
24 |
25 | .close{
26 | -fx-background-color:transparent;
27 | -fx-cursor:hand;
28 | }
29 | .close:hover{
30 | -fx-background-color:#fb3d63;
31 | }
32 |
33 | .textfield{
34 | -fx-background-color:linear-gradient(to bottom, #efefef, #eee);
35 | -fx-background-radius:5px;
36 | -fx-border-color:#000;
37 | -fx-border-width:.2px;
38 | -fx-border-radius:5px;
39 | -fx-font-size:13px;
40 | -fx-font-family:"Tahoma";
41 | }
42 | .textfield:focused{
43 | -fx-background-color:#fff;
44 | -fx-border-color:linear-gradient(to bottom right, #2d658c, #2ca772);
45 | -fx-border-width:.8px;
46 | }
47 |
48 | .login-btn{
49 | -fx-background-color:linear-gradient(to bottom, #2968a7, #14405d);
50 | -fx-background-radius:4px;
51 | -fx-cursor:hand;
52 | -fx-text-fill:#fff;
53 | -fx-font-size:14px;
54 | -fx-font-family:"Arial";
55 | }
56 | .login-btn:hover{
57 | -fx-background-color:linear-gradient(to bottom, #277bd0, #1b6fa4);
58 | }
--------------------------------------------------------------------------------
/studentManagementSystem/src/studentmanagementsystem/studentData.java:
--------------------------------------------------------------------------------
1 | /*
2 | * To change this license header, choose License Headers in Project Properties.
3 | * To change this template file, choose Tools | Templates
4 | * and open the template in the editor.
5 | */
6 | package studentmanagementsystem;
7 |
8 | import java.sql.Date;
9 |
10 | /**
11 | *
12 | * @author WINDOWS 10
13 | * SUBSCRIBE OUR YOUTUBE CHANNEL -> https://www.youtube.com/channel/UCPgcmw0LXToDn49akUEJBkQ
14 | * THANKS FOR YOUR SUPPORT : )
15 | */
16 | public class studentData {
17 |
18 | private Integer studentNum;
19 | private String year;
20 | private String course;
21 | private String firstName;
22 | private String lastName;
23 | private String gender;
24 | private Date birth;
25 | private String status;
26 | private String image;
27 | private Double firstSem;
28 | private Double secondSem;
29 | private Double finals;
30 |
31 | // MAKE SURE THAT SAME DATATYPE THAT YOU WILL PUT THERE
32 | public studentData(Integer studentNum, String year, String course, String firstName, String lastName, String gender, Date birth, String status, String image) {
33 | this.studentNum = studentNum;
34 | this.year = year;
35 | this.course = course;
36 | this.firstName = firstName;
37 | this.lastName = lastName;
38 | this.gender = gender;
39 | this.birth = birth;
40 | this.status = status;
41 | this.image = image;
42 | }
43 |
44 | public studentData(Integer studentNum, String year, String course, Double firstSem, Double secondSem, Double finals) {
45 | this.studentNum = studentNum;
46 | this.year = year;
47 | this.course = course;
48 | this.firstSem = firstSem;
49 | this.secondSem = secondSem;
50 | this.finals = finals;
51 | }
52 |
53 | public Integer getStudentNum() {
54 | return studentNum;
55 | }
56 |
57 | public String getYear() {
58 | return year;
59 | }
60 |
61 | public String getCourse() {
62 | return course;
63 | }
64 |
65 | public String getFirstName() {
66 | return firstName;
67 | }
68 |
69 | public String getLastName() {
70 | return lastName;
71 | }
72 |
73 | public String getGender() {
74 | return gender;
75 | }
76 |
77 | public Date getBirth() {
78 | return birth;
79 | }
80 |
81 | public String getStatus() {
82 | return status;
83 | }
84 |
85 | public String getImage() {
86 | return image;
87 | }
88 |
89 | public Double getFirstSem() {
90 | return firstSem;
91 | }
92 |
93 | public Double getSecondSem() {
94 | return secondSem;
95 | }
96 |
97 | public Double getFinals() {
98 | return finals;
99 | }
100 |
101 | // PLEASE FOLLOW ME IF THE VARS ARE THE SAME TO ME
102 | }
103 |
--------------------------------------------------------------------------------