Projet Java utilisant un fichier de lecture, un fichier d'écriture et des tableaux


J'ai une mission avec laquelle j'ai beaucoup de problèmes et j'ai vraiment besoin d'aide, iv est arrivé jusqu'à présent mais je suis maintenant coincé et j'ai été coincé pendant plusieurs jours. Voici la brève.

Les étudiants qui suivent la première année d'un diplôme en Études irrationnelles suivent deux modules: IR101 et IR102. Les règles d'évaluation stipulent ce qui suit: Les étudiants doivent réussir les deux modules afin de passer à l'étape 2. La note de passage pour un module est de 40. Les étudiants qui ne réussissent pas les deux modules seront réputés ont échoué. Les étudiants qui échouent à un seul des deux modules auront droit à une tentative de resit. Les étudiants qui échouent aux deux modules devront répéter l'année. Les étudiants qui réussissent les deux modules recevront une classe en fonction de leur note globale en utilisant l'échelle suivante: 70 – 100 1er 60 – 69.9 2.1 50 – 59.9 2.2 40 - 49.9 3e La marque agrégée est la moyenne des deux marques de module Une liste des étudiants qui suivent des études irrationnelles est contenue dans le fichier suivant. Chaque ligne du fichier contient un numéro d'étudiant (un entier) suivi du nom de l'étudiant (une chaîne).

IRstudent.txt comprend: 25987 Alan 25954 Betty 25654 Chris 25622 David 25321 Elsie 25220 Fiona 25212 Greg 25218 Helen 25147 Ian 25196 Jim

Les notes obtenues par les étudiants sont contenues dans les deux fichiers suivants. Chaque ligne contient le numéro d'identification de l'étudiant suivi de la note obtenue (un double). (À noter que les élèves n'apparaissent pas dans le même ordre dans les trois fichier.)

IR101.txt comprend: 25220 68.3 25212 70.5 25218 62.1 25147 38.3 25196 52.0 25987 35.6 25954 70.2 25654 58.6 25622 65.0 25321 51.5

IR102.txt comprend: 25987 20.7 25954 63.4 25218 53.4 25147 47.5 25196 49.8 25654 35.1 25622 57.8 25321 45.6 25220 75.6 25212 72.5

Votre tâche consiste à écrire un programme qui lit les informations des trois fichiers et génère une liste de transcriptions, classées par ordre décroissant de marque agrégée, dans un fichier dans le courant répertoire appelé " RankedList.txt". Une transcription comprend trois lignes: Ligne 1: Id étudiant suivi du nom de l'étudiant Ligne 2: Les deux marques de module suivies de la marque agrégée Les marques doivent afficher un chiffre après la virgule décimale. Ligne 3: La classe et le résultat. La classe d'un Échec, 3e, 2.1, 2.2, ou 1er. Le résultat devrait être une année de répétition, un examen spécifique ou passer à l'étape 2. Dans la liste des transcriptions, chaque transcription doit être séparée par une ligne de "-". L'exemple suivant est un exemple extrait d'une telle liste:

37695 Aristote IR101 52,0 IR102 49,8 Agrégat 50,9 Classe: 2.2 Résultat: Passer à l'étape 2

37622 Socrate IR101 38,3 IR102 47,5 Agrégat 42,9 Classe: Échec Résultat: Resit IR101

Vous pouvez supposer que le fichier d'entrée ne contient aucune erreur.

Maintenant, iv est allé jusqu'à ouvrir les fichiers et à les lire, mais je suis coincé à partir de là. Voici mon code jusqu'à présent.

import javax.swing.*;
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;


public class Task2 {

public Scanner input;
int reg;
double ir101,ir102l;
double aggregate;
String student_name;
ArrayList<Student> students = new ArrayList<Student>();

public void openIRstud()throws Exception{
    JFileChooser IRstudchooser = new JFileChooser();
    if(IRstudchooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION){
        java.io.File inFile = IRstudchooser.getSelectedFile();
        input = new Scanner(inFile);
        System.out.println("IRstudents file read successfully.");
    }
}
public void openIR101()throws Exception{
    JFileChooser IR101chooser = new JFileChooser();
    if(IR101chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION){
        java.io.File inFile = IR101chooser.getSelectedFile();
        input = new Scanner(inFile);
        System.out.println("IR101 file read successfully.");
    }
}
public void openIR102()throws Exception{
    JFileChooser IR102chooser = new JFileChooser();
    if(IR102chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION){
        java.io.File inFile1 = IR102chooser.getSelectedFile();
        input = new Scanner(inFile1);
        System.out.println("IR102 file read successfully.");
    }
}
public void readIRstud (){
    while(input.hasNext()){
        String irstudid = input.next();
        String irname = input.next();
        System.out.printf(" %s %s\n", irstudid, irname);
    }
    System.out.println("Complete.");
}
public void readIR101 (){
    while(input.hasNext()){
        String ir101studid = input.next();
        String ir101mark = input.next();
        System.out.printf(" %s %s\n", ir101studid, ir101mark);
    }
    System.out.println("Complete.");
}
public void readIR102 (){
    while(input.hasNext()){
        String ir102studid = input.next();
        String ir102mark = input.next();
        System.out.printf(" %s %s\n", ir102studid, ir102mark);
    }
    System.out.println("Complete.");
}
public void Student(){
    while (input.hasNext()) {
        String line = input.nextLine();
        Student e = new Student();
        e.reg = Integer.parseInt(line.split(" ")[0]);
        e.ir101 = Double.parseDouble(line.split(" ")[1]);
        students.add(e);
    }
}
}

Et voici mon principal (Donc loin cela ne fait que tester que les fichiers sont lus, et qu'il stocke dans un tableau qui ne sait même pas si cela fonctionne) PS c'est une classe distincte.

import java.io.IOException;


public class Task2test {
    public static void main(String[] args)throws Exception {
    Task2 r = new Task2();

    System.out.println("***** Marks Processing *****");
    System.out.println("Please select a file for IRstudents:");
    r.openIRstud();
    System.out.println("Now reading file IRstudents.");
    r.readIRstud();
    r.Student();

    System.out.println("Please select a file for IR101:");
    r.openIR101();
    System.out.println("Now reading IR101.");
    r.readIR101();
    r.Student();

    System.out.println("Please select a file for IR102:");
    r.openIR102();
    System.out.println("Now reading IR102.");
    r.readIR102();

}
}

Toute aide pour accomplir cela sera très appréciée, je suis presque prêt à retirer mes cheveux! merci!!!!

Author: Volken, 2015-04-05

1 answers

Vous devez d'abord faire la distinction entre les tâches.

1 - Définissez les classes dont vous aurez besoin pour votre projet.

2 - Définir leurs fonctions.

3 - Lire IRstudent.fichier txt et créer une liste de studests.

4 - Lire IR101.fichier txt et associer les notes aux étudiants.

5 - Lire IR102.fichier txt et associer les notes aux étudiants.

6 - Générer la marque agregate et la classe outcame pour les étudiants.

7 - Commande par agréger marquez les étudiants.

8 - Créer un nouveau fichier RankedList.txt pour stocker le résultat.

9 - Écrivez les informations des étudiants dans ce fichier.

Alors laisse aller étape par étape.

1 - Définissez les classes dont vous aurez besoin pour votre projet.

Élève de classe.

  • IdStudent

  • Nom

  • MarkIR101

  • MarkIR102

  • AgregateMark

Classe RankedList

  • Liste

  • Classes

  • Résultat

2 - Définir leurs fonctions.

Élève de classe

  • Liste getStudentList(java.io.Fichier irStudentsFile);
  • Il est possible de créer une liste de fichiers dans le fichier ir101File(java.io.File);
  • void setIR101Mark (java. io. File ir101File, List sudents);
  • Il est possible de créer une liste de fichiers dans le fichier Java ir102File.]}

Classe RankedList

  • Liste des étudiants;
  • addStudent(Étudiant étudiant);
  • orderByAgregateMark ();
  • writeToFile();

* * ÉTAPES 3, 4, 5, 6 **

Voici un exemple de code pour résoudre votre problème, mais je n'ai fait que jusqu'à l'étape 6, et maintenant, je crois que vous avez la condition pour terminer le projet.

   import java.io.File;
   import java.io.IOException;
   import java.math.BigDecimal;
   import java.math.BigInteger;
   import java.util.LinkedList;
   import java.util.List;
   import java.util.StringTokenizer;
   import java.util.function.Consumer;
   import java.util.logging.Level;
   import java.util.logging.Logger;
   import java.util.stream.Stream;

   public class Student {

private int idStudent;
private String name;
private BigDecimal ir101Mark;
private BigDecimal ir102Mark;
private BigDecimal agregateMark;

public int getIdStudent() {
    return idStudent;
}

public void setIdStudent(int idStudent) {
    this.idStudent = idStudent;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public BigDecimal getIr101Mark() {
    return ir101Mark;
}

public void setIr101Mark(BigDecimal ir101Mark) {
    this.ir101Mark = ir101Mark;
}

public BigDecimal getIr102Mark() {
    return ir102Mark;
}

public void setIr102Mark(BigDecimal ir102Mark) {
    this.ir102Mark = ir102Mark;
}

public BigDecimal getAgregateMark() {
    return agregateMark;
}

public void setAgregateMark(BigDecimal agregateMark) {
    this.agregateMark = agregateMark;
}

public static List<Student> getStudentList(java.io.File irStudentsFile){

    List<Student> students = new LinkedList<>();
    Stream<String> lines;
    try {
        lines = java.nio.file.Files.lines(irStudentsFile.toPath());
    } catch (IOException ex) {
        return null;
    }

    lines.forEach((Consumer<? super String>) line -> 
        {
            Student student = new Student();
            StringTokenizer sToken = new StringTokenizer(line, " ");
            student.setIdStudent(Integer.valueOf(sToken.nextToken()));
            student.setName(sToken.nextToken());

            students.add(student);
        } 

    );

    return students;
}

public static void setIR101Mark(java.io.File ir101File, List<Student> students){
    Stream<String> lines;
    try {
        lines = java.nio.file.Files.lines(ir101File.toPath());
    } catch (IOException ex) {
        return;
    }

    lines.forEach((Consumer<? super String>) new Consumer<String>() {

        @Override
        public void accept(String line) {
            Student student = null;
            StringTokenizer sToken = new StringTokenizer(line, " ");
            int idStudent = Integer.valueOf(sToken.nextToken());

            for (Student student1 : students) {
                if (student1.getIdStudent() == idStudent) {
                    student = student1;
                }
            }

            if (student == null) {
                return;
            }

            student.setIr101Mark(BigDecimal.valueOf(Double.valueOf(sToken.nextToken())));
        }
    }
    );
}

public static void setIR102Mark(java.io.File ir102File, List<Student> students){
    Stream<String> lines;
    try {
        lines = java.nio.file.Files.lines(ir102File.toPath());
    } catch (IOException ex) {
        return;
    }

    lines.forEach((Consumer<? super String>) new Consumer<String>() {

        @Override
        public void accept(String line) {
            Student student = null;
            StringTokenizer sToken = new StringTokenizer(line, " ");
            int idStudent = Integer.valueOf(sToken.nextToken());

            for (Student student1 : students) {
                if (student1.getIdStudent() == idStudent) {
                    student = student1;
                }
            }

            if (student == null) {
                return;
            }

            student.setIr102Mark(BigDecimal.valueOf(Double.valueOf(sToken.nextToken())));
        }
    }
    );
}

public static void agregateMark(List<Student> students){
    students.forEach(student ->{
        BigDecimal agregate = 
                student.getIr101Mark()
                .add(student.getIr102Mark())
                .divide(BigDecimal.valueOf(Double.valueOf(2)));

        student.setAgregateMark(agregate);
    });
}

public static void main(String args[]){
    File irStudentFile = new File("D:\\IRstudent.txt");
    File ir101File = new File("D:\\IR101.txt");
    File ir102File = new File("D:\\IR102.txt");
    List<Student> students = Student.getStudentList(irStudentFile);
    Student.setIR101Mark(ir101File, students);
    Student.setIR102Mark(ir102File, students);
    Student.agregateMark(students);



    System.out.println("*** List of students ***");
    students.forEach(student -> {
        System.out.println("id: " + student.getIdStudent());
        System.out.println("Name: " + student.getName());
        System.out.println("IR 101 Mark: " + student.getIr101Mark());
        System.out.println("IR 102 Mark: " + student.getIr102Mark());
        System.out.println("Agregate Mark: " + student.getAgregateMark());
        System.out.println("----------------------------------------------");
    });
}

}

 0
Author: Elyel Rubens da Rosa, 2015-04-05 19:45:05