华北科技学院数据库课设.docx
- 文档编号:15653169
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:37
- 大小:424.31KB
华北科技学院数据库课设.docx
《华北科技学院数据库课设.docx》由会员分享,可在线阅读,更多相关《华北科技学院数据库课设.docx(37页珍藏版)》请在冰点文库上搜索。
华北科技学院数据库课设
华北科技学院
《数据库原理与应用》
课程设计说明书
学号:
班级:
计科姓名:
设计题目:
图书管理系统
设计地点:
_________大软____________
设计时间:
2015.12.28至2016.01.08
成绩评定:
1、工作量:
A(),B(),C(),D(),F()
2、难易度:
A(),B(),C(),D(),F()
3、答辩情况:
基本操作:
A(),B(),C(),D(),F()
代码理解:
A(),B(),C(),D(),F()
4、报告规范度:
A(),B(),C(),D(),F()
5、学习态度:
A(),B(),C(),D(),F()
总评成绩:
___________________________
指导教师:
___________崔新伟__________
目 录
1引言
1.1课程设计选题
《图书管理系统》
1.2课程设计的目的
通过数据库系统课程设计,熟悉了SQLSERVER数据库管理系统的结构与组成;掌握了SQLSERVER数据库管理系统的应用技术和的使用;应用SQLserver2008和eclipse开发工具实践了《图书管理系统》的数据库应用系统的设计方法、开发过程和SQLSERVER数据库的管理与维护。
最终达到掌握数据库管理系统的使用和开发,提高分析问题、解决问题和实践应用能力。
1.3本选题的设计背景
数据库技术和Internet的飞速发展,使他们已经成为现代信息技术的重要组成部分,是现在计算机信息系统和计算机应用系统的基础和核心。
对于拥有庞大人员的学校的管理来讲,数据的有效使用是一个学校能否进行有效管理的一个关键。
学校作为一个学习的地方,一定会有一个图书馆。
有图书馆就必定要有管理,这样学校图书管理系统就显得更为重要。
学校图书管理系统适应于绝大多数的学校图书馆的管理。
应用此系统可以将众多的学生信息和图书信息进行有效的管理,提高学校的效率。
2系统分析与设计
2.1系统的需求分析
2.1.1功能需求
1.读者基本信息的输入,包括读者借书证号、读者姓名、读者性别、出生日期、读者系部、读者专业、借阅数量。
2.读者基本信息的查询,包括读者借书证号、读者姓名、读者性别、出生日期、读者系部、读者专业、借阅数量。
3.书籍基本信息的录入,括书籍编号、书籍名称、作者姓名、出版社名称、出版日期、单价、复本量、库存量、类别。
4.书籍信息的查询,包括书籍编号、书籍名称、作者姓名、出版社名称、出版日期、单价、复本量、库存量、类别。
5.借阅书籍信息的录入,包括读者借阅证号、书籍编号、条形码、借书日期等。
6.借阅书籍信息的查询,包括读者借阅证号、书籍编号、条形码、借书日期等。
7.历史借阅书籍的查看,查询超过期限为归还图书的人的借阅证号、图书的编号、借书日期及归还日期。
8.读者可查看个人信息以及图书信息。
9.管理可查看增加读者信息、图书信息、以及借阅信息。
2.1.2性能需求
1.性能方面:
学校的图书馆可以同时供学校的500人访问,在校的学生或老师,都可以在图书馆借阅书籍。
2.可修改性方面:
随着计算机技术的提高,图书管理系统可以根据学校的需要进行升级,从而提高它的实用性。
3.可用性方面:
如果系统出现问题,可以用最短的时间进行恢复,同时,每过一段时间,可以对系统进行故障检测。
4.安全性方面:
该系统设有一个级别最高的管理员,可以对系统进行所有的操作,然后在低一级就是读者,对个人信息和书籍信息有查阅权。
5.用户操作方面:
不同的角色有不同的权限,登陆进去过后,会有不同的界面,方面进行各种操作。
2.2系统的开发运行环境
本系统开发平台:
eclipse+sqlserver2
本系系统运行平台:
windows7
2.3系统总体设计
该系统主要是应用于学校图书馆的管理。
管理员通过不同权限的账号登陆进入不同的页面,行使不同的权力,管理员可以对读者信息的查询、添加,图书基本信息的查询、入库、更新等。
同时,使用该系统需要提供良好的用户界面,因此,还设计好了友好的用户界面。
总体结构如下图:
图书管理系统
读者管理
书籍管理
借阅记录
历史借阅
读者信息查询
读者信息添加
书籍信息查询
书籍信息添加
借阅记录查询
借阅记录添加
历史借阅查询
3数据库设计
3.1数据库概念结构
用户的需求具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入,现设计如下面所示的数据结构:
1.读者信息
读者的借阅证号、读者姓名、读者性别、出生年月、所在系部、所在专业、借阅数量
2.图书信息
图书编号、书名、作者、出版社、单价、复本量、库存量、类别
3.借阅信息
读者的借阅证号、图书编号、条码号、借阅日期
4.历史借阅信息
读者的借阅证号、读者的借阅证号、条码号、借阅日期、归还日期
总体E-R图:
3.2数据库逻辑结构
3.2.1关系模型
根据概念模型的E-R图,适当的进行优化后,可以得到以下三个关系模式:
1.读者信息(读者借书证号,读者姓名,读者性别,出生年月,所在系部,所在专业,借阅数量)
2.图书信息(图书编号,书名,作者,出版社,单价,复本量,库存量,类别)
3.借阅信息(借阅证号,图书编号,条码号,借阅日期,归还日期)
3.2.3视图的设计
1.为了方便读者和管理员查询书籍是否可借,建立一个视图A,查询图书馆内图书的库存量,其字段信息包括:
图书编号、书籍名称、库存量。
具体实现如下:
CreateviewA(ISBN,Bname,Invnum)
AsselectISBN,Bname,Invnum
FromBook
2.为了方便管理员对于读者借书情况的查看,以及便于挺醒超期为归还同学,建立一个视图B,查看借书超过两个月为归还的读者的借阅证号,具体实现如下:
CreateviewB(Lno)
AsselectLno
FromLend
Where(GETDATE()-Bordate)>60
3.3数据库的实现
3.3.1表
1.读者信息表
包括读者的借阅证号Lno,读者的姓名Rname,读者性别Sex,出生日期Brithday,所在系部Dept,所属专业Spec以及借阅数量Bornum。
2.图书信息表
包括图书编号ISBN,图书名称Bname,作者Author,出版社Press,单价Price,复本量Copynum,库存量Invnum,类别Btype。
3.借阅信息表
包括读者的借阅证号Lno,图书的编号ISBN,图书的条码号Barno,借阅日期Bordate。
4.历史借阅信息表
包括读者的借阅证号Lno,图书的编号ISBN,图书的条码号Barno,借阅日期Bordate,归还日期Retdate。
3.3.2视图
视图A
视图B
3.3.3安全性设计
为了确保图书管理信息的安全,设置两个一个用户。
第一个为学生用户Eoot1,给予权限可以查看图书信息表。
第二个用户为管理员用户Eoot2,给予权限可以查看,修改,删除读者信息表、图书信息表、借阅表、历史借阅表。
具体实现如下:
3.3.4完整性设计
本数据库系统的基本表有读者信息表Reader,图书信息表Book,借阅表Lend,历史借阅表HistoryLend。
所以在建立表以及添加信息时须有参照完整性与用户定义完整性。
具体参照如下:
1.借阅书籍必须是图书馆已有的书籍,同时,在记录读者借阅书籍时,要是持有图书证号的才可以,所以在建立借阅信息表时必须参照书籍信息表中的书籍编号(ISBN)和读者信息中的读者图书证号(Lno)。
2.在历史借阅表中的还书记录,必须是图书馆借出去的书,而且借书者必须是在图书馆有记录的,所以,在建立还书记录时,借阅记录必须参照书籍信息表中的书籍编号(ISBN)和读者信息中的读者图书证号(Lno)。
3.在借阅表中的借阅记录,必须是从图书馆借出去的书,并且借书者必须是图书馆有记录的,所以,在建立还书记录时,借阅记录必须参照书籍信息表中的书籍编号(ISBN)和读者信息中的读者图书证号(Lno)。
4.另外,用户定义完整性需要对表有所约束。
读者信息表中的性别,只可填为男或女,不能其他内容。
5.图书馆每人最多借出5本书,所以读者信息表中的借阅数量需约束小于等于五。
部分代码如下:
参照完整性:
Check约束
3.3.5索引设计
此数据库中,除了每个表中的主键自动建立索引外,我还设计了两个索引。
1.因为读者借书有时并未归还而又想借书,图书管理员好查询记录,所以建立一个索引。
在读者表中按照读者借书数量的多少进行排序,便于管理员查看提醒。
2.便于管理员查看并给予读者挺醒图书归还,建立一个索引,在Lend表中对借阅日期进行排序,便于查看哪位读者的借书时间快要到期。
实现如下:
3.3.5触发器
建立一个触发器。
当读者借阅图书,在借阅表中添加一条信息后,读者信息表中的借阅数量加一。
具体实现如下:
createtriggerjilu
onLendafterinsert
as
begin
declare@Lnochar(12)
select@Lno=Lnofrominserted
updateReadersetBornum=Bornum+1whereLno=@Lno
print'修改成功'
end
go
3.3.6存储过程
为了方便管理员管理查询读者信息。
建立一个存储过程,通过输入读者的借书证号,显示读者的姓名与系部。
代码如下:
--存储过程
createprocedurechaxun
(@Lnochar(12),
@Rnamevarchar(8)output,
@Deptvarchar(20)output)
asselect@Rname=Rname,@Dept=Dept
fromReader
whereLno=@Lno
--验证存储过程
declare@Rnamevarchar(8)
declare@Deptvarchar(20)
execchaxun'201205033101',@Rnameoutput,@Deptoutput
select@Rnameas姓名,@Deptas系别
4主要功能的详细设计与实现
4.1登录模块
1.界面,登陆界面如下:
2.功能
本模块可以供不同用户进行登录,用户根据自己的身份选择为读者或者管理员。
然后输入用户名和密码进行登陆,进入界面,选择相关操作。
读者的用户名和密码为读者的姓名和借阅证号。
4.2读者信息模块
1.登陆学生界面
选择读者身份,输入用户名和密码后进入学生查看信息界面,显示读者本人的信息。
2.选择查看,查看图书信息。
4.3管理员模块
在登陆界面选择管理员登陆,账户密码为“admin”“123456”进入管理员界面
4.4读者管理模块
1.选择读者管理,分为添加读者与查询读者。
选择添加读者,添加学生信息。
输入姓名,学号,性别,出生日期,系部,专业,借书数量。
点击添加学生便可把新增的学生信息添加到数据库中并保存。
2.读者管理下选择查询读者,有两个子菜单,分为名称查询和全部查询。
名称查询输入读者的姓名,点击查询,根据姓名查询出读者的个人信息。
3.选择全部查询,查询所有读者的信息。
查询结果界面显示读者的姓名,学号,性别,出生日期,系部,专业,借书数量。
界面下方有四个按钮,分别翻看查询其他读者信息。
4.5书籍管理模块
1.选择书籍管理信息,分为添加书籍信息,和查询图书信息
选择添加图书信息,转到添加界面,输入书名,编号,作者,出版社,单价,复本量,库存量,类别。
点击添加图书,将信息添加到数据库并保存。
2.选择查询图书,分为名称查询和全部查询。
名称查询界面,输入书名点击查询进行查找图书的信息。
3.选择全部查询
显示图书的基本信息,并在下方设有四个按钮,点击翻看查询其他图书的信息。
4.6借书模块
1.借书模块分为借书情况和超期为归还,分别根据数据库的Lend表与HistoryLend表设定。
选择借书情况查看读者借书的借阅证号,图书的编号,图书的条码号,以及借书时间。
界面还有一个添加的选项框。
点击添加进行添加借书记录。
2.选择超期为归还查看借书超过两个月为归还的读者的借书证号,图书编号,条码号,借书日期和归还日期。
通过查询HistoryLend的借书日期和还书日期,通过计算显示出超过两个月还未归还图书的读者的借书证号,图书编号,条码号,借书日期和归还日期。
结 论
此次的课程设计的主要内容是图书借阅管理系统。
主要分为图书管理、读者管理、图书借阅三个模块。
这个系统主要的是面向图书管理员和读者设计的,即系统的操作人员是管理员,和不同的读者。
系统的设计使用的Java语言。
用Java语言和数据库相连接共同实现本系统的功能。
这次的课程设计的主要目的是对数据库课程的知识的熟练应用,在此次设计中,将数据库理论知识与实际需求相结合进行设计。
数据库的设计遵循了实体完整性、参照完整性和用户自定义完整性,整体上能够完成所需求的功能。
通过此次的课程设计,深刻体会到对数据库理论知识的掌握不够扎实,尤其是对于触发器、存储过程的设计和使用存在很大的问题。
在完成本次的设计后,对这些知识有了进一步的掌握和理解。
同时也更加熟练地掌握了一些java的知识。
在这次课程设计的结果中,我所做的图书管理系统能够初步的实现一些功能,例如读者和管理的查询信息,管理员的添加信息等。
但仍有很多不足,比如并没有详细的设置删除等设置,同时对于超过借书期限而为归还的同学也没有设定罚款计算。
对于这次课设,我觉得培养了我的动手操作能力,从数据库的设计到实现再到用户界面的完成,更加熟练地让我掌握了所学的知识,真正的做到了学以致用。
我希望能有更多的这样的锻炼机会,同时能够有更多的时间去修改完善我所做的系统。
也希望能有机会小组合作,做些更加复杂全面的能够更好的运用在实际生活中的数据库系统。
参考文献
[1]王春玲,许福,范春梅.数据库原理及应用教程:
人民邮电出版社,2014.
[2]耿祥义,张跃平.Java大学实用教程(第三版):
电子工业出版社,2012.
附录
1.图书馆管理系统设计中的java界面与数据库的链接重要代码如下:
importjava.sql.*;
publicclasslianjie1{
publicstaticConnectiongetConn(){
Connectionconn=null;
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
System.out.println("驱动加载成功!
");
conn=DriverManager.getConnection("jdbc:
sqlserver:
//localhost:
1434;DatabaseName=tsgl","sa","111");//字符串中不允许有空格
System.out.println("数据库连接成功!
");
}catch(ClassNotFoundExceptione){
e.printStackTrace();
}catch(SQLExceptione){
e.printStackTrace();
}
returnconn;
}
publicstaticvoidmain(String[]args){
getConn();
}
}
2.登陆界面的基础代码如下:
importjava.awt.event.*;
importjavax.swing.*;
publicclassdengluextendsJFrameimplementsActionListener{
privateJTextFieldtextName;
privateJPasswordFieldtextPassword;
JComboBoxcbSF;//选择身份下拉框
privateJTextFieldtextCheck;//显示提示结果
privateJButtonok;
publicdenglu(){
super("图书管理系统");
JPanelpanel=newJPanel();
JLabellabelName=newJLabel("用户名:
",JLabel.CENTER);
textName=newJTextField(15);
panel.add(labelName);
panel.add(textName);
JLabellabelPassword=newJLabel("密码:
");
textPassword=newJPasswordField(15);
panel.add(labelPassword);
panel.add(textPassword);
String[]strSF={"读者","管理员"};
cbSF=newJComboBox(strSF);
panel.add(newJLabel("身份:
"));
panel.add(cbSF);
ok=newJButton("登录");
panel.add(ok);
//创建验证文本框
textCheck=newJTextField(20);
textCheck.setEditable(false);
textCheck.setVisible(false);
panel.add(textCheck);
getContentPane().add(panel);
textName.addActionListener(this);
ok.addActionListener(this);
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==ok){//判断触发事件的是否为登录按钮
Stringname=textName.getText();
Stringps=newString(textPassword.getPassword());
Stringsf=(String)cbSF.getSelectedItem();
if("管理员".equals(sf)){//如果下拉选项选择的是教师
if(name.equals("admin")&&ps.equals("123456")){
//若正确,调用教师界面(目前还没编写教师界面,下面这行语句先注释)
newTeacherMain();
}else{
textCheck.setText("用户名与密码不正确,教师登录失败!
");
textCheck.setVisible(true);
this.setSize(250,160);
textName.grabFocus();
}
}elseif("读者".equals(sf)){//如果下拉选项选择的是学生
//调用登录业务处理类,判断登录学生用户是否正确
if(LoginManager.login(name,ps)){
//因上行语句注释,为保证语句逻辑正确性,暂时添加下行语句
//if(name.equals("李红梅")&&ps.equals("201205033101")){
//若学生用户信息正确,调用学生界面
newStudent(name);
}else{
textCheck.setText("用户名与密码不正确,学生登录失败!
");
textCheck.setVisible(true);
this.setSize(250,160);
textName.grabFocus();
}//}
}
}
}
publicstaticvoidmain(Stringargs[]){
dengluframe=newdenglu();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(250,140);
frame.setVisible(true);
}
}
3.登陆界面与数据库链接的重要代码:
importjava.sql.*;
publicclassLoginManager{
publicstaticbooleanlogin(Stringname,Stringps){
Connectionconnect=null;
PreparedStatementpsmt=null;
ResultSetrs=null;
connect=lianjie1.getConn();
Stringsql="select*fromreaderwhereRname=?
andLno=?
";
try{
psmt=connect.prepareStatement(sql);
psmt.setString(1,name);
psmt.setString(2,ps);
rs=psmt.executeQuery();
if(rs.next()){
returntrue;
}
returnfalse;
}catch(SQLExceptione){
e.printStackTrace();
}finally{
try{
if(rs!
=null)rs.close();
if(psmt!
=null)psmt.close();
if(connect!
=null)connect.close();
}catch(SQLExceptione){
e.printStackTrace();
}
}
returnfalse;
}
publicstaticvoidmain(String[]args){
System.out.println(login("李红梅","201205033101"));
//Sys
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华北 科技学院 数据库