Announcement
Collapse
No announcement yet.
File - leggere e modificare da file
Collapse
X
-
This is exceptionally pleasant and nice post....You shook posting it....Thanks a ton for posting it....!!!
-
vabbè, lo faccio in buonafede ahahah :P comunque era per comodità mi scocciavo di farle private e fare i metodi per farli ritornare
Leave a comment:
-
Originally posted by TheAvenger View PostTraccia esercizio:
Una libreria ha deciso di informatizzare il proprio archivio delle giacenze. Si è creato un file
in cui, per ogni libro disponibile in magazzino, sono stati inseriti i seguenti elementi:
- titolo del libro;
- autore;
- editore;
- numero di copie disponibili.
La libreria ha la necessità di effettuare le seguenti operazioni:
- cercare tutti i libri di un particolare autore;
- cercare tutti i libri che contengono una determinata stringa nel titolo;
- cercare i libri che hanno il numero di copie massimo;
- listare tutti i libri per cui il numero di copie disponibili è al di sotto di una determinata
soglia.
- aggiornare il numero di copie di un libro. Il libro da aggiornare è identificato dal titolo.
Loperazione di aggiornamento deve essere propagata al file.
Creare inoltre una classe main per testare le classi ed i metodi definiti. In particolare occorre
leggere da un file contenente i dati dei 5 libri mostrati di seguito;
visualizzare i libri scritti da Camilleri;
visualizzare i libri che hanno la parola sogni nel titolo;
visualizzare il libro con il numero massimo di copie;
visualizzare i libri che hanno meno di 15 copie disponibili;
aggiungere 30 copie al libro sogni rossi.
Una voce di notte
Camilleri Andrea
Sellerio Editore Palermo
44
Cinquanta sfumature di grigio
James E. L.
Mondadori
21
Il corpo umano
Giordano Paolo
Mondadori
33
Sogni rossi
Mo Yan
Einaudi
11
Fai bei sogni
Gramellini Massimo
Longanesi
14
Ho pensato di risolvere questo esercizio dividendo il problema in 3 classi, qui sotto riportate:
Classe Libro che poteva anche essere una classe interna a Libreria
Allego anche il file se vi annoiate di copiare
PHP Code:
public class Libro {
public Libro(){}
public Libro(String titolo,String autore,String editore,int numCopie){
this.titolo = titolo;
this.autore = autore;
this.editore = editore;
numeroCopie = numCopie;
}
public void showLibro(){
System.out.println(titolo+", "+autore+", "+editore+", "+numeroCopie);
}
public String titolo;
public String autore;
public String editore;
public int numeroCopie;
}
Leave a comment:
-
eccoti la mia! non commentata perchè è altamente intuitiva
main
PHP Code:import java.util.*;
import java.io.File;
import java.io.PrintStream;
import java.lang.*;
import library.*;
public class main {
public static void main(String[] args) throws Exception {
ArrayList<book> libri = library.global.build_book_array("data.txt",5);
library.global.search_author_and_print_name(libri,"Camilleri Andrea",System.out);
library.global.search_title_substring_and_print_name(libri,"sogni",System.out);
library.global.max_count_and_print_name(libri,System.out);
library.global.low_copy_and_print_name(libri, 15, System.out);
library.global.add_count_from_book_name(libri,"sogni rossi", 30);
}
}
book class
PHP Code:package library;
public class book {
public void set_name( String in_name){
name = in_name;
}
public void set_author(String in_author){
author = in_author; ;
}
public void set_editor( String in_editor){
editor = in_editor;
}
public void set_count( int in_count){
count = in_count;
}
public void add_count( int in_count){
count += in_count;
}
public String get_name(){
return name;
}
public String get_author(){
return author;
}
public String get_editor(){
return editor;
}
public int get_count(){
return count;
}
private String name = "null";
private String author = "null";
private String editor = "null";
private int count = 0;
}
PHP Code:package library;
import java.util.*;
import java.io.*;
public class global {
public static ArrayList<book> build_book_array (String file_name, int n) throws Exception{
Scanner lettore = new Scanner(new File(file_name));
ArrayList<book> libri = new ArrayList<book>();
for(int i = 0; i<n ;++i){
book temp = new book();
temp.set_name(lettore.nextLine());
temp.set_author(lettore.nextLine());
temp.set_editor(lettore.nextLine());
temp.set_count(Integer.parseInt(lettore.nextLine()));
libri.add(temp);
}
return libri;
}
public static void search_author_and_print_name(ArrayList<book> libri, String in_author,PrintStream output){
int count = libri.size();
book temp;
for(int i = 0; i< count ; ++i){
temp = libri.get(i);
if ((temp.get_author()).equals(in_author)){
output.println(temp.get_name());
}
}
}
public static void search_title_substring_and_print_name(ArrayList<book> libri, String in_substring,PrintStream output){
int count = libri.size();
book temp;
for(int i = 0; i< count ; ++i){
temp = libri.get(i);
if ((temp.get_name()).indexOf(in_substring) != -1){
output.println(temp.get_name());
}
}
}
public static void max_count_and_print_name(ArrayList<book> libri,PrintStream output){
int count = libri.size();
book temp;
int flip = 1;
int max_id = -1;
for(int i = 0; i< count ; ++i){
temp = libri.get(i);
if (flip == 1 || temp.get_count() > libri.get(max_id).get_count() ){
flip=0;
max_id=i;
}
}
output.println(libri.get(max_id).get_name());
}
public static void low_copy_and_print_name(ArrayList<book> libri,int n, PrintStream output){
int count = libri.size();
book temp;
for(int i = 0; i< count ; ++i){
temp = libri.get(i);
if (temp.get_count() < n){
output.println(temp.get_name());
}
}
}
public static void add_count_from_book_name(ArrayList<book> libri, String in_name, int n){
int count = libri.size();
book temp;
for(int i = 0; i< count ; ++i){
temp = libri.get(i);
if ((temp.get_name()).equals(in_name)){
temp.add_count(n);
}
}
}
}
Leave a comment:
-
File - leggere e modificare da file
Traccia esercizio:
Una libreria ha deciso di informatizzare il proprio archivio delle giacenze. Si è creato un file
in cui, per ogni libro disponibile in magazzino, sono stati inseriti i seguenti elementi:
- titolo del libro;
- autore;
- editore;
- numero di copie disponibili.
La libreria ha la necessità di effettuare le seguenti operazioni:
- cercare tutti i libri di un particolare autore;
- cercare tutti i libri che contengono una determinata stringa nel titolo;
- cercare i libri che hanno il numero di copie massimo;
- listare tutti i libri per cui il numero di copie disponibili è al di sotto di una determinata
soglia.
- aggiornare il numero di copie di un libro. Il libro da aggiornare è identificato dal titolo.
Loperazione di aggiornamento deve essere propagata al file.
Creare inoltre una classe main per testare le classi ed i metodi definiti. In particolare occorre
leggere da un file contenente i dati dei 5 libri mostrati di seguito;
visualizzare i libri scritti da Camilleri;
visualizzare i libri che hanno la parola sogni nel titolo;
visualizzare il libro con il numero massimo di copie;
visualizzare i libri che hanno meno di 15 copie disponibili;
aggiungere 30 copie al libro sogni rossi.
Una voce di notte
Camilleri Andrea
Sellerio Editore Palermo
44
Cinquanta sfumature di grigio
James E. L.
Mondadori
21
Il corpo umano
Giordano Paolo
Mondadori
33
Sogni rossi
Mo Yan
Einaudi
11
Fai bei sogni
Gramellini Massimo
Longanesi
14
Ho pensato di risolvere questo esercizio dividendo il problema in 3 classi, qui sotto riportate:
Classe Libro che poteva anche essere una classe interna a Libreria
Allego anche il file se vi annoiate di copiare
PHP Code:
public class Libro {
public Libro(){}
public Libro(String titolo,String autore,String editore,int numCopie){
this.titolo = titolo;
this.autore = autore;
this.editore = editore;
numeroCopie = numCopie;
}
public void showLibro(){
System.out.println(titolo+", "+autore+", "+editore+", "+numeroCopie);
}
public String titolo;
public String autore;
public String editore;
public int numeroCopie;
}
Classe Libreria la più robusta dell'esercizio
PHP Code:import java.io.File;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Scanner;
public class Libreria {
public Libreria(File x) throws Exception{
libri = x;
}
public void ShowLibri() throws Exception{
in = new Scanner(libri);
Libro l = new Libro();
while(in.hasNext() == true){
l.titolo = in.nextLine();
l.autore = in.nextLine();
l.editore = in.nextLine();
String x = in.nextLine();
l.numeroCopie = Integer.parseInt(x);
l.showLibro();
}
}
public void ShowLibriAutore(String Autore)throws Exception{
in = new Scanner(libri);
Libro l = new Libro();
while(in.hasNext() == true){
l.titolo = in.nextLine();
l.autore = in.nextLine();
l.editore = in.nextLine();
String x = in.nextLine();
l.numeroCopie = Integer.parseInt(x);
String[] k = l.autore.split(" ");
for(int i=0;i < k.length;i++){
if(k[i].compareToIgnoreCase(Autore) == 0)
l.showLibro();
}
}
}
public void ShowLibriTitolo(String Titolo) throws Exception{
in = new Scanner(libri);
Libro l = new Libro();
while(in.hasNext() == true){
l.titolo = in.nextLine();
l.autore = in.nextLine();
l.editore = in.nextLine();
String x = in.nextLine();
l.numeroCopie = Integer.parseInt(x);
String[] k = l.titolo.split(" ");
for(int i=0;i < k.length;i++){
if(k[i].compareToIgnoreCase(Titolo) == 0)
l.showLibro();
}
}
}
public void ShowLibriMaxCopie() throws Exception{
in = new Scanner(libri);
Libro max,l;
max = new Libro(in.nextLine(),in.nextLine(),in.nextLine(),Integer.parseInt(in.nextLine()));
while(in.hasNext() == true){
l = new Libro(in.nextLine(),in.nextLine(),in.nextLine(),Integer.parseInt(in.nextLine()));
if(max.numeroCopie < l.numeroCopie){
max = l;
}
}
max.showLibro();
}
public void ShowLibriConPocheCopie(int copie) throws Exception{
in = new Scanner(libri);
Libro x;
while(in.hasNext() == true){
x = new Libro(in.nextLine(),in.nextLine(),in.nextLine(),Integer.parseInt(in.nextLine()));
if(x.numeroCopie < copie){
x.showLibro();
}
}
}
public void AggiungiCopieLibro(String titolo,int NuoveCopie) throws Exception{
ArrayList<Libro> libri = new ArrayList<Libro>();
//carica ArrayList
in = new Scanner(this.libri);
while(in.hasNext() == true){
libri.add(new Libro(in.nextLine(),in.nextLine(),in.nextLine(),Integer.parseInt(in.nextLine())));
}
//Scorri ArrayList e aggiungi nuove copie
for(int i=0;i<libri.size();i++){
if(libri.get(i).titolo.compareToIgnoreCase(titolo) == 0){
libri.get(i).numeroCopie += NuoveCopie;
}
}
//stampa ArrayList nel file
PrintStream x = new PrintStream(this.libri);
for(int i=0;i<libri.size();i++){
x.println(libri.get(i).titolo);
x.println(libri.get(i).autore);
x.println(libri.get(i).editore);
x.println(libri.get(i).numeroCopie);
}
}
private File libri;
private Scanner in;
}
PHP Code:import java.io.File;
public class index {
public static void main(String[] args) throws Exception{
File libri = new File("libreria.txt");
Libreria l = new Libreria(libri);
System.out.println("Visualizza tutti i libri");
l.ShowLibri();
System.out.println("\n\nVisualizza libri per autore: Camilleri");
l.ShowLibriAutore("Camilleri");
System.out.println("\n\nVisualizza libri per titolo: sogni");
l.ShowLibriTitolo("sogni");
System.out.println("\n\nVisualizza libro con più numero di copie disponibile:");
l.ShowLibriMaxCopie();
System.out.println("\n\nLibri con meno di 15 copie");
l.ShowLibriConPocheCopie(15);
System.out.println("\n\nAggiungere 30 libri al libro sogni rossi");
l.AggiungiCopieLibro("Sogni rossi",30);
l.ShowLibri();
}
}
Attached FilesLast edited by TheAvenger; 11-08-2013, 11:02 PM.Tags: None
Leave a comment: