基于sql的学生成绩管理系统-课程设计报告.doc_第1页
基于sql的学生成绩管理系统-课程设计报告.doc_第2页
基于sql的学生成绩管理系统-课程设计报告.doc_第3页
基于sql的学生成绩管理系统-课程设计报告.doc_第4页
基于sql的学生成绩管理系统-课程设计报告.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

一、实验题目 学生证管理系统数据库的设计与实现描述:设计一个学生证管理系统。实现下列功能:1.录入某位学生的学生证信息2.给定学号,查询某位学生的学生证信息;3.给定班号,显示该班所有学生的学生证信息; 4.给定学号,修改该学生的学生证信息;5.给定学号,删除该学生的学生证信息;三、实验目的数据库课程设计课程实验是对学生的一种全面综合训练,是与课堂听讲、自学和练习相辅相成的必不可少的一个教学环节,通过实验达到深化理解和灵活掌握教学内容的目的,以及提高学生分析问题、解决问题的应用能力。同时,使学生的工作规范和科学作风得到培养。通过该课程的学习,要求学生能独立分析问题,设计算法,实现程序的各项功能,得到正确的可执行程序,学会调试程序,对设计过程进行系统的总结。本实践课的主要目的:1、掌握运用数据库原理进行系统分析和设计的方法;2、掌握关系数据库的设计方法;3、掌握利用sql server 2005技术;4、熟悉各种sql语句及对数据库的访问方法。四、实验要求1对各个系统进行系统功能需求分析2. 数据库设计分析阶段,进行详细的数据库需求分析,进行概念数据库的设计,画出数据库的e-r图(局部和整体e-r图)3. 设计出详细的逻辑数据库结构,将各个实体和联系转化为相应的二维表即关系模式,指定各个关系的主关键字和外部关键字,并对各个关系的约束加以限定4. 通过企业管理器或是查询分析器实现各个二维关系(建议最好用sql代码实现),要求建立相关的索引5. 根据系统功能需求设计相应的查询视图6. 要求根据系统功能需求建立存储过程7. 根据功能需求建立相应的触发器以保证数据的一致性8. 通过建立用户和权限分配实现数据库一定的安全性,考虑数据库的备份与恢复五、实现思路(一)系统需求分析 需求分析师整个数据库设计过程的基础,要收集数据库所有用户的信息内容和处理要求,并加以规格化分析。这是最费时、最复杂的一步,但是也是最重要的一步,相当于待构建的数据库大厦的地基,它决定了以后各步设计的速度和质量。需求分析做的不好,可能会导致整个数据库设计返工重做。在分析用户需求时,要确保用户目标的一致性。需求分析的任务是:对现实世界要处理的对象(组织、部门、企业)等进行详细的调查,通过对原系统的了解,收集支持新系统的基础数据并对其进行处理,在此基础上确定新系统的功能。具体地说,需求分析阶段的任务包括下述三项。1.调查分析用户活动2.收集和分析需求数据,确定系统边界3.编写系统分析报告在本课程设计中,是对学生证的信息进行管理,学生证的信息不仅包括学生本身信息,也包括系别的信息及注册学生证的相关注册信息,因此本课程设计中要用到三个表,即学生信息表、系别信息表和学生证注册表。对学生证信息的处理包括信息的录入、查询、修改及删除。1.数据流图: 录入、修改、查询、删除 学生证 身份证明学生 注册2.数据字典:数据字典是对系统中数据的详细描述,是各类数据结构和属性的清单。任何字典最主要的用途都是供人查阅不了解的条目的解释,数据字典的作用也正是在软件分析和设计过程中给人提供关于数据的描述信息。数据流图和数据字典共同构成系统的逻辑模型,没有数据字典数据流图就不严格,然而没有数据流图数据字典也难于发挥作用。只有数据流图和对数据流图精确的定义放在一起,才能共同构成系统的规格说明。 我们采用卡片形式书写数据字典,每张卡片上保存描述一个数据元素的信息。这种做法较好的实现了上述要求,特别是更新修改起来很方便,能够单独处理每个数据元素的信息。每张卡片上包含的信息有:名字,描述,定义,位置。(1)对学生信息的管理编号1名称学生信息管理简述维护学生信息的完整性输入学生姓名、学号、班级号、出生年月、性别、民族、籍贯处理1 新增学生信息的录入2 修改学生信息3 删除学生信息记录4 查询个人学生信息及班级学生信息输出学生信息表(2)对系别信息的管理编号2名称系别信息管理简述维护系别信息的完整性输入系别名,班级号等处理1.新增系别信息的录入2.修改系别信息3.删除系别信息记录4.查询系别信息输出系别信息表 (3)对学生证注册信息的管理 编号3名称学生证注册信息管理简述维护学生证注册信息的完整性输入学号,注册日期,截止日期处理1.新增注册信息的录入2.修改注册信息3.删除注册信息记录4.查询注册信息输出注册信息表(二)概念结构设计概念结构设计就是将需求分析得到的用户需求抽象为信息结构,即概念模型。概念模型作为概念结构设计的表达工具,为数据库提供一个说明性结构,是设计数据库逻辑结构即逻辑模型的基础。因此,概念模型必须具备以下特点:(1)语意表达能力丰富。(2)易于交流和理解。(3)易于修改和扩充。(4)易于向各种数据模型转换。1.局部e-r图: 学生信息表: 学生 姓名 学号 班级号 性别 出生年月 籍贯 民族 系别信息表: 系别 系别名 班级号 注册信息表: 注册信息 学号 注册日期 截止日期 2.全局e-r图: 系别 系别名 学生证 1 班级号 1 注册日期拥有 注册 截止日期 n 1 学生 姓名 学号 性别 出生年月 籍贯 民族 (三)逻辑结构设计数据库逻辑设计的任务是将概念模型转换成特定dbms所支持的数据模型的过程。在本课程设计中,存在三个实体(学生,系别,学生证),两个联系(包含,注册),在学生实体中,学号作为其关键字;在系别实体中,系别名作为其关键字;而学生证的信息是由学生信息、系别信息及注册信息组成。因此得到下列关系模式:实体关系模式: 学生(学号,姓名,性别,出生年月,籍贯,民族) 系别(系别名,班级号)联系关系模式: 拥有(系别名,学号) 注册(学号,注册日期,截止日期)(四)物理结构设计数据库物理设计的任务是为上一阶段得到的数据库逻辑模式,即数据库的逻辑结构选择合适的应用环境的物理结构,既确定有效地实现逻辑结构模式的数据库存储模式,确定在物理设备上所采用的存储结构和存取方法,然后对该存储模式进行性能评价、修改设计,经过多次反复,最后得到一个性能较好的存储模式。数据库物理设计内容包括记录存储结构的设计,存储路径的设计,记录集簇的设计。确定数据存放位置:一台装有windows系统的计算机的c盘。确定存储结构:确定关系、索引、聚簇。六、实现过程(一)建表 在企业管理器中,新建数据库,并设置名为student。在该数据库中创建三个表,即学生信息表、系别信息表和注册信息表,分别命名为s,d,c。首先设计学生信息表s,包括以下属性,及各属性的数据类型和长度:含义标识数据类型长度约束姓名stu_namevarchar30not null学号stu_nochar10not null,primary key班级号class_nochar6not null性别stu_sexchar2出生年月stu_birthdaydatetime8民族stu_nativechar10default 汉籍贯stu_birthdayvarchar30系别信息表d:含义标识数据类型长度约束系别名deptvarchar30not null班级号class_nochar6注册信息表c:含义标识数据类型长度约束学号stu_nochar10not null,primary key注册日期login_datedatetime8not null截止日期validity_datedatetime8not null 在设计表后即可向表中添加数据,在添加时要注意各项的约束条件及数据长度限制。(二)设置安全性及用户权限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 viewstu_card(dept,sname,sno,classno,sex,birthday,native,birthplace,logindate,validitydate)as select dept,s.*,login_date,validity_datefrom d,c,swhere d.class_no=s.class_no and c.stu_no=s.stu_no(四)实现对学生证的各操作功能1.录入学生证信息(1)对某学生的学生证信息录入之前,需先判断该学生的学生证信息是否存在,如已经存在就不能再录入了;如果不存在,还需判断该学生的学生信息是否存在,因为如果该学生已存在学生信息,但没有注册学生证,则该学生也不存在学生证信息。在判断之后再根据不同情况进行学生证信息的录入。创建存储过程insertif,判断是否录入学生证信息:create procedure insertif -判断是否录入( sno varchar(10) )-设置参数,通过学号查询该学生的学生证信息使否存在asbegindeclare cant varchar(50) declare sel varchar(50)declare aa varchar(70)declare bb varchar(70)set cant=信息已存在,不能录入set sel=无此学生证信息,请录入 set aa=有此学生信息,但未注册,请注册(执行insertc)!set bb=无此学生信息,请录入学生信息并为其注册(执行inserts和insertc)!if exists (select * from stu_card where sno=sno) -如果存在该学生print cant -的学生证信息就打印出来else beginprint selif exists(select * from s where stu_no=sno)-如果不存在print aa -该学生证信息,但存在学生信息,说明为注册else print bb -不存在学生信息,可以录入该学生信息并注册endend(2)判断后,如不存在学生证信息但存在学生信息,则需注册。创建存储过程insertc,对学生进行注册create procedure insertc -注册,向表c中添加学生证注册信息(sno char(10),logindate datetime,validate datetime)asinsert 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)给定学号,查询某位学生的学生证信息由于学生证信息是在视图中体现的,因此通过查询视图,可以查看学生的学生证信息.创建存储过程qureyinfor,传递参数sno,通过给定学号,判断该学生的学生证信息是否存在,如不存在,则告知不存在该学生证信息;如存在,则显示出该学生的学生证信息.create procedure qureyinfor( sno char(10)asbegin declare cant varchar(50)set cant=信息不存在if exists (select * from stu_card where sno=sno)select *from stu_cardwhere sno=snoelseprint cantend(2)给定班号,查询该班所有学生的学生证信息该查询与前一查询方法是相同的,通过查询视图,查看信息。创建存储过程displayinfor,传递参数classno,通过给定班级号,判断该班学生的学生证信息是否存在,如不存在,则告知不存在该班学生证信息;如存在,则显示出该班全部学生的学生证信息。create procedure displayinfor( classno char(6) )asbegin declare cant varchar(50)set cant=无相关信息if exists (select * from stu_card where classno=classno)select *from stu_cardwhere classno=classnoelseprint cantend3.修改学生证信息学生证信息的修改,虽然是对视图进行修改,但实质是对各表的修改。对于学生证信息的修改,是先通过给定学生学号,先判断该学生的学生证信息是否存在,如存在,再通过添加表信息来添加学生证信息。(1)首先创建存储过程modif,用来判断需修改的学生证信息是否存在,如不存在,则告知不存在该学生证信息;如存在,则将该学生证原本信息显示出来,表明可以进行修改。create procedure modif( sno char(10) )asbegindeclare cant varchar(50)set cant=无此学生证信息,不能修改if exists (select * from stu_card where sno=sno)beginselect * from stu_card where sno=snoendelse print cantend(2)再创建存储过程mods,modc及modd,通过更新操作update对表进行修改,以修改学生证信息。create procedure mods /更新s表中学生信息(sname varchar(30),sno char(10),classno char(6),sex char(2),birthday datetime,native char(2),birthplace varchar(30)as update s set stu_name=sname,stu_no=sno,class_no=classno,stu_sexsex,stu_birthday=birthday,stu_native=native,stu_birthplace=birthplacecreate procedure modd /更新d表中学生信息(dept varchar(30),classno char(6),)as update s set dept=dept,class_no=classnocreate procedure modc -修改表c中信息(sno char(10),logindate datetime,validate datetime)asupdate cset stu_no=sno,login_date=logindate,validity_date=validate4.删除学生证信息在删除学生证信息时,并不是将学生证中的学生信息及相关系别信息也相应删除,而只是删除该学生证的注册信息。应保证在删除学生证信息同时保留该学生的学生信息及相关的系别信息。(1)判断该学生证信息是否存在 创建存储过程,给定学号参数,判断是否存在该学生的学生证信息,如不存在,则告知不存在该学生证信息,即无法删除;如存在,则告知存在信息,并显示出该条信息。 该操作同样可以使用存储过程modif来完成,因此不需再重新创建。(2)删除信息 创建存储过程delinfor,给出要删除的学生学号,通过delete操作删除注册信息表c中的该条记录,即完成学生证信息的删除工作。create procedure delinfor( sno char(6) )asdelete from cwhere stu_no=sno(3)显示删除后信息 在删除完成后,通过显示剩余全部学生证信息,确认要删除的学生证信息是否删除成功。 创建触发器displayall,完成删除工作的检验工作,当对表c进行delete操作时,通过查询视图,显示剩余全部学生证信息。create trigger displayallon cfor deleteasselect *from stu_card七、实验总结通过一周的课程设计,完成了一个简单的学生证管理系统,并成功实现了各要求所需功能。首先,在设计方面,考虑到数据的冗余及冲突等问题,将学生证信息分别存储到三个表中,考虑了系别信息数据,学生信息数据及学生证注册信息数据的独立性问题。其次,在设计表时,注意了数据的数据类型及长度的选择,考虑各种数据的添加情况,如汉族非少数民族,在添加该项时将“汉”设置为默认情况,同时还要保证不浪费数据的存储空间。第三,使用了视图view,实现数据的保密性,将学生证所需信息以视图方式存放,在数据查询时使用视图查询。第四,对于各功能的实现,均使用了存

温馨提示

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

评论

0/150

提交评论