java--利用集合List和Set实现简易版学生选课系统




//创建学生类

import java.util.HashSet;
import java.util.Set;


public class student {
 String id;        //学号
 String sname;     //学生姓名
 public Set<course> courses;   //学生备选课程属性(添加泛型)
 public student(String id,String sname){
  this.id=id;
  this.sname=sname;
  this.courses=new HashSet<course>();   //初始化courses属性,将其构造为HashSet类型(实例化);
 }

}


//创建课程类
public class course {
 String id;      //课程号
 String cname;   //课程名
 public course(String id,String cname){
  this.id=id;
  this.cname=cname;
  //重写course类的构造方法,并且传入参数
}
}


//实现待选课程的Set集合类

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class SetTest {

 public List<course> coursesToSelect;
 private static Scanner scanner;
 

//初始化coursesToselect属性
 public SetTest(){
  coursesToSelect=new ArrayList<course>();
 }
 

//实现添加课程方法
 public void add(){
   course c1=new course("1","数据结构");
   coursesToSelect.add(c1);
   course c2=new course("2","c语言");
   coursesToSelect.add(c2);;
   course []c3 ={new course("3","大学英语"),new course("4","高等数学")};
   coursesToSelect.addAll(Arrays.asList(c3));
   course []c4 ={new course("5","离散学"),new course("6","大学物理")};
   coursesToSelect.addAll(Arrays.asList(c4));
 }


//打印待选课程
 public void testForeachForSet(){
  
        System.out.println("有如下课程待选:"+"(通过foreach访问)");
        for(course obj:coursesToSelect)
           System.out.println("课程:"+obj.id+"  "+obj.cname);
       }


//实例化
 public static void main(String[] args) {
  SetTest st=new SetTest();
  st.add();
  st.testForeachForSet();
        student s1=new student("1","xhg");
        System.out.println("欢迎学生"+s1.sname+"选课!");
        scanner = new Scanner(System.in);
        for(int i=0;i<3;i++){
         System.out.print("请输入课程号:");
         String courseid=scanner.next();
         for(course cr:st.coursesToSelect){
          if(cr.id.equals(courseid))
           s1.courses.add(cr);
         }
        }
        for(course cr:s1.courses){
        System.out.println("选择了课程:"+cr.id+"  "+cr.cname);
        }
 }

}


测试结果如下图:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值