logo资料库

SQL学生证管理系统实验报告.doc

第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
资料共12页,剩余部分请下载后查看
一、实验题目 学生证管理系统数据库的设计与实现 描述:设计一个学生证管理系统。实现下列功能: 1.录入某位学生的学生证信息 2.给定学号,查询某位学生的学生证信息; 3.给定班号,显示该班所有学生的学生证信息; 4.给定学号,修改该学生的学生证信息; 5.给定学号,删除该学生的学生证信息; 三、实验目的 数据库课程设计课程实验是对学生的一种全面综合训练,是与课堂听讲、自 学和练习相辅相成的必不可少的一个教学环节,通过实验达到深化理解和灵活掌 握教学内容的目的,以及提高学生分析问题、解决问题的应用能力。同时,使学 生的工作规范和科学作风得到培养。 通过该课程的学习,要求学生能独立分析问题,设计算法,实现程序的各项 功能,得到正确的可执行程序,学会调试程序,对设计过程进行系统的总结。 本实践课的主要目的: 1、掌握运用数据库原理进行系统分析和设计的方法; 2、掌握关系数据库的设计方法; 3、掌握利用 SQL Server 2000 技术; 4、熟悉各种 SQL 语句及对数据库的访问方法。 四、实验要求 1.对各个系统进行系统功能需求分析 2. 数据库设计分析阶段,进行详细的数据库需求分析,进行概念数据库的 设计,画出数据库的 E-R 图(局部和整体 E-R 图) 3. 设计出详细的逻辑数据库结构,将各个实体和联系转化为相应的二维表 即关系模式,指定各个关系的主关键字和外部关键字,并对各个关系的约束加以 限定 4. 通过企业管理器或是查询分析器实现各个二维关系(建议最好用 SQL 代 码实现),要求建立相关的索引 5. 根据系统功能需求设计相应的查询视图 6. 要求根据系统功能需求建立存储过程 7. 根据功能需求建立相应的触发器以保证数据的一致性
8. 通过建立用户和权限分配实现数据库一定的安全性,考虑数据库的备份 与恢复 五、实现思路 (一)系统需求分析 需求分析师整个数据库设计过程的基础,要收集数据库所有用户的信息内容 和处理要求,并加以规格化分析。这是最费时、最复杂的一步,但是也是最重要 的一步,相当于待构建的数据库大厦的地基,它决定了以后各步设计的速度和质 量。需求分析做的不好,可能会导致整个数据库设计返工重做。在分析用户需求 时,要确保用户目标的一致性。 需求分析的任务是:对现实世界要处理的对象(组织、部门、企业)等进行 详细的调查,通过对原系统的了解,收集支持新系统的基础数据并对其进行处理, 在此基础上确定新系统的功能。 具体地说,需求分析阶段的任务包括下述三项。 1.调查分析用户活动 2.收集和分析需求数据,确定系统边界 3.编写系统分析报告 在本课程设计中,是对学生证的信息进行管理,学生证的信息不仅包括学生 本身信息,也包括系别的信息及注册学生证的相关注册信息,因此本课程设计中 要用到三个表,即学生信息表、系别信息表和学生证注册表。 对学生证信息的处理包括信息的录入、查询、修改及删除。 1.数据流图: 录入、修改、查询、删除 学生证 身份证明 学生 注册 2.数据字典: 数据字典是对系统中数据的详细描述,是各类数据结构和属性的清单。任 何字典最主要的用途都是供人查阅不了解的条目的解释,数据字典的作用也正是 在软件分析和设计过程中给人提供关于数据的描述信息。数据流图和数据字典共 同构成系统的逻辑模型,没有数据字典数据流图就不严格,然而没有数据流图数 - 1 -
据字典也难于发挥作用。只有数据流图和对数据流图精确的定义放在一起,才能 共同构成系统的规格说明。 我们采用卡片形式书写数据字典,每张卡片上保存描述一个数据元素的信 息。这种做法较好的实现了上述要求,特别是更新修改起来很方便,能够单独处 理每个数据元素的信息。每张卡片上包含的信息有:名字,描述,定义,位置。 (1)对学生信息的管理 编号 1 名称 学生信息管理 简述 维护学生信息的完整性 输入 学生姓名、学号、班级号、出生年月、性别、民族、籍贯 处理 输出 1. 新增学生信息的录入 2. 修改学生信息 3. 删除学生信息记录 4. 查询个人学生信息及班级学生信息 学生信息表 (2)对系别信息的管理 编号 2 名称 系别信息管理 简述 维护系别信息的完整性 输入 系别名,班级号等 处理 输出 1.新增系别信息的录入 2.修改系别信息 3.删除系别信息记录 4.查询系别信息 系别信息表 (3)对学生证注册信息的管理 编号 3 名称 学生证注册信息管理 简述 维护学生证注册信息的完整性 - 2 -
输入 学号,注册日期,截止日期 处理 输出 1.新增注册信息的录入 2.修改注册信息 3.删除注册信息记录 4.查询注册信息 注册信息表 (二)概念结构设计 概念结构设计就是将需求分析得到的用户需求抽象为信息结构,即概念模 型。概念模型作为概念结构设计的表达工具,为数据库提供一个说明性结构,是 设计数据库逻辑结构即逻辑模型的基础。因此,概念模型必须具备以下特点: (1)语意表达能力丰富。 (2)易于交流和理解。 (3)易于修改和扩充。 (4)易于向各种数据模型转换。 1.局部 E-R 图: 学生信息表: 学生 姓名 学号 班级号 性别 出生年月 籍贯 民族 系别信息表: 系别 系别名 班级号 注册信息表: 注册信息 - 3 -
学号 注册日期 截止日期 2.全局 E-R 图: 系别 1 系别名 班级号 拥有 n 1 学生 学生证 1 注册日期 截止日期 注册 姓名 学号 性别 出生年月 籍贯 民族 (三)逻辑结构设计 数据库逻辑设计的任务是将概念模型转换成特定 DBMS 所支持的数据模型的 过程。 在本课程设计中,存在三个实体(学生,系别,学生证),两个联系(包含, 注册),在学生实体中,学号作为其关键字;在系别实体中,系别名作为其关键 字;而学生证的信息是由学生信息、系别信息及注册信息组成。因此得到下列关 系模式: 实体关系模式: 学生(学号,姓名,性别,出生年月,籍贯,民族) 系别(系别名,班级号) 联系关系模式: 拥有(系别名,学号) 注册(学号,注册日期,截止日期) (四)物理结构设计 数据库物理设计的任务是为上一阶段得到的数据库逻辑模式,即数据库的逻 辑结构选择合适的应用环境的物理结构,既确定有效地实现逻辑结构模式的数据 库存储模式,确定在物理设备上所采用的存储结构和存取方法,然后对该存储模 式进行性能评价、修改设计,经过多次反复,最后得到一个性能较好的存储模式。 数据库物理设计内容包括记录存储结构的设计,存储路径的设计,记录集簇的设 计。 - 4 -
确定数据存放位置:一台装有 Windows 系统的计算机的 C 盘。 确定存储结构:确定关系、索引、聚簇。 六、实现过程 (一)建表 在企业管理器中,新建数据库,并设置名为 student。 在该数据库中创建三个表,即学生信息表、系别信息表和注册信息表,分别 命名为 S,D,C。 首先设计学生信息表 S,包括以下属性,及各属性的数据类型和长度: 标识 stu_name stu_no class_no stu_sex 含义 姓名 学号 班级号 性别 出生年月 stu_birthday 民族 籍贯 stu_native stu_birthday 别 信 息 表 D: 含义 系别名 班级号 标识 dept class_no 注册信息表 C: 标识 stu_no 含义 学号 注册日期 login_date 截止日期 validity_date 数据类型 长度 约束 varchar char char char datetime char varchar 30 10 6 2 8 10 30 Not null Not null,primary key Not null Default ‘汉’ 数据类型 长度 约束 varchar char 30 6 Not null 数据类型 长度 约束 char datetime datetime 10 8 8 Not null,primary key Not null Not null 在设计表后即可向表中添加数据,在添加时要注意各项的约束条件及数据长 度限制。 - 5 -
(二)设置安全性及用户权限 1.在企业管理器中,安全性一项中,新建登录。 (1)设置登录名为 ll,并设置 SQL server 身份验证密码,及默认登录的 数据库为 student。 (2)设置该登录用户的服务器角色为:System Administrators。 (3)设置该登录用户均可访问所有数据库。 2.编辑 SQL server 注册属性。 (1)选择使用 SQL Server 身份验证。 (2)设置登录名 ll 及密码。 (3)选择总是提示输入登录名和密码。 3.在 student 数据库中,为用户设置权限。 (1)设置用户 ll 的数据库角色为:public 和 db_owner。 (2)设置 ll 的用户权限,即对 S,D,C 三个表均能够 Select,Update,Delete, Insert 和 DRI。 (三)创建学生证视图 创建学生证信息的视图,从三个表中选择学生证所需信息,以便对视图以外 的数据进行保密,简化了查询操作,并保证了数据的逻辑独立性。 以下创建视图 Stu_card,连接 D 表,C 表和 S 表,选择所需数据项组成视图。 Create view Stu_card(Dept,SName,SNo,ClassNo,Sex,Birthday,Native,Birthplace, LoginDate,ValidityDate) AS SELECT dept,S.*,login_date,validity_date FROM D,C,S WHERE D.class_no=S.class_no and C.stu_no=S.stu_no (四)实现对学生证的各操作功能 1.录入学生证信息 (1)对某学生的学生证信息录入之前,需先判断该学生的学生证信息是否存在, 如已经存在就不能再录入了;如果不存在,还需判断该学生的学生信息是否存在, 因为如果该学生已存在学生信息,但没有注册学生证,则该学生也不存在学生证 信息。在判断之后再根据不同情况进行学生证信息的录入。 创建存储过程 InsertIf,判断是否录入学生证信息: create procedure InsertIf ( @sno varchar(10) )--设置参数,通过学号查询该学生的学生证信息使否存在 as begin --判断是否录入 declare @cant varchar(50) declare @sel varchar(50) declare @aa varchar(70) declare @bb varchar(70) set @cant='信息已存在,不能录入' set @sel='无此学生证信息,请录入' - 6 -
set @aa='有此学生信息,但未注册,请注册(执行 InsertC)!' set @bb='无此学生信息,请录入学生信息并为其注册(执行 InsertS 和 InsertC)!' if exists (select * from Stu_card where SNo=@sno) print @cant else begin --如果存在该学生 --的学生证信息就打印出来 print @sel if exists(select * from S where Stu_no=@sno) --如果不存在 --该学生证信息,但存在学生信息,说明为注册 print @aa else print @bb --不存在学生信息,可以录入该学生信息并注册 end end (2)判断后,如不存在学生证信息但存在学生信息,则需注册。 创建存储过程 InsertC,对学生进行注册 create procedure InsertC ( --注册,向表 C 中添加学生证注册信息 @sno char(10), @logindate datetime, @validate datetime ) as insert into C values(@sno,@logindate,@validate) (3)判断后,如不存在学生信息,则需录入该学生信息,并进行学生证注册 创建存储过程 InsertS,录入学生信息: create procedure InsertS //向 S 表中添加学生信息 ( @sname varchar(30), @sno char(10), @classno char(6), @sex char(2), @birthday datetime, @native char(2), @birthplace varchar(30) ) as insert into S values(@sname,@sno,@classno,@sex,@birthday,@native,@birthplace) 在录入学生证信息时,先添加学生信息,再执行存储过程 InsertC,注册学 生证,才完整的录入一条学生证信息。 2.查询学生证信息 (1)给定学号,查询某位学生的学生证信息 由于学生证信息是在视图中体现的,因此通过查询视图,可以查看学生的学 - 7 -
分享到:
收藏