【程序50】 題目:有五個學生,每個學生有3門課的成績,從鍵盤輸入 以上數據(包括學生號,姓名,三門課成績),計算出平均 成績,將原有的數據和計算出的平均分數存放在磁盤文件"stud"中。

/*
	2017年3月13日16:17:38
	java基礎50道經典練習題 例50
	Athor: ZJY 
	Purpose:  
	【程序50】
	題目:有五個學生,每個學生有3門課的成績,從鍵盤輸入
	以上數據(包括學生號,姓名,三門課成績),計算出平均
	成績,將原有的數據和計算出的平均分數存放在磁盤文件"stud"中。

*/
import java.io.*;

class Students { //定義學生模型
	public int id; //學生的學號
	public String name; //學生的姓名
	public float[] grade = new float[3]; //學生的三門成績
	public float sum; //學生三門成績之和
	public Students(int id, 
					String name, 
					float[] grade, 
					float sum) {
		this.id = id; 
		this.name = name;
		this.grade[0] = grade[0];
		this.grade[1] = grade[1];
		this.grade[2] = grade[2];
		this.sum = sum;	
	} 
	public static void traverse(Students stud) {
		System.out.println(stud.id+" "+stud.name+" "+stud.grade[0]
			  +" "+stud.grade[1]+" "+stud.grade[2]+" "+stud.sum/3);
	}
}
public class ProgramNo50_1
{
	public static void main(String[] args) throws IOException {
		Students[] stud = new Students[5];
		infoInput(stud);
		infoOutput(stud);
	}
	//學生信息的輸入 學號 姓名 成績
	private static void infoInput(Students[] stud) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int id = 0; 
		String name = null; 
		float[] grade = new float[3]; 
		float sum = 0;
		boolean isRecord = true;
		
		try {
			while (isRecord) {
				for (int i=0; i<stud.length; i++) {
					System.out.print("輸入第"+(i+1)+"名學生的學號: ");
					id = Integer.parseInt(br.readLine());
					System.out.print("輸入第"+(i+1)+"名學生的姓名: ");
					name = br.readLine();
					sum = 0;
					for (int j=0; j<grade.length; j++) {
						System.out.print("輸入第"+(i+1)+"名學生的第"+(j+1)+"門成績: ");
						grade[j] = Float.parseFloat(br.readLine());
						sum += grade[j];
					}
					System.out.println();
					
					stud[i] = new Students(id, name, grade, sum);
				}
				isRecord = false;
			}
			br.close();
		}catch(NumberFormatException e) {
			e.printStackTrace();
		}
	}
	//學生信息的輸出 學號 姓名 成績
	private static void infoOutput(Students[] stud) throws IOException {
		FileWriter fw 
			= new FileWriter("G:/Project/java_object/java基礎50道經典練習題/topic50/學生信息1.txt");
		
		BufferedWriter bw = new BufferedWriter(fw);
		bw.write(" NO.   "+" name   "+" grade1  "+"grade2  "+"grade3  "+"average ");
		bw.newLine();
		//for (int i=0; i<stud.length; i++) 
			//Students.traverse(stud[i]);
		for (int i=0; i<stud.length; i++) {
			if(stud[i].name.length() == 5) {
				bw.write(stud[i].id+"    ");
				bw.write(stud[i].name+"    ");
			}else if(stud[i].name.length() > 6) {
				bw.write(stud[i].id+"  ");
				bw.write(stud[i].name+"   ");
			}else {
				bw.write(stud[i].id+"   ");
				bw.write(stud[i].name+"    ");
			}
			for (int j=0; j<stud[i].grade.length; j++) {
				bw.write(stud[i].grade[j]+"    ");
			}
			bw.write((stud[i].sum/3)+"   ");
			bw.newLine();
		}
		bw.close();
		
	}
}
/*
	2017年3月13日16:17:38
	java基礎50道經典練習題 例50
	Athor: ZJY 
	Purpose:  
*/
import java.io.*;
public class ProgramNo50_2
{
	//定義學生模型
	String[] number = new String[5];
	String[] name = new String[5];
	float[][] grade = new float[5][3];
	float[] sum = new float[5];
	public static void main(String[] args) throws Exception{
		ProgramNo50_2 stud = new ProgramNo50_2();
		stud.input();
		stud.output();
	}
	//輸入學號、姓名、成績
	void input() throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		//錄入狀態標識
		boolean isRecord = true;
		while(isRecord){
			try{
			  for(int i=0; i<5; i++) {
				  System.out.print("請輸入學號:");
				  number[i] = br.readLine();
				  System.out.print("請輸入姓名:");
				  name[i] = br.readLine();
				  for(int j=0; j<3; j++) {
					  System.out.print("請輸入第"+(j+1)+"門課成績:");
					  grade[i][j] = Integer.parseInt(br.readLine());
				  }
				  System.out.println();
				  sum[i] = grade[i][0]+grade[i][1]+grade[i][2];
			  }
			    isRecord = false;
		    }catch(NumberFormatException e){
			     System.out.println("請輸入一個數字!");
		  }
		}
	}
	//輸出文件
	void output() throws IOException{
		FileWriter fw = new FileWriter("G:/Project/java_object/java基礎50道經典練習題/topic50/學生信息2.txt");
		BufferedWriter bw = new BufferedWriter(fw);	
		bw.write("No.  "+"Name  "+"grade1  "+"grade2  "+"grade3  "+"average");
		bw.newLine();
		for(int i=0; i<5; i++) {
		  bw.write(number[i]);
		  bw.write("  "+name[i]);
		  for(int j=0; j<3; j++)
		    bw.write("  "+grade[i][j]);
		  bw.write("  "+(sum[i]/5)); 
		  bw.newLine();
		}
		bw.close();
	}
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章