Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import oracle.jdbc.pool.OracleDataSource;
- import java.sql.*;
- import java.awt.*;
- import java.awt.Container;
- import java.awt.Font;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.Color;
- import java.awt.Graphics;
- import java.text.DecimalFormat;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.*;
- import java.util.List;
- import java.util.Set;
- import java.util.TreeMap;
- import javax.swing.*;
- import javax.swing.JPanel;
- import javax.swing.JLabel;
- import javax.swing.JFrame;
- import java.util.Arrays;
- import javax.swing.JTextArea;
- import javax.swing.JScrollPane;
- class floz {
- public static void main(String[] args) {
- datenbank.gebieteholen();
- new Oberflaeche();
- }
- }
- class datenbank {
- public static Verbindung datenbankverbindung;
- private String gebietscode;
- private int jahr;
- private int[] altersgruppe;
- private static TreeMap<String, String> gebiete;
- public static TreeMap<String, String> gebieteholen() {
- if (gebiete == null) {
- gebiete = new TreeMap<String, String>();
- if (datenbankverbindung == null)
- datenbankverbindung = new Verbindung();
- if (datenbankverbindung == null)
- JOptionPane.showMessageDialog(null, "Es konnte keine Verbindung zur Datenbank hergestellt werden!");
- else {
- try {
- Connection conn = datenbankverbindung.getConnection();
- Statement stmt = conn.createStatement();
- ResultSet erg = stmt.executeQuery("select * from GEBIET");
- while (erg.next()) {
- gebiete.put(erg.getString(2), erg.getString(1));
- }
- erg.close();
- stmt.close();
- } catch (SQLException sqle) {
- System.out.println(sqle.toString());
- }
- }
- }
- return gebiete;
- }
- //GESAMTBEVÖLKERUNG
- public static Integer[] getBevoelkerung(String gebietscode, int zeitVon, int zeitBis, String sexkode) {
- int wahrheit = 0;
- String wer = "Gesamtsumme";
- int laenge = zeitBis - zeitVon + 1;
- Integer[] bevoelkerung = new Integer[laenge];
- boolean fehlerhaft = false;
- for (int i = 0; i < laenge; i++) {
- bevoelkerung[i] = getBevoelkerungJahr(gebietscode, zeitVon + i, sexkode);
- if (bevoelkerung[i] == 0)
- fehlerhaft = true;
- }
- if (fehlerhaft) {
- JOptionPane.showMessageDialog(null, "Für die folgende Altersgruppe sind keine Daten vorhanden: "+ wer +".");
- }
- return bevoelkerung;
- }
- private static int getBevoelkerungJahr(String gebietscode, int jahr, String sexkode) {
- int bevoelkerung = 0;
- if (datenbankverbindung == null)
- datenbankverbindung = new Verbindung();
- if (datenbankverbindung == null)
- JOptionPane.showMessageDialog(null, "Es konnte keine Verbindung zur Datenbank hergestellt werden!");
- else {
- try {
- Connection conn = datenbankverbindung.getConnection();
- Statement stmt = conn.createStatement();
- if (sexkode.equals("m+w")) {
- ResultSet erg = stmt.executeQuery("select * from BEVOELKERUNG where (GEBIET='" + gebietscode + "') AND (JAHR='" + jahr + "')");
- while(erg.next()) {
- bevoelkerung += erg.getInt(5);
- }
- erg.close();
- } else {
- ResultSet erg = stmt.executeQuery("select * from BEVOELKERUNG where (GEBIET='" + gebietscode + "') AND (JAHR='" + jahr + "') AND (GESCHLECHT='" + sexkode + "')");
- if (erg.next()) {
- bevoelkerung = erg.getInt(5);
- }
- erg.close();
- }
- stmt.close();
- } catch (SQLException sqle) {
- System.out.println(sqle.toString());
- }
- }
- return bevoelkerung;
- }
- }
- class Verbindung{
- private OracleDataSource ods;
- private Connection conn;
- public Verbindung()
- {
- try
- {
- ods = new OracleDataSource();
- ods.setURL("jdbc:oracle:thin:hr/hr@oracle2.ik.fh-hannover.de:1521/XE");
- conn = ods.getConnection("student","volksdaten");
- }
- catch (SQLException sqle) { System.out.println(sqle.toString()); }
- }
- public Connection getConnection() { return conn; }
- }
- class Oberflaeche extends JFrame implements ActionListener {
- private JComboBox gebieteDropdown;
- private JComboBox agegroupDropdown;
- private JSpinner eingabeZeitraumVon, eingabeZeitraumBis;
- private JLabel ueberschrift, labelGebiet, labelZeitraum, labelZeitraumVon, labelZeitraumBis, labelSex, labelaltersgruppe, labelAuswertung, labelProgrammer;
- private JRadioButton sexM, sexW, sexBeides, auswertungB, auswertungL, altersgruppeA, altersgruppeB, altersgruppeC, altersgruppeD, altersgruppeE, altersgruppeF, altersgruppeG, altersgruppeH, altersgruppeI, altersgruppeJ, altersgruppeK, altersgruppeL, altersgruppeM, altersgruppeN, altersgruppeO, altersgruppeP, altersgruppeQ, altersgruppeR, altersgruppeS, altersgruppeT;
- private JButton senden;
- private JTextArea Gebieteliste;
- private JScrollPane GebietelisteScroll;
- private JTextField GebietManuell;
- private Container contentPane;
- public Oberflaeche() {
- getContentPane().setLayout(null);
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- initWindow();
- setSize(625, 600);
- setTitle("Bevölkerungsdaten-Auswertungstool");
- setVisible(true);
- }
- private void initWindow() {
- int rahmenLinks = 10;
- int rahmenOben = 10;
- int gebietLabelBreite = 25;
- int gebietBreite = 75;
- int gebietPuffer = 30;
- labelGebiet = new JLabel("Auswahl des Gebietes");
- labelGebiet.setBounds(rahmenLinks, 10, 200, 25);
- GebietManuell = new JTextField();
- GebietManuell.setBounds(rahmenLinks, 35, 575, 25);
- // Set<String> dropdownGebieteFestlegen = datenbank.gebieteholen().keySet();
- // List<String> dropdownGebieteAuflisten = new ArrayList<String>();
- // dropdownGebieteAuflisten.addAll(dropdownGebieteFestlegen);
- // Collections.sort(dropdownGebieteAuflisten);
- // String[] Gebietsliste = new String[dropdownGebieteAuflisten.size()];
- // Gebietsliste = dropdownGebieteAuflisten.toArray(Gebietsliste);
- // gebieteDropdown = new JComboBox(Gebietsliste);
- // gebieteDropdown.setBounds(rahmenLinks, 35, 575, 25);
- // gebieteDropdown.setBackground(new Color(240,240,240));
- labelZeitraum = new JLabel("Auswahl des Zeitraumes");
- labelZeitraum.setBounds(rahmenLinks, 85, 400, 25);
- labelZeitraumVon = new JLabel("von");
- labelZeitraumVon.setBounds(rahmenLinks, 110, gebietLabelBreite, 25);
- labelZeitraumBis = new JLabel("bis");
- labelZeitraumBis.setBounds(rahmenLinks, 135, gebietLabelBreite, 25);
- eingabeZeitraumVon = new JSpinner();
- JComponent editor = eingabeZeitraumVon.getEditor();
- SpinnerNumberModel model = (SpinnerNumberModel) eingabeZeitraumVon.getModel();
- JSpinner.NumberEditor numberEditor = (JSpinner.NumberEditor)editor;
- DecimalFormat format = numberEditor.getFormat();
- String pattern = "####";
- format.applyPattern(pattern);
- model.setValue(1970);
- eingabeZeitraumVon.setBounds(rahmenLinks + gebietLabelBreite, 110 , gebietBreite, 25);
- eingabeZeitraumBis = new JSpinner();
- editor = eingabeZeitraumBis.getEditor();
- model = (SpinnerNumberModel) eingabeZeitraumBis.getModel();
- numberEditor = (JSpinner.NumberEditor)editor;
- format = numberEditor.getFormat() ;
- format.applyPattern(pattern);
- model.setValue(1980);
- eingabeZeitraumBis.setBounds(rahmenLinks + gebietLabelBreite, 135, gebietBreite,25);
- labelSex = new JLabel("Auswahl des Geschlechts");
- labelSex.setBounds(rahmenLinks+200, 85, 200, 25);
- sexM = new JRadioButton("Männlich", true);
- sexM.setBounds(rahmenLinks+200, 110, 100, 25);
- sexM.setBackground(new Color(200,200,200));
- sexW = new JRadioButton("Weiblich");
- sexW.setBounds(rahmenLinks+200, 135, 100, 25);
- sexW.setBackground(new Color(200,200,200));
- sexBeides = new JRadioButton("Männlich und Weiblich");
- sexBeides.setBounds(rahmenLinks+200, 160, 200, 25);
- sexBeides.setBackground(new Color(200,200,200));
- ButtonGroup sexGroup = new ButtonGroup();
- sexGroup.add(sexM);
- sexGroup.add(sexW);
- sexGroup.add(sexBeides);
- labelAuswertung = new JLabel("Auswahl der Darstellung");
- labelAuswertung.setBounds(rahmenLinks+400, 85, 300, 25);
- auswertungB = new JRadioButton("Balkendiagramm");
- auswertungB.setBounds(rahmenLinks+400, 110, 150, 25);
- auswertungB.setBackground(new Color(200,200,200));
- auswertungL = new JRadioButton("Liniendiagramm", true);
- auswertungL.setBounds(rahmenLinks+400, 135, 150, 25);
- auswertungL.setBackground(new Color(200,200,200));
- ButtonGroup auswertungGroup = new ButtonGroup();
- auswertungGroup.add(auswertungB);
- auswertungGroup.add(auswertungL);
- senden = new JButton("Senden");
- senden.setBounds(rahmenLinks, 210, 575, 25);
- senden.addActionListener(this);
- Gebieteliste = new JTextArea(5, 20);
- Gebieteliste.setEditable(false);
- Gebieteliste.setBounds(rahmenLinks, 250, 575, 300);
- GebietelisteScroll = new JScrollPane(Gebieteliste);
- GebietelisteScroll.setBounds(rahmenLinks, 250, 575, 300);
- // for (Map.Entry<String, String> e: datenbank.gebieteholen().entrySet())
- // Gebieteliste.append(e.getKey()+": \t \t \t \t "+e.getValue() + "\n");
- for (Map.Entry<String, String> e: datenbank.gebieteholen().entrySet())
- Gebieteliste.append(e.getValue()+"\t"+e.getKey() + "\n");
- contentPane = getContentPane();
- contentPane.setBackground(new Color(248,248,255));
- contentPane.setBackground(new Color(200,200,200));
- contentPane.add(GebietManuell);
- contentPane.add(GebietelisteScroll);
- // contentPane.add(Gebieteliste);
- contentPane.add(labelGebiet);
- // contentPane.add(gebieteDropdown);
- contentPane.add(labelZeitraum);
- contentPane.add(labelZeitraumVon);
- contentPane.add(eingabeZeitraumVon);
- contentPane.add(labelZeitraumBis);
- contentPane.add(eingabeZeitraumBis);
- contentPane.add(labelSex);
- contentPane.add(sexM);
- contentPane.add(sexW);
- contentPane.add(sexBeides);
- contentPane.add(labelAuswertung);
- contentPane.add(auswertungB);
- contentPane.add(auswertungL);
- contentPane.add(senden);
- pack();
- }
- public void actionPerformed(ActionEvent e)
- {
- String ort = (String) GebietManuell.getText();
- int zeitVon = (Integer) (eingabeZeitraumVon.getValue());
- int zeitBis = (Integer) (eingabeZeitraumBis.getValue());
- String geschlecht;
- if(sexM.isSelected())
- geschlecht = "m";
- else if(sexW.isSelected())
- geschlecht = "w";
- else
- geschlecht = "m+w";
- Diagramm diagramm;
- if(auswertungB.isSelected()) {
- diagramm = new BalkenDiagramm(ort, zeitVon, zeitBis, geschlecht);
- } else {
- diagramm = new LinienDiagramm(ort, zeitVon, zeitBis, geschlecht);
- }
- diagramm.auswerten();
- }
- }
- abstract class Diagramm extends JFrame {
- protected String ort, geschlecht, geschlechtCode;
- protected int zeitVon, zeitBis;
- protected Container contentPane;
- protected JLabel labelGebiet, labelZeitraum, labelSex, labelDiagramm;
- protected JPanel zeichenFlaeche;
- public Diagramm(String ort, int zeitVon, int zeitBis, String geschlecht) {
- this.ort = ort;
- this.zeitVon = zeitVon;
- this.zeitBis = zeitBis;
- this.geschlechtCode = geschlecht;
- if(geschlecht.equals("m"))
- this.geschlecht = "männlich";
- else if(geschlecht.equals("w"))
- this.geschlecht = "weiblich";
- else
- this.geschlecht = "beides";
- }
- public abstract void auswerten();
- }
- class Linie extends JPanel {
- private ArrayList<Integer> x, y, breite, hoehe;
- public Linie() {
- x = new ArrayList<Integer>();
- y = new ArrayList<Integer>();
- breite = new ArrayList<Integer>();
- hoehe = new ArrayList<Integer>();
- }
- public void addPunkt(int x, int y, int breite, int hoehe) {
- this.x.add(x);
- this.y.add(y);
- this.breite.add(breite);
- this.hoehe.add(hoehe);
- }
- public void paintComponent(Graphics g) {
- g.setColor(Color.BLACK);
- int startX = 0;
- int startY = 0;
- int endeX = 0;
- int endeY = 0;
- for(int i = 0; i < x.size(); i++) {
- if (i > 0) {
- if (i == 1) {
- startX = x.get(i-1);
- startY = y.get(i-1);
- } else {
- startX = endeX;
- startY = endeY;
- }
- endeX = x.get(i);
- endeY = y.get(i);
- g.drawLine(startX, startY, endeX, endeY);
- g.drawLine(startX, startY + 1, endeX, endeY + 1);
- g.drawLine(startX, startY + 1, endeX, endeY + 1);
- g.drawLine(startX, startY - 1, endeX, endeY - 1);
- g.drawLine(startX, startY - 1, endeX, endeY - 1);
- }
- g.fillOval(x.get(i) - breite.get(i)/2, y.get(i) - hoehe.get(i)/2, breite.get(i), hoehe.get(i));
- }
- }
- }
- class LinienDiagramm extends Diagramm {
- private int rahmenLinks = 10;
- private int rahmenOben = 10;
- private int height = 25;
- private int width = 200;
- public LinienDiagramm(String ort, int zeitVon, int zeitBis, String geschlecht) {
- super(ort, zeitVon, zeitBis, geschlecht);
- }
- public void initWindow() {
- contentPane = getContentPane();
- contentPane.setLayout(null);
- contentPane.setBackground(new Color(200,200,200));
- setTitle("Liniendiagramm: " + ort + " - " + zeitVon + "-" + zeitBis + " - " + geschlecht + " - ");
- contentPane = getContentPane();
- pack();
- }
- public void auswerten() {
- initWindow();
- setSize(800, 750);
- Integer[] bevoelkerung = datenbank.getBevoelkerung(datenbank.gebieteholen().get(ort), zeitVon, zeitBis, geschlechtCode);
- float maximalWert = max(bevoelkerung);
- float minimalWert = min(bevoelkerung);
- float diff = maximalWert - minimalWert;
- float faktor = 300;
- int hoeheT;
- Linie linie = new Linie();
- linie.setBounds(rahmenLinks, 75, 600 + (bevoelkerung.length - 5)*100 , 400);
- for(int i = 0; i < bevoelkerung.length; i++) {
- hoeheT = (int) ((faktor / diff) * (maximalWert - bevoelkerung[i]));
- linie.addPunkt(50 + 75*i, 5 + hoeheT, 5, 5);
- }
- contentPane.add(linie);
- for(int i = 0; i < bevoelkerung.length; i++) {
- JLabel jahr = new JLabel("<html><body><b>" + String.valueOf(zeitVon + i) + "</b><br><i><small>(" + bevoelkerung[i] + ")</small></i></body></html>");
- jahr.setBounds(30 + 75*i, 3*height + 345, 90, height);
- contentPane.add(jahr);
- }
- setSize(100+ (zeitBis - zeitVon) * 75, 500);
- setVisible(true);
- }
- private int max(Integer[] arr) {
- int max = 0;
- for(int i = 0; i < arr.length; i++) {
- if(arr[i] > max)
- max = arr[i];
- }
- return max;
- }
- private int min(Integer[] arr) {
- int min = Integer.MAX_VALUE;
- for(int i = 0; i < arr.length; i++) {
- if(arr[i] < min)
- min = arr[i];
- }
- return min;
- }
- }
- class Balken extends JPanel {
- private ArrayList<Integer> x, y, breite, hoehe;
- public Balken() {
- x = new ArrayList<Integer>();
- y = new ArrayList<Integer>();
- breite = new ArrayList<Integer>();
- hoehe = new ArrayList<Integer>();
- }
- public void addBalken(int x, int y, int breite, int hoehe) {
- this.x.add(x);
- this.y.add(y);
- this.breite.add(breite);
- this.hoehe.add(hoehe);
- }
- public void paintComponent(Graphics g) {
- g.setColor(Color.BLACK);
- for(int i = 0; i < x.size(); i++) {
- g.drawRect(x.get(i), y.get(i), breite.get(i), hoehe.get(i));
- g.fillRect(x.get(i), y.get(i), breite.get(i), hoehe.get(i));
- }
- }
- }
- class BalkenDiagramm extends Diagramm {
- private int rahmenLinks = 10;
- private int rahmenOben = 10;
- private int height = 25;
- private int width = 200;
- public BalkenDiagramm(String ort, int zeitVon, int zeitBis, String geschlecht) {
- super(ort, zeitVon, zeitBis, geschlecht);
- }
- public void initWindow() {
- contentPane = getContentPane();
- contentPane.setLayout(null);
- contentPane.setBackground(new Color(248,248,255));
- setTitle("Liniendiagramm: " + ort + " - " + zeitVon + "-" + zeitBis + " - " + geschlecht + " - ");
- contentPane = getContentPane();
- pack();
- }
- public void auswerten() {
- initWindow();
- setSize(800, 750);
- Integer[] bevoelkerung = datenbank.getBevoelkerung(datenbank.gebieteholen().get(ort), zeitVon, zeitBis, geschlechtCode);
- int maximalWert = max(bevoelkerung);
- int minimalWert = min(bevoelkerung);
- float faktor = (float) 300/(maximalWert-minimalWert);
- int hoeheT;
- Balken rechteck = new Balken();
- rechteck.setBounds(rahmenLinks, 2*height + 5, 600 + (bevoelkerung.length - 5)*100 , 330);
- for(int i = 0; i < bevoelkerung.length; i++) {
- hoeheT = (int) (faktor * (float) bevoelkerung[i]);
- rechteck.addBalken(10 + 75*i, rahmenOben + (int) ((maximalWert - bevoelkerung[i])*faktor), 25, hoeheT);
- }
- contentPane.add(rechteck);
- for(int i = 0; i < bevoelkerung.length; i++) {
- JLabel jahr = new JLabel("<html><body><b>" + String.valueOf(zeitVon + i) + "</b><br><i><small>(" + bevoelkerung[i] + ")</small></i></body></html>");
- jahr.setBounds(20 + 75*i, 3*height + 345, 90, height);
- contentPane.add(jahr);
- }
- setSize(75+ (zeitBis - zeitVon) * 75, 500);
- setVisible(true);
- }
- private int max(Integer[] arr) {
- int max = 0;
- for(int i = 0; i < arr.length; i++) {
- if(arr[i] > max)
- max = arr[i];
- }
- return max;
- }
- private int min(Integer[] arr) {
- int min = Integer.MAX_VALUE;
- for(int i = 0; i < arr.length; i++) {
- if(arr[i] < min)
- min = arr[i];
- }
- return min;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement