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.mzph.cn/diannao/64929.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HCIA-Access V2.5_6_3_GPON关键技术

GPON关键技术 GPON关键技术包含三个,测距,DBA,下行AES加密。 为什么需要测距 由于每一个ONU到OLT的距离是不一样的,虽然上行有TDMA技术,让每一个ONU在不同的时间段发送数据,但是可能由于距离的原因&#x…

v3s点RGB屏 40pin 800x480,不一样的点屏,不通过chosen。

一、背景、目的、简介。 一般来说,通过uboot将屏幕参数传给kernel,是通过修改设备树。 uboot和kernel都需要屏幕点亮。uboot侧重于显示一张图片。而kernel则多是动画。 在这里,我先是找到了一个裸机点屏的代码。将其编译成静态库后&#x…

电脑丢失bcrypt.dll文件是什么原因?找不到bcrypt.dll文件修复办法来啦!

电脑运行时常见问题及解决方案:文件丢失、文件损坏与系统报错 作为一名软件开发从业者,深知电脑在日常使用中难免会遇到各种问题,如文件丢失、文件损坏和系统报错等。这些问题不仅影响工作效率,还可能带来数据丢失的风险。今天&a…

【自动驾驶】3 激光雷达③

5 激光雷达点云检测模型 🦋🦋🦋CenterPoint是Anchor‐Free的3D物体检测器,以点云作为输入,将三维物体在Bird‐View下的中心点作为关键点,基于关键点检测的方式回归物体的尺寸、方向和速度。相比于Anchor‐…

自动化测试框架playwright 常见问题和解决方案

自动化课程已经讲完了playwright框架,很多同学跃跃欲试,所谓实践出真知,这不在实践中就要到了一些问题,小编也给大家整理出来了,送个有需要的同学,记得点赞收藏哦~~ 01安装问题 问题描述: 在安…

Windows10 下通过 Visual Studio2022 编译 openssl 3.4 + POCO 1.14.1

Windows10 下通过 Visual Studio2022 编译 POCO库 1 POCO库简介2 环境准备2.1 VS Studio 2022 安装2.2 openssl 安装3 编译 POCO 1.14.13.1 下载源码3.2 修改编译配置3.2.1 修改 poco\Crypto 工程 引用 openssl 的配置3.2.2 修改 poco\NetSSL_OpenSSL 工程 引用 openssl 的配置…

厉害了多模态对齐!新思路直接发高区!小红书、国科大都在抢着发!

多模态是个非常热门的话题,这其中,“多模态对齐”已经被验证非常重要,它能够提升AI模型的跨模态理解和情感分析精度,是未来多模态大模型商业化的必要条件,研究热度不言而喻。 就说最近的大佬团队,小红书前…

ubuntu20.04安装imwheel实现鼠标滚轮调速

ubuntu20.04安装imwheel实现鼠标滚轮调速 Ubuntu 系统自带的设置中仅具备调节鼠标速度的功能,而无调节鼠标滚轮速度的功能。其默认的鼠标滚轮速度较为缓慢,在查看文档时影响尚可接受,但在快速浏览网页时,滚轮速度过慢会给用户带来…

MacOS安装MySQL

官网下载MySQL 苹果芯片选择ARM版本 安装过程中会要求你输入root的密码(不少于8位),这里设置为12345678 打开系统设置查看是否成功安装MySQL 配置MySQL环境变量 vi ~/.zshrc加入一行export PATH$PATH:/usr/local/mysql/bin 执行source ~/…

dolphinscheduler服务注册中心源码解析(三)RPC提供者服务整合注册中心注册服务实现源码

RPC提供者服务整合注册中心注册服务实现源码 1.概述2.源码解读思路3.实现2.1.应用服务的RPC服务接口定义2.1.1.MasterServer应用中提供的RPC接口服务2.1.2.WorkerServer应用中提供的RPC接口服务2.2.应用服务的RPC服务接口实现2.2.1.MasterServer应用中提供的RPC接口服务实现类2…

Leetcode Hot 100 【二叉树】104. 二叉树的最大深度

104. 二叉树的最大深度 已解答 简单 相关标签 相关企业 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3…

WebDAV文件共享:将个人电脑变身为云存储,实现自由文件传输

WebDAV文件共享:将个人电脑变身为云存储,实现自由文件传输 引言:操作步骤搭建安装Internet Information Services (IIS) 管理器配置Internet Information Services (IIS) 管理器配置远程域名访问地址 引言: 相信很多朋友都有过把…

MySQL的分析查询语句

【图书推荐】《MySQL 9从入门到性能优化(视频教学版)》-CSDN博客 《MySQL 9从入门到性能优化(视频教学版)(数据库技术丛书)》(王英英)【摘要 书评 试读】- 京东图书 (jd.com) MySQL9数据库技术_夏天又到了…

前端开发 之 12个鼠标交互特效上【附完整源码】

前端开发 之 12个鼠标交互特效上【附完整源码】 文章目录 前端开发 之 12个鼠标交互特效上【附完整源码】一:彩色空心爱心滑动特效1.效果展示2.HTML完整代码 二:彩色实心爱心滑动特效1.效果展示2.HTML完整代码 三:粒子连结特效1.效果展示2.HT…

深度学习之超分辨率算法——SRGAN

更新版本 实现了生成对抗网络在超分辨率上的使用 更新了损失函数,增加先验函数 SRresnet实现 import torch import torchvision from torch import nnclass ConvBlock(nn.Module):def __init__(self, kernel_size3, stride1, n_inchannels64):super(ConvBlock…

路由器做WPAD、VPN、透明代理中之间一个

本文章将采用家中TP-Link路由器 路由器进行配置DNS DNS理解知识本文DNS描述参考:网络安全基础知识&中间件简单介绍_计算机网络中间件-CSDN博客 TP LINK未知的错误,错误编号:-22025 TP-LINK 认证界面地址:https://realnam…

CentOS HTTPS自签证书访问失败问题的排查与解决全流程

sudo cp harbor.crt /usr/local/share/ca-certificates/sudo yum install -y ca-certificatessudo update-ca-trust force-enablesudo update-ca-trust extract 但是访问 https://172.16.20.20 仍然报错 * About to connect() to 172.16.20.20 port 443 (#0) * Trying 172.16.2…

Tool之Excalidraw:Excalidraw(开源的虚拟手绘风格白板)的简介、安装和使用方法、艾米莉应用之详细攻略

Tool之Excalidraw:Excalidraw(开源的虚拟手绘风格白板)的简介、安装和使用方法、艾米莉应用之详细攻略 目录 Excalidraw 简介 1、Excalidraw 的主要特点: Excalidraw 安装和使用方法 1、Excalidraw的安装 T1、使用 npm 安装: T2、使用 …

【蓝桥杯选拔赛真题96】Scratch风车旋转 第十五届蓝桥杯scratch图形化编程 少儿编程创意编程选拔赛真题解析

目录 scratch风车旋转 一、题目要求 编程实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 5、python资料 scratc…

奇怪问题| Chrome 访问csdn 创作中心的时候报错: 服务超时,请稍后重试

Chrome 访问csdn 创作中心的时候报错: 服务超时,请稍后重试用无痕浏览器可以正常访问 关闭代理无效清缓存和Cookies无效。考虑无痕浏览器模式下插件不生效,尝试把chrome 插件也禁用,发现有效,是该扩展程序的缘故