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

打印 上一主题 下一主题

主题 900|帖子 900|积分 2700

实验报告管理系统



【前言】

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

  1. Create database experiment_report_system;
复制代码
5.1.2建立数据表

学生数据表建立:
  1. create table student(
  2. sno char(10) primary key,
  3. sname char(10),
  4. sage int ,
  5. ssex enum('男','女')not null,
  6. sclass char(20)not null);
复制代码
教师信息表建立:
  1. create table teacher(
  2. tno char(10) primary key,
  3. tname char(10),
  4. tage int ,
  5. tsex enum('男','女')not null);
复制代码
教研主任表建立:
  1. create table director(
  2. dno char(10) primary key,
  3. dname char(10),
  4. password char(10),
  5. permission enum(‘t’,’s’,’c’,’ts’,’tc’,’sc’,’tsc’)not null);
复制代码
课程表建立:
  1. create table course(
  2. cno char(10) primary key,
  3. cname char(20),
  4. ctime int,
  5. ccredit double );
复制代码
实验表的建立:
  1. create table experiment(
  2. eno char(10) primary key,
  3. ename char(20),
  4. eendtime char(10),
  5. ecredit int,
  6. estandard char(20),
  7. cno char(10),
  8. foreign key(cno) references course(cno));
复制代码
实验完成情况表:
  1. create table e_completion(
  2. eno char(10),
  3. sno char(10),
  4. content char(50),
  5. s_score int,
  6. primary key(eno,sno) ,
  7. foreign key(eno) references experiment(eno),
  8. foreign key(sno) references student(sno)););
复制代码
学生课程表:
  1. create table sc(
  2. cno char(10),
  3. sno char(10),
  4. primary key(cno,sno));
复制代码
教师课程表:
  1. create table t_course (
  2. cno char(10),
  3. m_tno char (10),
  4. s_tno char(10),
  5. class char(20),
  6. primary key(cno,m_tno,s_tno),
  7. foreign key(m_tno) references teacher(tno),
  8. foreign key(cno) references course(cno),
  9. foreign key(s_tno) references teacher(tno));
复制代码
5.1.3建立视图

视图的建立:
  1. Create view s_e       
  2. as       
  3. Select eno,ename,eendtime,estandard,course.cno,cname,ctime,ccredit
  4. from experiment,course
  5. where experiment.cno=course.cno;
复制代码
(详见图13)

  图13 s_e视图
  1. Create view t_c       
  2. as
  3. select course.cno,cname,ctime,ccredit,m_tno,s_tno       
  4. from t_course,course
  5. where course.cno=(m_tno or s_tno);
复制代码
(详见图14)

  图14 t_c视图
  1. Create view s_c_e       
  2. as       
  3. Select student.sno,sname,sage,ssex,sclass,course.cno,cname,eno
  4. from student,course,t_course,experiment,sc
  5. where student.sclass=t_course.class
  6. 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. # 1 导包
  2. import pymysql
  3. # 2 建立数据库连接
  4. # 注意:此处user、password均为自己数据库的用户名和密码,database为数据库项目名称
  5. conn = pymysql.connect(host='localhost', user='root', password='wyl011025', database='experiment_report_system', port=3306, autocommit=False)
  6. # 3 获取游标
  7. cursor = conn.cursor()
  8. # 4 执行
  9. # 查看数据库的版本
  10. cursor.execute("select version();")
  11. # 注意,使用游标执行sql语句之后,不会返回我们的执行结果,要返回执行结果,必须通过cursor.fetchone()或cursor.fetchall()的方式来获取
  12. print("数据库版本号:", cursor.fetchone())
  13. # 5 关闭游标
  14. cursor.close()
  15. # 6 关闭连接
  16. conn.close()
复制代码

  图25 Python连接数据库  
  图26 连接成功
  1. '''插入多条数据'''
  2. import pymysql
  3. #打开数据库连接,不指定数据库
  4. conn=pymysql.connect(host='localhost', user='root', password='wyl011025', database='experiment_report_system', port=3306)
  5. #conn.select_db('pythondb')
  6. #获取游标
  7. cur=conn.cursor()
  8. #另一种插入数据的方式,通过字符串传入值
  9. sql="insert into student values(%s,%s,%s,%s,%s)"
  10. insert=cur.executemany(sql,[(1007,'1号',20,'女','智能一班'),(1008,'2号',21,'男','智能二班'),(1009,'3号',22,'女','智能三班')])
  11. print ('批量插入返回受影响的行数:',insert)
  12. cur.close()
  13. conn.commit()
  14. conn.close()
  15. print('sql执行成功')
复制代码

  图27 对数据库进行添加
  1. '''删除多条数据'''
  2. import pymysql
  3. #打开数据库连接
  4. conn=pymysql.connect(host='localhost', user='root', password='wyl011025', database='experiment_report_system', port=3306)
  5. #获取游标
  6. cur=conn.cursor()
  7. #删除前查询所有数据
  8. cur.execute("select * from sc;")
  9. print('删除前的数据为:')
  10. for res in cur.fetchall():
  11.       print (res)
  12. print ('*'*40)
  13. #删除2条数据
  14. sql="delete from sc where cno=%s"
  15. cur.executemany(sql,[(4),(5)])
  16. #删除后查询所有数据
  17. cur.execute("select * from sc;")
  18. print('删除后的数据为:')
  19. for res in cur.fetchall():
  20.       print (res)
  21. cur.close()
  22. conn.commit()
  23. conn.close()
  24. print('sql执行成功')
复制代码

  图28 对数据库进行删除
  1. '''更新多条数据'''
  2. import pymysql
  3. #打开数据库连接
  4. conn=pymysql.connect(host='localhost', user='root', password='wyl011025', database='experiment_report_system', port=3306)
  5. #获取游标
  6. cur=conn.cursor()
  7. #更新前查询所有数据
  8. cur.execute("select * from teacher where tname in ('张松','王静');")
  9. print('更新前的数据为:')
  10. for res in cur.fetchall():
  11.       print (res)
  12. print ('*'*40)
  13. #更新2条数据
  14. sql="update teacher set tage=%s where tname=%s"
  15. update=cur.executemany(sql,[(40,'张松'),(55,'王静')])
  16. #更新2条数据后查询所有数据
  17. cur.execute("select * from teacher where tname in ('张松','王静');")
  18. print('更新后的数据为:')
  19. for res in cur.fetchall():
  20.       print (res)
  21. cur.close()
  22. conn.commit()
  23. conn.close()
  24. print('sql执行成功')
复制代码

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

  图30 对数据库进行查看  6.2系统测试(复杂查询)

(1)查询学生及选课和实验信息(详见图31)
  1. select student.sno,sname,sage,ssex,sclass,sc.cno,eno
  2. from student,sc,experiment
  3. where student.sno='%s'and sc.cno=experiment.cno and sc.sno=student.sno;
复制代码

  图31  (2)查询教师及课程实验信息(详见图32)
  1. select teacher.tno,tname,tage,tsex,t_course.cno,eno
  2. from teacher,t_course,experiment
  3. 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)
  1. Select course.cno,cname,ctime,ccredit,m_tno,s_tno,class,eno,ename
  2. from course ,t_course,experiment
  3. where course.cno='%s'and t_course.cno=course.cno
  4. and course.cno=experiment.cno;
复制代码

  图33  7.心得与体会

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

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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

慢吞云雾缓吐愁

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表