【小白学编程Java方向】项目练习第10期(截止6.29)

    
Java项目练习:第10期
练习时间:6月15日-6月29日(2周)
活动规则:
  • 每一期一个项目,届时会开新帖发布
  • 学员直接将答案提交到该贴评论区即可
  • 两周后,公布导师参考答案
  • 导师评选出当期最佳代码(将被设置为精彩回复

奖励:牛客大礼包一份(牛客定制水杯 牛客定制笔 牛客定制程序员徽章 滑稽抱枕)
参与方式:直接将你的代码回复到本帖评论区

-----------------------------------------------------

本期题目:

实现一个简单的学生成绩管理系统(60分钟)

需求描述:

基于命令行模拟实现一个简单的学生成绩信息管理系统,要求实现以下功能:

  1. 设计学生信息类,要求信息包括学号、姓名、成绩等属性;
  2. 涉及主功能菜单,要求功能涵盖:
    1. 输入学生信息
    2. 由姓名查询
    3. 由学号查询
    4. 由学号排序(升序)
    5. 由分数排序(降序)
    6. 保存学生数据
    7. 加载学生数据
  3. 将内存中的集合框架对象进行持久化,下一次运行系统时可直接调用

考察知识点:

  • 文件IO操作基础
  • 命令行输出控制
  • Java集合基础
  • 网络编程socket通信

参考知识点:《java基础入门》第2章、第5章、第7章、第8章、第10章

参与方式:直接将你的代码回复到本帖评论区

#Java#
全部评论
==============实体类================= 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); } }
点赞 回复 分享
发布于 2018-06-28 19:33

相关推荐

09-17 10:53
四川大学 C++
牛客91242815...:会写标书没有任何卵用,鉴定为横向垃圾导师的受害者
点赞 评论 收藏
分享
在看牛客的社畜很积极:身高体重那一行信息去掉,学校那一行的信息放上面,找半天都没找到你是哪个学校什么专业的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务