用Java实现一个学生管理系统(附源码)

目录

一、题目要求

 二、设计思路

(2)代表课程的类——Course类

(3)具体功能实现类——Function类

(4)测试类——Test类

三、代码实现

(1)Student.java文件

(2)Course.java文件

(3)Function.java文件

(4)Test.java文件


一、题目要求

        编写一个学生成绩管理系统。学生的属性包括学号、姓名、年龄等。每个学生要学习若干课程,每门课程有平时成绩、其中考试成绩、实习成绩、期末考试成绩以及总评成绩等多个成绩,其中平时成绩的数目不定(因为不同课程的教师布置的平时作业不同),而总评成绩是其它成绩的平均值。请先设计合理的类存放这些信息,然后设计程序完成以下功能:

1.列出某个学生的所有成绩

2.列出某门课程每个学生的总评成绩,及所有学生总评成绩的总评分

3.分区段统计某门课程的学生总评成绩,例如60分以下的学生人数、60至70分的学生人数等

运行效果:

 二、设计思路

(1)存放学生信息的类——Student类

属性:姓名、学号、年龄、所学课程集合

操作:构造方法,设置课程,查看自身信息,获得和重置学生的某一个信息的方法

(2)代表课程的类——Course类

属性:课程名、平时成绩、期中成绩、实习成绩、期末成绩、总评成绩

操作:构造方法、所有属性的get/set方法、toString方法(返回代表自身信息的字符串方法)

(3)具体功能实现类——Function类

属性:学生集合

操作:根据名字搜索学生信息、列出某门课程每个学生的总评成绩,及所有学生总评成绩的总评分、分区段统计某门课程的学生总评成绩,例如60分以下的学生人数、60至70分的学生人数等。

(4)测试类——Test类

功能:创建系统菜单

1:创建学生集合,学生信息可以从键盘输入也可以直接在函数中初始化,在这里选择从键盘输入

2:查询学生信息

3:列出某门课程每个学生的总评成绩,及所有学生总评成绩的总评分

4:分区段统计某门课程的学生总评成绩,例如60分以下的学生人数、60至70分的学生人数等

5:退出系统

三、代码实现

(1)Student.java文件

package 学生管理系统;
import java.util.Scanner;

public class Student {
	private int age;
	private String id;
	private String Sname;
	private Course[] courselist;
	private int coursenum = 0;
	private static final int Maxcoursenum = 10;
	Scanner sc = new Scanner(System.in);
	
	//构造方法
	public Student(String Sname) {
		courselist = new Course[Maxcoursenum];
		boolean flag=true;
		String course;
		
		this.Sname=Sname;
		System.out.println("请输入学号:");
		this.id=sc.next();
		System.out.println("请输入年龄:");
		this.age=sc.nextInt();
		while(coursenum<Maxcoursenum) {
			flag=true;
			System.out.println("请输入所修课程:(输入end结束)");
			course=sc.next();
			if("end".equals(course)) {
				break;
			}
			else {
				for(int i=0;i<coursenum;i++) {
					if(courselist[i].GetCname().equals(course)) {
						System.out.println("课程已存在");	
						flag=false;
					}
				}
				if(flag==true) {
					courselist[coursenum]=new Course(course);
					this.coursenum++;
				}			
			}
		}
		System.out.println("学生:"+this.Sname+"创建成功");
		System.out.println("共修"+this.coursenum+"门课程");
	}
	
	//设置课程
	public boolean SetCourse() {
		String Cname;
		Cname=sc.next();
		System.out.println("请输入课程名:");
		for(int i=0;i<this.coursenum;i++) {
			if(courselist[i].GetCname().equals(Cname)) {
				System.out.println("课程已存在");
				return false;
			}
		}
		Course course = new Course(Cname);
		courselist[coursenum]=course;
		coursenum++;
		return true;
	}
	
	//查看自身信息
	public void GetMessasge() {
		System.out.println("该学生的成绩是:");
		for(int i=0;i<this.coursenum;i++) {
			System.out.println(courselist[i].toString());
		}
	}
	
	//重置学生姓名
	public void SetSname() {
		String new_name;
		System.out.println("请输入学生姓名:");
		new_name=sc.next();
		this.Sname=new_name;
		System.out.println("姓名修改成功");
	}
	
	//获得学生姓名
	public String GetName() {
		return this.Sname;
	}
	
	//重置学生年龄
	public void SetAge() {
		int new_age;
		System.out.println("请输入学生年龄:");
		new_age=sc.nextInt();
		this.age=new_age;
		System.out.println("年龄修改成功");
	}
	
	//获得学生年龄
	public int GetAge() {
		return this.age;
	}
	
	//重置学生学号
	public void SetId() {
		String new_id;
		System.out.println("请输入学生学号:");
		new_id=sc.next();
		this.id=new_id;
		System.out.println("学号修改成功");
	}
	
	//获得学生学号
	public String GetId() {
		return this.id;
	}
	
	//获得学生所修课程
	public Course[] GetCourse() {
		return this.courselist;
	}
	
	//获得学生所修课程数目
	public int GetCourseNum() {
		return this.coursenum;
	}
}

(2)Course.java文件

package 学生管理系统;
import java.util.Scanner;

public class Course {
	private String Cname;
	private int dailyGrade;
	private int doGrade;
	private int midGrade;
	private int endGrade;
	private double sumGrade;
	Scanner sc = new Scanner(System.in);
	
	//初始化
	public Course(String Cname) {	
		this.Cname=Cname;
		System.out.println("请输入平时成绩:");
		this.dailyGrade=sc.nextInt();
		System.out.println("请输入实践成绩:");
		this.doGrade=sc.nextInt();
		System.out.println("请输入期中成绩:");
		this.midGrade=sc.nextInt();
		System.out.println("请输入期末成绩:");
		this.endGrade=sc.nextInt();
		this.sumGrade=(this.dailyGrade+this.doGrade+this.midGrade+this.endGrade)/4;
	}
	
	//获得课程名
	public String GetCname() {
		return this.Cname;
	}
	
	//修改课程名
	public void SetName() {
		System.out.println("请输入新的课程名:");
		this.Cname=sc.next();
		System.out.println("课程名修改成功");
	}
	
	//获得平时成绩
	public int GetDailyGrade() {
		return this.dailyGrade;
	}
	
	//修改平时成绩
	public void SetDailyGrade() {
		System.out.println("请输入新的平时成绩:");
		this.dailyGrade=sc.nextInt();
		System.out.println("平时成绩修改成功");
	}
	
	//获得实践成绩
	public int GetDoGrade() {
		return this.doGrade;
	}
	
	//修改实践成绩
	public void SetDoGrade() {
		System.out.println("请输入新的实践成绩:");
		this.doGrade=sc.nextInt();
		System.out.println("实践成绩修改成功");
	}
	
	//获得期中成绩
	public int GetMidGrade() {
		return this.midGrade;
	}
	
	//修改期中成绩
	public void SetMidGrade() {
		System.out.println("请输入新的期中成绩:");
		this.midGrade=sc.nextInt();
		System.out.println("期中成绩修改成功");
	}
	
	//获得期末成绩
	public int GetEndGrade() {
		return this.endGrade;
	}
	
	//修改期末成绩
	public void SetEndGrade() {
		System.out.println("请输入新的实践成绩:");
		this.endGrade=sc.nextInt();
		System.out.println("实践成绩修改成功");
	}
	
	//获得总评成绩
	public double GetSumGrade() {
		return this.sumGrade;
	}
	
	//以字符串的形式返回自身信息
	public String toString() {
		return ("Grade [course="+this.Cname+",dailyGrade="+this.dailyGrade+",doGrade="+this.doGrade+",midGrade="+this.midGrade+",endGrade="+this.endGrade+",sumGrade="+this.sumGrade+"]");
	}
}

(3)Function.java文件

package 学生管理系统;
import java.util.Scanner;

public class Function {
	private Student[] studentlist;
	private int studentnum=0;
	Scanner sc=new Scanner(System.in);
	
	public Function() {
		studentlist=new Student[100];
	}
	//添加学生
	public boolean AddStudent() {
		String name;
		System.out.println("请输入学生姓名:");
		name=sc.next();
		for(int i=0;i<studentnum;i++) {
			if(studentlist[i].GetName().equals(name)) {
				System.out.println("学生已存在!");
				return false;
			}
		}		
		studentlist[studentnum]=new Student(name);
		studentnum++;
		return true;
	}
	
	//根据名字搜索学生信息
	public void GetStuByName(String Sname) {
		boolean flag=false;
		for(int i=0;i<studentnum;i++) {
			if(studentlist[i].GetName().equals(Sname)) {
				studentlist[i].GetMessasge();
				flag=true;
			}
		}
		if(flag==false) {
			System.out.println("学生不存在!");
		}
	}
	
	//列出某门课程每个学生的总评成绩和所有学生的总评成绩的总评分(平均值)
	public void GetSumByCname(String Cname) {
		int sumgrade=0;
		int sum=0;
		for(int i=0;i<studentnum;i++) {
			for(int j=0;j < studentlist[i].GetCourseNum();j++) {
				if(studentlist[i].GetCourse()[j].GetCname().equals(Cname)) {
					System.out.println(studentlist[i].GetName()+"的总评分是"+studentlist[i].GetCourse()[j].GetSumGrade());
					sumgrade+=studentlist[i].GetCourse()[j].GetSumGrade();
					sum+=1;
					break;
				}
			}
		}
		if(sum==0) {
			System.out.println("没有学生选修该课程!");
		}
		else {
			System.out.println("所有学生的总评成绩的总评分为:"+sumgrade/sum);
		}
	}
	
	//分区段统计某门课程学生的总评成绩
	public void GetSumByCnameAndSector(String Cname) {
		boolean flag=false;
		int[] grade=new int[5];
		for(int i=0;i<studentnum;i++) {
			for(int j=0;j < studentlist[i].GetCourse().length;j++) {
				if(studentlist[i].GetCourse()[j].GetCname().equals(Cname)) {
					System.out.println("学生"+studentlist[i].GetName()+"的总评成绩为"+studentlist[i].GetCourse()[j].GetSumGrade());
					flag=true;
					if(studentlist[i].GetCourse()[j].GetSumGrade()<60) {
						grade[0]+=1;
						break;
					}
					if(studentlist[i].GetCourse()[j].GetSumGrade()<70) {
						grade[1]+=1;
						break;
					}
					if(studentlist[i].GetCourse()[j].GetSumGrade()<80) {
						grade[2]+=1;
						break;
					}
					if(studentlist[i].GetCourse()[j].GetSumGrade()<90) {
						grade[3]+=1;
						break;
					}
					if(studentlist[i].GetCourse()[j].GetSumGrade()<100) {
						grade[4]+=1;
						break;
					}
				}
			}
		}
		if(flag==true) {
			System.out.println("60分以下的有"+grade[0]+"人");
			System.out.println("60~70分以下的有"+grade[1]+"人");
			System.out.println("70~80分以下的有"+grade[2]+"人");
			System.out.println("80~90分以下的有"+grade[3]+"人");
			System.out.println("90分以上的有"+grade[4]+"人");
		}
		else {
			System.out.println("没有学生选修该课程!");
		}
	}
}

(4)Test.java文件

package 学生管理系统;
import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		boolean flag=true;
		String Sname;
		String Cname;
		Scanner sc = new Scanner(System.in);
		Function clbum=new Function();
		int choice;
		while(flag==true) {
			try {
				System.out.println("请选择服务:1.添加学生 2.列出某个学生的所有成绩 3.列出某门课程的总评分 4.分区段统计某门课程的学生总评成绩 5.退出");
				choice = sc.nextInt();
				switch(choice) {
				case 1:
					if(clbum.AddStudent()==true) {
						System.out.println("添加成功");
					}
					else {
						System.out.println("添加失败!");
					}
					break;
					
				case 2:					
					System.out.println("请输入学生姓名:");
					Sname=sc.next();
					clbum.GetStuByName(Sname);
					break;
					
				case 3:					
					System.out.println("请输入课程名称:");
					Cname=sc.next();
					clbum.GetSumByCname(Cname);
					break;
				
				case 4:
					System.out.println("请输入课程名称:");
					Cname=sc.next();
					clbum.GetSumByCnameAndSector(Cname);
					break;
					
				case 5:
					flag=false;
					break;
					
				default:
					System.out.println("1");
					System.out.println("输入不符合要求!");
					break;
				}
			}catch(Exception e) {
				System.out.println("输入不符合要求!");
				sc = new Scanner(System.in);
			}
		}
	}
}

如果有疑问欢迎在评论区交流或私聊我哦

  • 24
    点赞
  • 220
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

可乐喽

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值