Slide 1

Slide 1 text

jgs CSE 563 Software Requirements and Specification Lecture 23: Final Project Dr. Javier Gonzalez-Sanchez [email protected] javiergs.engineering.asu.edu | javiergs.com PERALTA 230U Office Hours: By appointment

Slide 2

Slide 2 text

jgs Fall 2021 | 00000001 Agenda § Monday 11/21 § Wednesday 11/23 § Monday 11/28 § Wednesday, 11/30 – Full Review § Monday, December 5 - Final Exam Assignment 06

Slide 3

Slide 3 text

jgs Fall 2021 | 00000001 It is This Time of the Semester When …

Slide 4

Slide 4 text

jgs Fall 2021 | 00000001 It is This Time of the Semester When … § Do NOT be a Grade Grubber § Grading is done by applying the same policies to all students as it is described in the syllabus. § It is unethical to bring to your instructor's attention the possible impact of your course grade on your plans, including graduation, scholarships, jobs, etc. Do not send requests to your instructor asking for a grade you did not earn with your work.

Slide 5

Slide 5 text

jgs Final Project Assignment 06

Slide 6

Slide 6 text

jgs Fall 2021 | 00000001 Team You can work in a team of maximum 6 team members You should have a TEAM by NOW

Slide 7

Slide 7 text

jgs Fall 2021 | 00000001 Instructions § A project with Taiga working in a team § Be careful with academic integrity; several cases of plagiarism are been detected § ALL cases will be reported to the Dean’s Office, and a grade of zero will be given.

Slide 8

Slide 8 text

jgs Fall 2021 | 00000001 Instructions § User Stories in Taiga (Backlogs) § Sprint(s) § Tasks and their responsible (Taskboard) § Daily report (Burndown Chart) § Source Code § JavaDoc (Classes and Methods) § UML Class Diagram (Recommended but not mandatory). If you create one, include it in your submission.

Slide 9

Slide 9 text

jgs Fall 2021 | 00000001 User Interface § A GUI with a menu bar (Use a JMenu) § Two items: File and About § About is Easy, will open a dialog box with your team information. § File menu is the important one Jmenu Tutorial https://docs.oracle.com/javase/tutorial/uiswing/components/menu.html

Slide 10

Slide 10 text

jgs Fall 2021 | 00000001 File Menu Main functionalities: • Load a roster • Add attendance • Save • Plot Data

Slide 11

Slide 11 text

jgs Fall 2021 | 00000001 Load a Roster • Ask the user for a File path (Use a JFileChooser) • The file will be a CSV (Comma Separated Values) file. • Read the file and load the data into a data structure (your choice) JFileChooser Tutorial: https://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html How to Read CSV File in Java https://www.tutorialspoint.com/how-to-read-the-data-from-a-csv-file-in-java

Slide 12

Slide 12 text

jgs Fall 2021 | 00000001 Load a Roster • Ask the user for a File path (Use a JFileChooser) • The file will be a CSV (Comma Separated Values) file. • Read the file and load the data into a data structure (your choice) JFileChooser Tutorial: https://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html How to Read CSV File in Java https://www.tutorialspoint.com/how-to-read-the-data-from-a-csv-file-in-java

Slide 13

Slide 13 text

jgs Fall 2021 | 00000001 Roster File / / / • The file does not have headers (orange line). Added only as a reference. • 4 fields per row

Slide 14

Slide 14 text

jgs Fall 2021 | 00000001 Load a Roster • Once the data is loaded, visualize it on the screen using a Jtable • Add your JTable in a JScrollPane, you will need scrollbars, both horizontal and vertical Jtable Tutorial https://www.javatpoint.com/java-jtable Dinamically Updating a JTable https://stackoverflow.com/questions/24918884/dynamically-updating-jtable

Slide 15

Slide 15 text

jgs Fall 2021 | 00000001 Add Attendance • Ask the user for a Directory path (Use a JFileChooser) • In the Directory, there will be CSV (Comma Separated Values) file(s) – one or more! • Each file has a name like this: “20221121 attendance.csv” • Read the file and load the data into a data structure • Remember the date

Slide 16

Slide 16 text

jgs Fall 2021 | 00000001 Add Attendance • Ask the user for a Directory path (Use a JFileChooser) • In the Directory, there will be CSV (Comma Separated Values) file(s) – one or more! • Each file has a name like this: “20221121 attendance.csv” • Read the file and load the data into a data structure • Remember the date

Slide 17

Slide 17 text

jgs Fall 2021 | 00000001 Attendance File (Zoom Attendance) • Same ASURITE can appear in more than one row. For instance, if a user is connected for 20 minutes, go and then connect for another 35 minutes. It will appear as zoe 20 zoe 35 Merge them into one. And add the minutes. For instance: zoe 55 75 time ASURITE javiergs • The file does not have headers (orange line). Added only as a reference. • 2 fields per row: • ASURITE (your username in the email) • An integer number that represents how many minutes you were connected in a meeting

Slide 18

Slide 18 text

jgs Fall 2021 | 00000001 Roster + Attendance • Using the asurite field as a reference, mix the roster data and the attendance data • Visualize the attendance data adding a column to the JTable. The header for the column is the date that the user provided • Any attendee that is not in the roster is ignored. But report it to the user. Use an option of JDialog 3

Slide 19

Slide 19 text

jgs Fall 2021 | 00000001 Roster + Attendance * • N Attendance Files can be loaded for the same Roster File. Each one add a new column

Slide 20

Slide 20 text

jgs Fall 2021 | 00000001 Save • Save all data (exactly what we have in the JTable) in a CSV file • For this file, save the headers also.

Slide 21

Slide 21 text

jgs Fall 2021 | 00000001 Plot Data • Create a Chart using the attendance data per student. • X-axis Dates • Y-axis Number of students that were present that day. • The tricky part is DO NOT USE ANY Library other than Java Swing and Java AWT.

Slide 22

Slide 22 text

jgs Fall 2021 | 00000001 Plot Data • Create a Chart using the attendance data per student. • X-axis Dates • Y-axis Number of students that were present that day. • The tricky part is DO NOT USE ANY Library other than Java Swing and Java AWT. Paint with Swing https://stackoverflow.com/questions/6118737/how-to-draw-in-jpanel-swing-graphics-java

Slide 23

Slide 23 text

jgs Fall 2021 | 00000001 Instructions § A project with Taiga working in a team § Be careful with academic integrity; several cases of plagiarism are been detected § ALL cases will be reported to the Dean’s Office, and a grade of zero will be given.

Slide 24

Slide 24 text

jgs Fall 2021 | 00000001 Instructions § User Stories in Taiga (Backlogs) § Sprint(s) § Tasks and their responsible (Taskboard) § Daily report (Burndown Chart) § Source Code § JavaDoc (Classes and Methods) § UML Class Diagram (Recommended but not mandatory). If you create one, include it in your submission.

Slide 25

Slide 25 text

jgs Fall 2021 | 00000001 Platform § We should be able to compile and run your project from the console. § Do not use packages. § Give a meaningful name to your class containing the main() method > javac *.java > java App

Slide 26

Slide 26 text

jgs Fall 2021 | 00000001 Questions

Slide 27

Slide 27 text

jgs CSE 563 Software Requirements and Specification Javier Gonzalez-Sanchez, Ph.D. [email protected] Fall 2021 Copyright. These slides can only be used as study material for the class CSE563 at ASU. They cannot be distributed or used for another purpose.