收藏 分销(赏)

数据库课程设计教务管理.doc

上传人:二*** 文档编号:4514581 上传时间:2024-09-26 格式:DOC 页数:22 大小:311.04KB 下载积分:5 金币
下载 相关 举报
数据库课程设计教务管理.doc_第1页
第1页 / 共22页
本文档共22页,全文阅读请下载到手机保存,查看更方便
资源描述
目 录 一·需求分析 - 2 - 1)学生信息管理 - 2 - 2)教师信息管理 - 2 - 3)院系管理 - 2 - 4)课程信息管理 - 3 - 5)成绩管理 - 3 - 6)综合查询 - 3 - 7)系统管理 - 3 - 二·功能需求 - 4 - 三·概念设计 - 4 - 1)E-R图 - 5 - 四·逻辑设计 - 5 - 五·物理设计 - 6 - 六·数据库实现 - 7 - 六·数据库实现 - 7 - 1)创建存储过程 - 15 - 2)创建触发器 - 15 - 七·问题总结 - 18 - 一·需求分析 设计数据库,需求分析是关键;需求分析就是作文的提纲,而文章的正文就是我们接下来要设计的数据库;数据库以需求分析来进行总体布局、设计、建立。需求分析的质量决定你数据库的价值,所以这是数据库设计的核心,也是最耗时、最复杂的阶段。 对教务管理系统进行模块划分,分步进行设计和管理: 学生信息管理 该模块是教务工作人员进行对学生信息的管理,进行学生信息的添加、修改、删除。在进行信息的添加时,一方面在新的窗口进行学生信息的录入,在保存的时候要进行学生学号是否有反复的检查,假如添加的学生编号有反复就要对用户进行提醒。只有在不反复的情况下才干进行信息的添加。在进行信息的删除时,要一方面打开提醒窗口让用户确认是否要删除,只有在用户确认的情况下才干进行信息的删除。在进行信息的修改时,要根据用户选定的学生进行修改,即列出用户选定的学生的所有信息,在这个基础上进行学生信息的修改。 教师信息管理 教务工作人员通过此模块来管理教师信息,涉及教师信息的添加、修改、删除等。 信息的添加时,需要验证教师的编号是否反复;删除和和修改学生信息,和学生信息管理模块相同。 院系管理 此模块是用来管理院系的信息,涉及班级院系的添加,修改,删除等。在进行信息的添加时,需要进行班级的编号是否反复的检查,如院系编号反复则对用户进行提醒,不反复则添加成功。院系管理模块的删除和修改和学生信息管理模块相同。 课程信息管理 教务工作人员通过该模块来管理课程的基本信息,涉及课程信息的添加,修改,删除和班级课程的设立等,具体做法同前面的模块。 成绩管理 教务工作人员通过该模块来进行学生成绩的管理,在进行学生成绩的添加时,可用它来为学生设立所在班级的课程表来直接输入成绩。 综合查询 通过该模块可以查询教务所需要的各种信息。如学生信息查询提供了涉及学生学号、姓名、所在班级、班主任名字和宿舍等信息,学生信息进行查询的各种查询条件,用户可以根据单个的查询条件或者它们的组合来进行查询。同时,在查询的时候还提供了进行模糊查询的功能,即该模块可以运用读者输入的非完整的查询条件进行查询,这样更加方便了用户的查询管理。综合查询模块涉及了学生信息查询、教师信息查询、班级信息查询、院系信息查询、课程信息查询和成绩查询等各种功能查询。 系统管理 该模块可以对系统登录的用户进行管理。在该模块中,教务人员可以添加允许登录的人员名单以及相应的密码,并对已有的用户进行密码修改或删除。 学生信息管理 教师信息管理 成绩信息管理 院系管理 课程信息管理 综合查询 输出管理 系统管理 教务管理系统 (结构如上图) 二·功能需求 综合分析教务管理系统各模块,我们需要对该系统实现基本的功能,并实现对用户对象的使用做出相应的权限。 1、 学生可以查看学生自己的成绩、课程安排、课程表。 2、 教师可以可以查看自己的基本信息,可以对学生进行成绩的录入,不能添加、修改、删除系统的用户。 3、 教务人员可以通过系统管理模块对系统用户进行添加、修改、删除;可以对学生的基本信息、成绩、课程、宿舍等进行添加、修改、删除;可以对教师的基本信息、课程安排进行各种操作;可以对各种模块进行更新和删除操作。 三·概念设计 概念设计是对整个数据库系统的一个抽象的描述和整体的概括,我们可以更加直观的去理解教务管理系统的结构,形成一个独立于具体DBMS(数据库管理系统)的概念模型,概念设计生成E-R图。 E-R图 系统管理 管理 课程名 输出 管理员姓名 打印 综合查询管理管任 学分 院系 询综合查询 系打印 管理 理系统管理 管理员姓名 教师 录入 课程 成绩 查询 学生 管理员姓名 电话 性别 学号 姓名 性别 电话 专业 院系 编号 系别 系主任 电话 主讲课程 电话 性别 姓名 编号 学分 任课教师 课程名 课程号 姓名 学号 课程号 四·逻辑设计 1、 学生信息管理:学生的学号、姓名、性别、专业、院系、联系方式(电话) 2、 教师信息管理:教师的编号、姓名、性别、主讲课程、联系方式(电话) 3、院系管理:系别编号、系别名称、系主任、系主任联系方式(电话) 4、成绩管理:学生学号、姓名、课程号、分数 5、课程信息表:课程号、课程名、任课教师、学分 6、系统管理:管理员姓名、性别、电话 根据这些模块的划分,结合模块的属性,我们需要在数据库中建立以下表: 学生信息表(Student)(Sid,Sname,Ssex,Spre,Sdep,Stel) 教师信息表(Teacher) (Tid,Tname,Tsex,Tcou,Ttel) 院系表(Department) (Did,Dmc,Dname,Dt7 成绩表(Achievement) (Aname,Asex,Atel) 管理员信息表(Administrator) (Sid,Sname,Cid,Cname,Afs) 五·物理设计 数据库的物理设计是对前一阶段的逻辑设计进行具体的物理实现,把我们的思想转化为实实在在的物理应用,通过对数据库的实践操作来实现我们的前期设计,良好的物理设计能很好的体现数据库的设计质量。在这阶段,我们需要拟定在物理设备上的存储模式和存取方法,反复的思考,多次的评估,以保证物理途径清楚,各个表之间的互相关系明确;理清内模式以及内模式和模式之间的映像关系。: (1) 存储记录结构设计:涉及记录的组成,数据项的类型、长度,以及逻辑记录到存储记录的映射。 (2) 拟定数据存放位置:可以把经常同时被访问的数据组合在一起,“记录聚簇”技术能满足这个规定(该技术在网上查询到的)。 (3) 存取方法的设计:存取途径可分为主存取途径和辅存取途径,前者用于主键的检索,后者用于辅助键的检索。 六·建模 七·数据库实现 数据库实行阶段,运用DBMS提供的宿主语言,根据逻辑设计和物理设计的结果,建立数据库,组织数据入库,并进行试运营。 1、创建数据库 (1) 打开SQL工具“新建查询命令” (2) 在查询窗口中键入下列SQL语句 create database jwgl 执行上述SQL语句即可新建一名为jwgl的数据库 2、创建数据表 数据表是数据库中一个非常重要的对象,是其他对象的基础。数据库只是一个框架,数据表才是内容的实质,建表的原则:一个完整的数据库不可缺少的就是数据表,若干个数据表的集合成一个数据库。数据表重要用来存放一定格式的记录,数据表中的行被称为记录,列被称为字段。创建数据表的过程其实就是定义字段的过程。 创建数据库后,为jwgl数据库添加数据表,环节如下 : (1) 新建查询窗口 (2) 在查询窗口中键入下列SQL语句创建表,同时建立主键和外键: (学生信息表) create table Student( /* 创建学生信息表*/ Sid int identity primary key, Sname varchar(20) not null, Ssex char(2) check (Ssex in ('男','女')), Spre varchar(20), Sdep varchar(20), Stel char(13), ) (教师信息表) create table Teacher( /* 创建教师信息表*/ Tid int identity primary key, Tname varchar(20) not null, Tsex char(2) check (Tsex in ('男','女')), Tcou varchar(20), Ttel char(13), ) (院系表) create table Department( /* 创建院系表*/ Did int identity primary key, Dmc varchar(20) not null, Dname varchar(20) not null, Dtel char(13), ) (课程信息表) create table Course( /* 创建课程信息表*/ Cid int identity primary key, Cname varchar(20) not null, Stc varchar(10), Cxf varchar(5), ) (成绩信息表) create table Achievement( /* 创建成绩信息表*/ Sid int not null foreign key references Student(Sid), Sname varchar(20) , Cid int not null foreign key references Course(Cid), Cname varchar(20) , Afs varchar(5), ) (系统管理表) create table Administrator( /* 创建系统管理表*/ Aname varchar(20) not null, Asex char(2) check (Asex in ('男','女')), Atel char(13) not null, ) 3.向表格中插入数据: (学生信息表) set identity_insert Student on INSERT INTO Student(Sid,Sname,Ssex,Spre,Sdep,Stel) VALUES ('','张晓婷 ','女','软件工程','计算机与数据科学学院',''); INSERT INTO Student(Sid,Sname,Ssex,Spre,Sdep,Stel) VALUES ('','张三','男', '软件工程','计算机与数据科学学院',''); INSERT INTO Student(Sid,Sname,Ssex,Spre,Sdep,Stel) VALUES ('','李健','男','软件工程','计算机与数据科学学院',''); INSERT INTO Student(Sid,Sname,Ssex,Spre,Sdep,Stel) VALUES ('','陈欣','女', '软件工程','计算机与数据科学学院',''); INSERT INTO Student(Sid,Sname,Ssex,Spre,Sdep,Stel) VALUES ('','莫四海 ','男', '软件工程','计算机与数据科学学院',''); (教师信息表) set identity_insert Student off set identity_insert Teacher on INSERT INTO Teacher(Tid,Tname,Tsex,Tcou,Ttel) VALUES ('0801','何宗耀','男','数据库原理 ',''); INSERT INTO Teacher(Tid,Tname,Tsex,Tcou,Ttel) VALUES ('0802','蔡照鹏','男','计算机网络',''); INSERT INTO Teacher(Tid,Tname,Tsex,Tcou,Ttel) VALUES ('0803','张俊峰','男','数据结构',''); INSERT INTO Teacher(Tid,Tname,Tsex,Tcou,Ttel) VALUES ('0804','李金斗','男','大学英语',''); INSERT INTO Teacher(Tid,Tname,Tsex,Tcou,Ttel) VALUES ('0805','李军伟','男','毛泽东思想',''); (院系表) set identity_insert Teacher off set identity_insert Department on INSERT INTO Department(Did,Dmc,Dname,Dtel) VALUES ('01','土木与交通工程学院','荣新生',' 2089201'); INSERT INTO Department(Did,Dmc,Dname,Dtel) VALUES ('02','管理学院','闫 瑾','2089210'); INSERT INTO Department(Did,Dmc,Dname,Dtel) VALUES ('03','市政与环境工程学院','郭一飞','2089079'); INSERT INTO Department(Did,Dmc,Dname,Dtel) VALUES ('04','建筑与城市规划学院','邢燕','2089031'); INSERT INTO Department(Did,Dmc,Dname,Dtel) VALUES ('05','能源与建筑工程学院','马良涛','2089069'); INSERT INTO Department(Did,Dmc,Dname,Dtel) VALUES ('06','测绘与城市空间信息学院','张宏敏','2089033'); INSERT INTO Department(Did,Dmc,Dname,Dtel) VALUES ('07','艺术设计学院','张玉兴','2089256'); INSERT INTO Department(Did,Dmc, Dname,Dtel) VALUES ('08','计算机与数据科学学院','何宗耀','2089030'); (课程信息表) set identity_insert Department off set identity_insert Course on INSERT INTO Course(Cid,Cname,Stc,Cxf) VALUES ('801','数据结构','张俊峰','4'); INSERT INTO Course(Cid,Cname,Stc,Cxf) VALUES ('802','计算机网络',蔡照鹏','4'); INSERT INTO Course(Cid,Cname,Stc,Cxf) VALUES ('803','大学英语','李金斗','4'); INSERT INTO Course(Cid,Cname,Stc,Cxf) VALUES ('804','数据库原理','何宗耀','4'); INSERT INTO Course(Cid,Cname,Stc,Cxf) VALUES ('805','毛泽东思想','李军伟','3'); (系统管理表) INSERT INTO Administrator(Aname,Asex,Atel) VALUES ('钟桦','男',''); INSERT INTO Administrator(Aname,Asex,Atel) VALUES ('许杰','男',''); INSERT INTO Administrator(Aname,Asex,Atel) VALUES ('吴旭','男',''); INSERT INTO Administrator(Aname,Asex,Atel) VALUES ('安鹏','男',''); (成绩信息表) INSERT INTO Achievement(Sid,Sname,Cid,Cname,Afs); VALUES ('','张晓婷','801','数据结构','98'); INSERT INTO Achievement(Sid,Sname,Cid,Cname,Afs) VALUES ('','张晓婷','802','计算机网络','92'); INSERT INTO Achievement(Sid,Sname,Cid,Cname,Afs) VALUES ('','张晓婷','803','大学英语','97'); INSERT INTO Achievement(Sid,Sname,Cid,Cname,Afs) VALUES ('','张晓婷','804','数据库原理','93'); INSERT INTO Achievement(Sid,Sname,Cid,Cname,Afs) VALUES ('','张晓婷','805','毛泽东思想','94'); INSERT INTO Achievement(Sid,Sname,Cid,Cname,Afs) VALUES ('','张三','801','数据结构','98'); INSERT INTO Achievement(Sid,Sname,Cid,Cname,Afs) VALUES ('','张三','802','计算机网络','97'); INSERT INTO Achievement(Sid,Sname,Cid,Cname,Afs) VALUES ('','张三','803','大学英语','97'); INSERT INTO Achievement(Sid,Sname,Cid,Cname,Afs) VALUES ('','张三','804','数据库原理','97'); INSERT INTO Achievement(Sid,Sname,Cid,Cname,Afs) VALUES ('','张三','805','毛泽东思想','94'); INSERT INTO Achievement(Sid,Sname,Cid,Cname,Afs) VALUES ('','李健','801','数据结构','88'); INSERT INTO Achievement(Sid,Sname,Cid,Cname,Afs) VALUES ('','李健','802','计算机网络','93'); INSERT INTO Achievement(Sid,Sname,Cid,Cname,Afs) VALUES ('','李健','803','大学英语','95'); INSERT INTO Achievement(Sid,Sname,Cid,Cname,Afs) VALUES ('','李健','804','项数据库原理','96'); INSERT INTO Achievement(Sid,Sname,Cid,Cname,Afs) VALUES ('','李健','805','毛泽东思想','92'); INSERT INTO Achievement(Sid,Sname,Cid,Cname,Afs) VALUES ('','陈欣','801','数据结构','87'); INSERT INTO Achievement(Sid,Sname,Cid,Cname,Afs) VALUES ('','陈欣','802','计算机网络','94'); INSERT INTO Achievement(Sid,Sname,Cid,Cname,Afs) VALUES ('','陈欣','803','大学英语','95'); INSERT INTO Achievement(Sid,Sname,Cid,Cname,Afs) VALUES ('','陈欣','804','数据库原理','96'); INSERT INTO Achievement(Sid,Sname,Cid,Cname,Afs) VALUES ('','陈欣','805','毛泽东思想 ','96'); INSERT INTO Achievement(Sid,Sname,Cid,Cname,Afs) VALUES ('','莫四海','801','数据结构','97'); INSERT INTO Achievement(Sid,Sname,Cid,Cname,Afs) VALUES ('','莫四海','802','计算机网络','97'); INSERT INTO Achievement(Sid,Sname,Cid,Cname,Afs) VALUES ('','莫四海','803','大学英语','96'); INSERT INTO Achievement(Sid,Sname,Cid,Cname,Afs) VALUES ('','莫四海','804','数据库原理','98'); INSERT INTO Achievement(Sid,Sname,Cid,Cname,Afs) VALUES ('','莫四海','805','毛泽东思想','93'); (该图只是部分数据) (4)进行查询 >> 对学生的各科成绩进行查询: Select Student.Sid,Student.Sname ,Achievement.Cname, Achievement.Cid,Achievement.Afs from Student,Achievement where Student.Sid = Achievement.Sid >> 查询所有学生的课程编号为804,且成绩大于95的学生: select * from Achievement where(Cid=804 and Afs>95) 查询结果如下图: (5) 创建视图 视图可以将不同表中的数据通过关联实现多表数据输出 create view Mark1 as select Sid,Sname,Cname,Afs from Achievement where Sid= 视图如下: (6) 创建存储过程: USE [jwgl] GO /****** Object:  StoredProcedure [dbo].[proc_Cid]    Script Date: 06/17/2023 10:13:25 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[proc_Cid] @Stc char(10)='何宗耀', @Cid char(5)OUTPUT AS SELECT @Cid=Cid FROM Course WHERE Stc = @Stc (7) 创建触发器: 触发器1 GO SET QUOTED_IDENTIFIER ON GO ALTER trigger [dbo].[tri_update_C] on [dbo].[Course] for update as declare @YCid char(10),@newCid char(10), @YCname varchar(20),@newCname varchar(20) select @YCname=deleted.Cname,@newCname=inserted.Cname from deleted,inserted where deleted.Cid=inserted.Cid print'更新Course表中的课程信息' update Course set Cname=@newCname where Cname=@YCname print'已经更新Course表中的课程中'+@YCname+'的信息!' 触发器2 USE [jwgl] GO /****** Object:  Trigger [dbo].[tri_update_Achievement2]    Script Date: 06/17/2023 10:15:16 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER trigger [dbo].[tri_update_Achievement2] on [dbo].[Achievement] for update as declare @YSid int,@newSid  int ,@YCname varchar(20),@nweCname varchar(20) select @YSid =deleted.Sid ,@newSid =inserted.Sid from deleted,inserted where deleted.Afs =inserted.Afs and deleted.Cname =inserted.Cname print'更新成绩表中的分数信息' update Achievement set Sid=@newSid where Sid=@YSid print'已经更新成绩表中的成绩信息!' 八·问题总结 (1) 需求分析阶段,思绪不够清楚,考虑问题不够全面,分析不到位。 (2) ER图的绘制,表建关系不是很清楚,需要多多练习,最终才干画出满意的ER图。 (3) 数据表的创建,主键,外键,索引等费了很大的精力,总是不能得到满意的结果。经多次复习查询资料,完毕这种关系的确立。 建表之后,向表中插入数据时,无法完毕多次插入记录,是由于没有标记,无法完毕自增长插入记录。 (4) 存储过程和触发器的创建和调试过程最为艰难,由于一开始对两者理解不到位,变量和关系设立不太合理,但是通过长时间的努力还是可以完毕任务 在这个数据库的设计过程中,让我对SQL server 2023有了更多的了解,更加纯熟的去使用这个数据库软件。对SQL语句也有更多的理解,巩固了知识的理解和运用,养成良好的动手能力,培养一种热爱思考的思维和习惯。但是,对于SQL server 的使用和数据库设计方面,我还是发现很多自己的局限性的,在此后的学习过程中,我一定会认真学习,多思考,多动手实践,让自己的能力得到更大的提高!
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服