太帥是罪過 发表于 2018-7-21 14:03

【面向对象】学生管理系统

本帖最后由 太帥是罪過 于 2018-7-24 15:39 编辑

用面向对象的方式写的一个简单的学生管理系统,支持添加学生、删除学生、修改学生成绩等各种操作,还在学习java基础的同学可以参考。

环境:eclipse2018、java10.0.1


包:cn.HolmesCraft.Six


主类:
package cn.HolmesCraft.Six;

import java.util.Scanner;

public class StudentAdministrator {
      public static void main(String[] args) {
               
                Administrator admin=new Administrator();
               
                Scanner Lol=new Scanner(System.in);
               
                System.out.println("--请定义人数--");
                int number=admin.testInt();
               
                Student[] stu=new Student;
               
                int i = 0;
                while(!(i==99)) {
                        
                        System.out.println(">>请选择你要执行的功能:");
                        System.out.println("10:添加一个学生");
                        System.out.println("11:查找一个学生");
                        System.out.println("12:根据学生编号更新学生基本信息");
                        System.out.println("13:根据学生编号删除学生");
                        System.out.println("14:根据学生编号输入学生各门成绩");
                        System.out.println("15:根据某门成绩进行排序");
                        System.out.println("16:总分进行排序");
                        System.out.println("99:退出系统");
                        
                        i=admin.testInt();
                        
                        switch(i) {
                        case 10:                        
                              System.out.println(">>执行创建学生的操作");
                              
                              System.out.println("请输入学生的姓名:");
                              String name=Lol.next();
                              System.out.println("请输入学生的年龄:");
                              int age=admin.testInt();
                              admin.create(name, age, stu);
                              admin.export(stu);
                              break;
                        case 11:
                              System.out.println(">>执行查找学生的操作");
                              
                              System.out.println("请输入你要查询的学生编号:");
                              int on=admin.testInt();
                              admin.select(on,stu);
                              break;
                        case 12:
                              System.out.println(">>执行更新学生信息的操作");
                              
                              System.out.println("请输入你要更新的学生编号:");
                              int on1=admin.testInt();
                              System.out.println("请输入你要更新学生的姓名:");
                              String name1=Lol.next();
                              System.out.println("请输入你要更新学生的年龄:");
                              int age1=admin.testInt();
                              admin.update(on1, name1, age1, stu);
                              break;
                        case 13:
                              System.out.println(">>执行删除学生的操作");
                              
                              System.out.println("请输入你要删除的学生编号:");
                              int on2=admin.testInt();
                              admin.delete(on2, stu);
                              admin.export(stu);
                              break;
                        case 14:
                              System.out.println(">>执行输入学生成绩的操作");
                              
                              System.out.println("请输入你要输入成绩的学生编号:");
                              int on3=admin.testInt();
                              admin.input(on3, stu);
                              admin.export(stu);
                              break;
                        case 15:
                              System.out.println(">>执行根据学生某门成绩排名的操作");
                              
                              System.out.println("请选择你要根据的成绩:(1.java 2.C# 3.html 4.sql)");
                              int subject=admin.testInt();
                              admin.subject(subject, stu);
                              admin.export(stu);
                              break;
                        case 16:
                              System.out.println(">>执行根据总分进行排名的操作");
                              
                              admin.sum(stu);
                              admin.export(stu);
                              break;
                        case 99:
                              i=99;
                              break;
                        default:
                              System.out.println(">>请输入正确的数字!");
                              break;
                        }
                }
      }
}

学生类:
package cn.HolmesCraft.Six;

public class Student {
      private int on;//编号
      private String name;//姓名
      private int age;//年龄
      private int java;//java成绩
      private int c_shar;//c#成绩
      private int html;//html成绩
      private int sql;//sql成绩
      private int sum;//总分
      private double avg; //平均分
      public String toString() {
                String msg="\t"+this.on+"\t"+this.name+"\t"+this.age+"\t"+this.java+"\t"+
                              this.c_shar+"\t"+this.html+"\t"+this.sql+"\t"+this.getSum()+"\t"+this.getAvg();
                return msg;
               
      }
      public int getOn() {
                return this.on;
      }
      public void setOn(int on) {
                this.on=on;
      }
      public String getName() {
                return this.name;
      }
      public void setName(String name) {
                this.name=name;
      }
      public int getAge() {
                return this.age;
      }
      public void setAge(int age) {
                this.age = age;
      }
      public int getJava() {
                return this.java;
      }
      public void setJava(int java) {
                this.java = java;
      }
      public int getC_shar() {
                return this.c_shar;
      }
      public void setC_shar(int c_shar) {
                this.c_shar = c_shar;
      }
      public int getHtml() {
                return this.html;
      }
      public void setHtml(int html) {
                this.html = html;
      }
      public int getSql() {
                return this.sql;
      }
      public void setSql(int sql) {
                this.sql = sql;
      }
      public int getSum() {
                return this.sum;
      }
      public void setSum() {
                this.sum = this.java+this.c_shar+this.html+this.sql;
      }
      public double getAvg() {
                return this.avg;
      }
      public void setAvg() {
                this.avg = this.sum/4;
      }
}

学生管理类:
package cn.HolmesCraft.Six;

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

public class Administrator {

      static String msg="\t编号\t姓名\t年龄\tjava\tc#\thtml\tsql\t总分\t平均分";

      Scanner Lol= new Scanner(System.in);


      public int testInt() {   //测试输入字符是否为int类型,并录入
                while(!Lol.hasNextInt()) {
                        System.out.println("请输入一个自然数!");
                        Lol.next();      
                }
                return Lol.nextInt();
      }

      public boolean find(int on,Student[] air) {   //检测某编号是否有学生存在
                if(0<=on&&on<air.length) {
                        for(int i=0;i<air.length;i++) {
                              if(air!=null) {
                                        if(air==air) {
                                                return true;
                                        }
                              }else {
                                        return false;
                              }
                        }
                        return false;
                }
                return false;
      }

      public void export(Student[] air) { //打印学生表格
                System.out.println(msg);
                for(int i=0;i<air.length;i++) {
                        if(air!=null) {
                              System.out.println(air.toString());
                        }
                }
      }

      public void create(String name,int age,Student[] air) {   //添加学生的方法
                Student stu=new Student();
                stu.setName(name);
                stu.setAge(age);
                if(this.testAir(air)!=999999999) {
                        stu.setOn(this.testAir(air));
                        air=stu;
                }else {
                        System.out.println(">>已达系统最大存储学生量,无法添加学生。");
                }
      }

      public int testAir(Student[] air) {   //检测数组是否有空余,并返回空余数组的位置
                for(int i = 0;i<air.length;i++) {
                        if(air==null) {
                              return i;
                        }
                }
                return 999999999;
      }

      public void select(int on,Student[] air) {   //查找某编号学生的方法
                if(this.find(on, air)) {
                        System.out.println(msg);
                        System.out.println(air);
                }else {
                        System.out.println(">>该编号的学生不存在");
                }
      }

      public void update(int on,String name,int age,Student[] air) {   //更新学生基本信息的方法
                if(this.find(on, air)) {
                        air.setAge(age);
                        air.setName(name);
                        System.out.println(msg);
                        System.out.println(air);
                }else {
                        System.out.println(">>该编号的学生不存在");
                }
      }

      public void delete(int on,Student[] air) {//删除学生的方法
                if(this.find(on, air)) {
                        air=null;
                        System.out.println(">>已删除");
                }else {
                        System.out.println(">>该编号的学生不存在");
                }
      }

      public void input(int on,Student[] air) {//输入学生成绩信息的方法
                if(this.find(on, air)) {
                        System.out.println("请输入你的java成绩!");
                        air.setJava(this.testInt());
                        System.out.println("请输入你的C#成绩!");
                        air.setC_shar(this.testInt());
                        System.out.println("请输入你的html成绩!");
                        air.setHtml(this.testInt());
                        System.out.println("请输入你的sql成绩!");
                        air.setSql(this.testInt());
                        air.setSum();
                        air.setAvg();
                        System.out.println(">>录入完成");
                }else {
                        System.out.println(">>该编号的学生不存在");
                }
      }

      public void subject(int subject,Student[] air) {
                switch(subject) {
                case 1:
                        for(int i=0;i<air.length;i++) {
                                        for(int j=i+1;j<air.length;j++) {
                                                if(air!=null&&air!=null) {
                                                if(air.getJava()<air.getJava()) {
                                                      Student a=air;
                                                      air=air;
                                                      air=a;
                                                }
                                        }
                              }
                        }
                        break;
                case 2:
                        for(int i=0;i<air.length;i++) {
                                        for(int j=i+1;j<air.length;j++) {
                                                if(air!=null&&air!=null) {
                                                if(air.getC_shar()<air.getC_shar()) {
                                                      Student a=air;
                                                      air=air;
                                                      air=a;
                                                }
                                        }
                              }
                        }
                        break;
                case 3:
                        for(int i=0;i<air.length;i++) {
                                        for(int j=i+1;j<air.length;j++) {
                                                if(air!=null&&air!=null) {
                                                if(air.getHtml()<air.getHtml()) {
                                                      Student a=air;
                                                      air=air;
                                                      air=a;
                                                }
                                        }
                              }
                        }
                        break;
                case 4:
                        for(int i=0;i<air.length;i++) {
                              for(int j=i+1;j<air.length;j++) {
                                        if(air!=null&&air!=null) {
                                                if(air.getSql()<air.getSql()) {
                                                      Student a=air;
                                                      air=air;
                                                      air=a;
                                                }
                                        }
                              }
                        }
                        break;
                }
      }
      
      public void sum(Student[] air) {
                for(int i=0;i<air.length;i++) {
                        for(int j=i+1;j<air.length;j++) {
                              if(air!=null&&air!=null) {
                              if(air.getSum()<air.getSum()) {
                                        Student a=air;
                                        air=air;
                                        air=a;
                              }
                        }
                }
      }
      }
}

GitHub开源地址:https://github.com/Holmes-shuai/StudentAdministratorSystem

太帥是罪過 发表于 2019-4-29 22:26

niebaohua 发表于 2019-4-19 12:24
输入一个字符串系统不就炸了, 可以用正则来一个判断输入的类

这只是一个测试,实际肯定会注意这些细节

太帥是罪過 发表于 2018-7-24 15:15

Panhh13 发表于 2018-7-21 16:58
那时我做的很简洁的,你做的真详细啊。

基本上把所有bug都给修好了,比如说数组越界的bug。

枯酒Bei空影 发表于 2018-7-21 14:26

挺详细的,学习一下

cl990327 发表于 2018-7-21 14:45

来学习学习

半梦半醒浮生葬 发表于 2018-7-21 14:46

baibao023 发表于 2018-7-21 14:50

好多这个实例

cyzt 发表于 2018-7-21 15:05

来学习学习

shao123 发表于 2018-7-21 15:14

感谢楼主分享

zhijian66 发表于 2018-7-21 15:48

学习学习。

aty520 发表于 2018-7-21 16:57

来学习学习

Panhh13 发表于 2018-7-21 16:58

那时我做的很简洁的,你做的真详细啊。
页: [1] 2 3
查看完整版本: 【面向对象】学生管理系统