精华内容
下载资源
问答
  • 2021-05-11 16:30:28

    图书馆管理系统,系统采用B/S架构

    系统采用框架:java+maven+stringboot+mybatis+mysql-plus+boostart(前端界面)

    首页展示

    内容后台管理
    在这里插入图片描述
    菜单权限管理
    在这里插入图片描述
    系统登录
    在这里插入图片描述

    v1.0 初级版本

    功能列表:
    首页展示
    系统注册登录登出
    用户管理
    权限控制管理
    书籍管理
    图书借阅管理
    个人借阅记录管理
    书籍详细信息展示
    后台不支持分页查询,不支持tab也操作

    v2.0

    升级内容:
    增加tab页管理操作
    增加后台分页处理
    完善界面的操作
    完善后台代码注释
    新增字典翻译功能
    新增字典管理菜单

    v3.0 升级内容
    更换前端web框架,改成adminlte
    样式完善
    把bootsratp3升级到bootsratp4
    tab改成用iframe

    有一个需求设计文档,学习需要就私信我,代码没有放到网上

    更多相关内容
  • 内置的图书馆管理软件用于管理图书馆的日常活动。 它具有三种类型的用户,管理员、接待员和客户。 我设计了整个软件的 GUI。 而以下功能基本都是我自己编码实现的。 客户通过接待员管理的注册流程注册到系统,他们...
  • 用python实现一个简单的图书管理系统 ,供大家参考,具体内容如下 1、工具:PyCharm3.6 社区版 我创建了一个工程叫fairy,把解释器换成Pytnon3.6 创建一个pytnon file:图书管理系统.py 2、实现简单界面如下: ...
  • 基于C#开发的图书管理系统 书籍借还登记管理统计 注:懂的自行研究学习,不提供技术服务,不懂勿下!
  • 图书管理员:管理图书馆用户和书籍的应用程序
  • 经营管理图书市场销售热潮的寓言类管理书籍.doc
  • 管理图书馆图书信息 任务管理图书馆图书信息 图书馆有很多图书需要管理,将图书信息存储在数据库中更有利于对图书进行管理,提高管理的效率。能够更好地查阅图书馆所存储的书籍信息,了解图书被借阅的情况,哪些图书...
  • 1、 网站后台:主要包括操作员管理图书超期罚款设置、读者分类,读者管理图书分类,图书管理图书借还,图书还去,图书借还查询、弹出层ajax数据操作,增删改查,泛型,Razor语法,多表查询,基础功能都已实现...
  • 图书零售租借管理系统是有效的书店管理软件,可以方便书店快速查询各类书籍信息。集成零售、租借等业务为一体!初始账号和密码均为:adminISBN可以从网上提取到书籍信息,方
  • 图书管理系统编程

    2018-10-10 10:15:01
    用Access2010编写的一个小案例,项目内容是小型图书管理系统,包括图书登记、读者管理图书借阅和归还,非常简单。
  • 图书图书管理系统

    2019-07-03 18:50:08
    图书管理系统是对书籍的借阅及读者信息进行统一管理的系统. 具体包括读者的借书,还书,书籍的预定;图书管理员的书籍借出处理,书籍归还处理,预定信息处理;系统管理员的系统维护,包括增加书目,删除和更新书目,增加...
  • 智慧云图书馆: 能支撑智慧图书馆服务体系的图书管理与服务平台。 平台优势 总分馆架构:不再是信息的孤岛,而是共享信息的平台。 友好的界面:通过简洁易用的平台界面,提高工作效率。 智能的平台:不仅仅是管理...
  • 本项目是一套基于SSM的图书书籍信息管理系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本、软件工具、项目说明等,该项目可以直接作为毕设使用。 ...
  • python管理图书馆.系统

    2022-01-10 12:54:27
    我的项目是一个应用程序,它指的是图书馆员使用的图书馆系统,使用计算机化系统管理图书馆,他/她可以在其中添加新书。该系统还包括书籍和学生维护模块,可以跟踪使用图书馆的学生,并详细描述图书馆包含的书籍。...
  • 往任何时候都大的多, 不论个人还是图书管理部门都需要使用方便而有效的方式来管理 自己的书籍。在计算机日益普及的今天,对个人而言若采用一套行之有效的图书管理系 统来管理自己的书籍,会方便许多。对图书管理...
  • 查询图书的信息,比如要查看有哪些是Java相关的书籍或者指定ISBN号的图书等。 (3)图书借阅信息管理:能够对图书的借阅信息进行记录,包括读者信息、图书信息、借阅时间等信息。 (4)图书归还信息管理:能够对图书...
  • 目的:方便图书馆对书籍借阅的管理 主要功能:学生基本信息查询,书籍借阅管理, 书籍管理 图书管理系统主要有三种角色,分别是读者、图书、工作人员.主要分成五个功能模块:图书管理, 图书流通管理, 读者管理, 统计查询...
  • 优秀人力资源管理书籍推荐ppt模板.pptx
  • 图书管理系统 基于MFC

    2021-12-13 15:55:49
    此程序功能丰富,将c++和MFC结合使用,主要功能有: ...学生:在借阅系统中,有...在学生管理中有添加学生功能,查询学生功能 此程序是作为我今年的大作业弄的,至少2000行以上,功能齐全,功能也贴近人性化,程序代码易懂
  • 本系统是一套图书图书借阅管理系统,涉及后台管理员、图书管理员、用户,包括图书管理、用户管理、信息维护等。 实现功能截图 登录: 读者主页面: 系统管理员主页面: 图书管理员主页面: 图书信息管理: ...

    JSP图书借阅系统

    随着社会经济的迅速发展和科学技术的全面进步以及计算机事业的飞速发展,以计算机科学与通信技术为基础的信息管理系统IE处于蓬勃发展的时期。随着经济文化水平的显著提高,人们对生活质量及工作环境的要求也越来越高,但伴随着人的劳动强度的增大,以及社交活动的广泛开展,如何来提高人民纸质书本阅读量,是一个很现实的问题。无疑,科技的蓬勃发展使更多人依赖电子书,逐渐失去了对阅读纸质书本重要性的理解。如今书籍的发展,也继承了信息化的发展道路,网络的兴起,给了人们各种各样不同的选择。与此同时,为了管理好一个书店的正常营运,管理问题也就提上了日程。随着图书借阅问题的白热化,管理难度也越来越大,如何优化书店的日常管理也就成为了一个大众化的课题。

    主要功能点

    读者:
    登录注册,借阅还书,查询书籍,查看当前借阅信息以及历史借阅信息,查看、查询读者借阅榜以及借阅书籍借阅榜,问题反馈以及查询反馈结果等功能。
    管理员:
    对图书、图书分类、读者信息的增删改查,查看全部读者当前借阅信息以及借阅历史,查看、查询书籍借阅榜及读者借阅榜,查看、查询用户反馈信息并修改反馈状态(未解决或已解决)。
    超级管理员:
    除管理员权限外,新增管理员权限。对管理员信息进行增删改功能。为书店员工定制个人账号,方便管理。

    实现功能截图

    注册登录:
    在这里插入图片描述
    在这里插入图片描述

    读者主页面:
    在这里插入图片描述
    修改个人资料:
    在这里插入图片描述

    图书管理员主页面:
    在这里插入图片描述

    超级管理:
    在这里插入图片描述
    图书查询:
    在这里插入图片描述

    借阅图书:
    在这里插入图片描述

    借阅信息:
    在这里插入图片描述

    还书:
    在这里插入图片描述

    借阅历史:
    在这里插入图片描述
    热门推荐:
    在这里插入图片描述
    最佳读者:
    在这里插入图片描述
    问题反馈:
    在这里插入图片描述
    添加修改删除图书:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    读者管理:
    在这里插入图片描述

    技术点总结

    jsp、Servlet
    jdk版本:1.7
    tomcat: 7.0
    数据库:mysql
    开发工具:eclipse

    项目包结构分类清晰:
    在这里插入图片描述

    (叉号有些是误报。。)

    代码

    实体类Entity:
    BookBean.java:

    package com.code2life.bean;
    
    public class BookBean {
    	/**
    	 * 图书的数据表的bean
    	 */
    	private int bid;// id
    	private String name;// 图书名称
    	private String card;// 图书号
    	private String autho;// 作者
    	private int num;// 图书数量
    	private String type;// 图书的分类
    	private String press;// 出版社
    	private int times;//借阅次数
    
    	public int getBid() {
    		return bid;
    	}
    
    	public void setBid(int bid) {
    		this.bid = bid;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public String getCard() {
    		return card;
    	}
    
    	public void setCard(String card) {
    		this.card = card;
    	}
    
    	public String getAutho() {
    		return autho;
    	}
    
    	public void setAutho(String autho) {
    		this.autho = autho;
    	}
    
    	public int getNum() {
    		return num;
    	}
    
    	public void setNum(int num) {
    		this.num = num;
    	}
    
    	public String getType() {
    		return type;
    	}
    
    	public void setType(String type) {
    		this.type = type;
    	}
    
    	public String getPress() {
    		return press;
    	}
    
    	public void setPress(String press) {
    		this.press = press;
    	}
    
    	public int getTimes() {
    		return times;
    	}
    
    	public void setTimes(int times) {
    		this.times = times;
    	}
    }
    
    

    TUserBean.java

    package com.code2life.bean;
    
    public class TUserBean {
    	/**
    	 * 用户的数据表的bean
    	 */
    	private int id;// id
    	private int status;// 用来判断是管理员还是读者,读者的值为1,管理员为2
    	private String username;// 账号
    	private String phone;// 手机号
    	private String password;// 密码
    
    	public int getId() {
    		return id;
    	}
    
    	public void setId(int aid) {
    		this.id = id;
    	}
    
    	public int getStatus() {
    		return status;
    	}
    
    	public void setStatus(int status) {
    		this.status = status;
    	}
    
    	public String getUsername() {
    		return username;
    	}
    
    	public void setUsername(String username) {
    		this.username = username;
    	}
    
    
    	public String getPassword() {
    		return password;
    	}
    
    	public void setPassword(String password) {
    		this.password = password;
    	}
    
    
    	public String getPhone() {
    		return phone;
    	}
    
    	public void setPhone(String phone) {
    		this.phone = phone;
    	}
    	
    }
    
    

    数据库连接:
    DBUtil.java:

    package com.code2life.util;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    public class DBUtil {
    	/**
    	 * 连接数据库的操作,用户名,密码,使用jdbc连接
    	 */
    	public static String username = "root";
    	public static String password = "123456";
    	public static String url = "jdbc:mysql://localhost:3306/books?useSSL=false&serverTimezone=UTC";
    
    	static {
    		try {
    			Class.forName("com.mysql.jdbc.Driver");
    		} catch (ClassNotFoundException e) {
    			e.printStackTrace();
    		}
    	}
    
    	public static Connection getConnectDb() {
    		Connection conn = null;
    		try {
    			conn = DriverManager.getConnection(url, username, password);
    
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		return conn;
    	}
    
    	public static void CloseDB(ResultSet rs, PreparedStatement stm, Connection conn) {
    		if (rs != null) {
    			try {
    				rs.close();
    			} catch (SQLException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    		if (stm != null) {
    			try {
    				stm.close();
    			} catch (SQLException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    		if (conn != null) {
    			try {
    				conn.close();
    			} catch (SQLException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    	}
    }
    
    
    

    dao层
    BookDao.java

    package com.code2life.dao;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.Calendar;
    
    import com.code2life.bean.AdminBean;
    import com.code2life.bean.BookBean;
    import com.code2life.bean.HistoryBean;
    import com.code2life.util.DBUtil;
    
    /**
     * 关于图书连接数据库的所有操作的类
     */
    public class BookDao {
    
    	/**
    	 * 添加图书信息,传入所有的信息
    	 * 
    	 * @param card
    	 * @param name
    	 * @param type
    	 * @param autho
    	 * @param press
    	 * @param num
    	 * @param times
    	 */
    	public void addBook(String card, String name, String type, String autho, String press, int num) {
    		// TODO Auto-generated method stub
    		Connection conn = DBUtil.getConnectDb();
    		String sql = "insert into book(card,name,type,autho,press,num,times) values(?,?,?,?,?,?,?)";
    		int rs = 0;
    		PreparedStatement stm = null;
    		try {
    			stm = conn.prepareStatement(sql);
    			stm.setString(1, card);
    			stm.setString(2, name);
    			stm.setString(3, type);
    			stm.setString(4, autho);
    			stm.setString(5, press);
    			stm.setInt(6, num);
    			stm.setInt(7, 0);
    			rs = stm.executeUpdate();
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    
    	/**
    	 * 获取所有的图书信息,返回的是ArrayList数组形式
    	 * 
    	 * @return
    	 */
    	public ArrayList<BookBean> get_ListInfo() {
    		ArrayList<BookBean> tag_Array = new ArrayList<BookBean>();
    		Connection conn = DBUtil.getConnectDb();
    		String sql = "select * from book";
    		PreparedStatement stm = null;
    		ResultSet rs = null;
    		try {
    			stm = conn.prepareStatement(sql);
    			rs = stm.executeQuery();
    			while (rs.next()) {
    				BookBean tag = new BookBean();
    				tag.setBid(rs.getInt("bid"));
    				tag.setName(rs.getString("name"));
    				tag.setCard(rs.getString("card"));
    				tag.setType(rs.getString("type"));
    				tag.setAutho(rs.getString("autho"));
    				tag.setPress(rs.getString("press"));
    				tag.setNum(rs.getInt("num"));
    				tag.setTimes(rs.getInt("times"));
    				tag_Array.add(tag);
    			}
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} finally {
    			DBUtil.CloseDB(rs, stm, conn);
    		}
    		return tag_Array;
    	}
    	
    	/**
    	 * 获取所有的图书信息并排序,返回的是ArrayList数组形式
    	 * 
    	 * @return
    	 */
    	public ArrayList<BookBean> get_ListInfo2() {
    		ArrayList<BookBean> tag_Array = new ArrayList<BookBean>();
    		Connection conn = DBUtil.getConnectDb();
    		String sql = "select * from book order by times desc";
    		PreparedStatement stm = null;
    		ResultSet rs = null;
    		try {
    			stm = conn.prepareStatement(sql);
    			rs = stm.executeQuery();
    			while (rs.next()) {
    				BookBean tag = new BookBean();
    				tag.setBid(rs.getInt("bid"));
    				tag.setName(rs.getString("name"));
    				tag.setCard(rs.getString("card"));
    				tag.setType(rs.getString("type"));
    				tag.setAutho(rs.getString("autho"));
    				tag.setPress(rs.getString("press"));
    				tag.setNum(rs.getInt("num"));
    				tag.setTimes(rs.getInt("times"));
    				tag_Array.add(tag);
    			}
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} finally {
    			DBUtil.CloseDB(rs, stm, conn);
    		}
    		return tag_Array;
    	}
    
    	/**
    	 * 获取借阅记录的全部信息,传入的条件有status,aid,表示搜索正在借阅的,或者已经还书的信息,aid代表当前登录用户
    	 * 
    	 * @param status
    	 * @return
    	 */
    	public ArrayList<HistoryBean> get_HistoryListInfo(int status, String aid) {
    		ArrayList<HistoryBean> tag_Array = new ArrayList<HistoryBean>();
    		Connection conn = DBUtil.getConnectDb();
    		String sql = "select * from history where aid=" + aid + " and status=" + status;
    		PreparedStatement stm = null;
    		ResultSet rs = null;
    		try {
    			stm = conn.prepareStatement(sql);
    			rs = stm.executeQuery();
    			while (rs.next()) {
    				HistoryBean tag = new HistoryBean();
    				tag.setHid(rs.getInt("hid"));
    				tag.setAid(rs.getInt("aid"));
    				tag.setBid(rs.getInt("bid"));
    				tag.setBookname(rs.getString("bookname"));
    				tag.setCard(rs.getString("card"));
    				tag.setAdminname(rs.getString("adminname"));
    				tag.setUsername(rs.getString("username"));
    				tag.setBegintime(rs.getString("begintime"));
    				tag.setEndtime(rs.getString("endtime"));
    				tag.setStatus(rs.getInt("status"));
    				tag_Array.add(tag);
    			}
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} finally {
    			DBUtil.CloseDB(rs, stm, conn);
    		}
    		return tag_Array;
    	}
    
    	/**
    	 * 获取借阅记录的全部信息,传入的条件有status,表示搜索正在借阅的,或者已经还书的信息
    	 * 
    	 * @param status
    	 * @return
    	 */
    	public ArrayList<HistoryBean> get_HistoryListInfo2(int status) {
    		ArrayList<HistoryBean> tag_Array = new ArrayList<HistoryBean>();
    		Connection conn = DBUtil.getConnectDb();
    		String sql = "select * from history where status=" + status;
    		PreparedStatement stm = null;
    		ResultSet rs = null;
    		try {
    			stm = conn.prepareStatement(sql);
    			rs = stm.executeQuery();
    			while (rs.next()) {
    				HistoryBean tag = new HistoryBean();
    				tag.setHid(rs.getInt("hid"));
    				tag.setAid(rs.getInt("aid"));
    				tag.setBid(rs.getInt("bid"));
    				tag.setBookname(rs.getString("bookname"));
    				tag.setCard(rs.getString("card"));
    				tag.setAdminname(rs.getString("adminname"));
    				tag.setUsername(rs.getString("username"));
    				tag.setBegintime(rs.getString("begintime"));
    				tag.setEndtime(rs.getString("endtime"));
    				tag.setStatus(rs.getInt("status"));
    				tag_Array.add(tag);
    			}
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} finally {
    			DBUtil.CloseDB(rs, stm, conn);
    		}
    		return tag_Array;
    	}
    
    	/**
    	 * 获取单个图书的信息,根据传入的bid来查找,返回一个BookBean数据类型
    	 * 
    	 * @param bid
    	 * @return
    	 */
    	public BookBean get_BookInfo(int bid) {
    		BookBean tag = new BookBean();
    		Connection conn = DBUtil.getConnectDb();
    		String sql = "select * from book where bid=" + bid;
    		PreparedStatement stm = null;
    		ResultSet rs = null;
    		try {
    			stm = conn.prepareStatement(sql);
    			rs = stm.executeQuery();
    			while (rs.next()) {
    				tag.setBid(rs.getInt("bid"));
    				tag.setName(rs.getString("name"));
    				tag.setCard(rs.getString("card"));
    				tag.setType(rs.getString("type"));
    				tag.setAutho(rs.getString("autho"));
    				tag.setPress(rs.getString("press"));
    				tag.setTimes(rs.getInt("times"));
    				tag.setNum(rs.getInt("num"));
    			}
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} finally {
    			DBUtil.CloseDB(rs, stm, conn);
    		}
    		return tag;
    	}
    
    	/**
    	 * 修改图书的信息,bid作为条件
    	 */
    	public void updateBook(int bid, String card, String name, String type, String autho, String press, int num) {
    		// TODO Auto-generated method stub
    		Connection conn = DBUtil.getConnectDb();
    		String sql = "update book set name=?,card=?,type=?,autho=?,press=?,num=? where bid=?";
    		PreparedStatement stm = null;
    		try {
    			stm = conn.prepareStatement(sql);
    			stm.setString(1, name);
    			stm.setString(2, card);
    			stm.setString(3, type);
    			stm.setString(4, autho);
    			stm.setString(5, press);
    			stm.setInt(6, num);
    			stm.setInt(7, bid);
    			stm.executeUpdate();
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    
    	/**
    	 * 删除图书信息,根据传入的bid作为条件
    	 * 
    	 * @param bid
    	 */
    	public void deleteBook(int bid) {
    		// TODO Auto-generated method stub
    		Connection conn = DBUtil.getConnectDb();
    		String sql = "delete from book where bid=?";
    		PreparedStatement stm = null;
    		try {
    			stm = conn.prepareStatement(sql);
    			stm.setInt(1, bid);
    			stm.executeUpdate();
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    
    	/**
    	 * 用户查找图书,根据输入的名称,使用like进行模糊查询,然后返回一个ArrayList数组类型
    	 * 
    	 * @param name
    	 * @return
    	 */
    	public ArrayList<BookBean> getLikeList(String name) {
    		// TODO Auto-generated method stub
    		ArrayList<BookBean> tag_Array = new ArrayList<BookBean>();
    		Connection conn = DBUtil.getConnectDb();
    		String sql = "select * from book where name like '%" + name + "%' or autho like '%" + name
    				+ "%' or type like '%" + name + "%'";
    		PreparedStatement stm = null;
    		ResultSet rs = null;
    		try {
    			stm = conn.prepareStatement(sql);
    			rs = stm.executeQuery();
    			while (rs.next()) {
    				BookBean tag = new BookBean();
    				tag.setBid(rs.getInt("bid"));
    				tag.setName(rs.getString("name"));
    				tag.setCard(rs.getString("card"));
    				tag.setType(rs.getString("type"));
    				tag.setAutho(rs.getString("autho"));
    				tag.setPress(rs.getString("press"));
    				tag.setTimes(rs.getInt("times"));
    				tag.setNum(rs.getInt("num"));
    				tag_Array.add(tag);
    			}
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} finally {
    			DBUtil.CloseDB(rs, stm, conn);
    		}
    		return tag_Array;
    	}
    
    	/**
    	 * 图书借阅函数,根据传入bid图书id,adminbean当前登录用户的信息,在借阅记录数据表中新插入一条记录
    	 * 
    	 * @param bid
    	 * @param adminbean
    	 */
    	public void borrowBook(int bid, AdminBean adminbean) {
    		// TODO Auto-generated method stub
    		BookBean bookbean = new BookBean();
    		bookbean = this.get_BookInfo(bid);
    		// 生成日期的功能
    		Calendar c = Calendar.getInstance();
    		int year = c.get(Calendar.YEAR);
    		int month = c.get(Calendar.MONTH) + 1;
    		int day = c.get(Calendar.DATE);
    		// 生成借阅开始日期
    		String begintime = "" + year + "-" + month + "-" + day;
    		month = month + 1;
    		// 生成截止还书日期
    		String endtime = "" + year + "-" + month + "-" + day;
    		Connection conn = DBUtil.getConnectDb();
    		String sql = "insert into history(aid,bid,card,bookname,adminname,username,begintime,endtime,status) values(?,?,?,?,?,?,?,?,?)";
    		int rs = 0;
    		PreparedStatement stm = null;
    		try {
    			stm = conn.prepareStatement(sql);
    			stm.setInt(1, adminbean.getAid());
    			stm.setInt(2, bookbean.getBid());
    			stm.setString(3, bookbean.getCard());
    			stm.setString(4, bookbean.getName());
    			stm.setString(5, adminbean.getUsername());
    			stm.setString(6, adminbean.getName());
    			stm.setString(7, begintime);
    			stm.setString(8, endtime);
    			stm.setInt(9, 1);
    			rs = stm.executeUpdate();
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		String sql2 = "update book set times=? where bid=?";
    		PreparedStatement stm2 = null;
    		try {
    			stm2 = conn.prepareStatement(sql2);
    			stm2.setInt(1, bookbean.getTimes() + 1);
    			stm2.setInt(2, bookbean.getBid());
    			stm2.executeUpdate();
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		String sql3 = "update admin set times=? where aid=?";
    		PreparedStatement stm3 = null;
    		try {
    			stm3 = conn.prepareStatement(sql3);
    			stm3.setInt(1, adminbean.getTimes() + 1);
    			stm3.setInt(2, adminbean.getAid());
    			stm3.executeUpdate();
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    
    
    	/**
    	 * 还书功能的函数,根据传入的hid借阅记录id,将status字段的值改为0,并将还书日期改变为当前日期
    	 * 
    	 * @param hid
    	 */
    	public void borrowBook2(int hid) {
    		// TODO Auto-generated method stub
    		// 生成日期
    		Calendar c = Calendar.getInstance();
    		int year = c.get(Calendar.YEAR);
    		int month = c.get(Calendar.MONTH) + 1;
    		int day = c.get(Calendar.DATE);
    		// 生成还书日期
    		String endtime = "" + year + "-" + month + "-" + day;
    		Connection conn = DBUtil.getConnectDb();
    		String sql = "update history set endtime=?,status=? where hid=?";
    		PreparedStatement stm = null;
    		try {
    			stm = conn.prepareStatement(sql);
    			stm.setString(1, endtime);
    			stm.setInt(2, 0);
    			stm.setInt(3, hid);
    			stm.executeUpdate();
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    	/**
    	 * 图书延期,根据传入hid记录id,在借阅记录数据表中更新endtime记录
    	 * 
    	 * @param hid
    	 * @param endtime
    	 */
    	public void AddTime(int hid, String endtime) {
    		// TODO Auto-generated method stub
    		Connection conn = DBUtil.getConnectDb();
    		String sql = "update history set endtime=? where hid=?";
    		PreparedStatement stm = null;
    		try {
    			stm = conn.prepareStatement(sql);
    			stm.setString(1, endtime);
    			stm.setInt(2, hid);
    			stm.executeUpdate();
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    }
    
    

    TUserDao.java

    package com.code2life.dao;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    
    import com.code2life.bean.AdminBean;
    import com.code2life.bean.BookBean;
    import com.code2life.bean.TUserBean;
    import com.code2life.util.DBUtil;
    
    /**
     * 有关读者账号的连接数据库操作,登录验证,注册,修改账号,修改密码
     */
    public class TUserDao {
    
    	/**
    	 * 登录验证功能,传入用户名和密码,在数据库中查找,如果找到了,返回true,没找到则返回false
    	 * 
    	 * @param username
    	 * @param password
    	 * @return
    	 */
    	public boolean Login_verify(String username, String password) {
    		Connection conn = DBUtil.getConnectDb();
    		PreparedStatement stm = null;
    		ResultSet rs = null;
    		String sql = "select * from t_user where username='" + username + " 'and password='" + password + "'";
    		try {
    			stm = conn.prepareStatement(sql);
    			rs = stm.executeQuery();
    			if (rs.next()) {
    				return true;
    			}
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} finally {
    			DBUtil.CloseDB(rs, stm, conn);
    		}
    		return false;
    	}
    
    	/**
    	 * 注册账号的函数,传入账号,密码,手机号
    	 * 
    	 * @param username
    	 * @param password
    	 * @param phone
    	 */
    	public void Register(String username, String password, String phone) {
    		// TODO Auto-generated method stub
    		Connection conn = DBUtil.getConnectDb();
    		String sql = "insert into t_user(username,phone,password,status) values(?,?,?,?)";
    		int rs = 0;
    		PreparedStatement stm = null;
    		try {
    			stm = conn.prepareStatement(sql);
    			stm.setString(1, username);
    			stm.setString(2, phone);
    			stm.setString(3, password);
    			stm.setInt(4, 1);
    			rs = stm.executeUpdate();
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    
    	/**
    	 * 新增管理员账号,传入密码,姓名,手机号
    	 * 
    	 * @param username
    	 * @param password
    	 * @param phone
    	 */
    	public void Register2(String username, String password, String phone) {
    		// TODO Auto-generated method stub
    		Connection conn = DBUtil.getConnectDb();
    		String sql = "insert into t_user(username,phone,password,status) values(?,?,?,?)";
    		int rs = 0;
    		PreparedStatement stm = null;
    		try {
    			stm = conn.prepareStatement(sql);
    			stm.setString(1, username);
    			stm.setString(2, phone);
    			stm.setString(3, password);
    			stm.setInt(4, 2);
    			rs = stm.executeUpdate();
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    
    	/**
    	 * 根据传入的账号,密码,来查找对应的读者信息,返回一个TUserBean类型,
    	 * 
    	 * @param username
    	 * @param password
    	 * @return
    	 */
    	public TUserBean getTUserInfo(String username, String password) {
    		// TODO Auto-generated method stub
    		TUserBean tUserbean = new TUserBean();
    		Connection conn = DBUtil.getConnectDb();
    		String sql = "select * from t_user where username= '"+username+"' and password= '"+password+"'";
    		
    		PreparedStatement stm = null;
    		ResultSet rs = null;
    		try {
    			stm = conn.prepareStatement(sql);
    			rs = stm.executeQuery();
    			if (rs.next()) {
    				tUserbean.setId(rs.getInt("id"));
    				tUserbean.setUsername(rs.getString("username"));
    				tUserbean.setPhone(rs.getString("phone"));
    				tUserbean.setPassword(rs.getString("password"));
    				tUserbean.setStatus(rs.getInt("status"));
    			}
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} finally {
    			DBUtil.CloseDB(rs, stm, conn);
    		}
    		return tUserbean;
    	}
    
    	/**
    	 * 获取全部用户的信息,其中sql语句中的status=1,表示只查找读者,不显示管理员的
    	 * 
    	 * @return
    	 */
    	public ArrayList<TUserBean> get_ListInfo() {
    		ArrayList<TUserBean> tag_Array = new ArrayList<TUserBean>();
    		Connection conn = DBUtil.getConnectDb();
    		String sql = "select * from t_user where status=1";
    		PreparedStatement stm = null;
    		ResultSet rs = null;
    		try {
    			stm = conn.prepareStatement(sql);
    			rs = stm.executeQuery();
    			while (rs.next()) {
    				TUserBean tUserBean = new TUserBean();
    				tUserBean.setId(rs.getInt("id"));
    				tUserBean.setUsername(rs.getString("username"));
    				tUserBean.setPassword(rs.getString("password"));
    				tUserBean.setPhone(rs.getString("phone"));
    				tUserBean.setStatus(rs.getInt("status"));
    				tag_Array.add(tUserBean);
    			}
    
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} finally {
    			DBUtil.CloseDB(rs, stm, conn);
    		}
    		return tag_Array;
    	}
    
    	/**
    	 * 获取全部用户的信息,其中sql语句中的status=2,表示只查找管理员,不显示读者的
    	 * 
    	 * @return
    	 */
    	public ArrayList<TUserBean> get_ListInfo2() {
    		ArrayList<TUserBean> tag_Array = new ArrayList<TUserBean>();
    		Connection conn = DBUtil.getConnectDb();
    		String sql = "select * from t_user where status=2";
    		PreparedStatement stm = null;
    		ResultSet rs = null;
    		try {
    			stm = conn.prepareStatement(sql);
    			rs = stm.executeQuery();
    			while (rs.next()) {
    				TUserBean tUserBean = new TUserBean();
    				tUserBean.setId(rs.getInt("id"));
    				tUserBean.setUsername(rs.getString("username"));
    				tUserBean.setPassword(rs.getString("password"));
    				tUserBean.setPhone(rs.getString("phone"));
    				tUserBean.setStatus(rs.getInt("status"));
    				tag_Array.add(tUserBean);
    			}
    
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} finally {
    			DBUtil.CloseDB(rs, stm, conn);
    		}
    		return tag_Array;
    	}
    	/**
    	 * 获取全部用户的信息并排序,其中sql语句中的status=1,表示只查找读者,不显示管理员的
    	 * 
    	 * @return
    	 */
    	public ArrayList<TUserBean> get_ListInfo3() {
    		ArrayList<TUserBean> tag_Array = new ArrayList<TUserBean>();
    		Connection conn = DBUtil.getConnectDb();
    		String sql = "select * from t_user where status=1 order by times desc";
    		PreparedStatement stm = null;
    		ResultSet rs = null;
    		try {
    			stm = conn.prepareStatement(sql);
    			rs = stm.executeQuery();
    			while (rs.next()) {
    				TUserBean tUserBean = new TUserBean();
    				tUserBean.setId(rs.getInt("aid"));
    				tUserBean.setUsername(rs.getString("username"));
    				tUserBean.setPassword(rs.getString("password"));
    				tUserBean.setPhone(rs.getString("phone"));
    				tUserBean.setStatus(rs.getInt("status"));
    				tag_Array.add(tUserBean);
    			}
    
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} finally {
    			DBUtil.CloseDB(rs, stm, conn);
    		}
    		return tag_Array;
    	}
    
    	/**
    	 * 根据传入的id,查找到对应的读者的全部信息,返回一个TUserBean类型的数据
    	 * 
    	 * @param id
    	 * @return
    	 */
    	public TUserBean get_AidInfo(int aid) {
    		TUserBean tUserBean = new TUserBean();
    		Connection conn = DBUtil.getConnectDb();
    		String sql = "select * from t_user where aid=" + aid;
    		PreparedStatement stm = null;
    		ResultSet rs = null;
    		try {
    			stm = conn.prepareStatement(sql);
    			rs = stm.executeQuery();
    			if (rs.next()) {
    				tUserBean.setId(rs.getInt("aid"));
    				tUserBean.setUsername(rs.getString("username"));
    				tUserBean.setPassword(rs.getString("password"));
    				tUserBean.setPhone(rs.getString("phone"));
    				tUserBean.setStatus(rs.getInt("status"));
    			}
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} finally {
    			DBUtil.CloseDB(rs, stm, conn);
    		}
    		return tUserBean;
    	}
    
    	/**
    	 * 根据传入的id,查找到对应的读者的全部信息,返回一个TUserBean类型的数据,与上一个相似,只是id的类型为String
    	 * 
    	 * @param id
    	 * @return
    	 */
    	public TUserBean get_AidInfo2(String aid) {
    		TUserBean tUserBean = new TUserBean();
    		Connection conn = DBUtil.getConnectDb();
    		String sql = "select * from t_user where aid=" + aid;
    		PreparedStatement stm = null;
    		ResultSet rs = null;
    		try {
    			stm = conn.prepareStatement(sql);
    			rs = stm.executeQuery();
    			if (rs.next()) {
    				tUserBean.setId(rs.getInt("aid"));
    				tUserBean.setUsername(rs.getString("username"));
    				tUserBean.setPassword(rs.getString("password"));
    				tUserBean.setPhone(rs.getString("phone"));
    				tUserBean.setStatus(rs.getInt("status"));
    			}
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} finally {
    			DBUtil.CloseDB(rs, stm, conn);
    		}
    		return tUserBean;
    	}
    
    	/**
    	 * 修改读者的信息
    	 */
    	public void updateUser(int id, String username, String password, String phone) {
    		// TODO Auto-generated method stub
    		Connection conn = DBUtil.getConnectDb();
    		String sql = "update t_user set username=?,phone=?,password=? where id=?";
    		PreparedStatement stm = null;
    		try {
    			stm = conn.prepareStatement(sql);
    			stm.setString(1, username);
    			stm.setString(2, phone);
    			stm.setString(3, password);
    			stm.setInt(4, id);
    			stm.executeUpdate();
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    
    	/**
    	 * 修改管理员的信息
    	 */
    	public void updateAdmin(int id, String username, String password,String phone) {
    		// TODO Auto-generated method stub
    		Connection conn = DBUtil.getConnectDb();
    		String sql = "update t_user set username=?,phone=?,password=? where id=?";
    		PreparedStatement stm = null;
    		try {
    			stm = conn.prepareStatement(sql);
    			stm.setString(1, username);
    			stm.setString(2, phone);
    			stm.setString(3, password);
    			stm.setInt(4, id);
    			stm.executeUpdate();
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    
    	/**
    	 * 删除用户的信息,根据传入的id作为条件
    	 * 
    	 * @param id
    	 */
    	public void deleteUser(int id) {
    		// TODO Auto-generated method stub
    		Connection conn = DBUtil.getConnectDb();
    		String sql = "delete from t_user where id=?";
    		PreparedStatement stm = null;
    		try {
    			stm = conn.prepareStatement(sql);
    			stm.setInt(1, id);
    			stm.executeUpdate();
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    
    	/**
    	 * 删除管理员的信息,根据传入的id作为条件
    	 * 
    	 * @param aid
    	 */
    	public void deleteAdmin(int id) {
    		// TODO Auto-generated method stub
    		Connection conn = DBUtil.getConnectDb();
    		String sql = "delete from t_user where id=?";
    		PreparedStatement stm = null;
    		try {
    			stm = conn.prepareStatement(sql);
    			stm.setInt(1, id);
    			stm.executeUpdate();
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    	/**
    	 * 查找用户,根据输入的名称,使用like进行模糊查询,然后返回一个ArrayList数组类型
    	 * 
    	 * @param name
    	 * @return
    	 */
    	public ArrayList<TUserBean> getLikeList(String name) {
    		// TODO Auto-generated method stub
    		ArrayList<TUserBean> tag_Array = new ArrayList<TUserBean>();
    		Connection conn = DBUtil.getConnectDb();
    		String sql = "select * from t_user where username like '%" + name + "%' or id like '%" + name + "%'";
    		PreparedStatement stm = null;
    		ResultSet rs = null;
    		try {
    			stm = conn.prepareStatement(sql);
    			rs = stm.executeQuery();
    			while (rs.next()) {
    				TUserBean tag = new TUserBean();
    				tag.setId(rs.getInt("id"));
    				tag.setStatus(rs.getInt("status"));
    				tag.setUsername(rs.getString("username"));
    				tag.setPassword(rs.getString("password"));
    				tag.setPhone(rs.getString("phone"));
    				tag_Array.add(tag);
    			}
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} finally {
    			DBUtil.CloseDB(rs, stm, conn);
    		}
    		return tag_Array;
    	}
    }
    
    

    servlet层:
    AddBookServlet.java:

    package com.code2life.servlet;
    
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.code2life.dao.BookDao;
    
    /**
     * Servlet implementation class AddBookServlet
     */
    @WebServlet("/AddBookServlet")
    public class AddBookServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
    
    	/**
    	 * @see HttpServlet#HttpServlet()
    	 */
    	public AddBookServlet() {
    		super();
    		// TODO Auto-generated constructor stub
    	}
    
    	/**
    	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
    	 *      response)
    	 */
    	protected void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		// TODO Auto-generated method stub
    //		response.getWriter().append("Served at: ").append(request.getContextPath());
    	}
    
    	/**
    	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
    	 *      response)
    	 */
    	protected void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		// TODO Auto-generated method stub
    //		doGet(request, response);
    		// 设置编码类型
    		request.setCharacterEncoding("UTF-8");
    		response.setContentType("text/html;charset=UTF-8");
    		// 获取要添加图书的信息
    		String card = request.getParameter("card");
    		String name = request.getParameter("name");
    		String type = request.getParameter("type");
    		String autho = request.getParameter("autho");
    		String press = request.getParameter("press");
    		int num = Integer.parseInt(request.getParameter("num"));
    		BookDao bookdao = new BookDao();
    		// 调用函数,存入图书
    		bookdao.addBook(card, name, type, autho, press, num);
    		response.sendRedirect("/books/admin_book.jsp");
    	}
    
    }
    
    

    AddUserServlet.java

    package com.code2life.servlet;
    
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import com.code2life.dao.AdminDao;
    
    /**
     * Servlet implementation class AddUserServlet
     */
    @WebServlet("/AddUserServlet")
    public class AddUserServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
    
    	/**
    	 * @see HttpServlet#HttpServlet()
    	 */
    	public AddUserServlet() {
    		super();
    		// TODO Auto-generated constructor stub
    	}
    
    	/**
    	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
    	 *      response)
    	 */
    	protected void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		// TODO Auto-generated method stub
    //		response.getWriter().append("Served at: ").append(request.getContextPath());
    	}
    
    	/**
    	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
    	 *      response)
    	 */
    	protected void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    		// TODO Auto-generated method stub
    //		doGet(request, response);
    		// 设置编码类型
    		request.setCharacterEncoding("UTF-8");
    		response.setContentType("text/html;charset=UTF-8");
    		// 获取要添加的读者的信息
    		String username = request.getParameter("username");
    		String password = request.getParameter("password");
    		String name = request.getParameter("name");
    		String email = request.getParameter("email");
    		String phone = request.getParameter("phone");
    		int lend_num = Integer.parseInt(request.getParameter("lend_num"));
    		int max_num = Integer.parseInt(request.getParameter("max_num"));
    
    		AdminDao userdao = new AdminDao();
    		// 调用函数添加读者信息
    		userdao.Register(username, password, name, email, phone, lend_num, max_num);
    		response.sendRedirect("/books/admin_user.jsp");
    	}
    
    }
    
    

    写在最后

    码代码不容易,需要的同学可以参考学习,全部代码不能都贴出,如果需要可以私博主V交流(Code2Life2)
    最后,别忘了一键三连哦

    展开全文
  • 主要介绍了shell实现图书管理系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 图书管理系统.cpp

    2019-12-09 20:19:52
    用C语言设计和实现一个图书管理系统,对图书信息和图书销售进行管理图书信息包括:图书编号(不允许重复)、图书名称、作者、出版单位、价格、库存等。 具体要求如下: (1) 系统以菜单方式工作; (2) 图书信息...
  • 本项目是一套基于Java的SSM框架实现的图书管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的java人群。 1. 包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2. 手把手的带你从零...
  • 本项目是一套基于SSM的图书管理系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本、软件工具、项目说明等,该项目可以直接作为毕设使用。 项目都经过...
  • 创建和管理图书目录 提供图书搜索和按语言、目标读者和类型浏览图书的能力 发布与每本书相关的评论和其他信息 发表文章 ##入门 ###设置你的数据库 BookWorm 使用作为其数据库。 要在本地设置 RavenDB,请,将其...
  • 本次软件工程实验,我选择的是图书管理系统,数据库采用SQL Server软件,界面实现部分我采用的是Visual Studio C#编写,文件中包含数据库文件、界面实现的代码、实验中各部分的数据流图以及架构图,实验报告和各部分...
  • mysql图书管理系统

    2018-12-30 01:14:34
    数据库期末大作业,使用mysql编写的图书管理系统,包含表格有图书表,读者表,管理员表格,借阅表,逾期处罚表,完成功能有借还书过程,模糊查询,设置权限用户。包含文件有本人的课设报告,mysql源文件,sql代码...
  • 书籍信息录入系统:图书管理员录入书籍的书号、名称,修改录入,形成图书表。 读者信息录入系统:系统管理员录入读者的个人信息,修改录入,形成读者表。 借阅情况录入系统:图书管理员在读者借阅图书时录入信息,...

    软件工程课程项目设计

    1、系统设计
    系统可分为5个子系统:书籍信息录入系统、读者信息录入系统、借阅情况录入系统、计算扣款金额系统、人员及图书信息查询系统

    1)书籍信息录入系统:图书管理员录入书籍的书号、名称,修改录入,形成图书表。

    2)读者信息录入系统:系统管理员录入读者的个人信息,修改录入,形成读者表。

    3)借阅情况录入系统:图书管理员在读者借阅图书时录入信息,修改录入,形成借阅表。

    4)计算扣款金额系统:图书管理员按读者借书时间、还书时间和借阅时长判断读者是否需要扣费,然后生成信息到历史借阅表中。

    5)人员及图书信息查询系统:读者可以根据自己的读者号查询自己的个人信息;图书管理员可以根据自己的管理员号查询自己的个人信息;所有人都可以登录之后查询图书的信息。

    在这里插入图片描述
    2、对象设计
    本系统中一共有三个参与者:

    其中读者的主要用例包括查询读者账户:查询自己的个人信息以及查询自己的账户和借阅情况、借书、还书和查询图书信息。

    图书管理员的主要用例是查看读者的账户,包括读者的个人信息以及读者的账户和借阅情况。在对书籍的信息进行管理的时候能够查看并添加添加图书的各种信息,修改图书的信息,以及删除图书的信息。在对借书记录和还书记录进行管理时图书管理员可以判断读者的借书情况是否超期,根据超期的情况决定是否需要罚款。

    系统管理员有五个用例,管理借阅者信息,包括添加新生信息和删除毕业生信息。在对图书的信息进行管理的时候,也能够添加新书的信息和删除已损坏图书的信息。同时,系统管理员也可以查询现有所有图书的信息,来决定是否需要引进新书。系统管理员也可以管理借书记录和还书记录,主要是当图书管理员遇到问题时,系统管理员也可以实现借还书的功能。

    图书管理员和系统管理员都继承于图书馆内部人员这个父类。

    在这里插入图片描述

    在这里插入图片描述

    本系统一共设计了七个类:

    读者类:
    属性:(1)读者证号 (2)密码 (3)最大借书数量

    方法:(1)借书 (2)还书 (3)查看用户账户 (4)查看借书数量 (5)登录系统
    (6)查询图书信息 (7)交罚款

    图书管理员类:
    属性:(1)管理员帐号 (2)密码

    方法:(1)查询图书信息(2)修改图书信息

    书架类:
    属性:(1)书架号 (2)类型(3)位置(4)存放数量

    方法 :(1) 存放图书

    图书类:
    属性:(1)书号(2)书名(3)数量(4)价格(5)出版社
    (6)馆藏册数(7)在馆册数

    系统管理员类:
    属性: 值班时间

    方法:(1)查看用户个人信息(2)修改用户个人信息

    后台系统类:
    属性:(1)级别(2)配置

    方法:(1)存储用户个人信息(2)存储图书信息(3)存储借阅信息

    事物(Item)类:
    属性: id

    方法:(1)创建(2)销毁(3)更新(4)显示图书信息(5)显示借阅次数

    图书管理员类和系统管理员类是工作人员类的子类,图书管理员在继承了其父类的属性和操作以外还自己添加了管理员帐号和密码这两个属性,添加了查询图书信息和修改图书信息这两个操作。系统管理员在继承了父类的基础以外还添加了值班时间这个属性,以及查看用户个人信息和修改用户个人信息这两个操作。

    读者类和工作人员类是人员类的子类,读者在继承了其父类的属性和操作以外还自己添加了读者证号、密码和最大借书数量这几个属性,添加了借书、还书、查看用户账户、查看借书数量、登录系统、查询图书信息和交罚款这些操作。工作人员在继承了其父类的属性和操作以外还自己添加了工资和管理范围这两个属性,添加了登录账户、查询用户借阅信息、管理借书记录、管理还书记录、查看用户账户这些操作。

    人员类是读者类和工作人员类的父类,它包含了所有人都有的三个属性:姓名、性别和年龄。读者类和工作人员类继承于人员类。

    图书管理员能够为读者提供服务,因此,二者之间应该是服务与被服务的关系。另外,图书管理员能够管理书架和图书,而且书架与图书之间是存放与被存放的关系,所有的图书都被存放于图书馆的书架中。最后,图书管理员还能够查看事物类,事物类有点类似于超市中在购物后产生的小票,当读者在完成整个借阅的操作之后,后台系统会自动生成一个事物。

    系统管理员可负责通过从后台系统中的添加、修改或者删除来管理图书,而不是像图书管理员一样去管理实体的图书。系统管理员可以管理后台系统,控制后台系统中所存储的信息以及当后台系统在发生一些故障时,系统管理员能够提供及时的维修。

    3、动态模型设计

    借书过程的时序图:
    在这里插入图片描述

    上图表示了读者在进行借阅操作时的一系列变化,读者在进行借书操作之前,首先需要输入自己的信息包括帐号和密码,显示器将这些信息发送给数据库,在数据库中将读者的帐号和密码进行比对,进行身份验证,并将验证的结果返回给读者。如果身份验证成功则用户登录成功,反之读者登录失败。

    读者可以向图书管理员发送借阅请求,图书管理员在收到消息后可以向后台系统输入借阅信息,后台系统查看对应图书的馆藏册数,并根据馆藏信息,返回该图书是否可借阅。若可借阅,则图书管理员可在此时修改后台系统的借阅信息,将需要借阅图书的读者信息添加到后台数据库的借阅表中,并且后台系统自动计算当前对应的借阅时间。

    此时,后台系统调用其事物类功能,当图书管理员修改完借阅表之后,后台系统生成一张纸质书单,即类似于超市购物时的小票,图书管理员得到小票确认无误后将纸质小票返回给借阅者,借阅者可以得到实体的图书,整个借阅过程结束。

    还书过程的时序图:
    在这里插入图片描述
    用户在还书的时候也需要登录,在登录的时候,首先需要输入自己的信息包括帐号和密码,显示器讲这些信息发送给数据库,在数据库中将用户的帐号和密码进行比对,进行身份验证,并将验证的结果返回给用户。如果身份验证成功则用户登录成功,反之用户登录失败。

    借阅者在登录成功之后,可以向图书管理员发送还书请求,图书管理员在接收到还书请求之后,需要进入后台系统查看该借阅者是否超期借阅,后台系统返回超期的信息,若借阅者还书的时间超过了应还的时间,后台系统则自动生成一张扣款账单,由图书管理员返回给借阅者。

    之后借阅者需要支付扣款的金额,支付完毕后,图书管理员需要修改借阅信息,即进入后台数据库的借阅表删除这条借阅信息,后台系统自动将删除的借阅信息添加到后台数据库的历史借阅表中。另外,后台系统还需要修改图书的馆藏册数,将所还图书的馆藏册数加一,并返回馆藏信息。

    最后,借阅者可以归还实体的图书,图书管理员将会请求生成一张还书书单,后台系统启用其事物类功能生成一张还书书单并返回给读者,整个还书操作结束。

    进行借书操作时的活动图:
    在这里插入图片描述
    读者在进行借书操作时,可以向图书管理员发送借阅请求,图书管理员在收到消息后可以向后台系统输入借阅信息,并查看对应图书的馆藏信息,并根据馆藏信息,产生一个分支判断。若馆藏册数为0,则不可借阅,返回错误信息并拒绝读者的借阅,之后结束整个借书操作。若馆藏册数不为0,则可借阅,后台系统返回可借阅信息。

    图书管理员在后台系统返回可借阅信息之后修改后台系统的借阅信息,将需要借阅图书的读者信息添加到后台数据库的借阅表中,并且后台系统自动计算当前对应的借阅时间,与此同时,后台系统调用其Item功能,当图书管理员修改完借阅信息之后,后台系统生成一张纸质书单。

    完成这两个操作之后,借阅者可以得到实体的图书,整个借阅过程结束。

    读者从未登记到还书成功时的状态图:
    在这里插入图片描述
    读者在进行借书与还书操作之前首先需要通过注册来验证身份,学校中的图书馆借阅者以学生为主,学生在登记学生信息之后一直处于未注册的状态。通过图书馆管理员对其进行注册操作,读者的状态才由未注册转向已注册。另外,读者在已注册的状态下也可以修改个人信息,此时借阅者的状态不变。

    注册完之后的读者在身份验证成功之后就可以进入到系统,进行图书信息和自己个人信息的查询。已注册的读者此时处于可借阅的状态,若读者借书数量小于等于规定数量时,在办理借阅手续之后就可以对图书馆中的图书进行借阅。在取完实体书之后,借阅者便进入一个未还书的状态。

    若借阅者处于未还书状态超过规定时间,则借阅者进入欠款状态,若借阅者处于未还书状态不超过2个月,则借阅者依旧处于未欠款状态。当借阅者在欠款状态时,需要进行还款,还款之后返回到未欠款状态。通过还书,借阅者进入已还书的状态。

    此时可选择继续借阅或者是直接结束,若是通过继续借阅返回,则需要进行判断,当读者借书数量小于等于规定数量时,才可以继续借阅,若是读者借书数量大于规定数量本,则直接结束,无法再借。

    由此,整个图书借阅系统设计完成。

    在本次课程项目设计中,让我更加了解到了流程关于程序设计的流程情况,同时也让我更好的复习了面向对象分析的内容。对于动态模型,也从本次项目设计当中有了更加深入的了解,能够更好的对其进行掌握。
    在通过参考书籍流程情况,我们简单的设计的这个图书管理系统,虽然我们的课程设计还有许多不足的地方,我们在后续的实现中会更加注重功能和系统的实现,更好的完善整个系统。

    展开全文
  • 问题描述:对个人图书进行管理,用文件来存储书籍的各种信息,包括书号、书名、作者名、价格和购买日期。 基本要求:1)提供查询功能,按照书名或作者名查找需要的书籍;2)提供插入删除还有更新功能;3)提供排序...
  • 图书销售管理系统文档.docx

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 318,047
精华内容 127,218
关键字:

如何管理图书