【面向对象】学生管理系统
本帖最后由 太帥是罪過 于 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 niebaohua 发表于 2019-4-19 12:24
输入一个字符串系统不就炸了, 可以用正则来一个判断输入的类
这只是一个测试,实际肯定会注意这些细节 Panhh13 发表于 2018-7-21 16:58
那时我做的很简洁的,你做的真详细啊。
基本上把所有bug都给修好了,比如说数组越界的bug。 挺详细的,学习一下 来学习学习 好多这个实例 来学习学习 感谢楼主分享 学习学习。 来学习学习 那时我做的很简洁的,你做的真详细啊。