前言
作为一名计算机专业的学生,写一个学生成绩管理系统应该是不可或缺的经历。
一、项目要求是?
题目描述:一个简单的学生课程系统。
功能要求:
(1) 创建一个学生类,包含学号,姓名,性别。
(2) 创建一个课程成绩类,包含课程名称和成绩。
(3) 创建一个学生课程成绩类,包含学生类成员和课程类数组成员。
(4) 可以生成学生,并且为学生创建课程成绩。
(5) 输出指定科目分数最高和最低的学生课程成绩信息。
(6) 输出指定学生的科目分数最高和最低分。
二、使用步骤
1.Main类
代码如下(示例):
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static Scanner scanner = new Scanner(System.in);
public static ArrayList<StudentsGrade> studentsGrades = 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("-------------【0】退出管理系统-------------");
Students Students=new Students();
Course Course=new Course();
StudentsGrade studentsGrade = new StudentsGrade(Students,Course);
System.out.println("输入你的选择");
String choice = scanner.next();
switch (choice) {
case "1":
studentsGrade.addScore(studentsGrades);
break;
case "2":
studentsGrade.showAllStudent(studentsGrades);
break;
case "3":
studentsGrade.lookupStudent(studentsGrades);
break;
case "4":
studentsGrade.sortCourse(studentsGrades);
break;
case "0":
System.exit(0);
default:
break;
}
}
}
}
2.Course类
代码如下(示例):
public class Course {
// A
private float A;
// B
private float B;
// C
private float C;
// D
private float D;
public float getA() {
return A;
}
public void setA(float A) {
this.A = A;
}
public float getB() {
return B;
}
public void setB(float B) {
this.B = B;
}
public float getC() {
return C;
}
public void setC(float C) {
this.C = C;
}
public float getD() {
return D;
}
public void setD(float D) {
this.D = D;
}
}
3.Students类
代码如下(示例):
public class Students {
// 姓名
private String name;
// 性别
private String sex;
// 学号
private long id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
}
4.StudentsGrade类
代码如下(示例):
import java.util.ArrayList;
import java.util.Scanner;
public class StudentsGrade {
Students student ;
Course courses ;
public StudentsGrade(Students student1,Course courses1) {
this.student = student1;
this.courses = courses1;
}
public static Scanner scanner = new Scanner(System.in);
public void addScore(ArrayList<StudentsGrade> studentsGrades) {
System.out.println("----------录入学生数据----------");
System.out.println("请依次输入如下数据:");
long id;
while (true) {
System.out.println("学号");
id = scanner.nextInt();
if (isValid(studentsGrades, id)) {
System.out.println("学号重复,请重新输入");
} else {
break;
}
}
System.out.println("姓名");
String name = scanner.next();
System.out.println("性别");
String sex = scanner.next();
System.out.println("A");
float A = scanner.nextFloat();
System.out.println("B");
float B = scanner.nextFloat();
System.out.println("C");
float C = scanner.nextFloat();
System.out.println("D");
float D = scanner.nextFloat();
//创建对象,并设置属性,然后将其加入学生成绩对象集合
StudentsGrade studentsGrade = new StudentsGrade(student,courses);
studentsGrade.student.setName(name);
studentsGrade.student.setName(name);
studentsGrade.student.setSex(sex);
studentsGrade.student.setId(id);
studentsGrade.courses.setA(A);
studentsGrade.courses.setB(B);
studentsGrade.courses.setC(C);
studentsGrade.courses.setD(D);
// 添加到集合
studentsGrades.add(studentsGrade);
// 提示信息
System.out.println("添加成功");
}
//验证学号是否已经添加
public boolean isValid(ArrayList<StudentsGrade> studentsGrades, long id) {
for (StudentsGrade studentsGrade : studentsGrades) {
if (studentsGrade.student.getId() == id) {
return true;
}
}
return false;
}
//通过指定学号查询他的信息
public void lookupStudent(ArrayList<StudentsGrade> studentsGrades) {
System.out.println("----------查找学生成绩----------");
if (studentsGrades.size() == 0) {
System.out.println("当前无数据,请添加后重试");
} else {
System.out.println("请输入要查找学生的学号:");
long id = scanner.nextLong();
int flag = -1;
// 查找对应学号,找到就退出
for (int i = 0; i < studentsGrades.size(); i++) {
if (studentsGrades.get(i).student.getId() == id) {
flag = i;
break;
}
}
if (flag == -1) {
System.out.println("未找到对应学号的学生,请确认后重新输入!");
} else {
System.out.println("对应学号的学生成绩如下:");
//创建两个数组
float[] grades = new float[4];
String[] gradesChar = new String[4];
grades[0] = studentsGrades.get(flag).courses.getA();
grades[1] = studentsGrades.get(flag).courses.getB();
grades[2] = studentsGrades.get(flag).courses.getC();
grades[3] = studentsGrades.get(flag).courses.getD();
gradesChar[0] = "A";
gradesChar[1] = "B";
gradesChar[2] = "C";
gradesChar[3] = "D";
for (int i = 0; i < 4-1; i++) {
for (int j =0 ; j < 4-i-1 ; j++) {
if (grades[j] > grades[j+1]) {
float temp = grades[j];
String tempChar = gradesChar[j];
grades[j] = grades[j+1];
gradesChar[j] = gradesChar[j+1];
grades[j+1] = temp;
gradesChar[j+1] = tempChar;
}
}
}
System.out.println("姓名\t\t性别\t\t学号\t\t最低科目"+gradesChar[0]+"\t\t最高科目"+gradesChar[3]);
System.out.format("%s\t\t%s\t\t%d\t\t%.2f\t\t\t%.2f\n", studentsGrades.get(flag).student.getName(),studentsGrades.get(flag).student.getSex(), studentsGrades.get(flag).student.getId(), grades[0], grades[3]);
System.out.println("查找信息成功!");
}
}
}
public void sortCourse(ArrayList<StudentsGrade> studentsGrades) {
if (studentsGrades.isEmpty()) {
System.out.println("当前无数据,请添加后重试");
} else {
System.out.println("请选择要排序的科目");
String km = scanner.next();
if(!km.matches(".*[A-D].*")){
System.out.println("没有你选择的科目信息");
return;
}
if(km.equals("A")){
for (int i = 0; i < studentsGrades.size() - 1; i++) {
for (int j =0 ; j < studentsGrades.size()-1-i ; j++) {
if (studentsGrades.get(j).courses.getA() > studentsGrades.get(j+1).courses.getA()) {
StudentsGrade tmp = studentsGrades.get(j);
studentsGrades.set(j, studentsGrades.get(j + 1));
studentsGrades.set(j + 1, tmp);
}
}
}
}
if(km.equals("B")){
for (int i = 0; i < studentsGrades.size() - 1; i++) {
for (int j =0 ; j < studentsGrades.size()-1-i ; j++) {
if (studentsGrades.get(j).courses.getB() > studentsGrades.get(j+1).courses.getB()) {
StudentsGrade tmp = studentsGrades.get(j);
studentsGrades.set(j, studentsGrades.get(j + 1));
studentsGrades.set(j + 1, tmp);
}
}
}
}
if(km.equals("C")){
for (int i = 0; i < studentsGrades.size() - 1; i++) {
for (int j =0 ; j < studentsGrades.size()-1-i ; j++) {
if (studentsGrades.get(j).courses.getC() > studentsGrades.get(j+1).courses.getC()) {
StudentsGrade tmp = studentsGrades.get(j);
studentsGrades.set(j, studentsGrades.get(j + 1));
studentsGrades.set(j + 1, tmp);
}
}
}
}
if(km.equals("D")){
for (int i = 0; i < studentsGrades.size() - 1; i++) {
for (int j =0 ; j < studentsGrades.size()-1-i ; j++) {
if (studentsGrades.get(j).courses.getD() > studentsGrades.get(j+1).courses.getD()) {
StudentsGrade tmp = studentsGrades.get(j);
studentsGrades.set(j, studentsGrades.get(j + 1));
studentsGrades.set(j + 1, tmp);
}
}
}
}
System.out.println("科目"+km+"分数最低的学生信息");
System.out.println("姓名\t\t性别\t\t学号\t\tA成绩\t\tB成绩\t\tC成绩\t\tD成绩");
System.out.format("%s\t\t%s\t\t%d\t\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\n", studentsGrades.get(0).student.getName(),studentsGrades.get(0).student.getSex(), studentsGrades.get(0).student.getId(), studentsGrades.get(0).courses.getA(), studentsGrades.get(0).courses.getB(), studentsGrades.get(0).courses.getC(), studentsGrades.get(0).courses.getD());
int n = studentsGrades.size() - 1;
System.out.println("科目"+km+"分数最高的学生信息");
System.out.println("姓名\t\t性别\t\t学号\t\tA成绩\t\tB成绩\t\tC成绩\t\tD成绩");
System.out.format("%s\t\t%s\t\t%d\t\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\n", studentsGrades.get(n).student.getName(),studentsGrades.get(n).student.getSex(), studentsGrades.get(n).student.getId(), studentsGrades.get(n).courses.getA(), studentsGrades.get(n).courses.getB(), studentsGrades.get(n).courses.getC(), studentsGrades.get(n).courses.getD());
}
}
//显示全部学生信息
public void showAllStudent(ArrayList<StudentsGrade> studentsGrades) {
if (studentsGrades.isEmpty()) {
System.out.println("当前无数据,请先添加数据");
} else {
System.out.println("----------所有学生信息如下----------");
System.out.println("姓名\t\t性别\t\t学号\t\tA成绩\t\tB成绩\t\tC成绩\t\tD成绩");
for (StudentsGrade studentsGrade : studentsGrades) {
System.out.format("%s\t\t%s\t\t%d\t\t%.2f\t\t%.2f\t\t%.2f\t\t%.2f\n", studentsGrade.student.getName(),studentsGrade.student.getSex(), studentsGrade.student.getId(), studentsGrade.courses.getA(), studentsGrade.courses.getB(), studentsGrade.courses.getC(), studentsGrade.courses.getD());
}
}
}
}
总结
以上代码复制粘贴即可使用,第一次写csdn,如有不好的地方请指出,谢谢。本文写的内容有参考(csdn:村雨遥),如有需要的请根据自己的需求自行更改,谢谢。