关注
==============实体类=================
package com.newcoder_10;
import java.io.Serializable;
public class Student implements Serializable {
/**
* 实体类:
*/
private static final long serialVersionUID = 4888503192302777566L;
private String id; // 学号字段
private String name; // 名称
private String age; // 年龄
private String adderss; // 地址
private String score; // 分数
public Student() {
}
// 为了方便封装数据提供了有参构造
public Student(String id, String name, String age, String adderss, String score) {
super();
this.id = id;
this.name = name;
this.age = age;
this.adderss = adderss;
this.score = score;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getScore() {
return score;
}
public void setScore(String score) {
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getAdderss() {
return adderss;
}
public void setAdderss(String adderss) {
this.adderss = adderss;
}
}
===============主程序===========
package com.newcoder_10;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
public class StudentManager {
public static void main(String[] args) throws ClassNotFoundException, IOException {
// 程序开始加载本地数据
ArrayList<Student> array = new ArrayList<Student>();
File file = new File("Date.txt");
if (file.exists() && file.length() > 0) {
// 本地数据存在则加载数据(判断大小是因为,如果空文件会报空指针异常)
ArrayList<Student> list = load();
array = list;
} else {
// 如果本地不存在数据,则创建文件
file.createNewFile();
}
while (true) {
// 主界面 1.打印表头 2.输入信息 3.
System.out.println("--------欢迎使用学生成绩管理系统--------");
System.out.println("1查询所有学生");
System.out.println("2增加学生");
System.out.println("3根据学号查询");
System.out.println("4按学号排序查询");
System.out.println("5按照分数排序查询");
System.out.println("6退出");
// 录入信息
Scanner sc = new Scanner(System.in);
System.out.println("请输入你想要选择的功能:");
String choice = sc.nextLine();
// 选择
switch (choice) {
case "1":
// 1查询所有学生
findAllStudent(array);
break;
case "2":
// 2增加学生
addStudent(array);
store(array);
break;
case "3":
// 3根据学号查询
selectById(array);
break;
case "4":
// 按学号排序查询
orderById(array);
break;
case "5":
// 5按照分数排序查询
orderByScore(array);
break;
case "6":
// 退出
store(array);
System.out.println("谢谢你的使用");
System.exit(0);
break;
default:
System.out.println("此功能暂未开放");
break;
}
}
}
// 根据分数排序
private static void orderByScore(ArrayList<Student> array) {
if (array.size() <= 0) {
System.out.println("数据库为空!!");
return;
}
// 为了保护原始数据,采用克隆副本进行排序
List<Student> cList = (ArrayList<Student>) array.clone();
// 排序按照分数
Collections.sort(cList, new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
Double id1 = new Double(s1.getScore());
Double id2 = new Double(s2.getScore());
Integer result = id1 > id2 ? 1 : id1 < id2 ? -1 : 0;
return result;
}
});
// 打印输出分数
System.out.println("学号\t\t姓名\t年龄\t地址\t成绩");
for (int i = 0; i < cList.size(); i++) {
Student st = cList.get(i);
System.out.println(st.getId() + "\t\t" + st.getName() + "\t" + st.getAge() + "\t" + st.getAdderss() + "\t"
+ st.getScore());
}
}
// 根据学号排序
private static void orderById(ArrayList<Student> array) {
if (array.size() <= 0) {
System.out.println("数据库为空!!");
return;
}
List<Student> cList = (ArrayList<Student>) array.clone();
// Collections.copy(array, cList);
Collections.sort(cList, new Comparator<Student>() {
@Override
public int compare(Student s1, Student s2) {
Integer id1 = Integer.parseInt(s1.getId());
Integer id2 = Integer.parseInt(s2.getId());
Integer result = id1 > id2 ? 1 : id1 < id2 ? -1 : 0;
return result;
}
});
System.out.println("学号\t\t姓名\t年龄\t地址\t成绩");
for (int i = 0; i < cList.size(); i++) {
Student st = cList.get(i);
System.out.println(st.getId() + "\t\t" + st.getName() + "\t" + st.getAge() + "\t" + st.getAdderss() + "\t"
+ st.getScore());
}
}
// 根据学号查询
private static void selectById(ArrayList<Student> array) {
System.out.println("请输入要查询的学号");
Scanner sc = new Scanner(System.in);
String id = sc.nextLine();
if (id == null) {
System.out.println("输入为空!");
return;
}
if (array.size() <= 0) {
System.out.println("数据库为空!!");
return;
}
boolean flag = false;
Student st = null;
for (int i = 0; i < array.size(); i++) {
st = array.get(i);
if (id.equals(st.getId())) {
flag = true;
break;
}
}
if (flag) {
System.out.println(st.getId() + "\t\t" + st.getName() + "\t" + st.getAge() + "\t" + st.getAdderss());
} else {
System.out.println("数据库中未查询到数据!请修改学号");
}
}
// 存储数据
public static void store(ArrayList<Student> array) throws IOException {
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("Date.txt"));
oos.writeObject(array);
oos.flush();
oos.close();
}
// 加载数据:
public static ArrayList<Student> load() throws IOException, ClassNotFoundException {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("Date.txt"));
Object obj = ois.readObject();
ois.close();
ArrayList<Student> list = (ArrayList<Student>) obj;
return list;
}
// 查询所有学生信息方法
public static void findAllStudent(ArrayList<Student> array) {
if (array.size() <= 0) {
System.out.println("当前管理系统暂时没有信息");
} else {
System.out.println("学号\t\t姓名\t年龄\t地址\t成绩");
for (int i = 0; i < array.size(); i++) {
Student st = array.get(i);
System.out.println(st.getId() + "\t\t" + st.getName() + "\t" + st.getAge() + "\t" + st.getAdderss()
+ "\t" + st.getScore());
}
}
}
// 添加学生信息的方法
public static void addStudent(ArrayList<Student> array) {
// 键盘录入信息
Scanner sc = new Scanner(System.in);
String id;
while (true) {
System.out.println("请输入学号");
boolean flag = false;
id = sc.nextLine();
// 添加判断是否已经有了这个学号
for (int i = 0; i < array.size(); i++) {
Student s = array.get(i);
String userId = s.getName();
if (userId.equals(id)) {
flag = true;
break;
}
}
if (flag == true) {
System.out.println("当前学号已经被占用,请重新输入");
// continue;
} else {
break;
}
}
System.out.println("请输入姓名");
String name = sc.nextLine();
System.out.println("请输入年龄");
String age = sc.nextLine();
System.out.println("请输入住址");
String adderss = sc.nextLine();
System.out.println("请输入成绩");
String score = sc.nextLine();
// 创建学生对象
Student st = new Student(id, name, age, adderss, score);
// 添加到集合中
array.add(st);
}
}
查看原帖
点赞 1
相关推荐
09-22 09:42
门头沟学院 Java 牛客37185681...:马德,我感觉这是我面过最恶心的公司,一面是两个女hr,说什么实习前几个月属于试用期,试用期过了才能转成正式实习生,我***笑了,问待遇就是不说,问能不能接受全栈,沙币公司
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# HR问:你期望的薪资是多少?如何回答 #
67221次浏览 653人参与
# 我和mentor的爱恨情仇 #
77827次浏览 431人参与
# “vivo”个offer #
41592次浏览 288人参与
# 打工人的精神状态 #
98511次浏览 1289人参与
# 被同事甩锅了怎么办 #
24144次浏览 100人参与
# 你见过哪些工贼行为 #
28377次浏览 141人参与
# 一人一个landing小技巧 #
125497次浏览 1457人参与
# 你的秋招第一场笔试是哪家 #
258629次浏览 2026人参与
# 满帮集团求职进展汇总 #
6643次浏览 68人参与
# 考研失败就一定是坏事吗? #
149595次浏览 1081人参与
# vivo工作体验 #
29197次浏览 125人参与
# 和mentor 1on1 都聊什么? #
2213次浏览 21人参与
# 哪一瞬间觉得自己长大了 #
39469次浏览 494人参与
# 上班后和你想的一样吗? #
88029次浏览 671人参与
# 校招生月薪1W算什么水平 #
43253次浏览 235人参与
# 实习吐槽大会 #
386636次浏览 2156人参与
# 如何准备秋招 #
64624次浏览 830人参与
# 你想留在一线还是回老家? #
62710次浏览 537人参与
# 工作后明白的那些道理 #
22916次浏览 225人参与
# 数字马力求职进展汇总 #
206407次浏览 1635人参与
# 我是面试官,请用一句话让我破防 #
28909次浏览 133人参与
智元机器人成长空间 174人发布