StudentManager系统
系统的数据:
变量 stunumber 为字符串类型 String,用于存储学生的学号(有 8 位数字组成)
变量 name 为字符串类型 String,用于存储学生的姓名。
变量 mathematicsscore 为 double 类型,用于存储学生的高等数学成绩,高等数学的学分为 4 分。
变量 englishiscore 为 double 类型,用于存储学生的大学英语成绩,大学英语的学分为 3 分。
变量 networkscore 为 double 类型,用于存储学生的计算机网络成绩,计算机网络的学分为 4 分。
变量 databasescore 为 double 类型,用于存储学生的数据库成绩,数据库的学分为 3 分。
变量 softwarescore 为 double 类型,用于存储学生的软件工程成绩,软件工程的学分为 2 分。
功能要求:
1.实现成绩的录入
2.学生成绩修改
3.计算学生成绩绩点
4.退出程序界面
思路:
首先,利用对象数组来存储5个数据,只存学号和姓名,成绩都默认为零
利用while循环来控制选择的功能,选择4就退出循环,否则继续循环
根据所选的功能,利用case语句分开,分被执行功能
该程序会重复用到查找学号的方法,因此建立一个find()方法
该录入功能会有一个难题,就是如何实现实时的更新
因此,建立了一个方法来专门实现它
public void display5(int p) { System.out.println("*******************************"); System.out.println("石家庄铁道大学软件工程系学生学籍管理系统 2019 版 "); System.out.println(" 学生考试成绩录入界面 "); System.out.println("*******************************"); System.out.println(" 学生学号:"+s[p].getStunumber()); System.out.println(" 学生姓名:"+s[p].getName()); if(s[p].getMathematicsscore()!=0) System.out.println(" 1.高等数学成绩为:"+s[p].getMathematicsscore()); if(s[p].getEnglishiscore()!=0) System.out.println(" 2.大学英语成绩为:"+s[p].getEnglishiscore()); if(s[p].getNetworkscore()!=0) System.out.println(" 3.计算机网络成绩为:"+s[p].getNetworkscore()); if(s[p].getDatabasescore()!=0) System.out.println(" 4.数据库成绩为:"+s[p].getDatabasescore()); if(s[p].getSoftwarescore()!=0) System.out.println(" 5.软件工程成绩为:"+s[p].getSoftwarescore()); }
这样根据成绩初始值为0,就可以实现更新输出;
这样第一个功能就完成了,接下来进行修改的功能
修改的时候,有一个问题就是:如果不录入修改的程序,那么之前的数据如何找回?
此时,我们就是需要找个变量去等于修改之前的数据,这样就避免了修改后的数据不能再找回之前的数据的问题。
第三步:就是计算学分绩点
根据
我们可以用if语句,来算出各科成绩的绩点,最终保留两位小数可以用String.format("%.2f",v)
来判断是否大于等于2,满足毕业要求!!
下面就是全部的代码:
package com.开学测试; import java.util.Scanner; /* 信1805-3班 */ /* 徐利峰 */ class ScoreInformation { private String stunumber; private String name; private double mathematicsscore; private double englishiscore; private double networkscore; private double databasescore; private double softwarescore; public String getStunumber() { return stunumber; } public void setStunumber(String stunumber) { this.stunumber = stunumber; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getMathematicsscore() { return mathematicsscore; } public void setMathematicsscore(double mathematicsscore) { this.mathematicsscore = mathematicsscore; } public double getEnglishiscore() { return englishiscore; } public void setEnglishiscore(double englishiscore) { this.englishiscore = englishiscore; } public double getNetworkscore() { return networkscore; } public void setNetworkscore(double networkscore) { this.networkscore = networkscore; } public double getDatabasescore() { return databasescore; } public void setDatabasescore(double databasescore) { this.databasescore = databasescore; } public double getSoftwarescore() { return softwarescore; } public void setSoftwarescore(double softwarescore) { this.softwarescore = softwarescore; } } public class ScoreManagement { Scanner in=new Scanner(System.in); public void display1() { System.out.println("*******************************"); System.out.println(" 石家庄铁道大学软件工程系 "); System.out.println(" 学生学籍管理系统2019版 "); System.out.println("*******************************"); System.out.println(" 1.学生考试成绩录入 "); System.out.println(" 2.学生考试成绩修改 "); System.out.println(" 3.计算学生成绩绩点; "); System.out.println(" 4.退出学籍管理系统; "); System.out.println("*******************************"); } public int find(String t) { int i=0,k=0; for(i=0;i<5;i++) { if(s[i].getStunumber().compareTo(t)==0) { k=1; break; } } if(k==0) return -1; else { return i; } } public void display2() { System.out.println("*******************************"); System.out.println("石家庄铁道大学软件工程系学生学籍管理系统 2019 版 "); System.out.println(" 学生考试成绩录入 "); System.out.println("*******************************"); } public void display3() { System.out.println("*******************************"); System.out.println("谢谢使用石家庄铁道大学软件工程系学生学籍管理系统 2019 版 "); System.out.println(" 制作人:徐利峰 "); System.out.println("*******************************"); } public void display4(int k) { System.out.println("*******************************"); System.out.println("石家庄铁道大学软件工程系学生学籍管理系统 2019 版 "); System.out.println(" 学生考试成绩录入界面 "); System.out.println("*******************************"); System.out.println(" 学生学号:"+s[k].getStunumber()); System.out.println(" 学生姓名:"+s[k].getName()); } public void display5(int p) { System.out.println("*******************************"); System.out.println("石家庄铁道大学软件工程系学生学籍管理系统 2019 版 "); System.out.println(" 学生考试成绩录入界面 "); System.out.println("*******************************"); System.out.println(" 学生学号:"+s[p].getStunumber()); System.out.println(" 学生姓名:"+s[p].getName()); if(s[p].getMathematicsscore()!=0) System.out.println(" 1.高等数学成绩为:"+s[p].getMathematicsscore()); if(s[p].getEnglishiscore()!=0) System.out.println(" 2.大学英语成绩为:"+s[p].getEnglishiscore()); if(s[p].getNetworkscore()!=0) System.out.println(" 3.计算机网络成绩为:"+s[p].getNetworkscore()); if(s[p].getDatabasescore()!=0) System.out.println(" 4.数据库成绩为:"+s[p].getDatabasescore()); if(s[p].getSoftwarescore()!=0) System.out.println(" 5.软件工程成绩为:"+s[p].getSoftwarescore()); } public void display6() { System.out.println("*******************************"); System.out.println("石家庄铁道大学软件工程系学生学籍管理系统 2019 版 "); System.out.println(" 学生考试成绩修改界面 "); System.out.println("*******************************"); } public void display7() { System.out.println("*******************************"); System.out.println("石家庄铁道大学软件工程系学生学籍管理系统 2019 版 "); System.out.println(" 学生考试成绩绩点计算界面 "); System.out.println("*******************************"); } static ScoreInformation []s=new ScoreInformation[10]; public static void main(String[] args) { // TODO Auto-generated method stub Scanner in=new Scanner(System.in); ScoreManagement stu=new ScoreManagement(); boolean flag=true,flag2=true,flag3=true,flag4=true,flag5=true,flag6=true,flag7=true; String xuehao; int i,number; for(i=0;i<10;i++) s[i]=new ScoreInformation(); s[0].setStunumber("20183516"); s[0].setName("徐利峰"); s[1].setStunumber("20183517"); s[1].setName("小华"); s[2].setStunumber("20183518"); s[2].setName("小李"); s[3].setStunumber("20183519"); s[3].setName("小刚"); s[4].setStunumber("20183520"); s[4].setName("小风"); for(i=0;i<5;i++) { s[i].setDatabasescore(0); s[i].setEnglishiscore(0); s[i].setMathematicsscore(0); s[i].setNetworkscore(0); s[i].setSoftwarescore(0); } while(flag) { stu.display1(); System.out.println("请选择要执行的功能序号"); number=in.nextInt(); if(number<1||number>4) System.out.println("该选项不存在"); else { switch(number) { case 1: { while(flag2==true) { stu.display2(); System.out.println("请输入学生学号:"); xuehao=in.next(); System.out.println("*******************************"); if(stu.find(xuehao)==-1) { flag2=true; System.out.println("该不存在"); } else { double m; String c; flag2=false; int b=stu.find(xuehao); while(flag7==true) { flag7=false; stu.display4(b); System.out.println("请输入高等数学成绩:"); m=in.nextDouble(); s[b].setMathematicsscore(m); stu.display5(b); System.out.println("请输入大学英语成绩:"); m=in.nextDouble(); s[b].setEnglishiscore(m); stu.display5(b); System.out.println("请输入计算机网络成绩:"); m=in.nextDouble(); s[b].setNetworkscore(m); stu.display5(b); System.out.println("请输入数据库成绩:"); m=in.nextDouble(); s[b].setDatabasescore(m); stu.display5(b); System.out.println("请输入软件工程成绩:"); m=in.nextDouble(); s[b].setSoftwarescore(m); stu.display5(b); System.out.println("该学生成绩已录入完毕,是否提交(Y/N) "); c=in.next(); if(c.compareTo("N")==0) { flag7=true; s[b].setDatabasescore(0); s[b].setEnglishiscore(0); s[b].setMathematicsscore(0); s[b].setNetworkscore(0); s[b].setSoftwarescore(0); } } } } break; } case 2: { String q; while(flag3==true) { stu.display6(); flag3=false; System.out.println("请输入学号:"); q=in.next(); System.out.println("*******************************"); if(stu.find(q)==-1) { flag3=true; System.out.println("该不存在"); } else { int r; int k=stu.find(q); double j; flag3=false; stu.display5(k); System.out.println("请选择要修改的成绩序号:"); r=in.nextInt(); if(r==1) { String m; double old; stu.display4(k); old=s[k].getMathematicsscore(); System.out.println("请输入要修改后的高等数学成绩:"); j=in.nextDouble(); s[k].setMathematicsscore(j); stu.display5(k); System.out.println("该学生成绩已修改完毕,是否提交(Y/N) "); m=in.next(); if(m.compareTo("N")==0) { flag3=true; s[k].setMathematicsscore(old); } } else if(r==2) { String m; double old; old=s[k].getEnglishiscore(); stu.display4(k); System.out.println("请输入要修改后的大学英语成绩:"); j=in.nextDouble(); s[k].setEnglishiscore(j); stu.display5(k); System.out.println("该学生成绩已修改完毕,是否提交(Y/N) "); m=in.next(); if(m.compareTo("N")==0) { flag3=true; s[k].setEnglishiscore(old); } } else if(r==3) { String m; double old; old=s[k].getNetworkscore(); stu.display4(k); System.out.println("请输入要修改后的计算机网络成绩:"); j=in.nextDouble(); s[k].setNetworkscore(j); stu.display5(k); System.out.println("该学生成绩已修改完毕,是否提交(Y/N) "); m=in.next(); if(m.compareTo("N")==0) { flag3=true; s[k].setNetworkscore(old); } } else if(r==4) { String m; double old; old=s[k].getDatabasescore(); stu.display4(k); System.out.println("请输入要修改后的数据库成绩:"); j=in.nextDouble(); s[k].setDatabasescore(j); stu.display5(k); System.out.println("该学生成绩已修改完毕,是否提交(Y/N) "); m=in.next(); if(m.compareTo("N")==0) { flag3=true; s[k].setDatabasescore(old); } } else if(r==5) { String m; double old; old=s[k].getSoftwarescore(); stu.display4(k); System.out.println("请输入要修改后的软件工程成绩:"); j=in.nextDouble(); s[k].setSoftwarescore(j); stu.display5(k); System.out.println("该学生成绩已修改完毕,是否提交(Y/N) "); m=in.next(); if(m.compareTo("N")==0) { flag3=true; s[k].setSoftwarescore(old); } } else { System.out.println("请重新输入:"); } } } break; } case 3: { String l; while(flag4==true) { stu.display7(); in.nextLine(); flag4=false; System.out.println("请输入学生学号:"); l=in.nextLine(); System.out.println("*******************************"); if(stu.find(l)==-1) { flag4=true; System.out.println("该不存在"); } else { int p=stu.find(l); double []a=new double[5]; double []g=new double[]{4,3,4,3,2}; double v=0; for(i=0;i<5;i++) { if(i==0) { if(s[p].getMathematicsscore()>=72) { if(s[p].getMathematicsscore()<=74.9) a[i]=2.3; else if(s[p].getMathematicsscore()<=77.9) a[i]=2.7; else if(s[p].getMathematicsscore()<=81.9) a[i]=3.0; else if(s[p].getMathematicsscore()<=84.9) a[i]=3.3; else if(s[p].getMathematicsscore()<=89.9) a[i]=3.7; else a[i]=4.0; } else { if(s[p].getMathematicsscore()>=68) a[i]=2.0; else if(s[p].getMathematicsscore()>=66) a[i]=1.7; else if(s[p].getMathematicsscore()>=64) a[i]=1.5; else if(s[p].getMathematicsscore()>=60) a[i]=1.0; else a[i]=0; } } if(i==1) { if(s[p].getEnglishiscore()>=72) { if(s[p].getEnglishiscore()<=74.9) a[i]=2.3; else if(s[p].getEnglishiscore()<=77.9) a[i]=2.7; else if(s[p].getEnglishiscore()<=81.9) a[i]=3.0; else if(s[p].getEnglishiscore()<=84.9) a[i]=3.3; else if(s[p].getEnglishiscore()<=89.9) a[i]=3.7; else a[i]=4.0; } else { if(s[p].getEnglishiscore()>=68) a[i]=2.0; else if(s[p].getEnglishiscore()>=66) a[i]=1.7; else if(s[p].getEnglishiscore()>=64) a[i]=1.5; else if(s[p].getEnglishiscore()>=60) a[i]=1.0; else a[i]=0; } } if(i==2) { if(s[p].getNetworkscore()>=72) { if(s[p].getNetworkscore()<=74.9) a[i]=2.3; else if(s[p].getNetworkscore()<=77.9) a[i]=2.7; else if(s[p].getNetworkscore()<=81.9) a[i]=3.0; else if(s[p].getNetworkscore()<=84.9) a[i]=3.3; else if(s[p].getNetworkscore()<=89.9) a[i]=3.7; else a[i]=4.0; } else { if(s[p].getNetworkscore()>=68) a[i]=2.0; else if(s[p].getNetworkscore()>=66) a[i]=1.7; else if(s[p].getNetworkscore()>=64) a[i]=1.5; else if(s[p].getNetworkscore()>=60) a[i]=1.0; else a[i]=0; } } if(i==3) { if(s[p].getDatabasescore()>=72) { if(s[p].getDatabasescore()<=74.9) a[i]=2.3; else if(s[p].getDatabasescore()<=77.9) a[i]=2.7; else if(s[p].getDatabasescore()<=81.9) a[i]=3.0; else if(s[p].getDatabasescore()<=84.9) a[i]=3.3; else if(s[p].getDatabasescore()<=89.9) a[i]=3.7; else a[i]=4.0; } else { if(s[p].getDatabasescore()>=68) a[i]=2.0; else if(s[p].getDatabasescore()>=66) a[i]=1.7; else if(s[p].getDatabasescore()>=64) a[i]=1.5; else if(s[p].getDatabasescore()>=60) a[i]=1.0; else a[i]=0; } } if(i==4) { if(s[p].getSoftwarescore()>=72) { if(s[p].getSoftwarescore()<=74.9) a[i]=2.3; else if(s[p].getSoftwarescore()<=77.9) a[i]=2.7; else if(s[p].getSoftwarescore()<=81.9) a[i]=3.0; else if(s[p].getSoftwarescore()<=84.9) a[i]=3.3; else if(s[p].getSoftwarescore()<=89.9) a[i]=3.7; else a[i]=4.0; } else { if(s[p].getSoftwarescore()>=68) a[i]=2.0; else if(s[p].getSoftwarescore()>=66) a[i]=1.7; else if(s[p].getSoftwarescore()>=64) a[i]=1.5; else if(s[p].getSoftwarescore()>=60) a[i]=1.0; else a[i]=0; } } } for(i=0;i<5;i++) v+=a[i]*g[i]; v=v/16; if(v>=2) flag5=true; else flag5=false; stu.display7(); System.out.println(" 学生学号:"+s[p].getStunumber()); System.out.println(" 学生姓名:"+s[p].getName()); System.out.println(" 1、高等数学成绩绩点:"+a[0]); System.out.println(" 2、大学英语成绩绩点::"+a[1]); System.out.println(" 3、计算机网络成绩绩点:"+a[2]); System.out.println(" 4、数据库成绩绩点:"+a[3]); System.out.println(" 5、软件工程成绩绩点:"+a[4]); System.out.println(" 6、你的平均学分绩点为:"+String.format("%.2f",v)); if(flag5==true) System.out.println(" 你的学分绩点已达到毕业要求!"); else System.out.println(" 你的学分绩点不满足毕业要求!"); System.out.println(" 是否返回系统主界面:(Y/N) "); String c; c=in.next(); if(c.compareTo("Y")==0) flag6=false; } if(flag6==false&&flag4==false) break; } break; } case 4: { stu.display3(); flag=false; break; } } } } in.close(); } }