单纯对象与数组实现学生管理系统1.0
2018-10-05 本文已影响0人
听风听雨oline
import java.util.Scanner;
/**
-
@ 实现学员管理系统V1.0,采用数组来作为存储的数据结构,学员信息只需包含姓名和电话即可,要求学员姓名保持唯一性。
-
@author 万星明
-
@version 2.0
-
@time 2018-10-04
/
public class StudentAdmin {
//创建全局输入对象
static Scanner sc = new Scanner(System.in);
/*- @param 主方法
/
public static void main(String[] args) {
//通过Student类作为数据类型,生成一个容量20的数组
Student stu[] = new Student[20];
//对数组进行遍历,将每个元素new成Student对象
for(int i=0;i<stu.length;i++) {
stu[i] = new Student();
}
//调用菜单栏方法
menu(stu);
}
/* - @param 菜单栏方法
/
public static void menu(Student[] stu) {
System.out.println("*******学员管理系统V1.0*********");
System.out.println("1、添加学员信息");
System.out.println("2、删除学员信息");
System.out.println("3、查询学员信息");
System.out.println("4、退出");
System.out.println("请输入您的选择:");
int answer = sc.nextInt();
//使用switch选择结构,对键入的值进行分别判断
switch(answer) {
case 1:
addStu(stu);
menu(stu);
break;
case 2:
delStu(stu);
menu(stu);
break;
case 3:
findStu(stu);
menu(stu);
break;
case 4:
System.out.println("谢谢使用!");
System.exit(0);
break;
default:
System.out.println("你输入有误!");
menu(stu);
break;
}
}
/* - @param 添加方法
*/
public static void addStu(Student[] stu) {
System.out.println("请输入学员姓名:");
String name = sc.next();
System.out.println("请输入学员联系电话:");
String phoneNumber = sc.next();
//定义一个布尔型变量,初值为false,对数组特定值进行查询判定
boolean flag = false;
//遍历数组stu,对数组中每个对象的name属性与键入的name对比
for(int i=0;i<stu.length;i++) {
if(stu[i].getName()!=null&&stu[i].getName().equals(name)) {
//如果数组中有对象的name属性与键入的name相同,将flag变量赋值为true
flag = true;
}
}
//通过对flag变量进行判断,若为true,则数组中存在键入的姓名,进行相应操作
if(flag==true) {
System.out.println("该学员姓名已经存在,是否继续录入?(y/n)");
String answer=sc.next();
if(answer.equalsIgnoreCase("y")) {
addStu(stu);
}
}else {
//flag为false初值,即对stu数组进行遍历,若数组中有对象的name属性为null,则将键入的name属性赋值给予
for(int i=0;i<stu.length;i++) {
if(stu[i].getName()==null) {
stu[i].setName(name);
stu[i].setPhoneNumber(phoneNumber);
System.out.println("添加成功!");
break;
}
}
}
}
/**- @param 删除方法
*/
public static void delStu(Student[] stu) {
System.out.println("请输入学员姓名:");
String name = sc.next();
//定义布尔变量,初值为false
boolean flag= false;
//对数组stu进行遍历,对数组中每个对象的name属性与键入的name对比
for(int i=0;i<stu.length;i++) {
//判断键入值是否已经存在数组某个对象的name属性中
if(stu[i].getName()!=null&&stu[i].getName().equals(name)) {
//存在,则将flag值赋true,将该对象的name属性、phoneNamber属性置null
flag=true;
stu[i].setName(null);
stu[i].setPhoneNumber(null);
System.out.println("删除成功!");
break;
}
}
//判断若数组中无对象的name属性与键入的相同
if(flag==false) {
System.out.println("该学员不存在,是否继续录入?(y/n)");
String anwser = sc.next();
if(anwser.equalsIgnoreCase("y")) {
delStu(stu);
}
}
}
/**- @param 查询方法
*/
public static void findStu(Student[] stu) {
System.out.println("查询学员信息-->>");
System.out.println("姓名"+"\t"+"电话");
//对stu数组进行遍历
for(int i=0;i<stu.length;i++) {
//判断数组中对象的name属性不为空
if(stu[i].getName()!=null) {
//则输出该对象的name属性和phoneNamber属性
System.out.println(stu[i].getName()+"\t"+stu[i].getPhoneNumber());
}
}
}
- @param 主方法
}
----------------------------------------分割线----------------------------------
//Student对象类
public class Student {
private String name;
private String phoneNumber;
public Student() {
}
public Student(String name,String phoneNumber) {
this.name = name;
this.phoneNumber = phoneNumber;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
}