Java实现学生成绩管理系统

网友投稿 269 2022-10-27


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(StKfTmMETzudent[] 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.KfTmMETzlength-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);

StudentAKfTmMETzdmin 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) {

KfTmMETz 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”就行了

等等

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


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:ArgoUML -- 开源UML 建模工具
下一篇:API的文档自动生成——基于CDIF的SOA基本能力
相关文章

 发表评论

暂时没有评论,来抢沙发吧~