当前位置: 首页 > news >正文

Scala项目(图书管理系统)

3、service

BookService
package org.app
package serviceimport org.app.dao.{BookDAO, BorrowRecordDAO}
import org.app.models.{BookModel, BorrowRecordModel}import java.time.LocalDateTime
import scala.collection.mutable.ListBuffer// 图书业务逻辑层
class BookService {private val bookDAO = new BookDAO()private val borrowRecordDAO = new BorrowRecordDAO()// 查询所有的图书//  def searchBooks(query:String): 图书列表List(Book对象)def searchBooks(query:String):ListBuffer[BookModel] = {// 从文本文件中读取书本信息,并保存列表中,返回val books = bookDAO.loadBooks()query match {case "" => books // 没有条件,就返回全部case _ => books.filter(b => b.name.contains(query) || b.author.contains(query)) // 有条件,就过滤}}// 普通用户,借阅图书def borrowBook(username:String, bookId:Int):Boolean = {// (1)根据图书的ID,查询图书,判断图书是否存在val books = bookDAO.loadBooks()// 所有的借阅记录val records = borrowRecordDAO.loadBorrowRecords()val book = books.find(b => b.id == bookId)if(book.nonEmpty){val b = book.get//    (2)判断图书是否已经被借出if(b.available){// (3)借阅图书 更新这本书的状态b.available = false// 把更新之后的图书的信息写回txt文件bookDAO.saveBooks(books)// 添加一条借阅记录records += BorrowRecordModel(username, b.id,b.name, LocalDateTime.now().toString)// 写借阅记录回文件borrowRecordDAO.saveBorrowRecords(records)println("借阅成功,已保存借阅记录!")true} else {println("这本书被借走了")false}} else {println("没有找到这本书")false}}
}
UserService
package org.app
package serviceimport dao.UserDAOimport org.app.models.UserModelclass UserService {private val userDAO= new UserDAO()// 身份校验def authenticateUser(username: String, password: String): Option[UserModel] = {// 去根据用户名和密码查询,是否有符合要求的用户val users = userDAO.loadUsers()users.find(user => user.username == username && user.password == password)}
}

http://www.lryc.cn/news/508932.html

相关文章:

  • 前端开发 详解 Node. js 都有哪些全局对象?
  • 2024_12_20_生活记录
  • Sequelize ORM 现有表如何使用
  • ArcGIS Pro 3.4新功能3:空间统计新特性,基于森林和增强分类与回归,过滤空间自相关
  • H3C MPLS跨域optionB
  • 源码分析之Openlayers中Geometry基类介绍
  • 《Vue3 三》Vue 中的 options 选项
  • Elasticsearch 国产化替代方案之一 Easysearch 的介绍与部署指南
  • Pytorch | 从零构建EfficientNet对CIFAR10进行分类
  • Python超能力:高级技巧让你的代码飞起来
  • 熊军出席ACDU·中国行南京站,详解SQL管理之道
  • FPGA实现MIPI转FPD-Link车载同轴视频传输方案,基于IMX327+FPD953架构,提供工程源码和技术支持
  • vue3动态绑定图片和使用阿里巴巴矢量图
  • ‘vite‘ 不是内部或外部命令,也不是可运行的程序
  • 2024年12月一区SCI-加权平均优化算法Weighted average algorithm-附Matlab免费代码
  • 如何获取 ABAP 内表中的重复项
  • 编译笔记:vs 中 正在从以下位置***加载符号 C# 中捕获C/C++抛出的异常
  • ChatGPT与Postman协作完成接口测试(二)
  • flask-admin modelview 中重写get_query函数
  • 【python 逆向分析某有道翻译】分析有道翻译公开的密文内容,webpack类型,全程扣代码,最后实现接口调用翻译,仅供学习参考
  • tensorflow_probability与tensorflow版本依赖关系
  • 构建安全的用户认证系统:PHP实现
  • VMD-SSA-BiLSTM、VMD-BiLSTM、BiLSTM时间序列预测对比
  • 天融信网络架构安全实践
  • 腾讯云云开发 Copilot具有以下优势
  • electron-vite【实战系列教程】
  • 【微信小程序】微信小程序中的异步函数是如何实现同步功能的
  • 贪心算法(三)
  • uniApp打包H5发布到服务器(docker)
  • 【AI落地应用实战】篡改检测技术前沿探索——从基于检测分割到大模型