Advertisement

Java之综合案例《校园管理系统》

阅读量:

1.创建Person父类

复制代码
 public abstract class Person {

    
  
    
     // 成员变量
    
     private int id;// 编号
    
     private String name;// 姓名
    
     private String sex;// 性别
    
     private String birthday;// 生日
    
     private int age;// 年龄
    
  
    
     // 构造方法
    
     public Person() {}
    
  
    
     public Person(int id, String name, String sex, String birthday, int age) {
    
     this.id = id;
    
     this.name = name;
    
     this.sex = sex;
    
     this.birthday = birthday;
    
     this.age = age;
    
     }
    
  
    
     // set/get方法
    
  
    
     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 getSex() {
    
     return sex;
    
     }
    
  
    
     public void setSex(String sex) {
    
     this.sex = sex;
    
     }
    
  
    
     public String getBirthday() {
    
     return birthday;
    
     }
    
  
    
     public void setBirthday(String birthday) {
    
     this.birthday = birthday;
    
     }
    
  
    
     public int getAge() {
    
     return age;
    
     }
    
  
    
     public void setAge(int age) {
    
     this.age = age;
    
     }
    
  
    
     // 成员方法
    
     public abstract String getType();// 返回身份类型
    
     public abstract String getWork();// 返回工作
    
     public String show(){
    
     return "我是一名"+getType()+",我的工作是"+getWork();
    
     }
    
 }

2.创建学生子类

复制代码
 public class Student extends Person{

    
  
    
  
    
     // 构造代码块
    
     {
    
     ++Utils.sid;
    
     }
    
  
    
     public Student() {
    
     }
    
  
    
     public Student(int id, String name, String sex, String birthday, int age) {
    
     super(id, name, sex, birthday, age);
    
     }
    
  
    
     @Override
    
     public String getType() {
    
     return "学生";
    
     }
    
  
    
     @Override
    
     public String getWork() {
    
     return "学Java...";
    
     }
    
 }

3.创建教师子类

教师类与学生类基本相同

4.创建一个工具类

复制代码
 package com.donglan.utils;

    
  
    
 import com.donglan.entity.Person;
    
  
    
 import java.text.ParseException;
    
 import java.text.SimpleDateFormat;
    
 import java.util.ArrayList;
    
 import java.util.Calendar;
    
 import java.util.Date;
    
  
    
 public class Utils {
    
  
    
     // 定义学生id 静态变量
    
     public static int sid;
    
  
    
     static{
    
     // 给sid赋值
    
     sid = 0;
    
     }
    
  
    
     // 根据生日计算年龄
    
     public static int birthdayToAge(String birthday_Str){
    
     // 首先确认参数是否为null
    
     if(birthday_Str == null){
    
         return -1;
    
     }
    
     // 1.把字符串类型的生日转换为 Date 类型的生日
    
     // 1.1 创建日期格式化对象,指定日期格式
    
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    
  
    
     // 1.2 解析日期
    
     Date birthday_date = null;
    
     // Ctrl + Alt + T :选择try...catch...
    
     try {
    
         birthday_date = sdf.parse(birthday_Str);
    
     } catch (ParseException e) {
    
         e.printStackTrace();
    
     }
    
  
    
     // 1.3 如果生日时间 在 当前时间 之后 返回 -1
    
     if(birthday_date.after(new Date())){
    
         return -1;
    
     }
    
  
    
     // 2.获取当前时间的日历对象
    
     Calendar calendar = Calendar.getInstance();
    
  
    
     // 3.获取当前时间的年,月,日
    
     int nowYear = calendar.get(Calendar.YEAR);
    
     int nowMonth = calendar.get(Calendar.MONTH);
    
     int nowDay = calendar.get(Calendar.DAY_OF_MONTH);
    
  
    
     // 4.把Date类型的生日 转换成 日历对象
    
     calendar.setTime(birthday_date);
    
  
    
     // 5.获取生日的年,月,日
    
     int birthdayYear = calendar.get(Calendar.YEAR);
    
     int birthdayMonth = calendar.get(Calendar.MONTH);
    
     int birthdayDay = calendar.get(Calendar.DAY_OF_MONTH);
    
  
    
     // 6.计算初步年龄: 当前年 减去 出生年
    
     int age = nowYear - birthdayYear;
    
  
    
     // 7.判断是否已经过了生日
    
     // 如果生日月份大于当前月份,那么初步年龄 - 1
    
     if(birthdayMonth > nowMonth){
    
         age--;
    
     }
    
     // 如果生日月份等于当前月份,并且生日的日期大于当前的日期,那么初步年龄 -1
    
     if(birthdayMonth == nowMonth){
    
         if(birthdayDay > nowDay){
    
             age--;
    
         }
    
     }
    
     // 8.返回年龄
    
     return age;
    
     }
    
  
    
     // 按照指定格式打印Person对象
    
     public static void printPerson(Person person){
    
     System.out.println("****************************************************************************");
    
     System.out.println("编号\t\t\t姓名\t\t\t性别\t\t\t生日\t\t\t年龄\t\t\t描述");
    
     System.out.println(person.getId()+"\t\t\t"+person.getName()+"\t\t\t"+
    
             person.getSex()+"\t\t\t"+person.getBirthday()+"\t\t\t"+person.getAge()+"\t\t\t"+person.show());
    
     System.out.println("****************************************************************************");
    
     }
    
  
    
     // 根据指定格式打印ArrayList集合元素的方法
    
     public static void printArrayList(ArrayList list){
    
     System.out.println("****************************************************************************");
    
     System.out.println("编号\t\t\t姓名\t\t\t性别\t\t\t生日\t\t\t\t\t年龄\t\t\t\t\t描述");
    
     // 循环遍历集合
    
     for(int i = 0; i < list.size();i++){
    
         // 获取元素(可能是student对象,可能是teacher对象)
    
         //Object o = list.get(i);
    
         Person person = (Person) list.get(i);
    
         System.out.println(person.getId()+"\t\t\t"+person.getName()+"\t\t\t"+
    
                 person.getSex()+"\t\t\t"+person.getBirthday()+"\t\t\t"+person.getAge()+"\t\t\t"+person.show());
    
     }
    
     System.out.println("****************************************************************************");
    
     }
    
  
    
 }

5.创建一个测试类(教师部分没写)

复制代码
 public class Tests {

    
     public static void main(String[] args) {
    
  
    
     // 创建Scanner对象
    
     Scanner scanner = new Scanner(System.in);
    
     // 创建一个存储Student类型的集合
    
     ArrayList<Student> studentList = new ArrayList<>();
    
     // 循环生成主菜单
    
     while(true){
    
         System.out.println("========================  校园信息管理系统  ===============================");
    
         System.out.println("1.学生信息管理系统   2.教师信息管理系统   3.系统退出");
    
         System.out.println();// 留个空行
    
         System.out.println("请输入功能序号");
    
         int num = scanner.nextInt();
    
         // 判断用户输入的序号
    
         switch (num){
    
             case 1:
    
                 // 进入学生信息管理系统
    
                 studentManage(studentList,scanner);
    
                 break;
    
             case 2:
    
                 // 进入教师信息管理系统
    
                 //teacherManage(studentList,scanner);
    
                 break;
    
             case 3:
    
                 System.out.println("谢谢,欢迎下次使用");
    
                 System.exit(0);
    
             default:
    
                 System.out.println("您输入有误,请重新输入");
    
                 break;
    
         }
    
     }
    
  
    
     }
    
  
    
     // 学生信息管理系统
    
     private static void studentManage(ArrayList<Student> studentList, Scanner scanner) {
    
     // 需要生成二级菜单
    
     while(true){
    
         System.out.println("--------------------------  【学生信息管理】  --------------------------");
    
         System.out.println("1.添加学生  2.查询学生  3.修改学生  4.删除学生  5.返回");
    
         System.out.println();// 留白
    
         System.out.println("请输入功能序号:");
    
         int num = scanner.nextInt();
    
         switch (num){
    
             case 1:
    
                 // 添加学生
    
                 addStudent(studentList,scanner);
    
                 break;
    
             case 2:
    
                 // 查询学生
    
                 selectStudent(studentList,scanner);
    
                 break;
    
             case 3:
    
                 // 修改学生
    
                 updateStudent(studentList,scanner);
    
                 break;
    
             case 4:
    
                 // 删除学生
    
                 deleteStudent(studentList,scanner);
    
                 break;
    
             case 5:
    
                 // 返回一级菜单
    
                 return;
    
             default:
    
                 System.out.println("您输入的数据有误,请重新输入");
    
                 break;
    
         }
    
     }
    
     }
    
  
    
     // 删除学生
    
     private static void deleteStudent(ArrayList<Student> studentList, Scanner scanner) {
    
     // 1.输入要删除学生的编号
    
     System.out.println("请输入要删除的学生编号");
    
     int sid = scanner.nextInt();
    
  
    
     // 2.遍历循环集合中的每一个元素对象
    
     for(int i = 0; i < studentList.size(); i++){
    
         // 2.1 获取每一个元素对象
    
         Student student = studentList.get(i);
    
         // 2.2 判断遍历出来的学生对象的id和要删除的sid是否相同
    
         if(student.getId() == sid){
    
             // 3. 如果相同,就删除
    
             System.out.println("您要删除的学生信息是:");
    
             Utils.printPerson(student);
    
  
    
             // 4. 确认删除?
    
             System.out.println("【确认】删除学生信息吗?(y/n)");
    
             String is = scanner.next();
    
  
    
             // 5.判断用户是否删除
    
             if(is.equalsIgnoreCase("n")){
    
                 // 5.1如果输入的n,就取消删除
    
                 System.out.println("【删除操作已被取消】");
    
             } else if(is.equalsIgnoreCase("y")){
    
                 // 5.2如果输入的是y,就删除
    
                 studentList.remove(i);// 删除i索引位置的元素
    
                 System.out.println("【删除操作成功】");
    
             }// 判断是否删除
    
             // 6. 删除结束之后,结束方法
    
             return;
    
         }// 判断删除的学生id是否相同
    
     }// 遍历循环学生对象
    
  
    
     // 7.如果走到这一步,说明循环里没有匹配到输入的sid,就提示信息
    
     System.out.println("【错误信息】:您要删除的学生编号"+sid+"不存在");
    
     }
    
  
    
     // 修改学生
    
     private static void updateStudent(ArrayList<Student> studentList, Scanner scanner) {
    
     // 1.输入要修改的学生编号
    
     System.out.println("请输入要修改的学生编号");
    
     int sid = scanner.nextInt();
    
  
    
     // 2.判断要修改的学生编号是否存在
    
     for(int i = 0; i < studentList.size(); i++){
    
         // 2.1 获取遍历出来的学生对象
    
         Student student = studentList.get(i);
    
         // 2.2 判断遍历出来的学生对象的id和输入的sid是否相同
    
         if(student.getId() == sid){
    
             // 3. 如果相同,就修改学生信息
    
             System.out.println("您要修改的学生信息是:");
    
             Utils.printPerson(student);
    
  
    
             System.out.println("请输入新的姓名(保留原来的信息请输入0)");
    
             String name = scanner.next();
    
  
    
             System.out.println("请输入新的性别(保留原来的信息请输入0)");
    
             String sex = scanner.next();
    
  
    
             System.out.println("请输入新的生日,格式为yyyy-MM-dd(保留原来的信息请输入0)");
    
             String birthday = scanner.next();
    
  
    
             // 判断输入的信息
    
             if(!"0".equals(name)){
    
                 student.setName(name);
    
             }
    
             if(!"0".equals(sex)){
    
                 student.setSex(sex);
    
             }
    
             if(!"0".equals(birthday)){
    
                 student.setBirthday(birthday);
    
                 // 年龄修改以下
    
                 student.setAge(Utils.birthdayToAge(birthday));
    
             }
    
  
    
             // 修改完成之后,就需要结束方法
    
             System.out.println("学生信息 【修改成功】");
    
             return;
    
         }// 判断学生id相同
    
     }// 循环遍历学生集合结束
    
  
    
     // 如果程序能够走到这里的话,说明遍历里面的学生id没有一个与sid相同,就要提示信息
    
     System.out.println("【错误信息】:您要修改的学生编号"+sid+"不存在");
    
     }
    
  
    
     // 查询学生
    
     private static void selectStudent(ArrayList<Student> studentList, Scanner scanner) {
    
     // 1.判断集合中有没有学生对象
    
     // 2.如果没有学生对象,提示相关信息,
    
     if(studentList.size() == 0){
    
         System.out.println("【没有数据  O】");
    
         return;
    
     }
    
     // 3.有的话,就展示
    
     Utils.printArrayList(studentList);
    
     }
    
  
    
     // 添加学生
    
     private static void addStudent(ArrayList<Student> studentList, Scanner scanner) {
    
     // 1.输入学生信息
    
     System.out.println("请输入姓名:");
    
     String name = scanner.next();
    
  
    
     System.out.println("请输入性别:");
    
     String sex = scanner.next();
    
  
    
     System.out.println("请输入生日(格式要求:yyyy-MM-dd):");
    
     String birthday = scanner.next();
    
  
    
     // 2.创建学生对象
    
     Student student = new Student();
    
  
    
     // 3.把输入的信息封装到学生对象中
    
     student.setId(Utils.sid);
    
     student.setName(name);
    
     student.setSex(sex);
    
     student.setBirthday(birthday);
    
     student.setAge(Utils.birthdayToAge(birthday));
    
  
    
     // 4.把学生对象添加到集合中
    
     studentList.add(student);
    
  
    
     System.out.println("【添加成功  √】");
    
  
    
     }
    
 }

全部评论 (0)

还没有任何评论哟~