编写一个学生成绩管理程序。
学生的属性包括学号、姓名、年龄等。
每个学生要学习若干课程,
每门课程有平时成绩、期中考试成绩、实习成绩、期末考试成绩以及总评成绩等多个成绩,
其中平时成绩的数目不定(因为不同课程的教师布置的平时作业数不同),
而总评成绩是其它成绩的平均值。
请先设计合理的对象容器类存放这些信息,然后设计程序完成以下功能:
(1)列出某个学生的所有成绩;
(2)列出某门课程每个学生的总评成绩,及所有学生总评成绩的总评分;
(3)分区段统计某门课程的学生总评成绩,例如60 分以下的学生人数、60 至70 分的学生人数等。
根据兴趣,你还可实现其它一些功能。请仔细设计和组织你的类和使用的集合类对象。
学生的属性包括学号、姓名、年龄等。
每个学生要学习若干课程,
每门课程有平时成绩、期中考试成绩、实习成绩、期末考试成绩以及总评成绩等多个成绩,
其中平时成绩的数目不定(因为不同课程的教师布置的平时作业数不同),
而总评成绩是其它成绩的平均值。
请先设计合理的对象容器类存放这些信息,然后设计程序完成以下功能:
(1)列出某个学生的所有成绩;
(2)列出某门课程每个学生的总评成绩,及所有学生总评成绩的总评分;
(3)分区段统计某门课程的学生总评成绩,例如60 分以下的学生人数、60 至70 分的学生人数等。
根据兴趣,你还可实现其它一些功能。请仔细设计和组织你的类和使用的集合类对象。
解决方案 »
- eclipse里面要像args[]那样输入数据怎么办?
- 使用POI控件,PDF可以使用PDFBOX0.7.3控件操作OFFICE,PDF的问题
- 编程求出自然数101-205中的所有素数
- 关于super的问题
- 关于使用java.util.GregorianCalendar类的奇怪问题---烦请高手给以解答
- java里链表怎么表示??
- 在tcp的socket通信中怎样把发送过来的文件(.txt或.mp3或.jpg)存储在磁盘的指定位置
- weblogic6.X在jbuilder6里面如何设置
- jboss??jbuilder??
- 字符串转化成基本类型
- poi在excel2007中新建sheet并在sheet中加点数据,但数据加不进去
- 求个JVM相关的工具
import java.util.List;public class Student { private int sno;
private String name;
private int age; private List<Score> scores = new ArrayList<Score>(); public Student() { } public Student(int sno, String name, int age) {
this.sno = sno;
this.name = name;
this.age = age;
} public int getSno() {
return sno;
} public void setSno(int sno) {
this.sno = sno;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} /**
* 指定课程成绩是否已经存在
*
* @param cno
* @return
* @author sunstar
* @date 2012-7-26 下午3:03:27
*/
public boolean isExists(int cno) { for (int i = scores.size() - 1; i > -1; i--) { if (this.scores.get(i).getCno() == cno) {
return true;
}
} return false;
} public void addScore(Score score) {
//如果课程还没有成绩则增加,否则不添加,防止添加多次相同课程的成绩
if (!isExists(score.getCno())) {
this.scores.add(score);
}
} public void delScore(int cno) { for (int i = scores.size() - 1; i > -1; i--) { if (this.scores.get(i).getCno() == cno) {
scores.remove(i);
break;
}
}
} @Override
public String toString() {
return "Student [sno=" + sno + ", name=" + name + ", age=" + age
+ ", scores=" + scores + "]";
} /**
* 显示学生 的所有学习的课程成绩
*
* @author sunstar
* @date 2012-7-26 下午2:58:20
*/
public void showScore() {
System.out.println("Student [sno=" + sno + ", name=" + name + ", age="
+ age + "] 的详细成绩如下:");
for (int i = 0; i < scores.size(); i++) {
System.out.println(scores.get(i).toString());
}
} /**
* 根据课程ID cno获取成绩
*
* @param cno
* @return
* @author sunstar
* @date 2012-7-26 下午2:57:58
*/
public Score getScore(int cno) {
Score score = null;
for (int i = 0; i < scores.size(); i++) {
if (scores.get(i).getCno() == cno) {
score = scores.get(i);
break;
}
} return score; } /**
* 显示指定 课程ID的成绩
*
* @param cno
* @author sunstar
* @date 2012-7-26 下午2:57:33
*/
public void showScore(int cno) { Score score = getScore(cno); if (score == null) { System.out.println("Student [sno=" + sno + ", name=" + name
+ ", age=" + age + "] 没有学习 ID 为" + cno + "的课程.");
} else {
System.out.println("Student [sno=" + sno + ", name=" + name
+ ", age=" + age + "] 的 【" + score.getCourseName()
+ "】 成绩如下:");
System.out.println(score.toString());
} }
}Score.java
package info;import java.util.ArrayList;
import java.util.List;public class Score { private List<Double> daily = new ArrayList<Double>() ;//日常成绩
private double mid ;//期中
private double practice ;//实习
private double end ; //期末
private int cno ;//课程号
private String courseName ; //课程名
public String getCourseName() {
return courseName;
}
public void setCourseName(String courseName) {
this.courseName = courseName;
}
public Score(){}
public Score(double mid, double practice, double end, int cno,String courseName) {
this.mid = mid;
this.practice = practice;
this.end = end;
this.cno = cno;
this.courseName = courseName ;
}
public Score(List<Double> daily, double mid, double practice, double end,
int cno, String courseName ) {
this.daily = daily;
this.mid = mid;
this.practice = practice;
this.end = end;
this.cno = cno;
this.courseName = courseName ;
}
public List<Double> getDaily() {
return daily;
}
public void setDaily(List<Double> daily) {
this.daily = daily;
}
public double getMid() {
return mid;
}
public void setMid(double mid) {
this.mid = mid;
}
public double getPractice() {
return practice;
}
public void setPractice(double practice) {
this.practice = practice;
}
public double getEnd() {
return end;
}
public void setEnd(double end) {
this.end = end;
}
public int getCno() {
return cno;
}
public void setCno(int cno) {
this.cno = cno;
}
/**
* 得到日常成绩的平均值
* @return
* @author sunstar
* @date 2012-7-26 下午2:11:07
*/
public double getSumDaily(){ double sum = 0.0 ;
for (int i = 0; i < daily.size(); i++){
sum += daily.get(i) ;
}
return sum ;
}
//某个课程的总评成绩
public double getZhongPing(){
double sum = this.getSumDaily() + this.mid + this.practice + this.end ;
return sum / 4 ;
}
@Override
public String toString() {
return "Score [cno=" + cno + ", courseName="
+ courseName +" , daily=" + this.getSumDaily() + ", mid=" + mid + ", practice="
+ practice + ", end=" + end + "]";
}
}
School.javapackage info;import java.util.ArrayList;
import java.util.List;public class School { public static List<Student> stuList = new ArrayList<Student>() ; //学生
public static void showZhongPing(int cno){
Score score = null ;
Student stu = null ;
for (int i = 0; i < stuList.size(); i++) {
stu = stuList.get(i) ;
score = stu.getScore(cno) ;
if (score == null){
System.out.println(stu.getName() + " 没有学习 ID 为 " + cno + "的课程.");
}else{
System.out.println(stu.getName() + " 的 【 " + score.getCourseName() + " 】课程总评成绩为:"+ score.getZhongPing());
}
}
}
/**
* 0-60 , 61-80, 81 -100;
* @return
* @author sunstar
* @date 2012-7-26 下午2:55:47
*/
public static int[] total(){
int iArrs[] = new int[3] ;
//.iArrs......iArrs.
return iArrs ;
}
/**
* @param args
* @author sunstar
* @date 2012-7-26 下午2:20:05
*/
public static void main(String[] args) {
List<Double> daily = null ;
Student stu = new Student(1, "张三", 22) ;
daily = new ArrayList<Double>() ;
daily.add(90.5) ;
daily.add(88.5) ;
daily.add(85.0) ;
daily.add(50.0) ;
Score score = new Score(daily, 80.0, 60.0, 70.0,1, "A课程" ) ;
stu.addScore(score) ;
daily = new ArrayList<Double>() ;
daily.add(50.5) ;
daily.add(38.5) ;
score = new Score(daily, 40.0, 50.0, 30.0,2, "B课程" ) ;
stu.addScore(score) ;
stuList.add( stu ) ;
stu = new Student(2, "李斯", 22) ;
daily = new ArrayList<Double>() ;
daily.add(10.5) ;
daily.add(18.5) ;
daily.add(15.0) ;
daily.add(10.0) ;
score = new Score(daily, 10.0, 10.0, 10.0,1, "A课程" ) ;
stu.addScore(score) ;
daily = new ArrayList<Double>() ;
daily.add(50.5) ;
daily.add(38.5) ;
score = new Score(daily, 40.0, 50.0, 30.0,2, "B课程" ) ;
stu.addScore(score) ;
stuList.add( stu ) ;
stu = new Student(3, "Jone", 19) ;
stuList.add( stu ) ;
stu = new Student(4, "王五", 24) ;
stuList.add( stu ) ;
stu = new Student(5, "X六", 23) ;
stuList.add( stu ) ;
stuList.get(0).showScore() ;
stuList.get(0).showScore(1) ;
stuList.get(0).showScore(2) ;
showZhongPing(1) ;
}}
Student [sno=1, name=张三, age=22] 的详细成绩如下:
Score [cno=1, courseName=A课程 , daily=314.0, mid=80.0, practice=60.0, end=70.0]
Score [cno=2, courseName=B课程 , daily=89.0, mid=40.0, practice=50.0, end=30.0]
Student [sno=1, name=张三, age=22] 的 【A课程】 成绩如下:
Score [cno=1, courseName=A课程 , daily=314.0, mid=80.0, practice=60.0, end=70.0]
Student [sno=1, name=张三, age=22] 的 【B课程】 成绩如下:
Score [cno=2, courseName=B课程 , daily=89.0, mid=40.0, practice=50.0, end=30.0]
张三 的 【 A课程 】课程总评成绩为:131.0
李斯 的 【 A课程 】课程总评成绩为:21.0
Jone 没有学习 ID 为 1的课程.
王五 没有学习 ID 为 1的课程.
X六 没有学习 ID 为 1的课程.
我没有理解你的总评成绩是计算每一门的 平均成绩呢 ,还是这个学生所学的各科学习成绩平均后在平均 ????就写到这里 ,之后的功能自己琢磨一些 ,应该能搞定的....