数据库管理系统实验报告doc.docx
- 文档编号:16325347
- 上传时间:2023-07-12
- 格式:DOCX
- 页数:9
- 大小:18.28KB
数据库管理系统实验报告doc.docx
《数据库管理系统实验报告doc.docx》由会员分享,可在线阅读,更多相关《数据库管理系统实验报告doc.docx(9页珍藏版)》请在冰点文库上搜索。
数据库管理系统实验报告doc
数据库管理系统实验报告
篇一:
数据库_图书馆管理系统实验报告
数据库课程设计报告
专业:
计算机科学与技术班级:
03组长:
张云60组员:
王冉28指导教师:
袁道华成绩:
XX年12月16日
一、课程设计概述
1.课程设计背景
课程需要开发一个图书管理系统,要求在读者登记处可以将读者的信息添加,信息系统中保存,当读者信息发生变化,对计算机内容进行修改,当读者办理退卡手续要删除此读者信息,图书管理负责图书和出版社的管理,读书借还处进行借书管理,还书管理,库存查询,图书排行榜,生成超期未还书的读者,进行通知.给不同用户设置不同权限,供用户访问数据库。
2.编写目的
熟练掌握mysql中的创建数据库、创建表、显示、查询、select语句、视图、存储过程、创建检索、对表的添加、删除、修改和用户权限的设置等基本运用,并通过编写这个图书管理系统来实际演练。
3.软件定义
Mysql是目前最流行的开源的中小型关系数据管理系统,目前被广泛的应用于internet上得中小型网站中,它由mysqlAB公司开发、发布并支持。
本实验用的是mysql版本
4.开发环境
本实验用的是mysql版本,windowsXX
二、需求分析
1.问题的提出
1:
怎么通过mysql和信息之间的关系来创建图书管理系统的数据库及表2:
怎样来实现对插入读者信息并保存、修改及删除3:
怎么来实现对图书的管理?
4:
怎样实现对借书后在读书借还处添加读者借书信息和还书后删除读者借还处中的借书信息且更新图书管理处的图书数量?
5:
怎么实现对超期读者进行罚款操作和生成这些读者的名单,以方便通知6:
怎样实现图书的借书排行榜和查看库存书量?
7:
怎么样来根据不同用户对数据库的等级的不同来设置这些用户的权限?
2.需要完成的功能及各部分功能概述
1:
读者登记建卡处的功能是对读者基本信息进行登记,读者信息发生变化对读者基本信息进行修改,读者要求退还借书卡时对读者信息进行删除等操作。
2:
图书管理处的功能是对图书和出版社、作者、书价,数量,剩余书量进行管理更新。
3:
图书借还处的功能是对借出书的登记。
4:
基于上面3大模块,
进行细分一:
1、通过创建存储过程对读者通过insert进行登记
2、通过alter或update来修改和更新读者信息3、通过delete来对读者信息删除
二:
1、对图书的添加、更新和修改也用到存储过程
2、在对图书剩余量的更新是通过图书借还处和图书管理处之间的书号来发生联系,对存储过程对这个字段进行调用达到更新目的
三:
1、借书管理都是通过建立存储过程来实现登记处的登记同时也在借书处登记借读信息,同时更新图书的剩余量,还书管理处是根据还书的读者号和书号来选定要清除的借读信息,同时也更新图书剩余量信息,还要根据存储过程传来的read_id和book_id及js_quantity(借书数量)的参数计算出是否超期,超期的天数显示出来。
2、产生超期未还书的读者的名单是通过视图来实现显示3、对图书排行我也是通过存储过程实现
4:
对图书进行借出量排行,增加图书的热度和知名度和图书的剩余量查询。
5:
新建读者用户和管理员用户,对他们分别设置不同的权限,在mysql的安装文件下的bin目录进行登录
项目流程图
功能模块图
E-R图
图中各实体属性如下:
读者档案:
学号,读者姓名,性别,借书证号,单位借书证:
借书证号,姓名,性别,办证日期管理员:
操作员编号,管理员姓名,登陆密码库存信息:
书号,图书编号
借出信息:
图书编号,借书证号,借书日期,归还日期
图书档案:
书号,书名,作者,出版单位,出版日期,单价,类别,藏书册书图书编号入库日期
三、部分关键代码
图书借阅:
class="word_orange"> 当前位置:
图书借还>图书借阅>>> error_reporting(E_ALL&~E_NOTICE);if($_REQUEST['barcode']!
=null){$barcode=$_REQUEST['barcode'];$sql=mysql_query("selectr.*,astypename,fromtb_readerrleftjointb_readerTypeton=where='$barcode'");$info=mysql_fetch_array($sql);if($info==false){
echo"alert('读者不存在!
');;";}}
else{
$sql=mysql_query("selectr.*,astypename,fromtb_readerrleftjointb_readerTypeton=where=000000");$info=mysql_fetch_array($sql);}
dff:
\教学库
f:
\仓库库存.mdff:
\仓库库存
将数据库导入
在SqlServerXX导入已有的数据库(*.mdf)文件,在SQLServerManagementStudio里连接上数据库后,选择新建查询,然后执行语句
EXECsp_attach_db@dbname='教学库',@filename1='f:
\教学库.mdf',@filename2='f:
\教学库'go
use[教学库]
EXECsp_changedbowner'sa'go
EXECsp_attach_db@dbname='仓库库存',@filename1='f:
\仓库库存.mdf',
1
@filename2='f:
\仓库库存'go
use[仓库库存]
EXECsp_changedbowner'sa'go
可能出现问题
附加数据库出现“无法打开物理文件""。
操作系统错误5:
"5(拒绝访问。
)"。
(MicrosoftSQLServer,错误:
5120)”。
解决:
找到要附加的.mdf文件-->右键-->属性-->安全-->选择当前用户-->编辑-->完全控制。
对.log文件进行相同的处理。
2.删除创建的数据库,使用T-SQL语句再次创建该数据库,主文件和日志文件的文件名同上,要求:
仓库库存_data最大尺寸为无限大,增长速度为20%,日志文件初始大小为2MB,最大尺寸为5MB,增长速度为1MB。
CREATEDATABASE仓库库存(NAME='仓库库存_data',
FILENAME='F:
\仓库库存',SIZE=10MB,
FILEGROWTH=20%)LOGON
(NAME='仓库库存_log',
FILENAME='F:
\仓库库存_log.LDF',SIZE=2MB,MAXSIZE=5MB,
FILEGROWTH=1MB)
在数据库“仓库库存”中完成下列操作。
(1)创建“商品”表,表结构如表1:
(2)创建“仓库”表,表结构如表2:
表2仓库表
2
(3)创建“库存情况”表,表结构如表3:
(1)USE仓库库存GO
CREATETABLE商品
(商品编号char(6)NOTNULLPRIMARYKEY,商品名称char(20)NOTNULL,单价Float,
生产商Varchar(30))
(2),(3)略。
建立“商品”表、“仓库”表和“库存情况”表三表之间的关系图。
分别给“商品”表、“仓库”表和“库存情况”表添加数据。
3.数据库查询.
试用SQL的查询语句实现下列查询:
(1)统计有学生选修的课程门数。
答:
SELECTCOUNT(DISTINCT课程号)FROM选课
(2)求选修C004课程的学生的平均年龄。
答:
SELECTAVG(年龄)FROM学生,选课
WHERE学生.学生号=选课.学生号and课程号=C004(3)求学分为3的每门课程的学生平均成绩。
答:
SELECT课程.课程号,AVG(成绩)FROM课程,选课
WHERE课程.课程号=选课.课程号and学分=3GROUPBY课程.课程号
(4)统计每门课程的学生选修人数,超过3人的课程才统计。
要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列。
3
答:
SELECT课程号,COUNT(*)FROM选课
GROUPBY课程号HAVINGCOUNT(*)>3
ORDERBYCOUNT(*)DESC,课程号
(5)检索学号比王明同学大,而年龄比他小的学生姓名。
答:
SELECT姓名FROM学生
WHERE学生号>(SELECT学生号FROM学生WHERE姓名='王明')
and年龄 WHERE姓名='王明')
(6)检索姓名以王打头的所有学生的姓名和年龄。
答:
SELECT姓名,年龄FROM学生WHERE姓名LIKE王%?
(7)在选课表中检索成绩为空值的学生学号和课程号。
答:
SELECT学生号,课程号FROM选课WHERE成绩ISNULL
(8)
求年龄大于女同学平均年龄的男学生姓名和年龄。
答:
SELECT姓名,年龄FROM学生
WHERE性别=男?
and年龄>(SELECTAVG(年龄)FROM学生
WHERE性别=女)
(9)求年龄大于所有女同学年龄的男学生姓名和年龄。
答:
SELECT姓名,年龄FROM学生
WHERE性别=男?
and年龄>all(SELECT年龄FROM学生
WHERE性别=女)
(10)检索所有比王明年龄大的学生姓名、年龄和性别。
答:
SELECT姓名,年龄,性别FROM学生
WHERE年龄>(SELECT年龄FROM学生
WHERE姓名=王明)
(11)检索选修课程C001的学生中成绩最高的学生的学号。
答:
SELECT学生号FROM选课
WHERE课程号=C001and成绩=(SELECTMAX(成绩)FROM选课WHERE课程号=C001)(12)检索学生姓名及其所选修课程的课程号和成绩。
答:
SELECT姓名,课程号,成绩FROM学生,选课WHERE学生.学生号=选课.学生号
(13)检索选修2门以上课程的学生总成绩(不统计不及格的课程),并要求按总成绩的
4
降序排列出来。
答:
SELECT学生号,SUM(成绩)FROM选课
WHERE成绩>=60GROUPBY学生号
HAVINGCOUNT(*)>=2
ORDERBYSUM(成绩)DESC
利用控制流语句,查询学生号为0101001的学生的各科成绩,如果没有这个学生的成绩,就显示“此学生无成绩”。
答:
IFEXISTS(SELECT*FROM选课WHERE学生号='0101001')
SELECT课程号,成绩FROM选课WHERE学生号='0101001'ELSE
PRINT'此学生无成绩'
用函数实现:
求某个专业选修了某门课的学生人数。
答:
CREATEFUNCTIONrenshu(@pchar(10),@cnchar(4))RETURNSfloat
AS
BEGIN
DECLARE@coufloat
SELECT@cou=(SELECTcount(*)FROM学生,选课
WHERE学生.学生号=选课.学生号and课程号=@cn
and专业=@p)
RETURN@couEND
用函数实现:
查询某个专业所有学生所选的每门课的平均成绩。
答:
CREATEFUNCTIONaverage(@pchar(10))RETURNSfloat
AS
BEGIN
DECLARE@averfloat
SELECT@aver=(SELECT课程号,avg(成绩)FROM学生,选课
WHERE学生.学生号=选课.学生号and专业=@p
GROUPBY课程号)
RETURN@averEND
针对“仓库库存”中的“商品”表,查询商品的价格等级,商品号、商品名和价格等级(单价1000元以内为“低价商品”,1000~3000元为“中等价位商品”,3000元以上为“高价商品”)。
答:
SELECT商品编号,商品名称,
CASE
5
篇三:
管理信息系统数据库设计实验报告
管理信息系统课程实验报告
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 管理 系统 实验 报告 doc