| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2158 人关注过本帖, 1 人收藏
标题:用java编一个学生成绩排序成绩 有学生的姓名 学号 三门课的成绩 然后对总分 ...
只看楼主 加入收藏
woxingx
Rank: 2
等 级:论坛游民
帖 子:46
专家分:68
注 册:2012-11-8
结帖率:100%
收藏(1)
已结贴  问题点数:50 回复次数:8 
用java编一个学生成绩排序成绩 有学生的姓名 学号 三门课的成绩 然后对总分排序
import java.util.*;

public class student
{
    class Node
    {
         public String name ;
         public String ID;
         public int java ;
         public int os;
         public int PE;
         public int total;
    }
   public  Node data;
    public student next;
    public student creat()
    {
        student head,p,r,s1;
        int x1,x2,x3,x4;
        String n,i;
        head=r=null;
        System.out.print("请输入学生的姓名  学号   java成绩    os成绩     Internet 成绩");
       System.out.print("请输入一个x整形数据以0结束:");
        Scanner c= new Scanner(System.in);
        n=c.nextLine();
        Scanner c0= new Scanner(System.in);
        i=c0.nextLine();
        Scanner c1= new Scanner(System.in);
        x1=c1.nextInt();
        Scanner c2= new Scanner(System.in);
        x2=c2.nextInt();
        Scanner c3= new Scanner(System.in);
        x3=c3.nextInt();
        
        while (x1!=0)
        {
            student s11=new student();
            s11.data.name=n;
            s11.data.ID=i;
            s11.data.java=x1;
            s11.data.os=x2;
            s11.data.PE=x3;
            s11.data.total=s11.data.java+s11.data.os+s11.data.PE;
            if(head==null)
                head=s11;
            else
                r.next=s11;
               
            r=s11;
            Scanner b= new Scanner(System.in);
            n=b.nextLine();
            Scanner b0= new Scanner(System.in);
            i=b0.nextLine();
            Scanner b1= new Scanner(System.in);
            x1=b1.nextInt();
            Scanner b2= new Scanner(System.in);
            x2=b2.nextInt();
            Scanner b3= new Scanner(System.in);
            x3=b3.nextInt();
        }
        if(r!=null)
            r.next=null;
        return head;
    }
    public void out(student head)
    {
        student p;
        p=head;
        System.out.print("List is:");
        while(p!=null)
        {
            System.out.println("\t"+p.data.name+"\t"+p.data.ID+"\t"+p.data.java+"\t"+p.data.os+"\t"+p.data.PE+"\t"+p.data.total);
            p=p.next;
        }
    }
    public student sortup(student head)
    {
        student p=head,pre=null,s=null,q=null;
           head.next=null;
           while(p!=null)
           {
               s=p;
               p=p.next;
               pre=head;
               q=head.next;
               while(q!=null && q.data.total<s.data.total)
               {
                   pre=q;
                   q=q.next;
               }
               s.next=q;
               pre.next=s;
           }
        return head;
    }
    public student sortdown(student head)
    {
        student p=head,pre=null,s=null,q=null;
           head.next=null;
           while(p!=null)
           {
               s=p;
               p=p.next;
               pre=head;
               q=head.next;
               while(q!=null && q.data.total<s.data.total)
               {
                   pre=q;
                   q=q.next;
               }
               s.next=q;
               pre.next=s;
           }
        return head;
    }
    public static void main(String[] args) {
        student x,y;
        student a=new student();
        x=a.creat();
        a.out(x);
        a.sortdown(x);
        a.out(x);
        a.sortup(x);
        a.out(x);
        
    }
}
我是一个java初学者  我们老师布置了一个实验  用java编一个学生成绩管理的一个小程序 (学生人数为10人)
 要求:输入姓名  学号  三门课的成绩  计算总成绩  然后对这10个学生的总成绩排序  我编了一个但是行不通 我是按c语言  链表的思想来用java做的  不知道那出了问题  求各位大侠不胜赐教  帮我把它该对  谢谢 !小女子不胜感激  !!!  4.30之前就要交 希望大侠们.。。。
搜索更多相关主题的帖子: java 学生 public import null 
2013-04-27 02:58
hhwz
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:87
帖 子:687
专家分:4502
注 册:2011-5-22
收藏
得分:35 
程序代码:
/**
定义一个学生的实体类
*/
public class Student {
    private String name;
    private String ID;
    private int java = 0;
    private int os = 0;
    private int PE = 0;
    private int total = 0;

    public Student() {

    }

    public Student(String name,String ID,int java, int os, int PE) {
        this.name = name;
                this.ID = ID;
                this.java = java;
        this.os = os;
        this.PE = PE;
        this.total = java + os + PE;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getID() {
        return ID;
    }

    public void setID(String iD) {
        ID = iD;
    }

    public int getJava() {
        return java;
    }

    public void setJava(int java) {
        this.java = java;
    }

    public int getOs() {
        return os;
    }

    public void setOs(int os) {
        this.os = os;
    }

    public int getPE() {
        return PE;
    }

    public void setPE(int pE) {
        PE = pE;
    }

    public int getTotal() {
        return total;
    }

    public void setTotal(int total) {
        this.total = total;
    }
    public void out(){
        System.out.println("\t"+this.getJava()+"\t"+this.getOs()+"\t"+this.getPE()+"\t"+this.getTotal());
    }
}

---  下面是 运行方法 ----
public static void main(String[] args) {

                /**ArrayList需要通过collections类的sort方法来进行排序
                  如果想自定义排序方式则需要有类来实现Comparator接口并重写compare方法

                  调用sort方法时将ArrayList对象与实现Commparator接口的类的对象作为参数**/

        Comparator<Student> comparator = new Comparator<Student>() {
            public int compare(Student s1, Student s2) {

                return s2.getTotal()-s1.getTotal() ;
//s2.getTotal()-s1.getTotal()倒序 //s1.getTotal()-s2.getTotal()顺序

            }
        };
        ArrayList<Student> list = new ArrayList<Student>();
        for (int i = 0; i <= 2; i++) {
            Scanner scan = new Scanner(System.in);
            System.out.println("请输入学生的姓名  学号   java成绩    os成绩     Internet 成绩");
            Student s = new Student(scan.next(),scan.next(),scan.nextInt(), scan.nextInt(),
                    scan.nextInt());
            list.add(s);
        }
        Collections.sort(list,comparator);
        for (Student stu : list) {
            stu.out();
        }

    }
2013-04-27 13:05
woxingx
Rank: 2
等 级:论坛游民
帖 子:46
专家分:68
注 册:2012-11-8
收藏
得分:0 
谢谢
2013-04-27 13:38
woxingx
Rank: 2
等 级:论坛游民
帖 子:46
专家分:68
注 册:2012-11-8
收藏
得分:0 
非常感谢你给我的解答  有些地方我看不怎么懂  再次向你请教
为什么每一个Student的类的每一个属性都有   return xx  ,this.xx=xx 呢?是什么含义
 public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
2013-04-27 13:51
xioun
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:68
专家分:309
注 册:2013-4-8
收藏
得分:15 
这个是实体类属性的set和get方法!设置值用set获取值用get。

命若天定,我就破了这个天!
2013-04-27 13:54
hhwz
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:87
帖 子:687
专家分:4502
注 册:2011-5-22
收藏
得分:0 
我定义的属性是private
只能提供一个外部的获取方法才能 获取和修改
2013-04-27 15:37
星112
Rank: 5Rank: 5
来 自:山西朔州
等 级:职业侠客
威 望:2
帖 子:94
专家分:342
注 册:2012-6-22
收藏
得分:0 
楼上的小程序写的合理,就是此程序不需要它的set get方法,没有涉及到实体注入,同时建议初学者将实体类和主方法分开写,逐渐培养良好的封装思想
2013-04-27 16:05
arslan
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-5-3
收藏
得分:0 
2013-05-03 00:41
littleR
Rank: 2
等 级:论坛游民
威 望:1
帖 子:13
专家分:50
注 册:2013-5-6
收藏
得分:0 
厉害,没想到用这个
 Comparator<Student> comparator = new Comparator<Student>() {
            public int compare(Student s1, Student s2) {

                return s2.getTotal()-s1.getTotal() ;
//s2.getTotal()-s1.getTotal()倒序 //s1.getTotal()-s2.getTotal()顺序

            }
        };

相信,一定可以
2013-05-06 18:42
快速回复:用java编一个学生成绩排序成绩 有学生的姓名 学号 三门课的成绩 然后 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.049176 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved