数据库实验报告.docx
《数据库实验报告.docx》由会员分享,可在线阅读,更多相关《数据库实验报告.docx(26页珍藏版)》请在冰豆网上搜索。
![数据库实验报告.docx](https://file1.bdocx.com/fileroot1/2022-12/12/4de3411b-6631-4602-afba-0bb4e43d179e/4de3411b-6631-4602-afba-0bb4e43d179e1.gif)
数据库实验报告
通达学院
课程设计报告
课程名称:
数据库课程设计
专业:
姓名:
班级:
学号:
指导教师:
2012年1月1日
图书管理系统
一、引言
图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。
根据调查得知,以前对图书信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。
数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。
总的来说,缺乏系统,规范的信息管理手段。
尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥效力,资源闲置比较突出,这就是管理信息系统的开发的基本环境。
基于VB图书管理系统的研究现状及发展前景
目前大多数图书馆的借阅工作部分还是手工管理,工作效率很低,并且不能及时了解图书的种类和读者们比较需求的图书等,不能更好的适应当前读者的借阅要求。
手工管理还存在许多弊端,由于不可避免的人为因素,造成数据的遗漏、误报等。
计算机信息化管理有着储存量大,速度快等许多优点,提供给我们的处理信息及时快捷,因此我们利用计算机提供给我们的信息对读者们的借阅过程形成一整套动态的管理。
二、需求分析
当今时代是飞速发展的的信息时代。
在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的原因。
计算机的最大好处在于利用它能够进行信息管理。
使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。
尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。
计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。
本系统就是为了管理好图书馆信息而设计的。
针对各大中专院校的图书管理现状,设计出适合一般学校的计算机辅助图书管理系统。
实现对图书基本信息、读者基本信息进行计算机辅助管理,完成借书和还书有关信息的记录、修改、查询、删除等一系列任务的计算机管理与实现。
图书管理系统能方便、快捷地管理图书,将传统的图书管理方式彻底的解脱出来,提高效率,减轻工人人员以往繁忙的工作,减小出错的概率,使读者可以花更多的时间在选择书和看书上。
从而使人们有更多时间来获取信息、了解信息、掌握信息。
各功能模块描述如下:
1.系统管理
系统管理中,能实现新的管理员的添加和现存管理员的密码修改功能。
2.图书管理
在图书管理模块中,主要实现对图书类别的添加和管理,并且可以添加新的图书。
3.读者管理
实现对读者类别的添加和管理,读者类别可包含老师学生等等,并且各读者类别所借阅的图书书目和借阅时间都存在差别。
对已借阅图书的读者的信息进行添加和管理,并且日后可根据登记的读者编号进行查阅。
4.借阅管理
借阅管理包含对应读者所借图书的相关信息,可根据借阅编号查询相关借阅情况,并查看时候超期借阅,并进行一定金额处罚。
图书管理系统
借阅管理
读者管理
图书管理
系统管理
图1-1图书管理系统功能模块
三、概念结构设计
图2-1概念结构E-R图
四、实验设备
硬件:
兼容机一台
软件:
SQLServer、Oracle9i数据库;VB、VC、Java、Delphi等高级语言
开发环境:
前台开发环境:
MicrosoftVisualBasic6.0
后台数据库环境:
MicrosoftSQLServer2000
五、逻辑结构设计
管理员(用户名,密码)
读者类别(类别名称,最大借阅数,最长借阅时间)
读者信息(读者编号,姓名,性别,单位,地址,电话,类别名称,登记日期,已借阅数量)
图书类别(类别号,类别名)
图书信息(图书编号,图书名称,类别名,作者,出版日期,登记日期)
借阅信息(借阅编号,读者编号,读者姓名,图书编号,图书名称,借出日期,归还日期,是否超期)
六、数据库的创建及连接
数据库设计(DatabaseDesign)是指根据用户的需求,在某一具体的数据库管理系统上,设计数据库的结构和建立数据库的过程。
数据库需求分析
用户的需求具体体现在各种信息的提供、保存、更新和查询方面,这就要求数据库结构能满足各种信息的输入和输出。
收集基本数据、数据结构及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。
通过高校图书管理系统功能的分析,针对一般图书管理系统,总结出系统数据流模型如图3-1所示:
图3-1顶层数据流图
1、编写高级语言访问数据库的程序
实验内容及要求:
了解SQLserver的安装及使用;学会对企业管理器、查询分析器的使用;建立一个学生表、课程表及学生选课关联表,并用SQL语句进行相关插入、查询、删除等操作;
主要程序如下:
ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[WorkTime]')andOBJECTPROPERTY(id,N'IsUserTable')=1)
droptable[dbo].[WorkTime]
GO
CREATETABLE[dbo].[WorkTime](
[EmployeeID][varchar](50)COLLATEChinese_PRC_CI_ASNOTNULL,
[EmployeeName][varchar](50)COLLATEChinese_PRC_CI_ASNULL,
[OnWorkTime][varchar](50)COLLATEChinese_PRC_CI_ASNULL,
[OffWorkTime][varchar](50)COLLATEChinese_PRC_CI_ASNULL,
[LeaveWorkTime][varchar](50)COLLATEChinese_PRC_CI_ASNULL,
[Describe][varchar](50)COLLATEChinese_PRC_CI_ASNULL
)ON[PRIMARY]
GO
2、编写高级语言访问数据库的程序
实验内容及要求:
内容:
通过odbc桥访问数据库。
通过各数据库的驱动程序访问数据库。
高级语言可以是Java,c++,basace等。
用高级语言实现简单的对数据库表的插入、修改、删除以及查询操作。
写出高级语言访问数据库的操作步骤。
用高级语言实现简单的数据库表的插入,修改,删除和查询的操作界面。
主要程序如下:
packagemanpowersystem;
*
Title:
*
Description:
*
Copyright:
Copyright(c)2003
*
Company:
*@authornotattributable
*@version1.0
*/
importjava.sql.*;
importjava.util.*;
publicclassDatabase{
Connectionconn=null;
ResultSetrs=null;
Statementstmt=null;
publicRecordItem[]AccessData()throwsException{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Stringurl="jdbc:
microsoft:
sqlserver:
//localhost:
1433;"+
"studentName=Manpower";
conn=DriverManager.getConnection(url,"sa","");
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
StringSQL="select*fromstudentID";
rs=stmt.executeQuery(SQL);
RecordItem[]item=newRecordItem[100];
for(intj=0;j<100;j++)
item[j]=newRecordItem();
inti=0;
while(rs.next()&&(i<100)){
item[i].SetEmployeeID(rs.getString("studentID"));
item[i].SetEmployeeName(rs.getString("studentName"));
item[i].SetOnWorkTime(rs.getString("studentnumber"));
item[i].SetOffWorkTime(rs.getString("studentcourse"));
item[i].SetDescribe(rs.getString("Describe"));
i++;
}
RecordItem[]result=newRecordItem[i];
for(intj=0;j
result[j]=newRecordItem();
result[j]=item[j];
}
rs.close();
stmt.close();
conn.close();
returnresult;
}
publicvoidStoreData(RecordItemitem)throwsException{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Stringurl="jdbc:
microsoft:
sqlserver:
//localhost:
1433;"+
"DatabaseName=Manpower";
conn=DriverManager.getConnection(url,"sa","");
stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
StringSQL="select*fromWorkTimewherestudentID='"+
item.GetstudentID()+"'";
rs=stmt.executeQuery(SQL);
七、数据库物理设计
1.管理员表Admin
图4-1Admin表
2.图书类别表book
图4-2RT表
3.借阅表
图4-3RI表
4.图书类别
图4-4BC表
5.读者类型
图4-5BI表
6.学院类别
图4-6LI表
八、数据库的实施
1、读者管理模块实施:
首先使用conn.ConnectionString字符串方法进行与SQL数据库的连接,
在窗体中用commmand控件,label控件和textbox控件画出程序模型,然后建立记录集查询,然后用rs_addreader.Fields绑定各个textbox输入框到数据库。
使用rs_addreader.AddNew进行数据添加,使用rs_addreader.update进行数据修改更新,使用rs_addreader.delete进行数据删除。
2、借阅管理模块实施:
使用adodc控件实现程序与SQL数据库的连接,在窗体中用commmand控件,label控件和textbox控件画出程序模型,然后在窗体中添加datagrid控件,将其datasource设置成adodc1,在将其中的textbox的datasource属性也设置成adodc1,datafield设置成对应的数据项。
然后用ado控件建立第二个数据连接adodc2,用来连接数据库中的读者信息表,实现对外表的查询,在需要添加读者借阅信息时,只需要添加读者号,读者姓名会自动出现在文本框中,具体实现方法,将读者姓名的text2绑定到数据源adodc2,并为读者号的text1添加一个textchange事件:
Adodc2.CommandType=adCmdText
Adodc2.RecordSource="select*fromriwhereri_no='"&Text1.Text&"'"
Adodc2.Refresh
借阅罚款功能的实现,当单击判断按钮时,自动用当前时间减去借阅时间,如果结果小于等于30,则弹出不超期提示,若结果大于30则将结果减去30再乘以0.1元,得出应缴罚款。
具体判断是否超期的按钮代码为:
DimaAsDate
DimwAsDate
a=Format(Now,"YYYY-Mm-DD")
w=Trim(Text5.Text)
b=a-w
Ifb>30Then
MsgBox"借阅已超期,请缴罚款"&(b-30)*0.1&"元",vbOKOnly+vbExclamation,"警告"
Else
MsgBox"借阅还未超期。
",vbOKOnly+vbExclamation,"提示"
EndIf
EndSub
九、系统运行结果(部分附代码)
1、管理员登录:
PrivateSubcmdCancel_Click()
OK=False
Me.Hide
EndSub
PrivateSubcmdLogin_Click()
'检验数据的有效性
IfTrim(txtUserName.Text="")Then
MsgBox"请输入用户名!
"
txtUserName.SetFocus
ExitSub
ElseIfTrim(txtPassword="")Then
MsgBox"请输入密码!
"
txtPassword.SetFocus
ExitSub
Else
DimmyDbOperAsNewDbOperation
DimrstAsADODB.Recordset
DimsqlAsString
'建立连接
myDbOper.DB_Connect
'定义查询语句
sql="SELECT*FROMLibrarianWHEREId='"+txtUserName+"'ANDPassword='"+txtPassword+"'"
Setrst=myDbOper.querySQL(sql)
If(Notrst.EOF)Then
OK=True
Me.Hide
FrmMain.Show0
Else
MsgBox"用户名和密码错误,请重新输入."
EndIf
rst.Close
'关闭连接
myDbOper.DB_DisConnect
EndIf
EndSub
PrivateSubForm_Load()
EndSub
PrivateSubLabel2_Click()
EndSub
PrivateSubLabel3_Click()
EndSub
PrivateSubtxtUserName_Change()
EndSub
图6-1主界面
图6-2借阅信息
图6-3借书界面
PrivateSubcmdExit_Click()
Me.Hide
EndSub
PrivateSubcmdEnter_Click()
'检验数据的有效性
IfTrim(txtBorrId)=""Then
MsgBox"请输入借书卡号"
ExitSub
EndIf
DimmyDbOperAsNewDbOperation
DimrstAsADODB.Recordset
DimsqlAsString
'建立连接
myDbOper.DB_Connect
'定义查询语句
sql="SELECTb.StudentNum,b.name,i.Institute,g.Grade,b.teleNumber,b.borrowBookNum"_
+"FROMBorrowerb,Institutei,Gradeg"_
+"WHEREb.InstituteID=i.InstituteIDANDb.GradeID=g.GradeID"_
+"ANDBorrowerId='"+txtBorrId+"'"
Setrst=myDbOper.querySQL(sql)
If(Notrst.EOF)Then
Withrst
lblStuNum.Caption=.Fields(0)
lblName.Caption=.Fields
(1)
lblInstitute.Caption=.Fields
(2)
lblGrade.Caption=.Fields(3)
lblPhone.Caption=.Fields(4)
EndWith
Refresh_DataList1
Else
MsgBox"用户不存在,请重新操作."
EndIf
rst.Close
'关闭连接
myDbOper.DB_DisConnect
EndSub
PrivateSubcmdQuery_Click()
'检验数据的有效性
IfTrim(txtBookId)=""Then
MsgBox"请输入书刊编号"
ExitSub
EndIf
DimmyDbOperAsNewDbOperation
DimrstAsADODB.Recordset
DimsqlAsString
'建立连接
myDbOper.DB_Connect
'定义查询语句
sql="SELECTb.BookIDas书刊编号,b.nameas名称,b.loanas状态,"_
+"t.authoras作者,t.isbsnasisbsn,t.typeas类型,b.BorrowDateas借书日期"_
+"FROMBookb,TitletWHEREb.name=t.nameANDb.BookID='"_
+Trim(txtBookId)+"'"
Setrst=myDbOper.querySQL(sql)
If(Notrst.EOF)Then
Refresh_DataList2(sql)
Else
MsgBox"该书刊不存在,请重新操作."
EndIf
rst.Close
'关闭连接
myDbOper.DB_DisConnect
EndSub
PrivateSubRefresh_DataList1()
DimsqlAsString
sql="SELECTbo.BookIDas书刊编号,bo.nameas名称,bo.BorrowDateas借书日期"_
+"FromBorrowerb,Bookbo"_
+"WHEREb.BorrowerID=bo.borrowerIDandb.BorrowerID='"_
+Trim(txtBorrId)+"'"
Adodc1.RecordSource=sql
Adodc1.Refresh
SetDataGrid1.DataSource=Adodc1
DataGrid1.ReBind
EndSub
PrivateSubRefresh_DataList2(sqlAsString)
Adodc2.RecordSource=sql
Adodc2.Refresh
SetDataGrid2.DataSource=Adodc2
DataGrid2.ReBind
EndSub
PrivateSubcmdSubmit_Click()
'检验数据的有效性
IfTrim(txtBorrId)=""Then
MsgBox"请输入借书卡号"
ExitSub
EndIf
IfTrim(txtBookId)=""Then
MsgBox"请输入书刊编号"
ExitSub
EndIf
DimnowDateAsNewBookDate
DimmyDbOperAsNewDbOperation
DimrstAsADODB.Recordset
DimsqlAsString
Dimupdate1_sqlAsString
Dimupdate2_sqlAsString
'建立连接
myDbOper.DB_Connect
'定义查询语句
sql="SELECTloanFROMBookWHEREBookId='"+Trim(txtBookId)+"'"
Setrst=myDbOper.querySQL(sql)
IfTrim(rst.Fields(0))="在库"Then
'更新数据库表
update1_sql="UPDATEBookSETloan='借出',borrowerID='"_
+Trim(txtBorrId)+"',BorrowDate='"_
+nowDate.getDate+"'WHEREBookID='"_
+Trim(txtBookId)+"'"
myDbOper.executeSQL(update1_sql)
update2_sql="UPDATEBorrowerSETborrowBookNum=borrowBookNum+1WHEREBorrowerId='"_
+Trim(txtBorrId)+"'"
myDbOper.executeS