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

Scala图书管理系统

项目创建并实现基础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.lryc.cn/news/509293.html

相关文章:

  • 【数据可视化案列】白葡萄酒质量数据的EDA可视化分析
  • Postman接口测试:全局变量/接口关联/加密/解密
  • vue+elementui实现下拉表格多选+搜索+分页+回显+全选2.0
  • 电商系统-产品经理
  • 《庐山派从入门到...》PWM板载蜂鸣器
  • 【河南新标】豫财预〔2024〕105号-《关于省级政务信息化建设项目支出预算标准的规定》-费用标准解读系列29
  • 【数据结构】数据结构整体大纲
  • 【C++基础】09、结构体
  • 大恒相机开发(2)—Python软触发调用采集图像
  • QT的前景与互联网岗位发展
  • 青藤入选工信部“2024年网络安全技术应用典型案例拟支持项目名单”
  • NVIDIA GPU 内部架构介绍
  • 重温设计模式----装饰模式
  • 第十六章 C++ 字符串
  • MySQL中Seconds_Behind_Master是怎么计算的
  • React Native 集成原生Android功能
  • Mac mini m4安装PD和Crack和关闭SIP
  • 详解C语言中的关键词:extern以及它需要注意的事项
  • 框架程序设计-简答以及论述
  • ce第六次作业
  • 为何页面搜索应避免左模糊和全模糊查询???
  • AI可信论坛亮点:合合信息分享视觉内容安全技术前沿
  • 在 Mac M2 上安装 PyTorch 并启用 MPS 加速的详细教程与性能对比
  • 生成式人工智能在生产型企业中的应用
  • Linux逻辑卷管理
  • 机器人加装电主轴【铣削、钻孔、打磨、去毛刺】更高效
  • opencv sdk for java中提示无stiching模块接口的问题
  • 今天最新早上好问候语精选大全,每天问候,相互牵挂,彼此祝福
  • 五种IO模型- 阻塞IO、非阻塞IO、多路复用IO、信号驱动IO以及异步IO
  • Vscode GStreamer插件开发环境配置