(2025年)ACCESS习题及答案_第1页
(2025年)ACCESS习题及答案_第2页
(2025年)ACCESS习题及答案_第3页
(2025年)ACCESS习题及答案_第4页
(2025年)ACCESS习题及答案_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(2025年)ACCESS习题及答案一、数据库基础与表操作1.某社区卫生服务中心需建立“家庭健康档案”数据库,包含以下信息:家庭编号(唯一标识)、户主姓名、联系方式(手机/固定电话)、居住地址(省/市/区/详细地址)、家庭成员姓名、与户主关系、出生日期、身高(cm)、体重(kg)、过敏药物(可能多个)、近一年就诊记录(日期、医院、诊断结果)。(1)请设计该数据库的表结构,要求至少包含3张表,说明各表名称、字段及字段类型(需符合Access规范),并指出主键。(2)分析“过敏药物”字段若采用文本类型存储可能存在的问题,提出优化方案。答案:(1)表结构设计如下:-家庭信息表(家庭编号,户主姓名,联系方式,居住地址省,居住地址市,居住地址区,居住地址详细)字段类型:家庭编号(文本,长度8)、户主姓名(文本,长度10)、联系方式(文本,长度15)、居住地址省(文本,长度10)、居住地址市(文本,长度15)、居住地址区(文本,长度20)、居住地址详细(文本,长度50)。主键:家庭编号。-家庭成员表(成员ID,家庭编号,成员姓名,与户主关系,出生日期,身高,体重)字段类型:成员ID(自动编号)、家庭编号(文本,长度8)、成员姓名(文本,长度10)、与户主关系(文本,长度5)、出生日期(日期/时间)、身高(数字,单精度)、体重(数字,单精度)。主键:成员ID;外键:家庭编号(关联家庭信息表)。-就诊记录表(就诊ID,成员ID,就诊日期,就诊医院,诊断结果)字段类型:就诊ID(自动编号)、成员ID(数字,长整型)、就诊日期(日期/时间)、就诊医院(文本,长度30)、诊断结果(文本,长度100)。主键:就诊ID;外键:成员ID(关联家庭成员表)。(2)“过敏药物”若直接存储为文本类型(如“青霉素,头孢”),会导致数据冗余(同一药物被多次存储)、无法高效查询(需用Like模糊搜索)、数据一致性差(可能出现“青霉素”“青霉素G”等不同写法)。优化方案:新增“药物字典表”(药物ID,药物名称),在家庭成员表中添加“过敏药物ID”字段(文本,长度200),存储多个药物ID(如“1,3,5”),通过拆分查询关联药物名称,或使用多值字段(Access2007+支持)直接存储药物ID列表,同时保留药物字典表确保数据规范。2.现有“学生信息表”结构:学号(文本,主键)、姓名(文本)、性别(文本)、入学时间(日期/时间)、专业(文本)、班级(文本)。需添加“身份证号”字段(18位,包含数字和字母X),并设置验证规则确保输入格式正确。(1)写出“身份证号”字段的类型及字段大小设置。(2)设计验证规则表达式,要求:长度必须为18位;前17位为数字,第18位为数字或X(大小写不敏感)。答案:(1)字段类型为“文本”,字段大小设置为18(因包含字母X,不能使用数字类型)。(2)验证规则表达式:Len([身份证号])=18AndIsNumeric(Left([身份证号],17))And(Right([身份证号],1)Like"[0-9Xx]")说明:Len确保长度18位;Left([身份证号],17)提取前17位,IsNumeric验证是否为数字;Right([身份证号],1)提取最后1位,Like"[0-9Xx]"允许数字或X(不区分大小写)。3.在“库存管理”数据库中,“商品表”包含字段:商品ID(主键)、商品名称、分类(如“食品”“日用品”)、单价、库存数量;“采购记录表”包含字段:采购ID(主键)、商品ID、采购数量、采购日期、供应商。需为“商品表”的“库存数量”字段创建索引,以优化“按库存数量筛选(如库存<100)”的查询效率。(1)说明应创建何种类型的索引(普通索引/唯一索引/主索引),并简述原因。(2)若“商品名称”字段存在重复值(如同类不同规格商品),是否可以为其创建索引?简述理由。答案:(1)应创建普通索引(非唯一索引)。原因:“库存数量”字段允许重复值(不同商品可能有相同库存数量),创建普通索引可加速基于该字段的范围查询(如库存<100),但无需强制唯一。(2)可以创建普通索引。索引不强制要求字段值唯一,即使“商品名称”有重复值,创建索引后仍可优化按商品名称查询的效率(如查找所有名称含“牛奶”的商品),但需注意索引会增加数据更新(插入/删除/修改)的开销,需权衡查询与更新频率。二、查询设计4.某“科研项目管理”数据库包含以下表:-项目表(项目ID,项目名称,负责人ID,起始日期,结束日期,预算金额)-人员表(人员ID,姓名,职称,所属部门)-参与表(参与ID,项目ID,人员ID,在研角色)要求创建查询,输出以下信息:项目名称、负责人姓名、项目周期(结束日期-起始日期,单位:天)、参与人数(每个项目的参与人员数量),结果按项目周期从长到短排序。(1)写出查询设计视图中需添加的表及关联关系。(2)写出“项目周期”字段的计算表达式(需处理空值,若结束日期或起始日期为空则显示“未完成”)。(3)写出“参与人数”字段的统计方式。答案:(1)需添加项目表、人员表(通过项目表.负责人ID=人员表.人员ID关联)、参与表(通过项目表.项目ID=参与表.项目ID关联)。(2)项目周期:IIf(IsNull([结束日期])OrIsNull([起始日期]),"未完成",DateDiff("d",[起始日期],[结束日期]))(3)参与人数:在“参与表”中对人员ID进行计数,字段设置为“参与人数:Count(参与表.人员ID)”,分组方式为“项目表.项目ID”(或“项目名称”,需确保项目名称唯一)。5.基于“学提供绩表”(学号,姓名,课程ID,成绩)和“课程表”(课程ID,课程名称,学分),创建参数查询,输入“最低学分”和“最高分数”,输出课程名称、选该课程的学生人数、平均分(保留2位小数),条件:课程学分≥输入的最低学分,且该课程中至少有1名学提供绩≤输入的最高分数。(1)写出参数提示信息。(2)写出“平均分”字段的计算表达式。(3)写出查询的SQL语句(需包含参数和条件)。答案:(1)参数提示:输入最低学分:[请输入最低学分];输入最高分数:[请输入最高分数](2)平均分:Round(Avg([成绩]),2)(3)SQL语句:SELECT课程表.课程名称,Count(学提供绩表.学号)AS学生人数,Round(Avg(学提供绩表.成绩),2)AS平均分FROM课程表INNERJOIN学提供绩表ON课程表.课程ID=学提供绩表.课程IDWHERE课程表.学分>=[请输入最低学分]AND学提供绩表.成绩<=[请输入最高分数]GROUPBY课程表.课程名称,课程表.学分HAVINGCount(学提供绩表.学号)>=1;三、窗体与报表6.设计“员工信息录入”窗体,包含以下控件:文本框(绑定“姓名”字段)、组合框(绑定“部门”字段,数据来源为“部门表”的“部门名称”)、复选框(绑定“是否已婚”字段,是/否类型)、命令按钮(点击后清空所有输入控件)。(1)说明组合框的“行来源类型”和“行来源”设置。(2)编写命令按钮的“单击”事件代码(使用VBA)。答案:(1)行来源类型:表/查询;行来源:SELECT部门表.部门名称FROM部门表ORDERBY部门表.部门名称;(2)VBA代码:PrivateSubcmdClear_Click()Me!姓名=NullMe!部门=NullMe!是否已婚=FalseEndSub四、宏与VBA7.现有“订单表”(订单ID,客户ID,订单日期,总金额),需创建宏,实现以下功能:打开“订单查询”窗体时,若当前日期与订单日期的间隔超过30天且总金额>5000,则弹出消息框提示“需跟进超期大额订单”。(1)列出宏需使用的操作(按执行顺序)。(2)写出消息框操作的条件表达式。答案:(1)操作顺序:OpenForm(打开“订单查询”窗体)、条件操作(若满足条件则执行MsgBox)。(2)条件表达式:DateDiff("d",[订单表]![订单日期],Date())>30And[订单表]![总金额]>5000五、综合应用8.某“图书借阅”数据库包含:-图书表(ISBN,书名,作者,出版社,出版日期,库存量)-读者表(读者ID,姓名,类型(教师/学生),可借数量)-借阅表(借阅ID,ISBN,读者ID,借阅日期,应还日期,实际归还日期)需求:每月1日提供“超期未还图书报表”,包含读者姓名、书名、超期天数(实际归还日期为空时,超期天数=当前日期-应还日期;否则=实际归还日期-应还日期)、超期违约金(超期天数×0.5元,若未超期则为0)。(1)设计报表的数据源查询,写出SQL语句(需处理空值)。(2)说明报表中“超期天数”和“超期违约金”字段的计算方式(在报表设计视图中如何设置)。答案:(1)SQL语句:SELECT读者表.姓名,图书表.书名,IIf(IsNull(借阅表.实际归还日期),DateDiff("d",借阅表.应还日期,Date()),DateDiff("d",借阅表.应还日期,借阅表.实际归还日期))AS超期天数,IIf(IIf(IsNull(借阅表.实际归还日期),DateDiff("d",借阅表.应还日期,Date()),DateDiff("d",借阅表.应还日期,借阅表.实际归还日期))>0,IIf(IsNull(借阅表.实际归还日期),DateDiff("d",借阅表.应还日期,Date()),DateDiff("d",借阅表.应还日期,借阅表.实际归还日期))0.5,0)AS超期违约金FROM(读者表INNERJOIN借阅表ON读者表.读者ID=借阅表.读者ID)INNERJOIN图书表ON借阅表.ISBN=图书表.ISBNWHEREIIf(IsNull(借阅表.实际归还日期),DateDiff("d",借阅表.应还日期,Date()),DateDiff("d",借阅表.应还日期,借阅表.实际归还日期))>0;(2)在报表设计视图中,添加文本框控件,其“控件来源”分别设置为:-超期天数:=IIf(IsNull([实际归还日期]),DateDiff("d",[应还日期],Date()),DateDiff("d",[应还日期],[实际归还日期]))-超期违约金:=IIf([超期天数]>0,[超期天数]0.5,0)9.在“客户关系管理”数据库中,“客户表”包含“上次联系日期”字段(日期类型)。需编写VBA函数,输入客户ID,返回“联系状态”:若上次联系日期在最近7天内,返回“近期联系”;若在最近30天内(超过7天),返回“中期联系”;超过30天,返回“需跟进”;无上次联系日期,返回“未联系”。(1)写出函数的完整VBA代码(需处理空值)。答案:FunctionGetContactStatus(CustomerIDAsString)AsStringDimLastContactDateAsDateDimDaysDiffAsIntegerOnErrorResumeNext'处理可能的记录不存在错误LastContactDate=DLookup("上次联系日期","客户表","客户ID='"&CustomerID&"'")IfIsNull(LastContactDate)ThenGetContactStatus="未联系"ExitFunctionEndIfDaysDiff=DateDiff("d",LastContactDate,Date())SelectCaseDaysDiffCase0To7GetContactStatus="近期联系"Case8To30GetContactStatus="中期联系"CaseElseGetContactStatus="需跟进"EndSelectEndFunction10.优化“销售统计表”的查询效率,该表包含10万条记录,字段有销售ID(主键)、商品ID、销售日期、销售数量、单价、金额(=销售数量×单价)。常见查询条件为:按商品ID筛选某时间段内的销售数据,并汇

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论