scala图书管理系统【service】软件包

BookService  

package org.app
package service

import org.app.dao.{BookDAO, BorrowRecordDAO}
import org.app.modeis.{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):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 = {
    // 根据图书的ID,查询图书,判断图书是否存在
    val books = bookDAO.loadBooks()
    // 所有的借阅记录
    val records = borrowRecordDAO.loadBorrowRecords()

    val book = books.find(b => b.id == bookId)
    if(book.nonEmpty){
      val b = book.get
      // 判断图书是否已经被借出
      if(b.available){
        // 借阅图书 更新这本书的状态
        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
    }
  }

  def queryBorrwRecords(username: String):ListBuffer[BorrowRecordModel] = {

    val records=borrowRecordDAO.loadBorrowRecords()

    records.filter(r=> r.userName == username)
  }
  def returnBook(username: String, bookId: Int): Boolean = {

    queryBorrwRecords(username).find(r=>r.bookID == bookId && r.returnDate.isEmpty)match {
      case Some(record)=>

        val books=bookDAO.loadBooks()
        val b=books.find(_.id==bookId).get
        b.available=true
        bookDAO.saveBooks(books)
        val records=borrowRecordDAO.loadBorrowRecords()
        val r=records.find(r => r.bookID == bookId && r.userName == username && r.returnDate.isEmpty).get
        r.returnDate=Some(LocalDateTime.now().toString)
        borrowRecordDAO.saveBorrowRecords(records)
        true

      case None=> false
    }
  }
  def addBook(book: BookModel): Unit = {
    var id = 1
    val books=bookDAO.loadBooks()
    if (books.nonEmpty) {
      id = books.map(_.id).max + 1
    }
    val newBook=book.copy(id = id)
    books += newBook
    bookDAO.saveBooks(books)
  }

}

UserService

package org.app
package service

import dao.UserDAO

import org.app.modeis.UserModel
import org.app.modeis.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)
  }
  def addUser(username: String): Boolean = {
    val users=userDAO.loadUsers()
    val user=users.find(_.username == username)
    if(user.isEmpty){
      users +=UserModel(username,"123","普通用户")
      userDAO.saveUsers(users)
      true
    }else{
      false
    }
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值