`

从键盘上获取名字、语文、数学的成绩,计算总分然后填充到Student对象中,并将对象写入文件

    博客分类:
  • Java
阅读更多
下面是源文件
Students.java文件
package com.kingsoft.main;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

class Students implements Serializable {
  String name;
  int[] record = new int[4];
  int total;
  float avg;
  String grade;

  public Students() {
  }

  public String getName() {
    return name;
  }

  public int[] getRecord() {
    return record;
  }

  public int getTotal() {
    int s = 0;
    for (int i = 0; i < record.length; i++)
      s += record[i];
    return s;
  }

  public float getAvg() {
    float f = getTotal() / 4f;
    return f;
  }

  public String getGrade() {
    String str;
    if (avg < 100 && avg > 90)
      str = "A";
    else if (avg > 80)
      str = "B";
    else if (avg > 70)
      str = "C";
    else if (avg > 60)
      str = "D";
    else
      str = "F";
    return str;
  }
}


Students1.java文件
package com.kingsoft.main;

import java.io.*;

public class Students1 {
  public static int s = 0;

  /** Creates a new instance of Students1 */
  public Students1() {
  }

  public static void main(String[] args) throws Exception {
    InputStreamReader isr = new InputStreamReader(System.in);
    BufferedReader br = new BufferedReader(isr);
    System.out.println("请顺序输入名字及国语,英语,数学,科学的成绩.(eof:输入完毕)");
    String data;
    String[] str = new String[5];
    FileOutputStream fos = new FileOutputStream("C:\\Documents and Settings\\tliu\\桌面\\新建文件夹\\xi.txt");
    ObjectOutputStream oos = new ObjectOutputStream(fos);
    while (true) {
      data = br.readLine();
      s++;
      if (data.equals("eof"))
        break;
      str = data.split(" ");
      Students stu = new Students();
      stu.name = str[0];
      System.out.println(stu.name);
      stu.record[0] = Integer.parseInt(str[1]);
      System.out.println(stu.record[0]);
      stu.record[1] = Integer.parseInt(str[2]);
      stu.record[2] = Integer.parseInt(str[3]);
      stu.record[3] = Integer.parseInt(str[4]);
      stu.total = stu.getTotal();
      stu.avg = stu.getAvg();
      stu.grade = stu.getGrade();
      oos.writeObject(stu);
    }
    oos.close();
    System.out.println("文件内容");
    FileInputStream fis = new FileInputStream("D:\\xi.txt");
    ObjectInputStream ois = new ObjectInputStream(fis);
    for (int j = 1; j < s; j++) {
      Students stud;
      stud = (Students) ois.readObject();
      System.out.println("Students对象" + j + " " + "{" + stud.name + " " + stud.record[0] + " " + stud.record[1] + " "
          + stud.record[2] + " " + stud.record[3] + " " + stud.total + " " + stud.avg + " " + stud.grade + "}");
    }
    ois.close();
  }
}

class Students2 {
  public Students2() {
  }

  public static void main(String[] args) throws Exception {
    // TODO code application logic here
    int d = Students1.s;
    int[] a = new int[d];
    FileInputStream fis = new FileInputStream("C:\\Documents and Settings\\tliu\\桌面\\新建文件夹\\xi.txt");
    ObjectInputStream ois = new ObjectInputStream(fis);
    Students[] students = new Students[d];
    for (int i = 1; i < d; i++) {
      students[i] = (Students) ois.readObject();
    }
    ois.close();
    System.out.println("名字   " + "国语  " + "英语  " + "数学  " + "科学  " + "总分  " + "平均分  " + "学分  " + "顺序");
    for (int i = 1; i < d; i++) {
      int max = i;
      for (int j = i; j < d; j++) {
        if (students[j].avg > students[i].avg)
          max = j;
      }
      System.out.println(students[max].name + "   " + students[max].record[0] + "  " + students[max].record[1] + "  "
          + students[max].record[2] + "  " + students[max].record[3] + "  " + students[max].total + "  " + students[max].avg
          + "  " + students[max].grade + "  " + i);
    }
  }
}

分享到:
评论

相关推荐

    多关键字排序课程设计C源代码

    - **从文件读取数据**:从指定的文件中读取学生的成绩数据,并将其填充到链表中。 #### 3. 排序逻辑 ```c void sort_total(snode*head){ snode*p; FILE*fp0; int i,j,k,d,f; p=head-&gt;next; for(i=0;i;i++) { ...

    成绩报告单模版1

    最后,如果需要将生成的报告保存为文件,Python的内置`open()`函数配合`write()`方法可以写入文本文件,`csv`模块则可以方便地处理CSV格式的数据。结合上述内容,我们不仅可以创建出个性化的成绩报告单,还能实现大...

    学生成绩管理系统--C语言

    - **增加数据**:添加新学生的功能可能包含创建新的学生结构体,填充数据,然后将其追加到文件中。 - **删除数据**:删除学生记录可能涉及到查找特定学号的学生并从文件中移除对应的行。 - **修改数据**:更新...

    c语言学生管理系统

    - **readArr**: 从指定文件`"arr.dat"`中读取数据,并将数据填充到结构体数组中。 - **writeArr**: 将结构体数组中的数据写入到指定文件`"arr.dat"`中。 ##### 2.3 数据管理功能 ###### 2.3.1 添加学生信息 (`...

    大型实验报告(歌手比赛系统).doc

    6. **写入数据文件**:将所有选手和评委的评分数据保存到文本文件中。 7. **退出系统**:结束程序运行。 ### 二、运行环境 系统在Visual Studio 2010开发环境中构建,适用于Windows 8.1操作系统,硬件要求包括...

    综合设计范例---学生成绩管理系统(C语言注释版)

    `saverecord()`将内存中的数据写入文件,`loadrecord()`从文件读取数据并填充到内存。这使得即使程序退出,数据也能被保存并再次恢复。 ### 5. 菜单系统 系统的交互界面通过`menu_handle()`和`menu_select()`函数...

    学生信息管理系统 适合初学C语言的朋友学习

    系统使用了一个结构体`struct student`来表示学生的信息,包含学号(num)、姓名(name)、性别(sex)、语文(cgrade)、数学(mgrade)、英语(egrade)以及总分(totle)和平均分(ave)。此外,还定义了一个...

    C语言学生信息系统源代码

    - `shuru()`:负责接收用户输入并填充学生结构体,然后将数据写入文件。 - `xiugai()`:修改已有的学生信息,通常会涉及查找指定学生并更新其数据。 - `chaxun()`:查询学生信息,可能包含按特定条件筛选的功能。...

Global site tag (gtag.js) - Google Analytics