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

Scala图书管理系统

项目创建并实现基础UI

package org.app

import scala.io.StdIn

object Main {
  def main(args: Array[String]): Unit = {

    var running = true
    while (running) {
      println("欢迎来到我的图书管理系统,请选择")
      println("1.查看所有图书")
      println("2.查询图书")
      println("3.登录")
      println("4.离开")

      // 获取用户的操作
      val choice = StdIn.readLine().trim
      choice match {
        case "1" => println("查看所有图书")
        //TODO 查看所有图书
        case "2" => println("查询图书")
        case "3" => println("登录")
        //TODO 登录之后,应该要展示不同的UI
        case "4" =>
          running = false
          println("感谢您的使用,下次再见")
        case _ => println("无效的选择")
      }
    }
  }
}

经典的三层结构

       

改造代码实现UI层
LibrarayPresentation

package org.app
package ui

import org.app.service.BookService

import scala.io.StdIn

class LibrarayPresentation {
 //显示游客的菜单
  private val BookService=new BookService()
  def showVisitorMenu(): Unit = {
    var running = true
    while (running) {
      println("欢迎来到我的图书管理系统,请选择")
      println("1.查看所有图书")
      println("2.查询图书")
      println("3.登录")
      println("4.离开")

      // 获取用户的操作
      val choice = StdIn.readLine().trim
      choice match {
        case "1" => println("查看所有图书")
        //TODO 查看所有图书
        //调用业务逻辑层的方法
        val results=BookService.searchBook("")
        if(results.nonEmpty) {
          results.foreach(println)
        }else{
          println("没有找到图书")
        }
        case "2" => println("查询图书")
        case "3" => println("登录")
        //TODO 登录之后,应该要展示不同的UI
        case "4" =>
          running = false
          println("感谢您的使用,下次再见")
        case _ => println("无效的选择")
      }
    }
  }

  //显示管理员的菜单
  //显示登录用户的菜单
  def showMenu(): Unit = {
    showVisitorMenu()
  }
}
BookService
package org.app
package service

import models.BookModel

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

import 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.app

import org.app.ui.LibrarayPresentation

import scala.io.StdIn

object Main {
  def main(args: Array[String]): Unit = {

    val m = new LibrarayPresentation()
    m.showMenu()
  }
}


http://www.kler.cn/a/451163.html

相关文章:

  • 在跨平台开发环境中构建高效的C++项目:从基础到最佳实践20241225
  • 基于ceres优化的3d激光雷达开源算法
  • 以太网通信--读取物理层PHY芯片的状态
  • CloudCompare下载、安装与汉化
  • SecureCRT汉化版
  • 服务器证书原理
  • 【电路笔记 信号】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
  • 深入理解批量归一化(BN):原理、缺陷与跨小批量归一化(CmBN)
  • Redis数据库操作备份
  • 手机外观边框缺陷视觉检测智慧方案