Adatbazisra épülő statisztikai feladat java nyelven

Adatbazisra épülő statisztikai feladat java nyelven
2022-04-17T19:25:26+02:00
2022-04-22T19:19:52+02:00
2022-12-07T01:35:37+01:00
AdamJosef
Egy adatbázis adatainak statisztikai feladatát szeretném megoldani:
A feladat:
Statisztika osztályban konzolos feladatként egy adatbázist (books) kell betölteni könyvek és kölcsönzési adatokkal (books), majd eljárásokat kell készíteni kölcsönzési statisztikákra, amelyek
1. megadja az 500 oldalnál hosszabb könyvek számát.
2. eldönti, hogy szerepel-e az adatok között 1950-nél régebbi könyv.
3. kiírja  leghosszabb könyvet
4. kiírja ki a legtöbb könyvvel rendelkező szerzőt
5. bekér a konzolról egy könyv címet, és meghatározza, hogy hányszor lett kikölcsönözve az adott könyv. 
Az eddig elkészült kód:
Az adatbázis és hozzá kapcsolódó osztályok:

Konyv osztaly, id, title, author, publish_year, page_count adatagokkal, konstruktorral, getter-rel és override metódussal:

public class Konyv {
private int id;
private String title;
private String author;
private int publish_year;
private int page_count;

public Konyv(int id, String title, String author, int publish_year, int page_count){
this.id = id;
this.title = title;
this.author = author;
this.publish_year = publish_year;
this.page_count = page_count;
}

@Override
public String toString() {
return "Könyv adatbázis{" +
"id=" + id +
", cím:'" + title + ''' +
", szerző='" + author+ ''' +
", kiadás éve=" + publish_year +''' +
", oldal szám=" + page_count +''' +'}';
}

public int getId() {return id;}
public String getTitle() {return title;}
public String getAuthor() {return author;}
public int getPublish_year() {
return publish_year;}
public int getPage_count() {return page_count;}
}

Kolcvsonzes osztály id, book_id, start_date és end_date adat tagokkal, konstruktorral, getter és override metódussal:

public class Kolcsonzes {
private int id;
private int book_id;
private Date start_date;
private Date end_date;

public Kolcsonzes(int id, int book_id, Date start_date, Date end_date) {
this.id = id;
this.book_id = book_id;
this.start_date = start_date;
this.end_date = end_date;
}

@Override
public String toString() {
return "Könyv adatbázis{" +
"id=" + id +
", book_id:'" + book_id + ''' +
", start date=" + start_date + ''' +
", end date=" + end_date + ''' +'}';
}

public int getId() {return id;}
public int getBook_id() {return book_id;}
public Date getStart_date() {return start_date;}
public Date getEnd_date() {return end_date;}
}

A statisztikai feladathoz listát készítettem és feltöltöttem azokat:

public class Statisztika {
Connection conn;

public Statisztika() throws SQLException, ClassNotFoundException {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/books", "root", "");}

public ArrayList<Konyv> ListaFeltolt() throws SQLException, ClassNotFoundException {
ArrayList<Konyv> lista = new ArrayList<>();
Statement stmt = conn.createStatement();
String sql = "SELECT * FROM books;";
ResultSet result = stmt.executeQuery(sql);
while (result.next()) {
int id = result.getInt("id");
String title = result.getString("title");
String author = result.getString("author");
int publish_year = result.getInt("publish_year");
int page_count = result.getInt("page_count");

Konyv elem = new Konyv(id, title, author, publish_year, page_count);
lista.add(elem);}
return lista;
}

public ArrayList<Kolcsonzes> ListaFeltolt2() throws SQLException {
ArrayList<Kolcsonzes> lista = new ArrayList<>();
Statement stmt = conn.createStatement();
String sql = "SELECT * FROM rental;";
ResultSet result = stmt.executeQuery(sql);
while (result.next()) {
int id = result.getInt("id");
int book_id = result.getInt("book_id");
Date start_date = result.getDate("start_date");
Date end_date = result.getDate("end_date");

Kolcsonzes kelem = new Kolcsonzes(id, book_id, start_date, end_date);
lista.add(kelem);}
return lista;
}

public int rekordHozzaadasa(Konyv pr) throws SQLException {
String sql = "INSERT INTO books(titla, author, publish_year, page_count) VALUES (?,?,?,?)";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, pr.getTitle());
stmt.setString(2, pr.getAuthor());
stmt.setInt(3, pr.getPublish_year());
stmt.setInt(4, pr.getPage_count());

return stmt.executeUpdate();
}
}

//  mysql-connector bemásol+ jobb kloik add as library
Mutasd a teljes hozzászólást!

  • A statisztika main-ben:

    import java.util.ArrayList;
    import java.util.Date;
    import java.util.Scanner;

    public class Main {

    public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    try {
    Statisztika db = new Statisztika();

    int i =0;
    int j =0;
    int h =0;
    int eq =0;
    int darab =0;
    int k =0;
    int max =0;
    int max2 =0;
    int kolcsonzesszama =0;
    String title="";
    String szerzo="";
    int kiadas = 0;
    int oldal=0;
    String legtobbetSzerzo="";
    String konyv="Quo Animi Quia Eveniet Aut";

    String van="";
    ArrayList<String> szerzok = new ArrayList();


    ArrayList<Konyv> lista = ((Statisztika) db).ListaFeltolt();
    ArrayList<Kolcsonzes> listakolcsonzes = ((Statisztika) db).ListaFeltolt2();
    ArrayList<String> authors = new ArrayList<>();
    ArrayList<Integer> authorsdb = new ArrayList<>();
    for (Konyv e : lista) {
    //System.out.println(e.getAuthor());
    if(!authors.contains(e.getAuthor())){authors.add(e.getAuthor());}

    i++;
    if (e.getPage_count()>500){j++;
    }

    if (e.getPage_count()>max){max =e.getPage_count(); title = e.getTitle(); szerzo = e.getAuthor(); kiadas = e.getPublish_year(); oldal = e.getPage_count();
    }
    if(e.getPublish_year()<1950){;k++;if(k>0){van = "Van ilyen könyv";}} else{van = "Nincs ilyen könyv";}
    if(e.getTitle().equals(konyv)){;eq=e.getId();
    for (Kolcsonzes v:listakolcsonzes) {if (eq ==v.getBook_id()){kolcsonzesszama++;}

    }
    }


    }
    for (String a : authors) {
    for (Konyv e : lista) {
    if(e.getAuthor().equals(a)){darab++;}
    }
    authorsdb.add(darab);
    darab =0;
    //System.out.println(a);
    }
    for (int z : authorsdb) {
    if (z>max2){max2 =z;}
    legtobbetSzerzo = authors.get(z);
    }
    System.out.print("Adjon meg egy könyv címet:");
    String konyv2 = sc.nextLine();

    System.out.println("500 oldalnál hosszabb könyvek száma: "+j+"\nA leghosszabb könyv: \n\t" +
    "Szerző: "+szerzo+"\n\tCím: "+title+"\n\tKiadás éve: "+kiadas+"\n\tOldalszám: "+oldal+"\n"
    +"A legtöbb könyvvel rendelkező szerző: "+legtobbetSzerzo+"\nAdjon meg egy könyv címet: "+konyv2+". A(z) megadott könyv "+kolcsonzesszama+"x lett kikölcsönözve");
    /*
    PeldaRekord r = new PeldaRekord(0, "Kovács József", Date.valueOf("1800-01-01"), 11, "Zöld");
    db.rekordHozzaadasa(r);

    db.rekordTorlese(6);


    lista.clear();
    lista = db.ListaFeltolt();
    for (CegadatRekord e : lista) {
    System.out.println(e);
    }*/

    } catch (Exception e) {
    System.out.println(e);
    }
    }
    }
    Mutasd a teljes hozzászólást!
  • Statisztika Main-ben:

    package com.company;
    // bemásol mysql-connector + jobb kloik add as library
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.time.Year;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.Scanner;
     
    public class Main {
     
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            try {
                Statisztika db = new Statisztika();
                int i =0;
                int j =0;
                int eq;
                int darab =0;
                int k =0;
                int max =0;
                int max2 =0;
                int kolcsonzesszama =0;
                String title="";
                String szerzo="";
                int kiadas = 0;
                int oldal=0;
                String legtobbetSzerzo="";
                String konyv="Quo Animi Quia Eveniet Aut";
                String van="";
     
                ArrayList<Konyv> lista = ((Statisztika) db).ListaFeltolt();
                ArrayList<Kolcsonzes> listakolcsonzes = ((Statisztika) db).ListaFeltolt2();
                ArrayList<String> authors = new ArrayList<>();
                ArrayList<Integer> authorsdb = new ArrayList<>();
                for (Konyv e : lista) {
                    //System.out.println(e.getAuthor());
                    if(!authors.contains(e.getAuthor())){authors.add(e.getAuthor());}
                    i++;
                    if (e.getPage_count()>500){j++;}
                    if (e.getPage_count()>max){max =e.getPage_count(); title = e.getTitle();
                        szerzo = e.getAuthor(); kiadas = e.getPublish_year(); oldal = e.getPage_count();}
                    if(e.getPublish_year()<1950){;k++;if(k>0){van = "Van ilyen könyv";}} else{van = "Nincs ilyen könyv";}
                    if(e.getTitle().equals(konyv)){;eq=e.getId();
                        for (Kolcsonzes v:listakolcsonzes) {if (eq ==v.getBook_id()){kolcsonzesszama++;}}
                    }
                }
                for (String a : authors) {
                    for (Konyv e : lista) {
                        if(e.getAuthor().equals(a)){darab++;}
                    }
                    authorsdb.add(darab);
                    darab =0;
                    //System.out.println(a);
                }
                for (int z : authorsdb) {
                    if (z>max2){max2 =z;}
                    legtobbetSzerzo = authors.get(z);
                }
                System.out.print("Adjon meg egy könyv címet:");
                String konyv2 = sc.nextLine();
                System.out.println("500 oldalnál hosszabb könyvek száma: "+j+"\nA leghosszabb könyv: \n\t" +
                        "Szerző: "+szerzo+"\n\tCím: "+title+"\n\tKiadás éve: "+kiadas+"\n\tOldalszám: "+oldal+"\n"
                +"A legtöbb könyvvel rendelkező szerző: "+legtobbetSzerzo+"\nAdjon meg egy könyv címet: "+konyv2+". A(z) megadott könyv "+kolcsonzesszama+"x lett kikölcsönözve");
    /*
                PeldaRekord r = new PeldaRekord(0, "Kovács József", Date.valueOf("1800-01-01"), 11, "Zöld");
                db.rekordHozzaadasa(r);
                db.rekordTorlese(6);
                lista.clear();
                lista = db.ListaFeltolt();
                for (CegadatRekord e : lista) {
                    System.out.println(e);
                }
    */
     
            } catch (Exception e) {
                System.out.println(e);
            }
        }
    }
    Mutasd a teljes hozzászólást!
  • Mi a kérdés?
    Mutasd a teljes hozzászólást!
  • Mi a válasz?
    Mutasd a teljes hozzászólást!
  • Nem hiszem, hogy kiderül valaha is...
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd