Java实现学生成绩管理系统

本文实例为大家分享了Java实现学生成绩管理系统的具体代码,供大家参考,具体内容如下

新手练手小项目,主要练习面向对象、循环、数组、排序等等。
本人也是自学练手,代码有不正确的或不完善的也请多多包涵,留言指导。
感谢!

一、创建学生类

储存学生的基本信息

public class Student {
 private int no;
 private String name;
 Result result;

 public Student() {
  super();
 }

 public Student(int no, String name,Result result) {
  super();
  this.result = result;
  this.name = name;
  this.no = no;
 }

 public Result getResult() {
  return result;
 }

 public void setResult(Result result) {
  this.result = result;
 }

 public String getName() {
  return name;
 }

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

 public int getNo() {
  return no;
 }

 public void setNo(int no) {
  this.no = no;
 }

 public String toString(){
  return "\t" + no + "\t" + name + "\t" + result;
 }
}

二、创建成绩类

便于成绩的增加,易于管理

public class Result {//成绩类
 private int java;
 private int python;
 private int c_shar;
 private int sql;
 private int sum;
 private int avg;

 public Result() {

 }

 public Result(int java, int python, int c_shar, int sql) {
  super();
  this.java = java;
  this.python = python;
  this.c_shar = c_shar;
  this.sql = sql;
 }

 public int getJava() {
  return java;
 }

 public void setJava(int java) {
  this.java = java;
 }

 public int getPython() {
  return python;
 }

 public void setPython(int python) {
  this.python = python;
 }

 public int getC_shar() {
  return c_shar;
 }

 public void setC_shar(int c_shar) {
  this.c_shar = c_shar;
 }

 public int getSql() {
  return sql;
 }

 public void setSql(int sql) {
  this.sql = sql;
 }

 public int getSum(){
  return this.java + this.python + this.c_shar + this.sql;
 }

 public int getAvg(){
  return this.getSum() / 4;
 }

 public String toString(){
  return java + "\t" + python + "\t" + c_shar + "\t" + sql + "\t" + this.getSum() + "\t" + this.getAvg();
 }
}

三、创建学生管理类

主要功能在此类中,例如添加学生信息、查找学生等等

import java.util.Scanner;

public class StudentAdmin {//管理学生类
 Scanner in = new Scanner(System.in);

 /**
  *
  * @param name 传一个name添加学生姓名
  * @param Arr传一个学生数组,将学生对象保存
  * @throws AddStudentException
  */
 public void addStudent(String name,Student[] Arr) throws AddStudentException{//添加学生方法
  AddStudentException ase = new AddStudentException("学生已达上限,添加失败!");
  Student stu = new Student();
  Result r = new Result();
  stu.setNo(setIndex(Arr) + 1);
  stu.setName(name);
  stu.setResult(r);
  if(setIndex(Arr) == -1){
   throw ase;
  }else{
   Arr[this.setIndex(Arr)] = stu;
  }
 }
 /**
  *
  * @param Arr传一个数组
  * @return返回空数组元素的下标
  */
 public int setIndex(Student[] Arr){
  for(int i = 0; i < Arr.length; i++){
   if(null == Arr[i]){
    return i;
   }
  }
  return -1;
 }
 public void print(Student[] arr){//打印学生对象
  for(int i = 0; i < arr.length; i++){
   if(judge(i+1,arr[i])){
    System.out.println(arr[i]);
   }
  }
 }
 public boolean judge(int no,Student stu){//判断数组元素编号和传的编号是否一致
  if(stu != null){
   if(stu.getNo() == no){
    return true;
   }else{
    return false;
   }
  }
  return false;
 }
 public void search(String name,Student[] arr){//查找学生方法
  for(int i = 0; i < arr.length; i++){
   if(judge(i + 1,arr[i])){
    if(arr[i].getName().equals(name)){
     System.out.println(arr[i]);
     return;
    }
   }
  }
  System.out.println("没有找到此学生,请确认输入的姓名是否正确!");
 }
 public void update(int no,String name,Student[] arr){//更新学生姓名
  for(int i = 0; i < arr.length; i++){
   if(judge(i + 1,arr[i])){
    arr[i].setName(name);
    System.out.println(arr[i]);
    return;
   }
  }
  System.out.println("没有此编号,请确认输入的编号是否正确!");
 }
 public void del(int no,Student[] arr){//删除学生信息
  for(int i = 0; i < arr.length; i++){
   if(judge(no,arr[i])){
    arr[i] = null;
    return;
   }
  }
  System.out.println("没有此编号,请确认输入的编号是否正确!");
 }
 public void stuResult(int no,Student[] arr){//根据编号输入学生各科成绩
  for(int i = 0; i < arr.length; i++){
   if(judge(i + 1,arr[i])){
    if(arr[i].getNo() == no){
     System.out.println("请输入" + arr[i].getName() + "的java成绩:");
     arr[i].result.setJava(in.nextInt());
     System.out.println("请输入" + arr[i].getName() + "的python成绩:");
     arr[i].result.setPython(in.nextInt());
     System.out.println("请输入" + arr[i].getName() + "的c_char成绩:");
     arr[i].result.setC_shar(in.nextInt());
     System.out.println("请输入" + arr[i].getName() + "的sql成绩:");
     arr[i].result.setSql(in.nextInt());
     break;
    }
   }
  }
 }
 public void paiXu(int no,Student[] arr){//根据某科成绩排序
  switch(no){
   case 1:
    for(int i = 0; i < arr.length-1; i++){
     for(int j = i + 1; j < arr.length; j++){
      if(arr[j].result.getJava() > arr[i].result.getJava()){
       Student max = arr[i];
       arr[i] = arr[j];
       arr[j] = max;
      }
     }
    }
    for(int i = 0; i < arr.length; i++){
     System.out.println(arr[i]);
    }
    break;
   case 2:
    for(int i = 0; i < arr.length-1; i++){
     for(int j = i + 1; j < arr.length; j++){
      if(arr[j].result.getPython() > arr[i].result.getPython()){
       Student max = arr[i];
       arr[i] = arr[j];
       arr[j] = max;
      }
     }
    }
    for(int i = 0; i < arr.length; i++){
     System.out.println(arr[i]);
    }
    break;
   case 3:
    for(int i = 0; i < arr.length-1; i++){
     for(int j = i + 1; j < arr.length; j++){
      if(arr[j].result.getC_shar() > arr[i].result.getC_shar()){
       Student max = arr[i];
       arr[i] = arr[j];
       arr[j] = max;
      }
     }
    }
    for(int i = 0; i < arr.length; i++){
     System.out.println(arr[i]);
    }
    break;
   case 4:
    for(int i = 0; i < arr.length-1; i++){
     for(int j = i + 1; j < arr.length; j++){
      if(arr[j].result.getSql() > arr[i].result.getSql()){
       Student max = arr[i];
       arr[i] = arr[j];
       arr[j] = max;
      }
     }
    }
    for(int i = 0; i < arr.length; i++){
     System.out.println(arr[i]);
    }
    break;
   default:
    System.out.println("你输入的编号错误!");
  }
 }
 public void sumPaiXu(Student[] arr){//根据总分进行排序
  for(int i = 0; i < arr.length-1; i++){
   for(int j = i + 1; j < arr.length; j++){
    if(arr[j].result.getSum() > arr[i].result.getSum()){
     Student max = arr[i];
     arr[i] = arr[j];
     arr[j] = max;
    }
   }
  }
  for(int i = 0; i < arr.length; i++){
   System.out.println(arr[i]);
  }
  return;
 }
}

四、异常类

练习自定义异常类的创建及使用

public class AddStudentException extends Exception{
 public AddStudentException(){}
 public AddStudentException(String s){
  super(s);
 }
}

五、测试类(主程序)

import java.util.Scanner;

public class Test {
 public static void main(String[] args){
  Scanner in = new Scanner(System.in);

  StudentAdmin admin = new StudentAdmin();

  System.out.println("请定义学生的人数:");
  Student[] stuArr = new Student[in.nextInt()];

  while(true){
   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("0:退出系统");
   int num = in.nextInt();
   switch(num){
    case 0 :
     System.exit(0);
    case 1 :
     System.out.println("请输入学生姓名:");
     try {
      admin.addStudent(in.next(), stuArr);
     } catch (AddStudentException e) {
      e.printStackTrace();
     }
     admin.print(stuArr);
     break;
    case 2 :
     System.out.println("请输入要查找的学生姓名:");
     String name = in.next();
     admin.search(name, stuArr);
     break;
    case 3 :
     System.out.println("请输入要修改的编号:");
     int no = in.nextInt();
     System.out.println("请重新输入学生姓名:");
     String name1 = in.next();
     admin.update(no, name1, stuArr);
     break;
    case 4 :
     System.out.println("请输入学生编号:");
     int no1 = in.nextInt();
     admin.del(no1, stuArr);
     System.out.println("删除学生信息成功!");
     break;
    case 5 :
     System.out.println("请输入学生编号:");
     int no2 = in.nextInt();
     admin.stuResult(no2, stuArr);
     admin.print(stuArr);
     break;
    case 6 :
     System.out.println("请输入编号对应成绩进行排序【1:java 2:python 3:c_char 4:sql】");
     int no3 = in.nextInt();
     admin.paiXu(no3, stuArr);
     break;
    case 7 :
     admin.sumPaiXu(stuArr);
     break;
    default :
     System.out.println("您输入的编号有误,请重新输入!");
     break;
   }
  }
 }
}

总结

本人也是刚学习java不久,一直在看视频自学。目前学习到了集合(刚开始),线程、IO还没学。这个小的项目也是我自己在练手,巩固学习的基础知识,只用到了最基本的知识。
在做这个项目的时候有很多不懂的地方。

例如:

1、Student类中的Result result这个实例变量的传参,我发现如果把Result result这个属性私有化无法赋值,最后便把访问权限改成了缺省
2、“根据编号删除学生信息”不知道怎么删除数组中的学生对象,现在知道原来把数组赋值为“null”就行了
等等

通过这个小练习,也学习到了很多很多。代码还有很多不完善的地方,分享给大家,请大家指导!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Java+Mysql学生管理系统源码

    最近正在学java和数据库,想起以前写的学生管理系统,都是从网上下载,敷衍了事.闲来无事,也就自己写了一个,不过功能实现的不是很多. 开发语言:java: 开发环境:Mysql, java: 开发工具:eclipse 开发此案例,首先得在电脑上有java开发环境和Mysql, java开发环境与Mysql的搭建,就不再叙述了,如果需要,请联系我最下面的联系方式:dingyelf@aliyun.com 此次系统比较简易:数据库中只有一个表:stu;功能:能够对学生增加.删除.修改. 开发步骤:  

  • Java GUI实现学生成绩管理系统

    学习java有一年多了,一直在做web方面的练习,在一个项目中发现需要用到GUI的相关知识,结果没法做出来,网上这方面的文章又不是很多,所有只好自己硬着头皮从头再学一遍了,不过学习后发现,其实GUI是非常有趣的,他并不像WEB程序一样依赖互联网,而且还有许多布局和android相差不是很大,这才发现自己竟又爱上GUI的开发了,不多说了,直接上代码吧,相信有过android或相关界面开发的都明白这其中的道理. 先看看效果吧 1.登录主界面 package edu.gzu.stuManager; i

  • java学生信息管理系统源代码

    本文实例为大家分享了java学生信息管理系统的具体代码,实现学生信息: 增加 int[] a=new int[9] .删除 .查找.更改,供大家参考,具体内容如下 /*学生信息管理系统,实现学生信息: *增加 int[] a=new int[9] *删除 *查找 *更改 */ import java.util.Scanner;//导入java输入流 import java.lang.*; import java.io.*; class Student { private static Stude

  • javaWeb实现学生信息管理系统

    本文为大家分享了javaWeb实现学生信息管理系统,供大家参考,具体内容如下 初始版 初始版是没有加分页的.因为没怎么学过前端,界面很丑陋.主要技术:JSP,JavaBean,servlet,JDBC主要页面如下: 登录页面 主页 添加学生 查看所有学生 查询学生 工程目录 数据库 两个表,user表和student表.为了使用DBUtils工具,一定要注意数据库表的属性的命名和JavaBean的get(),set() 方法的匹配.比如t_user表里的uname,在JavaBean中是:pri

  • 简单实现Java版学生管理系统

    本文实例为大家分享了Java实现学生管理系统的具体代码,供大家参考,具体内容如下 package BookDemo_1; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Test { public static void main(String[] args) { StudentSys stuSys=new StudentSys("学生管理系统"); stuSys.initWi

  • java实现简单的学生信息管理系统代码实例

    java实现简单的学生信息管理系统(无界面) 学生类实体: package com.edu.imau.wcy; public class Stu { private String stuNum;//学号 private String name;//姓名 private String gender;//性别 private int age;//年龄 private int score;//分数 public Stu() { super(); } public String getStuNum()

  • Java+MySQL实现学生信息管理系统源码

    基于Java swing+MySQL实现学生信息管理系统:主要实现JDBC对学生信息进行增删改查,应付一般课设足矣,分享给大家.(由于篇幅原因,代码未全部列出,如有需要留下邮箱) 鉴于太多同学要源码,实在发不过来,上传到github上 https://github.com/ZhuangM/student.git 1. 开发环境:jdk7+MySQL5+win7 代码结构:model-dao-view 2. 数据库设计--建库建表语句: CREATE DATABASE student; DROP

  • Java基于MySQL实现学生管理系统

    本文为大家分享了Java基于MySQL实现学生管理系统,供大家参考,具体内容如下 因为实验室要交作业然后就做了一个学生管理系统,贴个代码纪念一下,做的太急界面什么的也比较差. 还有一些小细节没有完善不过还是能实现主要的功能的. Window是主界面 package First; import java.sql.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Window { pub

  • java学生管理系统界面简单实现(全)

    学生管理系统简单的实现,供初学Java Swing同学学习使用. import java.awt.Dimension; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import jav

  • java(swing)+ mysql实现学生信息管理系统源码

    本文实例为大家分享了java实现学生信息管理系统源码,供大家参考,具体内容如下 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.Connection; import

随机推荐