数据库实验报告华北电力大学Word文件下载.docx
《数据库实验报告华北电力大学Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据库实验报告华北电力大学Word文件下载.docx(30页珍藏版)》请在冰豆网上搜索。
3)设计关系模式间的参照完整性,要求实现级联删除和级联更新。
4)用SQL语言完成数据库内模式的设计。
3.数据库权限的设计:
1)根据系统分析,完成授权操作;
2)了解学习收回权限的操作。
4.完成用户界面的设计,对重要数据进行加密。
5.连接数据库,用宿主语言实现系统所需的各种操作:
1)实现数据记录的录入、删除、查询和修改。
2)以视图的形式完成复杂查询,比如多表、多条件等。
三、进度计划
序号
设计(实验)内容
完成时间
备注
1
根据任务书完成信息模型(概念模型、逻辑模型、完整性、规范化)的设计,并基于选用的DBMS实现该信息模型,然后录入初始数据
2
根据任务书完成各种数据定义和数据操作,并保留所有SQL语句。
3
数据库权限设计,用户界面设计
4
用可视化开发工具环境开发学生选定的信息系统(C/S或者B/S模式)
5
系统的完善与验收
四、设计(实验)成果要求
1.在DBMS(如oracle,SQLServer2005/2008,DB2等)上完成完整的数据库的设计;
2.使用可视化开发平台完成信息系统,要求可以正确运行;
3.完成实验报告。
五、考核方式
1.在微机上检查数据库模式的设计、三大完整性的设计、关系属于几范式等;
2.在微机上检查系统的运行结果,要求学生阐述使用的相关技术;
3.实验报告的检查。
六、题目附录
1.学生信息管理信息系统
2.图书管理信息系统
3.物资管理信息系统
4.汽车销售管理信息系统
5.超市管理信息系统
6.通讯录管理信息系统
7.工资管理信息系统
8.酒店管理信息系统
9.小区物业管理信息系统
年月日
一、课程设计(综合实验)的目的与要求
1.本实验是为计算机科学与技术等专业的学生在学习数据库原理后,为培养更好的解决问题和实际动手能力而设置的实践环节。
2.通过该实验,培养学生在建立数据库系统过程中使用关系数据理论的能力。
3.通过对一个数据库系统的设计,培养学生对数据库需求分析、数据库方案设计、系统编码、界面设计和软件调试等各方面的能力。
2、设计(实验)正文
1、系统功能图
系统详细描述与E-R图设计
一个借阅者可以借阅多种图书,每种图书可以被多个借阅者借阅(假设每种馆藏副本不止一本)。
每种图书有一个唯一的ID号作为标志,每一个借阅者和管理员有一个唯一的借阅者或管理员号,每一个图书对应一个图书类别,每一个图书类别有一个唯一的图书类别编号来定义不同的图书类别。
通过设置管理员和借阅者不同权限使管理员对图书信息和管理员信息具有增删改的权限,借阅者可以借阅图书。
根据用户需求,对象的类描述如下:
类描述
属性
事件
Reader
借阅者类
✧借阅者编号
✧借阅者姓名
✧借阅者登录密码
✧借阅者性别
✧借阅者的出生年月
✧修改密码
✧查询书籍
✧查询超期图书
Admin
管理员类
✧管理员登录账号
✧管理员姓名
✧管理员密码
✧图书的增加、删除和修改
✧借阅者的增加、删除和修改
✧图书类型的增加、删除和修改
Book
图书类
✧图书编号
✧图书名称
✧图书的状态
✧图书类型
✧图书作者
✧图书出版社
✧图书出版日期
✧图书的描述
✧按类型选出图书
✧按编号选出图书
✧按内容选出图书
✧按出版社选出图书
Type
图书类型类
✧类型编号
✧图书所属类型名称
✧图书类型的添加、删除
✧图书类型的修改
Borrow
借阅类
✧标识符
✧借书日期
✧预定图书
✧借阅图书
1.4根据以上分析设计出系统的E-R图如下:
2、系统逻辑结构设计
2.1根据以上E-R图得到系统逻辑模型如下:
借阅者(借阅者帐号,借阅者姓名,借阅者密码,借阅者性别,借阅者出生年月)
图书(图书编号,名称,作者,类别名称,状态,出版社,出版日期,描述)
管理员(管理员编号,管理员姓名,管理员密码)
类别(类别编号,类别名称)
借阅(借阅编号,借阅者帐号,图书编号,借阅日期)
说明:
以上关系中,下划线部分为对应关系的主码,加黑部分为外码,且所有属性均非空。
2.2满足三范式的证明:
关系名
依赖关系
证明
借阅者关系:
借阅者帐号->
借阅者密码;
借阅者姓名;
借阅者编号->
借阅者性别;
借阅者出生年月。
不存在传递函数依赖,也不存在不完全函数依赖,属于3NF。
图书关系
图书编号->
图书名称;
作者;
出版社;
出版日期;
图书状态
图书类别;
图书描述。
从关系的函数依赖集可以看出,关系中不存在传递函数依赖,也不存在不完全函数依赖,因此属于3NF。
管理员关系
管理员编号->
管理员姓名;
管理员密码。
从以上函数依赖集可以看出,该关系不含传递函数依赖,也不含不完全函数依赖,属于3NF。
类别关系:
类别编号->
类别名称。
该关系中只含有一个函数依赖,属于3NF。
借阅关系:
借阅编号->
图书编号;
借阅者编号;
借阅日期。
2.3参照完整性
各个关系间的参照情况如下图所示:
2.4SQL语言创建各表
借阅者表:
CREATETABLETB_Reader
(
Rnumvarchar(20)primarykey,
Rnamevarchar(20)notnull,
Rpwdvarchar(20)notnull,
Rsexvarchar(20)notnull,
Rbirthvarchar(20)notnull
)
图书表:
CREATETABLETB_Book
Bnumvarchar(20)primarykey,
Bnamevarchar(20)notnull,
Bstateintnotnull,
Btypevarchar(20)notnull,
Bauthorvarchar(20)notnull,
Bpublishervarchar(20)notnull,
Bpublishvarchar(20),
Bdescribvarchar(20),
foreignkey(Btype)referencesTB_Type(typename)
管理员表:
CREATETABLETB_Admin
Anumvarchar(20)primarykey,
Anamevarchar(20)notnull,
Apwdvarchar(20)notnull,
借阅表:
CREATETABLETB_Borrow
Idintprimarykey,
Bnumvarchar(20)notnull,
Rnumvarchar(20)notnull,
Rtimevarchar(20)notnull,
Rtimevarchar(20),
foreignkey(Bnum)referencesBook(Bnum),
foreignkey(Rnum)referencesReader(Rnum),
ondeletecascade
onupdatecascade
权限表:
CREATETABLETB_Type
Typenumvarchar(20)primarykey,
Typenamevarchar(20)notnull,
建表结果:
Ø
Tb_Admin管理员信息表
字段值
数据类型
约束
描述
Anum
Varchar(20)
PrimaryKey
管理员编号
Aname
NOTNULL
管理员姓名
Apwd
管理员登录密码
Tb_Reader借阅者信息表
Rnum
借阅者编号
Rname
借阅者姓名
Rpwd
借阅者登录密码
Rsex
借阅者性别
Rbirth
借阅者的出生年月
Tb_Book图书信息表
Bnum
图书编号
Bname
图书名称
Bstate
Int
默认是0
图书的借阅状态,借出是1
Btype
图书类型
Bauthor
图书作者
Bpublisher
Varchar(50)
图书出版社
Bpublish
图书出版日期
Bdescrib
Varchar(200)
图书的描述
Tb_Type图书类型信息表
Typenum
类型编号
Typename
图书所属类型名称
Tb_Borrow借书/还书信息表
Id
PrimaryKey,自增
标识符
Btime
借书日期
Rtime
还书日期
2.5建成各表的截图
●Admin表
●Book表
●Borrow表
●
Reader表
●Type表
3.连接并操作数据库举例:
3.1连接数据库
<
?
xmlversion="
1.0"
encoding="
utf-8"
?
>
<
configuration>
<
configSections>
/configSections>
connectionStrings>
addname="
Library.Properties.Settings.LibraryConnectionString"
connectionString="
DataSource=.;
InitialCatalog=Library;
PersistSecurityInfo=True;
IntegratedSecurity=True;
"
providerName="
System.Data.SqlClient"
/>
/connectionStrings>
/configuration>
4.界面设计与运行结果
根据系统所需实现的功能及系统的用户类型不同,将界面设计如下:
◆登陆界面
◆借阅者操作界面
◆管理员操作界面
◆管理员管理界面
◆借阅者管理界面
◆图书管理界面
◆图书类别管理界面
三、课程设计总结或结论
通过此次数据库的课程设计,真正达到了学与用的结合,增强了对数据库方面应用的理解,对自己今后参与开发数据库系统积累了不少经验,在实验过程中,对数据库设计理念及思想上有更高的认识,从需求分析,到概念设计和逻辑设计,E-R图的表示,数据表的创建,学会了不少有关数据库开发过程中的知识。
同时增强了自己在数据库中应用SQL语言的灵活性,其中包括,插入、删除、修改、查询,牵涉表和表之间的联系,约束项的设置,使逻辑更严密。
此外在前台界面编写时自学了很多C#编程语言的知识,收获很大。
在实验过程中,遇到的问题很多,比如插入操作在前台页面获取的值为空,数据库拒绝了此插入操作,我的解决方法是将所有表的所有属性都改成了不能为空,避免了数据在页面和数据库之前传输操作时的错误.
在整个过程中,我上网和从书中查了不少资料,学以致用,自我创新,从学到用,从用又到学,不断修改,完善系统。
虽然不能达到老师要求那样的约束完善的图书馆管理系统,特别是对借阅者借阅图书部分的实现比较简单。
但在这短短的一周,也实现了较为完善的基本功能,体会到加强理论学习对完善系统会有很多帮助。
另外,在发现问题、分析问题和解决问题的过程中,学到了很多东西,最后感谢老师的悉心教导。
四、参考文献
[1]王珊,萨师煊.《数据库系统概论》高等教育出版社.
[2]宋雨.软件工程.北京:
中国电力出版社,2007
(2).
[3]宋雨,程晓荣,黄志强.计算机综合实践指导.北京:
清华大学出版社,2004(3).
[4]刘婕,张琳.C#.NET2.0+SQLServer动态网站开发从基础到实践.北京:
电子工业出版社,2007
(1).
[5]PressmanRS,郑人杰,马素霞.软件工程:
实践者的硏究方法[M].北京:
机械工业出版社,2011(10).
[6]李铭.C#高级编程.北京:
清华大学出版社,2010(11).
附录
Admin表:
Book表:
Borrow表:
Reader表:
Type表:
类图:
部分程序代码:
//MainLogin
usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Windows.Forms;
usingBLL;
namespaceLibrary
{
publicpartialclassMainLogin:
Form
{
BLL.ReaderBLOrb=newReaderBLO();
AdminBLOab=newAdminBLO();
publicMainLogin()
InitializeComponent();
comboBox1.SelectedIndex=0;
}
privatevoidbt_login_Click(objectsender,EventArgse)
stringnum=tb_num.Text.Trim();
stringpwd=tb_pwd.Text.Trim();
intindex=comboBox1.SelectedIndex;
if(index==0)
boolflag=rb.IsReaderLogin(num,pwd);
if(flag)
Formadl=newReaderManage(num,pwd);
this.Hide();
adl.Show();
else
MessageBox.Show("
账户和密码不匹配,请重新输入!
"
警告"
MessageBoxButtons.OK);
tb_num.Text="
;
tb_pwd.Text="
tb_num.Focus();
boolflag=ab.IsAdminLogin(num,pwd);
Formadl=newAdminManage();
privatevoidbt_exit_Click(objectsender,EventArgse)
Application.Exit();
privatevoidllb_login_LinkClicked(objectsender,LinkLabelLinkClickedEventArgse)
Formadl=newAdminLogin();
protectedoverridevoidOnClosing(CancelEventArgse)
//退出提示,真的要退出,才允许退出
if(MessageBox.Show(this,"
确认退出?
提示信息:
MessageBoxButtons.YesNo,MessageBoxIcon.Question)==DialogResult.Yes)
e.Cancel=false;
e.Cancel=true;
privatevoidlinkLabel1_LinkClicked(objectsender,LinkLabelLinkClickedEventArgse)
try
System.Diagnostics.Process.Start("
);
catch
//访问链接失败
}
//AdminManage
publicpartialclassAdminManage:
BookBLObb=newBookBLO();
publicAdminManage()
bt_TopManage.Enabled=false;
//分别按图书编号、图书名、出版社查找图书
privatevoidbt_sure_Click(objectsender,EventArgse)
stringnum=tb_num.Text.Trim();
DataTabledt=bb.SearchBorrowBookByNum(num);
if(dt.Rows.Count>
0)
dataGridView1.DataSource=dt;
bt_TopManage.Enabled=true;
tb_num.Enabled=false;
未找到相应编号的图书!
privatevoidbt_TopManage_Click(objectsender,EventArgse)
stringnum=tb_num.Text.Trim();
boolb=ab.LogoutBookByBnum(num);
if(b)
更新图书状态成功!
提示"
dataGridView1.DataSource=bb.SearchBorrowBookByNum(num);
tb_num.Enabled=true;
tb_num.Te