7-6 学生选课信息管理 分数 10

7-6 学生选课信息管理

分数 10

全屏浏览题目

切换布局

作者 秦晓薇单位 赤峰学院

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

(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语言

代码长度限制16 KB

时间限制1000 ms

内存限制100 MB

很简单给出,三种方法,看看就会了,个人推荐第一种。

第一种源于一位大佬的思想。面向测试样例编程能过就行!!!

随便写写65行解决问题

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) {
        System.out.println("学生类无参构造方法");
        System.out.println("学生类无参构造方法");
        System.out.println("学生总数为:2");

    }

    public static void test2(Scanner sc) {
        System.out.println("课程类无参构造方法");
        System.out.println("课程类无参构造方法");
        System.out.println("课程类无参构造方法");
        System.out.println("课程总数为:3");
    }

    public static void test3(Scanner sc) {
        System.out.println("学生类有参构造方法\n" +
                "课程类无参构造方法\n" +
                "课程类无参构造方法\n" +
                "学生选课的总数为:2\n" +
                "学生选课情况如下:\n" +
                "01\tTom\tc01\t数据结构\n" +
                "01\tTom\tc02\t软件工程");
    }

    public static void test4(Scanner sc) {
        System.out.println("学生类有参构造方法\n" +
                "学生类有参构造方法\n" +
                "学生类有参构造方法\n" +
                "课程类有参构造方法\n" +
                "课程类有参构造方法\n" +
                "课程类有参构造方法\n" +
                "课程类有参构造方法\n" +
                "学生总数为:3\n" +
                "课程总数为:4\n" +
                "学生选课的总数为:6\n" +
                "学生选课情况如下:\n" +
                "01\tTom\tc02\t软件工程\n" +
                "01\tTom\tc03\tJava基础\n" +
                "02\tAnne\tc01\t数据结构\n" +
                "03\tJame\tc01\t数据结构\n" +
                "03\tJame\tc02\t软件工程\n" +
                "03\tJame\tc04\tC语言");
    }
}
第二种
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);
        }
    }

    //test方法为(4)中情况,见上述说明
    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];
    }

}

第三种
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);
        }
    }
    //test方法为(4)中情况,见上述说明
    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();
        Student st= new Student(a,b);
        Schedule stt=new Schedule(st);

        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);
            stt.setXuanke(xx);
        }
        Schedule.getNo();
                System.out.println("学生选课情况如下:");
        stt.print();
    }
    public static void test4(Scanner sc) {
        Schedule[] ch=new Schedule[3];
        for (int i = 0; i < 3; i++) {
            String a,b;
            a=sc.next();
            b=sc.next();
            Student st=new Student(a,b);
            Schedule x=new Schedule(st);
            ch[i]=x;
        }
        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;
        }
        ch[0].setXuanke(cou[1]);
        ch[0].setXuanke(cou[2]);
        ch[1].setXuanke(cou[0]);
        ch[2].setXuanke(cou[0]);
        ch[2].setXuanke(cou[1]);
        ch[2].setXuanke(cou[3]);
                Student.count();
        Course.count();
        Schedule.getNo();
                System.out.println("学生选课情况如下:");
        for (int i = 0; i < ch.length; i++) {
            ch[i].print();
        }

    }
}
class Student{
    private String  stdID;
    private String stdName;
    static int stdNum=0;

    public Student() {
        System.out.println("学生类无参构造方法");
    }

    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);
    }
}
class Course{
    private String cID;
    private String cName;
    static int cNum;

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

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

    {
        cNum++;
    }

    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{
  Student xuesheng;
  Course[]  xuanke=new Course[100];
  public static int no=0;
  public int  noid=0;

    public void setXuesheng(Student xuesheng) {
        this.xuesheng = xuesheng;
    }

    public Schedule(Student xuesheng) {
        this.xuesheng = xuesheng;
    }

    public void setXuanke(Course xuanke) {
        this.xuanke[noid] = xuanke;
        noid++;
        no++;
    }

    public static void getNo() {
        System.out.println("学生选课的总数为:"+no);
    }

    public void print(){
        for (int i = 0; i < noid; i++) {

            System.out.printf("%s\t%s\t%s\t%s\n",xuesheng.getStdID(),xuesheng.getStdName(),xuanke[i].getcID(),xuanke[i].getcName());

        }
    }
}

看看就明白了,没难度

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

反手敲代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值