这个作业,鸽了好久。本来大家都在中秋前发了,我摸摸索索加上各种缓慢的学习,终于是将他做完了。

做完之后,java最基本的输入输出功能都基本学习到了。下面附上代码:

 import java.util.*;
import java.util.Scanner;
public class ScoreManagement {
//调用自定义类数组
static ScoreInformation[] a= new ScoreInformation[5];
static Scanner scan = new Scanner(System.in);
static boolean pd = true;
//打印主界面
public static void printmain(){
System.out.println("***********************************************************\r"+
" 石家庄铁道大学软件工程系\r"+
" 学生学籍管理系统 2019 版\r"+
"***********************************************************\r"+
" 1、 学生考试成绩录入\r"+
" 2、 学生考试成绩修改\r"+
" 3、 计算学生成绩绩点\r"+
" 4、 退出学籍管理系统\r"+
"**********************************************************");
}
static void score_enter1(){
boolean pd2=true;
//打印成绩录入界面
System.out.println("***********************************************************\r"+
" 石家庄铁道大学软件工程系学生学籍管理系统 2019 版\r"
+ " 学生考试成绩录入\r"+
"***********************************************************\r"+
" 请输入学生学号:XXXXXXXX\r"+
"**********************************************************");
//将用户输入的学号与数组内对比
int sum;
String Stunnumber = scan.next();
for(sum=0;sum<5;sum++){
if((Stunnumber.equals(a[sum].getStunnumber()))){
break;
}
}
if(sum==5){
pd2=false;
System.out.println("您输入的学号不存在,请重新输入!");
score_enter1();
}
if(pd2){
int i;
score_enter2();
System.out.println(" 学生学号:"+a[sum].getStunnumber());
System.out.println(" 学生姓名:"+a[sum].getname());
//用循环挨个刷出成绩结果
for(i=1;i<=7;i++){
if(i>1)
{
score_enter2();
System.out.println(" 高等数学成绩:"+a[sum].getmathematicsscore());
}
if(i>2)
{
System.out.println(" 大学英语成绩:"+a[sum].getenglishscore());
}
if(i>3)
{
System.out.println(" 计算机网络成绩:"+a[sum].getnetworkscore());
}
if(i>4)
{
System.out.println(" 数据库成绩:"+a[sum].getdatabasescore());
}
if(i>5)
{
System.out.println(" 软件工程成绩:"+a[sum].getsoftwarescore());
}
if(i>6)
{
System.out.println(" 该学生成绩已录入完毕,是否提交(Y/N)");
System.out.println("**********************************************************");
String s=scan.next();
if(s.equals("Y"))
{
break;
}
if(s.equals("N"))
{
a[sum].setdatabasecore(0);
a[sum].setenglishscore(0);
a[sum].setmathematicsscore(0);
a[sum].setnetworkscore(0);
a[sum].setsoftwarescore(0);
score_enter1();
} }
//用循环挨个录入成绩
if(i==1)
{
System.out.println(" 请输入高等数学成绩:XXX");
System.out.println("**********************************************************");
double c=scan.nextDouble();
a[sum].setmathematicsscore(c); }
else if(i==2)
{
System.out.println(" 请输入大学英语成绩:XXX");
System.out.println("**********************************************************");
double c=scan.nextDouble();
a[sum].setenglishscore(c);
}
else if(i==3)
{
System.out.println(" 请输入计算机网络成绩:XXX");
System.out.println("**********************************************************");
double c=scan.nextDouble();
a[sum].setnetworkscore(c);
}
else if(i==4)
{
System.out.println(" 请输入数据库成绩:XXX");
System.out.println("**********************************************************");
double c=scan.nextDouble();
a[sum].setdatabasecore(c);
}
else if(i==5)
{
System.out.println(" 请输入软件工程成绩:XXX");
System.out.println("**********************************************************");
double c=scan.nextDouble();
a[sum].setsoftwarescore(c);
}
}
}
}
static void score_enter2(){
System.out.println("***********************************************************\r"+
" 石家庄铁道大学软件工程系学生学籍管理系统 2019 版\r"+
" 学生考试成绩录入界面\r"+
"***********************************************************\r");
}
static void score_revise1(){
score_revise2();
int sum=0;
String Stunnumber = scan.next();
double primary=0;
//将输入的学号与数组内容匹配
for(sum=0;sum<5;sum++){
if(Stunnumber.equals(a[sum].getStunnumber())){
break;
}
}
if(sum==5){
System.out.println("您输入的学号不正确,请重新输入!");
score_revise1();
}
//输出该学生的各科成绩
System.out.println("***********************************************************\r"+
" 石家庄铁道大学软件工程系学生学籍管理系统 2019 版\r"+
" 学生考试成绩录入\r"+
"***********************************************************\r"+
" 学生学号:"+a[sum].getStunnumber()+"\r"+
" 学生姓名:"+a[sum].getname()+"\r"+
" 1、高等数学成绩:"+a[sum].getmathematicsscore()+"\r"+
" 2、大学英语成绩:"+a[sum].getenglishscore()+"\r"+
" 3、计算机网络成绩:"+a[sum].getnetworkscore()+"\r"+
" 4、数据库成绩:"+a[sum].getdatabasescore()+"\r"+
" 5、软件工程成绩:"+a[sum].getsoftwarescore()+"\r"+
"**********************************************************");
int x = scan.nextInt();
System.out.println("***********************************************************\r" +
" 石家庄铁道大学软件工程系学生学籍管理系统 2019 版\r" +
" 学生考试成绩录入界面\r" +
"***********************************************************\r"+
" 学生学号:"+a[sum].getStunnumber()+"\r" +
" 学生姓名:"+a[sum].getname()
);
//用 Switch语句实现各个成绩的修改操作
switch(x){
case 1 : System.out.println(" 请输入修改后的高等数学成绩:");
System.out.println("**********************************************************");
primary = a[sum].getmathematicsscore();
a[sum].setmathematicsscore(scan.nextDouble());break;
case 2 : System.out.println(" 请输入修改后的大学英语成绩:");
System.out.println("**********************************************************");
primary = a[sum].getenglishscore();
a[sum].setenglishscore(scan.nextDouble());break;
case 3 : System.out.println(" 请输入修改后的计算机网络成绩:");
System.out.println("**********************************************************");
primary = a[sum].getnetworkscore();
a[sum].setnetworkscore(scan.nextDouble());break;
case 4 : System.out.println(" 请输入修改后的数据库成绩:");
System.out.println("**********************************************************");
primary = a[sum].getdatabasescore();
a[sum].setdatabasecore(scan.nextDouble());break;
case 5 : System.out.println(" 请输入修改后的软件工程成绩:");
System.out.println("**********************************************************");
a[sum].setsoftwarescore(scan.nextDouble());break;
}
//输出修改后的各科成绩
System.out.println("***********************************************************\r"+
" 石家庄铁道大学软件工程系学生学籍管理系统 2019 版\r"+
" 学生考试成绩录入\r"+
"***********************************************************\r"+
" 学生学号:"+a[sum].getStunnumber()+"\r"+
" 学生姓名:"+a[sum].getname()+"\r"+
" 1、高等数学成绩:"+a[sum].getmathematicsscore()+"\r"+
" 2、大学英语成绩:"+a[sum].getenglishscore()+"\r"+
" 3、计算机网络成绩:"+a[sum].getnetworkscore()+"\r"+
" 4、数据库成绩:"+a[sum].getdatabasescore()+"\r"+
" 5、软件工程成绩:"+a[sum].getsoftwarescore()+"\r"+
" 该学生成绩已修改完毕,是否提交(Y/N)\r"+
"**********************************************************");
String pan = scan.next();
if(pan.equals("Y")){
return;
}
//还原原成绩
if(pan.equals("N")){
switch(x){
case 1 : a[sum].setmathematicsscore(primary);break;
case 2 : a[sum].setenglishscore(primary);break;
case 3 : a[sum].setnetworkscore(primary);break;
case 4 : a[sum].setdatabasecore(primary);break;
case 5 : a[sum].setsoftwarescore(primary);break;
}
score_revise1(); }
}
static void score_revise2(){
//打印修改界面
System.out.println("***********************************************************\r"+
" 石家庄铁道大学软件工程系学生学籍管理系统 2019 版\r"+
" 学生考试成绩修改界面\r"+
"***********************************************************\r"+
" 请输入学生学号:XXXXXXXX\r"+
"**********************************************************");
}
static void score_countgpa(){
score_printcountgpamain();
String stunumber = scan.next();
int sum;
for(sum=0;sum<5;sum++){
if(stunumber.equals(a[sum].getStunnumber())){
break;
}
}
boolean pd1=false;
double gpa1=(score_countgpa1(a[sum].getdatabasescore())*3+score_countgpa1(a[sum].getenglishscore())*3+
score_countgpa1(a[sum].getmathematicsscore())*4+score_countgpa1(a[sum].getnetworkscore())*4+
score_countgpa1(a[sum].getsoftwarescore())*2)/16;
if(gpa1>=2.0) pd1=true;
if(pd1) {
System.out.println("***********************************************************\r"+
" 石家庄铁道大学软件工程系学生学籍管理系统 2019 版\r"+
" 学生考试成绩绩点计算界面\r"+
"***********************************************************\r"+
" 学生学号:"+a[sum].getStunnumber()+"\r"+
" 学生姓名:"+a[sum].getname()+"\r"+
" 1、高等数学成绩绩点:"+score_countgpa1(a[sum].getmathematicsscore())+"\r"+
" 2、大学英语成绩绩点:"+score_countgpa1(a[sum].getenglishscore())+"\r"+
" 3、计算机网络成绩绩点:"+score_countgpa1(a[sum].getnetworkscore())+"\r"+
" 4、数据库成绩绩点::"+score_countgpa1(a[sum].getdatabasescore())+"\r"+
" 5、软件工程成绩绩点:"+score_countgpa1(a[sum].getsoftwarescore())+"\r"+
" 你的平均学分绩点为:"+gpa1+"\r"+
" 提示信息:您的绩点已经达到毕业要求!"+"\r"+
" 是否返回系统主界面:(Y/N)"+
"**********************************************************");}
if(!pd1){ System.out.println("***********************************************************\r"+
" 石家庄铁道大学软件工程系学生学籍管理系统 2019 版\r"+
" 学生考试成绩绩点计算界面\r"+
"***********************************************************\r"+"\r"+
" 学生学号:"+a[sum].getStunnumber()+"\r"+
" 学生姓名:"+a[sum].getname()+"\r"+
" 1、高等数学成绩绩点:"+score_countgpa1(a[sum].getmathematicsscore())+"\r"+
" 2、大学英语成绩绩点:"+score_countgpa1(a[sum].getenglishscore())+"\r"+
" 3、计算机网络成绩绩点:"+score_countgpa1(a[sum].getnetworkscore())+"\r"+
" 4、数据库成绩绩点::"+score_countgpa1(a[sum].getdatabasescore())+"\r"+
" 5、软件工程成绩绩点:"+score_countgpa1(a[sum].getsoftwarescore())+"\r"+
" 你的平均学分绩点为:"+gpa1+"\r"+
" 提示信息:您的绩点未达到毕业要求!"+"\r"+
" 是否返回系统主界面:(Y/N)"+"\r"+
"**********************************************************");
}
String s = scan.next();
if(s.equals("Y")) ;
if(s.equals("N")) pd=false;
}
static void score_printcountgpamain(){
System.out.println("***********************************************************\r"+
" 石家庄铁道大学软件工程系学生学籍管理系统 2019 版\r"+
" 学生考试成绩绩点计算界面\r"+
"***********************************************************\r"+
" 请输入学生学号:XXXXXXXX\r"+
"**********************************************************");
} public static double score_countgpa1(double x){
double gpa=0.0;
if(x<60) gpa=0.0;
if(x>=60&&x<=63.9) gpa=1.0;
if(x>=64&&x<=65.9) gpa=1.5;
if(x>=66&&x<=67.9) gpa=1.7;
if(x>=68&&x<=71.9) gpa=2.0;
if(x>=72&&x<=74.9) gpa=2.3;
if(x>=75&&x<=77.9) gpa=2.7;
if(x>=78&&x<=81.9) gpa=3.0;
if(x>=82&&x<=84.9) gpa=3.3;
if(x>=85&&x<=89.9) gpa=3.7;
if(x>=90) gpa=4.0;
return gpa;
}
static void exit(){
//打印退出界面
System.out.println("***********************************************************\r"+
" 谢谢使用石家庄铁道大学软件工程系学生学籍管理系统 2019 版\r"+
" 制作人:刘梦鑫\r"+
"***********************************************************\r");
}
public static void main(String[] args){
//为数组开辟对应的空间
a[0]= new ScoreInformation();
a[1]= new ScoreInformation();
a[2]= new ScoreInformation();
a[3]= new ScoreInformation();
a[4]= new ScoreInformation();
//为数组内容赋值学号与姓名
a[0].setname("一号");
a[0].setStunnumber("20182766");
a[1].setname("二号");
a[1].setStunnumber("20182767");
a[2].setname("三号");
a[2].setStunnumber("20182768");
a[3].setname("四号");
a[3].setStunnumber("20182769");
a[4].setname("五号");
a[4].setStunnumber("20182770");
while(pd)
{
printmain();
int c = scan.nextInt();
switch(c){
case 1:score_enter1();break;
case 2:score_revise1();break;
case 3:score_countgpa();break;
case 4:exit();pd=false;break;
default:System.out.println("您输入的数字有误,请重新输入!");break;
}
}
}
}
public class ScoreInformation {/*定义七个变量*/
private String stunnumber;/*学号*/
private String name;/*学生姓名*/
private double mathematicsscore;/*数学成绩*/
private double englishscore;/*英语成绩*/
private double networkscore;/*计算机网络成绩*/
private double databasescore;//数据库成绩
private double softwarescore;//软件工程成绩
public String getStunnumber(){
return stunnumber;//学号的输出
}
public void setStunnumber(String n){
stunnumber=n;//学号的输入
}
public String getname(){
return name;//名字的输出
}
public void setname(String a){
name=a;}//名字的输入
public double getmathematicsscore(){
return mathematicsscore;//数学成绩的输入
}
public void setmathematicsscore(double b){
mathematicsscore=b;//数学成绩的输出
}
public double getenglishscore(){
return englishscore;//英语成绩的输入
}
public void setenglishscore(double c){
englishscore=c;//英语成绩的输出
}
public double getnetworkscore(){
return networkscore;//计算机网络成绩的输入
}
public void setnetworkscore(double s){
networkscore=s;//计算机网络成绩的输出
}
public double getdatabasescore(){
return databasescore;//数据库成绩的输出
}
public void setdatabasecore(double e){
databasescore=e;//数据库成绩的输入
}
public double getsoftwarescore(){
return softwarescore;//软件工程成绩的输入
}
public void setsoftwarescore(double s){
softwarescore=s;//软件工程成绩的输出
} }

总结:

1.这个程序其实并不具有太强的功能,界面的打印基本都是依靠手工输出。其他各个功能的实现其实就是一堆方法的编写。

2.在这个小软件中,我们使用了private定义的变量,使得变量的引用变得安全,但使用的方式却略显复杂。

3.第一个功能,成绩录入,其实就是将学号与姓名和对应的数组匹配起来,然后将输入的成绩存储在数组中,其实也可以通过创建文件的方式进行储存,这样就会使得代码更加便捷。但这么长的程序谁愿意改呢~

4.成绩的修改,其实就是第一个功能,基本一致。

5.绩点计算,也比较简单,基本就是基本的计算就好了。

总的来说,其实就是各个方法的最基本实现。看着代码比较长,其实在理解后编写也是比较的简单。

转入软工后第一节java课的作业的更多相关文章

  1. 关于转入软件工程专业后第二次java课上作业的某些体会

    今天是第二周的java课. 自从转入了软件工程专业后,在我没有学习c++的基础上,直接开始了学习java的过程.不得不说过程很艰辛.今天下午老师让编写一个随机产生作业的软件.而我的基础差到都不知道如何 ...

  2. Java基础第一节.Java简介

    第一节 Java简介 Java是一个由Sun公司开发而成的新一代的编程语言. Java语言是对软件开发有深远影响.应用前景广泛.具有丰富的类库.继承了C++的传统(摈弃了某些不足)广泛使用的网络编程语 ...

  3. 我的第一节Android课

    我的第一节安卓课程,今天非比寻常的一天,我开始了我程序猿之路的第一节安卓课程,安卓课程只是我的一个兴趣班,我的本专业是java开发,因为喜欢做一个属于自己的一个手机APP,就选多个一样技能,毕竟十八般 ...

  4. [BUAA2021软工]结对第一阶段博客作业小结

    作业链接 结对项目-第一阶段 优秀作业推荐 本次博客作业虽然是简单总结,但是以下作业中都不乏有思考.有亮点的精彩内容,推荐给同学们阅读学习. 山鸣谷应,相得益彰--杰对项目-第一阶段总结 该组对于可能 ...

  5. 软工个人项目(Java实现)

    一. Github地址: https://github.com/RuiBingo/PersonalWork 二.个人PSP表格: PSP2.1 PSP阶段 预估耗时(分钟) 实际耗时(分钟) Plan ...

  6. 广州商学院16级软工一班&二班-第二次作业成绩

    作业地址 https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2097 https://edu.cnblogs.com/campus/gzc ...

  7. 2018-2019学年第一学期Java课设--魔塔

    目录 Magic-Towers 一.团队名称.团队成员介绍.任务分配 团队名称:MoTa 团队成员介绍 任务分配 二.项目简介 三.项目采用技术 四.项目亮点 主界面显示主要信息功能 游戏动画 五.项 ...

  8. 深入学习重点分析java基础---第一章:深入理解jvm(java虚拟机) 第一节 java内存模型及gc策略

    身为一个java程序员如果只会使用而不知原理称其为初级java程序员,知晓原理而升中级.融会贯通则为高级 作为有一个有技术追求的人,应当利用业余时间及零碎时间了解原理 近期在看深入理解java虚拟机 ...

  9. 总结一下这几节Java课的...重点!!!

    1.定义一个Person类,包含两个私有的属性(name.age).一个含参的方法setValue(int age,String name).一个不含参方法setValue()和一个普通方法tell( ...

随机推荐

  1. Linux jpeglib库的安装

    tar -zxvf jpegsrc.v9.tar.gz cd jpeg9 ./configure --enable-shared  --enable-static 分别对动态链接库和静态链接库的支持 ...

  2. vue基础api

    vue比jq好处 1jq 频繁操作dom 增加了性能消耗 vue 模拟dom 从内存中拿 2jq 数据没有统一管理 vue 统一管理数据 3vue 组件开发可以提取出公共的html或js   mv*好 ...

  3. Java学习笔记(九)面向对象---模板方法设计模式

    理解 在定义功能时功能的一部分是确定的,但是有一部分是不确定的,而确定的部分在使用不确定的部分,那么就将不确定的部分暴露出去,由该类的子类完成. 举例 需求 获取一段程序的运行时间 代码 abstra ...

  4. 关于Spring+mybatis使用@Transactional注解事物没有生效的问题

    控制台日志信息: was not registered for synchronization because synchronization is not active JDBC Connectio ...

  5. 【StarUML】用例图

    用例图是在项目初期确认需求的时候,需要明确各个参与者之间的关系以及对应的功能,它可视化地展示了整个系统的功能以及功能之间.功能与参与者之间的关系. 1.元素 1.1 角色(actor) 角色不一定是人 ...

  6. sqli-libs(23-28a关)

    Less_23 首先在php文件中加入echo $sql;echo "<br>"; 方法一: :%00 输入?id=1’,报错,说明存在注入漏洞: 输入?id=1' - ...

  7. 关于mybatis中sql映射文件模糊查询的使用

    1.从前台传递一个String类型的参数到后台进行查询,如果牵涉到模糊查询会报错,应该把参数封装到对象中再进行传递然后进行模糊查询 2.一个查询框,多个查询条件 <if test="c ...

  8. 微信小程序--缓存,支持过期时间的二次开发封装

    简介 微信小程序提供了缓存的api,包括同步和异步两种,具体api不多说明,可自行查看官方文档 现在微信小程序缓存api存在一个问题就是没有设定过期时间,下面给大家介绍一下对小程序缓存的二次封装,使其 ...

  9. python面向对象封装案例2

    封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 —— 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象,然后 让对象调用方法 对象方法的细节 都被 封装 在 类 ...

  10. php的排序函数

    sort(array,sortingtype); 参数 描述 array 必需.规定要进行排序的数组. sortingtype 可选.规定如何比较数组的元素/项目.可能的值: 0 = SORT_REG ...