JAVA 实现简单的学生成绩管理系统

一、实验目的

1.掌握java的类与对象的基本概念;

2.掌握简单的信息管理系统的设计与实现。

二、实验环境

实验建议在安装了以下软件的计算机上完成:

1.       Windows xp/win7/win8/win10操作系统

2.       JDK 1.6以上版本

3.       Eclipse或NetBeans IDE或EditPlus或其它开发工具

三、实验内容与要求

(一) 问题描述

要求采用java类与对象的基本知识,实现简单的学生成绩管理系统。

(二) 实验要求

1.       实现定义学生成绩记录,记录包括字段有:学生姓名、学号、课程名称、成绩。

2.       实现学生成绩管理系统的菜单管理功能,允许查看、添加、修改、删除、统计、查找和排序等操作;

3.       实现查看学生成绩单功能,能显示所有学生成绩记录;

4.       实现添加学生成绩记录功能,输入某位学生某门课的成绩,能保存到成绩表里面;

5.       实现修改学生成绩记录功能,根据学生学号修改课程成绩;

6.       实现删除学生成绩记录功能,根据学生学号删除课程成绩;

7.       实现统计某门课平均分、最高分和最低分的功能;

8.       实现查找某位学生成绩功能,根据学生学号显示该学生的成绩;

9.       实现按成绩从高往低排序,并输出。

四、实现提示

  1. 定义学生成绩记录类,把记录的字段作为类的属性,并定义该类的基本操作方法;

  2. 采用一维数组实现学生成绩记录表,数组的数据类型为” 学生成绩记录类”。

 

第一步-建立一个Score类

package student.score.manage;

public class Score {
    String num;
    String name;
    double score;
	
    public Score(){
		
	}
	public void setNum(String num) {
		this.num = num;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	public void setScore(double score) {
		this.score = score;
	}
}

 

 

 

第二步-建立一个ScoreList类

package student.score.manage;

import java.util.Scanner;
public class ScoreList {
    int maxLength = 100;
	int length = 0;
    Score[] data = new Score[maxLength];
    
	Scanner input = new Scanner(System.in);
	
	public ScoreList() {
	
	}
	
	//添加记录方法
	public void add() {
			if(length < maxLength) {
				data[length] = new Score();
				System.out.print("请输入学生的学号: ");
				data[length].setNum(input.next());
				System.out.print("请输入学生的姓名:");
				data[length].setName(input.next());
				System.out.print("请输入学生的成绩:");
				data[length].setScore(input.nextDouble());
				length++;
				System.out.println("添加成功!");
			}
			else {
				System.out.println("添加失败!");
			}
	}
	
	//显示成绩单方法
	public void transcript() {
		System.out.println("=====================================");
		System.out.println(" 学号                     姓名                      成绩 ");
		for(int i = 0; i < length; i++) {
			System.out.println(data[i].num + "\t" + data[i].name + "\t" + "\t" + data[i].score);
		}
		System.out.println("=====================================\n");
	}
	
	//成绩从高往低排序方法
	public void sort() {
		Score temp = new Score();
		for(int i = 1; i < length; i++) {
			for(int j = 0; j < length - i; j++) {
				if(data[j].score < data[j + 1].score) { //冒泡法排序
					temp = data[j]; data[j] = data[j + 1]; data[j + 1] = temp;
				}

			}
		}
	}
	
	//平均分、最大最小值方法
	public void average() {
		double sum = 0.0;
		double max = 0.0;
		double min = 100.0;
		for(int i = 0; i < length; i++) {
			sum += data[i].score;
			max = max > data[i].score ? max : data[i].score;
			min = min < data[i].score ? min : data[i].score; //三目运算法
		}
		System.out.printf("这门课的平均成绩为: %.2f\n", sum/length);
		System.out.println("最高分为: " + max + "\n" + "最低分为: " + min + "\n");
	}
	
	//删除学生记录方法
	public void delete() {
		System.out.print("请输入您要删除信息的学生的学号: ");
    	String number1 = input.next();
		int i, flag = length;
		for(i = 0; i < length; i++) {
			if(number1.equals(data[i].num)) {
				flag = i; break;
			}
			}
		if(i == length) {
			System.out.println("查无此人!请核对后重新输入 \n");
			delete();
		}
		else {
			for(int j = flag; j < length; j++) {
				data[j] = data[j + 1];
			}
			System.out.println("删除成功!\n");
			length -= 1; //不减1会报数组越界的错误
		}
	}
	
	
	//查询某个学生信息方法
	public void inquire() {
		System.out.print("请输入您要查询成绩的学生的学号:");
    	String number2 = input.next();
		int i;
		for(i = 0; i < length; i++) {
			if(number2.equals(data[i].num)) {
				System.out.println("====================================");
				System.out.println(" 学号                     姓名                      成绩 ");
				System.out.println(data[i].num + "\t" + data[i].name + "\t" + "\t" + data[i].score);
				System.out.println("====================================\n");
				break;
			}
			}
		if(i == length) {
			System.out.println("查无此人!请核对后重新输入学号 \n");
			inquire();
		}
	}
	
	//修改学生信息方法
	public void recompose() {
		System.out.print("请输入您要修改信息的学生的学号:");
    	String number3 = input.next();
		int i;
		for(i = 0; i < length; i++) {
			if(number3.equals(data[i].num)) {
				System.out.println("请输入该学生新的学号,姓名和成绩:");
				data[i].setNum(input.next());
				data[i].setName(input.next());
				data[i].setScore(input.nextDouble());
				System.out.println("修改成功!\n");
				break;
			}
			}
		if(i == length) {
			System.out.println("查无此人!请核对后重新输入学号\n");
			recompose();
		}
	}
}

 

最后一步,当然是建立一个Test类啦:

 

package student.score.manage;

import java.util.Scanner;
public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		String choice = "1";
		ScoreList studentScoreList = new ScoreList();
		System.out.println("**********学生成绩管理系统********");
		while(choice.equals("0") == false) {
			System.out.println("1.查看学生成绩单");
			System.out.println("2.添加学生成绩记录");
			System.out.println("3.修改学生成绩记录");
			System.out.println("4.删除学生成绩记录");
			System.out.println("5.查看某位学生成绩记录");
			System.out.println("6.统计这门课平均分、最高分和最低分");
			System.out.println("7.按成绩从高往低排序,并输出");
			System.out.println("0.退出程序");
			System.out.print("Enter your choice: ");
			choice = input.next();
	    	
			switch(choice) {
			    case "0": 
			    	System.out.println("谢谢您的使用,欢迎下次光临!\n" + "**********按任意键结束程序**********"); 
			        break;
			    
			    case "1":
			    	studentScoreList.transcript();
			    	System.out.println("请问您还需要什么服务?\n");
			    	break;
				
			    case "2":
			    	int i = 1;
			    	do {
			    	studentScoreList.add();
			    	System.out.println("\n是否继续添加?" + "\n" + "0.否" + "\n" + "1.是");
			    	i = input.nextInt();
			    	}while(i == 1);
			    	System.out.println("请问您还需要什么服务?\n");
			    	break;
			    	
			    case "3": 
			    	studentScoreList.recompose();
			    	System.out.println("请问您还需要什么服务?\n");
			    	break;
				
			    case "4":
			    	studentScoreList.delete();
			    	System.out.println("请问您还需要什么服务?\n");
			    	break;
				
			    case "5":
			    	studentScoreList.inquire();
			    	System.out.println("请问您还需要什么服务?\n");
			    	break;
				
			    case "6":
			    	studentScoreList.average();
			    	System.out.println("请问您还需要什么服务?\n");
			    	break;
				
			    case "7":
			    	studentScoreList.sort();
			    	studentScoreList.transcript();
			    	System.out.println("请问您还需要什么服务?\n");
			    	break;
				
				default: 
					System.out.println("Invalid input! Please enter again."); 
				    break;
			}
			
		}
	}

}

 

这里是初学Java的渣新,还请大佬轻喷,有错误的地方还请多多指教,至于为啥我这个渣新也敢发代码出来,还不是学校要求的!!!而且我想我这个渣新写的代码对于萌新来说也更好理解,谢谢支持了

鉴于很多人跟我要源码 我这里贴出github地址:https://github.com/ZenGx1n/student-score-manage

有需求的自行下载 谢谢

  • 126
    点赞
  • 712
    收藏
    觉得还不错? 一键收藏
  • 43
    评论
好的,我会尽力回答你的问题。 首先,我可以给你一个简单的思路来实现一个学生成绩管理系统。 1. 定义一个学生类,包括学生的基本信息和成绩信息,如学号、姓名、年龄、语文成绩、数学成绩等。 2. 定义一个成绩管理类,包括添加学生信息、修改学生信息、查询学生信息和删除学生信息等功能。 3. 在成绩管理类,可以使用数组或集合来存储学生信息。添加学生信息时,可以通过键盘输入学生的基本信息和成绩信息,并将其添加到数组或集合。 4. 修改学生信息时,可以先输入要修改的学生的学号,然后再输入要修改的内容,最后更新学生信息。 5. 查询学生信息时,可以通过学号或姓名查询学生信息,并输出查询结果。 6. 删除学生信息时,可以通过学号或姓名来删除学生信息,并将该学生从数组或集合移除。 综上所述,以上是一个简单学生成绩管理系统实现思路,你可以根据自己的需求和实际情况进行修改和优化。同时,你也可以参考一下以下的代码实现: ```java // 学生类 class Student { private String id; // 学号 private String name; // 姓名 private int age; // 年龄 private double chinese; // 语文成绩 private double math; // 数学成绩 public Student() {} public Student(String id, String name, int age, double chinese, double math) { this.id = id; this.name = name; this.age = age; this.chinese = chinese; this.math = math; } public String getId() { return id; } public void setId(String id) { this.id = id; } 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 double getChinese() { return chinese; } public void setChinese(double chinese) { this.chinese = chinese; } public double getMath() { return math; } public void setMath(double math) { this.math = math; } @Override public String toString() { return "学号:" + id + "\t姓名:" + name + "\t年龄:" + age + "\t语文成绩:" + chinese + "\t数学成绩:" + math; } } // 成绩管理类 class ScoreManager { private List<Student> students; public ScoreManager() { students = new ArrayList<>(); } // 添加学生信息 public void addStudent(Student stu) { students.add(stu); } // 修改学生信息 public void updateStudent(String id, String field, String value) { for (Student stu : students) { if (stu.getId().equals(id)) { switch (field) { case "name": stu.setName(value); break; case "age": stu.setAge(Integer.parseInt(value)); break; case "chinese": stu.setChinese(Double.parseDouble(value)); break; case "math": stu.setMath(Double.parseDouble(value)); break; default: System.out.println("输入的字段不存在!"); return; } System.out.println("修改成功!"); return; } } System.out.println("学号不存在!"); } // 查询学生信息 public void queryStudent(String keyword) { boolean flag = false; for (Student stu : students) { if (stu.getId().equals(keyword) || stu.getName().equals(keyword)) { System.out.println(stu); flag = true; } } if (!flag) { System.out.println("未找到学生信息!"); } } // 删除学生信息 public void deleteStudent(String keyword) { Iterator<Student> iterator = students.iterator(); while (iterator.hasNext()) { Student stu = iterator.next(); if (stu.getId().equals(keyword) || stu.getName().equals(keyword)) { iterator.remove(); System.out.println("删除成功!"); } } } // 输出所有学生信息 public void printAllStudents() { for (Student stu : students) { System.out.println(stu); } } } // 测试类 public class Test { public static void main(String[] args) { ScoreManager manager = new ScoreManager(); Scanner sc = new Scanner(System.in); while (true) { System.out.println("请输入操作序号(1.添加 2.修改 3.查询 4.删除 5.输出所有学生信息 6.退出):"); int choice = sc.nextInt(); switch (choice) { case 1: System.out.println("请输入学生信息(学号 姓名 年龄 语文成绩 数学成绩):"); String id = sc.next(); String name = sc.next(); int age = sc.nextInt(); double chinese = sc.nextDouble(); double math = sc.nextDouble(); manager.addStudent(new Student(id, name, age, chinese, math)); System.out.println("添加成功!"); break; case 2: System.out.println("请输入要修改的学生的学号:"); String id2 = sc.next(); System.out.println("请输入要修改的字段(name、age、chinese、math):"); String field = sc.next(); System.out.println("请输入新的值:"); String value = sc.next(); manager.updateStudent(id2, field, value); break; case 3: System.out.println("请输入查询的关键字(学号或姓名):"); String keyword = sc.next(); manager.queryStudent(keyword); break; case 4: System.out.println("请输入要删除的关键字(学号或姓名):"); String keyword2 = sc.next(); manager.deleteStudent(keyword2); break; case 5: manager.printAllStudents(); break; case 6: System.out.println("程序已退出!"); System.exit(0); default: System.out.println("输入的操作序号有误,请重新输入!"); } } } } ``` 以上就是一个简单学生成绩管理系统实现,希望能对你有所帮助。如果有什么问题,也可以随时问我。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值