begin process at 2008 08 20 14:32:20
1 228 884 membres
250 nouveaux aujourd'hui
14 258 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

RANDOMACCESSFILE ET BUFFEREDREADER, ECRIRE, LIRE, MODIFIER ET RECHERCHER DANS UN FICHIER


Information sur la source

Catégorie :Application Classé sous : aléatoire, random, rechercher, lire, écrire Niveau : Débutant Date de création : 31/08/2002 Date de mise à jour : 31/08/2002 19:17:30 Vu : 8 616

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

Description

Source

  • /*********************************************************
  • Nom du programme : ExerciceFichier.java
  • Auteur : Zufferey Matthieu
  • Date : 30.08.2002
  • Description : C'est un exercice sur les fichiers
  • Préconditions : Aucune
  • /********************************************************/
  • import java.io.* ;
  • import java.util.* ;
  • public class Exercice
  • {
  • public static void main(String[] args) throws IOException
  • {
  • File fichier = new File("employe.txt") ;
  • RandomAccessFile donnee = new RandomAccessFile(fichier, "rw") ;
  • int numero = 0 ;
  • int choix = 0 ;
  • int compteur = 1 ;
  • double moyenne = 0 ;
  • double newSalaire = 0 ;
  • boolean sortie = false ;
  • donnee.writeInt(compteur) ;
  • donnee.writeChar(' ') ;
  • donnee.writeUTF("Patolachi") ;
  • donnee.writeChar(' ') ;
  • donnee.writeUTF("Marcel") ;
  • donnee.writeChar(' ') ;
  • donnee.writeDouble(5500.00) ;
  • donnee.writeChar('\n') ;
  • BufferedReader in = new BufferedReader(new InputStreamReader(System.in)) ;
  • do
  • {
  • do
  • {
  • try
  • {
  • System.out.println("Menu") ;
  • System.out.println("====\n") ;
  • System.out.println("1. Afficher les donnees") ;
  • System.out.println("2. Calculer le salaire moyens") ;
  • System.out.println("3. Ajouter un employe") ;
  • System.out.println("4. Modifier le salaire d'un employe") ;
  • System.out.println("5. Quitter") ;
  • choix = Integer.parseInt(in.readLine()) ;
  • }
  • catch(NumberFormatException e)
  • {}
  • }
  • while(choix < 1 || choix > 5) ;
  • switch(choix)
  • {
  • case 1 :
  • {
  • System.out.println() ;
  • donnee.seek(0) ;
  • for (int i = 0 ; i < compteur ; i++)
  • {
  • try
  • {
  • System.out.print(donnee.readInt()) ;
  • System.out.print(donnee.readChar()) ;
  • System.out.print(donnee.readUTF()) ;
  • System.out.print(donnee.readChar()) ;
  • System.out.print(donnee.readUTF()) ;
  • System.out.print(donnee.readChar()) ;
  • System.out.print(donnee.readDouble()) ;
  • System.out.print(donnee.readChar()) ;
  • }
  • catch(EOFException e)
  • {}
  • }
  • System.out.println() ;
  • }
  • break ;
  • case 2 :
  • {
  • System.out.println() ;
  • moyenne = 0 ;
  • donnee.seek(0) ;
  • for (int i = 0 ; i < compteur ; i++)
  • {
  • try
  • {
  • donnee.readInt() ;
  • donnee.readChar() ;
  • donnee.readUTF();
  • donnee.readChar() ;
  • donnee.readUTF() ;
  • donnee.readChar() ;
  • moyenne += donnee.readDouble() ;
  • donnee.readChar() ;
  • }
  • catch(EOFException e)
  • {}
  • }
  • System.out.println("La moyenne des salaires est de : " + (moyenne/compteur)) ;
  • System.out.println() ;
  • }
  • break ;
  • case 3 :
  • {
  • System.out.println() ;
  • donnee.seek(donnee.length()) ;
  • compteur += 1 ;
  • try
  • {
  • donnee.writeInt(compteur) ;
  • donnee.writeChar(' ') ;
  • System.out.println("Entrez le nom du nouvel employe") ;
  • donnee.writeUTF(in.readLine()) ;
  • donnee.writeChar(' ') ;
  • System.out.println("Entrez le prenom du nouvel employe") ;
  • donnee.writeUTF(in.readLine()) ;
  • donnee.writeChar(' ') ;
  • System.out.println("Entrez le salaire du nouvel employe") ;
  • donnee.writeDouble(Double.parseDouble(in.readLine())) ;
  • donnee.writeChar('\n') ;
  • }
  • catch(EOFException e)
  • {}
  • System.out.println() ;
  • }
  • break ;
  • case 4 :
  • {
  • System.out.println() ;
  • donnee.seek(0) ;
  • do
  • {
  • System.out.println("Entrez le numero de l'employe a qui vous voulez change le salaire") ;
  • numero = Integer.parseInt(in.readLine()) ;
  • }
  • while(numero < 0 || numero > compteur) ;
  • System.out.println("Entrez le montant du nouveau salaire") ;
  • newSalaire = Double.parseDouble(in.readLine()) ;
  • int numDonnee = 0 ;
  • try
  • {
  • for (int i = 0 ; i < compteur ; i++)
  • {
  • numDonnee = donnee.readInt() ;
  • if(numero == numDonnee)
  • {
  • donnee.readChar() ;
  • donnee.readUTF() ;
  • donnee.readChar();
  • donnee.readUTF() ;
  • donnee.readChar() ;
  • donnee.writeDouble(newSalaire) ;
  • donnee.readChar() ;
  • }
  • else
  • {
  • donnee.readChar() ;
  • donnee.readUTF() ;
  • donnee.readChar();
  • donnee.readUTF() ;
  • donnee.readChar() ;
  • donnee.readDouble() ;
  • donnee.readChar() ;
  • }
  • }
  • }
  • catch(EOFException e)
  • {}
  • System.out.println() ;
  • }
  • break ;
  • case 5 :
  • {
  • System.out.println() ;
  • sortie = true ;
  • }
  • break ;
  • }
  • }
  • while(sortie != true) ;
  • System.exit(0) ;
  • }
  • }
/*********************************************************

	Nom du programme :	ExerciceFichier.java
	Auteur :			Zufferey Matthieu
	Date :				30.08.2002
	Description :		C'est un exercice sur les fichiers
	Préconditions :		Aucune


/********************************************************/

import java.io.* ;
import java.util.* ;

public class Exercice
	{
	public static void main(String[] args) throws IOException
		{
		File fichier = new File("employe.txt") ;

		RandomAccessFile donnee = new RandomAccessFile(fichier, "rw") ;
		int numero = 0 ;
		int choix = 0 ;
		int compteur = 1 ;
		double moyenne = 0 ;
		double newSalaire = 0 ;
		boolean sortie = false ;
		
		donnee.writeInt(compteur) ;
		donnee.writeChar(' ') ;
		donnee.writeUTF("Patolachi") ;
		donnee.writeChar(' ') ;
		donnee.writeUTF("Marcel") ;
		donnee.writeChar(' ') ;
		donnee.writeDouble(5500.00) ;
		donnee.writeChar('\n') ;
		
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in)) ;
		

		
		do
			{		
			do
				{
				try
					{
					System.out.println("Menu") ;
					System.out.println("====\n") ;
					System.out.println("1. Afficher les donnees") ;
					System.out.println("2. Calculer le salaire moyens") ;
					System.out.println("3. Ajouter un employe") ;
					System.out.println("4. Modifier le salaire d'un employe") ;
					System.out.println("5. Quitter") ;		
					choix = Integer.parseInt(in.readLine()) ;
					}
				catch(NumberFormatException e)
					{}
				}
			while(choix < 1 || choix > 5) ;

			switch(choix)
				{
				case 1 :
					{
					System.out.println() ;	
						
					donnee.seek(0) ;
					
					for (int i = 0 ; i < compteur ; i++)
						{
						try
							{
								System.out.print(donnee.readInt()) ;
								System.out.print(donnee.readChar()) ;
								System.out.print(donnee.readUTF()) ;
								System.out.print(donnee.readChar()) ;
								System.out.print(donnee.readUTF()) ;
								System.out.print(donnee.readChar()) ;
								System.out.print(donnee.readDouble()) ;
								System.out.print(donnee.readChar()) ;					
							}
						catch(EOFException e)
							{}
						}
										
					System.out.println() ;
					}				
				break ;
	
				case 2 :
					{
					System.out.println() ;	
					moyenne = 0 ;	
					donnee.seek(0) ;
					
					for (int i = 0 ; i < compteur ; i++)
						{
	
						try
							{
								donnee.readInt() ;
								donnee.readChar() ;
								donnee.readUTF();
								donnee.readChar() ;
								donnee.readUTF() ;
								donnee.readChar() ;
								moyenne += donnee.readDouble() ;
								donnee.readChar() ;					
							}
						catch(EOFException e)
							{}
						}
					
					System.out.println("La moyenne des salaires est de : " + (moyenne/compteur)) ;
										
					System.out.println() ;
					}				
				break ;
	
				case 3 :
					{
					System.out.println() ;	
						
					donnee.seek(donnee.length()) ;
					compteur += 1 ;
					
					try
						{
							donnee.writeInt(compteur) ;
							donnee.writeChar(' ') ;
							System.out.println("Entrez le nom du nouvel employe") ;
							donnee.writeUTF(in.readLine()) ;
							donnee.writeChar(' ') ;
							System.out.println("Entrez le prenom du nouvel employe") ;
							donnee.writeUTF(in.readLine()) ;
							donnee.writeChar(' ') ;
							System.out.println("Entrez le salaire du nouvel employe") ;
							donnee.writeDouble(Double.parseDouble(in.readLine())) ;
							donnee.writeChar('\n') ;					
						}
					catch(EOFException e)
						{}
										
					System.out.println() ;
					}				
				break ;

				case 4 :
					{
					System.out.println() ;	
						
					donnee.seek(0) ;
					
					do
						{
						System.out.println("Entrez le numero de l'employe a qui vous voulez change le salaire") ;
						numero = Integer.parseInt(in.readLine()) ;
						}
					while(numero < 0 || numero > compteur) ;
					
					System.out.println("Entrez le montant du nouveau salaire") ;
					newSalaire = Double.parseDouble(in.readLine()) ;
					
					int numDonnee = 0 ;
					
					try
						{
						for (int i = 0 ; i < compteur ; i++)
							{
							numDonnee = donnee.readInt() ;	
									
							if(numero == numDonnee)
								{
								donnee.readChar() ;
								donnee.readUTF() ;
								donnee.readChar();
								donnee.readUTF() ;
								donnee.readChar() ;
								donnee.writeDouble(newSalaire) ;
								donnee.readChar() ;	
								}
							else
								{
								donnee.readChar() ;
								donnee.readUTF() ;
								donnee.readChar();
								donnee.readUTF() ;
								donnee.readChar() ;
								donnee.readDouble() ;
								donnee.readChar() ;								
								}	
							}			
						}
					catch(EOFException e)
						{}
										
					System.out.println() ;
					}				
				break ;
				
				case 5 :
					{
					System.out.println() ;	
					sortie = true ;	
					}				
				break ;	
				
				}
			}
		while(sortie != true) ;
	

		System.exit(0) ;	
		}
	}
  • signaler à un administrateur
    Commentaire de spidermax55 le 23/07/2003 15:47:12

    Dans ton code, ta méthode double.parseDouble ne fonctionnne pas chez moi, il faut plutot mettre Double.parseDouble !! C'est intéressant comme programme, puisque j'essaye en ce moment d'es faire un comme ça, mais dans une interface graphique.Au lieu d'un randomAccessFile, j'ai essayé avec un File et un objet Vector, qui marche à moitié...Est ce que ton code permet de modifier aussi le nom et le prénom ?

  • signaler à un administrateur
    Commentaire de polz le 26/07/2003 13:39:44

    Ben en fait, tu reprends juste la méthode de modification du salaire et tu y changes les paramètres. Sinon, il y a un autre moyen qui consiste à écrire un objet dans un fichier (ca peut etre un vecteur ou autre chose). Si tu veux, je peux t'envoyer un code

  • signaler à un administrateur
    Commentaire de spidermax55 le 28/07/2003 10:25:04

    J'ai un problème avec cette classe Exercice, vu que je voudrais conserver le fichier dans lequel on a ajouté des éléments, alors que tu crées un nouveau fichier à chaque fois. N'y a-t-il pas un moyen de remédier à ce problème, tout en gardant un RandomAccessFile? J'ai essayé avec un FileInputstream, mais c'est pas compatible, malheureusement... Merci de ton aide

  • signaler à un administrateur
    Commentaire de waddle le 25/11/2004 10:54:48

    ouais...enfin c de C quoi....t'as le droit de faire de l'objet aussi avec un langage objet....

    waddle

    --
    EPITA Student
    Promo 2006

  • signaler à un administrateur
    Commentaire de indo__ le 29/11/2004 02:55:47

    c tres procedural :)

Ajouter un commentaire

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS