java学生选课系统方案
- 格式:doc
- 大小:60.50 KB
- 文档页数:24
Java课程设计项目通常要求学生运用所学的Java语言知识和面向对象编程思想,结合数据库技术、网络通信技术等实现一个具有实际应用价值的小型系统。
以下是一些常见的Java课设项目实例:1. 学生信息管理系统:功能包括:学生信息的增删改查(CRUD)、成绩管理、选课管理等。
技术栈:Java SE, JDBC连接MySQL数据库,Swing或JavaFX进行图形用户界面设计。
2. 图书馆管理系统:功能包括:图书分类管理、图书借阅与归还、读者信息管理、逾期罚款计算等。
技术栈:Java SE, JDBC连接数据库,可以采用MVC架构设计。
3. 网络商城系统:功能包括:商品展示、购物车功能、订单处理、用户登录注册等。
技术栈:Java EE(如Servlet、JSP、Spring Boot框架),前端可使用HTML5、CSS3、JavaScript配合Bootstrap或Vue.js/Angular.js等框架,后端数据库使用MySQL或其他关系型数据库。
4. 在线考试系统:功能包括:题库管理、试卷生成、在线答题、自动评分等功能。
技术栈:Java EE,Spring Boot框架配合Thymeleaf模板引擎,数据库持久层使用JPA或者MyBatis。
5. 博客系统:功能包括:文章发布、评论互动、用户权限管理、标签云等功能。
技术栈:Spring Boot、Spring Security进行权限控制,前端可使用React 或Vue构建SPA应用,后端通过RESTful API交互,数据库采用MySQL。
6. 内部通讯系统(简易版聊天室):功能包括:用户登录、发送消息、接收消息、好友列表等基础即时通讯功能。
技术栈:Java Socket编程,TCP/IP协议实现客户端与服务器间的通信。
以上都是根据Java课程设计项目的常见类型给出的例子,具体的设计内容会根据教学大纲、教师指导以及学生自身对项目的创新拓展来确定。
在完成项目的过程中,除了代码编写之外,还包括需求分析、系统设计、文档撰写(包括设计说明书、用户手册、测试报告等)等环节。
教务管理系统是现代教育管理中必不可少的一部分,它通过信息技术手段帮助学校高效地管理学生信息、教师信息、课程安排、成绩管理等方面。
随着互联网技术的发展,传统的教务管理方式已经无法满足学校管理的需求,因此设计一个基于Java Web的教务管理系统将会带来革命性的改变。
本文将探讨教务管理系统的设计与实现,主要包括系统的需求分析、系统的架构设计、系统模块的实现等方面。
一、需求分析在设计教务管理系统前,首先要对系统的需求进行全面、深入的分析。
主要包括以下几个方面的需求:1. 学生管理:包括学生基本信息的录入、修改、删除,学生课程的选取、查看成绩等功能。
2. 教师管理:包括教师基本信息的录入、修改、删除,教师课程的安排、成绩录入等功能。
3. 课程管理:包括课程信息的录入、修改、删除,课程的排课、教室安排等功能。
4. 成绩管理:包括成绩录入、成绩统计、成绩查询等功能。
5. 班级管理:包括班级信息的录入、修改、删除,班级学生的管理等功能。
6. 系统管理:包括系统用户的权限管理、数据备份、日志管理等功能。
二、系统架构设计基于Java Web的教务管理系统主要分为前台展示系统和后台管理系统两部分。
其中前台展示系统主要提供给学生、教师和家长使用,包括学生信息查询、课程管理、成绩查询等功能;后台管理系统主要提供给教务处老师和管理员使用,包括教师、课程、班级、成绩等信息的管理和维护。
系统采用B/S架构,即浏览器/服务器架构。
前台展示系统通过浏览器访问,后台管理系统通过服务器端进行管理。
系统采用MVC(Model View Controller)设计模式,将业务逻辑、数据模型、用户界面分离,提高系统的可维护性和扩展性。
三、系统模块的实现1. 用户管理模块用户管理模块是整个系统的核心模块,包括用户注册、登入、权限管理等功能。
在系统中,用户分为管理员、教师、学生和家长四种角色,每种角色对应不同的权限和功能。
2. 学生管理模块学生管理模块包括学生基本信息的录入、修改、删除,学生选课、成绩查询等功能。
学生选课管理系统java+数据库简介学生选课管理系统是一个基于Java编程语言和数据库开发的系统,旨在提供学生选课的便捷和教务管理的智能化。
该系统具有课程管理、学生管理、教师管理、选课关联等功能模块,可以实现学生选课、教师管理课程、生成选课报表等操作。
功能模块1. 课程管理•提供课程信息录入和编辑功能,包括课程号、课程名称、授课教师等信息。
2. 学生管理•支持学生信息的录入、查询、修改和删除,学生信息包括学号、姓名、性别、年级等。
3. 教师管理•实现对教师信息的管理,可以录入教师信息、查询教师信息、修改和删除教师信息。
4. 选课关联•学生可以根据课程列表进行选课操作,系统会检查选课的合法性,避免时间冲突等问题。
数据库设计系统采用关系型数据库存储数据,设计了以下表结构: 1. 课程表:存储课程的信息,包括课程号、课程名称、授课教师等字段。
2. 学生表:存储学生的信息,包括学号、姓名、性别、年级等字段。
3. 教师表:存储教师的信息,包括教师号、姓名、职称等字段。
4. 选课表:记录学生选课的信息,包括学号、课程号、选课状态等字段。
技术实现系统使用Java语言开发,结合数据库技术进行数据存储和查询。
通过编写DAO(Data Access Object)层实现数据访问,实现了数据的持久化和业务逻辑的分离。
在用户界面方面,可以使用Swing或JavaFX等技术实现交互界面,使用户可以方便地操作系统功能。
总结学生选课管理系统是一个方便学生选课和教务管理的工具,通过Java编程语言和数据库技术的结合,实现了课程管理、学生管理、教师管理和选课关联等功能。
系统设计合理,可以提高选课效率,降低管理成本,是教育管理的重要辅助工具。
以上是对学生选课管理系统的介绍,希望能够为你对这一类型系统的理解提供帮助。
(完整word版)java程序设计之学生选课管理系统第4章系统详细设计4。
1 系统登录模块设计1、运行效果图图4。
1。
1 登陆界面图4.1.2 登陆成功图4。
1。
2 登陆失败2、主要代码(完整word版)java程序设计之学生选课管理系统4.2 系统主界面详细设计1、运行效果图图4。
2.1 登陆成功后界面(完整word版)java程序设计之学生选课管理系统图4。
2。
2 学生管理菜单图4。
2.2 课程管理菜单图4。
2。
2 选课管理菜单图4。
2。
2 查询管理菜单2、实现代码:添加数据时,若遇到必须信息未填写、不能重复的信息在数据库中已存在,都会提示无法添加及其错误原因. import java.awt。
*;import java。
awt.event。
*;import javax。
swing。
*;public class Menu extends JFrame implements ActionListener{Addstu 增加学生界面;Updatastu 修改学生界面;(完整word版)java程序设计之学生选课管理系统else{if(obj==学生查询){card.show(pCenter,”学生查询界面”);}else{if(obj==backup){card。
show(pCenter,”备份界面”);}}}}}}}}}}}}}public static void main(String[]args) {new Menu();}}4.3 学生管理模块设计1、运行效果图图4。
3.1 添加学生学籍(完整word版)java程序设计之学生选课管理系统图4.3。
1 修改学生学籍图4。
3。
1 删除学生学籍2、实现代码:Addstu.java/Updatastu.java/Delstu。
javaimport java。
awt.*;import javax.swing。
*;import java。
sql。
*;import java.awt.event.*;public class Addstu extends JPanel implements ActionListener{JTextField 学号,姓名,系别;(完整word版)java程序设计之学生选课管理系统}}}4.4 课程管理模块设计1、运行效果图图4。
基于java的选修课系统的设计与实现随着高等教育的不断发展和普及,选修课的重要性也逐渐凸显出来。
为了更好地满足学生个性化学习的需求,学校需要开设更多的选修课程。
本文基于Java语言,设计和实现了一款选修课程系统。
1.系统概述本选修课系统分为三大模块:学生模块、教师模块和管理员模块。
学生可以在系统内浏览自己可以选修的课程,选择自己喜欢的课程进行报名,查看自己的成绩和选课情况。
教师可以在系统内发布自己开设的课程,查看选课情况,录入学生成绩。
管理员可以管理课程信息、学生信息、教师信息和选课情况等。
2.系统设计本系统使用的技术栈为Java和MySQL。
Java作为后端语言,使用Spring Boot和MyBatis框架。
MySQL作为数据库,用于存储学生信息、教师信息、课程信息和选课情况等。
2.1.学生模块学生模块包括登录、浏览课程、选课、查看选课情况和成绩查询五个功能。
学生在登录后可以浏览系统中所有可以选修的课程,并选择自己喜欢的课程进行报名。
系统会在学生信息和课程信息表中添加一条选课记录。
学生可以随时查看自己的选课情况和成绩。
2.2.教师模块教师模块包括登录、发布课程、查看选课情况、录入成绩四个功能。
教师在登录后可以发布自己开设的课程,并查看学生的选课情况和成绩。
教师可以将学生的成绩录入系统中,系统会在选课信息表中更新相应的成绩。
2.3.管理员模块管理员模块包括登录、管理学生信息、管理教师信息、管理课程信息和管理选课情况四个功能。
管理员在登录后可以管理学生信息、教师信息、课程信息和选课情况等。
管理员可以查看学生、教师、课程和选课信息的详情,并进行增删改查等操作。
3.系统实现本系统采用B/S架构,前端UI采用Bootstrap框架,后端使用Spring Boot框架,数据库采用MySQL。
在开发过程中,采用了Maven进行项目结构管理,使用Git进行代码版本管理,确保项目的可维护性和可扩展性。
4.系统优化为了提升系统的性能和用户体验,本系统采用了多种优化措施。
学生选课管理系统JavaWeb课程设计一、概述学生选课管理系统是一种用于管理学生选课信息的系统,能够实现学生注册、登录、选课、退选等功能。
本文将介绍基于JavaWeb技术设计学生选课管理系统的实现方案。
二、系统设计1. 系统结构学生选课管理系统主要包括学生管理模块、课程管理模块和选课管理模块。
2. 数据库设计系统数据库主要包括学生信息表、课程信息表、选课信息表等。
各表之间通过外键进行关联。
三、功能模块设计1. 学生管理模块•学生注册:学生可以通过系统注册账号。
•学生登录:学生可以使用注册账号登录系统。
•学生信息查看:学生可以查看个人信息。
2. 课程管理模块•课程信息查看:学生可以查看系统中所有课程信息。
•课程详情查看:学生可以查看课程的详细信息。
3. 选课管理模块•选课:学生可以选择感兴趣的课程进行选课。
•退选:学生可以退选已经选修的课程。
四、功能实现系统采用JavaWeb技术实现,包括前端页面的设计和后端逻辑的实现。
1. 前端设计系统前端页面采用HTML、CSS和JavaScript进行设计,主要包括学生登录页面、学生信息页面、课程信息页面等。
2. 后端实现系统后端采用Java语言开发,使用Servlet实现业务逻辑。
通过数据库连接池实现与数据库的交互,实现学生信息的增删改查,课程信息的查询和选课功能。
五、系统展望未来可以进一步完善系统功能,添加成绩管理模块、教师管理模块等,提升系统的全面性和实用性。
六、总结学生选课管理系统是一种重要的教务管理系统,本文设计了基于JavaWeb技术的学生选课管理系统方案,通过前后端的设计和实现,实现了学生信息管理、课程管理和选课功能。
希望该系统能够为学生选课提供便利,为教务管理提供支持。
【关键字】学生1.设计的原始资料及依据查阅有关数据库设计、Java语言程序设计以及案例分析等资料,进一步熟悉面向对象程序设计基本理论以及基本思想。
本设计要求按照软件工程、数据库设计思想及设计步骤设计一个实用程序,并采用Java 开发该系统。
通过本设计可以加深对面向对象程序设计基本思想的理解,加强学生研发、调试程序的能力,培养学生分析、解决问题的能力,提高学生的科技写作能力。
2.设计的主要内容及要求(1)写出系统的需求分析。
(2)写出系统的数据库设计过程,包括概念结构设计、逻辑结构设计、物理结构设计。
(数据库应用程序管理系统类设计详细写,其它类设计可以略)(3)写出系统设计思路—工作原理、功能规划。
(4)详细设计—数据分析、算法思路、类设计、功能实现(包括程序流程图、主要代码及注释)、界面等。
(5)运行调试与分析讨论--给出运行屏幕截图,分析运行结果,有何改进等。
3.对设计说明书撰写内容、格式、字数的要求(1)学生应撰写的内容为:中文摘要和关键词、目录、正文、参考文献等。
课程设计说明书(论文)的结构及各部分内容要求参照《沈阳工程学院毕业设计(论文)撰写规范》执行。
应做到文理通顺,内容正确完整,书写工整,装订整齐。
(2)装订格式:封面、任务书、成绩评审意见表、中文摘要和关键词、目录、正文、结论、致谢、参考文献。
(3)课程设计说明书(论文)是体现和总结课程设计成果的载体,一般不应少于3000字。
4.设计完成后应提交成果的种类、数量、质量等方面的要求(1)每组提交一份课程设计报告。
(2)每组提交一份课程设计成品。
5.6.主要参考资料(文献)[1] 耿详义.JA V A2教程.北京:清华大学出版社,2004。
[2] 张仿彦.JA V A项目开发全程实录.北京:清华大学出版社,2007。
[3] 杨小虎.软件工程课程设计.浙江:浙江大学出版社,2007。
[4] 韩万江.软件工程案例教程.北京:机械工业出版社,2007。
学生选课管理系统Java课程设计一、引言学生选课管理系统是一个用于管理学生选课信息的系统,可以方便学生进行课程选择、教师进行课程安排和管理员进行系统管理。
本文将介绍一个基于Java语言实现的学生选课管理系统的设计与实现。
二、系统需求分析学生选课管理系统主要包括学生、课程和教师三个核心模块。
学生可以通过系统浏览和选择课程,教师可以添加课程信息并进行授课,管理员可以对系统进行维护和管理。
系统需要具备以下功能: 1. 学生功能:注册、登录、查看可选课程、选择课程、查看已选课程等。
2. 教师功能:登录、添加课程、查看课程情况、安排授课等。
3. 管理员功能:登录、添加学生、添加教师、统计课程信息等。
三、系统设计1. 系统架构学生选课管理系统采用MVC架构,将系统划分为模型(Model)、视图(View)和控制器(Controller)三个部分,以实现数据与界面的分离。
### 2. 数据库设计系统数据库包括学生表、课程表、教师表等多个表,通过表之间的关联实现学生、课程和教师之间的关联关系。
### 3. 功能模块设计系统功能模块包括学生模块、教师模块、管理员模块和公共模块,每个模块实现不同的功能。
四、系统实现1. 技术选型系统采用Java语言开发,前端使用Swing框架实现界面,后端使用JDBC连接数据库进行数据交互。
### 2. 编码实现根据系统设计,实现了学生注册登录、课程浏览选择、教师课程添加授课等功能,并实现了管理员对系统的维护和管理。
### 3. 测试与优化进行系统功能测试和性能优化,确保系统的稳定性和可靠性。
五、系统部署与维护系统部署到服务器上运行,进行系统监控和性能调优,及时处理系统故障和安全漏洞,保障系统正常运行。
六、总结与展望学生选课管理系统的Java课程设计实现了学生选课信息的管理,提高了选课效率和精准性。
未来可以进一步扩展选课管理的功能,提升系统的用户体验和性能。
以上是学生选课管理系统Java课程设计的相关内容,希望对Java课程设计有所帮助。
以下是设计与实现基于Java技术的学生选课管理系统时可以参考的一些文献和资源:Java编程基础文档和教程:Java官方文档:Java官方文档Java编程教程:Java编程教程- W3SchoolsJava教程- JavaTPoint:JavaTPoint Java教程数据库设计和管理文献:数据库系统概念:Abraham Silberschatz、Henry F. Korth 和S. Sudarshan 的著作《数据库系统概念》(Database System Concepts)提供了关于数据库设计和管理的详细信息。
Java Web应用程序开发文献:Java Web应用程序开发教程:Java Web应用程序开发- W3SchoolsSpring框架官方文档:Spring Framework DocumentationServlet和JSP教程:Java Servlet和JSP教程- OracleMVC(Model-View-Controller)架构文献:MVC设计模式详解:MVC设计模式详解- RunoobSpring MVC框架:Spring MVC官方文档版本控制和团队协作:Git版本控制:Git官方文档GitHub:GitHub官方文档前端开发文献:HTML和CSS教程:HTML和CSS教程- MDN Web DocsJavaScript教程:JavaScript教程- MDN Web Docs安全性和身份验证文献:Java Web应用程序安全性:Java Web Application Security - OWASPSpring Security框架:Spring Security官方文档学生选课管理系统设计和案例文献:《Java EE和.NET技术下的学生选课管理系统设计与实现》:这本书提供了一个实际的学生选课管理系统案例,可以用于参考和学习。
这些资源将帮助您了解Java编程、数据库设计、Web应用程序开发、安全性、前端开发以及版本控制等方面的知识,从而更好地设计和实现学生选课管理系统。
JavaWeb学生选课管理系统一、引言学生选课管理系统是在学校教务管理中非常重要的一个系统。
随着计算机技术的发展,采用JavaWeb技术开发学生选课管理系统已成为一种常见的选择。
本文将介绍如何使用JavaWeb技术开发一个简单的学生选课管理系统。
二、系统功能需求学生选课管理系统的主要功能包括学生登录、浏览课程、选课、退课等。
下面将逐一介绍这些功能的实现方法。
1. 学生登录学生登录是学生进入选课系统的入口。
学生需要输入自己的学号和密码进行登录。
系统需要验证学生输入的学号和密码是否正确,并根据验证结果进行相应的处理。
2. 浏览课程学生登录成功后,系统需要展示可选的课程列表给学生浏览。
课程信息包括课程编号、课程名称、课程学分等。
学生可以通过浏览课程列表了解每门课程的具体信息。
3. 选课学生可以从课程列表中选择感兴趣的课程进行选课。
系统需要记录学生所选课程的信息,并更新相应的学生选课记录。
4. 退课学生可以在选课期间自由地退选已选的课程。
系统需要删除学生的选课记录,并更新相关的课程信息。
三、系统架构学生选课管理系统的整体架构采用三层结构,包括表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。
1. 表现层表现层是系统与用户之间的交互界面,使用HTML、CSS和JavaScript等技术进行开发。
通过表现层,学生可以进行登录、浏览课程、选课、退课等操作。
2. 业务逻辑层业务逻辑层负责处理系统的核心业务逻辑,包括学生登录验证、课程信息查询、选课和退课等功能的实现。
该层使用Java语言编写,可以使用Java的框架(如Spring、Struts等)简化开发。
3. 数据访问层数据访问层负责与数据库进行交互,包括学生信息、课程信息、选课记录等数据的读取和存储。
该层使用Java的持久层框架(如MyBatis、Hibernate等)进行开发,简化数据库访问操作。
需求分析:写一个较为严谨的学生选课系统,实现学生可以选择多门选课课程,并将有效选课结果保存到数据库。
学生需要登录后,才能选课。
让学生可以在选课系统通过多种方式查询到要选的课程信息。
//选课规则:1、每个学生可以选多门课程,多次选课的总学分不能超过6学分;2、不能重复选择一门课程;3、每一门课程的选课人数都有数量限制,当某门课程的选课名额满时,则应另选课程。
4、凭用户名和密码登录,通过提交某一课程号来选课//总体设计方案:建立三个类:登录类register,选课类studentChooseCourse,数据库工具类JDBCUtil;一个SQL脚本文件用于生成数据库表结构和初始记录,以搭建数据库环境。
登录类register类,负责对用户的身份进行验证;工具类JDBCUtil用于实现连接,你可调用JDBCUtil的getConnection()方法等到链接。
选课类studentChooseCourse用于,实现选课功能。
其中包括几个主要方法:1、actionPerformed(ActionEvent) 用于监听用户“查询”和“提交”操作,并负责调用各种方法对其进行处理2、createSearchCourse()用于产生图形用户界面3、processBeforeCommit()用于对用户的“提交”查找进行验证,剔除无效的用户操作4、tryCommit()负责对有效的“提交”操作,进一步处理,并将有效的操作结果时时保存到数据库,并更新数据库原有信息//本程序用到的知识点:数据库连接JDBC;SQL建表、插入输入、动态查询;图形用户界面的产生以及处理查询结果集并较好显示;程序设计基础知识。
//代码如下:import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.*;import javax.swing.*;import javax.swing.table.DefaultTableModel;import school.schoolPicture.JdbcUtil;public class StudentChooseCourse extends JFrame implements ActionListener {JTextField jtfSearch = new JTextField(11);String[] columnNames = new String[] { "课程ID", "课程名", "学时", "学分", "学期", "性质" };DefaultTableModel dtmSearch = new DefaultTableModel(columnNames, 27); JTable jtSearch = new JTable(dtmSearch);JScrollPane jspSearch = new JScrollPane(jtSearch);JComboBox jcbSearch = new JComboBox();JTextField jtfSelectedCourse = new JTextField(10);Connection con = null;PreparedStatement ps = null;ResultSet rs = null;private static String usrName;private static String passwrd;public StudentChooseCourse(String usrName, String passwrd) { createSearchCourse();rName = usrName;this.passwrd = passwrd;}public String getUsrName() {return usrName;}public void setUsrName(String usrName) {rName = usrName;}public String getPasswrd() {return passwrd;}public void setPasswrd(String passwrd) {this.passwrd = passwrd;}public void actionPerformed(ActionEvent e) {String str = e.getActionCommand();if ("查询".trim().equals(str)) {int k = 1;while (k < 10) {for (int i = 1; i < 7; i++) {jtSearch.setValueAt(null, k - 1, i - 1);}k++;}searchAvailableCourse();} else if ("提交".equals(str)) {boolean effect=processBeforeCommit(); if(effect==true){tryCommit();}}}public boolean processBeforeCommit(){ int k = 1;while (k < 10) {for (int i = 1; i < 7; i++) {jtSearch.setValueAt(null, k - 1, i - 1);}k++;}String userInput = jtfSelectedCourse.getText().toString().trim().toLowerCase();String sql = "select cno from coursexx where cno=? ";boolean flagCourseExist = false;try {ps = con.prepareStatement(sql);ps.setString(1, userInput);rs = ps.executeQuery();flagCourseExist = rs.next();} catch (Exception eC) {eC.printStackTrace();}if (!flagCourseExist) {JOptionPane.showMessageDialog(null, "该课程不存在,请重新输入"); return false;}PreparedStatement ps = null;sql = "select sum(grade) "+ "from (select x.sname , o,k.grade grade "+ "from coursexx k join choicesxx x "+ "on o=o and x.sname=?) result";String grade =null;try {ps = con.prepareStatement(sql);ps.setString(1, usrName);rs = ps.executeQuery();while (rs.next()) {grade = rs.getString(1);if(grade==null){grade="0";}}} catch (Exception rrr) {rrr.printStackTrace();}System.out.println("总学分:" + grade);if (Integer.parseInt(grade) > 6) {JOptionPane.showMessageDialog(null, "你已经选满6学分,系统将退出"); this.setVisible(false);return false;}sql = "select * from choicesxx where sname=? and cno=?";boolean flag = false;try {ps = con.prepareStatement(sql);ps.setString(1, this.getUsrName());ps.setString(2, userInput);rs = ps.executeQuery();flag = rs.next();} catch (Exception eaa) {eaa.printStackTrace();}if (flag) {JOptionPane.showMessageDialog(null, "你已经选择了该课程。
请另选课程"); return false;}return true;}public void tryCommit() {String userInput = jtfSelectedCourse.getText().toString().trim().toLowerCase();PreparedStatement ps;String sql = "select (Max-selectedCount) as RemainedCount "+ "from Coursexx where cno=?";try {ps = con.prepareStatement(sql);ps.setString(1, userInput);rs = ps.executeQuery();ResultSetMetaData meta = rs.getMetaData();int cols = meta.getColumnCount();int RemainedCount = -1;while (rs.next()) {RemainedCount = rs.getInt(1);System.out.println("RemainedCount:" + RemainedCount);}if (RemainedCount > 0) {sql = "insert into choicesxx values(?,?)";ps = con.prepareStatement(sql);ps.setString(1, this.getUsrName());ps.setString(2, userInput);ps.executeUpdate();JOptionPane.showMessageDialog(null, "选课成功:" + this.getUsrName() + " 选了" + userInput + "." + "" + " 还有" + RemainedCount+ " 人可以选该课程。