# LMS **Repository Path**: Leepanker/LMS ## Basic Information - **Project Name**: LMS - **Description**: 图书管理系统(Library management system )。大二上学期的期末大作业。感觉是一个不错的Javaweb的练手项目hh。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 6 - **Forks**: 0 - **Created**: 2021-12-03 - **Last Updated**: 2025-06-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 各类的属性和方法: ## 书籍(Book): 可以将借书还书的活动写成日志,记录到某个文件当中 ```java private Integer id; // 书的id(主键、递增、唯一) private String name; // 书名 private String pos; // 书的位置 private String type; // 书的类型 private String info; // 书的简介 private Integer state; // 书籍状态可以使用单选框来限定 // 书的状态(0表示未被借出,1表示已被借出,2表示被续借,3表示逾期, 4表示丢失,5表示损毁,6表示其他情况) private String remark; // 书的备注 private Integer owner; // 借书的同学的id(还书之后为null) private String borrowBookDate; // 借书的时间(还书之后为null) private String returnBookDate; // 还书的时间(还书之后为null) // 书的总数量(???) 可以直接用SELECT * FROM table where state=0 然后统计list.size() ``` ## 留言(Evaluation): ```java private Integer evaluationId; // 该留言的id private Integer adminId; // 如果是管理员留言的话,管理员的id private Integer studentId; // 如果是学生留言的话,学生的id private Integer bookId; // 被留言的书的id private String message; // 留言的内容 ``` ## 学生(Student): ```java private Integer id; private String number; private String username; private String password; private String tel; private String email; private Integer credit; // 信誉等级(通过调用不同的函数,根据信誉等级来设置每个同学能借书和续借书的数量) private Integer bookCnt; // 每个月借的书的数量 private Integer bookRenewal; // 每个月能续借的书籍 private String bookId; // 不同的书的id之间使用,分割开 ``` ## 管理员(Admin): ```java private Integer id; private String username; private String password; ``` # 登录逻辑: ## 用户登录之前: 到时候会将项目部署到我的服务器上面,所以会有一个公网IP(项目地址) - 输入项目地址,进入index(初始页面): - 页面用来展示介绍咱项目的具体内容和信息 - 并且提供学生的登录、注册以及管理员的注册按钮 - (这里可以用别人现成的网页改一下) ## 学生注册页面: - 输入用户的信息进行注册(这些内容都可使用正则表达式进行验证) - 学号:必填、不可更改、不可重复(使用Ajax异步进行数据库的连接验证学号是否重复) - 密码:长度限制 - 手机号:格式限制(可能需要发送验证码?) - 邮箱:格式限制(可能需要发送验证码?) - 最后可能需要验证码? - 注册完成之后,Ajax验证注册是否成功 - 成功:提示用户成功,自动跳转到登录页面 - 失败:提示用户失败,还是在当前页面 - 与学生登录和管理员登录之间可以相互跳转(response完成重定向) - 注册的时候不要以form表单的形式直接提交信息,要采用ajax,以json的形式,向后台提交信息。 ## 学生登录页面: - 登录信息:学号、密码登录 - 用cookie(加密)使十天内记住账号信息 - (提示:为了您的信息安全,请不要在网吧或公用电脑上使用此功能!) - 使用正则表达式验证账号密码是否符合条件 - 使用ajax在当前页面对与登录信息进行连接数据库的验证,验证登录的账号和密码是否正确 - 登录成功:用session来记录用户信息,跳转到学生个人菜单页面 - 登录失败:在本页面提示登录失败(用户名或密码错误) - 然后就进入用户模块了 ## 管理员登录页面: - 登录信息:用户名、密码登录 - 使用正则表达式验证账号密码是否符合条件 - 使用ajax在当前页面对与登录信息进行连接数据库的验证,验证登录的账号和密码是否正确 - 登录成功:用session来记录用户信息,跳转到学生个人菜单页面 - 登录失败:在本页面提示登录失败(用户名或密码错误) - 然后就进入管理员模块了 # 运行逻辑: ## 管理员模块: ### 1. 书籍录入功能 - 功能:书籍录入页面: 书名,书所处的位置(类似快递的取件码),书的简介,书的总数量等信息 - 实现:insert语句,向书籍表中插入信息 ### 2. 书籍借出/归还登记功能 - 功能:书籍借出页面: 谁借出的(默认每人每本书只能借出一本),什么时间借的,借多久,借阅多少本等信息 - 实现:update书的状态,update借书的这位同学的状态 - 功能:书籍归还页面: 书籍状态更新,书籍数量更新 - 实现:update书的状态,update还书的同学的状态 ### 3. 书籍状态查阅功能 - 功能:书籍搜索页面: 可以根据借出日期,书籍编号,书籍类别,逾期等搜索条件进行书籍搜索.(搜索条件包括但不仅限于这些) - 实现:select语句(根据不同的条件进行搜索) - 功能:书籍状态页面: 书籍可借阅数量,书籍借阅信息(谁借走了,借了多长时间,是否需要催还) - 实现:select * 语句,将所有书都存入list中,然后遍历,展示每个书的状态 ### 4. 书籍评价反馈功能 - 功能:留言板展示: 选中某个书籍后,会在页面下方展示数条留言信息,如果留言较多,可分页查看 - 实现:insert语句,向留言板中插入数据 ### 5. 书籍评价查看和删除功能 - 根据书的id或者name、学生的id或number(也许可以支持模糊查询hh) ### 6. 书籍备注信息功能 - 书籍遗失备注 - 书籍损毁备注 - 其他信息备注... - 实现:update更改书籍状态和书籍的留言 ### 7. 退出功能 - 实现:清除session(```session.invalidate();```) ## 学生模块: ### 1. 个人信息页面 - **(回显数据,更改信息)** - 功能:密码修改功能 - 实现:update学生信息 - 功能:手机号码更换功能 - 实现:update学生信息 ### 2. 借阅信息页面 - 功能:已借阅图书列表: 借阅时间,剩余可借阅时间,是否逾期,借阅书籍信息等. - 实现:select这个学生,然后查询ta所有所借图书的id,然后再展示图书信息 - 功能:书籍续借功能: 续借次数,续借书籍信息,续借时间等. - 实现:update学生的续借次数,找到要续借的图书id,然后update图书的状态和时间 ### 3. 留言板页面 - 功能:展示所借阅书籍的列表:选中某本书籍之后,会展示关于该书籍的留言信息,如果留言较多,可分页查看. - 实现:根据图书的id来select留言版,然后展示信息 - 功能:参与书籍留言评价: 选中某本已借阅书籍,可以在文本编辑框中发表自己的评论.(只能在借书期间评价) - 实现:弹出框,学生输入信息,然后insert留言信息 ### 4. 退出功能 - 实现:清除session和cookie(```session.invalidate();c.setMaxAge( 0 );```) -------------------------------------------- 一些补充: - 修改(编辑)信息时,可能还需要回显数据,然后再做修改 - 注册时加上验证码(session)