0% found this document useful (0 votes)
3 views

gui and database

oop

Uploaded by

Sara Feresebhat
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views

gui and database

oop

Uploaded by

Sara Feresebhat
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 5

import javax.swing.

*;

import java.awt.*;

import java.awt.event.*;

import java.sql.*;

public class QuizAppGUI extends JFrame {

private CardLayout cardLayout;

private JPanel mainPanel;

public QuizAppGUI() {

setTitle("Quiz Application");

setSize(600, 400);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setLocationRelativeTo(null);

cardLayout = new CardLayout();

mainPanel = new JPanel(cardLayout);

// Add panels

mainPanel.add(new LoginPanel(this), "LoginPanel");

mainPanel.add(new RegistrationPanel(this), "RegistrationPanel");

mainPanel.add(new DashboardPanel(this), "DashboardPanel");

add(mainPanel);

cardLayout.show(mainPanel, "LoginPanel");

}
public void switchPanel(String panelName) {

cardLayout.show(mainPanel, panelName);

public static void main(String[] args) {

SwingUtilities.invokeLater(() -> {

new QuizAppGUI().setVisible(true);

});

class LoginPanel extends JPanel {

public LoginPanel(QuizAppGUI parent) {

setLayout(new GridLayout(3, 1));

add(new JLabel("Login"));

add(new JTextField("Enter username"));

add(new JButton("Login"));

JButton registerBtn = new JButton("Register");

registerBtn.addActionListener(e ->
parent.switchPanel("RegistrationPanel"));

add(registerBtn);

class RegistrationPanel extends JPanel {

public RegistrationPanel(QuizAppGUI parent) {


setLayout(new GridLayout(3, 1));

add(new JLabel("Register"));

add(new JTextField("Enter email"));

add(new JTextField("Enter username"));

JButton registerBtn = new JButton("Register");

registerBtn.addActionListener(e -> parent.switchPanel("LoginPanel"));

add(registerBtn);

class DashboardPanel extends JPanel {

public DashboardPanel(QuizAppGUI parent) {

setLayout(new GridLayout(3, 1));

add(new JLabel("Dashboard"));

add(new JButton("Start Quiz"));

add(new JButton("Create Quiz"));

JButton logoutBtn = new JButton("Logout");

logoutBtn.addActionListener(e -> parent.switchPanel("LoginPanel"));

add(logoutBtn);

public class DatabaseHelper {

private static final String DB_URL = "jdbc:sqlite:quiz_app.db";

public static Connection connect() {

try {
return DriverManager.getConnection(DB_URL);

} catch (SQLException e) {

e.printStackTrace();

return null;

public static void initializeDatabase() {

try (Connection conn = connect();

Statement stmt = conn.createStatement()) {

String userTable = """

CREATE TABLE IF NOT EXISTS Users (

userID TEXT PRIMARY KEY,

username TEXT NOT NULL,

email TEXT NOT NULL,

role TEXT CHECK(role IN ('QuizTaker', 'QuizGiver')) NOT NULL

);

""";

String quizTable = """

CREATE TABLE IF NOT EXISTS Quizzes (

quizID INTEGER PRIMARY KEY AUTOINCREMENT,

creatorID TEXT NOT NULL,

quizName TEXT NOT NULL,

FOREIGN KEY (creatorID) REFERENCES Users(userID)

);

""";
String resultsTable = """

CREATE TABLE IF NOT EXISTS QuizResults (

resultID INTEGER PRIMARY KEY AUTOINCREMENT,

userID TEXT NOT NULL,

quizID INTEGER NOT NULL,

score INTEGER NOT NULL,

FOREIGN KEY (userID) REFERENCES Users(userID),

FOREIGN KEY (quizID) REFERENCES Quizzes(quizID)

);

""";

stmt.execute(userTable);

stmt.execute(quizTable);

stmt.execute(resultsTable);

} catch (SQLException e) {

e.printStackTrace();

You might also like