关注
==============实体类=================
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
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
- 1... 工作半年后更确定:我们依然不欠优绩主义什么6595
- 2... 杂记近期所面试的三家中小厂5901
- 3... 岁末论道:谁才是牛客 2025 最强修仙者?4806
- 4... #牛客2025仙途报告#居然是五颗星3712
- 5... 互联网实习求职的黑话和timeline,你所需要知道的……3158
- 6... 【2025-年终总结】25届毕业生果果牛这一年~3126
- 7... 仙途报告3044
- 8... 圣诞节用 AI 做个牛客运营翻翻乐!(含代码)2875
- 9... 大学废物离开优绩主义之后发现外面根本没下雨2002
- 10... 实习没事做是福也是祸1884
正在热议
更多
# 牛客2025仙途报告 #
7139次浏览 171人参与
# 礼物开箱Plog #
2289次浏览 95人参与
# 2025年终总结 #
182817次浏览 3087人参与
# 哪些行业值得去? #
14544次浏览 77人参与
# 职场新人体验 #
157147次浏览 1128人参与
# 工作两年,想和老板谈涨薪怎么说 #
38945次浏览 175人参与
# 你面试体验感最差/最好的公司 #
24779次浏览 416人参与
# 考公VS就业,你怎么选? #
88331次浏览 497人参与
# 今年你最想重开的一场面试是? #
7527次浏览 95人参与
# 秋招落幕,你是He or Be #
17909次浏览 320人参与
# 一人说一个提前实习的好处 #
16511次浏览 253人参与
# 离家近房租贵VS离家远但房租低,怎么选 #
13818次浏览 130人参与
# 找工作,行业重要还是岗位重要? #
86115次浏览 1709人参与
# 重来一次,你会对开始求职的自己说 #
7717次浏览 207人参与
# 各大公司公布25年Q3财报,你怎么看? #
5109次浏览 50人参与
# 实习没事做是福还是祸? #
20237次浏览 312人参与
# 大家每天通勤多久? #
70867次浏览 472人参与
# 实习的内耗时刻 #
212189次浏览 1567人参与
# 工作中听到最受打击的一句话 #
9867次浏览 158人参与
# 机械制造秋招总结 #
97534次浏览 878人参与
SHEIN希音公司福利 280人发布