5

17 阅读2分钟

image.png

package org.app
package ui

import org.app.service.BookServise

import scala.io.StdIn

class LibrarayPresentation {

  private val BookServise = new BookServise()
  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" =>
        //  TOOO  查看所有图片
        // 调用业务逻辑层的方法
        val results = BookServise.searchBooks("")
          if(results.nonEmpty){
            results.foreach(println)
          } else {
            println("没有找到图书")
          }
        case "2" => println("查看图书")
        case "3" =>
          println("登录")
        // TOOO 登录之后,应该要展示不同的UI
        case "4" =>
          running = false
          println("感谢你的使用下次再见")
        case _ => println("无效的选择")
      }
    }
  }

  // 显示管理员的菜单
  // 显示登录用户的菜单
  def showMenu(): Unit = {
    showVisitorMenu()
  }
}
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()
  }
}
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()){
      val Array(id,name,author,available) = line.split(",")
      // 实例化一本书,保存到List
      books += BookModel(id.toInt,name,author,available.toBoolean)
    }
    // 关闭连接
    source.close()
    books
  }
}
package org.app
package models

// 图书类
// id,书名,作者,available:是否可外借
case class BookModel(id:Int,name:String,author:String,available:Boolean)
package org.app
package service

import models.BookModel

import org.app.dao.BookDAO

import scala.collection.mutable.ListBuffer

// 图书业务逻辑层
class BookServise {
  private val bookDAO = new BookDAO()
  // 查询所有的图书
  // def searchBooks(query:String):图书列表List(Book对象)
  def searchBooks(query:String):ListBuffer[BookModel] = {
    // 从文本文件中读取文本信息,并保存列表中,返回
    bookDAO.loadBooks()
  }
}
1, 人性的弱点,卡耐基,false
2,理想国,柏拉图,false
3,埃隆,马斯克传,艾萨克森,true
4,苏东坡传,林语堂,false
5,杨改口述自传,杨改、余斌,true
6,曾国藩传,张宏杰,true
7,知行合一王阳明,度阴山,true
8,暮色将尽,戴安娜・阿西尔,true
9,你当像鸟飞往你的山,塔拉・韦斯特弗,true
10,邓小平时代,傅高义,true
11,test,测试,true