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

Scala项目(图书管理系统)

3、service

BookService
package org.app
package service

import 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 service

import dao.UserDAO

import org.app.models.UserModel

class 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.kler.cn/a/451166.html

相关文章:

  • Docker--宿主机执行docker容器的命令
  • 如何在谷歌浏览器中进行网络速度测试
  • golang 并发--goroutine(四)
  • 聚类算法DBSCAN 改进总结
  • LabVIEW实现NB-IoT通信
  • Doris Tablet 损坏如何应对?能恢复数据吗?
  • 最新深度学习YoloV11训练,转化,推理,C#部署
  • uniapp跨平台开发---webview调用app方法
  • Scala图书管理系统
  • 【电路笔记 信号】Metastability 平均故障间隔时间(MTBF)公式推导:进入亚稳态+退出亚稳态+同步器的可靠性计算
  • php时间strtotime函数引发的问题 时间判断出错
  • LabVIEW软件开发的未来趋势
  • 【前端】详解前端三大主流框架:React、Vue与Angular的比较与选择
  • 老旧小区用电安全保护装置#限流式防火保护器参数介绍#
  • Spring Boot 3.4新特性:RestClient和RestTemplate的重大更新详解
  • Python 标准库:random——随机数
  • 【Chrome Extension】一、CSDN计时扩展设计
  • Swift Type Erasure(类型擦除)
  • 【docker】pull 镜像异常
  • Redis--通用命令学习
  • centos权限大集合,覆盖多种权限类型,解惑权限后有“. + t s”问题!
  • 技术与教育的融合:构建现代成绩管理系统
  • 4、数据结构与算法解析(C语言版)--栈
  • PH热榜 | 2024-12-24
  • 提高保养效率:4S店预约系统的设计与开发
  • SpringBoot简单使用Stomp