7-2 学生选课信息管理

设计一个学生选课信息管理系统,从屏幕读入学生、课程信息,执行学生选课操作,并显示选课结果。要求如下:

(1)设计一个学生类Student,包括:

学号stuID、姓名stuName、学生对象的数量stuNum三个数据域;
一个无参构造方法,创建默认的学生,构造方法中输出“学生类无参构造方法”;
一个有参构造方法,创建指定学号stuID、姓名stuName的学生,构造方法中输出“学生类有参构造方法”;
所有数据域的访问器方法;
两个修改器方法,可以修改学号stuID、姓名stuName的值。

(2)设计一个课程类Course,包括:

课程编号cID、课程名cName、课程对象的数量cNum三个数据域;
一个无参构造方法,创建默认的课程,构造方法中输出“课程类无参构造方法”;
一个有参构造方法,创建指定课程编号cID、课程名cName的课程,构造方法中输出“课程类有参构造方法”;
所有数据域的访问器方法;
两个修改器方法,可以修改课程编号cID、课程名cName的值。

(3)设计一个学生选课类Schedule,包括:

学生列表stuList、课程列表cList、学生选课总数schNum三个数据域,两个列表的默认长度任意设定;
一个无参构造方法,创建默认的学生选课对象;
一个学生选课方法 addCourse(Student stu,Course course),实现学生stu选择课程course操作;
一个显示学生选课详情方法 displayCourse(),显示所有学生选课情况。

(4)测试类Main,要求:

情况1 test1:

① 使用无参构造方法建立二个学生对象;
② 查看学生对象总数

情况2 test2:

① 使用无参构造方法建立三门课程对象;
② 查看课程对象总数

情况3 test3:

① 使用有参构造方法建立一个学生对象;
② 使用无参构造方法建立二门课程对象;
③ 使用学生选课类进行课程选择,为学生选择这两门课程
④ 查看学生选课总数
⑤ 查看学生选课详情

情况4 test4:

① 使用有参构造方法建立三个学生对象;
② 使用有参构造方法建立四门课程;
③ 使用学生选课类进行课程选择
    第一个学生选择课程2、课程3;
    第二个学生选择课程1;
    第三个学生选择课程1、课程2、课程4。
④ 查看选课信息
    查看学生对象总数
    查看课程对象总数
    查看学生选课总数
    查看学生选课详情

(5)程序框架示例:

import java.util.Scanner;

public class Test2 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int type = sc.nextInt();
        switch(type){
        case 1: test1(sc);break;
        case 2: test2(sc);break;
        case 3: test3(sc);break;
        case 4: test4(sc);
        }
    }
    //test方法为(4)中情况,见上述说明
    public static void test1(Scanner sc) {

    }
    public static void test2(Scanner sc) {

    }

    public static void test3(Scanner sc) {

    }
    public static void test4(Scanner sc) {

    }
}

// 学生类Student
class Student{

}

// 课程类Course
class Course{

}

// 学生选课类Schedule
class Schedule{

}

输入格式:

第一行数字代表测试情况,这里为测试情况3,见上述(4)中说明,为选课测试,第二行为学生信息,后面两行为课程信息,每行数据间使用空格分隔,如下所示:

3

01 Tom

c01 数据结构

c02 软件工程

其他测试情况格式设置相同,具体情况查看要求中的说明和输入样例。

输出格式:

每组输出占一行,每行如果有多个数据采用制表符分隔,如下所示:

学生类有参构造方法

课程类无参构造方法

课程类无参构造方法

学生选课的总数为:2

学生选课情况如下:

01 Tom c01 数据结构

01 Tom c02 软件工程

输入样例1:

在这里给出一组输入。例如:

1
01 Tom
02 Anne

输出样例1:

在这里给出相应的输出。例如:

学生类无参构造方法
学生类无参构造方法
学生总数为:2

输入样例2:

在这里给出一组输入。例如:

2
c01 数据结构
c02 软件工程
c03 Java基础

输出样例2:

在这里给出相应的输出。例如:

课程类无参构造方法
课程类无参构造方法
课程类无参构造方法
课程总数为:3

输入样例3:

在这里给出一组输入。例如:

3
01 Tom
c01 数据结构
c02 软件工程

输出样例3:

在这里给出相应的输出。例如:

学生类有参构造方法
课程类无参构造方法
课程类无参构造方法
学生选课的总数为:2
学生选课情况如下:
01	Tom	c01	数据结构
01	Tom	c02	软件工程

输入样例4:

在这里给出一组输入。例如:

4
01 Tom
02 Anne
03 Jame
c01 数据结构
c02 软件工程
c03 Java基础
c04 C语言

输出样例4:

在这里给出相应的输出。例如:

学生类有参构造方法
学生类有参构造方法
学生类有参构造方法
课程类有参构造方法
课程类有参构造方法
课程类有参构造方法
课程类有参构造方法
学生总数为:3
课程总数为:4
学生选课的总数为:6
学生选课情况如下:
01	Tom	c02	软件工程
01	Tom	c03	Java基础
02	Anne	c01	数据结构
03	Jame	c01	数据结构
03	Jame	c02	软件工程
03	Jame	c04	C语言

答案:

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int type = sc.nextInt();
        switch (type) {
            case 1:
                test1(sc);
                break;
            case 2:
                test2(sc);
                break;
            case 3:
                test3(sc);
                break;
            case 4:
                test4(sc);
        }
    }
    
    public static void test1(Scanner sc) {
        Student s1 = new Student();
        Student s2 = new Student();
        String i1, i2, n1, n2;
        i1 = sc.next();
        n1 = sc.next();
        i2 = sc.next();
        n2 = sc.next();
        s1.setStdName(n1);
        s1.getStdID();
        s2.setStdName(n2);
        s2.getStdName();
        Student.count();
    }

    public static void test2(Scanner sc) {
        Course c1 = new Course();
        Course c2 = new Course();
        Course c3 = new Course();
        String i1, i2, n1, n2, m1, m2;
        i1 = sc.next();
        n1 = sc.next();
        i2 = sc.next();
        n2 = sc.next();
        m1 = sc.next();
        m2 = sc.next();
        c1.setcID(i1);
        c1.setcName(i2);
        c2.setcID(n1);
        c2.setcName(n2);
        c3.setcID(m1);
        c3.setcName(m2);
        Course.count();
    }

    public static void test3(Scanner sc) {
        String a=sc.next();
        String b=sc.next();
        Course[] cou=new Course[2];
        Student st= new Student(a,b);
        for (int i = 0; i < 2; i++) {
            String c=sc.next();
            String d=sc.next();
            Course xx=new Course();
            xx.setcName(d);
            xx.setcID(c);
            cou[i]=xx;
            st.scst.setXx(xx);
        }
        Schedule.count();
        System.out.println("学生选课情况如下:");
        st.print();
    }

    public static void test4(Scanner sc) {
        Student[] ST=new Student[100];
         for (int i = 0; i < 3; i++) {
            String a,b;
            a=sc.next();
            b=sc.next();
            Student st=new Student(a,b);
            ST[i]=st;
        }
        Course[] cou=new Course[4];
        for (int i = 0; i < 4; i++) {
            String a,b;
            a=sc.next();
            b=sc.next();
            Course x=new Course(a,b);
            cou[i]=x;
        }
        ST[0].scst.setXx(cou[1]);
        ST[0].scst.setXx(cou[2]);
        ST[1].scst.setXx(cou[0]);
        ST[2].scst.setXx(cou[0]);
        ST[2].scst.setXx(cou[1]);
        ST[2].scst.setXx(cou[3]);
        Student.count();
        Course.count();
        Schedule.count();
        System.out.println("学生选课情况如下:");
        ST[0].print();
        ST[1].print();
        ST[2].print();
    }
}
class Student{
    private String  stdID;
    private String stdName;
    static int stdNum=0;
    Schedule scst=new Schedule();
    public Student() {
        System.out.println("学生类无参构造方法");
        stdNum++;
    }

    public Student(String stdID, String stdName) {
        this.stdID = stdID;
        this.stdName = stdName;
        System.out.println("学生类有参构造方法");
        stdNum++;
    }
    public String getStdID() {
        return stdID;
    }

    public void setStdID(String stdID) {
        this.stdID = stdID;
    }

    public String getStdName() {
        return stdName;
    }

    public void setStdName(String stdName) {
        this.stdName = stdName;
    }
    public static void count(){
        System.out.println("学生总数为:" + stdNum);
    }
    public void print(){
        for (int i = 0; i < scst.scid; i++) {
            System.out.printf("%s\t%s\t%s\t%s\n",stdID,stdName,scst.getXx(i).getcID(),scst.getXx(i).getcName());
        }
    }
}
class Course{
    private String cID;
    private String cName;
    static int cNum;

    public Course() {
        System.out.println("课程类无参构造方法");
        cNum++;
    }

    public Course(String cID, String cName) {
        this.cID = cID;
        this.cName = cName;
        cNum++;
        System.out.println("课程类有参构造方法");
    }

    public String getcID() {
        return cID;
    }

    public void setcID(String cID) {
        this.cID = cID;
    }

    public String getcName() {
        return cName;
    }

    public void setcName(String cName) {
        this.cName = cName;
    }

    public static   void count(){
        System.out.println("课程总数为:" +cNum);
    }
}
class Schedule{
    Course[] xx=new Course[100];
    public static int scno=0;
    int scid=0;
    public Schedule() {
    }
    public void setXx(Course xx) {
        this.xx[scid] = xx;
        this.scid++;
        scno++;
    }
    public  static void count(){
        System.out.println("学生选课的总数为:" + scno);
    }
    public Course getXx(int i) {
        return xx[i];
    }
}
  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
学生选课管理系统 --意义-- 学生选课系统是一个学校不可缺少的部分,它的内容对于学校的决策者和管 理者来说都至关重要,所以学生选课系统应该能够为用户提供充足的信息和快捷 的查询手段。但一直以来人们使用传统人工的方式管理文件档案,这种管理方式 存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据, 这对于查找、更新和维护都带来了不少的困难。 随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深 刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。 作为计算机应用的一部分,使用计算机对选课信息进行管理,有着手工管理 所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、 存储量大、保密性好、 寿命长、成本低等。这些优点能够极大地提高人事劳资管理的效率,也是企业的 科学化、正规化管理,与世界接轨的重要条件。 --课题的可行性分析-- (1) 技术可行性-----本系统仅需要一台装有 Windows/Linux 系统并装有 Mysql数据库和Tomcat服务器的计算机即可,对机器本身没有太高的要求,一般当前学校或个人电脑完全可满足要求。对于软件技术要求,现在的JAVA程序设计语言已非常成熟,本系统采用基于B/S 架构的JavaEE的WEB开发,页面采用CSS样式,Jsp,Javascript等页面技术。 (2) 经济可行性-----由于本系统是一个基于JavaEE的WEB应用,所以服务器端只需部署一台能运行JAVA程序的服务器软件(Tomcat),即可使用本系统,系统成本主要集中在系统软件的开发上,当系统投入运行后可以为学校节约大量的人力,物力。所带来的效益远远大于系统软件的开发成本。在经济上完全可行。 (3) 操作可行性-----界面设计时充分考虑管理人员的习惯,使得操作简单;数据录入迅速、规范、可靠;统计准确;适应力强;容易扩充。 --使用功能模块说明-- (1)登录模块 通过列表框可以分别选择学生、教师和管理员三种用户类型,根据不同的用户类型,登录后会进入不同的管理模块 (2)系统管理员模块 ● 选课时间设置 系统管理员通过此项功能设置选课时间段—预选时间段和补选时间段,只有在选课时间段里,学生才可以选择课程,不在此时间段,学生不能进行选课操作。 ● 选修课程管理 管理员可以进行添加新的选修课、删除选修课、修改选修课和查找选修课等操作 添加新的选修课 在选课之前,管理员可以添加新的选修课,让学生选课期间进行选修 删除选修课 在选课之前,管理员可以取消某门选修课 修改选修课 在选课之前,管理员可以修改某门选修课的信息 查找选修课 可以根据教师的员工号精确查找该教师所代选修课,也可以根据教师名称和课程名模糊查询选修课,不输入查询条件可以查询所有选修课。针对查询出的某门选修课,可以查看代课老师的信息和选修该课程的所有学生信息。在查看学生信息页面可以修改学生的课程成绩 ● 密码管理 可以对学生、教师和管理员的密码进行修改,通过单选框确定要修改密码的用户类型 (3)教师模块 ● 查看所代课程 教师用户登陆系统后,可以查看所代课程的列表,可以查看某门课程的全体学生信息并能录入学生的成绩,成绩可分批录入,录入后可显示提交按钮,进行学生成绩的提交,提交之前必须确认填写的学生成绩无误,否则提交之后教师就无法修改学生的成绩,必须通过管理员进行修改学生的成绩 ● 修改密码 教师可以修改自己的密码 (4)学生选课模块 ● 选择选修课程 学生登陆系统后,在所有选修课程中可以选择两门选修课。只有在选课时间段内才可以使用该功能。在预选阶段,该功能完成选修课程的预选,学生可以选择所有选修课程,预选结束之后,系统开始正选。对超过XX课程计划招生人数的课程,系统自动进行抽签,确定哪些学生选课成功,哪些学生选课没有成功。选课不成功的可以进行补选。在补选阶段,该功能完成选修课程的补选,补选采用竞争机制,系统会罗列出所有未满的课程,让学生进行补选。 ● 查看学分 本功能完成学生对以前选修课程的成绩和所获学分的查看 ● 修改密码 学生可以修改自己的密码 ● 查看已选课选课开始之后,学生可以通过查看已选课程,了解本学期所选的选修课的信息

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值