JAVA简单的学生管理系统

简单的学生管理系统

要求: 创建简单的学生管理系统:功能包括学生增添,修改,删除,查询全部学生信息,按照学号查找学生信息,密码登录,退出时按照一定的格式获取邮箱。

为了实现以上功能,我创建了3个类

第一个类代码如下:

        package student;
        public class Insertin {
        private int id;        //学号
        private String name;   //学生姓名
        private String classes;//学生班级
        public Insertin(int id, String name, String classes) {
      //构造参数int id, String name, String classes的方法
      this.id = id;
      this.name = name;
      this.classes = classes;
      }

      public int getId() {
      return id;
     }
     
   public void setId(int id) {
   this.id = id;
  }

public String getName() {
  return name;
 }

public void setName(String name) {
  this.name = name;
 }

public String getClasses() {
  return classes;
 }
 
public void setClasses(String classes) {
  this.classes = classes;
 }

此类的主要目的是声明学生这个对象,并且声明其学号,姓名,班级等属性,并为其构造set,get方法
第二个类的代码如下:

package student;
import java.util.Scanner;
public class Studentt {
public static void main(String[] args) {
  Insert Inn = new Insert();
  Inn.zhujie();   //调用欢迎使用界面方法
  Inn.check();   //调用密码输入的方法
  boolean flag = true;
  do {
         System.out.println("功能菜单:");
         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("6、退出系统");
         System.out.println("提示:为了您的方便使用,请在使用系统前,最大化控制台。");
         System.out.println("---------------------------------------------");
         System.out.println("请输入对应的数字进行操作:");
         Scanner sc = new Scanner(System.in);
         int choose = sc.nextInt();
         switch (choose) {
         case 1:
         Inn.selectall();  //调用查询全部学生信息的代码
         break;
         case 2:
         Inn.selectid();   //调用按学号查询学生信息的方法
         break;
         case 3:
         Inn.add();        //调用添加学生信息的方法
         break;
        case 4:
        Inn.delete();     //调用根据学号删除学生信息的方法
        break;
        case 5:
        Inn.update();    //调用根据学号修改学生信息的方法
         break;
        case 6:
       Inn.e_mail();   //调用判断邮箱的输入格式是否正确的方法
        flag = false;
       break;
        }
      } while (flag);
     }}

此类主要是把主菜单描述出来,并调用第三个类中的方法实现上述功能
第三个类的代码如下:

  package student;
    import java.util.ArrayList;
    import java.util.Scanner;
    import student.Insertin;
    public class Insert {
    ArrayList list = new ArrayList(); //创建一个数组,属于全局变量
    Scanner sc = new Scanner(System.in);   //实例化一个对象,实现从控制台输入信息
    String username = "Admin";   //设置用户名
    String password = "123b";    //设置密码
    
     public void zhujie() {
            System.out.println("---------------------------------------------");
          System.out.println("\t\t欢迎进入学生管理系统");
          System.out.println("---------------------------------------------");
 }  //主界面中欢迎进入的调用方法
 
 public void check() {
 boolean flag=true;
 while (flag) {
 System.out.print("请输入用户名:");
 String nname = sc.next();  //从控制台输入用户名
 System.out.print("请输入密码:");
 String pwdd = sc.next();   //从控制台输入密码
if ((username.equalsIgnoreCase(nname)) && password.equals(pwdd)) {
 //equalsIgnoreCase()表示不区分大小写,equals()大小写必须完全一致
 System.out.println("登录成功!");
 flag=false; //用户名密码都正确,则退出该方法
} else {
System.out.println("用户名或密码错误!"); 
  flag=true;  //用户名或密码若错误,将一直重复该方法,直至用户名,密码都正确
}
if (!flag) {
 break;
  }
  }   
  } //用户登录的调用方法

   public void add() { 
   System.out.print("请输入你要添加几个学生信息:");
   int number = sc.nextInt();
   System.out.println("-----------------------------------------");
   for (int i = 0; i < number; i++) {
   Insertin inw = new Insertin(); 
    /*实例化一个对象,必须写在for循环内部,因为在外部只声明了一个对象,
    当添加的学生信息大   于1时,后输入的学生 信息会覆盖前面所输
    入的信息,最终只能得到最后一次输入的学生信息,而放在for内部时
    ,每输入一个学生信息时,都会实例化 一个对象*/
    System.out.print("请添加学生信息\n");
    System.out.println("-----------------------------------------");
    System.out.print("请输入学生姓名:");
    inw.setName(sc.next());
     System.out.print("请输入学生班级:");
    inw.setClasses(sc.next());
    inw.setId(list.size() + 1);
    System.out.print("添加成功!\n");
    System.out.print("-----------------------------------------\n");
     list.add(inw);//每得到一个学生信息,就将其输入到数组中去
}}

 public void selectall() {
System.out.println("学生信息表:");
System.out.println("-----------------------------------");
if(list.size()==0){
System.out.println("未插入学生信息\n");
} //当数组长度为0时,未插入学生信息
else{
 for (int i = 0; i < list.size(); i++) {
 System.out.println(list.get(i).toString());
 //依次输出学生信息
}}
} //查找全部的学生信息

 public void selectid() {
System.out.println("请输入你要查找的学生学号:");
Scanner sc = new Scanner(System.in);
int id = sc.nextInt();
if (id > list.size()) {
 System.out.println("没有该学生信息!");
} else {
 for (int i = 0; i < list.size(); i++) {
if (i == id - 1) {
 //注意学号和数组调用的关系
 System.out.println(list.get(i).toString());
 break;
 }
}
}
}  //根据学号显示学生信息

public void delete() {
boolean flag = true;
 System.out.print("请输入你要删除学生学号:");
int num = sc.nextInt();
for (int i = 0; i < list.size(); i++) {
if (num == (list.get(i).getId())) {
list.remove(i);  //remove是数组中的删除方法
System.out.print("删除成功!");
for (int j = 0; j < list.size(); j++) {
 list.get(j).setId(j + 1);
 //删除成功后,要重置学的学号生信息,以免再次添加学生信息时,按照数组的长 度 自动添加学   号时,学号的重复
}
flag = false;
break;
 }
 }
if (flag) {
 System.out.println("您所删除的学生不存在");
}
} //根据学号删除学生信息

public void update() {
 System.out.print("请输入你要修改的学生学号:");
int numm = sc.nextInt();
boolean flag = true;
for (int i = 0; i < list.size(); i++) {  
 if (numm == (list.get(i).getId())) {
 System.out.println("此学生原信息:" + list.get(i).toString());
System.out.println("请修改此学生的信息:");
System.out.println("-----------------------------------");
System.out.println("请重新输入学生姓名:");
list.get(i).setName(sc.next());  //通过覆盖更新新的学生姓名
System.out.print("请重新输入学生班级:");
list.get(i).setClasses(sc.next());//通过覆盖更新新的学生班级
System.out.println("修改成功。");
flag = false;
break;
  }
  }
 if (flag) {
System.out.println("您所更新的学生信息不存在");
}
 } //通过学号修改学生信息

 public void e_mail(){
 System.out.println("请输入你的邮箱:"); 
boolean flag = true;
while(flag){
  String mail=sc.next();
  if(mail.matches( "\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.com")){
/*我们当时规定的格式时[email protected]
 * 即@前必须有字符,@和.com之间必须有字符,.com必须在末尾
 * 这里我用的是String类中的正则表达式方法,因为我本人也不是很熟悉该方法,这里我就不写了
 */
System.out.println("学生录入信息已发送至"+ mail+"邮箱");
System.out.println("系统已退出,欢迎下次使用。。。");
flag = false;
  }
  else{
    System.out.println("请重新输入你的邮箱:");
  flag = true;
   }
   if (!flag) {
break;
}
}
}
}  //判断邮箱的格式是否符合规范

第三个类的主要目的就是实现第二个类中的方法,所有东西我都在注释中简要概括了,这里就不写了
JAVA简单的学生管理系统_第1张图片

你可能感兴趣的:(JAVA简单的学生管理系统)