Java学生成绩管理系统(完善版)

一、前言

之前发的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人的相关信息,输入完见下面的图片

 

 之后在实现相关功能,如对总分进行排序

其他功能就不举例子了,同时相关内容也可以支持修改的! 

该学生成绩信息管理系统涉及到学生、教师、系统管理员、班级、学生成绩、课程。设置一个系统管理员对系统进行管理。所有用户需输入账号、密码登录进入系统;管理员进入系统后可对学生、老师、班级、课程进行增删改查操作;学生进入系统,查看成绩、查看和修改自己的信息;老师进入系统后,对自己这门课程的学生设置课程成绩、查看和修改自己的信息,查看学生的信息和成绩、以及统计分析学生的成绩; 管理员为班级设置年级,为年级设置课程,为班级的每门课程设置老师,为学生设置班级。一个年级有多门课程(语文、数学、外语等等),班级的每门课程只能有一名老师,一个老师可以有多门课程;老师选择自己这门课程为该课程的学生登记成绩。老师可以查看其他老师的信息(可以当成是老师的通讯录),查看本课程学生的信息和成绩;学生可以查看班级其他同学的信息(可以看成是班级的同学录)。 考试分为两种,一种是年级统考,一种是平时考试。年级统考需要管理员事先添加一次年级统考,考试成绩出来后,老师进入系统选择该次考试为学生登记成绩。平时考试则是班级平时的考试,老师添加考试信息,登记成绩。成绩统计分析则是针对年级统考进行分析,主要涉及各学科分数名次,总分名次。 技术实现 系统环境:Windows开发工具:IDEAJava本:JDK 1.8服务器:Tomcat 1.8数据库:MySQL 5.X系统采用技术:Servlet+Jsp+Jdbc+H-ui+EasyUI+jQuery+Html+Css+Ajax 系统功能系统主要分为三种用户角色,分别是管理员、老师以及学生,其具功能如下: - 管理员   学生信息管理、教师信息管理、年级信息管理、班级信息管理、课程信息管理、考试信息管理,系统参数设置 - 老师   教学管理、教师个人信息维护、教师通讯录管理 - 学生考试成绩查询、学生通讯录、学生个人信息维护 运行截图 登录界面: 管理员界面: 考试列表:  成绩统计: 学生信息管理: 教师信息管理: 年级、班级信息管理:  系统设置: 教师界面:  成绩登记:  教师通讯录: 个人信息:  学生界面: 学生成绩查询: 班级通讯录: 学生个人信息:              
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姜鸿阳

谢谢您!感谢您的支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值