Skip to content

vrinhae/sea-creatures

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fishipedia 🐠

A colorful desktop application for cataloging and managing marine life data, built with Java Swing and SQLite.

Overview

Fishipedia (Sea Creature Encyclopedia) is an interactive database application that allows users to store, search, and manage information about various sea creatures with a vibrant, ocean-themed interface. Developed as part of the Foundations of Project Design course at the University of San Francisco (Spring 2025).

Features

  • Custom Ocean-Themed GUI: Vibrant color scheme with custom styling and intuitive layout
  • Real-Time Search: Instantly search creatures by name, scientific name, or family as you type
  • Advanced Sorting: Sort by name (A-Z/Z-A), scientific name, family, or conservation status (high-low/low-high)
  • CRUD Operations: Add, view, and delete sea creatures with form validation
  • Multiple Selection: Select and delete multiple creatures at once
  • Conservation Status Tracking: Track IUCN conservation status from Extinct to Least Concern
  • Custom Linked List Implementation: Built using a custom MyLinkedList data structure
  • Data Persistence: SQLite database ensures all data is saved between sessions with explicit save functionality
  • Input Validation: Robust error handling prevents incomplete entries
  • Custom Cell Renderers: Beautiful custom rendering for list items, dropdowns, and separators

Technologies Used

  • Java - Core application logic and OOP principles
  • Java Swing - GUI framework with custom components and renderers
  • SQLite - Local database for data persistence via JDBC
  • JDBC - Database connectivity
  • Custom Data Structures - Implemented custom MyLinkedList for creature management
  • GroupLayout & GridBagLayout - Advanced layout managers for responsive UI

Installation

Prerequisites

  • Java Development Kit (JDK) 8 or higher
  • SQLite (included with application)

Setup

  1. Clone the repository
git clone https://github.com/yourusername/sea-creature-encyclopedia.git
  1. Navigate to the project directory
cd sea-creature-encyclopedia
  1. Compile and run the application
javac Main.java
java Main

Usage

  1. Adding a Creature: Click "add sea creature!" and fill in:
    • Common name
    • Scientific name
    • Family
    • Conservation status (dropdown with categories from Extinct to Least Concern)
  2. Searching: Type in the search bar to filter creatures in real-time by name, scientific name, or family
  3. Sorting: Select a sort option from the dropdown and click "sort" to organize your list
  4. Deleting: Select one or multiple creatures from the list and click "delete" (includes confirmation dialog)
  5. Clearing: Click "clear" to reset search and deselect all creatures
  6. Saving: Click "save" to persist all changes to the database

Database Schema

The application uses a SQLite database (marine.db) located in src/main/resources/ with the following structure:

CREATE TABLE SeaCreature (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    Name TEXT NOT NULL,
    SciName TEXT NOT NULL,
    Family TEXT NOT NULL,
    Status TEXT NOT NULL
);

Conservation status values include: Extinct, Critically Endangered, Endangered, Vulnerable, Near Threatened, Least Concern, and Data Deficient.

Project Structure

sea-creatures/
├── src/
│   └── main/
│       ├── java/
│       │   └── edu/usfca/cs112/project2/sea_creatures/
│       │       ├── App.java                      # Main entry point
│       │       ├── GUI.java                      # Main application window and UI components
│       │       ├── SeaCreature.java              # Sea creature data model
│       │       ├── SeaCreatureList.java          # Database operations and list management
│       │       ├── MyLinkedList.java             # Custom linked list implementation
│       │       ├── MyLinkedListIterator.java     # Iterator for custom linked list
│       │       ├── Node.java                     # Node class for linked list
│       │       ├── ConservationStatus.java       # Enum for IUCN status categories
│       │       ├── NameComparatorZA.java         # Sort by name Z-A
│       │       ├── SciComparatorAZ.java          # Sort by scientific name A-Z
│       │       ├── SciComparatorZA.java          # Sort by scientific name Z-A
│       │       ├── FamilyComparatorAZ.java       # Sort by family A-Z
│       │       ├── FamilyComparatorZA.java       # Sort by family Z-A
│       │       ├── HighPriorityComparator.java   # Sort by status high-low
│       │       └── LowPriorityComparator.java    # Sort by status low-high
│       └── resources/
│           └── marine.db                         # SQLite database file
└── README.md

Key Technical Features

  • Custom UI Components: Implemented custom ListCellRenderer classes for sea creatures, sort options, and status dropdowns
  • Event-Driven Architecture: Utilized ActionListeners, KeyListeners, and ListSelectionListeners for responsive UI
  • Data Structure Implementation: Built and utilized a custom MyLinkedList class with sorting capabilities
  • MVC Pattern Elements: Separated data model (SeaCreature), view (GUI), and data management (SeaCreatureList)
  • Error Handling: Comprehensive exception handling with user-friendly error messages
  • Custom Styling: Cohesive ocean-themed color scheme with custom borders, fonts, and visual elements

Screenshots

Main Interface

Screenshot 2025-10-14 025217

Main interface showing the creature list, search bar, sorting options, and ocean-themed UI

Add Creature Dialog

Screenshot 2025-10-14 024927

Input form for adding new sea creatures with validation

  • Image upload capability for each creature
  • Export data to CSV/JSON
  • Advanced filtering by multiple attributes
  • Integration with marine biology APIs for additional data

Contributing

This is a class project, but feedback and suggestions are welcome!

License

This project was created for educational purposes as part of coursework at the University of San Francisco.

Author

Valarie Trinh

Acknowledgments

  • University of San Francisco - Foundations of Project Design Course

Built with ☕ and 🌊 at USF

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages