CS .
506- Web Design and development
Assignment No. 2 Solution
Semester; Spring 2024
Id; Bc180404611
[Link]
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/[Link] to change this license
public class Runner {
static void clear() {
throw new UnsupportedOperationException("Not supported yet. 't); // Generated from
nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
private int id;
private String
name; private
double time;
public Runner() {
public Runner(int id, String name, double time)
{ [Link] = id; [Link] = name; [Link] =
time;
public Runner(String name, double time)
{ [Link] = name; [Link] = time;
public int getld() {
return id;
public voidsetld(int Mpjunaid id)
[Link] = id;
public String getName()
{ return name;
public void setName(String name)
{ [Link] = name;
public double getTime() {
return time;
public void setTime(double time)
{ [Link] = time;
[Link]:
package cs506•
import [Link].*• import j
[Link]; import
[Link]; import j
[Link]; public
class Dbl-lelper {
private Connection connect() { //
UCanAccess connection string
String url= "jdbc:ucanaccess://assests/BC230401111 . ccdb'
Connection conn = null;
// Load the UCanACCess JDBC dri
[Link]("[Link]");
// Establish connection
conn = DriverManager.getConnect10n url
} catch (ClassNotFoundException I SQLException e)
{
[Link]();
[Link](null, "Connection to database failed: " + [Link]());
return conn;
public boolean insertRunner(String name, double time) { string sql
"INSERT INTO runners(name, time) VALUES(?
try (Connection conn [Link]();
PreparedStatement pstmt = [Link](sql))
{ pstmt. setString(l , name); [Link](2, time);
[Link](); return true•
} catch (SQLException e) {
[Link]();
[Link](null, "Inserting runner failed: + [Link]()); return
false•
public List<Runner> getAllRunners() { string sql "SELECT id, name, time
FROM runners ORDER BY name" , List<Runner> runners = new
ArrayList<>();
try (Connection conn [Link]();
Statement stmt = [Link]();
ResultSet rs = stmt. executeQuery(sql)) {
while ([Link]()) {
Runner runner = new Runner([Link]("id"), [Link]("name"), [Link]("time"));
[Link](runner);
} catch (SQLException e) {
[Link]();
[Link](null, "Fetching runners failed: + [Link]()); return
runners;
try (Connection conn = [Link]();
Statement stmt = [Link]()) { stmt. execute(sql);
} catch (SQLException e
[Link]();
[Link](null, "Deleting all runners failed: " + [Link]());
public List<Runner> getTopThreeRunners() {
string sql = "SELECT id, name, time FROM runners ORDER BY time ASC LIMIT 3";
List<Runner> runners = new ArrayList<>();
try (Connection conn = [Link]();
Statement stmt = [Link]();
ResultSet rs = [Link](sql)) {
while ([Link]()) {
Runner runner = new Runner([Link]("id"), [Link]("name"), [Link]("time"));
[Link](runner);
} catch (SQLException e) {
[Link]();
[Link](null, "Fetching top three runners failed: + [Link]()); return
runners;
[Link]:
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/[Link] to change this
license * Click nbfs://nbhost/SystemFileSystem/Templates/GUIForms/[Link] to edit this
template package cs506•
import j [Link]. [Link]; import j
ava. awt. [Link]; import [Link];
import j avax. [Link]; import
[Link]; public class
MainClass extends [Link] {
public MainClass()
{ initComponents();
dbHe1per = new
DbHe1per()•,
// Add WindowListener to handle window closing event
[Link] newAVindowAdapter() {,z
@Override public void
windowClosing(WindowEvent e)
{ showDeveloperInfo();
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always regenerated by
the Form Editor.
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPanell = new [Link](); jPane12
new [Link](); jPane13 = new
[Link](); jLabe12 = new j
[Link](); jPane14 new
[Link](); jLabe13 = new
[Link](); loadDataBtn = new
[Link](); deleteDataBtn = new
[Link](); viewWinnerBtn =- new
[Link](); jPane15 = new
[Link](); jPane16 new
[Link](); jLabell = new
[Link](); jPane17 = new
[Link](); nameLabel = new
[Link](); nameTxt = new
[Link](); timeTxt = new
[Link](); timeLabel = new
[Link](); addRunnerBtn = new
[Link](); jPane18 = new
[Link](); dataLabel = new javax.
[Link](); jPane19 = new
[Link](); j ScrollPanel = new
[Link](); j Tablel = new
[Link]();
j [Link] jPane13Layout = new [Link](jPane13)•
[Link](jPane13Layout);itipp: -r [Link]( j Panel3
[Link](j [Link]) .addComponent(jLabe12, j avax.
[Link], [Link] SIZE,
[Link] SIZE [Link] VALUE) [Link](
jPane13 [Link](j avax. swing. [Link])
.addGroup([Link]()
.addComponent(jLabe12, [Link] SIZE, 262
[Link] SIZE) .addGap(O, O, [Link] VALUE))
[Link]([Link](new [Link](0, 0, 0)));
UI", 1, 18)); // NOII 8N
[Link](new UI", 1, 18)); // NOII 8N loadDataBtn.
[Link](new [Link]()
{ public void actionPerformed(j [Link] evt)
{ loadDataBtnActionPerformed(evt);
[Link](new UI", 1, 18)); // NOII 8N
[Link]("Delete Data");
[Link](new [Link]() {
public void actionPerformed([Link] evt)
{ deleteDataBtnActionPerformed(evt);
[Link](new [Link]("Segoe UI" l, 18)); // NOII 8N
[Link]("View Winner");
[Link](new [Link]() {
public void actionPerformed(j [Link] evt)
{ viewWinnerBtnActionPerformed(evt);
[Link](jPane14Layout); [Link]( j
PaneÍ[Link](j avax. swing. [Link])
.addGroup([Link]() .addGap(30,
.addGroup([Link]([Link],
false) .addComponent(viewWinnerBtn, [Link] SIZE
[Link] SIZE, [Link] VALUE)
SIZE
[Link] SIZE, [Link] VALUE)
SIZE
[Link] SIZE, [Link] VALUE)
. addGroup(j avax. [Link], j [Link]
SequentialGroup() .addGap(16, 16, 16)
SIZE, 104
[Link] SIZE))
.addContainerGap([Link] SIZE [Link] VALUE))
[Link]( j [Link](j
[Link])
.addGroup([Link]()
.addContainerGap()
.addComponent(jLabe13)
.addPreferredGap(j avax. [Link])
.addComponent(loadDataBtn)
.addGap(18, 18, 18)
.addComponent(deleteDataBtn)
.addGap(18, 18, 18)
.addComponent(viewWinnerBtn)
.addContainerGap(117, [Link] VALUE))
j [Link] jPane12Layout = new [Link](jPane12);
[Link](jPane12Layout); [Link]( j
[Link](j avax. swing. [Link])
.addGroup([Link]()
[Link])
SIZE [Link] SIZE, [Link] VALUE)
SIZE
[Link] SIZE, [Link] VALUE)) .addContainerGap()) y, j
[Link]( j [Link](j avax. swing.
[Link])
.addGroup([Link]()
SIZE [Link] SIZE, [Link] SIZE)
.addPreferredGap(j
[Link])
SIZE
[Link] SIZE, [Link] VALUE)
.addContainerGap())v
[Link]([Link](new [Link](0, 0, 0)));
[Link](new UI", 1, 36)); // NOII 8N jLabell
.setText("Welcome to ABC Marathon");
j [Link] jPane16Layout = new [Link](jPane16);
[Link](jPane16Layout); [Link]( j
[Link] IGroup(j avax. swing.
[Link])
.addGroup([Link]()
.addGap(207, 207, 207)
.addComponent(jLabel l)
.addContainerGap([Link] SIZE, [Link] VALUE))
[Link]( j [Link](j avax. swing.
[Link])
.addGroup([Link]()
.addContainerGap()
.addComponent(jLabell)
.addContainerGap(18, [Link] VALUE))
jPane17 [Link](0, 0, 0)));
[Link](new UI", 1, 14)); // N0118N [Link]("Name");
[Link](new UI", 1, 14)); // NOII 8N
[Link]("Time");
UI", 1, 18)); // N0118N
[Link](new [Link]()
{ public void actionPerformed([Link] evt)
{ addRunnerBtnActionPerformed(evt);
j [Link] jPane17Layout = new j [Link](jPane17);
[Link](jPane17Layout);
[Link]( [Link]([Link].G
r upL t.A e E ING
.addGroup([Link]()
.addGap(51, 51, 51)
. addGroup(j avax. [Link], j Panel7Layout. create S equentialGroup()
.addGap(18, 18, 18)
.addComponent(timeTxt))
.addGroup([Link]()
SIZE 61
[Link] SIZE)
.addGap(18, 18, 18)
.addComponent(nameTxt, [Link] SIZE, 746
[Link] SIZED)
.addContainerGap(48, [Link] VALUE))
.addGroup(j avax. swing. [Link], j Panel7Layout. create SequentialGroup()
.addContainerGap([Link] SIZE [Link] VALUE)
SIZE 135
[Link] SIZE) .addGap(385, 385, 385))
[Link]( j [Link] IGroup(j avax. swing.
[Link])
.addGroup([Link]()
.addGap(17, 17, 17)
[Link])
.addComponent(nameLabel)
SIZE 31
[Link] SIZE))
.addPreferredGap(j avax. [Link])
[Link])
.addComponent(timeLabel)
SIZE 31
[Link] SIZE))
.addGap(18, 18, 18)
.addComponent(addRunnerBtn)
.addContainerGap([Link] SIZE, [Link] VALUE))
[Link]([Link](new [Link](0, 0, 0)));
[Link](new UI", 3, 18)); // NOII 8N
j [Link] jPane18Layout = new [Link](jPane18);
[Link](jPane18Layout); [Link]( jPanel
[Link](j avax. swing. [Link])
.addGroup(j avax. swing. [Link], j Pane18Layout. create SequentialGroup()
.addContainerGap([Link] SIZE, [Link] VALUE)
.addComponent(dataLabe1, [Link] SIZE,
194 [Link] SIZE 32
[Link]( [Link]([Link].
[Link]. EADING)
.addComponent(dataLabe1, [Link] SIZE, 24, [Link] VALUE)
y,
[Link]([Link](new [Link](0, 0, 0)));
j Table I . setModel(new j avax. [Link] DefaultTableModel(
new Object {
new String [] {
"No", "Name", "Time"
j ScrollPane I . setViewportView(j Table I ) ;
j [Link] jPane19Layout = new [Link](jPane19);
[Link](jPane19Layout);
[Link]( [Link](j
[Link])
.addGroup([Link]()
.addContainerGap()
.addComponent(j ScrollPane l)
.addContainerGap()) y, [Link]( j
[Link](j avax. swing. [Link])
.addGroup([Link]()
.addContainerGap()
.addComponent(jScr011Pane1, [Link] SIZE, 293, [Link] VALUE))
j [Link] jPane15Layout = new [Link](jPane15);
[Link](jPane15Layout);
[Link]( [Link](j
[Link])
.addGroup([Link]()
.addContainerGap()
.addGroup([Link](j
[Link])
SIZE [Link]
SIZE, [Link] VALUE)
. addComponent(jPane19 , j avax. [Link]
[Link] SIZE, [Link] SIZE [Link] VALUE)
[Link] SIZE, [Link]
SIZE) .addGap(O, [Link] VALUE
y, [Link]( [Link](j
[Link])
.addGroup([Link]() .addContainerGa
p()
SIZE
[Link] SIZE, [Link] SIZE)
.addPreferredGap([Link])
SIZE
[Link] SIZE, [Link] SIZE)
.addPreferredGap([Link])
SIZE
[Link] SIZE, [Link] SIZE)
.addPreferredGap(j [Link])
SIZE
[Link] SIZE, [Link] SIZE)
.addContainerGap([Link] SIZE, [Link] VALUE))
y,
j [Link] jPanel I Layout = new j [Link](jPanel I );
j Panel I .setLayout(jPanel I Layout); j Panel I Layout. setHorizontalGroup( j Panel I
[Link](j avax. swing. [Link])
.addGroup([Link]() .addContainerGap(
)
SIZE
[Link] SIZE, [Link] SIZE)
.addPreferredGap([Link])
SIZE
[Link] SIZE, [Link] VALUE))
j Panel I Layout. setVerticalGroup( j Panel I [Link] IGroup(j avax. swing.
[Link])
SIZE
[Link] SIZE, [Link] VALUE)
.addGroup(jPanel I Layout. create SequentialGroup()
SIZE
[Link] SIZE, [Link] SIZE)
.addGap(O, O, [Link] VALUE))
y,
j [Link] layout = new [Link]
getContentPane().setLayout(layout layout. setHorizontalGroup( layout.
createParallelGroup(javax.
[Link] .addGroup([Link]
Group()
SIZÊ
[Link] SIZE, [Link] SIZE)
.addGap(O, O, [Link] VALUE))
y, [Link]( layout.
createParallelGroup([Link]) .addGroup(la
[Link]() .addContainerGap()
SIZE
[Link] SIZE,
[Link] SIZE) .addContainerGap(130,
[Link] VALUE))
pack();
setLocationRelativeTo(null); }
// </editor-fold>
private void loadDataBtnActionPerformed([Link] evt)
{ List<Runner> runners = [Link]();
updateTable(runners); [Link]("All Runners");
private void deleteDataBtnActionPerformed([Link] evt) {
// Delete all data from the database int confirm = [Link](null, "Do you want to
remove all runners' data from database?"
"Confirm Delete", [Link] NO OPTION); if
(confirm [Link] OPTION) {
// User confirmed deletion
[Link]();
updateTable(null); // Clear the
table [Link]("Data
Deleted");
} else {
// User cancelled deletion
[Link]("Deletion Cancelled");
private void viewWinnerBtnActionPerformed([Link] evt) {
// Find the top three runners
List<Runner> runners = [Link](); if ([Link]())
{ [Link]("No runners available"); return; else {
StringBuilder message = new StringBuilder("Top Three Winners:\n"); for (int i = 0; i <
[Link](); i++NApp:
Runner runner = [Link](i);
[Link](i + l).append( .
.append([Link]()).append(" with time ") .append([Link]()).append("\
n");
[Link](this, [Link]());
// Update or load data into a JTable
DefaultTab1eM0de1 model new DefaultTab1eM0de1()•,
[Link](new String[] {"ID", "Name", "Time"});
for (int i = 0; i < [Link](); i++) { Runner runner = [Link](i);
[Link](new Object[] {i + l, [Link](), [Link]()});
updateTable(runners);
// Show developer information after user clicks "OK"
private void showDeveloperInfo()
{ string student1D = "03074960034"
String studentName = "M junaid Qazi"
// Custom message with thanks and developer info
String message = "Thanks for using ABC Marathon!\n\nDeveloped By:" + studentName + " + studentID +
// Display developer information in a message dialog
[Link](this, message,
"Developer Info", JOptionPane.1NFORMATION MESSAGE);
private void [Link] evt) {
// Add a new runner to the database String name =
[Link](); double time; try { time =
[Link]([Link]());
} catch (NumberFormatException e) {
return•
return;
boolean success = [Link](name, time);
if (success) {
List<Runner> runners =
[Link](); updateTable(runners);
[Link](""); [Link]("");
[Link]("Runner Added");
} else { [Link]("Failed to add
runner");
private void updateTable(List<Runner> runners) {
DefaultTab1eM0de1 model = (DefaultTab1eM0de1) jTab1e 1.getM0de1();
[Link](0); // Clear the existing rows
if (runners != null) { for (Runner runner : runners) { [Link](new Object[]
{[Link](), [Link](), [Link]()});
@param args the command line arguments
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see [Link]
try { for ([Link] info :
[Link]()) { if ("Nimbus" .equals([Link]())) { j
[Link]. break;
} catch (ClassNotFoundException ex)
{ [Link]([Link]()).log([Link], null,
ex); } catch (InstantiationException ex)
{ [Link]([Link]()).log([Link], null,
ex); } catch (IllegalAccessException ex)
{ [Link]([Link]()).log([Link], null,
ex); } catch ([Link] ex)
[Link]([Link]()).log([Link], null, ex);
/* Create and display the form */
[Link](new Runnable()
{ public void run() { new
MainClass().setVisible(true);
// Variables declaration - do not modify
private javax. [Link] addRunnerBtn;
private [Link] dataLabel; private
[Link] deleteDataBtn; private j
avax. [Link] j Labell • private j
[Link] jLabe12; private j avax.
[Link] j Labe13 • private j avax.
[Link] jPanel I • private j avax.
[Link] jPane12 ; private j avax.
[Link] jPane13 ; private j avax.
[Link] jPane14; private j avax.
[Link] j Pane15 ; private j avax.
[Link] jPane16; private
[Link] jPane17; private j avax.
[Link] jPane18; private j avax.
[Link] jPane19 ; private j avax.
[Link] j ScrollPane I • private j
avax. [Link] j Table I • private javax.
[Link] loadDataBtn; private
[Link] nameLabel; private
[Link] nameTxt; private
[Link] timeLabel; private
[Link] timeTxt; private
[Link] viewWinnerBtn; // End
of variables declaration
Name Time Anus 100 goshi 110 Junaid
220 kala 18.0 Muhammad 110
Qazi 11.0