黑马程序员技术交流社区

标题: 学生管理系统 数组和集合分别实现 [打印本页]

作者: lixunwen    时间: 2015-5-24 14:39
标题: 学生管理系统 数组和集合分别实现
package it.cast_01;
/**
* 这是一个学生类基本信息
* @author
* @version V1.0
*/
public class Student {
                 /**姓名*/
        private String name;
                /**语文成绩*/
        private int chinese;
                /**数学成绩*/
        private int math;
                /**英语成绩*/
        private int english;
                /**总分*/
        private int sum;
                /**平均分*/
        private int avg;
        static int i=1;
               
                /**
                 * 这是无参构造方法
                 */
                public Student() {
                        super();
                        // TODO Auto-generated constructor stub
                }


                /**
                 * @param name 姓名
                 * @param chinese 语文
                 * @param math   数学
                 * @param english  英语
                 */
                public Student(String name, int chinese, int math, int english) {
                        super();
                        this.name = name;
                        this.chinese = chinese;
                        this.math = math;
                        this.english = english;
                        sum = this.chinese+this.math+this.english;
                        avg =sum/3;
                }


                /**
                 * @return 获取姓名
                 */
                public String getName() {
                        return name;
                }

                /**
                 * @param 设置姓名
                 */
                public void setName(String name) {
                        this.name = name;
                }

                /**
                 * @return 获取语文成绩
                 */
                public int getChinese() {
                        return chinese;
                }


                /**
                 * @param 设置语文成绩
                 */
                public void setChinese(int chinese) {
                        this.chinese = chinese;
                }


                /**
                 * @return 获取数学成绩
                 */
                public int getMath() {
                        return math;
                }


                /**
                 * @param 设置数学成绩
                 */
                public void setMath(int math) {
                        this.math = math;
                }


                /**
                 * @return 获取英语成绩
                 */
                public int getEnglish() {
                        return english;
                }


                /**
                 * @param 设置英语成绩
                 */
                public void setEnglish(int english) {
                        this.english = english;
                }

                /**
                 * @param 设置总分
                 */
                /*public void  setSum() {
                        sum =chinese+math+english;
                }
*/
                /**
                 * @return 获取总分
                 */
                public int getSum() {
                        return sum =chinese+math+english;
                }

                /**
                 * @param the avg 设置平均分
                 */
        /*        public void  setAvg() {
                        avg=sum/3;
                }*/
               
                /**
                 * @return the avg 获取平均分
                 */
                public int getAvg() {
                        return avg=sum/3;
                }

                /*
                 * @param 获取一个学生的整个信息
                 */
                /*@Override
                public String toString() {
                        return name+"\t"+chinese+"\t"+math+"\t"+english+"\t"+sum+"\t"+avg+"\t"+(i++);
                }*/
}
package cn.itcast_02;

import it.cast_01.Student;

import java.util.Comparator;
import java.util.Scanner;
import java.util.TreeSet;

/**
* 这是一个学生管理系统的测试
*
* @author
* @version V1.0
*
*/
public class StudentTest {
        public static void main(String[] args) {
                // 创建集合
                TreeSet<Student> ts = new TreeSet<Student>(new Comparator<Student>() {
                        @Override
                        public int compare(Student s1, Student s2) {
                                int num1 = s1.getSum() - s2.getSum();
                                int num2 = num1 == 0 ? s1.getChinese() - s2.getChinese() : num1;
                                int num3 = num2 == 0 ? s1.getMath() - s2.getMath() : num2;
                                int num4 = num3 == 0 ? s1.getEnglish() - s2.getEnglish() : num3;
                                return -num4;
                        }
                });

                // //添加元素
                // ts.add(new Student("李四",89,78,99));
                // ts.add(new Student("王五",66,80,90));
                // ts.add(new Student("王二",79,99,99));
                // ts.add(new Student("黄振源",99,88,78));
                // ts.add(new Student("张宏文",69,97,67));
                // ts.add(new Student("文综",100,88,99));
                // 采用输入获取元素:
                Scanner sc = new Scanner(System.in);

                System.out.println("开始录入数据:");
                System.out.println("请输入总人数:");
                String s1 = sc.nextLine();
                for (int j = 1; j <= Integer.parseInt(s1); j++) {
                        System.out.println("总共有" + Integer.parseInt(s1) + "学生信息要录入");
                        System.out.println("请录入第" + j + "的姓名");
                        String name = sc.nextLine();
                        System.out.println("请录入第" + j + "的语文成绩:");
                        int chinese = Integer.parseInt(sc.nextLine());
                        System.out.println("请录入第" + j + "的数学成绩:");
                        int math = Integer.parseInt(sc.nextLine());
                        System.out.println("请录入第" + j + "的英语成绩:");
                        int english = Integer.parseInt(sc.nextLine());

                        ts.add(new Student(name, chinese, math, english));

                }

                //

                // 遍历
                int i=1;
                System.out.println("姓名" + "\t" + "语文成绩" + "\t" + "数学成绩" + "\t" + "英语成绩"
                                + "\t" + "总分" + "\t" + "平均分" + "\t" + "名次");
                for (Student s : ts) {
                        System.out.println(s.getName()+"\t"+s.getChinese()+"\t"+s.getMath()+"\t"
                       +s.getEnglish()+"\t"+s.getSum()+"\t"+s.getAvg()+"\t"+(i++));
                }

        }
}

方式二:用数组实现
      package cn.itcast_03;

import java.util.Scanner;
public class Xsgll {
    public static void main(String[] args){
            Scanner in=new Scanner(System.in);
            System.out.println("请输入学生的人数:");
            int number=in.nextInt();
            System.out.println("请输入课程数目:");
            int course=in.nextInt();
            String cname[]=new String[course];//存储课程的姓名
            String name[]=new String[number];//存储学生的姓名
            int score[][]=new int[number][course];//存储学生的各科成绩
            int zongfen[]=new int[number];//存储学生的总分
            int avg[]=new int[number];//存储学生的平均分
            String stll[]=new String[number];//存储学生的整个信息
            for(int i=0;i<course;i++)   //输入课程名
            {
                    System.out.println("请输入第"+(i+1)+"门课程名");
                    cname[i]=in.next();
                     
            }
            for(int i=0;i<number;i++){
                    System.out.println("请输入第"+(i+1)+"学生的姓名");
                        name[i]=in.next();
                        String stll1="";
                     for(int j=0;j<course;j++){
                             System.out.println("请输入"+name[i]+"的"+cname[j]+"的成绩");
                             score[i][j]=in.nextInt();
                             stll1+=score[i][j]+"\t";
                             zongfen[i]+=score[i][j];//录入总分
                             }
                     avg[i]=zongfen[i]/course;//录入平均分       
                     stll[i]=name[i]+"\t"+stll1+zongfen[i]+"\t"+avg[i];//组成字符串
            }
              for(int i=0;i<number-1;i++){
                      for(int j=i+1;j<number;j++){
                      if(zongfen[i]<zongfen[j]){
                                 int t=zongfen[i];        String  stll2=stll[i];
                                 zongfen[i]=zongfen[j];       stll[i]=stll[j];
                                 zongfen[j]=t;                stll[j]=stll2;
                      }
              }
              }
            System.out.print("姓名"+"\t"); //输出开始
            for(int i=0;i<course;i++)   //输出课程名
            {
                    System.out.print(cname[i]+"\t");
                     
            }
            System.out.print("总分"+"\t");
            System.out.print("平均分"+"\t");
            System.out.print("名次"+"\n");
            for(int i=0;i<number;i++){
                    System.out.println(stll[i]+"\t"+(i+1));
            }         
     }
}




作者: gaoer    时间: 2015-5-24 14:45
必须顶,太给力啦 ~~~~~~~~~~~~~~!
作者: zhw634631    时间: 2015-5-24 14:51
改进版,顶一个。。。。。
作者: 飘过的云    时间: 2015-5-24 14:52
好厉害的 大神  膜拜 ING
作者: 嗦嘎酱!    时间: 2015-5-24 14:57
厉害,不赞不行

作者: lixunwen    时间: 2015-5-24 14:57
飘过的云 发表于 2015-5-24 14:52
好厉害的 大神  膜拜 ING

哪有!你也可以的。二维数组主要采用字符串拼接!集合就超级简单啦!
作者: 飘过的云    时间: 2015-5-24 14:58
集合貌似 好难 的 看了 没一点印象 还头疼
作者: lixunwen    时间: 2015-5-24 15:01
飘过的云 发表于 2015-5-24 14:58
集合貌似 好难 的 看了 没一点印象 还头疼

集合是最简单的啦!只是开始比较难以理解!你要注意老师开始讲的是String 和Integer 都是特殊类型哦
自定义对象的话  针对String 你就要重写toString 方法 Integer  你就要设置你排序的规则!
作者: 飘过的云    时间: 2015-5-24 15:05
lixunwen 发表于 2015-5-24 15:01
集合是最简单的啦!只是开始比较难以理解!你要注意老师开始讲的是String 和Integer 都是特殊类型哦
自定 ...

嗯 那我今天好好搞搞 string和integer,谢谢
作者: 林思奇    时间: 2015-5-24 15:59
不愧是学霸,服了!顶个
作者: 悟心_c6R1v    时间: 2015-5-24 16:37
顶起来!什么时候能破解别人的密码的程序发给我。
作者: 重复    时间: 2015-5-25 00:18
必须赞,必须给力
作者: 青春印记深圳    时间: 2015-5-25 00:46
还可以。。。。呵呵
作者: lixunwen    时间: 2015-5-25 21:27
重复 发表于 2015-5-25 00:18
必须赞,必须给力

谢谢!一起加油!
作者: lixunwen    时间: 2015-5-25 21:28
林思奇 发表于 2015-5-24 15:59
不愧是学霸,服了!顶个

哪里哪里!一起努力!
作者: lixunwen    时间: 2015-5-25 21:30
嗦嘎酱! 发表于 2015-5-24 14:57
厉害,不赞不行

哪里哪里!革命尚未成功 同志继续努力!
作者: 东邪    时间: 2015-5-25 22:51
不错不错,理解非常深刻,我要好好向你学习!!

作者: 途中ms前进    时间: 2015-5-26 12:51
不错给力顶一个
作者: 星辉祝愿    时间: 2015-5-26 14:16
很给力,不错
作者: lixunwen    时间: 2015-5-26 21:33
星辉祝愿 发表于 2015-5-26 14:16
很给力,不错

谢谢!继续努力!
作者: zhubingg    时间: 2015-5-26 21:59
不错  加油哦!

作者: lixunwen    时间: 2015-5-27 21:20
途中ms前进 发表于 2015-5-26 12:51
不错给力顶一个

谢谢!还有改进版!
作者: lixunwen    时间: 2015-5-27 21:21
东邪 发表于 2015-5-25 22:51
不错不错,理解非常深刻,我要好好向你学习!!

相互学习!相互共勉!
作者: 嗦嘎酱!    时间: 2015-5-28 22:29
真厉害,向你学习
作者: lixunwen    时间: 2015-5-29 22:35
嗦嘎酱! 发表于 2015-5-28 22:29
真厉害,向你学习

你在哪个校区?




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