JavaSE学生信息管理系统

/**下面是我写的一个学生管理系统的小程序。主要是为了检测下自己书写程序过程总存在的一些细节问题

*希望广大读者能对书写格式或者其中实现方法等的问题给予指出。并给出好的建议或者发表自己的看法。

*java初学者:

*/

 

/**

*程序中本来应该用上IO流或者数据库来存储数据但是为了让程序间接点,这里用静态数组代替数据存储。

*/

 

package com.xinhaicheng.studentsystem;

import java.util.Scanner;

public class StudentMemo{
// private static ClassCommittee adm = new ClassCommittee("陈海新",101,"19891005");
 //此处将下面数组设置为共有的只是为了在其他类中可以使用。原本系统应
 //该将这些数据保留在数据库或者外部存储器中。此处只是为了方便演示这种功能所以将就一下。
 public static Student[] students = new Student[]{new ClassCommittee("陈海新",101,"19891005"),new Student("黄超",102,"121214"),
  new Student("廖文翔",103,"151416"),new Student("崔万哲",104,"151478"),new Student("陈海新",105,"19891005")};;
 public static void main(String[] args){
  login();
 }

 //登入模块
 public static void login(){
  System.out.println("欢迎登入学生信息管理系统");
  Scanner con = new Scanner(System.in);
  int number;//接收输入的学号
  String passwd;//接收输入的密码
  boolean bool = true;//while循环控制变量
  int flag = 3;//设置密码只能输入3次,如果3次都输入错误则锁定该用户。
  while(bool){
   System.out.println("请输入学号:");
   number = Integer.valueOf(con.nextLine());
   for(int i = 0;i < students.length;i ++){
    //寻找该学号的同学是否存在 存在则输入密码不存在则重新输入学号
    if(number == students[i].getNumber()){
     bool = false;//如果输入的学号已经被注册,则可以结束外层循环
     if(students[i].isBlock()){
      System.out.println("你的账户被锁定了,请找管理员激活后再登入");
     }else{
      //3次输入密码的机会
      while(flag > 0){
       System.out.println("输入密码:");
       passwd = con.nextLine();
       if(passwd.equals(students[i].getPassword())){
        //判断是不是管理员用户
        if(number == 101){
         classCommitteeXML();
        }else{
         studentXML(students[i]);
        }
        break;//输入密码正确则结束输入密码循环
       }
       //每输入一次,还能输入密码的次数减一
       System.out.println("你还有" + --flag + "输入密码的机会");
      }
      //由于密码多次输入错误该用户被锁定
      if(flag == 0 && number !=101){//管理员不能被锁定
       System.out.println("由于你三次输入密码都错误所以你的学号被锁定请找管理员激活并修改密码");
       students[i].setBlock(true);
//       bool = true;//这个是为了测试账户锁定是否有效没有意义。
      }
     }
     break;//该学号的学生已经找到可以退出for循环
    }
   }
   //学号不存在时重新输入
   if(bool == true){
    System.out.println("输入的学号错误,请核对后重新输入");
   }
  }
 }
 
 //普通学生主界面
 public static void studentXML(Student student){
  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.print("请输入你选择的操作的编号:");
  Scanner con = new Scanner(System.in);
  int number = con.nextInt();
  switch(number){
  case 1:Student.alter(student,1);break;
  case 2:Student.showAllStudent(student,students,1);break;
  case 3:Student.selectByNumber(student,1);break;
  case 4:Student.selectByName(student,1);break;
  case 5:exit();break;
  default:System.out.println("你的输入有误,系统返回主界面!");studentXML(student);
  }
 }
 //班委登入后主界面
 public static void classCommitteeXML(){
  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("-----------------------7==按姓名查询用户信息------------------");
  System.out.println("-----------------------8==退出学生管理信息系统----------------");
  
  System.out.print("请输入你选择的操作的编号:");
  Scanner con = new Scanner(System.in);
  int number = con.nextInt();
  switch(number){
  case 1:ClassCommittee.register();break;
  case 2:ClassCommittee.delete();break;
  case 3:ClassCommittee.activate();break;
  case 4:ClassCommittee.alter(null,0);break;
  case 5:ClassCommittee.showAllStudent(null,students,0);break;
  case 6:ClassCommittee.selectByNumber(null,0);break;
  case 7:ClassCommittee.selectByName(null,0);break;
  case 8:exit();break;
  default:System.out.println("你的输入有误,系统返回主界面!");classCommitteeXML();
  }
 }
 //退出系统
 public static void exit(){
  System.out.println("系统已经安全退出了,欢迎下次使用!");
  System.exit(0);
 }
}

 

 

package com.xinhaicheng.studentsystem;
/**
 * 程序中输入类型控制没有写 --------可以考虑把输入格式放入到一个方法中。
 * 方法参数可以是一个Class类型。用来控制你要输入的是什么类型的数据。
 */
import java.util.Scanner;

public class Student {
 private String name;
 private int number;
 private String grade;
 private String tel;
 private String password;
 private boolean block = false;
 public Student(){
  
 }
 public Student(String name, int number,String password){
  super();
  this.name = name;
  this.number = number;
  this.password = password;
 }
 //按学号查询学生信息
 public static void selectByNumber(Student student,int b){
  Scanner con = new Scanner(System.in);
  int number;
  char ch = 'Y';
  int j = 0;
  while(ch == 'Y' || ch == 'y'){
   System.out.println("请输入学号:");
   number = Integer.valueOf(con.nextLine());
   //此处引用了Client中初始化得students数组作为测试数据。实际中应该改为从外部读取数据
   for(int i = 0;i < StudentMemo.students.length;i ++){
    if(number == StudentMemo.students[i].number){
     j ++;
     System.out.println("以下是你查询的学生的信息:");
     if(b  == 1){//普通用户不能看到密码信息
      showStudent(i);
     }else if(b  == 0){//管理员可以见到所有信息
      System.out.println(StudentMemo.students[i]);
     }
     break;
    }
   }
   if(j == 0){
    System.out.println("----------------你要查找的学生不存在!-------------------");
   }
   System.out.println("是否继续查找其他学生的信息(是输入:Y或y否输入:N或n)->:");
   ch = con.nextLine().charAt(0);
  }
  //判断是普通用户还是管理员用户调用的该方法。
  if(b == 1){
   StudentMemo.studentXML(student);
  }else if(b == 0){
   StudentMemo.classCommitteeXML();
  }
 }
 //普通用户查询学生的信息时显示查询到得结果
 public static void showStudent(int i){
  System.out.println("学号:" + StudentMemo.students[i].number);
  System.out.println("姓名:" + StudentMemo.students[i].name);
  System.out.println("年级:" + StudentMemo.students[i].grade);
  System.out.println("电话:" + StudentMemo.students[i].tel);
  System.out.println("密码:" + "********");
 }
 //按姓名查询
 public static void selectByName(Student student,int b){
  Scanner con = new Scanner(System.in);
  String name;
  char ch = 'Y';
  int j = 0;
  while(ch == 'Y' || ch == 'y'){
   System.out.println("请输入姓名:");
   name = con.nextLine();
   //此处引用了Client中初始化得students数组作为测试数据。实际中应该改为从外部读取数据
   for(int i = 0;i < StudentMemo.students.length;i ++){
    if(name.equals(StudentMemo.students[i].name)){
     j ++;
     System.out.println("以下是你查询的学生的信息:");
     if(b  == 1){//普通用户不能看到密码信息
      showStudent(i);
     }else if(b  == 0){//管理员可以见到所有信息
      System.out.println(StudentMemo.students[i]);
     }
    }
   }
   if(j == 0){
    System.out.println("---------------你要查找的学生不存在!-----------------");
   }
   System.out.println("是否继续查找其他学生的信息(是输入:Y或y否输入:N或n)->:");
   ch = con.nextLine().charAt(0);
  }
  //判断是普通用户还是管理员用户调用的该方法。
  if(b == 1){
   StudentMemo.studentXML(student);
  }else if(b == 0){
   StudentMemo.classCommitteeXML();
  }
 }
 //此方法为修改信息的方法调用
 public static void alterselect(Student student,int b){
  System.out.println("-------------------1==修改姓名-------------------");
  System.out.println("-------------------2==修改年级-------------------");
  System.out.println("-------------------3==修改电话-------------------");
  System.out.println("-------------------4==修改密码-------------------");
  System.out.println("-------------------5==修改全部-------------------");
  System.out.print("请输入你选择的操作的编号:");
  Scanner con = new Scanner(System.in);
  int number = Integer.valueOf(con.nextLine());
  String str;
  switch(number){
  case 1:System.out.println("输入姓名:");str = con.nextLine();student.setName(str);break;
  case 2:System.out.println("输入年级:");str = con.nextLine();student.setGrade(str);break;
  case 3:System.out.println("输入电话:");str = con.nextLine();student.setTel(str);break;
  case 4:System.out.println("输入密码:");str = con.nextLine();student.setPassword(str);break;
  case 5:System.out.println("输入姓名:");str = con.nextLine();student.setName(str);
      System.out.println("输入年级:");str = con.nextLine();student.setGrade(str);
      System.out.println("输入电话:");str = con.nextLine();student.setTel(str);
      System.out.println("输入密码:");str = con.nextLine();student.setPassword(str);break;
  default:System.out.println("输入错误,请重新选择编号:");alterselect(student,b);
  }
 }
 //修改部分允许修改的信息
 public static void alter(Student student,int b){
  //只能修改当前登入对象的信息
  Scanner con = new Scanner(System.in);
  if(b == 1){
   //只能修改当前对象的信息
   alterselect(student,b);
   System.out.println("显示修改之后的信息");
   System.out.println(student + "\n按Enter键继续");
   con.nextLine();
   StudentMemo.studentXML(student);
  }else if(b == 0){
   //管理员可以修改任何学生的信息
   int j = 0;
   char ch = 'Y';
   while(ch == 'Y' || ch == 'y'){
    System.out.println("输入需要修改的学生的学号:");
    int number = Integer.valueOf(con.nextLine());
    for(int i = 0;i < StudentMemo.students.length;i ++){
     if(number == StudentMemo.students[i].number){
      alterselect(StudentMemo.students[i],b);
      System.out.println("显示修改之后的信息");
      System.out.println(StudentMemo.students[i] + "\n按Enter键继续");
      j ++;
      con.nextLine();
      break;
     }
    }
    if(j == 0){
     System.out.println("你要修改的学生不存在");
    }
    System.out.println("是否继续修改其他学生的信息(是输入:Y或y否输入:N或n)->:");
    ch = con.nextLine().charAt(0);
   }
   StudentMemo.classCommitteeXML();
  }
 }
 //显示所有信息
 public static void showAllStudent(Student student,Student[] students,int b){
  //判断是普通用户还是管理员用户调用的该方法。
  if(b == 1){
   for(int i = 0;i < students.length;i ++){
    System.out.println("第" + i + "位学生:\n" + students[i]);
   }
   StudentMemo.studentXML(student);
  }else if(b == 0){
   for(int i = 0;i < students.length;i ++){
    System.out.println("第" + i + "位学生:\n");
    showStudent(i);
   }
   StudentMemo.classCommitteeXML();
  }
 }
 //访问器预设值器
 public String getPassword() {
  return password;
 }
 public boolean isBlock() {
  return block;
 }
 public void setBlock(boolean block) {
  this.block = block;
 }
 public void setPassword(String password) {
  this.password = password;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public int getNumber() {
  return number;
 }
 public void setNumber(int number) {
  this.number = number;
 }
 public String getGrade() {
  return grade;
 }
 public void setGrade(String grade) {
  this.grade = grade;
 }
 public String getTel() {
  return tel;
 }
 public void setTel(String tel) {
  this.tel = tel;
 }
 
 public boolean equals(Object obj) {
  return super.equals(obj);
 }
 public int hashCode() {
  return super.hashCode();
 }
 @Override
 public String toString() {
  return "姓名:" + name + "\n学号:" + number + "\n年级:"
    + grade + "\n电话:" + tel + "\n密码:" + password
    + "\n锁定状态:" + block;
 }
}

 

 

 

package com.xinhaicheng.studentsystem;

import java.util.Arrays;
import java.util.Scanner;

public class ClassCommittee extends Student{
 //班委职务
// private String job;
 
 public ClassCommittee() {
 }
 
 public ClassCommittee(String name, int number,String password) {
  super(name, number, password);
 }
 //注册模块
 public static void register(){
  Scanner con = new Scanner(System.in);
  char ch = 'Y';
  while(ch == 'Y' || ch == 'y'){
   Student student = new Student();
   System.out.println("输入学号");
   student.setNumber(Integer.valueOf(con.nextLine()));
   System.out.println("输入姓名:");
   student.setName(con.nextLine());
   System.out.println("输入年级:");
   student.setGrade(con.nextLine());
   System.out.println("输入电话:");
   student.setTel(con.nextLine());
   System.out.println("输入密码:");
   student.setPassword(con.nextLine());
   StudentMemo.students = Arrays.copyOf(StudentMemo.students,StudentMemo.students.length + 1);
   StudentMemo.students[StudentMemo.students.length - 1] = student;
   System.out.println("输入刚刚注册的学生的信息如下:");
   System.out.println(StudentMemo.students[StudentMemo.students.length - 1]);
   System.out.println("注册成功!是否继续注册其他学生(是输入:Y或y否输入:N或n)->:");
   ch = con.nextLine().charAt(0);
  }
  StudentMemo.classCommitteeXML();
 }
 //激活被锁定的学生账号
 public static void activate(){
  Scanner con = new Scanner(System.in);
  int number;
  char ch = 'Y';
  int j = 0;
  while(ch == 'Y' || ch == 'y'){
   System.out.println("请输入需要解锁学生的学号:");
   number = Integer.valueOf(con.nextLine());
   for(int i = 0;i < StudentMemo.students.length;i ++){
    if(number == StudentMemo.students[i].getNumber()){
     j ++;
     StudentMemo.students[i].setBlock(false);
     System.out.println("已经解锁成功!");
     break;
    }
   }
   if(j == 0){
    System.out.println("----------------该学生不存在!请核对信息后再来解锁-------------------");
   }
   System.out.println("是否继续给其他学生解锁(是输入:Y或y否输入:N或n)->:");
   ch = con.nextLine().charAt(0);
  }
  StudentMemo.classCommitteeXML();
 }
 //按学号删除学生
 public static void delete(){
  Scanner con = new Scanner(System.in);
  int number;
  char ch = 'Y';
  int j = 0;
  while(ch == 'Y' || ch == 'y'){
   //删除操作要求有学生存在。
   if(StudentMemo.students.length <= 0){
    System.out.println("系统中没有任何学生信息不能进行删除操作!");
    break;
   }
   System.out.println("请输入需要删除学生的学号:");
   number = Integer.valueOf(con.nextLine());
   for(int i = 0;i < StudentMemo.students.length;i ++){
    if(number == StudentMemo.students[i].getNumber()){
     j ++;
     if(i == StudentMemo.students.length - 1){
      StudentMemo.students[i] = null;
     }else{
      for(int k = i;k < StudentMemo.students.length - 1;k ++){
       StudentMemo.students[k] = StudentMemo.students[k + 1];
      }
      StudentMemo.students[StudentMemo.students.length - 1] = null;
     }
     //数组长度减一
     StudentMemo.students = Arrays.copyOf(StudentMemo.students,StudentMemo.students.length - 1);
     System.out.println("删除成功!");
     break;
    }
   }
   if(j == 0){
    System.out.println("----------------该学生不存在!请核对信息后再来输入-------------------");
   }
   System.out.println("是否继续删除其他学生(是输入:Y或y否输入:N或n)->:");
   ch = con.nextLine().charAt(0);
  }
  StudentMemo.classCommitteeXML();
 }
}

 

 

 

 

 


 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1、把6个java文件保存到同一文件夹,例如C:\Student.然后将6个java文件分别编译生成相应的字节码(.class)文件,然后,用java 解释器运行主类:C:\Student\java StudentManager 2、使用jar.exe把一些文件压缩成JAR文件,来发布我们的应用程序。我们可以把本java应用程序中涉及到的类文件(*.class)压缩成一个JAR文件,例如StudentManager.jar。 首先,用记事本编写一个清单文件(Manifestfiles): Manifest-Version: 1.0 Main-class: StudentManager Created-By: 1.2.2(Sun Microsystems Inc.) 例如,清单文件命名为moon.mf,保存到C:\Student。 注意:在编写清单文件时,在“Manifest-Version:”和“1.0”之间,“Main-class:”和“StudentManager”之间,以及在“Created-By:”和“1.2.2(Sun Microsystems Inc.)”之间必须有且只有一个空格。 然后,如下生成JAR文件: C:\Student\jar cvfm StudentManager.jar moon.mf *.class 其中,参数C表示要生成一个新的JAR文件;f表示要生成的JAR文件的名字,m表示文件清单文件的名字,v表示生成详细输出到标准输出上。具体运行jar命令请查看 现在就可以将StudentManager.jar拷贝到任何一个安装了java运行环境(jdk版本号须高于1.2.2)的计算机上,只要鼠标双击StudentManager.jar文件就可以运行该java应用程序了。 注意在装了WinRAR解压缩软件的机子上可能不能运行,因此,在发布本系统时,还应该建立一个有如下内容的.bat文件(StudentManager.bat),用记事本编写: javaw -jar StudentManager.jar 保存即可。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值