前言
对于计算机专业的学生来讲,肯定对于学生问题管理系统课程设计非常印象粗浅。设计、上机、编码、写报告、问难等一系列流程,尽管很简略,但也能够综合使用咱们所学的一些常识了。
明天就来温习以下这个课题,用 Java SE 来实现该课题,也算是补上当初上课的时候没有好好写的遗憾吧。
尽管很简略,然而对于刚涉足编程学习的人来讲,还是有肯定难度的,既要思考界面打印,也要思考条件判断、循环语句、输入输出管制等等技巧,所以在这里简略地实现一下,不便给初学的小伙伴们一个参考(对于我的界面比拟丑的问题,就不要过于纠结了,上来能够本人调整,咱们只关注性能实现)。
对于学生问题管理系统,次要能够分为如下几个性能:
- 录入学生问题
- 统计学生问题
- 查找学生问题
- 批改学生问题
- 删除学生问题
- 按平均分排序
- 显示所有问题
- 退出管理系统
进入零碎之后,咱们应该有零碎菜单,而后依据提醒抉择咱们所要进行的操作。
- 录入学生问题
该性能是每次录入学生的问题信息,或者在以后数据的根底上增加录入新的学生问题信息;
- 统计学生问题
次要是对学生的问题进行统计,而后输入平均分,并打印出对应信息;
- 查找学生问题
依据输出的学号来查找对应学生的相干问题信息;
- 批改学生问题
依据输出的学号来对对应学生的问题进行批改;
- 删除学生问题
依据输出的学生学号,删除对应学生的问题信息;
- 按平均分排序
依照平均分降序排序;
- 显示所有问题
便当所有学生问题,而后打印进去;
- 退出管理系统
退出菜单;
功能设计与实现
主界面
次要是打印进去零碎性能的抉择菜单,而后依据咱们的输出进入不同的子功能模块;
package com.cunyu;import java.util.ArrayList;import java.util.Scanner;/** * @author : cunyu * @version : 1.0 * @className : Manager * @date : 2021/4/4 23:54 * @description : 管理系统 */public class Manager { public static Scanner scanner = new Scanner(System.in); public static ArrayList<Student> students = new ArrayList<>(); public static void main(String[] args) { while (true) { 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】按平均分排列-------------"); System.out.println("-------------【7】显示所有问题-------------"); System.out.println("-------------【0】退出管理系统-------------"); Student student = new Student(); System.out.println("输出你的抉择【0-7】"); String choice = scanner.next(); switch (choice) { case "1": // 录入问题 student.addScore(students); break; case "2": // 统计信息 student.showAvg(students); break; case "3": // 查找问题 student.lookupStudent(students); break; case "4": // 批改问题 student.modifyStudent(students); break; case "5": // 删除问题 student.deleteStudent(students); break; case "6": // 依照平均分排序 student.sortStudent(students); break; case "7": // 显示所有问题 student.showAllStudent(students); break; case "0": System.exit(0); default: break; } } }}
主类设计
零碎次要是针对学生问题信息管理的,所以咱们设计一个学生类,包含一系列属性(也就是简略的个人信息和各科问题);
package com.cunyu;/** * @author : cunyu * @version : 1.0 * @className : Student * @date : 2021/4/4 23:31 * @description : 学生类 */public class Student { // 班级 private String grade; // 学号 private long id; // 姓名 private String name; // 高数 private float math; // 英语 private float english; // 体育 private float sport; // Java private float java; // C++ private float cPlusPlus; // 政治 private float polity; // 算法 private float algorithm; // 平均分 private double average; // 各种 setter/getter 以及构造函数}
录入学生问题
首先录退学号,判断是否可用,不可用则从新输出,可用则输出其余信息;
而后将信息赋值到学生对象,最初将该学生对象退出汇合就能够了。
/*** @param students 学生对象列表* @return* @description 录入学生信息* @date 2021/4/5 9:14* @author cunyu1943* @version 1.0*/public void addScore(ArrayList<Student> students) { System.out.println("----------录入学生数据----------"); System.out.println("请顺次输出如下数据:"); long id; while (true) { System.out.println("学号"); id = scanner.nextInt(); if (isValid(students, id)) { System.out.println("学号反复,请从新输出"); } else { break; } } System.out.println("年级"); String grade = scanner.next(); System.out.println("姓名"); String name = scanner.next(); System.out.println("数学"); float math = scanner.nextFloat(); System.out.println("英语"); float english = scanner.nextFloat(); System.out.println("体育"); float sport = scanner.nextFloat(); System.out.println("Java"); float java = scanner.nextFloat(); System.out.println("C++"); float cPlusPlus = scanner.nextFloat(); System.out.println("政治"); float polity = scanner.nextFloat(); System.out.println("算法"); float algorithm = scanner.nextFloat(); // 创建对象,并设置属性,而后将其退出学生对象汇合 Student student = new Student(); student.setId(id); student.setGrade(grade); student.setName(name); student.setMath(math); student.setAlgorithm(algorithm); student.setEnglish(english); student.setcPlusPlus(cPlusPlus); student.setJava(java); student.setSport(sport); student.setPolity(polity); // 获取平均分 double avg = getAvg(student); student.setAverage(avg); // 增加到汇合 students.add(student); // 提示信息 System.out.println("增加胜利");}
统计学生问题
次要实现对于各学生均匀问题的统计,而后打印出信息;
/*** @param students 学生对象汇合* @return* @description 显示简略统计数据* @date 2021/4/5 10:08* @author cunyu1943* @version 1.0*/public void showAvg(ArrayList<Student> students) { System.out.println("----------输入学生统计数据----------"); if (students.size() == 0) { System.out.println("以后无数据,请先增加数据!"); } else { System.out.println("班级\t\t学号\t\t姓名\t\t平均分"); System.out.println("---------------------------------"); for (Student student : students) { System.out.format("%s\t\t%d\t\t%s\t\t%.2f\n", student.getGrade(), student.getId(), student.getName(), student.getAvg(student)); } }}
查找学生问题
先判断是否有数据,有数据再进行后续操作。而后通过对输出的学号进行匹配,找到对应学号的学生问题信息并打印;
/*** @param students 学生对象汇合* @return* @description 查找对应学号学生的问题信息* @date 2021/4/5 12:59* @author cunyu1943* @version 1.0*/public void lookupStudent(ArrayList<Student> students) { System.out.println("----------查找学生问题----------"); if (students.size() == 0) { System.out.println("以后无数据,请增加后重试"); } else { System.out.println("请输出要查找学生的学号:"); long id = scanner.nextLong(); int flag = -1; Student student = new Student(); // 查找对应学号,找到就退出 for (int i = 0; i < students.size(); i++) { student = students.get(i); if (student.getId() == id) { flag = i; break; } } if (flag == -1) { System.out.println("未找到对应学号的学生,请确认后从新输出!"); } else { System.out.println("对应学号的学生问题如下:"); System.out.println("班级\t\t学号\t\t姓名\t\t数学\t\t英语\t\t体育\t\tJava\t\tC++\t\t政治\t\t算法\t\t平均分"); System.out.format("%s\t%d\t\t%s\t\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n", student.getGrade(), student.getId(), student.getName(), student.getMath(), student.getEnglish(), student.getSport(), student.getJava(), student.getcPlusPlus(), student.getPolity(), student.getAlgorithm(), student.getAvg(student)); System.out.println("查找信息胜利!"); } }}
批改学生问题
先判断是否有数据,有数据再进行后续操作。而后通过对输出的学号进行匹配,找到对应学号的学生,而后对其问题信息进行批改,但不批改集体其余信息;
/*** @param students 学生对象汇合* @return* @description 批改对应学号学生的信息* @date 2021/4/5 12:59* @author cunyu1943* @version 1.0*/public void modifyStudent(ArrayList<Student> students) { System.out.println("----------批改学生问题----------"); if (students.isEmpty()) { System.out.println("以后无数据,请增加后重试"); } else { System.out.println("请输出要批改学生的学号:"); long id = scanner.nextLong(); for (Student student : students) { if (id == student.getId()) { System.out.println("请从新输出该学生的问题"); System.out.println("数学"); float math = scanner.nextFloat(); System.out.println("英语"); float english = scanner.nextFloat(); System.out.println("体育"); float sport = scanner.nextFloat(); System.out.println("Java"); float java = scanner.nextFloat(); System.out.println("C++"); float cPlusPlus = scanner.nextFloat(); System.out.println("政治"); float polity = scanner.nextFloat(); System.out.println("算法"); float algorithm = scanner.nextFloat(); student.setMath(math); student.setAlgorithm(algorithm); student.setEnglish(english); student.setcPlusPlus(cPlusPlus); student.setJava(java); student.setSport(sport); student.setPolity(polity); // 获取平均分 double avg = getAvg(student); student.setAverage(avg); System.out.println("批改胜利!"); } else { System.out.println("未找到对应学号的学生,请确认后从新输出!"); } break; } }}
删除学生问题
先判断是否有数据,有数据再进行后续操作。而后通过对输出的学号进行匹配,找到对应学号的学生,而后将其从汇合中删除即可;
/** * @param students 学生对象汇合 * @return * @description 删除学生问题 * @date 2021/4/5 14:28 * @author cunyu1943 * @version 1.0 */public void deleteStudent(ArrayList<Student> students) { System.out.println("----------删除学生问题----------"); if (students.isEmpty()) { System.out.println("以后无数据,请增加后重试"); } else { System.out.println("输出要删除学生问题的学号"); long id = scanner.nextLong(); int index = -1; for (int i = 0; i < students.size(); i++) { Student student = students.get(i); if (student.getId() == id) { index = i; break; } } if (index == -1) { System.out.println("未找到对应学号学生信息,请确认后再删除!"); } else { students.remove(index); System.out.println("----------删除胜利----------"); } }}
按平均分排序
先判断是否有数据,有数据再进行后续操作。而后对汇合中的学生的均匀问题进行排序,而后顺次从高到低打印出学生信息;
/*** @param students 学生对象汇合* @return* @description 依照平均分排序* @date 2021/4/5 14:29* @author cunyu1943* @version 1.0*/public void sortStudent(ArrayList<Student> students) { if (students.isEmpty()) { System.out.println("以后无数据,请增加后重试"); } else { for (int i = 0; i < students.size() - 1; i++) { if (students.get(i).getAvg(students.get(i)) < students.get(i + 1).getAvg(students.get(i + 1))) { Student tmp = students.get(i); students.set(i, students.get(i + 1)); students.set(i + 1, tmp); } } System.out.println("排序后的学生问题"); System.out.println("班级\t\t学号\t\t姓名\t\t数学\t\t英语\t\t体育\t\tJava\t\tC++\t\t政治\t\t算法\t\t平均分"); for (Student student : students) { System.out.format("%s\t%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n", student.getGrade(), student.getId(), student.getName(), student.getMath(), student.getEnglish(), student.getSport(), student.getJava(), student.getcPlusPlus(), student.getPolity(), student.getAlgorithm(), student.getAvg(student)); } }}
显示所有问题
先判断是否有数据,有数据再进行后续操作。遍历学生对象汇合,而后打印出各个学生的问题信息。
/*** @param students 学生对象汇合* @return* @description 显示所有学生问题* @date 2021/4/5 14:30* @author cunyu1943* @version 1.0*/public void showAllStudent(ArrayList<Student> students) { if (students.isEmpty()) { System.out.println("以后无数据,请先增加数据"); } else { System.out.println("----------所有学生问题如下----------"); System.out.println("班级\t\t学号\t\t姓名\t\t数学\t\t英语\t\t体育\t\tJava\t\tC++\t\t政治\t\t算法\t\t平均分"); for (Student student : students) { System.out.format("%s\t%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n", student.getGrade(), student.getId(), student.getName(), student.getMath(), student.getEnglish(), student.getSport(), student.getJava(), student.getcPlusPlus(), student.getPolity(), student.getAlgorithm(), student.getAvg(student)); } }}
总程序
将上述所有模块整合之后,咱们失去最终的程序;
- Manager.java
package com.cunyu;import java.util.ArrayList;import java.util.Scanner;/** * @author : cunyu * @version : 1.0 * @className : Manager * @date : 2021/4/4 23:54 * @description : 管理系统 */public class Manager { public static Scanner scanner = new Scanner(System.in); public static ArrayList<Student> students = new ArrayList<>(); public static void main(String[] args) { while (true) { 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】按平均分排列-------------"); System.out.println("-------------【7】显示所有问题-------------"); System.out.println("-------------【0】退出管理系统-------------"); Student student = new Student(); System.out.println("输出你的抉择"); String choice = scanner.next(); switch (choice) { case "1": student.addScore(students); break; case "2": student.showAvg(students); break; case "3": student.lookupStudent(students); break; case "4": student.modifyStudent(students); break; case "5": student.deleteStudent(students); break; case "6": student.sortStudent(students); break; case "7": student.showAllStudent(students); break; case "0": System.exit(0); default: break; } } }}
- Student.java
package com.cunyu;import java.util.ArrayList;import java.util.Scanner;/** * @author : cunyu * @version : 1.0 * @className : Student * @date : 2021/4/4 23:31 * @description : 学生类 */public class Student { public static Scanner scanner = new Scanner(System.in); // 班级 private String grade; // 学号 private long id; // 姓名 private String name; // 高数 private float math; // 英语 private float english; // 体育 private float sport; // Java private float java; // C++ private float cPlusPlus; // 政治 private float polity; // 算法 private float algorithm; // 平均分 private double average; public Student() { } public Student(String grade, long id, String name, float math, float english, float sport, float java, float cPlusPlus, float polity, float algorithm, double average) { this.grade = grade; this.id = id; this.name = name; this.math = math; this.english = english; this.sport = sport; this.java = java; this.cPlusPlus = cPlusPlus; this.polity = polity; this.algorithm = algorithm; this.average = average; } public String getGrade() { return grade; } public void setGrade(String grade) { this.grade = grade; } public long getId() { return id; } public void setId(long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public float getMath() { return math; } public void setMath(float math) { this.math = math; } public float getEnglish() { return english; } public void setEnglish(float english) { this.english = english; } public float getSport() { return sport; } public void setSport(float sport) { this.sport = sport; } public float getJava() { return java; } public void setJava(float java) { this.java = java; } public float getcPlusPlus() { return cPlusPlus; } public void setcPlusPlus(float cPlusPlus) { this.cPlusPlus = cPlusPlus; } public float getPolity() { return polity; } public void setPolity(float polity) { this.polity = polity; } public float getAlgorithm() { return algorithm; } public void setAlgorithm(float algorithm) { this.algorithm = algorithm; } public double getAvg(Student student) { return (student.getAlgorithm() + student.getcPlusPlus() + student.getEnglish() + student.getSport() + student.getJava() + student.getPolity() + student.getMath()) / 7; } public void setAverage(double average) { this.average = average; } /** * @param students 学生对象列表 * @return * @description 录入学生信息 * @date 2021/4/5 9:14 * @author cunyu1943 * @version 1.0 */ public void addScore(ArrayList<Student> students) { System.out.println("----------录入学生数据----------"); System.out.println("请顺次输出如下数据:"); long id; while (true) { System.out.println("学号"); id = scanner.nextInt(); if (isValid(students, id)) { System.out.println("学号反复,请从新输出"); } else { break; } } System.out.println("年级"); String grade = scanner.next(); System.out.println("姓名"); String name = scanner.next(); System.out.println("数学"); float math = scanner.nextFloat(); System.out.println("英语"); float english = scanner.nextFloat(); System.out.println("体育"); float sport = scanner.nextFloat(); System.out.println("Java"); float java = scanner.nextFloat(); System.out.println("C++"); float cPlusPlus = scanner.nextFloat(); System.out.println("政治"); float polity = scanner.nextFloat(); System.out.println("算法"); float algorithm = scanner.nextFloat(); // 创建对象,并设置属性,而后将其退出学生对象汇合 Student student = new Student(); student.setId(id); student.setGrade(grade); student.setName(name); student.setMath(math); student.setAlgorithm(algorithm); student.setEnglish(english); student.setcPlusPlus(cPlusPlus); student.setJava(java); student.setSport(sport); student.setPolity(polity); // 获取平均分 double avg = getAvg(student); student.setAverage(avg); // 增加到汇合 students.add(student); // 提示信息 System.out.println("增加胜利"); } /** * @param students 学生对象汇合 * @param id 学号 * @return true,学号反复;false 学号可用 * @description 判断学号是否可用 * @date 2021/4/5 9:19 * @author cunyu1943 * @version 1.0 */ public boolean isValid(ArrayList<Student> students, long id) { for (Student student : students) { if (student.getId() == id) { return true; } } return false; } /** * @param students 学生对象汇合 * @return * @description 显示简略统计数据 * @date 2021/4/5 10:08 * @author cunyu1943 * @version 1.0 */ public void showAvg(ArrayList<Student> students) { System.out.println("----------输入学生统计数据----------"); if (students.size() == 0) { System.out.println("以后无数据,请先增加数据!"); } else { System.out.println("班级\t\t学号\t\t姓名\t\t平均分"); System.out.println("---------------------------------"); for (Student student : students) { System.out.format("%s\t\t%d\t\t%s\t\t%.2f\n", student.getGrade(), student.getId(), student.getName(), student.getAvg(student)); } } } /** * @param students 学生对象汇合 * @return * @description 查找对应学号学生的问题信息 * @date 2021/4/5 12:59 * @author cunyu1943 * @version 1.0 */ public void lookupStudent(ArrayList<Student> students) { System.out.println("----------查找学生问题----------"); if (students.size() == 0) { System.out.println("以后无数据,请增加后重试"); } else { System.out.println("请输出要查找学生的学号:"); long id = scanner.nextLong(); int flag = -1; Student student = new Student(); // 查找对应学号,找到就退出 for (int i = 0; i < students.size(); i++) { student = students.get(i); if (student.getId() == id) { flag = i; break; } } if (flag == -1) { System.out.println("未找到对应学号的学生,请确认后从新输出!"); } else { System.out.println("对应学号的学生问题如下:"); System.out.println("班级\t\t学号\t\t姓名\t\t数学\t\t英语\t\t体育\t\tJava\t\tC++\t\t政治\t\t算法\t\t平均分"); System.out.format("%s\t%d\t\t%s\t\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n", student.getGrade(), student.getId(), student.getName(), student.getMath(), student.getEnglish(), student.getSport(), student.getJava(), student.getcPlusPlus(), student.getPolity(), student.getAlgorithm(), student.getAvg(student)); System.out.println("查找信息胜利!"); } } } /** * @param students 学生对象汇合 * @return * @description 批改对应学号学生的信息 * @date 2021/4/5 12:59 * @author cunyu1943 * @version 1.0 */ public void modifyStudent(ArrayList<Student> students) { System.out.println("----------批改学生问题----------"); if (students.isEmpty()) { System.out.println("以后无数据,请增加后重试"); } else { System.out.println("请输出要批改学生的学号:"); long id = scanner.nextLong(); for (Student student : students) { if (id == student.getId()) { System.out.println("请从新输出该学生的问题"); System.out.println("数学"); float math = scanner.nextFloat(); System.out.println("英语"); float english = scanner.nextFloat(); System.out.println("体育"); float sport = scanner.nextFloat(); System.out.println("Java"); float java = scanner.nextFloat(); System.out.println("C++"); float cPlusPlus = scanner.nextFloat(); System.out.println("政治"); float polity = scanner.nextFloat(); System.out.println("算法"); float algorithm = scanner.nextFloat(); student.setMath(math); student.setAlgorithm(algorithm); student.setEnglish(english); student.setcPlusPlus(cPlusPlus); student.setJava(java); student.setSport(sport); student.setPolity(polity); // 获取平均分 double avg = getAvg(student); student.setAverage(avg); System.out.println("批改胜利!"); } else { System.out.println("未找到对应学号的学生,请确认后从新输出!"); } break; } } } /** * @param students 学生对象汇合 * @return * @description 删除学生问题 * @date 2021/4/5 14:28 * @author cunyu1943 * @version 1.0 */ public void deleteStudent(ArrayList<Student> students) { System.out.println("----------删除学生问题----------"); if (students.isEmpty()) { System.out.println("以后无数据,请增加后重试"); } else { System.out.println("输出要删除学生问题的学号"); long id = scanner.nextLong(); int index = -1; for (int i = 0; i < students.size(); i++) { Student student = students.get(i); if (student.getId() == id) { index = i; break; } } if (index == -1) { System.out.println("未找到对应学号学生信息,请确认后再删除!"); } else { students.remove(index); System.out.println("----------删除胜利----------"); } } } /** * @param students 学生对象汇合 * @return * @description 显示所有学生问题 * @date 2021/4/5 14:30 * @author cunyu1943 * @version 1.0 */ public void showAllStudent(ArrayList<Student> students) { if (students.isEmpty()) { System.out.println("以后无数据,请先增加数据"); } else { System.out.println("----------所有学生问题如下----------"); System.out.println("班级\t\t学号\t\t姓名\t\t数学\t\t英语\t\t体育\t\tJava\t\tC++\t\t政治\t\t算法\t\t平均分"); for (Student student : students) { System.out.format("%s\t%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n", student.getGrade(), student.getId(), student.getName(), student.getMath(), student.getEnglish(), student.getSport(), student.getJava(), student.getcPlusPlus(), student.getPolity(), student.getAlgorithm(), student.getAvg(student)); } } } /** * @param students 学生对象汇合 * @return * @description 依照平均分排序 * @date 2021/4/5 14:29 * @author cunyu1943 * @version 1.0 */ public void sortStudent(ArrayList<Student> students) { if (students.isEmpty()) { System.out.println("以后无数据,请增加后重试"); } else { for (int i = 0; i < students.size() - 1; i++) { if (students.get(i).getAvg(students.get(i)) < students.get(i + 1).getAvg(students.get(i + 1))) { Student tmp = students.get(i); students.set(i, students.get(i + 1)); students.set(i + 1, tmp); } } System.out.println("排序后的学生问题"); System.out.println("班级\t\t学号\t\t姓名\t\t数学\t\t英语\t\t体育\t\tJava\t\tC++\t\t政治\t\t算法\t\t平均分"); for (Student student : students) { System.out.format("%s\t%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\n", student.getGrade(), student.getId(), student.getName(), student.getMath(), student.getEnglish(), student.getSport(), student.getJava(), student.getcPlusPlus(), student.getPolity(), student.getAlgorithm(), student.getAvg(student)); } } }}
总结
尽管性能比拟简陋,但还是须要肯定工夫来实现的。此外,本设计只是针对一次运行过程,一旦程序终止,录入的数据就无奈保留了,这一点须要留神。后续思考退出文件写入或者数据库的形式来实现该课程设计,以保留咱们所录入的数据。