一、前言
之前发的Java学生成绩管理系统博文只有代码,为更加完善Java学生成绩管理系统,所以增加了控制台运行结果显示以及功能实现等图片;
本学生成绩管理系统是我在上学时写的,有一些地方没能完美实现,请包涵也请多赐教,但这个博文会满足部分大学学生的需求
该系统只能在控制台(eclipse等版本)上运行
二、代码部分
首先需要新建一个Java项目,在建立包,然后创建三个类分别是如下的Stuednt类、Admin类、StudentAdmin类
定义Student学生类
package com.edu.p1;
public class Student {
private int num; //学号
private String name; //姓名
private int age; //年龄
final String[]course={"数学","语文","英语"}; //科目
private int score[]=new int[3]; //三个成绩数组
private int avg; //平均成绩
private int sum; //总成绩
public int getNum() { //返回学号
return num;
}
public void setNum(int num) { //设置学号
this.num = num;
}
public String getName() { //返回姓名
return name;
}
public void setName(String name) { //设置姓名
this.name = name;
}
public int getAge() { //返回年龄
return age;
}
public void setAge(int age) { //设置年龄
this.age = age;
}
public int[] getScore() { //返回指定科目和成绩
return score;
}
public void setScore(int[] score) { //设置科目和成绩
this.score = score;
}
public int getAvg() { //返回平均分
return avg;
}
public void setAvg(int avg) { //设置平均分
this.avg = avg;
}
public int getSum() { //返回总分
return sum;
}
public void setSum(int sum) { //设置总分
this.sum = sum;
}
public String[] getCourse() { //重写toString方法
return course;
}
public String toString(){
String msg="\t"+this.num+"\t"+this.name+"\t"+this.age+"\t";
for(int i=0;i<score.length;i++){
msg=msg+score[i]+"\t";
}
msg=msg+this.avg+"\t"+this.sum+"\t";
return msg;
}
}
定义Admin——用来管理学生的类
package com.edu.p1;
import java.util.Scanner;
public class Admin { //用来管理学生的类
static int i; //静态变量,用来保存每次录入学生的学号,自动生成
static String msg; //显示学生信息表的表头字符串
//----------创建生成学生信息表头的字符串 学号 姓名 年龄 数学 英语 平均成绩 总成绩-----
public String createMsg()
{
String str;
str="\t学号\t姓名\t年龄\t";
Student s=new Student();
for(int j=0;j<s.course.length;j++){
str=str+s.getCourse()[j]+"\t";
}
str=str+"平均成绩\t总成绩";
msg=str;
return msg;
}
//-------根据学生的姓名和年龄创建一名学生---------
public void create(String name,int age,Student[] arr){
Student stu=new Student();
stu.setName(name);
stu.setAge(age);
i=this.setIndex(arr);
if(i==99999){
System.out.println("所有的学生都已经添加完了,不能再添加了!");
return;
}
stu.setNum(i);
arr[i]=stu;
}
//------返回Student对象数组中元素为空的下标------
public int setIndex(Student[] arr){//输出所有的学生
for(int j=0;j<arr.length;j++){
if(arr[j]==null){
return j;
}
}
return 99999;
}
//---------输出所有的学生的相关信息-------------
public void print(Student[] arr)
{
System.out.println(this.createMsg());
for(int i=0;i<arr.length;i++)
{
if(arr[i]!=null)
System.out.println(arr[i]);
}
}
//----------根据学号判断此学生是否存在-----------
public boolean exist(int num,Student stu)
{
if(stu!=null)
{
if(stu.getNum()==num)return true;
else
return false;
}
return false;
}
//----------根据学号查找一个学生------------------
public void search(int num,Student[] arr)
{
for(int i=0;i<arr.length;i++)
{
if(this.exist(num, arr[i])==true)
{
System.out.println(arr[i]);
return;
}
}
System.out.println("没有这个学生! 学号为:"+num+"的学生!");
}
//-----根据指定的编号录入学生的各门课成绩---------------------------
public void input(int num,Student[] arr){
int grade[]=new int[3];
int sum=0,avg=0;
Scanner in=new Scanner(System.in);
for(int i=0;i<arr.length;i++){
if(this.exist(num, arr[i])==true){
for(int j=0;j<arr[i].course.length;j++){
System.out.println("请输入姓名为:"+arr[i].getName()+"的"+arr[i].getCourse()[j]+"成绩:");
//System.out.println(arr[i].getCourse()[j]+"成绩:");
grade[j]=in.nextInt();
sum+=grade[j];
}
avg=sum/grade.length;
arr[i].setScore(grade);
arr[i].setSum(sum);
arr[i].setAvg(avg);
this.print(arr);
return;
}
}
}
//------------根据指定的学号修改此学生的姓名和年龄------------
public void update(int num,String name,int age,Student[] arr){
for(int i=0;i<arr.length;i++){
if(this.exist(num, arr[i])==true){
arr[i].setName(name);
arr[i].setAge(age);
System.out.println("===学生信息修改成功!===");
this.print(arr);
return;
}
}
System.out.println("===找不到此学生,信息修改失败!===");
}
//------------根据指定的学号删除一名学生------------
public void delete(int num,Student[] arr){
for(int i=0;i<arr.length;i++){
if(this.exist(num, arr[i])==true){
arr[i]=null;
this.print(arr);
return;
}
}
System.out.println("===找不到此学生,信息删除改失败!===");
}
//---------------根据总分进行排序-降序---------------
public void sorTotal(Student[] arr){
for(int i=0;i<arr.length;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]!=null){
if(arr[i].getSum()<arr[j].getSum()){
Student stu=arr[i];
arr[i]=arr[j];
arr[j]=stu;
}
}
}
}
this.print(arr);
}
//-------------根据指定的课程分数进行排序--降序----------
public void sort(int coursenum,Student[] arr){
for(int i=0;i<arr.length;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]!=null){
if(arr[i].getScore()[coursenum]<arr[j].getScore()[coursenum]){
Student stu=arr[i];
arr[i]=arr[j];
arr[j]=stu;
}
}
}
}
this.print(arr);
}
}
定义StudentAdmin测试类
package com.edu.p1;
import java.util.Scanner;
public class StudentAdmin {
public static void main(String[] args) {
// TODO 自动生成的方法存根
System.out.println("请输入学生的人数:");
Scanner in=new Scanner(System.in);
int n=in.nextInt();
Student[] stu=new Student[n];
while(true){
Admin admin=new Admin();
System.out.println("10:添加一名学生======");
System.out.println("11:根据学号输入学生各门成绩======");
System.out.println("12:根据学号查找一个学生======");
System.out.println("13:根据学号删除一个学生======");
System.out.println("14:根据学号更新学生的姓名和年龄======");
System.out.println("15:根据总分进行排序======");
System.out.println("16:根据某门课程成绩进行排序======");
System.out.println("99:退出系统======");
int select=in.nextInt();
switch(select){
case 10:
System.out.println("请输入学生的姓名:");
String name=in.next();
System.out.println("请输入学生的年龄:");
int age=in.nextInt();
admin.create(name, age, stu);
admin.print(stu);
break;
case 11:
System.out.println("执行根据学号录入学生各科的成绩");
System.out.println("请输入录入各科成绩的学生的编号:");
int num=in.nextInt();
admin.input(num, stu);
break;
case 12:
System.out.println("执行查找学生基本信息的操作");
System.out.println("请输入学号进行查找");
num=in.nextInt();
admin.search(num, stu);
break;
case 13:
System.out.println("执行删除学生的操作");
System.out.println("请输入要删除的学生的学号:");
num=in.nextInt();
admin.delete(num, stu);
break;
case 14:
System.out.println("执行更新学生基本信息的操作");
System.out.println("请输入要更新的学生的学号:");
num=in.nextInt();
System.out.println("请输入正确的学生的姓名:");
name=in.next();
System.out.println("请输入正确的学生的年龄:");
age=in.nextInt();
admin.update(num, name, age, stu);
break;
case 15:
System.out.println("执行按总分进行排序的操作");
admin.sorTotal(stu);
break;
case 16:
System.out.println("执行按某科成绩进行排序的操作");
System.out.println("请输入要排序的课程代码:0-数学 1-语文 2-英语");
int coursenum=in.nextInt();
admin.sort(coursenum, stu);
break;
case 99:
System.exit(0);
break;
}
}
}
}
三、运行结果
运行后首先输入人数
依次添加学生,并按提示输入姓名跟年龄,后在输入学生的成绩
依次输入其他2人的相关信息,输入完见下面的图片
之后在实现相关功能,如对总分进行排序
其他功能就不举例子了,同时相关内容也可以支持修改的!