java结构体构建学生 学号_(1)定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩; 急求...
展开全部
之前写过一个记录学生学号,年龄,体重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个学生的学号,姓名,三门课的成绩; 急求...相关推荐
- c语言定义一个结构体描述学生信息,1)定义一个结构体描述学生信息(学号,姓名,性别,年龄,住址); 2)设计一个函数,用于显示单个学生信息,函...
满意答案 q55478683 2016.02.07 采纳率:46% 等级:8 已帮助:361人 struct stu { long int Num; char name[20]; char ge ...
- 定义一个结构体student,存储学生的学号、名字、性别和年龄,读入每个学生的所有信息,保存在结构体中,并输出。
题目描述 定义一个结构体student,存储学生的学号.名字.性别和年龄,读入每个学生的所有信息,保存在结构体中,并输出.结构体student的定义如下: struct student { int n ...
- c语言设计学生结构体,c语言程序设计编程题目:请 :编写完成对学生相关信息的要求:1.定义一个结构体类型student,其中包括三个成...
#include #include #define STU_NUM 10 /*宏定义学生的数量*/ struct student /*定义一个结构体用来存放学生学号.三门课成绩.总分及平均成绩*/ { ...
- 定义一个结构体,并使用结构体的方式保存这些数据。使用结构体的方式读取打印学号为 090098 与 090010 同学的各种信息
某班的学生成绩如下表所示 学号 姓名 性别 班级 数学 英语 计算机 090092 边晓楠 女 数学 091 68 85 80 090093 陈红慧 女 数学 091 58 55 60 090094 ...
- 求两门成绩平均c语言,数据结构课的作业 要求用链表实现学生的学号 姓名 两门课的成绩 同时求出课程的平均成绩...
数据结构课的作业 要求用链表实现学生的学号 姓名 两门课的成绩 同时求出课程的平均成绩 关注:69 答案:2 mip版 解决时间 2021-02-04 09:43 提问者孤城古巷 2021-02- ...
- ACMNO.42 C语言-第几天 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。利用结构体的在最下面
题目描述 定义一个结构体变量(包括年.月.日).计算该日在本年中是第几天,注意闰年问题. 输入 年月日 输出 当年第几天 样例输入 2000 12 31 样例输出 366 来源/分类 C语言 题目截图 ...
- C语言:某班有N名同学,每个学生的信息包括学号、姓名、三门课的成绩,从键盘输入名学生的信息,打印出N名学生三门课的平均成绩,以及最高分学生的信息(包括学号,姓名,三门课的成绩,平均分)
/*某班有N名同学,每个学生的信息包括学号.姓名.三门课的成绩,从键盘输入名学生的信息, 打印出N名学生三门课的平均成绩,以及最高分学生的信息(包括学号,姓名,三门课的成绩,平均分)*/ #inclu ...
- 一个复数可以用实部和虚部两部分组成,a1 = 1.2 + 3.4i,其中1.2是实部,3.4是虚部。定义一个结构体ComplexNumber,包含imaginary和real两个成员变量,能够表示
题目原文 一个复数可以用实部和虚部两部分组成,a1 = 1.2 + 3.4i,其中1.2是实部,3.4是虚部.定义一个结构体ComplexNumber,包含imaginary和real两个成 ...
- MDK keil中在定义一个结构体的时候加点后面不出现结构体当中变量的提示
MDK keil中在定义一个结构体的时候加点后面不出现结构体当中变量的提示 解决办法: 1.确保已经将顶层头文件stm32f10x.h添加至当前你所写的文件内: 2.检查你自己写的文件是否已经加载到工 ...
- 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年 问题。 写一个函数days,实现上述计算。由主函数将年、月、日传递给days函数,计算后将 日子数传回主函数输出
/*定义一个结构体变量(包括年.月.日).计算该日在本年中是第几天,注意闰年 问题. 写一个函数days,实现上述计算.由主函数将年.月.日传递给days函数,计算后将 日子数传回主函数输出*/#in ...
最新文章
- MySQL 记录中包含换行符
- linux mint 18.3 内核,Linux Mint Linux用户可以升级到18.2 18.3”
- SpringBoot使用thymeleaf
- 图文并茂——使用xfire编写webservice,并通过C#调用
- js异步加载 defer和async 比较
- python双下划线什么意思_python中几个双下划线用法的含义
- 『设计模式』HR问了我朋友什么是简单工厂模式,竟被质疑是否学过设计模式,是否是计算机专业?
- 2.4一元多项式的表示及相加,含cpp算法
- 【数据结构与算法】二叉堆与二叉搜索树的区别
- mysql过滤效率和java过滤效率_熔喷布过滤效率测试仪详解
- P2475 [SCOI2008]斜堆(递归模拟)
- 银隆新能源:涉嫌诈骗财政资金过亿 孙国华等人被刑拘
- thinkphp后台_前后端分离决方案|thinkphpvueadmin 后台接口
- 过滤HTML标记、HTML注释、“!@#¥%”等非法字符
- 自定义控件2.第一个自定义view
- 基于TensorFlow的深度学习 揭示数据隐含的奥秘3 卷积神经网络
- 【电子发票】电子发票OFD如何打开?OFD版式阅读器
- C# 用户自定义控件添加到工具箱
- android 投屏与反控,大屏也能反控手机了,type-c接口的无线投屏器带来的改变
- 【跨境电商】5款Shopify应用,辅助你的在线商店运营
热门文章
- pdo mysql num rows_PDO参数说明
- 使用.net 操作 微信公众平台 —— 接收用户操作 —— 关注/取消关注 公众号
- 第七章 绘制3D图表和统计地图
- (三)CSS前端开发面试会问到的问题有哪些?
- Vijos - 想越狱的小杉(最短路)
- 帝国CMS教程,使用灵动标签调用上一篇下一篇的文章标题图片的方法
- html(标题加上图片的方法,笔记)
- 微信小程序vantweapp-Dialog弹出框提交表单,并还原确定按钮样式
- 什么是文件管理软件?你为什么需要它?
- 百度云直链下载-Aria2(二)