已知某班学生Java程序设计课程各阶段的成绩如下:
学号     平时成绩      期中成绩    期末上机        期末笔试
101         90            88          87              84
102         78            60          70              75
103         90            86          91              93
104         50            44          36              60
105         88            87          90              92
106         64            72          70              80
107         60            61          55              55
108         81            84          83              87
请按以下要求编写程序:
(1) 按总评成绩从高到低输出成绩单。
(2) 计算并输出全班的平均分。
这个题能不能 不连接数据库?请高手帮帮忙 谢谢

解决方案 »

  1.   

    先创建一个Bean类。然后创建一个测试类.
    就是下面的代码:
    JavaBean类:
    Score 类public class Score {
    private int studentNo;// 学号
    private int uscore;// 平时成绩
    private int mscore;// 其中成绩
    private int etScore;// 期末上机成绩
    private int wscore;// 期末笔试成绩
    private int tscore;// 总成绩
    private int avg;// 平均成绩 // 构造方法
    public Score(int studentNo, int uscore, int mscore, int etScore, int wscore) {
    super();
    this.studentNo = studentNo;
    this.uscore = uscore;
    this.mscore = mscore;
    this.etScore = etScore;
    this.wscore = wscore;
    } // 比较两个对象总成绩。
    public boolean compare(Score s) {
    if (this.getTscore() < s.getTscore()) {
    return true;
    }
    return false;
    } // 获取总成绩
    public int getTscore() {
    this.tscore = this.uscore + this.mscore + this.etScore + this.wscore;
    return this.tscore;
    } // 获取平均成绩
    public int getAvg() {
    avg = this.tscore / 4;
    return avg;
    } public int getStudentNo() {
    return studentNo;
    } public int getUscore() {
    return uscore;
    } public int getMscore() {
    return mscore;
    } public int getEtScore() {
    return etScore;
    } public int getWscore() {
    return wscore;
    }
    }测试类:
    Test 类import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;public class Test { /**
     * @param args
     */
    // 已知某班学生Java程序设计课程各阶段的成绩如下:
    // 学号     平时成绩     期中成绩    期末上机    期末笔试
    // 101   90       88       87       84
    // 102   78       60       70       75
    // 103   90       86       91       93
    // 104   50       44       36       60
    // 105   88       87       90       92
    // 106   64       72       70       80
    // 107   60       61       55       55
    // 108   81       84       83       87
    // 请按以下要求编写程序:
    // (1) 按总评成绩从高到低输出成绩单。
    // (2) 计算并输出全班的平均分。
    public static void main(String[] args) {
    List<Score> lst = new ArrayList<Score>();// 创建一个专载Score对象的容器。 // 实例化和初始化每一个对象的成绩
    Score s1 = new Score(101, 90, 88, 87, 84);
    Score s2 = new Score(101, 90, 88, 87, 84);
    Score s3 = new Score(103, 90, 86, 91, 93);
    Score s4 = new Score(104, 50, 44, 36, 60);
    Score s5 = new Score(105, 88, 87, 90, 92);
    Score s6 = new Score(106, 64, 72, 70, 80);
    Score s7 = new Score(107, 60, 61, 55, 55);
    Score s8 = new Score(108, 81, 84, 83, 87); // 加载到容器
    lst.add(s1);
    lst.add(s2);
    lst.add(s3);
    lst.add(s4);
    lst.add(s5);
    lst.add(s6);
    lst.add(s7);
    lst.add(s8); // 冒泡排序
    Score temp = null;
    for (int i = 0; i < lst.size(); i++) {
    for (int j = 0; j < lst.size() - i - 1; j++) {
    if (lst.get(j).compare(lst.get(j + 1))) {
    temp = lst.get(j);
    lst.set(j, lst.get(j + 1));
    lst.set(j + 1, temp);
    }
    }
    } // 打印出按总成绩排序的成绩单
    Score score = null;
    String str = "";
    System.out.println("学号\t平时成绩\t期中成绩\t期末上机\t期末笔试\t总成绩\t平均成绩");
    for (int i = 0; i < lst.size(); i++) {
    score = lst.get(i);
    str = score.getStudentNo() + "\t" + score.getUscore() + "\t"
    + score.getMscore() + "\t" + score.getEtScore() + "\t"
    + score.getWscore() + "\t" + score.getTscore() + "\t"
    + score.getAvg();
    System.out.println(str);
    }
    }
    }
    我想上面就是你要的结果。
      

  2.   

    package test.sfli.fromweb;
    创建学生类class Student {

    //学号
    private int code;
    //平时成绩
    private float peacetimeGrade;
    //期中成绩
    private float midsemesterGrade;
    //期末上机
    private float finalOnComputer;
    //期末成绩
    private float endsemesterGrade;
    //总成绩
    private float comeOutGrade;



    public int getCode()
    {
    return this.code;
    }

    public float getPeacetimeGrade()
    {
    return this.peacetimeGrade;
    }

    public float getMidsemesterGrade()
    {
    return this.midsemesterGrade;
    }

    public float getFinalOnComputer()
    {
    return this.finalOnComputer;
    }

    public float getEndsemesterGrade()
    {
    return this.endsemesterGrade;
    }

    public float getComeOutGrade()
    {
    return this.comeOutGrade;
    }


    public void setCode(int code)
    {
    this.code = code;
    }

    public void setPeacetimeGrade(float peacetimeGrade)
    {
    this.peacetimeGrade = peacetimeGrade;
    }

    public void setMidsemesterGrade(float midsemesterGrade)
    {
    this.midsemesterGrade = midsemesterGrade;
    }

    public void setFinalOnComputer(float finalOnComputer)
    {
    this.finalOnComputer = finalOnComputer;
    }

    public void setEndsemesterGrade(float endsemesterGrade)
    {
    this.endsemesterGrade = endsemesterGrade;
    }

    public void setComeOutGrade(float comeOutGrade)
    {
    this.comeOutGrade = comeOutGrade;
    }
    }
    信息操作
    package test.sfli.fromweb;import java.io.*;
    import java.util.*;class InputInfo {
    private static Student student;  //用来存储临时读取数据

    private static int number = 1;  //标示输入的学生信息个数 private static List<Student> list = new ArrayList<Student>();//用来存储读取的信息


    //学生的信息参数
    private static int code; private static float peacetimeGrade;

    private static float midsemesterGrade; private static float finalOnComputer; private static float endsemesterGrade;

    /**
     *
     *用来读取输入的学生信息
     *
     **/
    public static void inputAction() throws IOException
    {
    BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
    String s ;
    while(true)
    {
    student = new Student();
    System.out.println("请输入第"+number+"学生的信息:");
    //读入学号
    System.out.print(" 输入学号:");
    if((s = read.readLine()) != null && s.length() != 0)
    {

       try
       {
          code = Integer.valueOf(s);
          student.setCode(code);
       }
       catch(Exception e)
       {
      System.out.println("please input the exactitude code:");
      break;
       }
    }
    else
    {
    System.out.println("please input the exactitude code:");
    break;
    }

    //读入平时成绩
    System.out.print(" 输入平时成绩:");
    if((s = read.readLine()) != null && s.length() != 0)
    {

       try
       {
          peacetimeGrade = Float.valueOf(s);
          student.setPeacetimeGrade(peacetimeGrade);
       }
       catch(Exception e)
       {
      System.out.println("please input the exactitude code:");
      break;
       }
    }
    else
    {
    System.out.println("please input the exactitude code:");
    break;
    }

    //读入期末上机
    System.out.print(" 输入期末上机:");
    if((s = read.readLine()) != null && s.length() != 0)
    {

       try
       {
          midsemesterGrade = Float.valueOf(s);
          student.setMidsemesterGrade(midsemesterGrade);
       }
       catch(Exception e)
       {
      System.out.println("please input the exactitude code:");

       }
    }
    else
    {
    System.out.println("please input the exactitude code:");
    break;
    }

    //读入期末上机
    System.out.print(" 输入期末上机:");
    if((s = read.readLine()) != null && s.length() != 0)
    {

       try
       {
          finalOnComputer = Float.valueOf(s);
          student.setFinalOnComputer(finalOnComputer);
       }
       catch(Exception e)
       {
      System.out.println("please input the exactitude finalOnComputer:");

       }
    }
    else
    {
    System.out.println("please input the exactitude finalOnComputer:");
    break;
    }


    //读入期末成绩
    System.out.print(" 输入期末成绩:");
    if((s = read.readLine()) != null && s.length() != 0)
    {

       try
       {
          endsemesterGrade = Float.valueOf(s);
          student.setEndsemesterGrade(endsemesterGrade);
       }
       catch(Exception e)
       {
      System.out.println("please input the exactitude endsemesterGrade:");

       }
    }
    else
    {
    System.out.println("please input the exactitude endsemesterGrade:");
    break;
    }

    float total = endsemesterGrade + finalOnComputer + midsemesterGrade + peacetimeGrade;
    student.setComeOutGrade(total);
    list.add(student);
    System.out.println(((Student)list.get(0)).getCode());
    ++number;
    }

    }

    public static void sort()
    {
    Student flag1 = null;//用来做总评成绩大小比较
    Student flag2 = null;
    int sortFlag1 = 0;//用来做排序标示
    int sortFlag2 = 0;
    for( ; sortFlag1<=number-2 ; sortFlag1++)
       for(; sortFlag2<number-2-sortFlag1 ; sortFlag2++)
       {
             flag1 = (Student)list.get(sortFlag2);
             flag2 = (Student)list.get(sortFlag2+1);
             if(flag1.getComeOutGrade() > flag2.getComeOutGrade())
             {
             
                 list.set(sortFlag2,flag2);
                 list.set(sortFlag2+1,flag1);
             }
       }
    }

    public static void printResult()
    {
    float peacetimeGradeTotal = 0;
    float midsemesterGradeTotal = 0;
    float finalOnComputerTotal = 0 ;
    float endsemesterGradeTotal = 0;
    System.out.println(" 学号    平时成绩      期中成绩    期末上机        期末笔试   总成绩");
    if(number>2)
    {

        sort();
        for(int i=number-2;i>=0;i--)
        {
         student = (Student)list.get(i);
     peacetimeGradeTotal += student.getPeacetimeGrade();
     midsemesterGradeTotal += student.getMidsemesterGrade();
     finalOnComputerTotal += student.getFinalOnComputer();
     endsemesterGradeTotal += student.getEndsemesterGrade();

    System.out.println(" "+student.getCode() +"       "+ student.getPeacetimeGrade() +"         "+
            student.getMidsemesterGrade() +"         "+ student.getFinalOnComputer() + "         "+ student.getEndsemesterGrade() +"      "+student.getComeOutGrade());
            
           
        }
        System.out.println("平均成绩:" +peacetimeGradeTotal/(number-1) +"    " +midsemesterGradeTotal/(number-1) +"    "
          + finalOnComputerTotal/(number-1) +"     "+endsemesterGradeTotal/(number-1));
      
    }

    if(number==1)
    {
      student = (Student)list.get(number-1);
      System.out.println(" "+student.getCode() +"       "+ student.getPeacetimeGrade() +"         "+ student.getMidsemesterGrade() +"         "+ student.getFinalOnComputer() + "         "+ student.getEndsemesterGrade() +"      " +student.getComeOutGrade());
      System.out.println("平均成绩: " +"       "+ student.getPeacetimeGrade() +"         "+ student.getMidsemesterGrade() +"         "+ student.getFinalOnComputer() + "         "+ student.getEndsemesterGrade() +"      " +student.getComeOutGrade());
     
    }
    }

    public static void main(String[] args) throws IOException
    {
    inputAction();
    printResult();
    }
    }
      

  3.   

    9楼的方法有个缺点,总分没有计算出来的话,取平均分为零    public int getAvg() {
            avg = this.tscore / 4;
            return avg;
        }改为    public int getAvg() {
            avg = this.getTscore()  / 4;
            return avg;
        }
      

  4.   


    你错了,总成绩已经算出来赋值了,所以直接获取就行了,不需要再调用getTscore()来获取总成绩再算。
      

  5.   

    我写了一个成绩管理的程序,可以参考
    http://download.csdn.net/source/733624
      

  6.   

    利用Collection.sort()集合排序,排序对象必须实现Comparable接口:import java.util.*;public class Test1 {
    public static void main(String[] args) {
    Sort s1=new Sort(101,90,88,87,84);
    Sort s2=new Sort(102,78,60,70,75);
    Sort s3=new Sort(103,90,86,91,93);
    Sort s4=new Sort(104,50,44,36,60);
    Sort s5=new Sort(105,88,87,90,92);
    Sort s6=new Sort(106,64,72,70,80);
    Sort s7=new Sort(107,60,61,55,55);
    Sort s8=new Sort(108,81,84,83,87);
    List list=new ArrayList();
    list.add(s1);
    list.add(s2);
    list.add(s3);
    list.add(s4);
    list.add(s5);
    list.add(s6);
    list.add(s7);
    list.add(s8);

    Collections.sort(list);  //对list进行排序

    for(int i=list.size()-1;i>=0;i--){
    Sort sort=(Sort) list.get(i);
    System.out.println(sort.getSno()+"\t"+sort.getUsore()+"\t"+sort.getMsore()+"\t"+sort.getEsore()+"\t"+sort.getWsore()+"\t"+sort.getSum()+"\t"+sort.getAvg());
    }

    }
    }class Sort implements Comparable {
    int sno; int usore; int msore; int esore;

    int wsore; int sum; float avg;

    Sort(int sno, int usore, int msore, int esore,int wsore) {
    this.sno = sno;
    this.usore = usore;
    this.msore = msore;
    this.esore = esore;
    this.wsore=wsore;
    } public float getAvg() {
    this.avg=((float)this.getSum())/4;
    return this.avg;
    } public int getEsore() {
    return esore;
    } public int getMsore() {
    return msore;
    } public int getSno() {
    return sno;
    } public int getSum() {
    this.sum=this.getUsore()+this.getMsore()+this.getEsore()+this.getWsore();
    return this.sum;
    } public int getUsore() {
    return usore;
    } public int getWsore() {
    return wsore;
    }
    public int compareTo(Object o) {
    // TODO 自动生成方法存根
    Sort s=(Sort)o;
    return this.getSum()>s.getSum()?1:(this.getSum()==s.getSum()?0:-1);
    //return this.getSno()>s.getSno()?1:(this.getSno()==s.getSno()?0:-1);
    //return this.getUsore()>s.getUsore()?1:(this.getUsore()==s.getUsore()?0:-1);
    }
    }
      

  7.   

    200人高级Java QQ群:58661675 欢迎大家加入。