/**
需求:制作一个简单的学生信息管理系统,通过键盘选择操作进行添加
学生(学号,姓名,性别,年龄,成绩)的信息,
这些信息通过数组存储,
同时还可以进行查询某个或全体学生信息,
修改学生信息,
删除学生信息的操作。
(要求有一定的优化,例如对用户输入信息是否符合要求的处理)。
设计:Student类 ,操作学生信息的类StuData, Main 、StuSys类进行业务处理
实体bean
EJB 企业级别的Bean
*/
import java.util.Scanner;
class StuSys{
StuData sd = new StuData();
//增加学生信息
void insertStu(Scanner scanner){
System.out.println("请输入学生学号 学生姓名 学生性别 年龄 成绩 (属性信息与属性信息直接使用空格分割):");
String stuNo = scanner.next();
String stuName = scanner.next();
String gender = scanner.next();
byte age = scanner.nextByte();
int score = scanner.nextInt();
if(sd.checkStuNo(stuNo) == null){
Student stu = new Student(stuNo, stuName, gender, age, score);
sd.insertStu(stu);
System.out.println("学生信息添加成功");
}else{
System.out.println("您输入的学生编号已存在!");
this.insertStu(scanner);//递归
}
}
void deleteStu(Scanner scan){
System.out.println("请输入删除的学生编号:");
String stuNo = scan.next();
if(sd.checkStuNo(stuNo) != null){
sd.deleteStu(stuNo);
System.out.println("学生信息删除成功");
}else{
System.out.println("您输入的学生编号不存在!");
this.deleteStu(scan);//递归
}
}
void updateStu(Scanner scanner){
System.out.println("请输入修改的学生编号:");
String stuNo = scanner.next();
/**
if((Student stu = sd.checkStuNo(stuNo)) != null){此行代码相当于以下两行代码:
第一步声明并赋值
Student stu =sd.checkStuNo(stuNo);
第二部判断
if(stu != null){
}
*/
Student stu = null;
if((stu = sd.checkStuNo(stuNo)) != null){
System.out.println("请输入学生学生姓名 学生性别 年龄 成绩 (属性信息与属性信息直接使用空格分割):");
String stuName = scanner.next();
String gender = scanner.next();
byte age = scanner.nextByte();
int score = scanner.nextInt();
stu.stuName = stuName;
stu.gender = gender;
stu.age = age;
stu.score = score;
sd.updateStu(stu);
System.out.println("学生信息修改成功");
}else{
System.out.println("您输入的学生编号已存在!");
this.updateStu(scanner);//递归
}
}
void showStuInfo(Scanner scanner){
System.out.println("请输入查看的学生编号:");
String stuNo = scanner.next();
Student stu = null;
if((stu = sd.checkStuNo(stuNo)) != null){
sd.printStu(stu);
}else{
System.out.println("您输入的学生编号不存在!");
this.showStuInfo(scanner);//递归
}
}
void showAllStuInfo(){
sd.printAllStuInfo();
}
}
class Main{
public static void main(String[] strs){
System.out.println("欢迎使用兴唐学生信息管理系统");
Scanner scan = new Scanner(System.in);
Main main = new Main();
//实例化一个StuSys的对象
StuSys ss = new StuSys();
while(true){
main.showMenu();
switch(scan.nextInt()){
case 0:
System.exit(0);
break;
case 1:
//调用增加学生信息方法 并传递进去Scanner对象
ss.insertStu(scan);
break;
case 2:
ss.deleteStu(scan);
break;
case 3:
ss.updateStu(scan);
break;
case 4:
ss.showStuInfo(scan);
break;
case 5:
ss.showAllStuInfo();
break;
default:
System.out.println("新输入的数据不合规!");
}
}
}
void showMenu(){
System.out.println("请输入操作代码:\n\n");
System.out.println("1: 增加学生信息");
System.out.println("2: 删除学生信息");
System.out.println("3: 修改学生信息");
System.out.println("4: 根据学号查看学生信息");
System.out.println("5: 显示所有学生信息");
System.out.println("0: 退出系统");
}
}
class StuData{
Student[] stuArray = new Student[10];
int dataIndex = 0;
void insertStu(Student stu){
if(dataIndex == stuArray.length){
Student[] tempArray = new Student[stuArray.length + (stuArray.length >> 1)];//每次数组扩大两倍
for(int i = 0; i < dataIndex; i++){
tempArray[i] = stuArray[i];
}
stuArray = tempArray;
}
stuArray[dataIndex] = stu;
dataIndex++;
}
Student checkStuNo(String stuNo){
for(int i = 0; i < dataIndex; i++){
if(stuArray[i].stuNo.equals(stuNo)){
return stuArray[i];
}
}
return null;
}
void deleteStu(String stuNo){
boolean boo = false;
for(int i = 0; i < dataIndex; i++){
if(stuNo.equals(stuArray[i].stuNo)){
boo = true;
}
if(boo){
stuArray[i] = stuArray[i+1];
}
}
if(boo){
dataIndex--;
}
}
void updateStu(Student stu){
for(int i = 0; i <dataIndex; i++){
if(stu.stuNo.equals(stuArray[i].stuNo)){
stuArray[i] = stu;
}
}
}
void printStu(Student stu){
System.out.println("----------------------------------------------------------");
System.out.print("学生编号:" + stu.stuNo) ;
System.out.print("学生姓名:" + stu.stuName) ;
System.out.print("学生性别:" + stu.gender) ;
System.out.print("学生年龄:" + stu.age) ;
System.out.println("学生成绩:" + stu.score) ;
System.out.println("----------------------------------------------------------");
}
void printAllStuInfo(){
for(int i = 0; i < dataIndex; i++){
this.printStu(stuArray[i]);
}
}
}
class Student{
Student(){
}
Student(String stuNo, String stuName, String gender, byte age, int score){
this.stuNo = stuNo;
this.stuName = stuName;
this. gender = gender;
this.age = age;
this.score = score;
}
String stuNo;
String stuName;
String gender;
byte age;
int score;
}