计算机学院
课程设计说明书
课 程 名 称: JAVA综合课程设计
题 目: 图书信息管理系统
小 组 成 员: 陈相龙,孙潮,阮路瑜
一、设计题目与要求
【问题描述】 设计一个计算机管理系统完成图书管理基本业务。
【基本要求】
(1)每种书的登记内容包括书号、书名、类别、作者、出版社、状态等
(2)对书号建立索引表以提高查找效率;
(3)系统主要功能如下:
①采编入库:新购一种书,确定书号后,登记到图书帐目表中,如果表中已有,则只将库存量增加;
②借阅:如果一种书的现存量大于0,则借出一本,登记借阅者的书证号和归还期限,改变现存量;
③归还:注销对借阅者的登记,改变该书的现存量。
二、小组分工
小组成员:陈相龙、孙潮、阮路瑜
小组分工:
徐鹏飞:查看图书信息、查找图书信息、插入图书信息、删除图书信息、修改图书信息、退出系统、登录系统以及整个系统的完善
孙潮:保存图书信息、读取图书信息、保存读者信息、查看读者信息
阮路瑜:添加图书信息、添加读者信息、借书、还书
三、需求分析
图书管理系统共需要十三个模块,分别是添加图书信息、查看图书信息、查找图书信息、插入图书信息、删除图书信息、保存图书信息、读取图书信息、图书信息保存、修改图书信息、添加读者信息、保存读者信息、查看读者信息、退出系统
明珠负责其中的四个模块,如下所示:
- 添加图书
输入每种书的登记内容包括书号、书名、作者、出版日期、类别、借阅标记、借阅次数、库存量。
- 添加读者信息
读者信息初始化,输入学号、姓名和借阅书本数量,只有输入学号才能进行借书还书
- 借阅书籍
输入学号才能进行借书(只有学号在库里面才能进行借书),然后判断读者的借阅数量是否达到最大数量,如果是最大数量,则不能进行借书否则能够借书。
- 还书
输入学号和书名进行还书操作(只有学号在库里面才能进行还书)。
孙潮负责的模板为文件的操作
图书管理系统并保存读者和图书信息。文件的读写操作。
徐鹏飞负责的登录系统、查询图书信息、查询读者信息、打印图书信息、打印读者信息、插入图书信息、删除图书信息、图书的排序以及整个系统的完善。
四、概要设计
图书信息和读者信息都采用类保存。
图书信息里面包括:图书编号、图书名称、作者、现有量、出版日期、类别、借阅标记、借阅次数、库存量。
读者信息里面包括:读者编号、读者姓名、借书数量、可借图书数量。
所有图书和读者都分别以结构体数组存储,并以图书编号为唯一主键。采用顺序表的形式便于数据的添加与删改。
主要的操作为:系统初始化、添加图书入库、读者信息登记、图书信息和读者信息文件的保存、查询图书信息、查询读者信息、打印图书信息、打印读者信息、插入图书信息、删除图书信息、图书的排序。
五、详细设计
数据结构的定义:
图书信息:
s package database;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JComboBox;
public class Book {
public Book() {
}
//图书类别加入下拉框
public static void findcategory(JComboBox<String> box) {
Connection con = ConnectDatabase.connectDB();
PreparedStatement preSql;
ResultSet rs;
String sqlStr = "select * from bookcategory";
try {
preSql = con.prepareStatement(sqlStr);
rs = preSql.executeQuery();
while (rs.next()) {
String category = rs.getString(1);
box.addItem(category);
}
con.close();
} catch (SQLException e) {
}
}
//添加图书
public static void addbook(String category,String bookname,String author,String press) {
Connection con = ConnectDatabase.connectDB();
PreparedStatement preSql;
String sqlStr = "insert into booktable(category,bookname,author,press,state) values (?,?,?,?,?)";
try {
preSql = con.prepareStatement(sqlStr);
preSql.setString(1, category);
preSql.setString(2, bookname);
preSql.setString(3, author);
preSql.setString(4, press);
preSql.setString(5, "在馆");
int ok = preSql.executeUpdate();
con.close();
} catch (SQLException e) {
}
}
//添加图书
public static void modifybook(int bookid,String category,String bookname,String author,String press,String state) {
Connection con = ConnectDatabase.connectDB();
PreparedStatement preSql;
String sqlStr = "update booktable set category = ? ,bookname = ? ,author = ?,press = ? ,state = ? where bookid = ?";
try {
preSql = con.prepareStatement(sqlStr);
preSql.setString(1, category);
preSql.setString(2, bookname);
preSql.setString(3, author);
preSql.setString(4, press);
preSql.setString(5, state);
preSql.setInt(6, bookid);
int ok = preSql.executeUpdate();
con.close();
} catch (SQLException e) {
}
}
//删除图书
public static void deletebook(int bookid) {
Connection con = ConnectDatabase.connectDB();
PreparedStatement preSql;
String sqlStr = "delete from booktable where bookid = ?";
try {
preSql = con.prepareStatement(sqlStr);
preSql.setInt(1, bookid);
int ok = preSql.executeUpdate();
con.close();
} catch (SQLException e) {
}
}
}算法描述:
进入系统后首先进行图书初始化,输入图书的信息。
根据登录可选择任意系统
进入系统,显示功能列表
是
-
程序源代码
详见附带源码文件
图示:
-
运行结果和调试分析
管理员界面:
非管理员界面
可以正确的以借阅者以及管理者的身份登录,以及可以对应的注册,管理者root具有所有权限,并且可以赋予其他用户权限,所有用户均可以进行正确的借阅图书操作,管理者可以增加,删除,修改,查找等更多权限操作
八、课程设计总结
通过这次的课设设计,我们了解了图书管理系统的流程,之前以用户的角度去认识图书管理,现在站在设计者的角度去考虑问题,并且根据实际情况设计了图书管理系统的模块,对此有了更深刻的理解。对数据的管理、存储、完整性约束等也有了全面的认识。
在设计过程中,出现了一些问题,主要是功能的划分,后来将图书管理系统的功能进行一一细分,归纳安排,才使整个系统的结构完善且冗余小。在这次的课设设计还让我们复习了JAVA的一些知识,如类,包、javabean、还知道了如何使用eclipse连接数据库。