Java内部类实验作业(学生成绩管理程序) - Go语言中文社区

Java内部类实验作业(学生成绩管理程序)


实验目的:
熟悉内部类的定义和使用,掌握内部类的使用规则

写一个Java程序,实现以下要求:

  • 学生参加某课程的考试,课程类型分为考试课和考查课。
  • 考试课最终成绩计算方法:出勤10%+作业10%+实验10%+期末70%
    考查课最终成绩计算方法:出勤20%+作业10%+实验10%+期末60%
package experiment1;

import java.util.ArrayList;
import java.util.Collection;



public class Student {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Student s1 = new Student("李红","女");
		s1.inputScore("Java", "考查", 90, 85, 75, 80);
		s1.inputScore("SQL ", "考试", 80, 90, 82, 75);
		s1.inputScore("J2EE", "考查", 78, 70, 70, 71);
		s1.printInfo();
		System.out.println();
		System.out.println("***************************");
		System.out.println();
		Student s2 = new Student("王晓明","男");
		s2.inputScore("Java", "考查", 86, 67, 71, 70);
		s2.inputScore("SQL ", "考试", 77, 70, 85, 66);
		s2.inputScore("J2EE", "考查", 88, 74, 68, 80);
		s2.printInfo();
	}
	String name;//姓名
	String sex;//性别
//	Subject[] subjects;
	Collection<Subject> subject = new ArrayList<Subject>();
	// 成员内部类 课程类
	class Subject {
		String subjectName;//课程名
		String type;//课程类型
		SubjectType subType = new SubjectType();//新建静态内部类
		void setType(){
			subType.typeName = type;
			subType.setRatio();
		};
		int atten;//出勤
		int assign;//作业
		int lab;//实验
		int finalExam;//期末
	}
	// 静态内部类 课程性质
	static class SubjectType {
		String typeName;//类型
		double attenRatio;//出勤比例
		static final double assignRatio = 0.1;//作业比例,静态final
		static final double labRatio = 0.1;//实验比例,静态final
		double finalRatio;//期末比例

		void setRatio() {
			//设置比例的方法
			if ("考查".equals(typeName)) {
				attenRatio = 0.2;
				finalRatio = 0.6;
			}else if ("考试".equals(typeName)) {
				attenRatio = 0.1;
				finalRatio = 0.7;
			}
		}
	}
	public Student() {
		// TODO 自动生成的构造函数存根
	}
	public Student (String name, String sex) {
		this.name = name;
		this.sex = sex;
	}
	//导入学生成绩方法
	public void inputScore(String name,String type,int atten,int assign,int lab,int finalExam){
		Student s = new Student();
		Student.Subject sub = s.new Subject();
		sub.subjectName = name;
		sub.type = type;
		sub.setType();
		sub.atten = atten;
		sub.assign = assign;
		sub.lab = lab;
		sub.finalExam = finalExam;
		subject.add(sub);
		
	}
	//打印方法
    void printInfo(){
        class calcScore{ //局部内部类
            //用于计算总分
            int calcTotal(Subject sb){  
            	double a = sb.atten * sb.subType.attenRatio;
            	double b = sb.assign * SubjectType.assignRatio;
            	double c = sb.lab * SubjectType.labRatio;
            	double d = sb.finalExam * sb.subType.finalRatio;
            	return (int)(a+b+c+d);
            }	
        }
        calcScore cs = new calcScore();
        System.out.println("姓名:"+name+"    性别:"+sex);
        System.out.println("课程       "+"性质  "+"出勤  "+"作业  "+"实验  "+"期末  "+"总分 ");
        System.out.println("===============================");
        for(int i=0;i<subject.size();i++) {
        	Subject sb = ((ArrayList<Subject>) subject).get(i);
        	System.out.println(sb.subjectName+" "+sb.type+"   "+sb.atten+"     "+sb.assign+"     "+sb.lab+"     "+sb.finalExam+"     "+cs.calcTotal(sb));
        }
     }


}




运行结果:
在这里插入图片描述

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/zinc1234596/article/details/114810465
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-06-12 18:47:55
  • 阅读 ( 1183 )
  • 分类:研发管理

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢