나는 많은 문제가 있고 정말로 도움이 필요하다는 임무가 있습니다 .iv는 지금까지 왔지만 지금은 붙어 있고 며칠 동안 붙어 있습니다. 다음은 요약입니다.
비합리적 연구에서 학위의 첫해를받는 학생들은 IR101과 IR102의 두 가지 모듈을 수강합니다. 평가 규칙은 다음을 규정합니다. 학생들은 2 단계로 진행하기 위해 두 모듈을 모두 통과해야합니다. 모듈의 합격 점수는 40 점입니다. 두 모듈을 모두 통과하지 못한 학생은 실패한 것으로 간주됩니다. 두 모듈 중 하나만 실패한 학생은 재 시도를 할 수 있습니다. 두 모듈을 모두 통과하지 못한 학생은 1 년을 반복해야합니다. 두 모듈을 모두 통과 한 학생은 다음 척도를 사용하여 총점에 따라 수업을 받게됩니다. 70 – 100 1 위 60 – 69.9 2.1 50 – 59.9 2.2 40 – 49.9 3 위 총점은 두 모듈 점수의 평균입니다. 비합리적 연구를 수강하는 학생들은 다음 파일에 포함되어 있습니다.
IRstudent.txt에는 다음이 포함됩니다. 25987 Alan 25954 Betty 25654 Chris 25622 David 25321 Elsie 25220 Fiona 25212 Greg 25218 Helen 25147 Ian 25196 Jim
학생들이 획득 한 마크는 다음 두 파일에 포함되어 있습니다. 각 줄에는 학생의 ID 번호와 획득 한 마크 (더블)가 있습니다. (학생들은 세 개의 파일에서 같은 순서로 나타나지 않습니다.)
IR101.txt는 다음을 포함합니다 : 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는 다음을 포함합니다 : 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
당신의 임무는 세 파일의 정보를 읽고 집계 마크의 내림차순으로 정렬 된 성적표 목록을 현재 디렉토리의 "RankedList.txt"라는 파일에 출력하는 프로그램을 작성하는 것입니다. 성적표는 세 줄로 구성됩니다. 1 행 : 학생 ID와 학생 이름 2 행 : 두 모듈 표시와 총합 표시 표시는 소수점 뒤에 한 자리를 표시해야합니다. 3 행 : 수업과 결과. 클래스는 Fail, 3rd, 2.1, 2.2 또는 1st 여야합니다. 결과는 반복 연도, 지정된 시험에 다시 응시하거나 2 단계로 진행해야합니다. 성적표 목록에서 각 성적표는 "-"행으로 구분되어야합니다. 다음은 이러한 목록에서 발췌 한 예입니다.
37695 Aristotle IR101 52.0 IR102 49.8 Aggregate 50.9 클래스 : 2.2 결과 : 2 단계로 진행
37622 Socrates IR101 38.3 IR102 47.5 Aggregate 42.9 클래스 : 실패 결과 : Resit IR101
입력 파일에 오류가 없다고 가정 할 수 있습니다.
이제 iv는 파일을 열고 읽는 데까지 이르렀지만 거기에서 멈춰 있습니다. 지금까지 내 코드가 있습니다.
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);
}
}
}
그리고 여기에 내 기본이 있습니다 (지금까지 파일을 읽었으며 작동하는지 확실하지 않은 배열에 저장하는 것만 테스트합니다) PS 이것은 별도의 클래스입니다.
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();
}
}
이 작업을 수행하는 데 도움이 될 것입니다. 머리를 뽑을 준비가 거의되었습니다! 감사합니다!
먼저 작업을 구분해야합니다.
1-프로젝트에 필요한 클래스를 정의합니다.
2-기능을 정의합니다.
3-IRstudent.txt 파일을 읽고 학생 목록을 만듭니다.
4-IR101.txt 파일을 읽고 마크를 학생들과 연결합니다.
5-IR102.txt 파일을 읽고 마크를 학생들과 연결합니다.
6-학생에 대한 종합 마크와 outcame 클래스를 생성합니다.
7-학생들을 집계하여 표시합니다.
8-결과를 저장할 새 파일 RankedList.txt를 만듭니다.
9-학생 정보를이 파일에 씁니다.
그래서 단계별로 가자.
1-프로젝트에 필요한 클래스를 정의합니다.
클래스 학생.
idStudent
이름
markIR101
markIR102
마크 추가
Class RankedList
명부
수업
결과
2-기능을 정의합니다.
수업 학생
Class RankedList
** 3, 4, 5, 6 단계 **
다음은 문제를 해결하기위한 코드 샘플이지만 6 단계까지만 수행했으며 이제 프로젝트를 완료 할 조건이 있다고 생각합니다.
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("----------------------------------------------");
});
}
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다