需求: 制作一个简单的学生信息管理系统
1、通过键盘选择操作进行添加学生(学号,姓名,性别,年龄,成绩)的信息,这些信息通过数组存储。
2、同时还可以进行:
(1)查询某个或全体学生信息;
(2)修改学生信息;
(3)删除学生信息的操作。
要求: 有一定的优化,例如对用户输入信息是否符合要求的处理。
1.首先对学生的
学号,姓名,性别,年龄,成绩这五个信息进行定义,为了不让所有人都能访问到,所以权限都定义为private,通过getter、setter方法进行访问:
/**
*
* 设置学生信息
*
* @author Incentancy
*
*/
public class Student {
private String stuName;
private String stuNo;
private String gender;
private int age;
private int score;
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public String getStuNo() {
return stuNo;
}
public void setStuNo(String stuNo) {
this.stuNo = stuNo;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}
2.然后在一个新类中添加对学生信息的增删改查操作,并且要求能对用户输入的数据进行初步的判断:
import java.util.ArrayList;
import java.util.Scanner;
import com.xt.eleventhHW.stu.Student;
public class StuData {
private ArrayList
stus = new ArrayList
();
//static int index = 0;
Scanner scanner = new Scanner(System.in);
/**
* 增加学生信息
* @param stu
*/
public void addStu(Student stu){
stus.add(stu);
}
//输入学生信息
public void append(){
Student stu = new Student();
/**
* 通过封装方法,将学生信息赋给stus
*/
stu.setStuName(name());
stu.setStuNo(stuNum());
stu.setGender(gender());
stu.setAge(age());
stu.setScore(score());
//将stu中的信息增添到stus中
addStu(stu);
System.out.println("学生信息已添加!");
System.out.println();
}
//得到学生姓名
public String name(){
String name;
System.out.println("请输入学生的姓名:");
name = scanner.next();
return name;
}
//得到学生学号
public String stuNum(){
String stuNum;
System.out.println("请输入学生的学号:");
stuNum = scanner.next();
//如果学号不为11位,则重新输入,直到学号正确
if(stuNum.length() != 11){
System.out.println("您输入的学号有误!请重新输入!");
stuNum();
}
//如果学号已存在,则重新输入,直到不存在
for(int i = 0; i < stus.size(); i++){
if(stuNum.equals(stus.get(i).getStuNo())){
System.out.println("该学号已存在!请重新输入!");
stuNum();
break;
}
}
return stuNum;
}
//得到学生的性别
public String gender(){
String stuGender;
System.out.println("请输入学生的性别:");
stuGender = scanner.next();
if(!stuGender.equals("男") && !stuGender.equals("女") ){
System.out.println("您输入的学生性别有误!请重新输入!");
gender();
}
return stuGender;
}
//得到学生的年龄
public int age(){
int stuAge;
System.out.println("请输入学生的年龄:");
stuAge = scanner.nextInt();
if(stuAge < 0 || stuAge >= 80){
System.out.println("您输入的年龄有误!请重新输入!");
age();
}
return stuAge;
}
//得到学生的成绩
public int score(){
int stuScore;
System.out.println("请输入学生的成绩:");
stuScore = scanner.nextInt();
if(stuScore < 0 || stuScore > 100){
System.out.println("您输入的成绩有误!请重新输入!");
score();
}
return stuScore;
}
/**
*
* 删除学生信息
*
* @param stuNo
*/
public void delStu(){
System.out.println("请输入您想删除的学号:");
String stuNo = scanner.next();
boolean isDel = false;
for(int i = 0; i < stus.size(); i++){
if(stuNo.equals(stus.get(i).getStuNo())){
isDel = true;
stus.remove(i);
break;
}
}
if(isDel){
System.out.println("删除操作已完成!");
}else{
System.out.println("无此学生信息!");
}
}
/**
* 修改学生信息:
* 1.姓名
* 2.学号
* 3.性别
* 4.年龄
* 5.成绩
* @param stu
*/
public void updateStu(String stuNo){
boolean flag = false;
for(int i = 0; i < stus.size(); i ++){
if(stuNo.equals(stus.get(i).getStuNo())){
flag = true;
information();
switch(scanner.nextInt()){
case 1:
String name = name();
stus.get(i).setStuName(name);;
break;
case 2:
String stuNum = stuNum();
stus.get(i).setStuNo(stuNum);
break;
case 3:
String gender = gender();
stus.get(i).setGender(gender);
break;
case 4:
int age = age();
stus.get(i).setAge(age);
break;
case 5:
int score = score();
stus.get(i).setScore(score);
break;
case 0:
System.exit(0);
}
break;
}
if(!flag)
System.out.println("您输入的学号不存在!");
}
}
public void information(){
System.out.println("请选择您要修改的信息:");
System.out.println("1.姓名");
System.out.println("2.学号");
System.out.println("3.性别");
System.out.println("4.年龄");
System.out.println("5.成绩");
System.out.println("0.退出");
System.out.println("请输入序号:");
}
/**
* 根据学号查询学生信息
* 如果存在,输出学生信息
* @param stuNo
*/
public void queryStuByStuNo(String stuNo){
boolean flag = false;
for(int i = 0; i < stus.size(); i ++){
if(stuNo.equals(stus.get(i).getStuNo())){
System.out.println("姓名:" + stus.get(i).getStuName());
System.out.println("学号:" + stus.get(i).getStuNo());
System.out.println("性别:" + stus.get(i).getGender());
System.out.println("年龄:" + stus.get(i).getAge());
System.out.println("成绩:" + stus.get(i).getScore());
System.out.println("+---------------+-------------------------------+---------------+---------------+---------------+");
System.out.println("|\t姓名\t|\t\t学号\t\t|\t性别\t|\t年龄\t|\t成绩\t|");
System.out.println("+---------------+-------------------------------+---------------+---------------+---------------+");
System.out.println("|\t" + stus.get(i).getStuName() + "\t|\t " + stus.get(i).getStuNo() + " \t|\t" + stus.get(i).getGender() +
"\t|\t" + stus.get(i).getAge() + "\t|\t" + stus.get(i).getScore() + "\t|");
System.out.println("+---------------+-------------------------------+---------------+---------------+---------------+");
flag = true;
}
}
if(!flag)
System.out.println("该学号不存在!");
}
}
3.再新建一个类,将这个类作为操作菜单,通过用户输入的数字调用之前的增删改查操作:
import java.util.Scanner;
public class SystemService {
Scanner scanner = new Scanner(System.in);
public void bulletin(){
System.out.println("1.添加学生信息");
System.out.println("2.删除学生信息");
System.out.println("3.修改学生信息");
System.out.println("4.查询学生信息");
System.out.println("0.退出系统");
System.out.println("请输入序号:");
}
public void serviceChoose(){
StuData sd = new StuData();
System.out.println("-----欢迎使用学生信息管理系统-----");
while(true){
bulletin();
switch(scanner.nextInt()){
case 1:
sd.append();
System.out.println();
break;
case 2:
sd.delStu();
System.out.println();
break;
case 3:
System.out.println("请输入要修改的学生的学号:");
sd.updateStu(scanner.next());
System.out.println();
break;
case 4:
System.out.println("请输入要查询的学生的学号:");
sd.queryStuByStuNo(scanner.next());
System.out.println();
break;
case 0:
System.exit(0);//退出系统
}
}
}
}
4.最后写上主方法,就可以进行使用