黑马程序员技术交流社区

标题: 一个集合的综合题 [打印本页]

作者: 黑夜中那颗星    时间: 2015-10-17 11:49
标题: 一个集合的综合题
不用数据库,用几个比如学生类,排序类,查询类实现学生的数学,语文成绩的录入排序和查询。输入类似这种
stu.add(new Student("张1",95.0f,90.0f)) ;
stu.add(new Student("张2",94.0f,70.0f)) ;
  stu.add(new Student("张3",93.0f,54.0f)) ;
          stu.add(new Student("张4",92.0f,78.0f)) ;
          stu.add(new Student("张5",91.0f,90.0f)) ;
作者: 黑夜中那颗星    时间: 2015-10-17 11:56
这是我写的,希望大神给点意见
  1. import java.util.*;
  2. import java.util.Scanner;
  3. public class Test {
  4.        
  5.         public static final Scanner s = new Scanner(System.in);
  6.        
  7.         public static void main(String[] args) {
  8.                 ArrayList<Student> al = new ArrayList<Student>();
  9.                 home(al);
  10.         }
  11.        
  12.         public static void home(List<Student> list){
  13.                 while(true){
  14.                         System.out.println("1.录入学生信息     2.查询学生信息     3.删除学生信息     4.退出\n输入数字选择:");
  15.                         int num = s.nextInt();
  16.                         switch(num){
  17.                                 case 1:
  18.                                         inputInfo(list);
  19.                                         break;
  20.                                 case 2:
  21.                                         findInfo(list);
  22.                                         break;
  23.                                 case 3:
  24.                                         remove(list);
  25.                                         break;
  26.                                 case 4:
  27.                                         return;
  28.                         }
  29.                        
  30.                 }
  31.                
  32.         }
  33.         public static void findInfo(List<Student> list){        //查询信息
  34.                 System.out.println("1.升序     2.降序      3.返回\n输入数字选择查询方式(两科的总分):");
  35.                 int num = 0;
  36.                 while(true){
  37.                         num = s.nextInt();
  38.                         if(num==1){        //升序
  39.                                 Collections.sort(list,new Comparator<Student>(){
  40.                                         public int compare(Student s1, Student s2) {
  41.                                                 int n = new Integer(s1.getChinese()+s1.getMath()).compareTo(new Integer(s2.getChinese()+s2.getMath()));
  42.                                                 if(n==0)
  43.                                                         return s1.getName().compareTo(s2.getName());
  44.                                                 return n;
  45.                                         }
  46.                                 });
  47.                                 printAll(list);
  48.                         }
  49.                         else if(num==2){        //降序
  50.                                 Collections.sort(list,new Comparator<Student>(){
  51.                                         public int compare(Student s1, Student s2) {
  52.                                                 int n = new Integer(s2.getChinese()+s2.getMath()).compareTo(new Integer(s1.getChinese()+s1.getMath()));
  53.                                                 if(n==0)
  54.                                                         return s2.getName().compareTo(s1.getName());
  55.                                                 return n;
  56.                                         }
  57.                                 });
  58.                                 printAll(list);
  59.                         }
  60.                         else if(num==3)
  61.                                 break;
  62.                         else
  63.                                 System.out.println("输入错误,重新输入:");
  64.                 }
  65.                 return;
  66.         }
  67.         public static void remove(List<Student> list){        //删除信息
  68.                 System.out.print("输入需要删除的姓名:");
  69.                 String name = s.next();
  70.                 Iterator<Student> it = list.listIterator();
  71.                 boolean flag = false;
  72.                 while(it.hasNext()){
  73.                         Student str = it.next();
  74.                         if(name.equals(str.getName())){
  75.                                 it.remove();
  76.                                 flag = true;
  77.                         }
  78.                 }
  79.                 if(flag)
  80.                         System.out.println(name+" 删除成功!");
  81.                 else
  82.                         System.out.println("删除失败,未找到该名字!");
  83.                 System.out.println("1.继续     2.返回\n输入数字选择:");
  84.                 while(true){
  85.                         int num = s.nextInt();
  86.                         if(num==1){
  87.                                 remove(list);
  88.                                 return;
  89.                         }
  90.                         else if(num==2)
  91.                                 break;
  92.                         else
  93.                                 System.out.println("输入错误,重新输入:");
  94.                 }
  95.                 return;
  96.         }
  97.         public static void printAll(List<Student> list){
  98.                 int num = 1;
  99.                 System.out.println("--------------(查询)----------------");
  100.                 if(list.size()>0)
  101.                         for(Student stu:list){
  102.                                 System.out.println(num++ +".姓名:"+stu.getName()+"|语文成绩:"+stu.getChinese()+"|数学成绩:"+stu.getMath()+"---|总分:"+(stu.getChinese()+stu.getMath()));
  103.                         }
  104.                 else
  105.                         System.out.println("没有学生信息!");
  106.                 System.out.println("-----------------------------------");
  107.         }
  108.         public static void inputInfo(List<Student> list){        //输入信息
  109.                 System.out.println("输入学生姓名:");
  110.                 String name = s.next();
  111.                 System.out.println("输入数学成绩:");
  112.                 int Math = s.nextInt();
  113.                 System.out.println("输入语文成绩:");
  114.                 int chinese = s.nextInt();
  115.                 list.add(new Student(name,Math,chinese));
  116.                 System.out.println("1.返回     2.继续录入\n输入数字选择:");
  117.                 while(true){
  118.                         int num = s.nextInt();
  119.                         if(num==1)
  120.                                 break;
  121.                         else if(num==2){
  122.                                 inputInfo(list);
  123.                                 return;
  124.                         }
  125.                         else
  126.                                 System.out.println("输入错误,重新输入:");
  127.                 }
  128.                 return;
  129.         }
  130. }
  131. class Student{
  132.         private String name;
  133.         private int chinese;
  134.         private int math;
  135.         Student(String name,int math,int chinese){
  136.                 this.name = name;
  137.                 this.chinese = chinese;
  138.                 this.math = math;
  139.         }
  140.         public String  getName(){
  141.                 return name;
  142.         }
  143.         public int getChinese(){
  144.                 return chinese;
  145.         }
  146.         public int getMath(){
  147.                 return math;
  148.         }
  149. }
复制代码

作者: shoresmile    时间: 2015-10-17 12:15
加油加油加油
作者: 黑夜中那颗星    时间: 2015-10-19 11:57
shoresmile 发表于 2015-10-17 12:15
加油加油加油

一起加油




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2