-
Notifications
You must be signed in to change notification settings - Fork 282
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[CS2113T-F11-2] CEGMods #51
base: master
Are you sure you want to change the base?
Changes from 74 commits
b517c48
9a3170e
6dec1fa
9bc1ad5
5fbdef0
b6ddb74
cceab1d
dea4918
4cbf80b
b61361c
f152f0a
eae8800
f98ec1d
0c5475e
2e1f413
e452ada
21266b1
fd560b0
ce438ff
3d267a3
ba885b4
11e4b28
6486d2d
540f63d
8e72854
b365fef
8083838
a345e00
8cc3dfd
b1ef34e
67dc23e
8b1e491
981ad7a
96adc8f
6d7b7bb
ae84284
87cf32e
4c78a51
ba60195
8ea3c4a
ea5ffbe
1ffc276
9cf945d
96b5245
bb9e7dd
be7a286
ea47da6
a902c49
095cb4a
ef0f198
4ba83f2
b5cc93b
9327a74
bb59df9
f251884
482343d
d16030a
06cfd06
bbf4566
f619519
48a0f05
d32af4e
43e9304
7ef8c40
955a605
a48aea6
79f3700
0d53564
e69739e
3c65f80
9b48c5f
9ef9f91
6c0e96e
0b62403
5ff8d35
7ab05b9
971b66d
1df04a9
c063cd8
12d12d1
41ccb19
68f7524
c920679
a8e9baa
2981cb5
53702f2
acd6fad
693197d
311ce9a
96db777
6a76761
1d8b840
b5e30a2
dc5fde8
44f67b6
dadff1f
ec77b48
b9c5b07
2c60b43
e93012b
5070b5a
7802055
5fe8bc9
a8a54e7
4c82b14
2fc01d5
4743e7a
fc074f4
340de88
29b887e
9341a9b
12bd532
edd8a0e
b443145
34997e5
c7c8d87
51cdfcb
73aff55
8a11176
2d61a56
ed89a59
3f41c63
8c3cfaa
9e5c23a
71de78c
f34e428
a527b2f
7146008
1ebc63c
cef1fea
7f5ae47
3f16ef0
e5e169a
68eb833
2c7727e
9fcc7d9
a8b2466
ba8c87d
69f1c4e
dc78605
228fb1b
c908c87
4535a17
b550583
f818a6d
d56eabe
dd024b8
a62f78c
8d6e32e
c7a2fc5
47a571d
4022ce9
930c4b7
39419e8
cf2b4eb
9ab95ce
e644971
b1a6c29
e4b02c2
3d01fff
0b5aa87
0cde1a1
e8aa1ff
0d4e3fc
177bc06
d0710e2
666e949
dd23e9c
141a177
82b7b52
f315435
6df36ac
00af317
594c41e
37f69dc
9fca5d1
4d5b741
82d0c04
fb5b28f
701b4e2
801648c
2026aa1
ab22de0
2e45d6b
ce479ad
7e9a78e
224e560
379f434
273f616
5d33988
251c211
cce268b
43f4bed
29c97d9
3c61709
f23f223
66ee552
6c6515a
1453c0a
f3d9764
0b4a251
53ac028
0deae09
8951702
49d6de3
563f8cd
fa4e894
8407027
b70abfe
b09b5ed
5028307
af69429
9114bf8
571a746
2e5fd4e
c094e8d
c46c58f
78b342e
a41e100
7e53df4
85e06c4
2332f9d
e123906
b2ca9f0
b2e363f
c5a65e4
1ff8101
04937e5
67adff1
5d97791
37cbbe1
735b6f3
b176ec3
4db3e70
07e4957
f038ed1
5b03e75
9aeb0d1
2e27610
7d3a26e
679c5f7
dbd36cc
b6ed8f9
00505ff
351fc19
7949ffe
33126a8
6cd2a0d
f17eab6
f8449fa
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
name: basic gradle tests | ||
|
||
on: [push, pull_request] | ||
|
||
jobs: | ||
build: | ||
strategy: | ||
matrix: | ||
platform: [ubuntu-latest, macos-latest, windows-latest] | ||
runs-on: ${{ matrix.platform }} | ||
|
||
steps: | ||
- name: Set up repository | ||
uses: actions/checkout@master | ||
|
||
- name: Set up repository | ||
uses: actions/checkout@master | ||
with: | ||
ref: master | ||
|
||
- name: Merge to master | ||
run: git checkout --progress --force ${{ github.sha }} | ||
|
||
- name: Validate Gradle Wrapper | ||
uses: gradle/wrapper-validation-action@v1 | ||
|
||
- name: Setup JDK 11 | ||
uses: actions/setup-java@v1 | ||
with: | ||
java-version: '11' | ||
java-package: jdk+fx | ||
|
||
- name: Build and check with Gradle | ||
run: ./gradlew check |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
T | 0 | lab report | ||
D | 0 | assignment | Sunday | ||
D | 0 | assignment | hahaha |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,34 +1,173 @@ | ||
# Developer Guide | ||
|
||
## Design & implementation | ||
# Developer Guide | ||
## Table of content | ||
### [1. Introduction](#1-Introduction1) | ||
#### [1.1 Software Overview](#11-Software-Overview1) | ||
#### [1.2 Purpose](#12-Purpose1) | ||
#### [1.3 Scope](#13-Scope1) | ||
### [2. Setting up and getting started](#2-Setting-up-and-getting-started1) | ||
### [3. Design](#3-Design1) | ||
#### [3.1 Architecture](#31-Architecture1) | ||
#### [3.2 Classes](#32-Classes1) | ||
##### [3.2.1 Ui class](#321-Ui-class1) | ||
##### [3.2.2 Parser class](#322-Parser-class1) | ||
##### [3.2.3 Module class](#323-Module-class1) | ||
##### [3.2.4 Task class](#324-Task-class1) | ||
##### [3.2.5 TimeTable class](#325-TimeTable-class1) | ||
### [4. Implementation](#4-Implementation1) | ||
### [5. Testing](#5-Testing1) | ||
### [6. Appendix: Requirements](#6-Appendix-Requirements1) | ||
#### [6.1 Product scope](#61-Product-scope1) | ||
#### [6.1.1 Target user profile](#611-Target-user-profile1) | ||
#### [6.1.2 Value proposition](#612-Value-proposition1) | ||
#### [6.2 User stories](#62-User-stories1) | ||
|
||
{Describe the design and implementation of the product. Use UML diagrams and short code snippets where applicable.} | ||
|
||
|
||
## Product scope | ||
### Target user profile | ||
## 1. Introduction | ||
### 1.1 Software Overview | ||
CEGMods is a command line (CLI) application that helps computer engineering (CEG) students to manage their modules, tasks and projects. | ||
|
||
{Describe the target user profile} | ||
CEGMods will allow students to categorize their tasks based on their modules and automatically help prioritize them by deadlines. It will also help students manage project deadlines by splitting them into mini-milestones. | ||
### 1.2 Purpose | ||
This document describes the architecture and software design of CEGMods. The goal of this document is to cover the high-level system architecture and design. | ||
|
||
### Value proposition | ||
The document is divided into three main parts: design, implementation and documantation. The design includes the architecture diagram and the introduction of each class. The implementation describes some details on how certain features are implemented. The documentation details the logging, testing and configuration of CEGMods. It also includes the requirement and the instructions for manual testing in the appendices. | ||
### 1.3 Scope | ||
The intended audience of this document is the developers, designers, and software testers of CEGMods. | ||
|
||
{Describe the value proposition: what problem does it solve?} | ||
## 2. Setting up and getting started | ||
Setting up the project in your computer | ||
> <font color=#FF5733>Caution: </font> <font color=#00000><font color=#00000> **Please follow each steps in the guide carefully.** </font> | ||
|
||
## User Stories | ||
#### Before you start: | ||
Please ensure you have Java 11 installed in you computer. | ||
|
||
|Version| As a ... | I want to ... | So that I can ...| | ||
|--------|----------|---------------|------------------| | ||
|v1.0|new user|see usage instructions|refer to them when I forget how to use the application| | ||
|v2.0|user|find a to-do item by name|locate a to-do without having to go through the entire list| | ||
1. Fork this repo from this [link](https://github.com/AY2021S1-CS2113T-F11-2/tp.git) | ||
2. Clone the fork to your own computer. You are highly recommended to use Git tool (like Sourcetree) to track your work. | ||
3. Use your own IDEA to program. You are highly recommended to use IntelliJ IDEA. Please check whether you have correct JDK version (JDK 11) in your computer and congiure the JDK. | ||
|
||
## Non-Functional Requirements | ||
If you are using IntelliJ IDEA: | ||
- Open IntelliJ | ||
- Set up JDK 11 for Gradle | ||
1. Click `Configure` -> `Project Defaults` -> `Project Structure` | ||
2. Click `New...` and set it to the directory of the JDK 11 installed | ||
4. Import the project as a Gradle project. | ||
> <font color=#FF5733>Note: </font> <font color=#00000> It is different from importing a normal Java project.</font> | ||
|
||
{Give non-functional requirements} | ||
If you are using IntelliJ IDEA: | ||
- Click `Import Project` (or `Open or Import` in newer version of Intellij). | ||
- Locate the `build.gradle` file (not the root folder as you would do in a normal importing) and select it. Click `OK`. | ||
- Click `OK` to accept the default settings but do ensure that the selected version of `Gradle JVM` matches the JDK being used for the project. | ||
- Wait for importing process to complete | ||
5. Do the testing. Please follow the testing guide | ||
|
||
## 3. Design | ||
### 3.1 Architecture | ||
The ***Architecture diagram*** given below shows the major components, and explains the structure of the software system. | ||
[![Architecture diagram](https://iili.io/3Ei2Vf.md.png)](https://freeimage.host/i/3Ei2Vf) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Perhaps there should be a Command class handling the operations like print, add and delete, instead handled by Parser class? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Storage class is missing from the architecture diagram, or the app data not stored? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Perhaps could combine Timetable, Module and Task into a data model component? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
|
||
## Glossary | ||
### 3.2 Classes | ||
|
||
* *glossary item* - Definition | ||
The CEGMods consists of six classes: | ||
* `Main` | ||
* `Ui` | ||
* `Parser` | ||
* `Module` | ||
* `Task` | ||
* `TimeTable` | ||
|
||
#### 3.2.1 Ui class | ||
The Ui class reads the uses's input and response relevant messages. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Perhaps you may want to elaborate how the ui works with the parser module over here. The explanation could perhaps be improved by elaborating on the relation between the ui and the parser |
||
#### 3.2.2 Parser class | ||
The `Parser` class deals with making sense of the user's command and execute the command relevantly: | ||
- add new `Module` into `Timetable`. | ||
- delte `Module` from `Timetable`. | ||
- add new `Task` into tasklist. | ||
- delete `Task` from tasklist. | ||
- print out `Timetable` of a certain day or one week. | ||
|
||
#### 3.2.3 Module class | ||
The Module class contains the information of a module, including the title, description, and time slots of lectures, tutorials and labs. | ||
#### 3.2.4 Task class | ||
The `Task` class contains the information of a task, including the todo, event and deadline tasks. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Perhaps you may wanna add some UML diagrams for illustrating the module class and the task class components. This may assist you in explaining what these components contain |
||
|
||
#### 3.2.5 TimeTable class | ||
The `Timetable` class shows the timetable for all the module slots and tasks. It also stores `Module` details in an arraylist and checks whether there is a time conflict between two classes. | ||
|
||
|
||
## 4. Implementation | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Can add a few more UML diagram for Design and Implementation. |
||
This section provides details on the implementations of certain features. | ||
|
||
### Feature: Add a module | ||
|
||
The user type in command in `module mod/<MODULE_CODE> lec/<LECTURE_DAY> <LECTURE_TIME> tut/<TUTORIAL_DAY> <TUTORIAL_TIME> lab/<LAB_DAY> <LAB_TIME>` this form to add a module into the timetable. The time slot of lab is optional. The program will detect whether the user command is in this form, and store module data in arraylist `modules` in `Timetable` class after Ui passing command and calling `addModule()` in Parser class. | ||
|
||
The ***sequence diagram*** below shows the interaction between these classes when the user adds a module. | ||
[![3GRaM7.md.png](https://iili.io/3GRaM7.md.png)](https://freeimage.host/i/3GRaM7) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Consider reaplacing the input from user to ui with the actual input, instead of "add a module". There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think the diagram is pretty simple. It helps to show step by step how a module is added. So far no violation of any UML notations. |
||
|
||
### Feature: Delete a module | ||
The user enters the command: `delete m/<MODULE_CODE>` to delete a module in the timetable. The `Parser` class will make sense of the command and enable the `deleteModule()` method in the `TimeTable` class. | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If possible, perhaps adding a diagram for explaining how a module is deleted would be good? I think the diagram that you can use here can be similar to that used for the add module diagram |
||
|
||
## 5. Testing | ||
- Running tests | ||
- Types of tests | ||
|
||
Running tests | ||
- | ||
There are two ways to run tests. | ||
|
||
- **Method 1: Using IntelliJ JUnit test runner** | ||
- To run all tests, you can click `src` -> `test`, right-click on the `java` folder and choose `Run 'Tests in 'tp.test''` | ||
- To run a subset of tests, you can click `src` -> `test` -> `java` and right-click on a test package, test class, or a test and choose `Run 'ABC'` | ||
- **Method 2: Using Gradle** | ||
- Click `Terminal` to open a new console and type in the command `gradlew clean test` to run a test (Mac/Linux: ./gradlew clean test) | ||
|
||
Types of tests | ||
- | ||
This project has three types of tests: ... | ||
|
||
## 6. Appendix: Requirements | ||
### 6.1 Product scope | ||
#### 6.1.1 Target user profile | ||
This application is intended for users who | ||
- are NUS Computer Engineering Students | ||
- have a large variety of lesson (lab, tutorial, lecture, webcast) and commitment types (CCA, external commitments) | ||
- have a certain type of homework based on standard formats (pre-lecture/ post-lecture/ pre-tutorial/ post-tutorial/ pre-lab/ post-lab) | ||
- have various projects ongoing at the same time (individual, team, for technical modules and non-technical modules) | ||
- are reasonably comfortable using CLI apps | ||
#### 6.1.2 Value proposition | ||
- Manages Tasks based on: | ||
- the module: eg. CS2113T, CG2271, CS2101 (can be colour-coded according to modules) | ||
- tasks unrelated to modules can be placed under “others” | ||
- the deadline of the task: eg.pre-lecture/ post-lecture/ pre-tutorial/ post-tutorial/ pre-lab/ post-lab | ||
- urgency: a chronological list of what is due the earliest | ||
- the amount of time taken for the task: range of 30min-3hours | ||
- Manages Schedule based on: | ||
- NUSMods schedule, ie. modules | ||
- Webcast option, ie. can be shifted around | ||
- Team meetings (regular scheduled and ad hoc) | ||
- Manages Project based on: | ||
- Deadlines of subtasks (subclass of task but for projects) | ||
- Percentage of completion | ||
### 6.2 User stories | ||
|
||
| Priority level| As a/an | I want to | so that I can | ||
| -------- | -------- | -------- |-------- | | ||
| must-have | new user | add my modules |I can categorise my tasks and schedule | ||
|must-have | new user|add my lecture slots|I can plan my timetable | ||
|must-have|new user|add tutorial slots|I can plan my timetable | ||
|must-have|user|add lab slots|I can plan my timetable | ||
|must-have|user|view my timetable |I can go about my day following the planned timetable | ||
|nict-to-have|user|view my project progress|I can manage my project | ||
|must-have|user|add subtasks of project |I can divide whole project in various subtasks and record them | ||
|nice-to-have|user|create daily or weekly to-do list |I can view all the tasks to be completed | ||
|must-have|user|add deadline to tasks(assignment, tutorials)|I can know when to complete | ||
|must-have|user|prioritize tasks in to-do list by urgency level|I can plan what to do first | ||
|must-have|user|mark tasks as done or delete them| | ||
|nice-to-have|user|add alarm to remind the upcoming event|I won't forget or miss relevant events | ||
|nice-to-have|user|add periodic zoom links for online lectures/tutorials|I can join the zoom session quickly before the class | ||
|nice-to-have|user|share project schedule and details with teammates|I can cooperate with my teammate better | ||
|
||
## Instructions for manual testing | ||
|
||
{Give instructions on how to do a manual product testing e.g., how to load sample data to be used for testing} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
theme: jekyll-theme-cayman |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
# Zhang Shenjia - Project Portfolio Page | ||
|
||
## Overview | ||
|
||
|
||
### Summary of Contributions |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Caution and Note are not displaying properly.