0 Comments

 

PROBLEM STATEMENT:

You are tasked with writing a simple GUI that loads App Store information from a local MySql server using the JDBC driver and is able to filter it by rating.

GRADING DETAILS:

  • 80% Code quality/Correct usage of programming concepts
    • 25% Correct usage of JDBC MySQL Driver
    • 25% Correct usage of GUI/JavaFX
    • 15% Correct usage of OOP
    • 15% Supporting code and logic (control structures, logic, etc.)
  • Program runs/correct results (10%)
  • Formatting/Indentation (10%)

REQUIREMENTS:

The apps can be filtered by a minimum rating of 2, 3, or 4. The user can also view allapps (clearing the filter).

The app data should be loaded into memory using a class that will store each app’s relevant information.

ATTACHED FILES:

A SQL script has been attached to the assignment to build the required database. Well all I have to say is you need mySQL to complete assignment. on top of java 

Instructions

ITN 261: App Store – Databases, JavaFX

Problem statement:

You are tasked with writing a simple GUI that loads App Store information from a local MySql server using the JDBC driver and is able to filter it by rating.

Grading details:

80% Code quality/Correct usage of programming concepts

25% Correct usage of JDBC MySQL Driver

25% Correct usage of GUI/JavaFX

15% Correct usage of OOP

15% Supporting code and logic (control structures, logic, etc.)

Program runs/correct results (10%)

Formatting/Indentation (10%)

Requirements:

The apps can be filtered by a minimum rating of 2, 3, or 4. The user can also view allapps (clearing the filter).

The app data should be loaded into memory using a class that will store each app’s relevant information.

Attached Files:

A SQL script has been attached to the assignment to build the required database.

Sample output:

Google App Viewer

4 App{appName='Photo

3 App{appName='Speedtest by Ookla', rating=4.3}

2 App(appName='The Vitamin Shoppe', rating=4.8}

All Apps App(appName='Amazon Flex', rating=4.7}

App(appName='Wells Fargo Mobile', rating=4.8}

App(appName='Tinder: Dating, Chat, & Friends, rating=4.0}

App{appName='Eat This Much – Meal Planner', rating=4.4}

App{appName='Best Buy', rating=4.9}

App(appName='Waze Navigation & Live Traffic', rating=4.8}

App(appName='Amazon Shopping', rating=4.8}

App{appName='CamScanner – PDF Scanner App, rating=4.9}

ApplappName= Snapchat, rating=4.6)

App(appName='Substack', rating=4.9}

App(appName= 'X', rating=4.6}

App{appName='Google', rating=4.1}

App{appName='Amazon Music: Songs & Podcasts', rating=4.7}

App(appName='Messenger', rating=4.0}

App(appName='AAA Mobile', rating=4.6}

App{appName='Instagram, rating=4.7}

App(appName='Chase Mobile: Bank & Invest', rating=4.8}

App(appName='Brightspace Pulse', rating=4.8}

App(appName='Gmail – Email by Google', rating=4.7}

App(appName='Xfinity', rating=4.4}

App(appName='Google Photos: Backup & Edit', rating=4.7}

App(appName='Webull: Investing & Trading', rating=4.7}

App(appName='Instacart-Get Grocery Delivery', rating=4.8}

App{appName='SHEIN – Shopping Online', rating=4.6}

App{appName="Youtube: Watch, Listen, Stream', rating=4.7)

Google App Viewer

4 App(appName='Shadow Fight 2', rating=4.6}

3 App(appName='Alto's Adventure', rating=4.6}

2 App{appName='DEER HUNTER 2018', rating=4.3}

All Apps App{appName='DRAGON BALL LEGENDS', rating=4.6}

App(appName='DEAD TARGET: FPS Zombie Apocalypse Survival Games', rating=4.5}

App(appName='Cover Fire: offline shooting games for free', rating=4.7}

App(appName='Anger of stick 5: zombie', rating=4.5}

App{appName='CATS: Crash Arena Turbo Stars', rating=4.7}

App(appName='Soul Knight', rating=4.7}

App(appName='Major Mayhem', rating=4.6}

App(appName='DINO HUNTER: DEADLY SHORES', rating=4.4}

App{appName='Strawberry Shortcake BerryRush', rating=4.3}

App{appName="Extreme Match', rating=4.5}

App(appName='Power Rangers Dino Charge', rating=4.3}

App(appName='Zombie Hunter: Post Apocalypse Survival Games', rating=4.4}

App{appName='Agar.io', rating=4.2}

App{appName='Zombie Hunter King', rating=4.3}

App(appName='Garena Free Fire', rating=4.5}

App(appName='Battlelands Royale', rating=4.4}

App{appName='Once Upon a Tower', rating=4.7}

App{appName='TEKKENâ„â', rating=4.2}

App(appName='diep.io', rating=4.1}

App(appName='Arrow.io', rating=4.5}

App(appName='BEYBLADE BURST app', rating=4.5}

App(appName='Dragon Hills', rating=4.5}

App(appName='Bus Rush: Subway Edition', rating=4.1}

import javafx.application.Application;

import javafx.collections.FXCollections;

import javafx.collections.ObservableList;

import javafx.geometry.Insets;

import javafx.scene.Scene;

import javafx.scene.control.*;

import javafx.scene.layout.VBox;

import javafx.stage.Stage;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

public class AppleAppStoreViewer extends Application {

public static class App {

private String appName;

private double rating;

public App(String appName, double rating) {

this.appName = appName;

this.rating = rating;

}

@Override

public String toString() {

return "App{appName='" + appName + "', rating=" + rating + '}';

}

}

public static class AppStore {

private ObservableList<App> apps;

public AppStore() {

this.apps = FXCollections.observableArrayList();

}

public ObservableList<App> getApps() {

return apps;

}

public void loadAppsFromDatabase(double minRating) {

// Connect to the database and fetch the apps based on the minimum rating

try (Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql", "root", "Leciaga01!")) {

String sql = "SELECT * FROM apps WHERE rating >= ?";

try (PreparedStatement preparedStatement = connection.prepareStatement(sql)) {

preparedStatement.setDouble(1, minRating);

try (ResultSet resultSet = preparedStatement.executeQuery()) {

while (resultSet.next()) {

String appName = resultSet.getString("appName");

double rating = resultSet.getDouble("rating");

App app = new App(appName, rating);

apps.add(app);

}

}

}

} catch (SQLException e) {

e.printStackTrace();

}

}

}

private AppStore appStore;

public static void main(String[] args) {

launch(args);

}

@Override

public void start(Stage primaryStage) {

appStore = new AppStore();

// Set up the GUI components

Label filterLabel = new Label("Filter by Rating:");

ChoiceBox<Double> ratingFilterChoiceBox = new ChoiceBox<>(FXCollections.observableArrayList(2.0, 3.0, 4.0));

ratingFilterChoiceBox.getItems().add(null); // Add option for viewing all apps

ratingFilterChoiceBox.setValue(null);

Button loadAppsButton = new Button("Load Apps");

TextArea appTextArea = new TextArea();

loadAppsButton.setOnAction(e -> {

Double minRating = ratingFilterChoiceBox.getValue();

appStore.getApps().clear(); // Clear existing apps

appStore.loadAppsFromDatabase(minRating);

appTextArea.setText(appStore.getApps().toString());

});

// Set up the layout

VBox layout = new VBox(10);

layout.setPadding(new Insets(10));

layout.getChildren().addAll(filterLabel, ratingFilterChoiceBox, loadAppsButton, appTextArea);

// Set up the scene

Scene scene = new Scene(layout, 400, 300);

// Set up the stage

primaryStage.setScene(scene);

primaryStage.setTitle("App Store Viewer");

primaryStage.show();

}

}

Order Solution Now

Categories: