Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
- package praktika7_bronshteini;
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.FileReader;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.Calendar;
- import java.util.GregorianCalendar;
- import java.util.Iterator;
- import java.util.Map;
- import java.util.Scanner;
- import java.util.Set;
- import java.util.TreeMap;
- /**
- *
- * @author t166163
- */
- public class Praktika7_BronshteinI {
- /**
- * Igor Bronštein RDIR31
- *
- * Praktika 7 (Tähtaeg: 29.11.17 kell 23:55, Sulgemise aeg 13.12.17 kell 23:55)
- Failis hoia tudengi kood ja keskmine hinne
- Kasutaja funktsioonide abil leia järgmised andmed
- Min hinne ja tudengite nimekiri, kellel oli halvem tulemus
- Maks. hinne ja tudengite nimekiri, kellel on parem tulemus
- Sisestatud sisseastumise aasta tudengite andmed (tudengi kood ja keskmine hinne)
- Kuva õpilaste koodid ja hinne,kellel õppeedukus oli vahemikus ... kuni .... (andmed sorteeri hinde järgi)
- Andmete kuvamiseks loo menüü
- Salvesta kasutaja tegevused, failis hoia kuupäev koos kellaaega ja menüü punktid
- *
- * @param args the command line arguments
- */
- public static ArrayList<String> ajalugu=new ArrayList<String>();//loome sonalist ArrayListi selleks, et siia sisse ajalugu kirjutada
- public static Calendar c=new GregorianCalendar();//kaivitame kalendar selleks, et ajalukku aega sisestada
- public static void main(String[] args) throws IOException {
- // TODO code application logic here
- ajalugu.add(c.getTime()+"Programm algas.");//lisame ajalukku, et programm on kaivitatud
- FileWriter writer=new FileWriter("tudeng.txt", false);//deklareerime FileWriter nimega writer, mis sisestab andmeid txt failisse nimega tudeng.txt ja ei asenda faili, vaid lisab sisse (false)
- String text="Tudengite andmed:";//need read all sisestavad tudeng.txt failisse infot tudengite kohta
- writer.write(text);
- writer.append('\n');
- writer.append("Tudengi kood\tKeskmine hinne");
- writer.append('\n');
- writer.append("t166163\t\t3.6");
- writer.append('\n');
- writer.append("t166164\t\t4.8");
- writer.append('\n');
- writer.append("t166154\t\t3.0");
- writer.append('\n');
- writer.append("t176156\t\t4.2");
- writer.append('\n');
- writer.append("t176153\t\t4.9");
- writer.append('\n');
- writer.append("t176152\t\t3.7");
- writer.append('\n');
- writer.append("t156167\t\t4.1");
- writer.append('\n');
- writer.append("t156169\t\t3.0");
- writer.append('\n');
- writer.append("t176143\t\t4.9");
- writer.append('\n');
- writer.append("t176155\t\t3.9");
- writer.append('\n');
- writer.append("t166150\t\t4.8");
- writer.append('\n');
- writer.append("t166152\t\t4.3");
- writer.append('\n');
- writer.append("t156170\t\t3.7");
- writer.append('\n');
- writer.append("t156147\t\t4.2");
- writer.append('\n');
- writer.append("t166151\t\t3.0");
- writer.append('\n');
- writer.append("t166153\t\t4.3");
- writer.append('\n');
- writer.append("t176151\t\t4.6");
- writer.append('\n');
- writer.append("t176152\t\t3.2");
- writer.append('\n');
- writer.append("t156157\t\t4.0");
- writer.flush();//writeri too lopetamine ja malu tuhjustamine
- //menuu osa
- Scanner sc=new Scanner(System.in);
- int menuu=0;//integer menuu jaoks
- int end=0;//integer igaks juhuks selleks, et menuu case5 toimiks normaalselt ja ei lopeks enneaegu.
- do{
- System.out.printf("Menuu:%n1. Minimaalse hindega tudengite nimekiri%n2. Maksimaalse hindega tudengite nimekiri%n3. Filtreerimine sisseastumise aasta jargi%n4. Sorteerimine hinde vahemiku jargi%n5. Programmi lopetamine%n");
- menuu=sc.nextInt();//kasutaja sisestab menuu number
- switch(menuu){
- case 1: ajalugu.add(c.getTime()+"Kasutaja valis menuust variant 1."); min(); break;
- case 2: ajalugu.add(c.getTime()+"Kasutaja valis menuust variant 2."); max(); break;
- case 3: ajalugu.add(c.getTime()+"Kasutaja valis menuust variant 3."); aasta(); break;
- case 4: ajalugu.add(c.getTime()+"Kasutaja valis menuust variant 4.");vahemik(); break;
- case 5: ajalugu.add(c.getTime()+"Kasutaja lopetas programmi valides variant 5.");
- history();
- end=1;
- ;break;
- }
- }while(end!=1);
- }
- public static void min() throws FileNotFoundException, IOException{//miinimumi otsing
- //................................................................................................. EI OSANUD SEDA OSA MEETODITE JA FUNKTSIOONIDE ABIL TEOSTADA, seetõttu see osa on igas meetodis
- File f=new File("tudeng.txt");//deklareerime meie tudent.txt fail File classiga nimega f
- FileReader fr=new FileReader(f);//kaivitame failide readerit
- BufferedReader reader=new BufferedReader(fr);//BufferReader selleks, et lugeda ridade kaupa
- String failirida;//sonaline muutuja selleks, et votta eraldi iga rida
- TreeMap andmed=new TreeMap();//deklareerime treemap selleks, et oleks mugavam infot hoida
- while((failirida=reader.readLine())!=null){//kui rida ei ole tuhi, siis
- if(failirida.contains("t166")||failirida.contains("t156")||failirida.contains("t176")){//kontrollime kas rida sisaldab neid vaartusi
- char[] chars1=new char[7];//char selleks et tootada sonadega
- char[] chars2=new char[3];
- String votmed;
- String vaartused;
- //System.out.printf(failirida.trim());
- failirida.trim().getChars(0,7,chars1,0);//loikame reast tahed ja paneme char arraysse nimega chars1
- votmed=new String(chars1);//muudame saadud chars1 array sonaliseks muutujaks votmed
- failirida.trim().getChars(9, 12, chars2, 0);
- vaartused=new String(chars2);
- andmed.put(votmed,vaartused);//paneme saadud muutujad treemappi
- }
- }
- String[] keys=new String[andmed.size()];//loome maassivid iga treemapi osa jaoks, ehk Key ja Value jaoks
- Double[] values=new Double[andmed.size()];
- Set set=andmed.entrySet();//deklareerime Set massiivi andmed baasil
- Iterator i=set.iterator();//loome iteraator
- int iter=0;//see muutuja maarab massiivide indekseid
- while(i.hasNext()){
- String ram1;//malu muutujad
- Double ram2;
- Map.Entry me=(Map.Entry)i.next();
- System.out.print(me.getKey()+": ");//prindime valja andmed, mis on failis tudeng.txt
- ram1=(me.getKey()).toString();//muudame stringiks ja sisestame oigesse massiivi
- keys[iter]=ram1;
- System.out.println(me.getValue());
- String str=me.getValue().toString();
- ram2=Double.valueOf(str).doubleValue();
- values[iter]=ram2;
- iter++;
- }
- //.................................................................................................
- //miinimumi otsing
- //int index=0;//kontrolli jaoks
- Double min=values[0];//maarame suvaline miinimum
- for(int q=0; q<values.length; q++){//see tsukkel otsib miinimumi
- for(int r=0; r<values.length; r++){
- if(values[q]<=values[r]&&values[q]<=min){//massiivi kaesolev element vorreldakse juba olemasoleva miinimumi ja iga elemendiga massiivis, kui on vahem voi vordne nendega siis muudetakse selle elemendi vaartus miinimumiks
- min=values[q];
- //index=q+1;//kontrolli jaoks
- }else{
- break;
- }
- }
- }
- //System.out.println("min: "+min+" index: "+index);//kontrolli jaoks
- //otsime nuud koiki elementi miinimumiga
- ArrayList <Integer> ind=new ArrayList <Integer>();//indeksitest koosnev arraylist
- for(int t=0; t<values.length; t++){//see for tsukkel lisab arraysse ind nende elementide indekseid, mille vaartused on samad nagu miinimumil
- if(values[t].equals(min)){
- ind.add(t);
- }
- }
- System.out.printf("%nMinimaalne keskmine hinne on: %s%nOn tudengeil koodidega:%n",min);//printimine
- for(int e=0; e<ind.size(); e++){
- System.out.printf("%s%n",keys[ind.get(e)]);
- }
- }
- public static void max() throws FileNotFoundException, IOException{
- //..............................OSA ON SELETATUD ULEVAL...................................................................
- File f=new File("tudeng.txt");
- FileReader fr=new FileReader(f);
- BufferedReader reader=new BufferedReader(fr);
- String failirida;
- TreeMap andmed=new TreeMap();
- while((failirida=reader.readLine())!=null){
- if(failirida.contains("t166")||failirida.contains("t156")||failirida.contains("t176")){
- char[] chars1=new char[7];//char array for executing the text file
- char[] chars2=new char[3];
- String votmed;
- String vaartused;
- //System.out.printf(failirida.trim());
- failirida.trim().getChars(0,7,chars1,0);
- votmed=new String(chars1);
- failirida.trim().getChars(9, 12, chars2, 0);
- vaartused=new String(chars2);
- andmed.put(votmed,vaartused);
- }
- }
- String[] keys=new String[andmed.size()];
- Double[] values=new Double[andmed.size()];
- Set set=andmed.entrySet();
- Iterator i=set.iterator();
- int iter=0;
- while(i.hasNext()){
- String ram1;
- Double ram2;
- Map.Entry me=(Map.Entry)i.next();
- System.out.print(me.getKey()+": ");
- ram1=(me.getKey()).toString();
- keys[iter]=ram1;
- System.out.println(me.getValue());
- String str=me.getValue().toString();
- ram2=Double.valueOf(str).doubleValue();
- values[iter]=ram2;
- iter++;
- }
- //.................................................................................................
- //maksimumi otsing
- int index=0;//sama nagu miinimumiga aga for tsuklis on vahetatud vordusmargid
- Double max=values[0];
- for(int q=0; q<values.length; q++){
- for(int r=0; r<values.length; r++){
- if(values[q]>=values[r]&&values[q]>=max){
- max=values[q];
- index=q+1;
- }else{
- break;
- }
- }
- }
- System.out.println("min: "+max+" index: "+index);
- //otsime nuud koiki elementi miinimumiga
- ArrayList <Integer> ind=new ArrayList <Integer>();//indeksitest koosnev arraylist
- for(int t=0; t<values.length; t++){
- if(values[t].equals(max)){
- ind.add(t);
- }
- }
- System.out.printf("%nMaksimaalnee keskmine hinne on: %s%nOn tudengeil koodidega:%n",max);
- for(int e=0; e<ind.size(); e++){
- System.out.printf("%s%n",keys[ind.get(e)]);
- }
- }
- public static void aasta() throws FileNotFoundException, IOException{
- //......................SELETATUD ULEVAL...........................................................................
- File f=new File("tudeng.txt");
- FileReader fr=new FileReader(f);
- BufferedReader reader=new BufferedReader(fr);
- String failirida;
- TreeMap andmed=new TreeMap();
- while((failirida=reader.readLine())!=null){
- if(failirida.contains("t166")||failirida.contains("t156")||failirida.contains("t176")){
- char[] chars1=new char[7];//char array for executing the text file
- char[] chars2=new char[3];
- String votmed;
- String vaartused;
- //System.out.printf(failirida.trim());
- failirida.trim().getChars(0,7,chars1,0);
- votmed=new String(chars1);
- failirida.trim().getChars(9, 12, chars2, 0);
- vaartused=new String(chars2);
- andmed.put(votmed,vaartused);
- }
- }
- String[] keys=new String[andmed.size()];
- Double[] values=new Double[andmed.size()];
- Set set=andmed.entrySet();
- Iterator i=set.iterator();
- int iter=0;
- while(i.hasNext()){
- String ram1;
- Double ram2;
- Map.Entry me=(Map.Entry)i.next();
- System.out.print(me.getKey()+": ");
- ram1=(me.getKey()).toString();
- keys[iter]=ram1;
- System.out.println(me.getValue());
- String str=me.getValue().toString();
- ram2=Double.valueOf(str).doubleValue();
- values[iter]=ram2;
- iter++;
- }
- //.................................................................................................
- //aasta jargi otsing
- Scanner sc=new Scanner(System.in);
- int aasta=0;
- System.out.println("Sisestage aasta (naiteks 2015):");
- aasta=sc.nextInt();//kasutaja sisestab aasta
- ajalugu.add(c.getTime()+"Kasutaja sisestas aasta "+aasta+".");//info ajalukku
- TreeMap a15= new TreeMap();//kolm treemappi andmete hoidmiseks
- TreeMap a16= new TreeMap();
- TreeMap a17= new TreeMap();
- switch(aasta){
- case 2015:
- for(int t=0; t<keys.length; t++){//siin kontrollitakse kas rida sisaldab vajalikku aasta, kui jah, siis seda pannaks treemappi
- if(keys[t].contains("t15")){
- a15.put(keys[t],values[t]);//treemappi panek
- }}
- Set set1=a15.entrySet();
- Iterator q=set1.iterator();
- while(q.hasNext()){
- Map.Entry me1=(Map.Entry)q.next();
- System.out.printf("Kood: "+me1.getKey()+" keskmine hinne: "+me1.getValue()+"%n");//vajatud aasta tudengite info printimine
- }
- break;
- case 2016: for(int t=0; t<keys.length; t++){
- if(keys[t].contains("t16")){
- a16.put(keys[t],values[t]);
- }
- } Set set2=a16.entrySet();
- Iterator q1=set2.iterator();
- while(q1.hasNext()){
- Map.Entry me2=(Map.Entry)q1.next();
- System.out.printf("Kood: "+me2.getKey()+" keskmine hinne: "+me2.getValue()+"%n");
- } break;
- case 2017: for(int t=0; t<keys.length; t++){
- if(keys[t].contains("t17")){
- a17.put(keys[t],values[t]);
- }
- }
- Set set3=a17.entrySet();
- Iterator q2=set3.iterator();
- while(q2.hasNext()){
- Map.Entry me3=(Map.Entry)q2.next();
- System.out.printf("Kood: "+me3.getKey()+" keskmine hinne: "+me3.getValue()+"%n");
- }
- break;
- default: System.out.println("Aasta on sisestatud valesti voi ei eksisteeri loetelus."); ajalugu.add(c.getTime()+"Kasutaja sisestas aasta valesti."); break;
- }
- }
- //hinnete vahemiku jargi otsing
- public static void vahemik() throws FileNotFoundException, IOException{
- Scanner sc=new Scanner(System.in);
- Double ealg=0.0;//muutujad vahemiku arvutamiseks, kasutaja sisestab naid all
- Double elopp=5.0;
- System.out.println("Sisestage vahemiku alumine piir (minimum 0,0):");
- int kontroll1=0;
- do{// do tsukkel selleks, et kasutaja ei saaks sisestada hinnet alla 0 ja ule 5
- ealg=sc.nextDouble();
- ajalugu.add(c.getTime()+"Kasutaja sisestas alumist piiri "+ealg+".");
- int ret=Double.compare(ealg,0.0);//need muutuja on selleks, et vorrelda Double vaartusi.
- int ret1=Double.compare(ealg,5.0);
- if(ret<0||ret1>0){//kui ret muutuja on vahem nullist voi ret1 on suurem nullist, siis kasutaja sisestab uuseti
- System.out.println("Sisestage alumine piir uuesti: ");
- ajalugu.add(c.getTime()+"Kasutaja alumine piir oli valesti sisestatud. Sisestas uuesti.");
- kontroll1=0;
- }else{
- kontroll1=1;//kontrollimine lopeb, kui sobib
- }
- }while(kontroll1==0);
- System.out.println("Sisestage vahemiku ulemine piir (maksimum 5,0):");//sama ulemise piirega
- int kontroll2=0;
- do{
- elopp=sc.nextDouble();
- ajalugu.add(c.getTime()+"Kasutaja sisestas alumine piir "+elopp+".");
- if(elopp<0.0||elopp<ealg||elopp>5.0){
- System.out.println("Sisestage ulemine piir uuesti: ");
- ajalugu.add(c.getTime()+"Kasutaja alumine piir oli valesti sisestatud. Sisestas uuesti.");
- kontroll1=0;
- }else{
- kontroll2=1;
- }
- }while(kontroll2==0);
- //.................................................................................................
- File f=new File("tudeng.txt");
- FileReader fr=new FileReader(f);
- BufferedReader reader=new BufferedReader(fr);
- String failirida;
- TreeMap andmed=new TreeMap();
- while((failirida=reader.readLine())!=null){
- if(failirida.contains("t166")||failirida.contains("t156")||failirida.contains("t176")){
- char[] chars1=new char[7];//char array for executing the text file
- char[] chars2=new char[3];
- String votmed;
- String vaartused;
- //System.out.printf(failirida.trim());
- failirida.trim().getChars(0,7,chars1,0);
- votmed=new String(chars1);
- failirida.trim().getChars(9, 12, chars2, 0);
- vaartused=new String(chars2);
- andmed.put(votmed,vaartused);
- }
- }
- String[] keys=new String[andmed.size()];
- Double[] values=new Double[andmed.size()];
- Set set=andmed.entrySet();
- Iterator i=set.iterator();
- int iter=0;
- System.out.println("Algloetelu:");
- while(i.hasNext()){
- String ram1;
- Double ram2;
- Map.Entry me=(Map.Entry)i.next();
- System.out.print(me.getKey()+": ");
- ram1=(me.getKey()).toString();
- keys[iter]=ram1;
- System.out.println(me.getValue());
- String str=me.getValue().toString();
- ram2=Double.valueOf(str).doubleValue();
- values[iter]=ram2;
- iter++;
- }
- //.................................................................................................
- //sorteerime keskmise hinde jargi
- ArrayList <String> sortedK=new ArrayList<String>();
- ArrayList <Double> sortedV=new ArrayList<Double>();
- Double ram1;
- String ram3;
- for(int q=0; q<values.length; q++){//tavaline Bubble Sort
- for(int r=0; r<values.length-1; r++){
- if(values[r]>values[r+1]){
- ram1=values[r];
- ram3=keys[r];
- values[r]=values[r+1];
- keys[r]=keys[r+1];
- values[r+1]=ram1;
- keys[r+1]=ram3;
- }
- }
- }
- System.out.println("Sorteeritud:");//sorteeritud andmete printimine
- for(int t=0; t<values.length; t++){
- System.out.printf(keys[t]+" "+values[t]+"%n");
- }
- for(int d=0; d<values.length; d++){//vordleme nuud kasutaja poolt sisestatud piirte vaartustega koik vaartused massiivis ja paneme sobivaid vastavatesse massiividesse
- int ret=Double.compare(values[d],ealg);
- int ret1=Double.compare(values[d],elopp);
- if((ret>0||ret==0)&&(ret1<0||ret==0)){
- sortedV.add(values[d]);
- sortedK.add(keys[d]);
- }
- }
- System.out.printf("Sorteeritud vahemikus %sst - %sni andmed:%n",ealg,elopp);
- for(int o=0;o<sortedV.size();o++){
- System.out.printf(sortedK.get(o)+" "+sortedV.get(o)+"%n");//prindime valja vahemikke
- }
- }
- public static void history() throws IOException{//ajalugu kirjutamise meetod
- FileWriter writer1=new FileWriter("history.txt", false);//kaivitame file writer mis kirjutab faili history.txt
- for(int q=0; q<ajalugu.size(); q++){//for tsukke votab koik elemendid arraylistist ajalugu ja sisestab (append) history.txt failisse
- writer1.append(ajalugu.get(q));
- writer1.append('\n');
- }
- writer1.flush();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement