设计要求:
建立一个学生类,有姓名、学号、3门课成绩、总分等信息,能输入输出学生数据,并能对总分进行排序,打印名 次。
思路:老师给的思路全部都封装在了一个类中,我写的则分成了两个类,可能一些方法没有写成函数封装,但是觉得习惯而已,有些一句话的程序没必要也放到函数里。
吐槽:上一次做的在电脑里存着忘记带了,今天上机又重新敲了一遍,真是浪费时间,最讨厌重复了,但是有没有办法。写完冒泡排序,感觉自己的水平在火星了,,醉了,java太水了。
mycode:
import java.io.*;
import java.util.*;
import java.math.*;
class student
{
String name,id;
double js,cs,ds,sum;
int rank;
student(String ii,String nn,double jj,double cc,double dd)
{
name=nn;
id=ii;
js=jj;
cs=cc;
ds=dd;
sum=js+cs+ds;
}
student ()
{
this("","",0,0,0);
}
public void sort(int n,student v[])
{
student t;
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
if(v[i].sum<v[j].sum)
{t=v[i];v[i]=v[j];v[j]=t;}
}
int len=1;v[1].rank=1;
for (int i=2;i<=n;i++)
{
if (v[i].sum!=v[i-1].sum) len++;
v[i].rank=len;
}
}
void pt()
{
System.out.println("学生姓名: "+name);
System.out.println("学生学号: "+id);
System.out.println("学生排名: "+rank);
System.out.println("学生总分: "+sum);
}
}
public class studenttable
{
public static void main(String args[])
{
Scanner cin=new Scanner(System.in);
System.out.println("请输入要输入的人数:");
int n=cin.nextInt();
student v[]=new student[n+1];
student q=new student();
for (int i=1;i<=n;i++)
{
System.out.println("请依次输入学号,姓名,三科成绩:");
String ii=cin.next();
String nn=cin.next();
double jj=cin.nextDouble();
double cc=cin.nextDouble();
double dd=cin.nextDouble();
v[i]=new student(ii,nn,jj,cc,dd);
}
q.sort(n,v);
for (int i=1;i<=n;i++)
{v[i].pt();System.out.println("");}
}
}
/*
4
001 a 80 80 75
002 b 90 90 70
003 c 90 83 92
004 d 85 70 80
*/
class Student
{
private String no,name ;
private double java,math,eng,total;
protected int order;
public Student() { }
public Student(String s1, String s2,double j,double m,double e)
{
no= s1;
name = s2;
java=j;
math=m;
eng=e;
total=java+math+eng;
}
public double getTotal()
{ return total; }
public void print(int n,Student stu[])
{
System.out.println("名次\t学号\t姓名\t数学\tJAVA\t英语\t总分");
for(int i=0;i<n;i++)
System.out.println(stu[i].order+"\t"+stu[i].no+"\t"+stu[i].name+"\t"+stu[i].java+"\t"+stu[i].math+"\t"+stu[i].eng+"\t"+stu[i].total+"\t");
}
public void sort(int n,Student stu[])
{
Student t;
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
if(stu[i].getTotal()<stu[j].getTotal())
{t=stu[i];stu[i]=stu[j];stu[j]=t; }
}
}
public void setOrder(int n,Student stu[])
{ stu[0].order=1;
for(int i=1;i<n;i++)
{
if(stu[i].getTotal()<stu[i-1].getTotal())
stu[i].order=stu[i-1].order+1;
else if (stu[i].getTotal()==stu[i-1].getTotal())
stu[i].order=stu[i-1].order;
}
}
public static void main(String args[])
{
Student s[]=new Student[10];
Student q=new Student();
int n=3;
s[0]=new Student("001","a",80,80,75);
s[1]=new Student("002","b",90,90,70);
s[2]=new Student("003","c",90,83,92);
q.sort(3,s);
q.setOrder(3,s);
q.print(3,s);
System.out.println();
}
}
版权声明:本文为bobodem原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。