java 设计作业——学生类的基本练习

这篇博客分享了作者根据设计要求实现学生类的编程作业。作者将老师提供的整体思路拆分为两个类来实现,并表达了对重复编写代码的不满,以及完成冒泡排序后的自我评价。虽然认为Java相对简单,但还是详细地提供了代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设计要求:

建立一个学生类,有姓名、学号、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
*/


myteacher  code:

 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();
    }
	
}



1. 输出50—100间的所有素数,其中判断一个数是否为素数用函数完成。 2. 设计一个学生成绩管理系统,能输入学生学号姓名成绩等数据,能按成绩从高到低进行排序,并能将排序的结果输出。 提示: 设计一个学生student,包含三个私有数据成员,即学号sno、姓名sname成员score; 在学生student中再设计三个方法 setdata、displaygetscore,分别用于完成输入学生信息、输出学生信息、返回某个学生成绩的功能; 定义一个manage,它有一个student型的私有数据成员s[num],其中num表示学生人数; 在manage中分别定义三个方法input、output、sort,分别用于完成输入、输出排序功能。 3.一个电子产品商店里卖各种电子产品,以下是几种产品信息。 产品Product 的属性信息包括: 产品号(number) 种(category) 名称(name) 价格(price ) 计算机Computer除具有产品基本信息外,还可能具有下面的属性: 内存(memory) 处理器(processorName)   笔记本电脑Laptop 除具有产品基本信息外,还可能具有下面的属性: 厚度(thickness) 重量(weight) 根据以上信息,首先抽象出Product,它派生出子Computer,Computer又派生出它的子Laptop,实现以上三个的定义,定义相应的构造方法,声明一个测试,生成对象,并把打印结果显示在屏幕上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值