数据库实验报告.docx
《数据库实验报告.docx》由会员分享,可在线阅读,更多相关《数据库实验报告.docx(18页珍藏版)》请在冰豆网上搜索。
![数据库实验报告.docx](https://file1.bdocx.com/fileroot1/2022-11/16/7fa6660a-8855-4f7d-8395-73c256dda45f/7fa6660a-8855-4f7d-8395-73c256dda45f1.gif)
数据库实验报告
中南大学
数据库实验报告
题目SQLserver数据库支持下的图书馆管理系统
学号
学生姓名
指导教师
学院
专业班级
完成时间
一、前言
数据库技术兴起于二十世纪六七十年代,其主要目的是有效地管理和存取大量的数据资源.数据库技术主要研究如何存储,使用和管理数据.近年来,数据库技术和计算机网络技术的发展相互渗透,相互促进,已成为当今计算机领域发展迅速,应用广泛的两大领域数据库技术应用广泛,如各大主流网站的海量的用户信息,图片视频信息就必须储存在数据库中。
最近报道的CSDN网站、天涯论坛等互联网站点数量巨大的用户信息被曝光,就与CSDN等网站数据库系统安全性不够有关。
鉴于数据库技术的重要性,作为一名自动化专业的学生,有必要掌握这一门技术。
在为期六周的数据库学习过程中,通过把SQLserver2008数据库与用Delphi7编写的应用程序结合起来,我做出了一个小型的图书管理系统,可以实现图书管理的基本功能,主要功能有:
查询图书、借阅归还图书、用户管理、图书的管理等。
初步掌握了数据的基本知识,以及数据库的使用,数据库与编程工具(delphi)的连接等知识。
二、需求分析和系统功能设计
2.1需求分析
信息化时代,要求方方面面的信息化。
图书馆,作为学生老师的借阅图书、获取知识的重要场所,如果完全采用采用人工的方式对读者和图书等进行管理,效率低下,浪费人力物力,而且容易出现各种错误。
因此有必要对图书馆实行信息化管理。
这就需要一个客户端,在客户端上,各个用户可以进行相应的操作,管理员可以对图书进行管理,对用户信息进行管理,同时进行借还书管理。
读者分为两类,学生以及老师,他们需要进行图书查询,个人信息查询修改等操作。
2.2系统功能设计
Ø登陆界面可以进行的操作
选择登陆人员的类别,输入账号和密码以后可以登录系统,使用系统各项功能。
如果有读者没有注册,点击登陆界面的新用户注册标签,可以进行新用户的注册,注册以后用户可以使用系统的各项功能。
Ø管理员界面可以进行的操作
图书管理模块:
由于图书馆的书一般为只进不出,一般只需要增加新书以及查看图书信息即可,因此有新增图书和分类查看图书信息两个功能。
录入图书以后可以点击继续录入。
读者管理模块:
可以进行读者的增加,读者帐号的注销,已有读者的信息修改,修改前可以查看某用户的旧信息,然后再进行修改。
该模块还包括所有读者信息的查看功能。
借还书管理模块:
输入读者的证号以及图书编号实现借书和还书,其中学生和老师可借的图书数量有别,学生可以借阅五本,老师可以借阅十本书,超过借阅数量以后不能借书;还书时可以从数据库中调出书籍借阅以及归还时间,并且显示当前时间。
Ø学生界面可以进行的操作
图书查询模块:
学生可以通过两种方式进行图书的查询,按图书编号进行查询,或者按图书名进行查询,其中按图书名进行查询时采用模糊查询方式,只要输入图书名称的关键字,含有该关键字的图书都会在表格中显示出来。
信息查询模块:
在该模块中,学生基本信息(姓名,读者证号,用户类别)可以直接显示
修改个人密码模块:
为了防止读者随意修改自己信息,只提供给读者修改个人密码的功能。
Ø老师界面可以进行的操作
图书查询模块:
老师可以通过两种方式进行图书的查询,按图书编号进行查询,或者按图书名进行查询,其中按图书名进行查询时采用模糊查询方式,只要输入图书名称的关键字,含有该关键字的图书都会在表格中显示出来。
信息查询模块:
在该模块中,老师基本信息(姓名,读者证号,用户类别)可以直接显示
修改个人密码模块:
为了防止读者随意修改自己信息,只提供给读者修改个人密码的功能。
三、系统功能图及数据结构关系设计
3.1系统功能图
3.2数据库结构关系设计
3.2.1概念模型
Ø图书实体
Ø读者实体
读者
类别
姓名
性别
读者证号
3.2.2E-R图
3.2.3关系模型
一个读者证号可能对应借阅信息表中多条信息,一个读者可能借阅多本图书,一本图书也可能被多个人借阅。
3.2.4表(关系)的设计
根据图书馆里系统功能的需要,该数据库需要设计四张表,图书信息表,读者信息表,借阅信息表,以及登录信息表;
图书信息表存储图书基本信息,读者信息表存储读者信息,借阅信息表存储借阅信息,登录信息表存储读者、管理员的帐号、密码、类别等信息,实现对不同人员操作的限制。
Ø图书信息表
字段名
数据类型
约束条件
图书编号
Varchar(10)
主键
书名
Varchar(30)
Notnull
作者
Varchar(10)
Notnull
出版社
Varchar(30)
Notnull
出版日期
Varchar(4)
Notnull
页码
smallint
Notnull
图书类别
Varchar(10)
Notnull
总量
Tinyint
Notnull
借出量
tinyint
Ø读者信息表
字段名
数据类型
约束条件
读者编号
Varchar(10)
主键
姓名
Varchar(10)
Notnull
性别
Char
(2)
男或女notnull
类别
Varchar(10)
学生或教职工notnull
Ø借阅信息表
字段名
数据类型
约束
读者证号
Varchar(10)
外键(读者信息表读者证号)
借阅书名
Varchar(30)
Notnull
图书编号
Varchar(10)
外键(图书信息表图书编号)
借阅时间
Date
归还时间
date
Unique(读者证号,图书编号)
Ø登录信息表
字段名
数据类型
约束
帐号
Varchar(10)
主键
密码
Varchar(10)
Notnull
用户类别
Varchar(10)
Notnull
四、系统各模块运行截图
Ø系统登录界面
Ø新用户注册界面
Ø管理员添加新书界面
Ø管理员添加用户
Ø管理员修改用户信息
Ø管理员查看所有用户信息
Ø管理员办理借书手续界面
Ø管理员办理借书手续
Ø读者查询馆藏图书界面
Ø读者查询个人信息界面
Ø读者修改个人密码界面
五、部分模块代码
Ø登陆模块
procedureTloginForm.loginButton1Click(Sender:
TObject);
begin
adoquery1.Close;
adoquery1.SQL.Clear;
caselogincomboboxex1.ItemIndexof
0:
begin
adoquery1.SQL.Add('select*from登录信息表where帐号='''+loginedit1.text+'''and密码='''+loginedit2.Text+'''and用户类别=''学生''');
adoquery1.Open;
ifadoquery1.RecordCount=0then
showmessage('用户名或者密码错误,请重新输入')
else
begin
loginform.Close;
studentform.Show;
end;
end;
1:
begin
adoquery1.SQL.Add('select*from登录信息表where帐号='''+loginedit1.text+'''and密码='''+loginedit2.Text+'''and用户类别=''教职工''');
adoquery1.Open;
ifadoquery1.RecordCount=0then
showmessage('用户名或者密码错误,请重新输入')
else
begin
loginform.Close;
teacherform.show;
end;
end;
2:
begin
adoquery1.SQL.Add('select*from登录信息表where帐号='''+loginedit1.text+'''and密码='''+loginedit2.Text+'''and用户类别=''管理员''');
adoquery1.Open;
ifadoquery1.RecordCount=0then
showmessage('用户名或者密码错误,请重新输入')
else
begin
loginform.Close;
adminform.Show;
end;
end
else
begin
showmessage('请选择用户类别');
end;
end;
Ø借书办理模块
procedureTadminForm.Button10Click(Sender:
TObject);
begin
adoform.JHSBLQuery.Close;
adoform.JHSBLQuery.SQL.Clear;
adoform.JHSBLQuery.SQL.Add('select读者信息表.类别,借阅信息表.读者证号from借阅信息表,读者信息表where借阅信息表.读者证号='''+edit18.Text+'''and借阅信息表.读者证号=读者信息表.读者证号');
adoform.JHSBLQuery.Open;
if(adoform.JHSBLQuery.FieldByName('类别').AsString='学生')then
begin
if(adoform.JHSBLQuery.RecordCount=5)then
begin
showmessage('该读者借阅书籍已经达到上限(5本书),无法借书,请还书后再借书。
');
button12.Visible:
=true;
end
else
begin
adoform.JHSBLQuery.Close;
adoform.JHSBLQuery.SQL.Clear;
adoform.JHSBLQuery.SQL.Add('insertinto借阅信息表select读者信息表.读者证号,图书信息表.书名,图书信息表.图书编号,null,nullfrom图书信息表,读者信息表where读者证号='''+edit18.Text+'''and图书编号='''+edit19.text+'''');
adoform.JHSBLQuery.ExecSQL;
showmessage('成功添加信息!
');
end;
end
else
begin
if(adoform.JHSBLQuery.RecordCount=10)then
begin
showmessage('该读者借阅书籍已经达到上限(10本书),无法借书,请还书后再借书。
');
button12.Visible:
=true;
end
else
begin
adoform.JHSBLQuery.Close;
adoform.JHSBLQuery.SQL.Clear;
adoform.JHSBLQuery.SQL.Add('i