湖南通信职业技术学院
数据库课程实训报告
设计题目:学院图书管理系统
学生姓名:严倩
系 别:计算机系
专 业:计算机管理
班 级:计管091
学 号:200902030150
指导教师: 邹薛标
20##年12月1日
目录
一、概述
1.1项目背景……………………………………………………………3
1.2课程设计目的………………………………………………………3
1.3题目名称……………………………………………………………3
1.4开发环境……………………………………………………………3
二、需求分析
2.1 基本要求 ………………………………………………………4
2.2 实现的方法 ……………………………………………………4
三、数据库设计
3.1 概念模型设计………………………………………………………4
3.2 逻辑数据库设计……………………………………………………5
3.3 数据库的物理设计…………………………………………………6
四、系统实现的具体功能和创建的各类代码…………………………………7
五、实训心得……………………………………………………………………10
一、概述
1.1 项目背景
图书管理系统是学院图书馆事务管理的一个重要内容,管理图书馆的各种信息,对学院图书馆来说是很重要的,这也是图书管理员的一个大问题。在这种情况下,一个可以规范化,自动化的图书管理系统对于图书馆来说显得至关重要。
最初的图书管理,都是靠人力完成,在图书馆规模比较小的时候,人力可以很好完成,但随着规模的增大,图书数量越来越多,这种管理的压力也越来越大,各种弊端显示出来。网络的到来给这带来了很大的便利,特别是对于图书管理员来说。
1.2课程设计目的
1. 熟悉大型数据库管理系统的结构与组成;
2. 熟悉数据库应用系统的设计方法和开发过程;
3. 掌握一种数据库管理系统SQL SERVER2005的应用技术;
4. 熟悉数据库设计工具的使用;
5. 熟悉数据库安全的相关知识和技术;
6. 熟悉数据库系统的管理和维护。
1.3题目及要求
题目:学院图书管理系统
图书管理员可以通过图书编号来查询到该图书的详细资料,并且查询出该书的借出还入情况,以及借书者的个人资料等,该系统为图书管理员的管理提供了方便快捷。
要求:
1. 充分了解软件设计的全过程。
2. 从开始的系统需求分析到最后的代码编写,都要有详细的计划,设计文档应按照课程设计的要求书写。
3. 系统中的数据表设计应合理、高效,尽量减少数据冗余。
4. 数据库及表要易于维护、方便升级。
5. 必须包括数据库、表、查询、数据录入、删除、更新、约束建立等代码每人提交一个实训报告和可行的运行代码。
1.4 设计环境
1)、操作系统:windows XP
2)、数据库系统:Microsoft SQL Server 2005企业版
二、需求分析
2.1 基本要求
按照题目的要求,要实现的基本功能有以下几条:
1)能够输入图书的综合情况和进行新书入库、现有图书信息修改以及删除;
2)能够实现对读者档案的查询和编辑管理;
3)能够进行罚款功能;
4)能够进行借阅历史的查询功能;
2.2 实现方法
按照要求,实现管理员的登录权限:
1)提供管理员对图书明细查询的功能;
2)管理员对图书等具有查询和修改权限;
3)按照借书的基本流程进行信息管理;
三、数据库设计
3.1 概念模型设计
3.2 逻辑数据库设计
针对图书管理信息系统的需求,通过对借书流程的分析,设计如下面的数据项和数据结构:
管理员信息表,包括的数据项有:(管理员编号、姓名、密码、);
学生信息表,包括的数据项有:(学号、姓名、班级、性别、年龄、住址);其中,学生学号设为主键约束;
图书信息表,包括的数据项有:(图书编号、图书名称、图书作者、图书价格、作者性别、图书语言、出版日期、出版社);其中图书编号设为主键约束;
借书信息表,包括的数据项有:(图书编号、借出时间、还书时间、学生编号);
图书更换信息表,包括的数据项有:(图书编号、损坏或丢失时间、更换时间);
3.4 数据库的物理设计
完成了数据库的逻辑设计之后,即可开始数据库的物理设计。基于以上数据库逻辑设计,考虑到程序设计的简易性及通用性,本图书管理信息系统采用的SQL Servier数据库,并在其下创建了5个数据表。
管理员----- management
学生----- stuinfo
图书-----bookinfo
借书记录-----lendinfo
图书更换-----change
四、系统实现的具体功能和创建的各类代码
create table management -----创建表
(
adno varchar (10), -----管理员编号
adname varchar(10)not null, -----管理员姓名
admima varchar(20)not null, -----登录密码
);
insert into management values('20030901','jak','adimi1');
insert into management values('20030902','jim','adimi2');
insert into management values('20030903','jay','adimi3');-----插入数据
select * from management -----查询语句
create table stuinfo -----创建表
(
stuno varchar(20)primary key not null -----学号
constraint chk_stuno -----check 约束语句
check(stuno like'2008090203[0-5][0-9]'),
stuname varchar(10)not null,
class varchar(20)not null,
stusex char(2)not null
constraint chk_stusex
check(stusex in('男','女')),
birthday datetime,
stuplace varchar(50)
)
insert into stuinfo values('200809020301','jack','stu2','男','1986-05-10','湖南');
insert into stuinfo values('200809020302','jack','stu2','男','1986-05-10','湖南');
insert into stuinfo values('200809020303','jack','stu2','男','1986-05-10','湖南');
insert into stuinfo values('200809020304','jack','stu2','男','1986-05-10','湖南');
update stuinfo
set stuname='meggie',stusex='女'
where stuno='200809020301' -----数据更新语句
delete stuinfo where stuno='200809020302' -----数据删除语句
select * from stuinfo
go
create table bookinfo
(
bookno varchar(20)not null primary key ,
bookname varchar(20)not null,
bookauthor varchar(20)not null,
bookprice varchar(10)not null,
atsex char(2)not null
constraint chk_atsex
check(atsex in('男','女')),
booklangguage varchar(10)not null,
bookday datetime,
bookplace varchar(10),
)
insert into bookinfo values('45233549451','《青年文摘》','舒婷','20','女','中文','1992-01-01','北京出版社');
insert into bookinfo values('45233549452','《我们的故事》','严倩','18','女','中文','1992-01-01',上海出版社');
insert into bookinfo values('45233549453','《生活》','邹薛标','18','男','中文','1992-01-01','北京出版社');
insert into bookinfo values('45233549454','《我们的故事》','严倩','18','女','中文','1992-01-01','北京');
insert into bookinfo values('45233549455','《我们的故事》','严倩','18','女','中文','1992-01-01','北京');
update bookinfo
set bookname='《青春印记》',
where stuno=''45233549455'
select * from bookinfo
go
create table lend
(
bookno varchar(20)not null ,
lendday datetime,
returnday datetime,
stuno varchar(12) not null,
);
Insert into lend
values('45233549451','1999-05-10','1999-05-20','200809020311');
insert into lend
values('45233549452','1999-05-10','1999-05-20','200809020311');
insert into lend
values('45233549453','1999-05-10','1999-05-20','200809020311');
insert into lend
values('45233549454','1999-05-10','1999-05-20','200809020311');
insert into lend
values('45233549455','1999-05-10','1999-05-20','200809020311');
select * from lend
create table change
(
bookno varchar(20)not null ,
losetime datetime,
changetime datetime,
);
insert into change values('45233549451','1999-05-10','1999-05-20');
insert into change values('45233549452','1999-05-10','1999-05-20');
insert into change values('45233549453','1999-05-10','1999-05-20');
insert into change values('45233549454','1999-05-10','1999-05-20');
insert into change values('45233549455','1999-05-10','1999-05-20');
select * from change
五、实训心得
这个星期是我们SQL Server 数据库管理课的实训,经过一个星期的实训,我对数据库这门课程有了更深的了解,简单的说下我对数据库的理解吧。我觉得它就是创建一些表格,然后再用一些语句根据他们之间的关系,把它们组合在一起,这周的实训我选择的是学院图书管理系统。首先我对创建该系统进行了项目背景与市场需求的分析,然后再开始动手做。
这次我们实训的内容是从数据库、数据表的创建和修改开始的,表是建立关系数据库的基本结构,用来存储数据具有已定义的属性,在表的操作过程中,有查看表信息、查看表属性、修改表中的数据、删除表中的数据及修改表和删除表的操作。从实训中让我更明白一些知识,表是数据最重要的一个数据对象,表的创建好坏直接关系到数数据库的成败,表的内容是越具体越好,但是也不能太繁琐,以后在实际应用中多使用表,对表的规划和理解就会越深刻。
其实现在想想数据库学起来也是不难的,但有一点必须注意,那就是上课必须跟着老师的进度走,一定要注意听讲,勤做笔记.这样,你学起来就会得心应手,没什么困难。
总之,这是一门很值得学的课程,自己学过获益匪浅,就算自己将来不从事这个行业,但是至少对数据不再陌生,甚至还略知一二。呵呵…谢谢老师~!
目录
一、摘要
1.1项目背景……………………………………………………………2
1.2课程设计目的………………………………………………………2
1.3题目名称……………………………………………………………2
1.4开发环境……………………………………………………………2
二、需求分析
2.1 基本要求 ………………………………………………………3
2.2 实现的方法 ……………………………………………………3
三、数据库设计
3.1 数据库概念结构设计………………………………………………3
3.2数据库逻辑结构设计………………………………………………4
3.3 数据库物理设计……………………………………………………4
四、数据流图及程序结构框图…………………………………………………6
五、程序源代码及其说明………………………………………………………10
六、总结…………………………………………………………………………13
一、摘要
1.1 项目背景
图书管理系统是学院图书馆事务管理的一个重要内容,管理图书馆的各种信息,对学院图书馆来说是很重要的,这也是图书管理员的一个大问题。在这种情况下,一个可以规范化,自动化的图书管理系统对于图书馆来说显得至关重要。
最初的图书管理,都是靠人力完成,在图书馆规模比较小的时候,人力可以很好完成,但随着规模的增大,图书数量越来越多,这种管理的压力也越来越大,各种弊端显示出来。网络的到来给这带来了很大的便利,特别是对于图书管理员来说。
1.2课程设计目的
1. 熟悉大型数据库管理系统的结构与组成;
2. 熟悉数据库应用系统的设计方法和开发过程;
3. 掌握一种数据库管理系统SQL SERVER2005的应用技术;
4. 熟悉数据库设计工具的使用;
5. 熟悉数据库安全的相关知识和技术;
6. 熟悉数据库系统的管理和维护。
1.3题目及要求
题目:学院图书管理系统
图书管理员可以通过图书编号来查询到该图书的详细资料,并且查询出该书的借出还入情况,以及借书者的个人资料等,该系统为图书管理员的管理提供了方便快捷。
要求:
1. 充分了解软件设计的全过程。
2. 从开始的系统需求分析到最后的代码编写,都要有详细的计划,设计文档应按照课程设计的要求书写。
3. 系统中的数据表设计应合理、高效,尽量减少数据冗余。
4. 数据库及表要易于维护、方便升级。
5. 必须包括数据库、表、查询、数据录入、删除、更新、约束建立等代码每人提交一个实训报告和可行的运行代码。
1.4 设计环境
1)、操作系统:windows XP
2)、数据库系统:Microsoft SQL Server 2000
二、需求分析
2.1 基本要求
按照题目的要求,要实现的基本功能有以下几条:
1)能够输入图书的综合情况和进行新书入库、现有图书信息修改以及删除;
2)能够实现对读者档案的查询和编辑管理;
3)能够进行罚款功能;
4)能够进行借阅历史的查询功能;
2.2 实现方法
按照要求,实现管理员的登录权限:
1)提供管理员对图书明细查询的功能;
2)管理员对图书等具有查询和修改权限;
3)按照借书的基本流程进行信息管理;
三、数据库设计
3.1 数据库概念结构设计
3.2数据库逻辑结构设计
针对图书管理信息系统的需求,通过对借书流程的分析,设计如下面的数据项和数据结构:
注册信息表,包括的数据项有:(管理员类别、注册编号、密码、);
学生信息表,包括的数据项有:(编号、学号、姓名、班级、性别、年龄);
图书信息表,包括的数据项有:(图书编号、图书名称、图书类别、图书价格、作者性别、图书语言、出版日期、出版社);
借书信息表,包括的数据项有:(图书编号、借出时间、还书时间、学生编号);
3.3数据库物理设计
完成了数据库的逻辑设计之后,即可开始数据库的物理设计。基于以上数据库逻辑设计,考虑到程序设计的简易性及通用性,本图书管理信息系统采用的SQL Servier数据库,并在其下创建了以下数据表。
四、数据流图及程序结构框图
五、程序源代码及其说明
菜单界面代码:
Private Sub m_about_Click()
frmAbout.Show
End Sub
Private Sub m_book_Click()
frmBookManage.Show
End Sub
Private Sub m_bookquery_Click()
frmBookQuery.Show
End Sub
Private Sub m_exit_Click()
Unload Me
End Sub
Private Sub m_lend_Click()
frmLoanManage.Show
End Sub
Private Sub m_lend_report_Click()
dsrBorrowManageReport.Show
End Sub
Private Sub m_lendp_Click()
dsrLibraryRankReport.Show
End Sub
Private Sub m_punish_Click()
frmPunishManage.Show
End Sub
Private Sub m_punish_report_Click()
dsrFineManageReport.Show
End Sub
Private Sub m_reader_Click()
frmReaderManage.Show
End Sub
Private Sub m_readerquery_Click()
frmReaderQuery.Show
End Sub
Private Sub m_rigister_Click()
RegisterNewUsers.Show
End Sub
Private Sub MDIForm_Load()
If OA = True Then m_rigister.Enabled = False
End Sub
用户登陆界面代码:
Option Explicit
Private Sub CmdCancel_Click()
Unload Me
End Sub
Private Sub CmdOk_Click()
Dim miCount As Integer '用于记录输入密码次数
Dim str As String
str = "select 密码,管理员类别 from 管理员用户表 where 用户名 = '" & Trim(txtUserName.Text) & "'"
Adodc1.RecordSource = str
Adodc1.Refresh
If Adodc1.Recordset.EOF = True Then
MsgBox "用户名错误,请重新输入", vbExclamation, "警告"
txtUserName.Text = ""
txtUserName.SetFocus
Else
If Trim(Adodc1.Recordset.Fields("密码")) = Trim(txtPassword.Text) And (OrdinaryUser.Value = True Or SuperUser.Value = True) Then
If OrdinaryUser.Value = True Then
OA = True
Else
SA = True
End If
frmmdi.Show
Unload Me
Else
MsgBox "密码或管理员类别错误,请重新输入", vbExclamation, "警告"
txtPassword.Text = ""
txtPassword.SetFocus
End If
End If
miCount = miCount + 1
If miCount >= 3Then Unload Me
End Sub
读者管理信息界面代码:
Private Sub CmdAdd_Click()
Adodc1.Recordset.AddNew
CmdAdd.Enabled = False
CmdDel.Enabled = False
CmdOk.Enabled = True
CmdCancel.Enabled = True
MsgBox "添加读者信息成功"
End Sub
Private Sub CmdCancel_Click()
Adodc1.Refresh
CmdAdd.Enabled = True
CmdDel.Enabled = True
CmdOk.Enabled = False
CmdCancel.Enabled = False
End Sub
Private Sub CmdDel_Click()
X = MsgBox("确实要删除当前记录吗?", vbYesNo + vbQuestion)
If X = vbYes Then
Adodc1.Recordset.Delete
Adodc1.Recordset.MoveNext
If Adodc1.Recordset.EOF = True Then
Adodc1.Recordset.MoveLast
End If
Else
Adodc1.Refresh
End If
End Sub
Private Sub Cmdexit_Click()
Unload Me
End Sub
Private Sub CmdFirst_Click()
Adodc1.Recordset.MoveFirst
CmdFirst.Enabled = False
CmdPre.Enabled = False
CmdNext.Enabled = True
CmdLast.Enabled = True
End Sub
Private Sub CmdLast_Click()
Adodc1.Recordset.MoveLast
CmdFirst.Enabled = True
CmdPre.Enabled = True
CmdNext.Enabled = False
CmdLast.Enabled = False
End Sub
Private Sub CmdNext_Click()
Adodc1.Recordset.MoveNext
CmdFirst.Enabled = True
CmdPre.Enabled = True
If Adodc1.Recordset.EOF = True Then
Adodc1.Recordset.MoveLast
CmdLast.Enabled = False
CmdNext.Enabled = False
End If End Sub
Private Sub CmdOk_Click()
Adodc1.Recordset.Update
CmdAdd.Enabled = True
CmdDel.Enabled = True
CmdOk.Enabled = False
CmdCancel.Enabled = False
End Sub
Private Sub CmdPre_Click()
Adodc1.Recordset.MovePrevious
CmdNext.Enabled = True
CmdLast.Enabled = True
If Adodc1.Recordset.BOF = True Then
Adodc1.Recordset.MoveFirst
CmdFirst.Enabled = False
CmdPre.Enabled = False
End If
End Sub
Private Sub Form_Load()
CmdFirst.Enabled = False
CmdPre.Enabled = False
CmdNext.Enabled = True
CmdLast.Enabled = True
CmdAdd.Enabled = True
CmdDel.Enabled = True
CmdOk.Enabled = False
CmdCancel.Enabled = False
CmdFirst.FontSize = 12
CmdPre.FontSize = 12
CmdNext.FontSize = 12
CmdLast.FontSize = 12
CmdAdd.FontSize = 12
CmdDel.FontSize = 12
CmdOk.FontSize = 12
CmdCancel.FontSize = 12
Cmdexit.FontSize = 12
Label1.FontSize = 12
Label2.FontSize = 12
Label3.FontSize = 12
Label4.FontSize = 12
Text1.FontSize = 12
Text2.FontSize = 12
Text3.FontSize = 12
Text4.FontSize = 12
End Sub
图书信息查询界面代码:
Private Sub Cmdexit_Click()
Unload Me
End Sub
Private Sub cmdquery_Click()
Dim str As String
str = "select* from 图书表 where 图书表." & Combo1.Text & " like '" & Trim(Text1.Text) & "%'"
Adodc1.RecordSource = str
Adodc1.Refresh
End Sub
Private Sub Combo1_Change()
End Sub
Private Sub Form_Load()
Combo1.AddItem "借阅状态"
Combo1.AddItem "借阅次数"
Combo1.AddItem "出版社"
Combo1.AddItem "类别"
Combo1.AddItem "书名"
Combo1.Text = "借阅状态"
Text1.Text = ""
Label1.FontSize = 12
Label2.FontSize = 12
Combo1.FontSize = 12
Text1.FontSize = 12
cmdquery.FontSize = 12
cmdexit.FontSize = 12
End Sub
新用户注册界面代码:
Dim i As Integer
Private Sub CmdCancle_Click()
Unload Me
End Sub
Private Sub CmdEmpty_Click()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
End Sub
Private Sub CmdExamine_Click()
Dim str As String
Dim pcount As Integer
str = "select 用户名 from 管理员用户表"
Adodc1.RecordSource = str
Adodc1.Refresh
If Adodc1.Recordset.BOF = False Then pcount = Adodc1.Recordset.RecordCount
End If
For i = 1 To pcount
If
Trim(Adodc1.Recordset.Fields("用户名")) = Trim(Text1.Text) Then
MsgBox "警告,该用户名已被注册!"
Text1.SetFocus Exit For
End If
Adodc1.Recordset.MoveNext
Next i
If i > pcount Then MsgBox "恭喜你,该用户名可用!": Text2.SetFocus
End Sub
Private Sub CmdRegister_Click()
Dim str As String
str = "select* from 管理员用户表"
Adodc1.RecordSource = str
Adodc1.Refresh
If Adodc1.Recordset.BOF = False Then
pcount = Adodc1.Recordset.RecordCount
End If
If i<Adodc1.Recordset.PageCount Then
MsgBox "对不起,你还没有检查你的用户名是否可用!"
End If
If i > Adodc1.Recordset.PageCount And Trim(Text2.Text) = Trim(Text3.Text) Then
Adodc1.Recordset.AddNew
Adodc1.Recordset.Fields("用户名") = Trim(Text1.Text)
Adodc1.Recordset.Fields("管理员类别") = Combo1.Text
Adodc1.Recordset.Fields("密码") = Trim(Text2.Text)
Adodc1.Recordset.Update
MsgBox "恭喜,成功注册新用户!"
Else MsgBox "对不起,两次输入密码不一致!"
Text2.Text = ""
Text3.Text = ""
Text2.SetFocus
End If
End Sub
Private Sub Form_Load()
Combo1.AddItem "一般管理员"
Combo1.AddItem "超级管理员"
Combo1.Text = "一般管理员"
End Sub
六、总结
这两周是我们SQL Server 数据库的实习,经过这次的实习,我对数据库这门课程有了更深的了解,简单的说下我对数据库的理解吧。我觉得它就是创建一些表格,然后再用一些语句根据他们之间的关系,把它们组合在一起,这次的实习我选择的是学院图书管理系统。首先我对创建该系统进行了项目背景与市场需求的分析,然后再开始动手做。
这次我们实习的内容是从数据库、数据表的创建和修改开始的,表是建立关系数据库的基本结构,用来存储数据具有已定义的属性,在表的操作过程中,有查看表信息、查看表属性、修改表中的数据、删除表中的数据及修改表和删除表的操作。从实习中让我更明白一些知识,表是数据最重要的一个数据对象,表的创建好坏直接关系到数数据库的成败,表的内容是越具体越好,但是也不能太繁琐,以后在实际应用中多使用表,对表的规划和理解就会越深刻。
在这次的实习中,我也遇到了不少困难。在结合具体的图书管理应用系统和SQL Sever2000,我遇到的困难有很多,比如如何把数据库连接到系统中,如何耐心地往表中输入数据,如何应用触发器,如何熟练掌握设计界面的方法….
其实现在想想数据库学起来也是不难的,熟能生巧嘛,不懂的多问问老师,多自己动手练练,渐渐的就会了。但有一点必须注意,那就是上课必须跟着老师的进度走,一定要注意听讲,勤做笔记.这样,你学起来就会得心应手,没什么困难。
总之,在这次的实习中我受益匪浅。我们信管专业学的就是编程,系统开发这一方面的知识,这次的实习虽然我们最终做出来的系统还不是很成熟,但这至少勾起了我们对它的兴趣,从而在以后的学习过程中更有学习的动力,这样对以后工作也起到了很大的帮助作用。最后感谢老师们在我们的学习过程中给予我们的教导和帮助。希望我们以后在自己的专业的领域中能踏出一片天地!
图书馆管理系统数据库设计报告目录一设计背景1二需求分析121系统目标122需求定义123数据流图224数据字典31三功能说明10四…
数据库课程设计一引言1设计目的课程设计为学生提供了一个既动手又动脑独立实践的机会将课本上的理论知识和实际有机的结合起来锻炼学生的分…
图书馆管理系统数据库设计报告课程设计名称:图书馆管理系统班级:12级1班专业:网络工程任课教师:许老师学号:姓名:实验日期:20#…
图书馆管理系统数据库设计1正文一设计背景图书管理是高校内每一个系部或院部都必须切实面对的工作但一直以来人们使用传统的人工方式管理图…
图书馆管理系统数据库设计报告目录一设计背景1二需求分析121系统目标122需求定义123数据流图224数据字典31三功能说明10四…
在校2年多期间参与过很多的实训,每次的实训都能让我学到很多实质性的东西。这次为期4周的图书馆管理系统项目开发的实训算是一个比较大型…
淮南联合大学计算机系课程实训报告书实训科目:图书管理系统专业班级:11级计算机应用技术学号:姓名:实训时间:20##-12-18一…
实训项目设计报告题目xxxxx网上书店实训课程指导教师姓名专业起止日期信息系统数据库设计实训xxxxxxx学号xxxxxx计算机软…
基础编程能力实训报告题目:图书管理系统专业年级:计算机科学与技术20##级姓名:学号:20##年06月20日1实训题目与要求1.1…
SQLSERVER数据库管理实训报告课题名称图书管理系统专业信管目录文档生成后自动生成目1需求描述随着计算机技术的不断应用和提高计…
图书信息管理系统Library测试总结分析报告重庆正大软件职业技术学院20xx年05月05日TSGL软件测试分析报告文档名称测试总…