学生成绩管理系统

2022-10-22,

实验要求:

设计并实现一个计算机系信息管理系统,该系统用于管理计算机系教师和学生的信息。

系统功能:教师信息管理、学生信息管理。

  1. 系统初始界面要显示系统名称、系统开发者的班级和姓名、开发时间、版权所有等信息。
  2. 系统要有主菜单,让用户可自由选择管理教师信息或管理学生信息或退出;
  3. 教师信息管理中至少有教师基本信息录入、课时数录入、打印教师信息表等功能;
  4. 学生信息管理中至少有学生基本信息录入、打印学生基本信息表、数学成绩录入、英语成绩录入、Java成绩录入、输出成绩表等功能;
  5. 在教师信息管理和学生信息管理中要有子菜单,可以让用户自由选择其中的子功能。

实验思路:

  1. 要管理教师和学生两类信息,故必须有教师和学生两种类。由于教师和学生有多个属性相同,因此先设置一个人员类,再让教师类和学生类继承它。
  2. 设置一个教师信息管理类,教师的信息管理操作均由该类实现。
  3. 设置一个学生信息管理类,学生的信息管理操作均由该类实现。
  4. 主类。主要功能是:
    • 初始界面的显示;
    • 进入循环,显示主菜单供用户选择教师信息管理或学生信息管理;
    • 进入教师信息管理或学生信息管理后应显示子菜单,供用户选择它们的子功能,实现相应的信息管理。

 人员类:

有身份证号、姓名、年龄等域,以及各个域值的设置和获取方法,还可以有基本信息(身份证号、姓名)的输出方法p。

package system;

public class People {
	private String name;
	private String ID;
	private String sex;
	private int age;
	private String subject;
	public People(String name, String iD, String sex, int age, String subject) {
		super();
		this.name = name;
		ID = iD;
		this.sex = sex;
		this.age = age;
		this.subject = subject;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getID() {
		return ID;
	}
	public void setID(String iD) {
		ID = iD;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getSubject() {
		return subject;
	}
	public void setSubject(String subject) {
		this.subject = subject;
	}
	

	
	public People(String ID,String name) {
		super();
		ID=ID;
		this.name=name;
		
	}
	
	public People() {
		
	}

}

 

教师类,在继承人员类的基础上再增加教师工号、课时数等域,并且设置这些域值的设置和获取方法,再添加教师基本信息(教师工号、姓名)输出方法p等。

package system;

	public class Teacher extends People{
		private String TeaNo;
		private int classNum;
		public String getTeaNo() {
			return TeaNo;
		}
		public void setTeaNo(String teaNo) {
			TeaNo = teaNo;
		}
		public int getClassNum() {
			return classNum;
		}
		public void setClassNum(int classNum) {
			this.classNum = classNum;
		}
		public Teacher(String ID,String name,String TeaNo) {
			super(ID,name);
			this.TeaNo=TeaNo;
		}
	}

 

学生类,在继承人员类的基础上再增加学号、三门课成绩(数学、英语、Java)等域,并且设置这些域值的设置和获取方法,再添加学生信息基本信息(学号、姓名)输出f方法p、计算平均分等方法

package system;

	public class Student extends People{ 
		private int Math;
		private int English;
		private int Java;
		private int StuNo;
		
		public int getMath() {
			return Math;
		}
		public void setMath(int math) {
			Math = math;
		}
		public int getEnglish() {
			return English;
		}
		public void setEnglish(int english) {
			English = english;
		}
		public int getJava() {
			return Java;
		}
		public void setJava(int java) {
			Java = java;
		}
		public int getStuNo() {
			return StuNo;
		}
		public void setStuNo(int stuNo) {
			StuNo = stuNo;
		}
		
		public Student(String ID,String name,int StuNo) {
			super(ID,name);
			this.StuNo=StuNo;			
		}
		public Student() {
			// TODO 自动生成的构造函数存根
		}
	}

教师信息管理类。该类中要有教师人数域、教师列表域(教师类对象数组),并且对教师信息进行管理,例如教师信息录入、课时数录入、输出教师列表等。

package system;

import java.util.ArrayList;
import java.util.Scanner;

import com.sun.xml.internal.ws.encoding.soap.SOAP12Constants;

public class TeaAdmin {
	public static ArrayList<Teacher>teachers = new ArrayList<>();
	public static Scanner sc = new Scanner(System.in);
	public static void main(String[] args) {
		Teacher();
	}
	public static void Teacher() {
		boolean x=true;
		while(x) {
			System.out.println("《教师信息管理:0.退出教师系统\t1.录入教师信息\t2.录入教师课时数\t3.打印教师信息》");
			System.out.println("请选择功能:(0~3)");
			int num=sc.nextInt();
			switch(num) {
			case 0:
				System.out.println("欢迎下次使用!");
				x=false;
				break;
			case 1:
				addTeacher(teachers);
				break;
			case 2:
				addClass(teachers);
				break;
			case 3:
				printTeacher();
				break;
			default:
				System.out.println("输入有误,请输入(0~3):");
				break;
			}
		}
	}
	public static void addTeacher(ArrayList<Teacher>teachers) {
		int i=1;
		System.out.println("请输入教师人数:");
		int np=sc.nextInt();
		System.out.println("输入"+np+"个教师的身份证号、姓名、教师号:");
		while(i<=np)
		{
			String iD=sc.next();
			String name=sc.next();
			String TeaNo=sc.next();

			Teacher tea = new Teacher(iD, name, TeaNo);
			teachers.add(tea);
			i++;
		}
		System.out.println("教师主要信息录入完成");
	}
	
	public static void addClass(ArrayList<Teacher>teachers) {
		if(teachers!=null&&!teachers.isEmpty()) {
			for(int i=0;i<teachers.size();i++) {
				Teacher tea = teachers.get(i);
				System.out.println(tea.getName()+"的课时数:");
				int num = sc.nextInt();
				while(true) {
					if(num>=0&&num<=20) {
						tea.setClassNum(num);
						break;
					}else {
						System.out.println("请重新输入:");
						num = sc.nextInt();
					}
					
				}
			}
		}else {
			System.out.println("没有该教师!");
		}
		System.out.println("教师课时数录入成功!");
	}
	
	public static void printTeacher() {
		System.out.println("教师号\t姓名\t课时数");
		for(int i=0;i<teachers.size();i++) {
			Teacher tea = teachers.get(i);
			System.out.println(tea.getTeaNo()+"\t"+tea.getName()+"\t"+tea.getClassNum());
		}
	}
}

学生信息管理类。该类中要有学生人数域、学生列表域(学生类对象数组),并且对学生信息进行管理,例如学生信息录入、成绩录入、输出学生列表、输出成绩表等。

package system;

import java.util.ArrayList;
import java.util.Scanner;

import com.sun.org.apache.xpath.internal.operations.Equals;

import jdk.nashorn.internal.runtime.FindProperty;

public class StuAdmin{
	public static ArrayList<Student> students = new ArrayList();
	public static Scanner sc = new Scanner(System.in);
	public static void main(String[] args) {
		Student();
	}
	public static void Student() {
		boolean x=true;
		while(x) {
			System.out.println("《学生信息管理:0.退出学生系统\t1.录入学生信息\t2.打印学生信息》");
			System.out.println("《3.录入数学成绩\t4.录入英语成绩\t5.录入JAVA成绩\t6.打印成绩表");
			System.out.println("《7.各科平均分\t8.查找学生成绩》");
			System.out.println("请输入功能(0~7)");
			int num=sc.nextInt();
			switch (num) {
			case 0:
				System.out.println("欢迎下次使用");
				x=false;
				break;
			case 1:
				addStudent(students);//录入学生信息
				break;
			case 2:
				printStudent(students);//打印学生信息
				break;
			case 3:
				mathStudent();//输入学生数学成绩
				break;
			case 4:
				englishStudent();//输入学生英语成绩
				break;
			case 5:
				javaStudent();//输入学生Java成绩
				break;
			case 6:
				printSum();//打印学生全部成绩
				break;
			case 7:
				Ave();//统计各科平均分
				break;
			case 8:
				Find(students);//根据学号查找学生成绩
				break;
			default:
				System.out.println("输入有误,请重新输入!");
				break;
			}
		}
	}
	public static void addStudent(ArrayList<Student> students){
		int i=1;
		System.out.println("请输入学生人数:");
		int np=sc.nextInt();
		System.out.println("输入"+np+"个学生的身份证号、姓名、学号:");
		while(i<=np)
		{
			String iD=sc.next();
			String name=sc.next();
			int StuNo=sc.nextInt();

			Student stu = new Student( iD,name,StuNo);
			students.add(stu);
			i++;
		}
		System.out.println("学生主要信息录入完成");
	}
	
	public static void printStudent(ArrayList<Student>students){
		if(students!=null&&!students.isEmpty()) {
			System.out.println("学号\t姓名");
			for(int i=0;i<students.size();i++){
				Student stu=students.get(i);
				System.out.println(stu.getStuNo()+"\t"+stu.getName());
			}
		}else {
			System.out.println("没有该学生!");
		}
		System.out.println("查询结束");
	}
	
	public static void mathStudent() {
		if(students!=null&&!students.isEmpty()) {
			for(int i=0;i<students.size();i++) {
				Student stu = students.get(i);
				System.out.println(stu.getName()+"的数学成绩:");
				int mathgrades = sc.nextInt();
				while(true) {
					if(mathgrades>=0&&mathgrades<=100) {
						stu.setMath(mathgrades);
						break;
					}else {
						System.out.println("请重新输入:");
						mathgrades = sc.nextInt();
					}
					
				}
			}
		}else {
			System.out.println("没有该学生!");
		}
		System.out.println("学生成绩录入成功!");
		
	}
	
	public static void englishStudent() {
		if(students!=null&&!students.isEmpty()) {
			for(int i=0;i<students.size();i++) {
				Student stu = students.get(i);
				System.out.println(stu.getName()+"的英语成绩:");
				int englishgrades = sc.nextInt();
				while(true) {
					if(englishgrades>=0&&englishgrades<=100) {
						stu.setEnglish(englishgrades);
						break;
					}else {
						System.out.println("请重新输入:");
						englishgrades = sc.nextInt();
					}
					
				}
			}
		}else {
			System.out.println("没有该学生!");
		}
		System.out.println("学生成绩录入成功!");
		
	}
	
	public static void javaStudent() {
		if(students!=null&&!students.isEmpty()) {
			for(int i=0;i<students.size();i++) {
				Student stu = students.get(i);
				System.out.println(stu.getName()+"的java成绩:");
				int javagrades = sc.nextInt();
				while(true) {
					if(javagrades>=0&&javagrades<=100) {
						stu.setJava(javagrades);
						break;
					}else {
						System.out.println("请重新输入:");
						javagrades = sc.nextInt();
					}
					
				}
			}
		}else {
			System.out.println("没有该学生!");
		}
		System.out.println("学生成绩录入成功!");
		
	}
	
	public static void printSum() {
		System.out.println("学号\t姓名\t数学成绩\t英语成绩\tJava成绩");
		for(int i=0;i<students.size();i++) {
			Student stu = students.get(i);
			System.out.println(stu.getStuNo()+"\t"+stu.getName()+"\t"+stu.getMath()+"\t"+
					stu.getEnglish()+"\t"+stu.getJava());
		}
	}
	
	public static void Ave() {
		int allmath = 0;
		int allenglish = 0;
		int alljava = 0;
		double mathAve;
		double englishAve;
		double javaAve;
		System.out.println("数学平均分\t英语平均分\tjava平均分");
		for(int i=0;i<students.size();i++) {
			Student stu = students.get(i);
			allmath+=stu.getMath();
			allenglish+=stu.getEnglish();
			alljava+=stu.getJava();
			}

		mathAve=allmath/students.size();
		englishAve=allenglish/students.size();
		javaAve=alljava/students.size();
		System.out.println(mathAve+"\t\t"+englishAve+"\t\t"+javaAve);
	}
	
	public static void Find(ArrayList<Student> students) {
		System.out.println("----------查找学生成绩----------");
		if (students.size() == 0) {
	        System.out.println("当前无数据,请添加后重试");
	    } else {
	        System.out.println("请输入要查找学生的学号:");
	        long id = sc.nextLong();
	        int flag = -1;
	        Student student = new Student();
	        for (int i = 0; i < students.size(); i++) {
	            student = students.get(i);
	            if (student.getStuNo() == id) {
	                flag = i;
	                break;
	            }
	        }
	        if (flag == -1) {
	            System.out.println("未找到对应学号的学生,请确认后重新输入!");
	        } else {
	            System.out.println("对应学号的学生成绩如下:");
	            System.out.println("学号\t\t姓名\t\t数学\t\t英语\t\tJava");
	            System.out.println(student.getStuNo()+"\t\t"+student.getName()+"\t\t"+student.getMath()+"\t\t"+student.getEnglish()+"\t\t"+student.getJava());
	            System.out.println("查找信息成功!");
	        }
	    }
	

	}

		
		
	
}

主菜单:调用学生管理类和教师管理类

package system;

import java.util.Scanner;

public class Manu {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while(true) {
			System.out.println("**********************计算机系信息系统************************");
			System.out.println("****\t系统开发人: \t****");
			System.out.println("****\t开发时间:****");
			System.out.println("**\t版本:1.0**");
			System.out.println("************************************************************");
			System.out.println("");
			System.out.println("==================系统功能===============");
			System.out.println("===0.退出系统 1.教师信息管理 2.学生信息管理==");
			System.out.println("========================================");
			System.out.println("请输入功能选项:(0~2)");
			int num=sc.nextInt();
			switch (num) {
			case 0:
				System.out.println("欢迎下次使用!");
				System.exit(0);
				break;
			case 1:
				TeaAdmin.Teacher();
				break;
			case 2:
				StuAdmin.Student();
				break;


			default:
				System.out.println("请正确选择功能:(0~2)");
				break;
			}
		}
	}
}

运行结果:

 

 

 

 

 

 

 

 

 

《学生成绩管理系统.doc》

下载本文的Word格式文档,以方便收藏与打印。