数据库课程设计——实验报告管理系统(超详细)

【前言】

  随着网络技术的不断发展,信息技术进入社会的每一个角落,手工管理操作的快速发展,正在逐步取代自动化网络管理。教育技术中心根据教育信息化发展的趋势, 本着面向学校教学过程, 结合学校课程特点,兼顾科研需求,在虚拟化技术及集群技术框架下,构建教学实验软件的个体化应用及集群高性能计算应用环境,以达到基础性公共教学实验软件系统的基于校园网的普遍提供与使用。学校是接受现代化信息传播的先行者,因此,学校管理的主体,是教学网络管理的一个重要组成部分。
  实验教学是学生技能培表的重要环节之一,学生实验报告的质量在一定程度上反映了实验教学的质量,实验报告管理水平也反映了实验教学管理水平。目前,大部分学校所提交的实验报告大多还停留在以纸为介质的方式上,这将严重制约着实验教学的开展。首先,很多课程的实验结果在纸质实验报告中不能表现或不能完全表现,其次纸质实验报告的批改和分析也是实验授课老师的一个很重负担,如何提高学生实验报告的表象能力,提高教师批改实验报告的效率并及时发现和纠正实验报告中存在的问题是许多课程实验授课教师所面对的一个难题。
  本系统使用MySQL完成。
  该系统开发由系统需求分析阶段、概念设计阶段、逻辑设计阶段、数据库实施阶段、系统调试和测试阶段、参考文献、附录等阶段组成。

关键字:数据库;实验报告;管理系统;MySQL

1.系统需求分析

1.1引言

  各大高校每年毕业生人数众多,学校处于接收信息的前沿地位,更是及早的进入“办公自动化”。该系统就是办公自动化的一项主要内容。本系统利用了方便的网络管理系统,管理员不需要专业的知识,只需要通过界面操作就可以对教师课题和学生的选题进行管理,使得管理员管理工作变得非常方便。

1.2目标与任务

1.2.1需求分析阶段目标

  本系统的目标主要是实现对一般高校的教学工作的信息管理,实现对教师的基本信息和教师的授课信息的添加,查询,分配等功能,同时对课程信息及学生选课信息的管理,较大程度地实现学校教学工作的信息化管理(目标详见表1)

表1 系统目标
目标类型子目标
教研室主任信息管理:学生、教师基本信息

课程管理:浏览、查询、添加、分配课程,生成报表
主讲教师

授课教师
管理课程评分

上传课程内容
学生查询信息,登录、查看、上传实验内容

1.2.2 需求分析阶段任务

1.2.2.1实验报告管理系统功能分析

(1)实验报告管理系统满足来自教研室主任,主讲教师,授课教师和学生四方面人员的需求。

(2)教研室主任工作人员可以为主讲教师和授课教师还有学生添加课程信息,同时并生成相应的报表给学生看和选择,教研室主任可以浏览,查询,添加课程的基本信息同时为主讲教师和授课教师分配上课班级。

(3)主讲教师对课程的评分标准进行管理,设定实验评判标准和分值主讲教师还可以上传课程对应的实验内容。

(4)学生可以通过自己的账户密码来登陆实验系统,及时查看各个课程的实验信息,并且上传自己的实验内容,看可以查询自身的相关信息。

(5)教研室主任对教师和学生信息等进行管理。

1.2.2.2数据流程分析

  学生登录系统查看教师布置的实验并且撰写实验内容,教师可以进入系统查看学生课程信息、上传实验、并且批阅学生提交的实验,主讲教师可以对课程的评分标准进行管理,教研室主任管理着学生、教师、课程的所有信息,可以添加课程信息,让学生进行课程选择,还可以安排课程主讲教师和授课教师,为教师分配班级。

1.2.2.3数据字典

  数据字典是组成数据库很重要的组成部分,包含了数据项,数据结构等内容,只有认真分析相关的业务功能,进行全面细致的分析,才有可能得到全面的数据结构。数据运行才能够正常,不会出现缺少相应的信息等问题。数据汇总表如表2所示,数据结构如表3所示。

表2 数据项汇总表
数据项名数据类型长度别名取值范围
SnoCHAR10学号
SnameCHAR10学生姓名
SageINT2学生年龄
SsexCHAR3学生性别男,女
SclassCAHR20学生班级
TnoCHAR10教师号
TnameCHAR10教师姓名
TsexCHAR3教师性别男,女
TageINT2教师年龄
CnoCHAR10课程编号
CnameCHAR20课程名称
CcreditDOUBLE2课程学分
CtimeINT3课时
EnoCHAR10实验编号
EnameCHAR10实验名称
ScoreINT2分值
StandardCHAR20评判标准
DnoCHAR10教研主任号
DnameCHAR10主任姓名
PasswordCHAR10密码
PermissionCHAR20权限S,t,c,st,sc,tc,stc
S_scoreINT3实验成绩
表3 数据结构
数据结构名含义说明组成
Student学生信息学号,姓名,性别,年龄,班级
Teacher教师信息教师号,姓名,性别,年龄
Director主任信息编号,姓名,密码,权限
Course课程信息课程号,课程名,课时,学分,主讲教师号,授课教师号
Experiment实验信息实验号,实验题目,截至时间,分值,评分标准,课程号
e_completion实验完成情况实验号,完成内容,学号,成绩
T_course教师课程课程号,主讲教师号,授课教师号,班级
Sc学生课程课程号,学号

经需求分析,本系统的数据流有课程信息数据流、实验信息等数据流。
数据流编号:D001
数据流名称:课程信息
简述:课程信息
数据流来源:教研室主任添加课程信息,并发布在系统中。
数据流去向:与课程相关数据存入数据库
数据项组成:Cno(课程号)+Cname(课程名)+Ctime(课时)+Ccredit(学分)+Tno(教师号)
数据流量:20门/日
高峰流量:100门/日
数据流编号:D002
数据流名称:实验信息
简述:实验信息
数据流来源:教师上传相关实验信息
数据流去向:为学生发布实验任务
数据项组成:Eno(实验号)+Ename(实验题目)+Score(分值)+Standard(评分标准)+Cno(课程号)
数据流量:200项/日
数据流编号:D003
数据流名称:学生/主任/教师登录信息
简述:学生/主任/教师登录信息
数据流来源:对学生/主任/教师分配实验管理系统账号
数据流去向:检查用户身份
数据项组成:学生:Sno(学号)+Sname(姓名)+Ssex(性别)+Sage(年龄)+Sclass(班级)
教师:Tno(教师号)+Tname(姓名)+Tsex(性别)+Tage(年龄)
主任:Dno(编号)+Dname(姓名)+Password(密码)+Permission(权限)
数据流编号:D004
数据流名称:实验成绩查询
简述:实验信息查询
数据流来源:学生
数据流去向:检索处理模块
数据项组成:Sno(学号)+Sname(姓名)+Cno(课程号)+Eno(实验号)
数据流量:1000次/日
高峰流量:5000次/日
数据流编号:D005
数据流名称:实验成绩查询结果
简述:返回给学生的查询结果
数据流来源:检索条件处理模块,从系统中返回给学生的查询结果
数据流量:学生
数据项组成:Sno(学号)+Sname(姓名)+Cno(课程号)+Eno(实验号)+Score(分值)+S_score(实验成绩)+Tno(教师号)
数据流量:400次/日
高峰流量:3000次/日

数据流图:(详见图1,2,3)

图1 数据流图1

在这里插入图片描述
图2 数据流图2

在这里插入图片描述

图3 数据流图3

1.2.2.4分析总结

  通过需求分析,认真分析总结后,大致对毕业设计选题管理系统的功能有了一个更全面的认识,更深入的了解。
  通过实地考察,查阅相关资料,在基本功能的前提上,又拓展了一点新的实用功能,比如电子图书阅读,这也是未来发展的必然。虽然需求分析很麻烦,但是它是数据库设计的关键,是基础,是前提,如果需求分析没有做好,那么很又可能导致数据库的重新开始。所以,必须认真对待,仔细研究,在全面系统的分析后,得到正确的可行的实施方案,只有这样,才有可能打好基础,有一个良好的开端,才有可能取得好的结果。

2.概念结构设计

2.1概念设计任务

  概念设计是独立于数据库管理系统的设计,它的主要任务即时完成对现实事物,事物关系之间的转化,把抽象的事物转化成能够被人们易于理解的图形关系,更加直白的把现实的事物关系表达出来,从而为下一步的设计打下一个良好的基础,概念设计的主要任务就是如此,进行归类总结,识别毕业设计选题管理系统中的实体,识别实体的属性,识别实体的关键字,识别实体间的联系,利用实体关系图(E—R图)来描述选题管理系统相关实体、属性及关系,从而达到为毕业设计选题管理系统建立良好的数据模型的目的。

2.2概念模型设计

  根据前面的设计,以及相应的数据项,数据结构之间的关系,通过分类总结,可以将实验报告管理系统数据库实体划分为学生信息实体集、教师信息实体集、课程信息实体集、实验系统实体集,各实体集里还包含不同的实体。系统功能包括:
 
 (1)选择课程:教研室主任添加课程信息,包括课程名,学分,课时等,同时对课程信息进行管理,能够让学生对课程进行选择。 
 (2)分配班级:教研室主任安排课程的主讲教师和授课教师,同时为主讲教师和授课教师分配.上课班级。
 (3)评分准则:主讲教师对课程的评分标准进行管理,设定实验评判标准和分值。 
 (4)实验查看:主讲教师可以上传课程对应的实验内容。 
 (5)完成实验:学生登陆系统,完成相应的课程的实验。 
 (6)信息管理:教研室主任对教师信息、学生信息等进行管理。
 
每个实体定义的属性如下:
学生(学号,姓名,年龄,性别,班级)
教师(教师号,姓名,性别,年龄)
教研处主任(教研主任号,姓名,权限,密码)
课程信息(课程号,课程名,学分,课时)
教师课程(课程号主讲教师号授课教师号,班级)
学生课程(课程号学号
实验(实验序号,截止时间,实验题目,班级,课程号,实验评分标准,分值)
实验提交(实验序号学号,实验内容,实验成绩)

  以上就是概念设计的基本实体以及相关的属性,并分别进行了主键的命名,确定了基本的实体之后,就是根据管理流程以及数据流图确定他们之间的关系,进行E-R图的设计了。E-R图的设计是通过先分后总的设计理念进行安排的,把部分的E-R模型设计好后,在进行了总的设计,这样的设计便于操作,易于理解、实现,但进行综合的时候一定要注意他们之间的关系,以免发生不必要的冗余。ER图(详见图4~10)
在这里插入图片描述

图4 学生与课程的实体与属性ER图

在这里插入图片描述

图5 主任与学生与教师的实体与属性ER图

在这里插入图片描述

图6 教师与实验的实体与属性ER图

在这里插入图片描述

图7 学生与实验的实体与属性ER图

在这里插入图片描述

图8 课程与实验的实体与属性ER图

在这里插入图片描述

图9 主任与课程的实体与属性ER图

图10 总体ER图

3.逻辑结构设计

3.1逻辑设计的目标与任务

  以上的概念设计阶段是独立于任何一种数据模型的,但是逻辑设计阶段就与选用的DBMS产品发生关系了,系统逻辑设计的任务就是将概念设计阶段设计好的基本E-R图转换为选用DBMS产品所支持的数据模型相符合的逻辑结构。具体内容包括数据组织(将E-R图转换成关系模型、模型优化、数据库模式定义、用户子模式设计)、数据处理(画出系统功能模块图)两大任务。其中最为关键的是把ER模型转换成相应的关系表结构,同时每个关系模型之间的范式应最好满足第三范式,只有这样的关系模式才可能尽可能的减小冗余,达到较好的效果。

3.2关系模型设计

3.2.1 ER图转换为关系模型

  ER图进行关系模型的转化时,应根据相应的规则进行转化,只有这样,才能尽可能的减小冗余,达到比较好的范式,使模型更加优化,通常的转换规则如下:
  一对一联系 :若双方部分的参与,则将联系定义为一个新的关系,属性为参与双方的码,若一方全部参与,则将联系另一方的码作为全部参与一方的属性,
  一对多联系:将单方参与实体的码作为多方参与实体的属性,
  多对多联系:将联系定为新的关系,属性为参与双方的码。
  以上也就是基本的设计规则了,只要按照相应的规则转换,就能够得到所要的规范程度,得到一个良好的范式,根据得到的ER图,进行关系模式的转换。具体的关系模型如下
(表4~11)。

表4 学生
数据项名数据类型长度别名是否为空主外键
SnoCHAR10学号
SnameCHAR10姓名
SageINT3年龄
SsexCHAR3性别
SclassCHAR20班级
表5 教师
数据项名数据类型长度别名是否为空主外键
TnoCHAR10教师号
TnameCHAR10姓名
TsexCHAR3性别
TageINT3年龄
表6 课程
数据项名数据类型长度别名是否为空主外键
CnoCHAR10课程
CnameCHAR20课程名
CtimeINT3课时
CreditDOUBLE10学分
表7 教研处主任
数据项名数据类型长度别名是否为空主外键
DnoCHAR10主任号
DnameCHAR10姓名
PasswordCHAR10密码
PermissionCHAR10权限
表8 实验
数据项名数据类型长度别名是否为空主外键
EnoCHAR10实验号
EnameCHAR10实验题目
EendtimeCHAR10截至时间
EcreditINT2分值
EstandardCHAR50评判标准
CnoCHAR10课程号
表9 实验提交
数据项名数据类型长度别名是否为空主外键
EnoCHAR10课程号
SnoCHAR10学号
ContentCHAR50内容
S_scoreINT2成绩
表10 学生课程
数据项名数据类型长度别名是否为空主外键
CnoCHAR10课程号
SnoCHAR10学号
表11 教师课程
数据项名数据类型长度别名是否为空主外键
CnoCHAR10课程号
M_tnoCHAR10主讲教师
S_tnoCHAR10授课教师
classCHAR20班级

3.2.2关系模式优化

  关系模式学生、教师、教研室主任等每一个关系不存在非主属性对主属性的部分函数依赖,也不存在传递函数依赖,已经达到了3NF,基本上都满足应用系统的要求,只是在应用中还有一部分功能的实现过于简单,没有考虑周全,还有待进一步修改。已得到更好的运行效率。
(1)分析关系模式学生(学号,姓名,性别,年龄,班级)
  在关系模式学生(学号,姓名,年龄,性别,班级)中,每一个属性都不能再分,故,属于1NF;
  在关系模式学生(学号,姓名,年龄,性别,班级)中,主键为学号, 所以,姓名、年龄、性别、班级,都是非主属性。根据候选键定义可知,学号完全决定姓名,性别,年龄,班级,即每一个非主属性完全依赖于候选键,故,该关系模式属于2NF;
  在关系模式学生(学号,姓名,年龄,性别,班级)中,姓名,性别,年龄,班级,都是非主属性,且每一个非主属性不传递函数依赖于候选键学号,即,学号决定姓名,但姓名不决定性别,不决定年龄,不决定班级。故,该关系模式属于3NF;
  在关系模式学生(学号,姓名,性别,年龄,班级)中,候选键为学号,函数依赖为学号—>姓名,学号—>性别,学号—>年龄,学号—>班级,故,该关系模式属BCNF;
  由于在关系模式学生(学号,姓名,性别,年龄,班级)中不存在多值依赖,故该关系模式不属于4NF。
  综上所述,关系模式学生(学号,姓名,性别,年龄,班级)为BCNF。
(2)分析关系模式教师(教师号,姓名,性别,年龄)和课程(课程号,课程名,学分,课时)
  在关系模式教师(教师号,姓名,性别,年龄)和课程(课程号,课程名,学分,课时)
中,每一个属性都不能再分,故首先满足1NF.主键分别为教师号和课程号,每一个非主属性完全依赖于候选键,故这两个关系模式首先属于2NF。且每一个非主属性不传递函数依赖于候选键学号,故属于3NF。而且,候选键教师号和课程号决定一切非主属性,故该关系模式属于BCNF。由于关系模式中不存在多值依赖,故不属于4NF。
  综上所述,关系模式教师(教师号,姓名,性别,年龄)和课程(课程号,课程名,学分,课时)属于BCNF。

3.2.3用户子模式设计

  用户子模式的建立,其功能就是方便用户的查询并起到了一定的保护数据库的作用,视图的建立应根据具体的应用情况,根据用户的需求,进行相应的视图建立,建立视图的原则应在尽量满足用户的需求的前提下进行,并同时保护其他的数据的安全性,以免数据的泄露与破坏,数据库视图的建立在下面有相应的举例及应用,这里就不再多说了。
  学生-课程-实验(学号,姓名,性别,年龄,班级,课程号,课程名,实验号)
  课程-实验(实验号,实验名,截止时间,完成情况,课程号,课程名,课时,学分)
  教师-课程(课程号,课程名,课时,学分,授课教师号,主讲教师号)

3.3数据处理

数据处理(见图12)
在这里插入图片描述

图12 系统功能模块图

4.物理结构设计

4.1物理设计目标与任务

  数据库的物理设计通常是确定数据的相关存储过程,它一般是依赖于相应的数据库管理系统,几乎是机器进行自主完成的任务,不用过多的人去考虑,但有时为了效率的问题,以及其他的要求,必须进行相应的物理设计,以达到相应的要求,这就是物理设计的根本目的,而我们在这里的物理设计一般就是建立索引的过程,所以对于用户的要求建立什么样的索引就成了设计者的任务,我们在这里就是进行这样的数据库索引设计。

4.2物理存储

  得到系统逻辑模型后,就该进行数据库的物理设计和实施数据库了,物理设计主要是要确定数据库的存储路径、存储结构以及如何建立索引等,可以采用系统的默认设置。

5.数据库实施

5.1建立数据库,数据表,视图,索引

5.1.1建立数据库

Create database experiment_report_system;

5.1.2建立数据表

学生数据表建立:

create table student(
sno char(10) primary key,
sname char(10),
sage int ,
ssex enum('男','女')not null,
sclass char(20)not null);

教师信息表建立:

create table teacher(
tno char(10) primary key,
tname char(10),
tage int ,
tsex enum('男','女')not null);

教研主任表建立:

create table director(
dno char(10) primary key,
dname char(10),
password char(10),
permission enum(‘t’,’s’,’c’,’ts’,’tc’,’sc’,’tsc’)not null);

课程表建立:

create table course(
cno char(10) primary key,
cname char(20),
ctime int,
ccredit double );

实验表的建立:

create table experiment(
eno char(10) primary key,
ename char(20),
eendtime char(10),
ecredit int,
estandard char(20),
cno char(10),
foreign key(cno) references course(cno));

实验完成情况表:

create table e_completion(
eno char(10),
sno char(10),
content char(50),
s_score int,
primary key(eno,sno) ,
foreign key(eno) references experiment(eno),
foreign key(sno) references student(sno)););

学生课程表:

create table sc(
cno char(10),
sno char(10),
primary key(cno,sno));

教师课程表:

create table t_course (
cno char(10),
m_tno char (10),
s_tno char(10),
class char(20),
primary key(cno,m_tno,s_tno),
foreign key(m_tno) references teacher(tno),
foreign key(cno) references course(cno),
foreign key(s_tno) references teacher(tno));

5.1.3建立视图

视图的建立:

Create view s_e	
as	
Select eno,ename,eendtime,estandard,course.cno,cname,ctime,ccredit 
from experiment,course 
where experiment.cno=course.cno;

(详见图13)

在这里插入图片描述

图13 s_e视图
Create view t_c	
as
select course.cno,cname,ctime,ccredit,m_tno,s_tno	
from t_course,course 
where course.cno=(m_tno or s_tno);

(详见图14)
在这里插入图片描述

图14 t_c视图
Create view s_c_e	
as	
Select student.sno,sname,sage,ssex,sclass,course.cno,cname,eno 
from student,course,t_course,experiment,sc 
where student.sclass=t_course.class 
and sc.cno=course.cno and course.cno=experiment.cno and sc.sno=student.sno;

(详见图15)
在这里插入图片描述

图15 s_c_e视图

6.系统调试和测试

6.1系统调试

1.已知系统的功能设计规格,进行测试证明每个实现了的功能是否符合要求;
2.已知系统的内部工作过程,通过测试证明每种内部操作是否符合设计规格要求,所有内部
成分是否通过检验。
(1)查看各个基本表中的数据(借助与视图查询)以及相应的功能查询(详见图16~24):

在这里插入图片描述

图16 数据库建表

在这里插入图片描述

图17 学生信息

在这里插入图片描述

图18 课程信息

在这里插入图片描述

图19 教师信息

在这里插入图片描述

图20 学生-课程信息

在这里插入图片描述

图21 教务处主任信息

在这里插入图片描述

图22 实验信息

在这里插入图片描述

图23 实验完成信息

在这里插入图片描述

图24 教师-课程信息

(2)设计SQL类连接MySQL对数据库的信息进行处理(详见图25~26)

# 1 导包
import pymysql
# 2 建立数据库连接
# 注意:此处user、password均为自己数据库的用户名和密码,database为数据库项目名称
conn = pymysql.connect(host='localhost', user='root', password='wyl011025', database='experiment_report_system', port=3306, autocommit=False)
# 3 获取游标
cursor = conn.cursor()
# 4 执行
# 查看数据库的版本
cursor.execute("select version();")
# 注意,使用游标执行sql语句之后,不会返回我们的执行结果,要返回执行结果,必须通过cursor.fetchone()或cursor.fetchall()的方式来获取
print("数据库版本号:", cursor.fetchone())
# 5 关闭游标
cursor.close()
# 6 关闭连接
conn.close()

在这里插入图片描述

图25 Python连接数据库

在这里插入图片描述

图26 连接成功
'''插入多条数据'''
import pymysql
#打开数据库连接,不指定数据库
conn=pymysql.connect(host='localhost', user='root', password='wyl011025', database='experiment_report_system', port=3306)
#conn.select_db('pythondb')
#获取游标
cur=conn.cursor()

#另一种插入数据的方式,通过字符串传入值
sql="insert into student values(%s,%s,%s,%s,%s)"
insert=cur.executemany(sql,[(1007,'1号',20,'女','智能一班'),(1008,'2号',21,'男','智能二班'),(1009,'3号',22,'女','智能三班')])
print ('批量插入返回受影响的行数:',insert)
cur.close()
conn.commit()
conn.close()
print('sql执行成功')

在这里插入图片描述

图27 对数据库进行添加
'''删除多条数据'''
import pymysql
#打开数据库连接
conn=pymysql.connect(host='localhost', user='root', password='wyl011025', database='experiment_report_system', port=3306)

#获取游标
cur=conn.cursor()
#删除前查询所有数据
cur.execute("select * from sc;")
print('删除前的数据为:')
for res in cur.fetchall():
      print (res)
print ('*'*40)
#删除2条数据
sql="delete from sc where cno=%s"
cur.executemany(sql,[(4),(5)])
#删除后查询所有数据
cur.execute("select * from sc;")
print('删除后的数据为:')
for res in cur.fetchall():
      print (res)
cur.close()
conn.commit()
conn.close()
print('sql执行成功')

在这里插入图片描述

图28 对数据库进行删除
'''更新多条数据'''
import pymysql
#打开数据库连接
conn=pymysql.connect(host='localhost', user='root', password='wyl011025', database='experiment_report_system', port=3306)
#获取游标
cur=conn.cursor()
#更新前查询所有数据
cur.execute("select * from teacher where tname in ('张松','王静');")
print('更新前的数据为:')
for res in cur.fetchall():
      print (res)

print ('*'*40)
#更新2条数据
sql="update teacher set tage=%s where tname=%s"
update=cur.executemany(sql,[(40,'张松'),(55,'王静')])

#更新2条数据后查询所有数据
cur.execute("select * from teacher where tname in ('张松','王静');")
print('更新后的数据为:')
for res in cur.fetchall():
      print (res)
cur.close()
conn.commit()
conn.close()
print('sql执行成功')

在这里插入图片描述

图29 对数据库进行修改
#查询表
# 1 导包
import pymysql
# 2 建立连接
conn = pymysql.connect(host='localhost', user='root', password='wyl011025', database='experiment_report_system', port=3306)
# 3 获取游标
cursor = conn.cursor()
# 4 执行
# 查询表数据
select_sql = "select tno, tname, tage,tsex from teacher;"
cursor.execute(select_sql)
print("查询结果的总记录数为:", cursor.rowcount)
# 查询结果的第一条数据
#print("查询结果的第一条数据为: {}".format(cursor.fetchone()))
# 获取全部的查询结果
# 注意:如果之前使用过fetchone或者fetchall,那么后续再使用fetchall时,会从上一个的指针位置读取数据
print("全部查询结果为:", cursor.fetchall())
# 要获取全部的查询结果,需要重新再执行查询语句
#cursor.execute(select_sql)
# 5 关闭游标
cursor.close()
# 6 关闭连接
conn.close()

在这里插入图片描述

图30 对数据库进行查看

6.2系统测试(复杂查询)

(1)查询学生及选课和实验信息(详见图31)

select student.sno,sname,sage,ssex,sclass,sc.cno,eno 
from student,sc,experiment 
where student.sno='%s'and sc.cno=experiment.cno and sc.sno=student.sno;

在这里插入图片描述

图31

(2)查询教师及课程实验信息(详见图32)

select teacher.tno,tname,tage,tsex,t_course.cno,eno 
from teacher,t_course,experiment 
where teacher.tno='%s'and (teacher.tno=t_course.m_tno or teacher.tno=s_tno) and t_course.cno=experiment.cno;

在这里插入图片描述

图32

(3)查询课程及实验信息(详见图33)

Select course.cno,cname,ctime,ccredit,m_tno,s_tno,class,eno,ename
from course ,t_course,experiment 
where course.cno='%s'and t_course.cno=course.cno 
and course.cno=experiment.cno;

在这里插入图片描述

图33

7.心得与体会

  本次课程设计来说,我选的是实验报告管理系统课程设计,难度中,上等,最重要的是需求分析,难度是各个表的之间链接与分析,其次是表的属性,每一个表的属性关系到各个表之间的联系,所以要考虑到很多因素,就拿实验来说,实验要和老师和学生的实验区分开来,教师的实验在于上传实验的题目,而学生的实验内容是上传实验的题目答案。通过实验系统这个平台,老师能够看到学生上传的实验内容,学生只能看到实验的题目,另外教师的权限不同,教师分为授课教师和主讲教师,主讲教师的权限是增添实验内容,主讲教师是评改这个实验,分值也是由主讲教师来设定,这个地方一定要分析好。
  通过这次课程设计,我们学到了很多,比如说分析整个表,要把他们联系到一块,所以说考虑一定要周到。课程设计一定要耐下心来,具体分析,不能够一口吃成个胖子。我们选题过后通过书上的例子来一步一步分析,另外自己写的手稿,总之努力没有白费,学到了很多的东西。以后会更加的努力来完成课程设计。

参考文献

王珊 萨师煊,《数据库系统概论(第5版)》,北京:高等教育出版社,2014.9
袁国忠,《Python编程:从入门到实践》,人民邮电出版社,2016.7
《数据库系统概念》,机械工业出版社,2019.12

  • 138
    点赞
  • 1204
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 27
    评论
### 回答1: 好的,数据库课程设计中的图书管理系统是一个非常实用的应用程序。它可以帮助图书馆或者书店管理他们的图书信息,包括书名、作者、出版社、价格、库存等等。同时,它还可以实现借阅、归还、续借等功能,方便读者的使用。在设计这个系统时,需要考虑到数据的安全性、查询效率、用户友好性等方面,以便更好地服务于用户。 ### 回答2: 数据库课程设计是计算机科学与技术专业中非常重要的一门课程。而我所要设计的数据库就是一个图书管理系统。 首先,我们需要确定这个图书管理系统需要承担哪些任务。我认为,一个图书管理系统应该包括以下三个方面: 1. 书籍的管理:这一方面的任务包括对于图书的增删改查,借阅和还书等操作。在设计的时候,需要考虑到书籍的属性,例如书名、作者、出版社、书籍编号、存放位置、借阅状态等等。 2. 读者信息的管理:这一方面主要涉及到读者的注册、登录、查询借阅情况、修改个人资料等操作。在设计的时候,需要考虑到读者的属性,包括姓名、学号、班级、电话号码、邮箱等等。 3. 系统管理:这一方面主要包括管理员登录、权限管理,以及对于系统数据的维护和备份等操作。 其次,我们需要确定设计这个图书管理系统所需要用到的工具和技术。我认为,使用Mysql数据库可以比较好地支持这个系统的功能开发。同时,我们还需要考虑到系统的用户界面的设计,可以使用HTML、CSS和JavaScript等技术来设计。 最后,我们需要设计系统的结构和流程。在设计系统的结构方面,需要确定系统的各个模块之间的关系和信息交互方式。在设计系统的流程方面,则需要考虑各个功能模块的具体实现过程。 综上所述,设计一个图书管理系统数据库需要考虑到书籍的管理、读者信息的管理以及系统管理三个方面;需要使用Mysql数据库以及HTML、CSS和JavaScript等技术来设计;同时还需要考虑到系统的结构和流程的设计。 ### 回答3: 一、需求分析 首先,我们需要明确图书管理系统的功能需求。在图书管理系统中,我们需要分类管理图书,包括图书的名称、作者、出版社、出版日期、价格等信息。同时,我们还需要管理读者的信息,包括姓名、性别、年龄、联系方式等。此外,还需要实现借阅、归还、续借等基本操作,并且要记录每一次的借阅信息。最后,图书管理员需要有权限管理系统中的数据,包括添加、删除、修改图书及读者信息,以及查询借阅信息等。 二、数据库设计 在进行数据库设计时,要明确系统的数据结构。根据需求分析结果,我们可以设计以下实体和关系: 1. 实体 - 图书:包括图书编号、图书名称、作者、出版社、出版日期、价格等信息; - 读者:包括读者编号、姓名、性别、年龄、联系方式等信息; - 借阅记录:包括借阅编号、借阅日期、归还日期、读者编号、图书编号等信息。 2. 关系 - 图书和读者之间的关系:每本图书可以被多个读者借阅,反之亦然; - 图书和借阅记录之间的关系:每本图书被借阅多次,因此需要建立一对多关系; - 读者和借阅记录之间的关系:每个读者可以借阅多本书,因此需要建立一对多关系。 基于以上实体和关系,我们可以设计一个关系型数据库,用于存储、管理和检索图书管理系统的数据。 三、系统架构设计 在系统架构设计时,我们需要考虑系统的整体结构和模块划分。以下是一个可能的系统架构设计: 1. 系统整体结构 - 硬件:服务器、客户端(PC、移动设备等); - 软件:操作系统、数据库管理系统、应用程序。 2. 应用程序模块 - 图书管理模块:用于添加、删除、修改图书的信息; - 读者管理模块:用于添加、删除、修改读者的信息; - 借阅管理模块:用于借阅、归还、续借图书,以及查询借阅信息; - 用户权限管理模块:用于管理图书管理员的权限,包括登录系统、修改密码等。 四、总结 图书管理系统是一个典型的关系型数据库应用程序,其本质是将数据存储在数据库中,并通过应用程序进行数据的管理和处理。在设计图书管理系统时,我们需要考虑清楚需求分析、数据库设计以及系统架构设计,才能够实现一个稳定、高效、易用的系统。同时,我们还需关注系统的安全性和可靠性,包括数据备份和故障恢复等方面,以确保系统的稳健性和可持续性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

把你藏起来!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值