Advertisement
Zizalik

Praktika7tegemata

Dec 12th, 2017
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 23.06 KB | None | 0 0
  1. /*
  2. * To change this license header, choose License Headers in Project Properties.
  3. * To change this template file, choose Tools | Templates
  4. * and open the template in the editor.
  5. */
  6. package praktika7_bronshteini;
  7.  
  8. import java.io.BufferedReader;
  9. import java.io.File;
  10. import java.io.FileNotFoundException;
  11. import java.io.FileReader;
  12. import java.io.FileWriter;
  13. import java.io.IOException;
  14. import java.util.ArrayList;
  15. import java.util.Calendar;
  16. import java.util.GregorianCalendar;
  17.  
  18. import java.util.Iterator;
  19. import java.util.Map;
  20. import java.util.Scanner;
  21. import java.util.Set;
  22. import java.util.TreeMap;
  23.  
  24. /**
  25. *
  26. * @author t166163
  27. */
  28. public class Praktika7_BronshteinI {
  29.  
  30. /**
  31. * Igor Bronštein RDIR31
  32. *
  33. * Praktika 7 (Tähtaeg: 29.11.17 kell 23:55, Sulgemise aeg 13.12.17 kell 23:55)
  34. Failis hoia tudengi kood ja keskmine hinne
  35.  
  36. Kasutaja funktsioonide abil leia järgmised andmed
  37.  
  38. Min hinne ja tudengite nimekiri, kellel oli halvem tulemus
  39. Maks. hinne ja tudengite nimekiri, kellel on parem tulemus
  40. Sisestatud sisseastumise aasta tudengite andmed (tudengi kood ja keskmine hinne)
  41. Kuva õpilaste koodid ja hinne,kellel õppeedukus oli vahemikus ... kuni .... (andmed sorteeri hinde järgi)
  42. Andmete kuvamiseks loo menüü
  43.  
  44. Salvesta kasutaja tegevused, failis hoia kuupäev koos kellaaega ja menüü punktid
  45. *
  46. * @param args the command line arguments
  47. */
  48. public static ArrayList<String> ajalugu=new ArrayList<String>();//loome sonalist ArrayListi selleks, et siia sisse ajalugu kirjutada
  49. public static Calendar c=new GregorianCalendar();//kaivitame kalendar selleks, et ajalukku aega sisestada
  50.  
  51. public static void main(String[] args) throws IOException {
  52. // TODO code application logic here
  53. ajalugu.add(c.getTime()+"Programm algas.");//lisame ajalukku, et programm on kaivitatud
  54. 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)
  55. String text="Tudengite andmed:";//need read all sisestavad tudeng.txt failisse infot tudengite kohta
  56. writer.write(text);
  57. writer.append('\n');
  58. writer.append("Tudengi kood\tKeskmine hinne");
  59. writer.append('\n');
  60. writer.append("t166163\t\t3.6");
  61. writer.append('\n');
  62. writer.append("t166164\t\t4.8");
  63. writer.append('\n');
  64. writer.append("t166154\t\t3.0");
  65. writer.append('\n');
  66. writer.append("t176156\t\t4.2");
  67. writer.append('\n');
  68. writer.append("t176153\t\t4.9");
  69. writer.append('\n');
  70. writer.append("t176152\t\t3.7");
  71. writer.append('\n');
  72. writer.append("t156167\t\t4.1");
  73. writer.append('\n');
  74. writer.append("t156169\t\t3.0");
  75. writer.append('\n');
  76. writer.append("t176143\t\t4.9");
  77. writer.append('\n');
  78. writer.append("t176155\t\t3.9");
  79. writer.append('\n');
  80. writer.append("t166150\t\t4.8");
  81. writer.append('\n');
  82. writer.append("t166152\t\t4.3");
  83. writer.append('\n');
  84. writer.append("t156170\t\t3.7");
  85. writer.append('\n');
  86. writer.append("t156147\t\t4.2");
  87. writer.append('\n');
  88. writer.append("t166151\t\t3.0");
  89. writer.append('\n');
  90. writer.append("t166153\t\t4.3");
  91. writer.append('\n');
  92. writer.append("t176151\t\t4.6");
  93. writer.append('\n');
  94. writer.append("t176152\t\t3.2");
  95. writer.append('\n');
  96. writer.append("t156157\t\t4.0");
  97.  
  98.  
  99. writer.flush();//writeri too lopetamine ja malu tuhjustamine
  100.  
  101.  
  102. //menuu osa
  103. Scanner sc=new Scanner(System.in);
  104. int menuu=0;//integer menuu jaoks
  105. int end=0;//integer igaks juhuks selleks, et menuu case5 toimiks normaalselt ja ei lopeks enneaegu.
  106. do{
  107. 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");
  108. menuu=sc.nextInt();//kasutaja sisestab menuu number
  109.  
  110. switch(menuu){
  111. case 1: ajalugu.add(c.getTime()+"Kasutaja valis menuust variant 1."); min(); break;
  112. case 2: ajalugu.add(c.getTime()+"Kasutaja valis menuust variant 2."); max(); break;
  113. case 3: ajalugu.add(c.getTime()+"Kasutaja valis menuust variant 3."); aasta(); break;
  114. case 4: ajalugu.add(c.getTime()+"Kasutaja valis menuust variant 4.");vahemik(); break;
  115. case 5: ajalugu.add(c.getTime()+"Kasutaja lopetas programmi valides variant 5.");
  116. history();
  117. end=1;
  118. ;break;
  119. }
  120.  
  121. }while(end!=1);
  122.  
  123. }
  124.  
  125.  
  126.  
  127. public static void min() throws FileNotFoundException, IOException{//miinimumi otsing
  128. //................................................................................................. EI OSANUD SEDA OSA MEETODITE JA FUNKTSIOONIDE ABIL TEOSTADA, seetõttu see osa on igas meetodis
  129. File f=new File("tudeng.txt");//deklareerime meie tudent.txt fail File classiga nimega f
  130. FileReader fr=new FileReader(f);//kaivitame failide readerit
  131.  
  132. BufferedReader reader=new BufferedReader(fr);//BufferReader selleks, et lugeda ridade kaupa
  133. String failirida;//sonaline muutuja selleks, et votta eraldi iga rida
  134. TreeMap andmed=new TreeMap();//deklareerime treemap selleks, et oleks mugavam infot hoida
  135.  
  136. while((failirida=reader.readLine())!=null){//kui rida ei ole tuhi, siis
  137. if(failirida.contains("t166")||failirida.contains("t156")||failirida.contains("t176")){//kontrollime kas rida sisaldab neid vaartusi
  138.  
  139. char[] chars1=new char[7];//char selleks et tootada sonadega
  140. char[] chars2=new char[3];
  141. String votmed;
  142. String vaartused;
  143.  
  144. //System.out.printf(failirida.trim());
  145. failirida.trim().getChars(0,7,chars1,0);//loikame reast tahed ja paneme char arraysse nimega chars1
  146. votmed=new String(chars1);//muudame saadud chars1 array sonaliseks muutujaks votmed
  147. failirida.trim().getChars(9, 12, chars2, 0);
  148. vaartused=new String(chars2);
  149. andmed.put(votmed,vaartused);//paneme saadud muutujad treemappi
  150. }
  151. }
  152. String[] keys=new String[andmed.size()];//loome maassivid iga treemapi osa jaoks, ehk Key ja Value jaoks
  153. Double[] values=new Double[andmed.size()];
  154.  
  155. Set set=andmed.entrySet();//deklareerime Set massiivi andmed baasil
  156. Iterator i=set.iterator();//loome iteraator
  157. int iter=0;//see muutuja maarab massiivide indekseid
  158. while(i.hasNext()){
  159. String ram1;//malu muutujad
  160. Double ram2;
  161. Map.Entry me=(Map.Entry)i.next();
  162. System.out.print(me.getKey()+": ");//prindime valja andmed, mis on failis tudeng.txt
  163. ram1=(me.getKey()).toString();//muudame stringiks ja sisestame oigesse massiivi
  164. keys[iter]=ram1;
  165.  
  166.  
  167. System.out.println(me.getValue());
  168. String str=me.getValue().toString();
  169. ram2=Double.valueOf(str).doubleValue();
  170. values[iter]=ram2;
  171.  
  172. iter++;
  173. }
  174. //.................................................................................................
  175. //miinimumi otsing
  176. //int index=0;//kontrolli jaoks
  177. Double min=values[0];//maarame suvaline miinimum
  178.  
  179. for(int q=0; q<values.length; q++){//see tsukkel otsib miinimumi
  180. for(int r=0; r<values.length; r++){
  181. 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
  182. min=values[q];
  183. //index=q+1;//kontrolli jaoks
  184. }else{
  185. break;
  186. }
  187. }
  188. }
  189. //System.out.println("min: "+min+" index: "+index);//kontrolli jaoks
  190. //otsime nuud koiki elementi miinimumiga
  191. ArrayList <Integer> ind=new ArrayList <Integer>();//indeksitest koosnev arraylist
  192. for(int t=0; t<values.length; t++){//see for tsukkel lisab arraysse ind nende elementide indekseid, mille vaartused on samad nagu miinimumil
  193. if(values[t].equals(min)){
  194. ind.add(t);
  195. }
  196. }
  197.  
  198.  
  199. System.out.printf("%nMinimaalne keskmine hinne on: %s%nOn tudengeil koodidega:%n",min);//printimine
  200. for(int e=0; e<ind.size(); e++){
  201.  
  202. System.out.printf("%s%n",keys[ind.get(e)]);
  203. }
  204.  
  205.  
  206.  
  207. }
  208.  
  209. public static void max() throws FileNotFoundException, IOException{
  210. //..............................OSA ON SELETATUD ULEVAL...................................................................
  211. File f=new File("tudeng.txt");
  212. FileReader fr=new FileReader(f);
  213.  
  214. BufferedReader reader=new BufferedReader(fr);
  215. String failirida;
  216. TreeMap andmed=new TreeMap();
  217.  
  218. while((failirida=reader.readLine())!=null){
  219. if(failirida.contains("t166")||failirida.contains("t156")||failirida.contains("t176")){
  220.  
  221. char[] chars1=new char[7];//char array for executing the text file
  222. char[] chars2=new char[3];
  223. String votmed;
  224. String vaartused;
  225.  
  226. //System.out.printf(failirida.trim());
  227. failirida.trim().getChars(0,7,chars1,0);
  228. votmed=new String(chars1);
  229. failirida.trim().getChars(9, 12, chars2, 0);
  230. vaartused=new String(chars2);
  231. andmed.put(votmed,vaartused);
  232. }
  233. }
  234. String[] keys=new String[andmed.size()];
  235. Double[] values=new Double[andmed.size()];
  236.  
  237. Set set=andmed.entrySet();
  238. Iterator i=set.iterator();
  239. int iter=0;
  240. while(i.hasNext()){
  241. String ram1;
  242. Double ram2;
  243. Map.Entry me=(Map.Entry)i.next();
  244. System.out.print(me.getKey()+": ");
  245. ram1=(me.getKey()).toString();
  246. keys[iter]=ram1;
  247.  
  248.  
  249. System.out.println(me.getValue());
  250. String str=me.getValue().toString();
  251. ram2=Double.valueOf(str).doubleValue();
  252. values[iter]=ram2;
  253.  
  254. iter++;
  255. }
  256. //.................................................................................................
  257. //maksimumi otsing
  258. int index=0;//sama nagu miinimumiga aga for tsuklis on vahetatud vordusmargid
  259. Double max=values[0];
  260.  
  261. for(int q=0; q<values.length; q++){
  262. for(int r=0; r<values.length; r++){
  263. if(values[q]>=values[r]&&values[q]>=max){
  264. max=values[q];
  265. index=q+1;
  266. }else{
  267. break;
  268. }
  269. }
  270. }
  271. System.out.println("min: "+max+" index: "+index);
  272. //otsime nuud koiki elementi miinimumiga
  273. ArrayList <Integer> ind=new ArrayList <Integer>();//indeksitest koosnev arraylist
  274. for(int t=0; t<values.length; t++){
  275. if(values[t].equals(max)){
  276. ind.add(t);
  277. }
  278. }
  279.  
  280.  
  281. System.out.printf("%nMaksimaalnee keskmine hinne on: %s%nOn tudengeil koodidega:%n",max);
  282. for(int e=0; e<ind.size(); e++){
  283.  
  284. System.out.printf("%s%n",keys[ind.get(e)]);
  285. }
  286.  
  287.  
  288.  
  289. }
  290.  
  291. public static void aasta() throws FileNotFoundException, IOException{
  292. //......................SELETATUD ULEVAL...........................................................................
  293. File f=new File("tudeng.txt");
  294. FileReader fr=new FileReader(f);
  295.  
  296. BufferedReader reader=new BufferedReader(fr);
  297. String failirida;
  298. TreeMap andmed=new TreeMap();
  299.  
  300. while((failirida=reader.readLine())!=null){
  301. if(failirida.contains("t166")||failirida.contains("t156")||failirida.contains("t176")){
  302.  
  303. char[] chars1=new char[7];//char array for executing the text file
  304. char[] chars2=new char[3];
  305. String votmed;
  306. String vaartused;
  307.  
  308. //System.out.printf(failirida.trim());
  309. failirida.trim().getChars(0,7,chars1,0);
  310. votmed=new String(chars1);
  311. failirida.trim().getChars(9, 12, chars2, 0);
  312. vaartused=new String(chars2);
  313. andmed.put(votmed,vaartused);
  314. }
  315. }
  316. String[] keys=new String[andmed.size()];
  317. Double[] values=new Double[andmed.size()];
  318.  
  319. Set set=andmed.entrySet();
  320. Iterator i=set.iterator();
  321. int iter=0;
  322. while(i.hasNext()){
  323. String ram1;
  324. Double ram2;
  325. Map.Entry me=(Map.Entry)i.next();
  326. System.out.print(me.getKey()+": ");
  327. ram1=(me.getKey()).toString();
  328. keys[iter]=ram1;
  329.  
  330.  
  331. System.out.println(me.getValue());
  332. String str=me.getValue().toString();
  333. ram2=Double.valueOf(str).doubleValue();
  334. values[iter]=ram2;
  335.  
  336. iter++;
  337. }
  338. //.................................................................................................
  339. //aasta jargi otsing
  340. Scanner sc=new Scanner(System.in);
  341. int aasta=0;
  342. System.out.println("Sisestage aasta (naiteks 2015):");
  343. aasta=sc.nextInt();//kasutaja sisestab aasta
  344. ajalugu.add(c.getTime()+"Kasutaja sisestas aasta "+aasta+".");//info ajalukku
  345. TreeMap a15= new TreeMap();//kolm treemappi andmete hoidmiseks
  346. TreeMap a16= new TreeMap();
  347. TreeMap a17= new TreeMap();
  348. switch(aasta){
  349.  
  350. case 2015:
  351. for(int t=0; t<keys.length; t++){//siin kontrollitakse kas rida sisaldab vajalikku aasta, kui jah, siis seda pannaks treemappi
  352. if(keys[t].contains("t15")){
  353. a15.put(keys[t],values[t]);//treemappi panek
  354. }}
  355. Set set1=a15.entrySet();
  356. Iterator q=set1.iterator();
  357.  
  358. while(q.hasNext()){
  359. Map.Entry me1=(Map.Entry)q.next();
  360.  
  361. System.out.printf("Kood: "+me1.getKey()+" keskmine hinne: "+me1.getValue()+"%n");//vajatud aasta tudengite info printimine
  362. }
  363.  
  364. break;
  365. case 2016: for(int t=0; t<keys.length; t++){
  366. if(keys[t].contains("t16")){
  367. a16.put(keys[t],values[t]);
  368. }
  369. } Set set2=a16.entrySet();
  370. Iterator q1=set2.iterator();
  371.  
  372. while(q1.hasNext()){
  373. Map.Entry me2=(Map.Entry)q1.next();
  374.  
  375. System.out.printf("Kood: "+me2.getKey()+" keskmine hinne: "+me2.getValue()+"%n");
  376. } break;
  377. case 2017: for(int t=0; t<keys.length; t++){
  378. if(keys[t].contains("t17")){
  379. a17.put(keys[t],values[t]);
  380. }
  381. }
  382. Set set3=a17.entrySet();
  383. Iterator q2=set3.iterator();
  384.  
  385. while(q2.hasNext()){
  386. Map.Entry me3=(Map.Entry)q2.next();
  387.  
  388. System.out.printf("Kood: "+me3.getKey()+" keskmine hinne: "+me3.getValue()+"%n");
  389. }
  390. break;
  391. default: System.out.println("Aasta on sisestatud valesti voi ei eksisteeri loetelus."); ajalugu.add(c.getTime()+"Kasutaja sisestas aasta valesti."); break;
  392. }
  393. }
  394. //hinnete vahemiku jargi otsing
  395. public static void vahemik() throws FileNotFoundException, IOException{
  396. Scanner sc=new Scanner(System.in);
  397. Double ealg=0.0;//muutujad vahemiku arvutamiseks, kasutaja sisestab naid all
  398. Double elopp=5.0;
  399.  
  400. System.out.println("Sisestage vahemiku alumine piir (minimum 0,0):");
  401. int kontroll1=0;
  402. do{// do tsukkel selleks, et kasutaja ei saaks sisestada hinnet alla 0 ja ule 5
  403. ealg=sc.nextDouble();
  404. ajalugu.add(c.getTime()+"Kasutaja sisestas alumist piiri "+ealg+".");
  405. int ret=Double.compare(ealg,0.0);//need muutuja on selleks, et vorrelda Double vaartusi.
  406. int ret1=Double.compare(ealg,5.0);
  407.  
  408. if(ret<0||ret1>0){//kui ret muutuja on vahem nullist voi ret1 on suurem nullist, siis kasutaja sisestab uuseti
  409. System.out.println("Sisestage alumine piir uuesti: ");
  410. ajalugu.add(c.getTime()+"Kasutaja alumine piir oli valesti sisestatud. Sisestas uuesti.");
  411. kontroll1=0;
  412. }else{
  413. kontroll1=1;//kontrollimine lopeb, kui sobib
  414. }
  415. }while(kontroll1==0);
  416.  
  417. System.out.println("Sisestage vahemiku ulemine piir (maksimum 5,0):");//sama ulemise piirega
  418.  
  419. int kontroll2=0;
  420. do{
  421. elopp=sc.nextDouble();
  422. ajalugu.add(c.getTime()+"Kasutaja sisestas alumine piir "+elopp+".");
  423.  
  424. if(elopp<0.0||elopp<ealg||elopp>5.0){
  425. System.out.println("Sisestage ulemine piir uuesti: ");
  426. ajalugu.add(c.getTime()+"Kasutaja alumine piir oli valesti sisestatud. Sisestas uuesti.");
  427. kontroll1=0;
  428. }else{
  429. kontroll2=1;
  430. }
  431. }while(kontroll2==0);
  432. //.................................................................................................
  433. File f=new File("tudeng.txt");
  434. FileReader fr=new FileReader(f);
  435.  
  436. BufferedReader reader=new BufferedReader(fr);
  437. String failirida;
  438. TreeMap andmed=new TreeMap();
  439.  
  440. while((failirida=reader.readLine())!=null){
  441. if(failirida.contains("t166")||failirida.contains("t156")||failirida.contains("t176")){
  442.  
  443. char[] chars1=new char[7];//char array for executing the text file
  444. char[] chars2=new char[3];
  445. String votmed;
  446. String vaartused;
  447.  
  448. //System.out.printf(failirida.trim());
  449. failirida.trim().getChars(0,7,chars1,0);
  450. votmed=new String(chars1);
  451. failirida.trim().getChars(9, 12, chars2, 0);
  452. vaartused=new String(chars2);
  453. andmed.put(votmed,vaartused);
  454. }
  455. }
  456. String[] keys=new String[andmed.size()];
  457. Double[] values=new Double[andmed.size()];
  458.  
  459. Set set=andmed.entrySet();
  460. Iterator i=set.iterator();
  461. int iter=0;
  462.  
  463. System.out.println("Algloetelu:");
  464.  
  465. while(i.hasNext()){
  466. String ram1;
  467. Double ram2;
  468. Map.Entry me=(Map.Entry)i.next();
  469. System.out.print(me.getKey()+": ");
  470. ram1=(me.getKey()).toString();
  471. keys[iter]=ram1;
  472.  
  473.  
  474. System.out.println(me.getValue());
  475. String str=me.getValue().toString();
  476. ram2=Double.valueOf(str).doubleValue();
  477. values[iter]=ram2;
  478.  
  479. iter++;
  480. }
  481. //.................................................................................................
  482.  
  483. //sorteerime keskmise hinde jargi
  484. ArrayList <String> sortedK=new ArrayList<String>();
  485. ArrayList <Double> sortedV=new ArrayList<Double>();
  486.  
  487.  
  488. Double ram1;
  489.  
  490. String ram3;
  491.  
  492.  
  493. for(int q=0; q<values.length; q++){//tavaline Bubble Sort
  494. for(int r=0; r<values.length-1; r++){
  495. if(values[r]>values[r+1]){
  496. ram1=values[r];
  497. ram3=keys[r];
  498.  
  499. values[r]=values[r+1];
  500. keys[r]=keys[r+1];
  501. values[r+1]=ram1;
  502. keys[r+1]=ram3;
  503. }
  504. }
  505. }
  506. System.out.println("Sorteeritud:");//sorteeritud andmete printimine
  507. for(int t=0; t<values.length; t++){
  508. System.out.printf(keys[t]+" "+values[t]+"%n");
  509. }
  510.  
  511.  
  512. for(int d=0; d<values.length; d++){//vordleme nuud kasutaja poolt sisestatud piirte vaartustega koik vaartused massiivis ja paneme sobivaid vastavatesse massiividesse
  513. int ret=Double.compare(values[d],ealg);
  514. int ret1=Double.compare(values[d],elopp);
  515.  
  516. if((ret>0||ret==0)&&(ret1<0||ret==0)){
  517. sortedV.add(values[d]);
  518. sortedK.add(keys[d]);
  519. }
  520. }
  521.  
  522. System.out.printf("Sorteeritud vahemikus %sst - %sni andmed:%n",ealg,elopp);
  523.  
  524. for(int o=0;o<sortedV.size();o++){
  525. System.out.printf(sortedK.get(o)+" "+sortedV.get(o)+"%n");//prindime valja vahemikke
  526. }
  527.  
  528.  
  529.  
  530.  
  531. }
  532. public static void history() throws IOException{//ajalugu kirjutamise meetod
  533. FileWriter writer1=new FileWriter("history.txt", false);//kaivitame file writer mis kirjutab faili history.txt
  534.  
  535. for(int q=0; q<ajalugu.size(); q++){//for tsukke votab koik elemendid arraylistist ajalugu ja sisestab (append) history.txt failisse
  536. writer1.append(ajalugu.get(q));
  537. writer1.append('\n');
  538. }
  539. writer1.flush();
  540. }
  541.  
  542.  
  543. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement