-
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
[CS2113-T14-2] eCardnomics #39
base: master
Are you sure you want to change the base?
Changes from 250 commits
552d8b3
f864b45
ca17f2b
e7995f0
b1589d5
7cb8027
632852d
217e7a7
8be6150
4293095
38221c9
39c2e00
050cc1e
433adef
d79f978
db8a093
4d24af2
e5e4078
105585d
3481c10
15b5125
53d1b84
433a10b
155e07f
219aa46
2e190b3
16f66d9
dfd8296
2fa37f9
317717d
ac9e75b
b596fe3
1c93440
792c444
98d1f16
4129639
5b8d369
ee27946
6008254
6326f37
41c7413
7572c9d
3e72fab
6db2668
b49eaa3
d734b64
312a2c8
3b39fe9
08faecb
20db763
971ec52
46ec96d
b3f3641
d98022d
fb83d79
ed7c9b5
0f689ef
97903ae
74a3a04
f53e78b
df9b64a
725dd71
d3fefa9
64aceb2
7377c15
87c05fc
c051896
6ff570a
ced462e
f2b71b7
93a6d94
923c321
2c93fc4
9e4b5aa
bd26926
d26d793
8ef1042
cd9f57a
c024d68
45b5716
5115b3a
f477e18
d0e4726
ebc1d6e
cad1c77
593b3cc
3e334bf
e8972e9
0dd6740
dff6791
8ef1872
9d826f9
ed07128
a48f7da
1bf1430
8953ed9
35f6ee3
b6496d7
369d50e
97ac72a
323ec7f
ff535b6
9043007
18682ab
f2a6430
636b7bc
87c4b47
19d73cc
86485d1
6e9c470
f356d21
d49c93b
2d0707e
d01ab9b
3fac370
03525d5
b49f651
2d04903
0126acb
56e6393
0426e84
e5976f7
77f2ba3
82ec912
4dfe2d5
35057d3
b2577d1
64f0f19
de874d5
963257f
c67506e
870e394
dd6f819
c9bd172
8234a7b
0aa7fef
daf0e0b
5a81bfc
5fa55de
2241574
5dba136
75a439a
05e8402
4acdb17
07c02bf
3fc304c
894c0f8
9360ad4
c8c858a
45c3c4f
393e921
3e22ed8
7551b7b
aac644b
4281b0e
ea83b98
2c16f4b
a396fe7
57c745e
3854daa
8c9db70
0c95ae6
a96741a
58375c2
be126c8
ea8b81c
1974455
2609dda
b38b611
c6cc79c
86b578f
6ad8435
6f6f764
bbcc5a5
ef7dafc
5479c25
20a0905
50ba7d0
c050ed4
58556c5
520795f
1b123da
a1cab89
04934e6
8f10b02
93bd109
feae39c
106fdbd
48a5549
25d6cb5
95149db
8bae893
8671a2f
b423af5
861f6b7
c72ea5b
2d70802
fc760b6
48c6cf0
897f863
71cf17b
b1a8402
60c3ef0
7c66fd7
dc3b3b3
3370912
c564821
e85f5b3
6d2faa2
1964914
0e89e13
83d2322
a400f45
2bb16fc
ac964bb
14b1a76
9745d2b
36805c1
d4597a1
5cf44fa
d6ab7dc
db8e7bc
a3b03f5
b388f89
a28ab1c
dcca2af
c57d351
278c563
8e29b7d
ee764af
6974215
14334c2
84a79d5
ca79bb9
ed8a42a
41bccf5
01b27ef
23b3f01
0e60f53
23185be
c42be13
2641cd3
d2f258b
bafa094
4e65518
3e4ae0f
b6f37a3
c8ad9df
2fe00cc
e76fc64
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,43 @@ | ||
deck | 0 | ||
name | Micro-Economics | ||
tags | Economics | EC1301 | ||
size | 5 | ||
Q | What is the Law of demand? | ||
A | When the price of a good rises, the quantity of the good demanded will fall, ceteris paribus. | ||
Q | What is the Law of supply? | ||
A | When the price of a good increases, the quantity supplied increases, ceteris paribus. | ||
Q | What is price elasticity of demand? | ||
A | Percentage change in quantity demanded caused by a 1 percent change in price. | ||
Q | What is price elasticity of supply? | ||
A | Percentage change in quantity supplied caused by a 1 percent change in price. | ||
Q | What is Market Failure? | ||
A | Market failure is the economic situation defined by an inefficient distribution of goods and services in the free market. | ||
================================================================================ | ||
deck | 1 | ||
name | Macro-Economics | ||
tags | Economics | EC1301 | ||
size | 6 | ||
Q | What are ways GDP can be calculated? | ||
A | Three ways: Expenditure approach, Value-addedd approach and Factor payments approach. | ||
Q | What is the GDP formula using the Expenditure approach? | ||
A | GDP = C + I + G + NX | ||
Q | Define frictional unemployment. | ||
A | Unemployment related to time taken for people to find new jobs. | ||
Q | Define seasonal unemployment. | ||
A | Unemployment related to changes in weather, tourist patterns, or other seasonal factors. | ||
Q | Define structural unemployment. | ||
A | Unemployment related to skill mismatch between workers' skills and employers' requirements. | ||
Q | Define cyclical unemployment. | ||
A | Unemployment arising from changes in production over the business cycle. | ||
================================================================================ | ||
deck | 2 | ||
name | Object-oriented Programming | ||
tags | Computer Science | CS2113 | ||
size | 3 | ||
Q | What are the programming paradigms based on OODP? | ||
A | Abstraction, Polymorphism, Inheritence, Encapsulation | ||
Q | What are access modifiers? | ||
A | Access level modifiers determine whether other classes can use a particular field or invoke a particular method. | ||
Q | How do you represent for and while loops in a sequence diagram? | ||
A | Using the "loop" notation. | ||
================================================================================ |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,25 +1,277 @@ | ||
# Developer Guide | ||
|
||
## Design & implementation | ||
## Design | ||
|
||
{Describe the design and implementation of the product. Use UML diagrams and short code snippets where applicable.} | ||
### Application Architecture | ||
![Architecture](images-dg/Architecture.png) | ||
|
||
The **Architecture Diagram** given above explains the high-level design of the Flash Card Manager Application. | ||
|
||
`Main` is responsible for initializing the other components in the program and linking them up correctly. | ||
|
||
* `Ui` Takes in instructions from user and displays the output to the user | ||
* `Logic` Consists of the `Parsers` and the `Commands`. The `Parser` decipher the user input and executes the specific `Command` that affects the change the user wishes. | ||
* `Model` Holds the data that is in memory as the program runs. It consists of the 3 components: | ||
* `Flash Card` : A single question and answer pair. | ||
* `Deck` : A list of `Flash Card`s under a common topic. | ||
* `Deck List` : A complete list of all the `Deck`s in memory. | ||
* `Storage` Reads and writes data from and to a text file. | ||
|
||
#### How to **components** interact with one another | ||
![Sequence Diagram](images-dg/Sequence%20Diagram.png) | ||
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. 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. 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. 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 believe that you should add a cross at the end of the life for the NormalCommand object. Furthermore, I believe from your logic class diagram below, you state that the parser is the one that creates the Command object. I take this to mean you instantiate a new Command object. In this case, you should point the arrow of execute to the constructor of the NormalCommand object. 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. 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. 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. Hi maybe a short explanation can be given to help readers understand your sequence diagram better? |
||
The **Sequence Diagram** above shows how the components interact for a basic `create <deck name>` command where a new deck is created and added in to the `Deck List`. | ||
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. 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. |
||
|
||
### User Interface | ||
|
||
**API**: [seedu/ecardnomics/Ui.java](https://github.com/AY2021S1-CS2113-T14-2/tp/tree/master/src/main/java/seedu/ecardnomics/Ui.java) | ||
|
||
The UI contains String constants that represent the outputs | ||
that the application is defined to produce. | ||
|
||
The `UI` component has two main purposes: | ||
* Reading user input from the console. | ||
* Printing program output to the console. | ||
|
||
Reading of user input is done using the method `readUserInput()` | ||
which reads one line of user input. The other methods within `UI` are | ||
called when a specific output needs to be printed. | ||
|
||
The `UI` component passes the user input to the `NormalParser` and | ||
`DeckParser` components that will extract the relevant information. | ||
The `UI` component provides its printing methods to `NormalParser` | ||
and `DeckParser` for printing the appropriate output when required. | ||
|
||
### Logic | ||
#### Overall Logic | ||
![DG-Overall Logic UML](./images-dg/Logic-DG.png?raw=true "Overall Logic Diagram") | ||
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. 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. 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. 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. |
||
|
||
1. The overall logic component consists of the Parser class and Command class. | ||
2. The Parser parses the user input and creates the respective Command object. | ||
3. This command will be executed by the Main 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. You might have missed out bolding the classes here 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. As the names of the classes are in-line code, should there be back-ticks around them? |
||
4. The command execution then can affect the Model (e.g. creating a new deck) | ||
|
||
#### Commands | ||
|
||
![DG-Design Commands UML](./images-dg/DG-Design-Commands.png?raw=true "Commands UML Class Diagram") | ||
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. Maybe you would like to break this diagram into two parts, so that it is less complicated? 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. Changed, thanks! 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. 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. @zhixianteoh 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. Changed, thanks! 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. |
||
|
||
**API**: [seedu.ecardnomics/command](https://github.com/AY2021S1-CS2113-T14-2/tp/tree/master/src/main/java/seedu | ||
/ecardnomics/command) | ||
|
||
Commands are primarily classified into three categories, `NormalCommand`, `DeckCommand`, and `GameCommand`, | ||
corresponding to the application's Normal, Deck, and Game Modes, respectively. All three are abstract children | ||
derived from the overarching abstract class `Command`. The basis `Command` class is defined as such: | ||
|
||
```java | ||
public abstract class Command { | ||
public abstract void execute(); | ||
} | ||
``` | ||
|
||
It only requires that all derived children implement the `execute()` method. The only two classes not belonging to | ||
individual modes are `ExitCommand` and `VoidCommand`. The former is so that users can call the command `exit` from | ||
anywhere in the application, while the latter is a catch-all "command" for all erroneous commands a user enters. | ||
|
||
The `Parser` classes play important roles in execution of specific commands, e.g. `CreateCommand`, because | ||
they define methods that check and ensure the conformity of user input to the commands' expected input. Below is a | ||
sequence diagram showcasing this interaction, for execution of a `CreateCommand`, e.g. `create | ||
microeconomics`: | ||
|
||
![DG-Design CreateCommand Sequence UML](./images-dg/DG-Design-Sequence-Diagram.png?raw=true "CreateCommand UML | ||
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. 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. 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. Won't terminate CreateCommand here because this just shows the creation of CreateCommand, returning Although, I should include some textual description of the gist of what I am conveying here, thanks! |
||
Sequence Diagram") | ||
|
||
### Deck Model | ||
|
||
![DG-Design Model UML](./images-dg/DG-Design-Model.png?raw=true "Model UML Class Diagram") | ||
|
||
**API**: [seedu/ecardnomics/deck](https://github.com/AY2021S1-CS2113-T14-2/tp/tree/master/src/main/java/seedu/ecardnomics/deck) | ||
|
||
The Deck Model component is made up of three parts: | ||
* `DeckList` | ||
* `Deck` | ||
* `FlashCard` | ||
|
||
The `FlashCard` component represents a flashcard, storing question | ||
and answer data. The `Deck` represents a collection of flashcards | ||
related by a common topic. The `DeckList` represents the collection | ||
of all the `Deck` objects that the user has. | ||
|
||
Only the `Command` components can modify the `DeckList`, `Deck` and | ||
`FlashCard` components. However, `Ui`, `DeckParser` and `NormalParser` | ||
are able to read data from the `DeckList`, `Deck` and `FlashCard` | ||
components. | ||
|
||
### Storage | ||
|
||
#### Loading the deckList data | ||
|
||
![Storage Sequence Diagram](./images-dg/Storage.png?raw=true "load Storage sequence diagram") | ||
|
||
**API**: [seedu/ecardnomics/storage](https://github.com/AY2021S1-CS2113-T14-2/tp/blob/master/src/main/java/seedu/ecardnomics/storage) | ||
|
||
Storage of this application uses basic `.txt` read and write functions. | ||
Upon start of the program, the application checks whether there is a `./data` folder and creates one is there isn't. | ||
Then, it reads from the storage file `deckList.txt` line by line to create: | ||
* new `Deck` | ||
* new `FlashCard` | ||
|
||
and adds them to the current `deckList` passed into the `load` method call. | ||
|
||
#### Writing the deckList data | ||
|
||
Similarly, for writing the data into `.txt` file, the Storage will loop through all the current `Decks` and their | ||
current `FlashCards` and write them in a specific format in the text file in the `./data` folder. | ||
|
||
## Implementation - Features | ||
|
||
### Print to PowerPoint SlideShow | ||
|
||
An additional feature targeted at students who wish to use add more style to their flash cards outside of the command | ||
line option to allow keep things interesting when they are revising. | ||
|
||
The `PowerPointCommand` is parsed by `NormalParser` but the "Print to PowerPoint" command can be called from both Normal | ||
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. Should there be a return to PowerpointCommand after Powerpoint is created in the sequence diagram? I believe that the box to contain the "opt" is wrong, you may refer to the notes again, it should be a sharp box with a chip of the corner. 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. |
||
and Deck Mode. | ||
|
||
The following diagram shows how the `PowerPointCommand`'s `execute()` calls the `createNewPowerPoint()` method of `PowerPoint`. | ||
![PPTX Sequence Diagram](images-dg/DG-PPTX-Sequence-Diagram.png) | ||
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. 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. |
||
|
||
The `newIntroSlide()`, `newSlide()` and `exportSlide()` method of `PowerPoint` uses a third party library - Apache POI | ||
to create new slides, populate them with the questions and answers from the deck and finally print them out to a new PowerPoint | ||
file in the `pptx` folder under the name `<deck name>.pptx`. | ||
|
||
The following are the Classes/ Enum of the third part package `org.apache.poi.xslf.usermodel` which are used: | ||
* `SlideLayout` - Enum representing the Slide Layouts available | ||
* `XMLSlideShow` - Class representing an entire Slide Show | ||
* `XSLFSlide` - Class representing a single Slide | ||
* `XSLFSlideLayout` - Class representing the layout of a slide | ||
* `XSLFSlideMaster` - Class representing the default slides layouts | ||
* `XSLFTextShape` - Class representing a shape within a slide | ||
* `XSLFTextParagraph` - Class representing a paragraph of text within a shape | ||
* `XSLFTextRun` - Class representing the properties of the text within a paragraph | ||
|
||
### Pretty Printing (Wei Siew) | ||
|
||
The purpose of this feature is to improve the readability of the | ||
question and answer fields of a flashcard for the user. Without this | ||
feature, long question and answer fields will follow the default | ||
wrapping style of the console. When words are truncated unnecessarily, | ||
it is going to be distracting and annoying for students trying to | ||
study. We illustrate the problem in the following example: | ||
``` | ||
This is a long question (or maybe answer) field. Suppose tha | ||
t our console is 60 characters wide, we see that the word "t | ||
hat" was truncated in the first line and again in the second | ||
line. | ||
``` | ||
In this section, we define the following terms: | ||
* `lineLength` is the maximum number of characters on a line, | ||
set to be equal to Ui.DASH_LINES.length(). This is also the number of | ||
characters between the start of line and end of line. | ||
* `label` can be "Question: " or "Answer: " and is used to indicate | ||
whether a field is the question or answer of the flashcard. | ||
* `usableLength` is the number of characters that can be used for | ||
printing a field. This is also the number of characters between the end | ||
of `label` and end of line. | ||
|
||
The following sequence diagram illustrates the call to the | ||
`toString(boolean isQuestion, int offset)` method of a `FlashCard` | ||
object. | ||
|
||
![DG-Implementation-Features-PP-Sequence](./images-dg/PP-Sequence.png?raw=true) | ||
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. 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. |
||
|
||
The `offset` parameter specifies the number of characters already | ||
printed on the line before the flashcard field will be printed. | ||
The `offset` is used by the `formatResponse()` method to determine | ||
`usableLength`. | ||
|
||
`formatResponse()` places as many words as possible on each line until | ||
the next word does not fit within the `usableLength` of the current | ||
line. This word is therefore placed on the next line and the process | ||
repeats until all the words have been formatted into the response. If | ||
the length of a single word exceeds the `usableLength`, the word is | ||
split across multiple lines to prevent the program from looping | ||
infinitely as it would never be able to fit the word on any line. | ||
|
||
Take note that infinite loops can still occur if | ||
* formatResponse() is called with offset >= `lineLength` or | ||
* toString(boolean, int) is called with offset >= `lineLength` - length | ||
of `label` | ||
|
||
#### Design Consideration: | ||
|
||
In order to maximize `usableLength`, | ||
`toString(boolean isQuestion, int offset)` is designed to take | ||
parameter `offset` instead of hardcoding `offset` to be | ||
`"2147483647. ".length()` which is the maximum possible index when | ||
listing flashcards. As a result, flashcards with different number of | ||
digits in the index will be misaligned when listing flashcards. | ||
|
||
### Tags for grouping and searching decks | ||
The purpose of this feature is to provide a mean to group the decks based on their subjects | ||
and search for relevant decks related to one or more relevant subjects in a robust way. Each created deck will | ||
tagged to their respective field. | ||
|
||
![DG-Implementation-Features-TagArchitecture](./images-dg/TagFeature-UML.png?raw=true) | ||
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. |
||
|
||
The user can also modify to tags of the decks by using tag or untag command, and uses search by tag to find | ||
a group of decks he/she is interested in. | ||
|
||
![DG-Implementation-Features-TagSequence](./images-dg/Tag.png?raw=true) | ||
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. 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. 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 believe the idea we were trying to convey is that the user does not interact directly with the 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. 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. 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. 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. |
||
|
||
### Saving to text file (Wayne) | ||
|
||
### Game Mode | ||
|
||
eCardnomics' quintessential mode. Game Mode can be started from either Normal Mode or Deck Mode. The `start` command | ||
is parsed by `NormalParser` (see [Commands](#commands)). | ||
|
||
Game Mode contains two main components: a storage component, `GameStorage`, and a logic component, `GameEngine`. The | ||
former handles all data structures used by Game Mode, and stores the original deck (`originalDeck`), question pool | ||
(`deque`), and retest question pool (`retestStore`). The latter executes the main game loop (`runGameLoop()`), and | ||
interacts with `GameStorage` on package-private basis; i.e., `GameEngine` and `GameStorage` have full mutual | ||
access as if they were a single class. This is one of the main intentional design decisions. | ||
|
||
![DG-Implementation-Features-Game-Mode-Architecture](./images-dg/Game-Mode-Design.png?raw=true "Game Mode | ||
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. Maybe you would like to split up this digram into two parts, so that it is less complicated? 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. Changed, thanks! 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. 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. 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. It is actually not! Good catch! Changed, thanks! |
||
Architecture Diagram") | ||
|
||
**See also**: [Gameplay description](./UserGuide.md#gameplay) | ||
|
||
The actual "game" aspect of eCardnomics is essentially summarised in the `runGameLoop()` high-level overview above | ||
. For a textual gameplay description, check out the "See also" link. | ||
|
||
The following elaborates the execution flow of Game Mode, from after a `start` command has been parsed in Normal Mode: | ||
|
||
![DG-Implementation-Features-Game-Mode-Sequence](./images-dg/Game-Mode-Sequence.png?raw=true "Game Mode UML Sequence | ||
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. Maybe it would be better to simplify this diagram/ split them up into smaller parts, so that it would be easier to follow? 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. Changed with reference frames, thanks! 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. 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. Thanks for the input! Return arrows are not mandatory, so this was intentional. 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. Hi is objects like game:Game still kept in reference and used at the end? Can object deletion be used? 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. |
||
Diagram") | ||
|
||
**API**: [seedu/ecardnomics/game](https://github.com/AY2021S1-CS2113-T14-2/tp/tree/master/src/main/java/seedu/ecardnomics/game) | ||
|
||
## Product scope | ||
|
||
### Target user profile | ||
|
||
{Describe the target user profile} | ||
Junior College Economics Students. | ||
|
||
Anybody > Students > Students in courses with high amount of content > Economics students > **Junior College | ||
Economics students** (focus on theory than calculations) | ||
|
||
### Value proposition | ||
|
||
{Describe the value proposition: what problem does it solve?} | ||
Flashcard application that allows students to quickly create new flashcards and access flashcards quickly on the | ||
command line to enhance their studying experience, and ultimately be an aid for [active recall](https://getatomi.com/blog/what-is-active-recall-and-how-effective-is-it). | ||
|
||
## User Stories | ||
|
||
|Version| As a ... | I want to ... | So that I can ...| | ||
|Version| As a(n) ... | 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| | ||
|v1.0|poor student|have small computer programs|run it on my old computer| | ||
|v1.0|fast typist|have an easily-navigable interface to type up notes and store them|create and manage notes quickly and efficiently| | ||
|v1.0|smart student|be able to use the system effectively and efficiently|save time and maximise my productivity| | ||
|v1.0|JC econs student|quickly create short notes of key concepts|keep up during lectures and tutorials| | ||
|v1.0|tech-savvy student|have a software tool to store my notes|stop needing to worry about losing my hardcopy notes| | ||
|v1.0|lazy student|create flashcards to keep my notes concise|learn at a comfortable, incrementing pace| | ||
|v2.0|organised student|have my notes be stored in a systematic way|retrieve them quickly and easily| | ||
|v2.0|student|have a system that can categorise material into different topics|quickly revise all the content for a topic when studying for an exam| | ||
|v2.0|hardworking student|have a studying system that can help me memorise content in a non-traditional manner|remember all the facts during an exam through active recall| | ||
|
||
## Non-Functional Requirements | ||
|
||
|
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.
This part is a bit confusing? Perhaps you can elaborate more?
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.
@kaijiel24