1、 数学与计算机学院 课程设计说明书 课 程 名 称: JAVA数据库网络综合课程设计 课 程 代 码: 题 目: 选修课程管理系统 年级/专业/班: 2012级计科3班 学 生 姓 名: 徐茂淋 学 号: 312012080605326 开 始 时 间: 2014 年 12 月 2 日 完 成 时 间: 2014 年 12 月 28 日
2、 课程设计成绩: 学习态度及平时成绩(20) 技术水平与实际能力(20) 完成情况(20) 创新(5) 说明书(计算书、图纸、分析报告)撰写质量(35) 总 分(100) 选修课程管理系统 指导教师签名: 年 月 日 数学与计算机学院 课程设计 任务书 ( 2014/ 2015学年 第1学期 ) 专 业: 计算机科学与技术 年 级:
3、 2012 课程名称: JAVA数据库网络综合课程设计 课程代码: 选修课程管理系统 一、设计题目 选修管理系统 二、主要内容 调查学校教务处,设计用于管理全校学生选修课活动的系统。主要功能有: 1. 全校选修计划课程管理; 2. 全校选修开课课程管理; 3. 全校学生选课管理; 4. 全校选修课成绩管理; 5. 打印报表; 6. 系统维护,如数据安全
4、管理(含备份与恢复)、操作员管理、权限设置等; 要求: 1. 设计学生选课录入界面及学生选课查询界面; 2. 设计课程输入界面和学生选课表及课程选修情况查询界面; 3. 根据学生库和课程库,输出学生课程表(选课冲突时按学号分配课程); 三、具体要求 1. 对系统作需求分析和数据库逻辑结构设计。 2. 设计出ER模型,并完整标明每个实体型的相关属性,推荐使用Erwin实现。 3. 利用前台开发工具,完成对每个实体型中实体数据的查询和编辑操作,并提供相应的界面。 4. 源代码格式规范,注释不少于三分之一. 5. 提交完整程序代码、课程设计报告及相关文档;给出系统需求分析和数据库
5、 选修课程管理系统 6. 逻辑结构设计 ;总结开发语言与后台数据库之间的连接形式 ;总结程序开发过程中系统函数、存储过程、触发器等后台数据库对象在开发过程中的调用情况(如果没有使用,可不写);设计中遇到的问题,设计的心得体会;调试所遇到的问题等。 四、成果及应提交材料 1. 源程序一份 2. 课程设计报告一份 五、主要技术路线提示 后台推荐采用SQL server或Oracle;前台开发环境为JAVA。 用前台开发工具开发相应系统,学习开发工具与数据库的连接,可采用ADO,ODBC,OLE DB或JDBC连接数据库,并调用
6、系统存储过程、自定义存储过程、函数等。 六、进度安排 第12周: 数据库系统概念模型、数据模型设计,创建数据库以及相关对象; 第13周: 前台程序开发,撰写报告,接受检查。 七、推荐参考资料 1. 王珊、萨师煊,数据库系统概论,高等教育出版社. 2006.5 2. 李刚等,Java程序员之旅--Java数据库技术详解,化学工业出版社,2011.4 3、姜中华,刘小春,Java 数据库应用程序设计,机械工业出版社,2008.4 4、软件开发技术联盟,Java Web开发实践,清华大学出版社,2013.9 指导教师 签名日期 年 月 日
7、系 主 任 审核日期 年 月 日 选修课程管理系统 目录 1.相关专业背景功能 --------------------------------- 1 2.需求分析 --------------------------------------- 4 3.概念模型与E-R图__________________________________13 4.E-R模型转换 --------------------------
8、14 5.数据库设计与建立 ------------------------------17 6、连接数据库---------------------------------------23 7. 个人总结-----------------------------------------24 8.参考文献 --------------------------------------25 24 选修课程管理系统 一、选修课管理系统的相关背景功能
9、 选修课管理系统是一个面向学校教务管理人员、教师和学生并为其提供服务的管理系统。 选修课管理系统所经历的三个阶段 一、没有电脑的年代,网上选课根本不存在,当时学生根据自己的爱好兴趣等方面,先选择相应的课程,然后由班级上报院系,再通过人工整理所上报的信息的办法,决定每个人的选课信息以及任课老师所教的课程,也就是说几乎谈不上选修课管理系统这么一说。 二、每个院系有了为数不多的几台电脑后,班级上报院系的信息,由院系先在电脑上登记,最后交给教务处,教务处通过选修课管理系统(还不够完善),经过审核决定最终结果并公布; 三、电脑普及率很高,也就是现在这样,网上选课已不成问题,教务处直接
10、通过选修课管理系统,了解与审核选课信息,最终决定最后的结果并公布。 有关选修课的概念与定义 选修课与“必修课”相对。主要指高等学校和中等专业学校中学习某一专业的学生可以有选择地学习的课程。在教学计划中一般不作硬性规定。分限制性选修课程(某些特定专业指定选修课程,对该专业来说可视为必修课)和非限制性选修课程(任意专业选修课程)两种。一般大学的课程都分为校定必修,院定必修,限选课和任选课这四种,你可以根据你的爱好来选择选修课,也可以选一些专业方面的课程来修。选修课不能全都选,学校有规定一学期最高能修多少个学分,你不能超出这个限制。 开设选修课的意义 选修课的开设是基于社会对复合型人
11、才的需求,旨在加强大学生人文素质和科学素质的养成和提高,培养全面发展的高素质人才。要对学生的公共选修课进行管理,每学期由教务处依据教学计划列出所开设的选修课程,学生自主选课,教务处根据选课情况进行调整,最后确定选修各门课程的学生名单,并对选修课进行排课和对选修课成绩进行登记。可设置学生可选修的课程范围以及选修的约束条件。可指定范围内的学分约束及课程门数约束,可指定选修课教师的开设班级的约束条件,开设班级的人数限制。约束条件将作为学生在网上选课审核的标准。应实时显示选课冲突信息。 网上选课的好处: 大学期间总会有很多公共选修课,以往的选课方法是随堂报名。这种方法虽然直接,但是造成选课的
12、盲目性,有些课堂选课时人满为患,有些课堂无人选课。原因是传统的选课方法没有预见性,大家没有事先协调好。使用了网上选课系统以后,可以在开课前就在网上选课,每个学生的课程在开课前就确定好,不用浪费体力去选课,还可以使教学资源合理平均地分配。 学校的选修课网上选课报名问题: – 教师网上登记选修课(课程审核) – 学生网上选课 – 报名名单调整 – 导出全校选课报名报表等等 选修课管理系统的功能 1.选课。学生能够在网上实现正常学期的本专业本年级推荐选课、本院系开设课程、体育课、政治课、公共英语课、文科计算机课、通选课和公选课的选课; 2.成绩查询。学生能够在网上快
13、速、便捷地查询到自己所有学期的课程成绩(包括本院系所学课程成绩、辅修/双学位成绩)。 3.选课情况查询。学生从网上就可以了解自己的选课情况(包括正常学期和暑期学校的选课),避免了许多不必要的麻烦。 4.退课情况查询。学生可以清楚地查看到自己退课的时间和所用的IP地址。 5.体育课评估。 6.修改密码。此功能更加完善了系统的功能。 7.用户注销。不仅方便用户退出系统重新进行别的操作,而且更为重要的是它能够及时保证用户在使用此系统时的安全性。 系统设置:系统管理员配置相关信息,包括教师登记课程时间范围,学生选课时间范围,每班最多人数,选修课上课日期,选课学生范围等; 教师登记课程:
14、开课教师在规定的时间内登记自己要开设的选修课程; 学生选课:学生在规定的选课时间内自由选课报名,在规定时间内,可以退选、补选、改选课程; 选课调整:学生选课期截止后,系统管理员可以根据学生本人、班主任或者任课教师的要求针对个别学生的选课进行调整,包括强制选课、退选、换选三种; 生成报表:自动生成EXCEL报表,包括学生本人的选课列表、给班主任的选课名单和给上课教师的报名名单 选修课管理系统的使用说明 一、学生选课 1) 学生登陆 2) 进行初选,复选,补退选 3) 查询选课情况,上课时间、地点与上课老师 4) 修改登陆密码,添加或删除选课的相关信息 5) 查询成绩 二
15、教师查询 1) 教师登陆 2) 查询课程信息(上课时间、地点以及课程是否被取消,查询选择自己课程的学生清单) 3) 修改登陆密码 4) 登记学生成绩 三、管理员对选修课管理 1) 设置学生可选修的课程范围以及选课的约束条件 2) 添加课程,修改密码、浏览选课情况、关闭选课人数不足15的课程 3) 对选修课进行排课 登记选修课的成绩 现行选修课管理系统的特点 · 完全基于浏览器的操作界面,操作简便 · 灵活的选课管理、灵活选课配置、课程审核设置、学生范围限定等 · 严格的选课匹配 · 教师限时课程登记 · 学生限时网上选课 · 保证选课
16、学生在班级之间均匀分布,杜绝过分集中 · 管理员可以调整学生选课名单 · 轻松导出各类选课报表 预测选修课管理系统的发展 随着科学技术的不断进步,电脑将会基本普及,各种系统的完善程度将会大幅提高,上一个新台阶,到那时,我想选修课管理系统也将更灵活,操作更简单,更人性化与智能化。 二、需求分析 学生包含学号等属性,通过登记系统保存学生成绩的信息。学生通过分组程序分出选修课的学生名单。课程包含课程号,名称等属性。分组信息分出选修课教师,教师包含名称,教师编号属性。 用户通过SQL SERVER 2000 的查询分析器直接输入各种操作代码,其中包括
17、对系统管理员的创建,管理员可以创建其他管理员权限,当然,系统管理员可以对所有表进行修改,删除,增加。 具体需求分析如下: 选修课管理系统功能图: 选修课管理系统 管理员 学生 教师 学生成绩管理 登录 查询课程信息 修改个人信息 登记成绩 选课信息管理 成绩查询 登录 选课 查询选课情况 修改个人信息 开设课程管理 • 系统功能需求: • 1. 开设课程管理 – 管理员对所开设的课程进行管理,允许对所开设的课程进行增加,修改,删除等。 • 2.查询 – 可以按课程名
18、教师名,学号等多种方式查询课程信息。对于学生的选课信息,学生只能查询本人的。 • 3.学生选课管理 – 学生根据所查询的课程信息,选择自己所要选修的课程。对于已经选择了,但不希望选修的课程,可以进行退选。每个学生最多选修8个学分。 • 4.用户信息管理 – 能够使用系统的每个学生、教师和管理员每人都有一个ID,管理员可以对用户进行增加,删除,修改等操作。 • 5.学生成绩管理 • 成绩管理包括如下功能: (1)成绩录入 – 管理员录入学生的成绩信息。 (2)成绩查询 – 学生可以查看自己所选各科课程的成绩。 教师可以查询自己所教课程的学生成绩,并打印
19、报表。 参与者用例图: 用户 管理员 教师 学生 分析参与者: • 学生、教师、管理员都是学校里的人员,有一些相同的属性,如ID,姓名,部门等,可以将三者的共性提取出来,形成一个抽象的参与者——用户。 系统可以识别三个参与者:学生,教师和管理员。 学生:查询课表,选课,查询考试成绩 教师:查询课表,查询课程成绩 管理员:管理所开设的课程,管理用户,录入成绩,执行各种查询功能。 学生选课的数据流图: 选课信息 学号 学号 学号 打成绩单 成绩登录 打选课单 学生选课 学生 课程 学生选课 选课信息 成绩信息 成绩单 学
20、生 教师 选课名单 ① 数据项:以“学号”为例 数据项名:学号 数据项含义:唯一标识每一个学生 别名:学生编号 数据类型:字符型 长度:8 取值范围:00000~99999 取值含义:前2位为入学年号,后3位为顺序编号 与其他数据项的逻辑关系:(无) ② 数据结构:以“学生”为例 数据结构名:学生 含义说明:是学籍管理子系统的主体数据结构,定义了一个学生的有关信息 组成:学号,姓名,性别,年龄,所在系 ③ 数据流:以“选课信息”为例 数据流名:选课信息 说明:学生所选课程信息 数据流来源:“学生选课”处理 数据流去向:“学生
21、选课”存储 组成:学号,课程号 ④ 数据存储:以“学生选课”为例 数据存储名:学生选课 说明:记录学生所选课程的成绩 编号:(无) 流入的数据流:选课信息,成绩信息 流出的数据流:选课信息,成绩信息 组成:学号,课程号,成绩 存取方式:随机存取 ⑤ 处理过程:以“学生选课”为例 处理过程名:学生选课 说明:学生从可选修的课程中选出课程 输入数据流:学生,课程 输出数据流:学生选课 根据系统需求中的描述,又可以将系统分为两个顶层用例:选课管理和成绩管理 • 选课管理和成绩管理顶层用例图 教师 管理员 选课管理 成绩管理 学生 • •
22、选课管理用例可以分解为: • 1.课程信息查询:提供按学生查询,按任课教师查询,按课程名查询等多种查询方式。 • 2.选课:学生对自己所选的课程进行管理,包括增加所选课程,删除所选课程等。 • 3.课程信息管理:管理员对学校所开设的课程进行管理,包括增加课程,删除课程,修改课程信息等。 • 4.用户管理:为简化处理,假设系统从学生管理系统中获取学生信息,从学校人事管理系统中获取教师信息 。 • 选课管理用例图: 管理员 选课 课程信息查询 用户管理 学生 课程信息管理 教师 • 成绩管理用例可以分解为以下用例: • 1. 学生成绩查询 • 学
23、生查询自己所选课程的成绩。 • 2. 课程成绩查询 • 教师查询自己所教课程的学生成绩。 • 3. 成绩管理 • 管理员录入或修改学生成绩。 • 学生成绩管理用例图 用户输入课程名 更新学生成绩 启动成绩管理窗口 提示输入课程名 查询课程的选课情况 用列表显示选课学生 检查成绩是否有效 更新成绩 显示错误信息 按课程查询选课信息 分析用户如何登录到系统中 1.2 前置条件:无 1.3 后置条件:如果用例成功,则用户登录到系统中。否则,系统状态不变。 1.4 事件流 1.4.1 基本流 (1)当用户开始使用系统时,登录用例启动; (2)系统
24、提示用户输入用户名和密码; (3)用户提交; (4)系统验证输入的用户名和密码,用户登录成功 1.4.2 备选流 在基本流4中,如果用户输入的名字或密码没有通过验证,系统提示错误信息,用户可以重新输入或中止该用例。 用户登录用例图: 系统启动 用户 系统 验证用户名和密码 提交 提示输入用户名和密码 验证用户名和密码 显示错误信息 正确/错误 根据以上对系统的总体需求分析,我们就可以对选修课管理系统有个整体的概念。通过对各个用例图的的分析与研究,就可以对选课管理系统的整个过程有个很具体的把握,并且可以知道和明白其工作原理与系统处理细节问
25、题。 三、概念模型与E-R图 概念模型介绍: 学生选修课管理系统的流程:首先由教师或系统管理员等有录入权限的用户将各自权限范围内的信息进行录入,然后保存信息到数据库中。有权限的人可以对这些数据库信息进行修改和删除。所有用户均可以进行信息查询和统计。 数据流分析 学生选课管理系统的数据流程:首先由教师或系统管理员等有录入权限的用户将各自权限范围内的信息进行录入处理,然后保存信息到数据库中。有权限的人可以对这些库信息进行修改和删除处理。所有用户均可以进行信息查询和统计,结果可以报表打印。 选修课选课系统主要分为两大模块:管理员模块和一般用户模块,管理员可以是教师也可以是学生,不
26、过管理员必须承担一定的责任。 管理员模块又分为对用户的管理和对选课的管理,对用户的管理模块应有的功能是对新用户的添加,对无用用户的删除;选课管理模块应有的功能包括新开设选修课信息的添加,对原有课程信息的修改,对学校不再开设的课程进行删除,一轮选课结束以后对各科选课人数归零。 一般用户模块既学生应用模块是该系统最基本的功能模块,因为此模块应完成访客登录的身份验证,学生选修公共选修课记录的添加,对公共选修课信息的查询,对教师信息的查询,学生对自己已经选修哪些课进行查询。所以,按照需要完成的要求又分成了各具体执行模块。 学生 学号 姓名 性别 所在班级 所在系 年龄 备注
27、 学生实体E-R图 教师 教师号 班级 姓名 系部 备注 教师实体E-R图 课程 所属系 开课时间 学分 课程名 课程号 课程实体E-R图 管理员 用户名 密码 登录类型 管理员实体E-R图 整体E-R图: 课程 管理员 学生信息 学生 课程信息 课程 教师 教师信息 学生信息 选择和查询询 修改 管理 管理 管理 管理 修改删除添加 学生 管理 管理员 管理 系 属于
28、 课程 属于 管理 属于 教 提交 选 添加成绩 选课信息 教师 四、E-R模型转换成关系数据库 E-R模型转换成关系数据库的一般规则: 1. 将每一个实体转换成一个关系。 2. 所有主码必须定义非空。 3. 对于二元联系,按照下列规则定义外码: a.一对一联系:将”一”表中的主码作为外码放在”多”表中。如上图中的计算机系与教师的关系,计算机系只有一个系主任。 b.弱实体:将父表的主码作为外码放在弱实体中。如上图学生与亲属的关系中亲属就是弱实体。 c.一对多联系:将一个表的主码作为外码放在另一个表中。如上图中的班级与学生的联系。 d
29、多对多联系:建立复合实体,复合实体的主码由两个父实体的主码复合组成。如上图中学生与课表的关系就是多对多的联系,应建立一个复合实体:成绩。 设计关系模型如下:下划线为关系的码 学生(学号,姓名,性别,年龄,班级,所在系号,备注) Student(Student_id, Student_name, Student_sex, Student_time, Student_classid, Student_age, Student_else) 此为学生实体对应的关系模式。 教师(教师号,姓名,班级,系别,备注) Teacher(Teacher_id, Teacher_name
30、 Teacher_class, Teacher_dept, Teacher_else) 此为教师实体对应的关系模式。 课程(课程号,课程名,系名,学分,开课时间,课程表) Course(Course_id, Course_name, Course_time, Class_credit, Course_dept) 此为课程实体对应的关系模式。 管理员(用户名,密码,登录类型) Manger(Manger_id, Manger_Passwod, Manger _Power) 此为管理员实体对应的关系模式。 五、数据库设计与建立 在系统
31、中设立6张表:除了有学生、教师、课程基本表分别记录学生、教师、课程的基本信息外,考虑到便于系统管理员管理学生用户,设计了用户表,记录用户登录系统时的用户名、密码以及权限。同时对于学生选课和教师教课都应该有记录,因此设计了学生选课和教师教课表,其中学生选课表里,包含了学生选课的内容和各门课的成绩,便于管理员对成绩的录入、修改以及用户对成绩的查询和检索:教师教课表的内容主要是包含教师所教课程的信息。 首先是用户信息数据表(Manger),用于存储学生管理系统中所有参与人员的信息,包括教师登录信息、学生登录信息,这样做的目的是可以方便系统判断用户登录的类型,以及对用户类型的统一管理。用户信
32、息没有包括太多的内容,主要有用户登录号、用户密码、用户权限代码,读者可以根据自己的具体需要添加字段,表1显示了表中各个字段的数据类型、大小以及简短描述。 表1 用户信息数据表(Manger) 列 名 数据类型 宽度 字段描述 Manger _id Char 10 用户名,设为主键 Manger_Passwod Char 20 用户登录本系统时的用户密码 Manger _Power Int 4 用户的类型,0-本校注册学生,1-管理员 在系统中,最重要的对象是学生,系统设计了学生信息数据表(student),用于存储本校所有学生信息,其中包
33、括在校生,也包括已毕业学生。表5-7中显示了表中各个字段的数据类型、大小以及简短描述。 表2 学生信息数据表(Student) 列 名 数据类型 宽度 字段描述 Student_id char 20 学生的学号,设为主键 Student_name char 20 学生姓名 Student_sex Char 4 学生性别 Student_time Char 8 学生入学时间 Student_classid char 50 学生所在班级号 S
34、tudent_age int 4 学生年龄 Student_else char 50 备注 系统构建教师信息数据表(teacher)用来存储本校所有教师信息,教师信息表给出一个较为简单的结构。表3显示了表中各个字段的数据类型、大小以及简短描述。 表3 教师信息数据表(teacher) 列 名 数据类型 宽度 字段描述 Teacher_id char 5 记录教师号,设为主键 Teacher_name char 10 记录教师姓名 Teacher_class ch
35、ar 20 记录教师所在班级 Teacher_dept char 20 记录教师所在系 Teacher_else char 50 备注 每一个教师讲授什么课程都有记录,而且一门课可能会有多个老师授课。因此必须包括课程名称、年度、学期、班级号等,以便管理员或学生查询信息,系统采用教师_课程记录数据表(teacher_course)记录以上信息。如表4所示表中各个字段的数据类型、大小以及简短描述。 表4教师-课程记录数据表(teacher_course) 列 名 数据类型 宽度 字段描述 ID Int
36、 4 教师-课程记录的惟一ID号,设为主键 Teacher id Varchar 50 教师号 Course id Varchar 50 教师所任课程号 Teacher_class Varchar 50 教师所教班级号 Course_year Char 5 年度学期 Course_men Int 4 教师所任选修课程限报人数 学生总是离不开课程,系统设计了课程信息数据表(course),用于存储本校所有课程信息,其中包括课程类型、学分等。表5显示了表中各个字段的数据类
37、型、大小以及简短描述。 表5课程信息数据表(course) 列 名 数据类型 宽度 字段描述 Course_id char 50 课程号,设为主键 Course_name char 50 课程名 Course_time char 40 开课时间 Class_credit Int 4 课程学分 Course_dept char 50 课程所在系 学生所学课程都会有成绩,并且每个学生每一门课只有一个成绩。系统设计了学生-课程信息数据表(student—course),用于存储本校所有学生所学课程信息,表6显示了表中各个字段的数据类型、大
38、小以及简短描述。 表6 学生-课程记录数据表(student_course) 列 名 数据类型 宽度 字段描述 ID char 10 学生-课程记录的惟一ID号,设为主键 Studen_id char 10 学生学号 Course_id char 10 学生所学课程号 Stude_grade Int 4 学生成绩 Course_dept char 50 学生所学课程所在系 系统使用Microsoft SQL Server 2000建立数据库,库名为Elective。 库
39、中设计的六个表 使用T-SQL建立数据库Elective create database elective on ( name='electivedb', filename='e:\database\elective.mdf', size=2, maxsize=10, filegrowth= 1 ) log on ( name='electivelog', filename='e:\database\elective_log.ldf', size=1, maxsize=5, filegrowth=1
40、) go 1、 使用T-SQL脚本建立学生信息数据表(Student)。 create table student( S_id char(20) primary key, S_name char(40) not null , S_sex char(4) not null, S_dept char(20) not null, S_age char(8) not null, S_classid char(50) not null , S_else char(50) not null , ) 2、 使用T-SQL脚
41、本建立教师信息数据表(Teacher)。 create table teacher( T_id char(5) primary key, T_name char(10) not null, T_class char(20) not null, T_dept char(20) not null, T_else char(50)not null, ) 3、 使用T-SQL脚本建立课程信息数据表(Course)。 create table course( C_id char(10) primary key, C_name cha
42、r(20) not null, C_time char(40) not null, C_credit int not null, C_dept char(50) not null, ) 4、使用T-SQL脚本建立课程信息数据表(Student_Course)。 create table student_course( ID char(10) primary key, S_id char(10) not null, C_id char(10) not null, S_grade int not nul
43、l, C_dept char(50) not null, ) 5、使用T-SQL脚本建立课程信息数据表(Teacher_Course)。 create table teacher_course( ID char(10) primary key, T_id char(10) not null, C_id char(10) not null, C_men int not null, T_class char(40) not null, C_year char(50) not null, )6、使用T-SQ
44、L脚本建立课程信息数据表(Manger)。 create table manger( M_id char(10) primary key, M_password char(20) not null, M_power int not null, ) 构建了数据库的表结构后,接下来创建负责表中信息查询、插入、修改、删除以及授权的相关存储过程(只举例关于表Student ,Course,Student_Course之间的操作,同理可以对表teacher,Course,Student_Course进行相关操作)。具体操作如下所示: (一)、查询 基
45、本查询 1、查询DB_Design课程的课程号和学分 SELECT C_id, C_redit FROM Course WHERE C_name LIKE ‘DB\_Design’ ESCAPE ‘\’ ; 2、某些学生选修课程后没有参加考试,所以有选修课记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号: SELECT S_id, C_id FROM Student_Course WHERE S_grade IS NULL; 3、查询所有有成绩的学生学号和课程号 SELECT S_id, C_id FROM Student_Course
46、WHERE S_grade IS NOT NULL; 4、查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列 SELECT S_id, S_grade FROM Student_Course WHERE C_id = ‘3’ ORDER BY S_grade DESC; 5、查询选修了课程的学生人数 SELECT COUNT(DISTINCT S_id) FROM Student_Course 6、计算选修了1号课程的学生平均成绩 SELECT AVG(S_grade) FROM Student_Course WHE
47、RE C_id = ‘1’; 7、求各个课程号及相应的选课人数 SELECT C_id, COUNT(S_id) FROM Student_Course GROUP BY C_id 8、查询选修了3门以上课程的学生学号 SELECT S_id FROM Student_Course GROUP BY S_id HAVING COUNT(*)>3; 连接查询 1、 查询每个学生及其选修课程的情况 SELECT Student.S_id, S_name, S_sex, S_age, S_dept, C_id, S_grade FROM Studen
48、t, Student_Course WHERE Student.S_id = Student_Course.S_id; (自然连接) SELECT Student.*, Student_Course.* FROM Student, Student_Course; (广义笛卡尔积连接) 2、外连接 查询每个学生及其选修课程的情况 SELECT Student.S_id, S_name, S_sex, S_age, S_dept, C_id, S_grade FROM Student, Student_Course WHERE Student.S_id = St
49、udent_Course.S_id(*); 查询学校设置的所有课程及其选修情况 SELECT C_id, C_name, C_redit, S_id, S_grade FROM Course, Student_Course WHERE Course.C_id = Student_Course.C_id(*); 3、多表连接 例 查询每个学生的学号、姓名、选修的课程名及成绩 SELECT Student.S_id, S_name, C_name FROM Student, Course, Student_Course WHERE Student.S_id = Stu
50、dent_Course.S_id AND Student_Course.C_id = Course.C_id 4、带有IN谓词的子查询 查询与“刘晨”在同一个系学习的学生 – 使用嵌套实现此查询 SELECT S_id, S_name, S_dept FROM Student WHERE S_dept IN (SELECT S_dept FROM Student WHERE S_name = ‘刘晨’); 6、使用嵌套查询实现 查询选修了课程名为“信息系统”的学生学号和姓名 SELECT S_id, S_na






