//student.java
package com.sran.www;
import java.util.Arrays;
import java.util.Scanner;
public class Student implements Comparable<Student>{
int num;
String name;
int age;
double[]s;
double sum; //存储学生的总分
public Student()
{
s=new double[3];
}
public static boolean insert()
{
Scanner sc=new Scanner(System.in);
String str=null;
boolean be=true;
do
{
Student stud=new Student();
System.out.println("开始录入学生的相关信息.....");
System.out.print("学号:");
stud.num=sc.nextInt();
System.out.print("姓名:");
stud.name=sc.next();
System.out.print("年龄:");
stud.age=sc.nextInt();
System.out.println("依次输入三门课的成绩:");
System.out.print("语文:");
stud.s[0]=sc.nextDouble();
System.out.print("数学:");
stud.s[1]=sc.nextDouble();
System.out.print("英语:");
stud.s[2]=sc.nextDouble();
stud.sum=stud.calculate_sum();
StudentTest.set.add(stud);
System.out.println("如果继续录入,则输入%,否则输入 #");
System.out.print("请输入:");
str=sc.next();
if(!(str.equals("%")||str.equals("#")))
{
be=false;
System.out.println("你输入有误,已强制结束录入操作");
}
}while(str.equals("%") && be);
return be;
}
public static boolean delete()
{
String str=null;
boolean be=true;
System.out.println("开始删除学生的相关信息.....");
do
{
System.out.print("请输入要删除的学生的学号:");
Scanner sc=new Scanner(System.in);
int s=sc.nextInt();
boolean flag=false; //设一标志位
for(Student stud:StudentTest.set)
{
if(s==stud.num)
{
StudentTest.set.remove(stud);
flag=true;
System.out.println("已删除该学生的信息");
break;
}
}
if(flag==false)
{
System.out.println("你要删除的学生的学号不存在");
}
System.out.println("如果继续删除,则输入 %,否则输入#");
System.out.print("请输入:");
str=sc.next();
if(!(str.equals("%")||str.equals("#")))
{
be=false;
System.out.println("你输入有误,已强制结束删除操作");
}
}while(str.equals("%") && be);
return be;
}
public static boolean seek()
{
String str=null;
boolean be=true;
System.out.println("开始查找学生的相关信息.....");
do
{
System.out.print("请输入要查找的学生的学号:");
Scanner sc=new Scanner(System.in);
int s=sc.nextInt();
boolean flag=false;
for(Student stud:StudentTest.set)
{
if(s==stud.num)
{
flag=true; //修改标志位
System.out.println("你要查找的学生的信息:");
System.out.println("学号:"+stud.num);
System.out.println("姓名:"+stud.name);
System.out.println("年龄:"+stud.age);
System.out.println("语文成绩:"+stud.s[0]);
System.out.println("数学成绩:"+stud.s[1]);
System.out.println("英语成绩:"+stud.s[2]);
break;
}
}
if(flag==false)
{
System.out.println("你要查找的学生的学号不存在");
}
System.out.println("如果继续查找,则输入 %,否则输入#");
System.out.print("请输入:");
str=sc.next();
if(!(str.equals("%")||str.equals("#")))
{
be=false;
System.out.println("你输入的有误,已强制结束查询操作");
}
}while(str.equals("%") && be);
return be;
}
public double calculate_sum()
{
sum=s[0]+s[1]+s[2];
return sum;
}
@Override
public int compareTo(Student stud) {
this.sum=this.calculate_sum();
stud.sum=stud.calculate_sum();
if(this.sum>stud.sum) return -1;
else if(this.sum<stud.sum) return 1;
else
{
if(this.name.compareTo(stud.name)>0) return -1;
else if(this.name.compareTo(stud.name)<0) return 1;
else
return 0;
}
}
public String toString()
{
System.out.println("学号"+"\t\t"+"姓名"+"\t\t"+"年龄"+"\t\t"+"语文"+"\t\t"+"数学"+"\t\t"+"英语"+"\t\t"+"总分");
return(num+"\t\t"+name+"\t\t"+age+"\t\t"+s[0]+"\t\t"+s[1]+"\t\t"+s[2]+"\t\t"+sum);
}
public static boolean update()
{
String str=null;
boolean bot=true;
System.out.println("开始更新学生信息.....");
do
{
System.out.print("请输入要更新的学生的学号:");
Scanner sc=new Scanner(System.in);
int s=sc.nextInt();
boolean be=false;
boolean br=false;
for(Student stud:StudentTest.set)
{
if(stud.num==s)
{
be=true; //修改标志位
System.out.println("请输入要更新的哪一项: 其中1代表学号,2代表姓名,3代表年龄,4代表语文成绩,5代表数学成绩,6代表英语成绩");
System.out.print("请输入:");
int n=sc.nextInt();
switch(n)
{
case 1:
{
System.out.print("请输入修改后的学号:");
stud.num=sc.nextInt();
System.out.println("修改成功");
break;
}
case 2:
{
System.out.print("请输入修改后的姓名:");
stud.name=sc.next();
System.out.println("修改成功");
break;
}
case 3:
{
System.out.print("请输入修改后的年龄:");
stud.age=sc.nextInt();
System.out.println("修改成功");
break;
}
case 4:
{
System.out.print("请输入修改后的语文成绩:");
stud.s[0]=sc.nextDouble();
System.out.println("修改成功");
stud.sum=stud.calculate_sum(); //重新更新总分
br=true;
break;
}
case 5:
{
System.out.print("请输入修改后的数学成绩:");
stud.s[1]=sc.nextDouble();
System.out.println("修改成功");
stud.sum=stud.calculate_sum(); //重新更新总分
br=true;
break;
}
case 6:
{
System.out.print("请输入修改后的英语成绩:");
stud.s[2]=sc.nextDouble();
System.out.println("修改成功");
stud.sum=stud.calculate_sum(); //重新更新总分
br=true;
break;
}
}
}
}
if(br==true)
{
Object[]obj=StudentTest.set.toArray();
Arrays.sort(obj);
StudentTest.set.clear();
for(int i=0;i<obj.length;i++)
{
Student st=(Student)obj[i];
StudentTest.set.add(st);
}
}
if(be==false)
{
System.out.println("你要修改的学生的学号不存在");
}
System.out.println("如果继续修改,则输入 %,否则输入#");
System.out.print("请输入:");
str=sc.next();
if(!(str.equals("%")||str.equals("#")))
{
bot=false;
System.out.println("你输入有误,已强制结束更新操作");
}
}while(str.equals("%") && bot);
return bot;
}
}
//StudentTest
package com.sran.www;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;
public class StudentTest {
static Set<Student>set=null; //定义集合,存储学生信息
public void fun()
{
int i;
boolean b,bt;
set=new TreeSet<Student>();
do{
int flag=0;
System.out.println("请输入1,2,3,4,5 1代表录入,2代表删除,3代表查找,4代表显示学生总成绩排名,5代表更新某个学生数据");
System.out.print("请输入:");
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
switch(n)
{
case 1:
{
b=Student.insert();
if(b==true)
{
System.out.println("正常结束录入操作.....");
}
flag=1;
break;
}
case 2:
{
b=Student.delete();
if(b==true)
{
System.out.println("正常结束删除操作.....");
}
flag=1;
break;
}
case 3:
{
b=Student.seek();
if(b==true)
{
System.out.println("正常结束查询操作.....");
}
flag=1;
break;
}
case 4:
{
System.out.println("开始排名学生信息.....");
System.out.println("学生按总成绩排名:");
for(Student stud:set)
{
System.out.println(stud);
System.out.println();
}
System.out.println("正常结束排名操作.....");
flag=1;
break;
}
case 5:
{
b=Student.update();
if(b==true)
{
System.out.println("正常结束更新操作.....");
}
flag=1;
break;
}
}
if(flag==0)
{
System.out.println("你输入有误,请重新输入");
}
System.out.println();
do
{
bt=false;
System.out.println("继续所有学生信息操作,请输入1 退出学生信息系统 ,请输入0");
System.out.print("请输入:");
i=sc.nextInt();
if(i!=1 && i!=0)
{
bt=true;
System.out.println("输入有误,请重新输入");
}
}while(bt==true);
}while(i==1);
System.out.println("你已退出学生信息系统.....");
}
public static void main(String[] args) {
new StudentTest().fun();
}
}