编写程序,实现学生信息的管理
功能一:录入学生信息
录入一个学生的信息:学号、姓名、成绩。如果全部学生都录入完成后,则不允许再录入!
功能二:查询学生信息
如果系统中有学生信息,则显示所有学生信息;如果没有学生,则给出没有任何学生的提示。
功能三:修改学生成绩
如果系统中没有学生,则给出没有任何学生的提示。
如果有学生,则根据 学号 和 姓名 进行修改成绩的操作。
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("欢迎下次使用(●'◡'●)");
}
}