Back

Slang Dictionary

A Java UI application made with Swing, to view and query a slang dictionary for the course of Introduction to Java. With a few (maybe too much) bells and whistles to make it truly my own.

javagradle

Links

Media

Main

Main screen

Creation

Create screen

View

View screen

Quiz Start

Quiz screen

Quiz

Quiz screen

Takeaways

Main takeaways of this project are:

  • Ability to establish, manage, and work in a team. (This doesn’t work since he changed it to a solo project instead with how few students there are)
  • Ability to analyze and write technical documentation for an application.
  • Ability to understand and use basic native Java data structures.
  • Ability to write basic syntax in Java.
  • Ability to utilize Java IO.
  • Ability to utilize Java Collections.
  • Ability to manage and handle Exceptions.
  • Ability to manage a project structure.
  • Ability to analyze the given prompt.
  • Ability to separate the given required tasks into smaller actions, and finding the appropriate Java classes to implement.
  • Ability to work with an IDE. Recommendations: IntellIJ IDEA, Eclipse, NetBeans.

Description

This project focuses more on IO, OOP, Generics and Collections.

Required Tasks

  • Must utilize Java IO, OOP, and Collections. The application can use Console, Swing or Java FX.
  • Must have a menu to pick an option, regardless of UI choices.
  • Must load data from files into objects.
  • Must have a search time under 1s for 100.000 words, even though the provided default file doesn’t have that many.
  • Must save the current data after modifications.
  • Must use a version control system, with at least 10 commits spread across multiple days.

Features

Required Features

  • Find by the word.
  • Find by the definition.
  • View search history.
  • Add a new word. Notify if duplicated, and allow overwriting or adding new.
  • Edit a word.
  • Delete a word, with confirmation.
  • Reset back to default list.
  • Randomly select a word and display it as the “Word of the Day”.
  • Quiz Feature

All Features

Databases

This application uses multiple databases, so you can effectively have multiple types of dictionaries, maybe one for English slangs, one for German slangs and one for Russian slangs. Only one database is loaded and viewed at one time to prevent loading too many entries into the memory, as the entire dictionary loads in memory.

FeatureNameAction
file.openOpen DatabaseOpen an existing database, usually under the name <uuid>.dict.
file.newCreate DatabaseCreate a new database bound to a file, with options to bootstrap the database with default values, like the 7,000 slang words dictionary or the randomly generated 100,000 entries dictionary for testing.
file.closeClose DatabaseClose the database after asking if the user wants to save any changes.
file.reloadReload DatabaseDrop all changes and reload the database from the file, if it still exists.
file.saveSave DatabaseSave all changes done to the currently opened database.
file.bombBomb DatabaseNuke all entries on the database. To save this change, use the file.save feature.
file.resetReset DatabaseReset the database back into default entries.
file.renameRename DatabaseRename the database, but the file name shouldn’t be changed.

Editing

This section provides actions to manipulate the dictionary.

FeatureNameAction
edit.addAdd a wordAppends a new entry into the dictionary.
edit.editEdit a wordEdits an entry’s word or definition.
edit.starFavorite a wordMarks a word as favorite and prevents its deletion. You can mark multiple at once.
edit.unstarUnfavorite a wordUnmarks a word from faovirte and allows its deletion. You can unmark multiple at once.
edit.lockLock a wordLocks a word and prevents it from edits. You can lock multiple at once.
edit.unlockUnlock a wordUnlocks a word and allows it to be edited. You can unlock multiple at once.
edit.removeRemove a wordDeletes a word from the dictionary.

Searching

This application provides multiple ways to customize your searches.

FeatureNameAction
search.sortSort FavoritesAbility to sort favorite words to top, to bottom, hidden, only show favorites or in an ordinary order with other words.
search.instantInstant SearchAbility to search as you type using Swing Workers.
search.matchMatch SearchesAbility to pick whether the search should match against words or definitions, or casings or uses the search text as a regex.
search.randomRandom WordSee the word of the day, and ability to request a new word. Ability to see a certain message if there is nothing within the database.
search.historyView Search HistoryYou can see what words were queried, how many results returned, how much time elapsed and when that query happened.

Quiz

The quiz is formatted in a way, so that your goal would be to go for the highest score possible. Score is affected by your Combo Stack, which goes up by how many answers you get correct in a row. The higher your combo goes, the higher your multiplier scales. But be aware, one wrong answer will collapse your multiplier back to 1x.

There are partners, acting as lifelines, you can choose up to 4, each having a unique one-time use ability that may help planning to max out your score gain:

  • Noah: Grants immunity to damage and combo break for 10s.
  • Mio: Converts 30% of damage taken into score.
  • Eunie: Heals 20% of your max HP.
  • Taion: Grants immunity to damage from incorrect answers for the next 3 incorrect answers.
  • Sena: The next score change is multiplied by 4.
  • Lanz: Reduces all damage taken, but also score gains.
  • Matthew: Increases combo multiplier by 1.5x.
  • A: Heals 5% of your max HP and grants immunity to damage for 10s. (She originally was going to grant immunity to damage, heal and slow down time for that period, but that seems too difficult to do)
  • Nikol: Reduces all damage taken greatly, but combo multiplier no longer stacks.
  • Glimmer: Heals 10% of your max HP, and grants a multiplier on the next 3 questions.
  • Rex: The next score change is multiplied by 10.
  • Shulk: Heal 10% of your HP once you take fatal damage.

Submission Criteria

  • The submission is archived.
  • Grade yourself, based on max score 100. Each required feature is worth 10. If the feature is slow, (over 1s), that feature gets -5. If the UI is unusable and difficult to see, then that feature takes a -3. Of course, unimplemented or errors is a 0. (He was dumb, there were 9 requireds, but he numbered them 1 to 8, and then 10)
  • Use other collections, other than List.
  • More than 10 commits
  • Plagiarism is a full 0 on the course.
  • Referencing is OK and needs notes.
  • Publish a YouTube video demonstrating and all features.
  • Archive file includes source, built jar, default data files, commit image and a .txt file for self-grading.