手记

第四章set方法,对学生选课进行增、删、改

有两个类,课程类和学生类。在学生类中定义一个Set表,用来保存选择的课程。代码如下:
课程类:

public class Course {
    public int id;
    public String name;
    public Course(int id,String name){
        this.id = id;
        this.name = name;
    }
    public Course(){    
    }
}

学生类:

import java.util.HashSet;
import java.util.Set;
public class Student {
    public int number;
    public String name;
    public Set<Course> SelectCourse ;
    //SelectCourse里面存放的是学生选择的课程信息
    public Student(int number,String name){
        this.number = number;
        this.name = name;
        this.SelectCourse = new HashSet<Course>();
    }
    public Student(){       
    }
}

主类SetTest

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
public class SetTest {
    public static List<Course> listCourse ;

    public SetTest(){
        listCourse =  new ArrayList<Course>();
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        SetTest ST = new SetTest();
        ST.AddDatelist();       
        ST.ShowList();      
        Student stu = new Student(1,"Toms");

        Scanner inputs = new Scanner(System.in);
        System.out.println("欢迎学生"+stu.name+"来选课");
        for(int i=0;i<3;++i){
            System.out.println("请输入选择课程的ID:");
            int SelectId = inputs.nextInt();
            for (Object temp1 : listCourse) {
                Course temp = (Course)temp1;
                if(SelectId==temp.id){    //若要选择的课程在课程表中存在,则加入到学生的课程中去
                    stu.SelectCourse.add(temp);
                    break;
                }               
            }
        }
        ST.showStudentCourse(stu);      
//      ST.AddStudentCourse();

    }

    public void showStudentCourse(Student st){      
        System.out.println("学生:"+st.name+"选择了"+st.SelectCourse.size()+"门课。");
        for(Course cs : st.SelectCourse){
            System.out.println("课程号:"+cs.id+",课程名:"+cs.name);
        }       
    }

/**
 * 函数AddDateList的作用是往list数组Course中添加课程信息
 * 
 */
    public void AddDatelist(){
        Course cr = new Course(1,"语文");
        listCourse.add(cr);
        Course cr2 = new Course(2,"数学");
        listCourse.add(0,cr2);
        Course[] crs = {new Course(3,"英语"),new Course(4,"历史"),new Course(5,"政治")};
        listCourse.addAll(Arrays.asList(crs));

    }

/**
 *  函数ShowList的作业是显示课程数组Course的信息
 */
    public void ShowList(){
//      for(Course temp : listCourse){    //可能的出错点
        for(Object temp1 : listCourse){
            Course temp = (Course)temp1;
            System.out.println(temp.id+":"+temp.name);
        }
    }

/**
 *  AddStudentCourse是为学生类添加课程信息
 */

/*
 *  AddStudentCourse,本类的目的是为学生添加课程,并显示课程。但是运行时,总是会出现指针异常!暂时未找出解决方案。
 */
    public void AddStudentCourse(){
        Student student = new Student();
//      SetTest STest = new SetTest();
        student.name = "小明";
        student.number = 942;
        System.out.println("***欢迎"+student.name+"同学来到选课系统");
        System.out.println("**可选择的书如下所示:");
        this.AddDatelist();
        this.ShowList();  //显示书单信息
//      System.out.println("");
        System.out.println("**你需要选择四门课");
        Scanner inputnumber = new Scanner(System.in); 
//      int number;
        for(int i=0;i<4;++i){
            System.out.println("**请输入课程号:");
            int number= inputnumber.nextInt();
            for(int j=0;j<listCourse.size();j++){
//          for(Object temp1 : listCourse){  //判断所选序号是不是在书单里面
                Course temp = (Course)listCourse.get(i);
                if(number==temp.id){
                    student.SelectCourse.add(temp);
                    break;
                }
            }
        }
        System.out.println("**你选择的书单为:");
        System.out.println(student.SelectCourse.size());
//      Course stu = new Course(1,"");
        for( Object stu1 : student.SelectCourse){
            Course stu = (Course)stu1;
            System.out.println(stu.id+":"+stu.name);
        }   
    }
}

在SetTest中给学生添加课程时,原本想使用下面的AddStudentCourse()来为学生添加课程,但是运行时总是异常,指针异常,所以最后换了一种方式,没有调用AddStudentCourse()来为学生添加课程。

3人推荐
随时随地看视频
慕课网APP