Java基础练习:学生成绩管理

编写程序,实现学生信息的管理

功能一:录入学生信息

录入一个学生的信息:学号、姓名、成绩。如果全部学生都录入完成后,则不允许再录入!
在这里插入图片描述

功能二:查询学生信息

如果系统中有学生信息,则显示所有学生信息;如果没有学生,则给出没有任何学生的提示。
在这里插入图片描述

功能三:修改学生成绩

如果系统中没有学生,则给出没有任何学生的提示。
如果有学生,则根据 学号 和 姓名 进行修改成绩的操作。
在这里插入图片描述

package com.sdgy;

import java.util.Scanner;

/***
 * 学生信息的管理
 * 实现: 添加学生、查询所有学生、修改学生成绩
 * @author 西北峰转东风
 *
 */

public class XueShengChengJiGuanLi {
    
    
	
	//属性
	int[] ids = new int[4];   // 用于存储所有学生的学号
	String[] names = new String[4];  // 用于存储所有学生的姓名
	double[] scores = new double[4];  // 用于存储所有学生的成绩
	Scanner sc = new Scanner(System.in);
	
	//方法
	//分别定义三个方法:新增、查询、修改 学生信息
	
	/***
	 * 1.新增学生信息成绩
	 * 首先判断系统中是否全部学生都已经录入完毕,如果全部学生都录入了,则不允许再添加学生信息。
	 * 可通过数组中最后一个元素是否为0进行判断,如果最后一个元素为0,则说明还没有把所有学生录入完成。
	 * 录入学生信息时,不能覆盖已经有的学生信息,所以,可以采用学号是0的元素进行录入(因为已经录入的学生,学号肯定不是0)
	 */
	public void addStudent() {
    
    
		System.out.println("您选择的是:新增学生功能!");
		
		for(int i=0;i<ids.length;i++) {
    
    
			if(ids[i] ==0) {
    
       //只有学号是 0 时,被认为没有录入学号,才可以录入。防止覆盖已经录入的学生信息
				System.out.println("请输入学号:");
				ids[i] = sc.nextInt();
				System.out.println("请输入姓名:");
				names[i]=sc.next();
				System.out.println("请输入成绩:");
				scores[i] = sc.nextDouble();
				System.out.println("恭喜,您已经成功录入一名学生成绩!");
				return;   //录入一个学生成绩后,直接结束该方法,不再重复循环录入。return 结束 addStudent 方法。
			}
		}
		System.out.println("注意:您不能录入学生信息,所有学生成绩已经录入完毕!");
	}
	
	
	/***
	 * 2.查询所有学生成绩
	 * 首先判断系统中有没有学生信息,可以采用如下方式判断:如果学号数组中的第一个元素为0 ,则认为还没有学生信息,此时可以给出提示后,直接结束
	 * 如果有学生信息,则循环输出,但是对于全部学生还未全部录入完的情况要进行区分,只显示学号不为0的学生即可
	 */
	public void selectStudent() {
    
    
		System.out.println("您选择的是:查询学生功能!");
		if(ids[0] ==0 ) {
    
    
			System.out.println("还没有任何学生信息");
			return;  //如果没有任何学生信息,则结束整个方法,后面的不在执行
		}
		
		System.out.println("学号\t姓名\t成绩");
		for(int i = 0; i< ids.length; i++) {
    
    
			if(ids[i] == 0) {
    
    
				return;   //如果学号是0的,直接返回,不再输出
			}
			//只显示输出有学号的学生的信息
			System.out.println(ids[i] +"\t"+ names[i] +"\t"+  scores[i]);
		}
	}
	
	/***
	 * 3.修改学生成绩
	 * 首先判断,系统中有没有学生信息,如果没有学生信息,则给出提示“没有任何学生信息”后,直接退出该方法
	 * 如果有学生信息,则可以进行修改操作:
	 *  ①:输入学号和姓名 
	 *  ② 跟系统中的数据进行比对,比对成功,则说明有该学生,然后进行修改(重新录入成绩)
	 *  ③ 如果比对不成功,则说明 学号或姓名录入有误
	 */
	public void updageStudent() {
    
    
		System.out.println("您选择的是:修改学生的成绩!");
		
		if(ids[0] ==0 ) {
    
    
			System.out.println("还没有任何学生信息");
			return; //如果没有任何学生信息,则结束整个方法,后面的不在执行
		}
		
		System.out.println("请输入要修改成绩的学号和姓名:");
		System.out.println("学号:");
		int num = sc.nextInt();
		System.out.println("姓名:");
		String name = sc.next();
		
		for(int i=0; i<ids.length; i++) {
    
    
			if(num == ids[i]&& name.equals(names[i])) {
    
      //只有学号和姓名都正确,才可以修改成绩
				System.out.println("请重新录入该学生的成绩");
				scores[i] = sc.nextDouble();
				System.out.println("恭喜,该生成绩修改完成!");
				return;  //修改学生成绩后,立即结束更新学生的整个方法,后面代码不再执行
			}
		}
		//如果上面循环中学号和姓名都没有比对上,则说明没有该生信息:
		System.out.println("查无此生:学号或姓名录入有误,或学号姓名不一致");
	}
	
	//4.主方法:用于测试
	public static void main(String[] args) {
    
    
		// 创建类的对象
		XueShengChengJiGuanLi xscj = new XueShengChengJiGuanLi();
		char xz;  //选择的代码---用于接受控制台输入的
		Scanner sc = new Scanner(System.in);
		boolean bj = true; //用于控制循环条件,作为一个标记使用
		//循环完成 各种操作
		do {
    
    
			System.out.println("====请选择功能代码:A:添加学生成绩  B:查询所有学生成绩 C:修改学生成绩 D:退出系统======");
			xz = sc.next().charAt(0);   // 获取控制台输入的 字符
			switch(xz) {
    
    
			case 'A':
				xscj.addStudent();  //调用对象的 新增学生的方法
				break;
			case 'B':
				xscj.selectStudent();  //调用对象的 查询学生的方法
				break;	
			case 'C':
				xscj.updageStudent();  //调用对象的 修改学生的方法
				break;
			case 'D':
				System.out.println("您退出了系统!");
				bj = false;     //修改标记的值,用于设置循环退出的条件
				break;
			default:
				System.out.println("您输入的字母不对,请重新输入");
				break;
			}
			
		}while(bj == true);
		System.out.println("欢迎下次使用(●'◡'●)");
	}
}


猜你喜欢

转载自blog.csdn.net/weixin_42634814/article/details/130277357