攀枝花学院
学生课程设计(论文)
题 目: 数据库课程设计
图书管理系统开发
学生姓名: 龚兴财 学 号:200910803013
所在院(系): 计算机学院
专 业: 网络工程
班 级: 2009级网络工程1班
指 导 教 师: 刘亚尼 职称: 讲师
2011年 12月12日
攀枝花学院教务处制
攀枝花学院本科学生课程设计任务书
题 目 | 图书管理系统开发 | |||
1、课程设计的目的 使学生掌握数据库的基本概念,结合实际的操作和设计,巩固课堂教学内容;使学生掌握数据库系统的基本概念、原理和技术,将理论与实际相结合,应用现有的数据建模工具和数据库管理系统软件,规范、科学地完成一个小型数据库的设计与实现;把理论课与实验课所学内容做一综合,并在此基础上强化学生的实践意识、提高其实际动手能力。 | ||||
2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等) (1)建立一个完整的图书管理系统。首先建立以下几个表(仅供参考,可以改变):图书(1书号,书名,作者,价格,出版社,摘要) 读者(卡号,1姓名,性别,单位,类型,级别) 借阅(2书号,书名,1序号,卡号,借书时间,还书时间) (2)图书管理应用系统的开发,要求有以下子系统: A、图书和读者信息管理功能(要求:做到实体完整性,信息的录入、删除和修改功能) B、借书,还书功能(要求:做到参照完整性,并考虑用户自定义完整性,如不同读者类型的借书限制册和还书日期等约束条件的实现,还要有超期图书罚款处理功能) C、 系统维护:如数据的备份等 | ||||
3、主要参考文献 [1]张莉 《SQL SEVER数据库原理及应用 》 [2]萨师煊 王珊著.《数据库系统概论》第三版.高等教育出版社 [3]施伯乐 丁宝康 汪卫.《数据库系统教程》 高等教育出版社2003年第2版 [4]庄成三等.《数据库系统原理及其应用》.电子工业出版社 | ||||
4、课程设计工作进度计划 第1天 :选题、完成需求分析 第2天 :数据库概念结构设计 第3天:数据库逻辑结构设计及物理实现 第4天:应用程序开发 第5天: 程序调试分析和结果、编写课程设计报告 | ||||
指导教师(签字) | 日期 | 年 月 日 | ||
教研室意见: 年 月 日 | ||||
学生(签字): 接受任务时间: 年 月 日 | ||||
注:任务书由指导教师填写。
课程设计(论文)指导教师成绩评定表
题目名称 | 图书管理系统开发 | ||||
评分项目 | 分值 | 得分 | 评价内涵 | ||
工作 表现 20% | 01 | 学习态度 | 6 | 遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。 | |
02 | 科学实践、调研 | 7 | 通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。 | ||
03 | 课题工作量 | 7 | 按期圆满完成规定的任务,工作量饱满。 | ||
能力 水平 35% | 04 | 综合运用知识的能力 | 10 | 能运用所学知识和技能去发现与解决实际问题,能正确处理实验数据,能对课题进行理论分析,得出有价值的结论。 | |
05 | 应用文献的能力 | 5 | 能独立查阅相关文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息及获取新知识的能力。 | ||
06 | 设计(实验)能力,方案的设计能力 | 5 | 能正确设计实验方案,独立进行装置安装、调试、操作等实验工作,数据正确、可靠;研究思路清晰、完整。 | ||
07 | 计算及计算机应用能力 | 5 | 具有较强的数据运算与处理能力;能运用计算机进行资料搜集、加工、处理和辅助设计等。 | ||
08 | 对计算或实验结果的分析能力(综合分析能力、技术经济分析能力) | 10 | 具有较强的数据收集、分析、处理、综合的能力。 | ||
成果 质量 45% | 09 | 插图(或图纸)质量、篇幅、设计(论文)规范化程度 | 5 | 符合本专业相关规范或规定要求;规范化符合本文件第五条要求。 | |
10 | 设计说明书(论文)质量 | 30 | 综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学。 | ||
11 | 创新 | 10 | 对前人工作有改进或突破,或有独特见解。 | ||
成绩 | |||||
指导教师评语 | 指导教师签名: 年 月 日 | ||||
摘 要
伴随着社会信息量的与日俱增,作为信息存储的主要媒体之一的图书,其数量、规模比以往任何时候都大的多,不论个人还是图书管理部门都需要使用方便而有效的方式来管理自己的书籍。在计算机日益普及的今天,对个每个人而言若采用一套行之有效的图书管理系统来管理自己的书籍,会方便许多。对图书管理部门而言,以前单一的手工检索已不能满足人们的要求,为了便于图书资料的管理需要有效的图书管理软件。
图书管理系统软件需要必备比较完善的数据管理方式,具有数据操作方便高效迅速等优点。该系统需采用功能强大的数据库软件开发工具进行开发,并且需要具有很好的可移植性,可在应用范围较广的DOS、WINDOWS系列等操作系统上使用。除此以外,该系统可通过访问权限控制以及数据备份功能,确保数据的安全性。
关键词: 数据库,图书管理系统,设计,基本功能
1 需求分析
1.1 系统目标
本系统主要实现对图书馆的信息进行管理,图书馆的正常运营中总是面对大量的读者信息,图书信息以及两者相互作用产生的借书信息,因此要对读者资源,图书资源,借书信息进行管理。本系统的开发就是在于提高图书管理的工作效率,加强图书馆的管理,方便图书管理员。
图书馆管理系统是图书馆管理工作中不可缺少的部分,它的内容对于图书馆的管理者和使用者来说都至关重要,所以图书管理系统应该能够为管理者或读者提供充足的信息和快捷的数据处理手段。但一直以来人们使用传统人工的方式进行图书管理和借阅管理,这种管理方式存在着许多缺点,如:效率低、易忘记、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。作为计算机应用的一部分,使用计算机对图书信息进行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、易修改、可靠性高、存储量大、数据处理快捷、保密性好、寿命长、成本低、便于打印等。这些优点能够极大地提高图书管理的效率,也是图书馆的科学化、正规化管理,与世界接轨的重要条件。图书管理信息系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于后台数据库的建立要求建立起数据一致性和完整性强.数据安全性好的库。同时还要做好系统维护:如数据的备份等。
1.2 数据需求
根据系统的需求,首先将要记录的信息分类,要记录的信息如下:
(1)读者信息:卡号,姓名,性别,单位,类型,级别。
(2)借阅信息:书号,书名,序号,卡号,借书时间,还书时间。
(3)图书信息:1书号,书名,作者,价格,出版社,摘要。
根据这些需要,本系统需要“读者信息”表,“借阅信息”表,“图书信息”表。
1.3 事务需求
经过实际考虑、思考和分析,图书管理系统主要应该具有以下功能模块,如图1.1所示。
1、在读者信息管理部分,要求如下:
(1)可以浏览读者信息;
(2)可以对读者信息进行维护,包括添加及删除等操作。
2、在图书信息管理部分,要求如下:
(1)可以浏览书籍信息;
(2)可以对书籍信息进行维护,包括添加及删除等操作。
3、在借阅信息管理部分,要求如下:
(1)可以浏览借阅信息。
图1.1 系统业务逻辑关系
1.4 系统开发平台
1、前台
(1)硬件要求:
CPU: Pentium 4 2.0GHz以上IBM兼容机;
内存:512MB以上容量;
显卡:32MB或以上显存之AGP接口显卡。
(2)软件要求:
操作系统:Microsoft Windows 2000/XP;
开发工具:eclipse。
2、数据库服务器
(1)硬件要求:
CPU: Pentium4 2.8GHz以上IBM兼容机;
内存:1024MB以上容量;
显卡:32MB或以上显存之AGP接口显卡。
(2)软件要求:
操作系统:Microsoft Windows 2000 Server;
数据库服务器:Microsoft SQL 2000 Server。
3、网络设备
(1)2块网卡:
客户机D-Link DFE-650TX,服务器Intel PCLA8460B。
(2)路由器:
一台SOHO路由器TL-R402M。
1.5 网络拓扑结构
本设计采用客户机/服务器(C/S)体系(图1.2),数据的储存管理功能较为透明性,可以合理均衡事务的处理,充分保证数据的完整性和一致性。
图1.2 C/S模式结构
2 解决方案
数据库主要着重于数据对象的属性和数据对象之间的关系的分析。一般采用E-R图,即实体-关系模型来分析数据对象的属性和数据对象之间的关系。
2.1 E-R模型设计
2.1.1 实体列表
系统的实体列表如下表所示:
表2.1 实体列表
实 体 | 描 述 |
读 者 | 所有借读者,由卡号标识 |
图 书 | 图书馆所有图书,由书号标识 |
借 阅 | 书号、卡号、借书日期、还书日期等属性,由序号标识 |
系统管理员 | 系统维护人员 |
2.1.2 系统的E-R模型
该图书管理系统的E-R模型,如下图(图2.1)所示
图 2.1 E-R模型
2.2 设计数据库
2.2.1创建数据库
创建数据库的步骤如下:
(1)在服务器资源管理器中的任一节点右击;
(2)执行快捷菜单中的“新建数据库”命令,并在打开的“数据库属性”对话框中输入数据库名LibararyMangement然后设置其数据文件和事物日志;
(3)单击“确定”按钮,则新建的数据库就会出现在服务器上。
2.2.2 创建数据表
创建数据库后,为Library数据库添加数据表,步骤如下:
(1)在服务器资源管理器中右击数据库LibararyMangement下的“表”文件夹。在弹出的快捷菜单中执行“新建表”命令,出现表设计器。
(2)添加表的字段和其他详细资料,各表数据结构如下表所示:
表2.2 图书管理系统各表数据结构
表 名 | 列 名 | 数据类型 | 长 度 | 主 键 |
读者信息 | 卡号 | int | 4 | Yes |
姓名 | varchar | 20 | ||
性别 | char | 4 | ||
单位 | varchar | 20 | ||
类型 | varchar | 20 | ||
级别 | char | 4 | ||
借阅信息 | 序号 | int | 4 | Yes |
卡号 | int | 4 | ||
书号 | char | 10 | ||
借书时间 | varchar | 20 | ||
还书时间 | varchar | 20 | ||
图书信息 | 书号 | char | 10 | Yes |
书名 | varchar | 50 | ||
作者 | varchar | 20 | ||
价格 | varchar | 50 | ||
出版社 | varchar | 50 | ||
3 系统实现
3.1开发环境
本系统使用java语言进行开发,需要配置java虚拟机的支持,适用内存不低于256M配备有Windows7,Linux,WindowsXP系统的计算机。
3.2 程序调试情况
在数据连接时一定要注意窗体和相应显示控件的绑定关系。在把系统从一台计算机移植到另一台计算机时一定要把数据文件LibararyMangement.mdf和LibararyMangement_log.ldf同时移植,并对相应的提供服务的SQL Server服务器进行相应的修改以及密码设置及修改,否则数据正确连接并显示。
3.4 功能显示
(1)各程序代码在eclipse中如图3.1所示:
图3.1 各程序代码在eclipse中
(2)数据库的建立的表如图3.2所示:
图3.2 据库的建立的表
(3)在运行程序连接数据库后,读出其中的部分数据,供管理员查询修改,增加的主界面查询书本信息如图3.3所示:
图3.3 查询书本信息
(4)在“书本信息”窗体中可以对读者信息进行维护操作,例如浏览读者信息,添加记录和删除记录等。
(5)单击“增加图书”,就会显示“图书信息”窗体,在该窗体中可以对图书信息进行维护操作。图书信息维护窗体如图3.4所示:
图3.4 图书信息维护
(6)输入完毕后单击“增加”,就会显示“增加后结果”窗体,在该窗体中可以对出版社信息进行维护操作。增加后结果如图3.5所示:
图3.5 增加后的结果
(7)选中《微机原理》单击“删除”,就会显示窗体如图3.6所示:
图3.6 出版社信息窗体
(8)单击“借阅管理”,结果如图3.7所示:
图3.7 查询借阅管理信息
(9)在主窗体上单击“增加借阅者信息”,那么就可增加借阅者如图3.8所示:
图3.8 增加借阅者信息
(10)增加完后可以点击“增加”,同时可以单击“读者管理”和“书本管理”分别对其实现管理。
(11)在“查询书本信息”点击“读者管理”结果如图3.9所示:
图3.9 查询读者信息
(12)在主窗体上单击“增加读者信息”,那么就可增加借阅者如图3.10所示:
图3.10 增加读者信息
3.5 结论
在这个系统的开发过程中,值得注意的几点有:
(1)数据表的实现:首先要在数据库建立相应的数据。其次,约束是相当重要的,建立相应的表,录入相应的数据。
(2)在运行java连接数据库的时候也有爱注意SQL SERVER 2000的补丁,否则无法连接数据库,还有连接驱动的重要,一定要记得引进去。
(3)java连接JSP的时候注意引进自己所写的JAVA程序包和SQL的包,否则无法成功的调用里面的类方法。
(4)在JSP中传送数据给JAVA程序的时候要注意传送的值的类型,传过的值是STRING,有些需要转换成INT类型。注意设置为字体为UTF-8否者会出现传值的乱码,存入数据库的时候中文字就变成乱码了。
结束语
我本次实验的课题是“图书管理系统”。通过这次的实训设计,我学到了很多的东西,让我更进一步地了解了Java编程语言,对SQL数据库也有了更进一步的了解。不仅使我的知识面有所扩充,对于图书馆业务流程也熟悉了,而且也很好的应用了系统设计相关的软件。更好的将理论知识应用于实践中,在实践中能够及时的发现问题、解决问题。同时也阅读了大量相关书籍,提高了动手制作能力。虽然我这次的实训课题不是很难,但是在我自己亲手操作时,也还是遇到了不少的问题。
通过自己的直接实践积累了项目设计的经验,而且还培养了自己运用所学知识独立完成和解决课题的能力,提高了程序设计能力,而且还达到事半功倍的效果,这是从书本上所学不到的!
感谢在此次实训期间各位同学及老师对我的帮助、指导,谢谢!同时通过做课程设计,有几点感想,归纳如下:
(1)扎实的理论基础:如果不掌握它们,很难写出高水平的程序。而这一点又是我们所缺乏的。通过此次课程设计让我们更加深刻地体会了理论与实际相结合的重要性,熟悉了科学地设计系统的流程,加深了对数据库知识的掌握。
(2)多与别人交流:在系统的制作过程中也遇到不少疑惑和诸多问题,通过查询网络资料和向同学虚心询问,加之不舍的耐心,使得一切问题迎刃而解。
(3)良好的编程风格:注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。根据事先的逻辑设计设计程序代码。
参考文献
[1] 张莉 《SQL SEVER数据库原理及应用 》.
[2] 《轻松搞定 SQL Server 2000 程序设计》Rebecca M.Riordan编,2008-7.
[3] 施伯乐 丁宝康 汪卫.《数据库系统教程》 高等教育出版社2003年第2版.
[4] 庄成三等.《数据库系统原理及其应用》.电子工业出版社.
[5] 萨师煊,王珊,数据库系统概论(第三版). 北京:高等教育出版社,2000.
[6] 齐治昌,谭庆平,宁洪,软件工程(第二版).北京:高等教育出版社,2004.
[7] David I.Schneider,Visual Basic.NET编程导论. 电子工业出版社,2003.
[8] 《软件工程理论与实践》Shari Lawrence Pfleeger编 清华大学出版社,2010.
[9] 《软件需求分析》 Swapna Kishore编 机械工业出版社,2007.
[10]《数据库原理及设计》 陶宏才编 清华大学出版社 2008-8-1.
附录:部分源代码清单
/*借书,还书功能模块(子系统)*/
package Sql.gxc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DB {
public static Connection getConnection() {//数据库驱动和建立连接
Connection conn = null;
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databaseName=LibararyManagement", "gxc" , "gxc");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public static boolean deLend(int booksno){//还书功能
boolean bRs=false;
String sql="delete from 借阅 where 序号=?";
Connection conn=null;
PreparedStatement pst=null;
try{
conn=getConnection();
pst=conn.prepareStatement(sql);
pst.setInt(1, booksno);
int affect=pst.executeUpdate();
if(affect==1){
bRs=true;
}
} catch(SQLException e) {
System.out.println("数据库连接出错");
}finally{
try {
pst.close();
conn.close();
} catch (SQLException e) {
System.out.println("数据库关闭出错");
e.printStackTrace();
}
}
return bRs;
}
public static boolean addLend(lend s){//图书借阅功能
boolean bRs=false;
String sql="INSERT INTO 借阅( 序号,卡号,书号,书名,借书时间,还书时间) VALUES(?,?,?,?,?,?)";
Connection conn=null;
PreparedStatement pst=null;
try {
conn=getConnection();
pst=conn.prepareStatement(sql);
pst.setInt(1, s.getXuhao());
pst.setInt(2, s.getKahao());
pst.setString(3, s.getshuhao());
pst.setString(4, s.getShuming());
pst.setString(5, s.getJieshushijian());
pst.setString(6, s.getHuanshushijian());
int affect=pst.executeUpdate();
if(affect==1){
bRs=true;
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
pst.close();
conn.close();
} catch (SQLException e) {
System.out.println("关闭数据库出错");
}
}
return bRs;
}
/*用JSP编写的连接java程序的首页*/
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="Sql.gxc.*" %>
<%@ page import="java.sql.*" %>
* {
text-align: center;
font-size: 22px;
}
table {
border: groove;
border-color: Black;
background: Orange;
text-align: center;
font-family: 仿宋;
border-collapse: collapse;
}
table td {
border: 1px solid #003399;
width: 240px;
heighth: 40px;
}
table tr {
border: 1px solid #003399;
}
.th1 {
background: blue;
}
查询书本信息
<%
String sql="select 书名,书号,作者,价格,出版社 ,摘要 from 图书";
Connection conn=null;
Statement st=null;
ResultSet rs=null;
conn=DB.getConnection();
st=conn.createStatement();
rs=st.executeQuery(sql);
%>
<% while(rs.next()){ %> <% }%> 书名 书号 作者 价格 出版社 摘要 操作 <%=rs.getString("书名") %> <%=rs.getInt("书号") %> <%=rs.getString("作者") %> <%=rs.getInt("价格") %> <%=rs.getString("出版社")%> <%=rs.getString("摘要")%> 书号")%>">删除
<%
rs.close();
st.close();
conn.close();
%>
本文来源:https://www.2haoxitong.net/k/doc/e5506053b968a98271fe910ef12d2af90342a857.html
文档为doc格式