版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2025年全国计算机二级Access数据库设计高级案例试题考试时间:______分钟总分:______分姓名:______一、请根据以下需求,设计数据库结构并完成相关操作。1.设计一个“学生选课系统”的数据库概念结构(E-R图),需包含至少两个实体,并明确实体间的联系(用线条和基数标注)。实体属性至少包含各自唯一标识的属性。2.根据上一步设计的E-R图,将其转换为关系模式(列出所有关系模式,并用下划线标明主键)。3.使用SQLDDL语句创建以下两个表:*`学生`表:包含`学号`(文本类型,长度10,主键)、`姓名`(文本类型,长度8)、`性别`(文本类型,长度2)、`专业`(文本类型,长度20)字段。*`课程`表:包含`课程号`(文本类型,长度6,主键)、`课程名`(文本类型,长度40)、`学分`(数字类型,小数位数0)字段。4.使用SQLDDL语句创建一个名为`选课`的表,用于存储学生选课信息,包含`学号`(文本类型,长度10,外键关联`学生`表)、`课程号`(文本类型,长度6,外键关联`课程`表)字段,并设置这两个字段共同作为主键。二、假设已经存在“学生选课系统”数据库,其中包含上一题创建的`学生`、`课程`和`选课`三个表,并且表间通过`学号`和`课程号`建立了外键约束。请使用SQLDML语句完成以下查询操作:1.查询所有学生的学号、姓名和性别,结果按姓名降序排列。2.查询选修了课程名为“数据库原理”的学生的学号和姓名。3.查询每门课程的名称和选修该课程的学生人数,结果按学生人数降序排列。4.查询平均学分大于等于3的所有课程的课程号和课程名。5.查询既没有选修课程编号为"CS101",也没有选修课程编号为"MA202"的学生姓名。三、在“学生选课系统”数据库中,请使用Access设计视图或SQLDML语句完成以下操作:1.创建一个查询,用于输入学生姓名,根据姓名查找并显示该学生的学号、姓名、性别、专业以及所选课程的课程号和课程名。该查询应为参数查询。2.创建一个查询,用于计算每个学生的总学分。要求:查询结果包含学号、姓名、专业以及总学分。总学分字段需使用计算字段实现,计算所有该学生选修课程学分的总和。假设`选课`表存储了选课关系,但不存储学分信息,需要关联`课程`表获取学分。四、假设当前数据库中存在`学生`表(字段:学号C(10)PK,姓名C(8),专业C(20))和`成绩`表(字段:学号C(10)FK,课程号C(6)FK,成绩I(3))。请使用VBA代码(写在Access模块中或使用代码视图中的事件过程)完成以下功能:编写一个名为`检查重复记录`的VBA子程序。该子程序没有参数,其功能是:检查`成绩`表中是否存在重复的`学号`和`课程号`组合(即一个学生对于同一课程有多条成绩记录)。如果存在重复组合,则在消息框中提示“存在重复记录!”,否则提示“无重复记录”。五、在“学生选课系统”数据库中,请完成以下界面与报表设计相关的操作(描述如何操作即可,无需实际截图或编写代码):1.创建一个名为`学生信息录入`的窗体,用于输入学生信息。窗体包含文本框控件用于输入`学号`、`姓名`、`性别`、`专业`,并设置相应的控件来源指向`学生`表。为`学号`字段设置输入掩码,要求前6位为数字,后4位为字母或数字组合。设置窗体运行时的属性,使其在打开时最大化显示。2.创建一个报表,命名为`课程统计报表`。该报表基于`课程`表和`选课`表联合查询的结果,显示每门课程的`课程名`、`学分`以及选修该课程的学生人数。报表中需包含分组和汇总,按`课程名`分组,并在每组中汇总显示选修人数。要求报表使用自动创建报表的“表格”布局,并设置报表标题为“课程选课统计”。---试卷答案一、1.(略,E-R图需自行绘制,包含学生(学号,姓名,性别,专业),课程(课程号,课程名,学分)两个实体,学生与课程间为多对多联系,通过中间表选课(学号,课程号)表示)2.学生(学号PRIMARYKEY,姓名,性别,专业)课程(课程号PRIMARYKEY,课程名,学分)选课(学号REFERENCES学生(学号),课程号REFERENCES课程(课程号),PRIMARYKEY(学号,课程号))3.CREATETABLE学生(学号TEXT(10)PRIMARYKEY,姓名TEXT(8),性别TEXT(2),专业TEXT(20));CREATETABLE课程(课程号TEXT(6)PRIMARYKEY,课程名TEXT(40),学分INT);4.CREATETABLE选课(学号TEXT(10)REFERENCES学生(学号),课程号TEXT(6)REFERENCES课程(课程号),PRIMARYKEY(学号,课程号));二、1.SELECT学号,姓名,性别FROM学生ORDERBY姓名DESC;2.SELECT学生.学号,学生.姓名FROM学生INNERJOIN选课ON学生.学号=选课.学号INNERJOIN课程ON选课.课程号=课程.课程号WHERE课程.课程名='数据库原理';3.SELECT课程.课程名,COUNT(DISTINCT选课.学号)AS学生人数FROM课程INNERJOIN选课ON课程.课程号=选课.课程号GROUPBY课程.课程名ORDERBY学生人数DESC;4.SELECT课程号,课程名FROM课程WHERE学分>=3;5.SELECT学生.姓名FROM学生WHERE学号NOTIN(SELECT选课.学号FROM选课WHERE课程号='CS101')AND学号NOTIN(SELECT选课.学号FROM选课WHERE课程号='MA202');三、1.创建查询名为“按姓名查学生”,查询类型选择“参数查询”。添加“学生”表和“选课”表。在字段列表中添加学生表字段:学号,姓名,性别,专业。添加选课表字段:课程号,课程名。设置查询条件:在“选课”表“学号”字段条件行输入“=[学生]![姓名]”,在“选课”表“课程号”字段条件行输入“=[学生]![学号]”。设置查询属性“数据操作”为“查询生成表”或“更新查询”等根据实际需求选择,若仅显示则选择“SQL视图中显示”。2.创建查询名为“学生总学分”,查询类型选择“交叉表查询”或“SQL查询”。联接“学生”表和“课程”表和“成绩”表。添加字段:学生表“学号”,学生表“姓名”,学生表“专业”,课程表“学分”。使用SQL语句实现可能为:SELECT学生.学号,学生.姓名,学生.专业,SUM(成绩.成绩)AS总学分FROM学生INNERJOIN成绩ON学生.学号=成绩.学号INNERJOIN课程ON成绩.课程号=课程.课程号GROUPBY学生.学号,学生.姓名,学生.专业;四、```vbaSub检查重复记录()DimrsAsRecordsetDimstrSQLAsStringDimblnFoundAsBooleanblnFound=FalsestrSQL="SELECT学号,课程号,COUNT(*)AS重复次数FROM成绩GROUPBY学号,课程号HAVINGCOUNT(*)>1;"Setrs=CurrentDb.OpenRecordset(strSQL,dbOpenSnapshot)IfNotrs.EOFThenMsgBox"存在重复记录!",vbExclamation,"检查结果"blnFound=TrueElseMsgBox"无重复记录",vbInformation,"检查结果"EndIfrs.CloseSetrs=NothingIfblnFound=FalseThenMsgBox"无重复记录",vbInformation,"检查结果"EndIf'或者更简洁的IF'IfNotrs.EOFThen'MsgBox"存在重复记录!",vbExclamation,"检查结果"'Else'MsgBox"无重复记录",vbInformation,"检查结果"'EndIf'rs.Close'Setrs=NothingEndSub```解析思路:1.定义变量:记录集rs,SQL语句字符串strSQL,布尔变量blnFound(用于标记是否找到重复)。2.初始化blnFound为False。3.构建SQL查询语句:选择学号和课程号,并计算每个组合的出现次数(COUNT(*)),使用GROUPBY分组,使用HAVING筛选出现次数大于1的组合。4.使用CurrentDb.OpenRecordset执行SQL语句,打开一个只读记录集rs。5.检查记录集rs是否为空(EOF)或是否有重复次数大于1的记录。如果是,说明存在重复,提示“存在重复记录!”,并将blnFound设为True。6.如果记录集为空(即没有重复),提示“无重复记录”。7.关闭记录集并释放资源。8.使用一个额外的If语句,如果blnFound仍为False(即没有找到重复),再次提示“无重复记录”,使结果更明确。**替代思路:*也可以使用Exists函数检查SQL语句返回的记录集是否有数据。五、1.创建窗体命名为“学生信息录入”。在窗体设计视图中,添加4个文本框控件,分别命名为“txt学号”、“txt姓名”、“txt性别”、“txt专业”。设置每个文本框的“控件来源”属性:*txt学号->学生.学号*txt姓名->学生.姓名*txt性别->学生.性别*txt专业->学生.专业*设置txt学号的“输入掩码”属性为“\0\0\0\0\0\0A\A\A\A\A\A;0;”,表示前6位数字,后4位字母或数字。*设置窗体的“运行时”属性“最大化”为“是”。2.创建报表命名为“课程统计报表”。在报表设计视图中:*基于创建的查询(假设名为“课程统计查询”),该查询需要联接课程表和选课表,并使用GROUPBY和COUNT(DISTINCT选课.学号)进行计算。*使用“自动创建报表-表格”布局。*在报表页眉或页面页眉区域添加一个文本框,设置其“控件来源”为“课程.课程名”,并设置“标题”属性为“课程统计报表”。*在主体节区域,添加文本框控件分别显示“课程统计查询”中的“课程名”和“课程名”,并设置它们的“控件来源”。*添加一个计算文本框用于显示选修人数,控件名为“txt人数”,设置其“控件来源”为
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 忻州市繁峙县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 晋城市沁水县2025-2026学年第二学期四年级语文第五单元测试卷(部编版含答案)
- 来宾市金秀瑶族自治县2025-2026学年第二学期五年级语文期中考试卷(部编版含答案)
- 黄南藏族自治州泽库县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 怀化市中方县2025-2026学年第二学期六年级语文第五单元测试卷部编版含答案
- 商品房销售方案
- 深度解析(2026)《CBT 4139-2016涂装工艺计算机辅助设计要求》
- 2026-2027年用于高能物理与核聚变实验装置的抗辐射超高速数据采集与处理专用芯片获国际大科学工程合作项目长期定向研发合同
- 江苏中考数学试题及答案
- 16 胡萝卜先生的长胡子 +公开课一等奖创新教案+素材
- 社区零星维修工程投标方案(技术标)
- 碳捕集、利用与封存技术
- 培训膜片ecs700系统概述新
- 【新高教版中职数学基础模块下册PPT】7.2旋转体
- 抑郁病诊断证明书
- 全国优质课一等奖小学四年级道德与法治下册《学会合理消费》(精品课件)
- 核磁共振上册氢谱
- GB/T 32299-2015航天项目风险管理
- 点集拓扑讲义
- 2021年部编版五年级下册语文二次备课表格式教案
- 过程特殊特性清单1
评论
0/150
提交评论