图书管理系统
目录
图书管理系统 1
一、综合实践任务 1
1.1 系统设计目标 1
1.2 需求分析 2
工作人员任务 2
读者功能 2
额外提示 2
1.3 总体设计 3
1.4 数据库设计 4
1.5 详细设计 9
1.5.1 流程图设计 9
1.5.2 文件设计 15
1.5.3 文件说明 15
1.5.4 SQL 语句说明 16
1.6 系统测试 16
1.7 系统设计与实现总结 32
二、课程总结 33
三、附录 33
一、综合实践任务
1.1 系统设计目标
假设图书馆的工作人员要处理下列日常工作:
借书:核实读者身份并检查是否存在下述情况:
该读者借书的数额超标;
该读者所借的书过期未还;
该读者曾因借书过期被罚款而未交;
如不存在上述情况,则登记借书信息;
还书:检查所还图书是否损坏或过期,是则登记罚单信息并打印罚单,在交纳罚金前,不允许该读者继续借书。若图书损坏,注销该图书信息,否则进行还书登记。
罚款:根据罚单收取罚金,同时取消该读者的借书限制。
图书信息维护:新书上架、旧书下架及图书信息查询。
读者信息维护:录入、注销、修改及查询读者信息。
此外,图书馆还应向读者提供下列基本功能:
查询图书信息;
查询自己的基本信息和借书记录;
续借;
设计一个 B/S 或 C/S 模式的系统实现上述功能。
1.2 需求分析
实验需要设计一个图书管理系统,操作对象为管理人员和读者,要求能完成一定的功能,具体功能要求如下:
工作人员任务
图书信息维护:增删改书籍信息
读者信息维护:增删改读者信息
审核还书资格:查看书籍状态(是否损坏),给出损坏罚款或逾期罚款或还书成功决定
读者功能
借书:提交借书申请,在可借书状态下借书或续借
申请还书:提交还书申请
缴纳罚款:查询已提交且需交款的还书申请单,缴纳罚款。
查询个人信息以及借书记录、查询图书信息
额外提示
不限制读者借书类型,但每本书只能续借一次(时间 30 天),需归还书籍后才可重新借阅。
读者每次登录需在没有罚款的情况下,才可借书。
读者借书有最大借书量限制,每本书也有当前存量限制。
读者提出还书申请时间默认为还书时间,但具体还书信息回馈需等待工作人员审核。
本文转载自:http://www.biyezuopin.vip/onews.asp?id=16547
package sqlTools;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import database.DatabaseTools;
import model.Book;
public class BookTools {
private static Book newbook;
public Book getNewbook() {
return newbook;
}
public void setNewbook(Book newbook) {
BookTools.newbook = newbook;
String sql="select TSBH,TSMC,TSZZ,TSDJ,IFJC from T_TSXX where TSBH='" + newbook.getIdBook() + "'";
DatabaseTools db = new DatabaseTools();
Connection conn = db.getConn();
ResultSet rs=null;
try {
PreparedStatement st =conn.prepareStatement(sql);
rs=st.executeQuery();
while(rs.next()){
newbook.setIdBook(rs.getString("TSBH"));
newbook.setNameBook(rs.getString("TSMC"));
newbook.setAuthor(rs.getString("TSZZ"));
newbook.setPrice(rs.getBigDecimal("TSDJ"));
newbook.setType(rs.getBoolean("IFJC"));
}
rs.close();
st.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public int return_TSBH() {
int rt=0;
String sql="select MAX(TSBH) from T_TSXX";
DatabaseTools db = new DatabaseTools();
Connection conn = db.getConn();
try {
PreparedStatement st = conn.prepareStatement(sql);
ResultSet rs = st.executeQuery();
while(rs.next()) {
rt=rs.getInt("MAX(TSBH)");
}
st.close();
conn.close();
}catch (SQLException e) {
e.printStackTrace();
}
return rt;
}
public boolean return_SFJC(String idBook) {
boolean rt=false;
String sql="select SFJC from T_TSXX where TSBH = ?";
DatabaseTools db = new DatabaseTools();
Connection conn = db.getConn();
try {
PreparedStatement st = conn.prepareStatement(sql);
st.setString(1, idBook);
ResultSet rs = st.executeQuery();
while(rs.next()) {
rt=rs.getBoolean("SFJC");
}
st.close();
conn.close();
}catch (SQLException e) {
e.printStackTrace();
}
return rt;
}
public List<Book> BookData() {
String sql="select TSBH,TSMC,TSZZ,TSDJ,SFJC from T_TSXX";
DatabaseTools db = new DatabaseTools();
Connection conn = db.getConn();
ResultSet rs=null;
List<Book> ls=new ArrayList<Book>();
try {
PreparedStatement st =conn.prepareStatement(sql);
rs=st.executeQuery(sql);
while(rs.next()){
Book book=new Book();
book.setIdBook(rs.getString("TSBH"));
book.setNameBook(rs.getString("TSMC"));
book.setPrice(rs.getBigDecimal("TSDJ"));
book.setType(rs.getBoolean("SFJC"));
book.setAuthor(rs.getString("TSZZ"));
ls.add(book);
}
rs.close();
st.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return ls;
}
public List<Book> BookData(String TSMC) {
String sql="select TSBH,TSMC,TSZZ,TSDJ,SFJC from T_TSXX where TSMC like'%" + TSMC + "%'";
DatabaseTools db = new DatabaseTools();
Connection conn = db.getConn();
ResultSet rs=null;
List<Book> ls=new ArrayList<Book>();
try {
PreparedStatement st =conn.prepareStatement(sql);
rs=st.executeQuery(sql);
while(rs.next()){
Book book=new Book();
book.setIdBook(rs.getString("TSBH"));
book.setNameBook(rs.getString("TSMC"));
book.setPrice(rs.getBigDecimal("TSDJ"));
book.setType(rs.getBoolean("SFJC"));
book.setAuthor(rs.getString("TSZZ"));
ls.add(book);
}
rs.close();
st.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return ls;
}
public Book Search_Book(String TSBH) {
String sql="select * from T_TSXX where TSBH='" + TSBH + "'";
DatabaseTools db = new DatabaseTools();
Connection conn = db.getConn();
ResultSet rs=null;
Book book = null;
try {
PreparedStatement st =conn.prepareStatement(sql);
rs=st.executeQuery(sql);
while(rs.next()){
book=new Book();
book.setIdBook(rs.getString("TSBH"));
book.setNameBook(rs.getString("TSMC"));
book.setPrice(rs.getBigDecimal("TSDJ"));
book.setType(rs.getBoolean("SFJC"));
book.setAuthor(rs.getString("TSZZ"));
}
rs.close();
st.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return book;
}
public int AddBook(Book book) {
int i=0;
String sql="insert into T_TSXX (TSBH,TSMC,TSZZ,TSDJ,SFZJ) values(?,?,?,?,?)";
DatabaseTools db = new DatabaseTools();
Connection conn = db.getConn();
try {
PreparedStatement st = conn.prepareStatement(sql);
st.setString(1, book.getIdBook());
st.setString(2, book.getNameBook());
st.setString(3, book.getAuthor());
st.setBigDecimal(4, book.getPrice());
st.setBoolean(5, book.getType());
i=st.executeUpdate();
st.close();
conn.close();
}catch (SQLException e) {
e.printStackTrace();
}
return i;
}
public int UpdateBook(Book book) {
int i=0;
String sql="update T_TSXX set TSMC=?,TSZZ=?,TSDJ=?,SFJC=? where TSBH= ?";
DatabaseTools db = new DatabaseTools();
Connection conn = db.getConn();
try {
PreparedStatement st = conn.prepareStatement(sql);
st.setString(1, book.getNameBook());
st.setString(2, book.getAuthor());
st.setBigDecimal(3, book.getPrice());
st.setBoolean(4, book.getType());
st.setString(5, book.getIdBook());
i=st.executeUpdate();
st.close();
conn.close();
}catch (SQLException e) {
e.printStackTrace();
}
return i;
}
//删除图书,同时更新图书编号
public int DeleteBook(String idbook) {
int i=0;
String sql1="delete from T_TSXX where TSBH = ?";
String sql2="update T_TSXX set TSBH=TSBH-1 where TSBH > ?";
String sql3="update T_JYXX set TSBH=TSBH-1 where TSBH > ?";
DatabaseTools db = new DatabaseTools();
Connection conn = db.getConn();
try {
PreparedStatement st = conn.prepareStatement(sql1);
st.setString(1, idbook);
i=st.executeUpdate();
st = conn.prepareStatement(sql2);
st.setString(1, idbook);
i=st.executeUpdate();
st = conn.prepareStatement(sql3);
st.setString(1, idbook);
i=st.executeUpdate();
st.close();
conn.close();
}catch (SQLException e) {
e.printStackTrace();
}
return i;
}
public boolean whetherInStock(String TSBH) {
boolean judge=false;
DatabaseTools db = new DatabaseTools();
Connection conn = db.getConn();
String sql = "select SFJC from T_TSXX where TSBH = ?";
try {
PreparedStatement st =conn.prepareStatement(sql);
st.setString(1, TSBH);
ResultSet rs = st.executeQuery();
while (rs.next()) {
if(rs.getBoolean("SFJC")){
judge = true;
}
}
st.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return judge;
}
}
























