Scala图书管理系统

devtools/2024/12/24 19:52:48/

项目创建并实现基础UI

package org.appimport scala.io.StdInobject Main {def main(args: Array[String]): Unit = {var running = truewhile (running) {println("欢迎来到我的图书管理系统,请选择")println("1.查看所有图书")println("2.查询图书")println("3.登录")println("4.离开")// 获取用户的操作val choice = StdIn.readLine().trimchoice match {case "1" => println("查看所有图书")//TODO 查看所有图书case "2" => println("查询图书")case "3" => println("登录")//TODO 登录之后,应该要展示不同的UIcase "4" =>running = falseprintln("感谢您的使用,下次再见")case _ => println("无效的选择")}}}
}

经典的三层结构

       

改造代码实现UI层
LibrarayPresentation

package org.app
package uiimport org.app.service.BookServiceimport scala.io.StdInclass LibrarayPresentation {//显示游客的菜单private val BookService=new BookService()def showVisitorMenu(): Unit = {var running = truewhile (running) {println("欢迎来到我的图书管理系统,请选择")println("1.查看所有图书")println("2.查询图书")println("3.登录")println("4.离开")// 获取用户的操作val choice = StdIn.readLine().trimchoice match {case "1" => println("查看所有图书")//TODO 查看所有图书//调用业务逻辑层的方法val results=BookService.searchBook("")if(results.nonEmpty) {results.foreach(println)}else{println("没有找到图书")}case "2" => println("查询图书")case "3" => println("登录")//TODO 登录之后,应该要展示不同的UIcase "4" =>running = falseprintln("感谢您的使用,下次再见")case _ => println("无效的选择")}}}//显示管理员的菜单//显示登录用户的菜单def showMenu(): Unit = {showVisitorMenu()}
}
BookService
package org.app
package serviceimport models.BookModelimport org.app.dao.BookDAO
import scala.collection.mutable.ListBuffer
class BookService {private val bookDAO = new BookDAO()//查询所有的图书
//  def searchBook(query:String):图书列表List=(book对象)def searchBook(query:String):ListBuffer[BookModel]={//从文本文件中读取基本信息,并保存在列表bookDAO.loadBooks()}}
BookDAO
package org.app
package daoimport models.BookModel
import scala.collection.mutable.ListBuffer//图书,数据操作层
class BookDAO {
//加载图书,从文件中读入def loadBooks(): ListBuffer[BookModel] = {val books = new ListBuffer[BookModel]()val source=scala.io.Source.fromFile("books.txt")for (line<-source.getLines()) {println(line)val Array(id, name, author, available) = line.split(",")books += BookModel(id.toInt, name, author, available.toBoolean)}//关闭连接source.close()books}
}
BookModel
package org.app
package models//图书类
// id 书名,作者,状态
case class BookModel (id: Int, name: String, author: String, available: Boolean) {}
Main 
package org.appimport org.app.ui.LibrarayPresentationimport scala.io.StdInobject Main {def main(args: Array[String]): Unit = {val m = new LibrarayPresentation()m.showMenu()}
}


http://www.ppmy.cn/devtools/145065.html

相关文章

MongoDB 介绍及 Java 实现基本操作

MongoDB 介绍及 Java 实现基本操作 一、MongoDB 简介二、Java 操作 MongoDB 的基本步骤1. 环境准备2. 基本操作示例 三、代码解析1. 连接 MongoDB&#xff1a;通过 MongoClients.create(uri) 创建客户端连接&#xff0c;uri 指定 MongoDB 服务地址。2. 获取数据库和集合&#x…

ASP.NET Core 与 Blazor:现代 Web 开发技术的全新视角

在当代 Web 技术快速演进的浪潮中&#xff0c;开发者们总是在寻找能够提高效率、简化开发流程的工具和框架。微软推出的 ASP.NET Core 和 Blazor&#xff0c;为开发者提供了多样化的选择&#xff0c;不仅适应了现代 Web 应用的发展需求&#xff0c;同时也为技术人员打开了更多可…

GESP CCF C++八级编程等级考试认证真题 2024年12月

202412 GESP CCF C八级编程等级考试认证真题 1 单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09; 第 1 题 小杨家响应国家“以旧换新”政策&#xff0c;将自家的汽油车置换为新能源汽车&#xff0c;正在准备自编车牌。自编车牌包括5 位数字或英文字母&#xff0c…

第四章补充:线性代数(B站:一高数)

视频1&#xff1a;行列式的入门 原视频&#xff1a;线性代数&#xff01;启动&#xff01;从零开始到精通|第一集_哔哩哔哩_bilibili 一、二阶与三阶行列式 小学我们就接触过鸡兔同笼&#xff0c;这个问题让我们第一次接触到了方程组的思想。我们可以将它抽象成一个二元一次…

【HarmonyOS之旅】HarmonyOS开发基础知识(一)

目录 1 -> 应用基础知识 1.1 -> 用户应用程序 1.2 -> 用户应用程序包结构 1.3 -> Ability 1.4 -> 库文件 1.5 -> 资源文件 1.6 -> 配置文件 1.7 -> pack.info 1.8 -> HAR 2 -> 配置文件简介 2.1 -> 配置文件的组成 3 -> 配置文…

[前端]mac安装nvm(node.js)多版本管理

NVM功能简介 NVM&#xff08;Node Version Manager&#xff09;是一个用于管理多个Node.js版本的命令行工具&#xff0c;它允许开发者在同一台机器上安装、切换和卸载不同版本的Node.js&#xff0c;从而解决版本不兼容的问题。以下是NVM的一些主要功能和用途&#xff1a; 安装和…

32. 线程、进程与协程

一、什么是多任务 如果一个操作系统上同时运行了多个程序&#xff0c;那么称这个操作系统就是 多任务的操作系统&#xff0c;例如&#xff1a;Windows、Mac、Android、IOS、Harmony 等。如果是一个程序&#xff0c;它可以同时执行多个事情&#xff0c;那么就称为 多任务的程序。…

关于redis锁的简单实现

新建RedisLock类。 public class RedisLock implements Serializable {private static final long serialVersionUID 3077854413624876404L;private static final Log LOG LogFactory.get(RedisLock.class);/*** 锁标志对应的key*/private String lockKey;/*** 将key 的值设…