展开全部

之前写过一个记录学生学号,年龄,体重e5a48de588b63231313335323631343130323136353331333365636132,名字的数组结构,你可以稍作修改就可以了,请命名文件为HW1.javaimport java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.io.Serializable;

import java.util.Arrays;

import java.util.Comparator;

import java.util.Scanner;

class Student implements Comparable, Serializable{

/**

* Serializable UID: ensures serialize/de-serialize process will be successful.

*/

private static final long serialVersionUID = -3515442620523776933L;

public int getNumber() {

return number;

}

public void setNumber(int number) {

this.number = number;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

public double getWeight() {

return weight;

}

public void setWeight(double weight) {

this.weight = weight;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

private int number;

private int age;

private double weight;

private String name;

public Student(int number, int age, double weight, String name) {

this.number = number;

this.age = age;

this.weight = weight;

this.name = name;

}

@Override

public int compareTo(Student o) {

if (this.age == o.age) {

return (int)(this.weight - o.weight);

}

return this.age - o.age;

}

}

class StudentSortByAge implements Comparator {

@Override

public int compare(Student o1, Student o2) {

return o1.getAge() - o2.getAge();

}

}

class StudentSortByWeight implements Comparator {

@Override

public int compare(Student o1, Student o2) {

return (int)(o1.getWeight() - o2.getWeight());

}

}

public class HW1 {

//passing one and only one instance of scanner instance reduce complexity of program.

public static void main(String[] args) {

System.out.println("\nWelcome to the System, Choose options below: ");

printPrompt();

Student[] students = null;

Scanner scanner = new Scanner(System.in);

while(scanner.hasNextInt()) {

switch (scanner.nextInt()) {

case 1:

System.out.println("Print Student Information");

if (students == null) {

System.out.println("Please Initilise N students first");

} else {

printStudents(students);

}

printPrompt();

break;

case 2:

System.out.println("Enter numebr of students you want to create: ");

int number = scanner.nextInt();

students = initilise(number, scanner);

printPrompt();

break;

case 3:

System.out.println("Add a new student");

printPrompt();

if (students == null) {

System.out.println("Please Initilise N students first");

} else {

int newLength = students.length + 1;

students = Arrays.copyOf(students, newLength);

students[newLength - 1] = createStudent(scanner);

System.out.println("New student has been added.");

printPrompt();

}

break;

case 4:

System.out.println("Sorting by Age, Weight in Asce order");

if (students == null) {

System.out.println("Please Initilise N students first");

} else {

Student[] sortedStudents = students;

Arrays.sort(sortedStudents);

printStudents(sortedStudents);

}

break;

case 5:

System.out.println("Calcaulte Min, Max, Ave of Age and Weight");

if (students == null) {

System.out.println("Please Initilise N students first");

} else {

Student[] sortedAgeStudents = students;

Arrays.sort(sortedAgeStudents,  new StudentSortByAge());

Student[] sortedWeightStudents = students;

Arrays.sort(sortedWeightStudents,  new StudentSortByWeight());

int averageAge = 0;

double averageWeight = 0.0;

for (Student student : sortedAgeStudents) {

averageAge += student.getAge();

averageWeight += student.getWeight();

}

averageAge = averageAge / sortedAgeStudents.length;

averageWeight = averageWeight / sortedWeightStudents.length;

System.out.printf("Min Age: %d, Max Age: %d, Ave Age: %d\n", sortedAgeStudents[0].getAge(), sortedAgeStudents[sortedAgeStudents.length - 1].getAge(), averageAge);

System.out.printf("Min Weight: %f, Max Weight: %f, Ave Weight: %f\n", sortedWeightStudents[0].getWeight(), sortedWeightStudents[sortedWeightStudents.length - 1].getWeight(), averageWeight);

}

break;

case 6:

System.out.println("Write Student data into file");

try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("studentsData"), true))) {

oos.writeObject(students);

printPrompt();

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

break;

case 7:

System.out.println("Read studentData from file");

try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(new File("studentsData")))) {

students = (Student[]) (ois.readObject());

printPrompt();

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

break;

default:

scanner.close();

System.out.println("Quit");

break;

}

}

}

public static void printPrompt() {

System.out.println("1: Display current students");

System.out.println("2: Initilise N students");

System.out.println("3: Add new student");

System.out.println("4: Sorting by Age, Weight in Asce order");

System.out.println("5: Calcaulte Min, Max, Ave of Age and Weight");

System.out.println("6: Write Student data into file");

System.out.println("7: Read studentData from file");

}

public static Student[] initilise(int n, Scanner scanner) {

Student[] students = new Student[n];

for (int i = 0; i

students[i] = createStudent(scanner);

}

System.out.println("Initilisation of students complete.");

return students;

}

public static void printStudents(Student[] students) {

for (Student student : students) {

System.out.printf("Student: %s, Number: %d, Age: %d, Weight: %f\n", student.getName(), student.getNumber(), student.getAge(), student.getWeight());

}

}

public static void printSortedStudents(Student[] students) {

for (Student student : students) {

System.out.printf("Age: %d, Weight: %f, Student: %s, Number: %d\n", student.getAge(), student.getWeight(), student.getName(), student.getNumber());

}

}

public static Student createStudent(Scanner scanner) {

int studentNumber = 0, studentAge = 0;

double studentWeight = 0.0;

String studentName = null;

System.out.println("Enter Student Number: ");

while(scanner.hasNext()) {

studentNumber = scanner.nextInt();

System.out.println("Enter Student Age: ");

studentAge = scanner.nextInt();

System.out.println("Enter Student Weight: ");

//nextDouble仅仅读取double的值,在double值后的'\n'将会被nextLine()所读取,所以读取studentName时需要再读取一次nextLine()

studentWeight = scanner.nextDouble();

System.out.println("Enter Student Name: ");

scanner.nextLine();

studentName = scanner.nextLine();

break;

}

return new Student(studentNumber, studentAge, studentWeight, studentName);

}

}

运行结果,

java结构体构建学生 学号_(1)定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩; 急求...相关推荐

  1. c语言定义一个结构体描述学生信息,1)定义一个结构体描述学生信息(学号,姓名,性别,年龄,住址); 2)设计一个函数,用于显示单个学生信息,函...

    满意答案 q55478683 2016.02.07 采纳率:46%    等级:8 已帮助:361人 struct stu { long int Num; char name[20]; char ge ...

  2. 定义一个结构体student,存储学生的学号、名字、性别和年龄,读入每个学生的所有信息,保存在结构体中,并输出。

    题目描述 定义一个结构体student,存储学生的学号.名字.性别和年龄,读入每个学生的所有信息,保存在结构体中,并输出.结构体student的定义如下: struct student { int n ...

  3. c语言设计学生结构体,c语言程序设计编程题目:请 :编写完成对学生相关信息的要求:1.定义一个结构体类型student,其中包括三个成...

    #include #include #define STU_NUM 10 /*宏定义学生的数量*/ struct student /*定义一个结构体用来存放学生学号.三门课成绩.总分及平均成绩*/ { ...

  4. 定义一个结构体,并使用结构体的方式保存这些数据。使用结构体的方式读取打印学号为 090098 与 090010 同学的各种信息

    某班的学生成绩如下表所示 学号 姓名 性别 班级 数学 英语 计算机 090092 边晓楠 女 数学 091 68 85 80 090093 陈红慧 女 数学 091 58 55 60 090094 ...

  5. 求两门成绩平均c语言,数据结构课的作业 要求用链表实现学生的学号 姓名 两门课的成绩 同时求出课程的平均成绩...

    数据结构课的作业 要求用链表实现学生的学号 姓名 两门课的成绩 同时求出课程的平均成绩 关注:69  答案:2  mip版 解决时间 2021-02-04 09:43 提问者孤城古巷 2021-02- ...

  6. ACMNO.42 C语言-第几天 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。利用结构体的在最下面

    题目描述 定义一个结构体变量(包括年.月.日).计算该日在本年中是第几天,注意闰年问题. 输入 年月日 输出 当年第几天 样例输入 2000 12 31 样例输出 366 来源/分类 C语言 题目截图 ...

  7. C语言:某班有N名同学,每个学生的信息包括学号、姓名、三门课的成绩,从键盘输入名学生的信息,打印出N名学生三门课的平均成绩,以及最高分学生的信息(包括学号,姓名,三门课的成绩,平均分)

    /*某班有N名同学,每个学生的信息包括学号.姓名.三门课的成绩,从键盘输入名学生的信息, 打印出N名学生三门课的平均成绩,以及最高分学生的信息(包括学号,姓名,三门课的成绩,平均分)*/ #inclu ...

  8.  一个复数可以用实部和虚部两部分组成,a1 = 1.2 + 3.4i,其中1.2是实部,3.4是虚部。定义一个结构体ComplexNumber,包含imaginary和real两个成员变量,能够表示

    题目原文     一个复数可以用实部和虚部两部分组成,a1 = 1.2 + 3.4i,其中1.2是实部,3.4是虚部.定义一个结构体ComplexNumber,包含imaginary和real两个成 ...

  9. MDK keil中在定义一个结构体的时候加点后面不出现结构体当中变量的提示

    MDK keil中在定义一个结构体的时候加点后面不出现结构体当中变量的提示 解决办法: 1.确保已经将顶层头文件stm32f10x.h添加至当前你所写的文件内: 2.检查你自己写的文件是否已经加载到工 ...

  10. 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年 问题。 写一个函数days,实现上述计算。由主函数将年、月、日传递给days函数,计算后将 日子数传回主函数输出

    /*定义一个结构体变量(包括年.月.日).计算该日在本年中是第几天,注意闰年 问题. 写一个函数days,实现上述计算.由主函数将年.月.日传递给days函数,计算后将 日子数传回主函数输出*/#in ...

最新文章

  1. MySQL 记录中包含换行符
  2. linux mint 18.3 内核,Linux Mint Linux用户可以升级到18.2 18.3”
  3. SpringBoot使用thymeleaf
  4. 图文并茂——使用xfire编写webservice,并通过C#调用
  5. js异步加载 defer和async 比较
  6. python双下划线什么意思_python中几个双下划线用法的含义
  7. 『设计模式』HR问了我朋友什么是简单工厂模式,竟被质疑是否学过设计模式,是否是计算机专业?
  8. 2.4一元多项式的表示及相加,含cpp算法
  9. 【数据结构与算法】二叉堆与二叉搜索树的区别
  10. mysql过滤效率和java过滤效率_熔喷布过滤效率测试仪详解
  11. P2475 [SCOI2008]斜堆(递归模拟)
  12. 银隆新能源:涉嫌诈骗财政资金过亿 孙国华等人被刑拘
  13. thinkphp后台_前后端分离决方案|thinkphpvueadmin 后台接口
  14. 过滤HTML标记、HTML注释、“!@#¥%”等非法字符
  15. 自定义控件2.第一个自定义view
  16. 基于TensorFlow的深度学习 揭示数据隐含的奥秘3 卷积神经网络
  17. 【电子发票】电子发票OFD如何打开?OFD版式阅读器
  18. C# 用户自定义控件添加到工具箱
  19. android 投屏与反控,大屏也能反控手机了,type-c接口的无线投屏器带来的改变
  20. 【跨境电商】5款Shopify应用,辅助你的在线商店运营

热门文章

  1. pdo mysql num rows_PDO参数说明
  2. 使用.net 操作 微信公众平台 —— 接收用户操作 —— 关注/取消关注 公众号
  3. 第七章 绘制3D图表和统计地图
  4. (三)CSS前端开发面试会问到的问题有哪些?
  5. Vijos - 想越狱的小杉(最短路)
  6. 帝国CMS教程,使用灵动标签调用上一篇下一篇的文章标题图片的方法
  7. html(标题加上图片的方法,笔记)
  8. 微信小程序vantweapp-Dialog弹出框提交表单,并还原确定按钮样式
  9. 什么是文件管理软件?你为什么需要它?
  10. 百度云直链下载-Aria2(二)