首页 > 其他分享 >scala图书管理系统【ui】软件包

scala图书管理系统【ui】软件包

时间:2025-01-03 14:32:35浏览次数:3  
标签:case val scala ui user 软件包 println readLine 图书

LibrarayPresentation

package org.apppackage ui

import org.app.modeis.{BookModel, UserModel}

import org.app.service.{BookService, UserService}

import scala.io.StdIn

import scala.io.StdIn.readLine

class LibrarayPresentation {

  private val BookService = new BookService()

  private val UserService = new UserService()

  //辅助方法,输入图书信息,返回一个BookModel

  private def inputBookInfo():BookModel={

    println("请输入图书的名称:")

    val name=readLine().trim

    println("请输入图书的作者:")

    val author=readLine().trim

    println("请输入图书是否可以外接(true/false):")

    val available=StdIn.readBoolean()

    BookModel(0,name,author,available)

  }

  // 显示游客的菜单

  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" =>

          // 调用业务逻辑层的方法

          val results = BookService.searchBooks("")

          if(results.nonEmpty){

            results.foreach(println)

          } else {

            println("没有找到图书")

          }

        case "2" =>

          val query = readLine("请输入查询关键字(书名,作者):").trim

          val results = BookService.searchBooks(query)

          if(results.nonEmpty){

            println("=======查询图书的结果:=======")

            results.foreach(println)

          } else {

            println("没有找到图书")

          }

        case "3" =>

          println("请输入用户名:")

          val username = StdIn.readLine().trim

          println("请输入密码:")

          val password = StdIn.readLine().trim

          // 调用Service的方法,进行登录

          val userOpt = UserService.authenticateUser(username, password)

          if(userOpt.isEmpty){

            println("用户名或密码错误")

          } else {

            println("登录成功")

            val user = userOpt.get

            user.role match {

              case "管理员" => showAdminMenu(user)

              case "普通用户" => showUserMenu(user)

            }

          }

        case "4" =>

          running = false

          println("感谢你的使用,下次再见")

        case _ => println("无效的选择")

      }

    }

  }

 

  // 显示管理员的菜单

  def showAdminMenu(user:UserModel): Unit = {

    var running = true

    while (running) {

      println(s"欢迎管理员:${user.username},来到我的图书管理系统, 请选择")

      println("1. 添加图书")

      println("2. 查询图书")

      println("3. 添加用户")

      println("4. 退出")

 

      // 获取用户的操作

      val choice = StdIn.readLine().trim

      choice match {

        case "1" =>

          val book=inputBookInfo()

          BookService.addBook(book)

          println(s"图书《${book.name}》添加成功")

        case "2" => println("查询图书")

        case "3" =>

          val username=StdIn.readLine("请输入用户名:")

          if (UserService.addUser(username)){

            println("用户添加成功")

          }else{

            println("用户添加失败")

          }

        case "4" => running = false

        case _ => println("无效的选择")

      }

    }

  }

  // 显示登录用户的菜单

  def showUserMenu(user:UserModel): Unit = {

    var running = true

    while (running) {

      println(s"欢迎用户:${user.username},来到我的图书管理系统, 请选择")

      println("1. 借阅图书")

      println("2. 查询借阅图书")

      println("3. 还书")

      println("4. 退出")

 

      // 获取用户的操作

      val choice = StdIn.readLine().trim

      choice match {

        case "1" =>

          try {

            val id = readLine("请输入图书的ID:").toInt

            BookService.borrowBook(user.username, id)

          } catch {

            case e:Exception =>

              println(e)

              println("输入的图书ID无效")

          }

        case "2" => println("查询借阅图书")

//

        val borrowRecords=BookService.queryBorrwRecords(user.username)

        if(borrowRecords.isEmpty){

          println("没有借阅记录")

        }else{

          println("查询结果,一共接了几本,换了?本,?本为归还")

          for (record <- borrowRecords){

            println(record)

            val returnDate=record.returnDate.getOrElse("未归还")

            println(s"借阅日期:${record.borrowDate}.归还日期:$returnDate")

          }

        }

        case "3"=>

          try {

            val id = readLine("请输入要归还的图书的ID:").toInt

            if(BookService.returnBook(user.username, id)){

              println("归还图书成功")

            }else{

              println("归还图书失败")

            }

          } catch {

            case e: Exception =>

              println(e)

              println("输入的图书ID无效")

          }

        case "4" => running = false

        case _ => println("无效的选择")

      }

    }

  }

 

  def showMenu(): Unit = {

    showVisitorMenu()

  }

}

标签:case,val,scala,ui,user,软件包,println,readLine,图书
From: https://blog.csdn.net/2301_81664126/article/details/144870676

相关文章

  • Scala语言的函数实现
    Scala语言中的函数实现:优雅与高效并存的艺术在编程的世界里,函数是构建软件的基本单元之一,它不仅体现了代码的逻辑和结构,更是程序设计思想的具体体现。Scala,作为一种融合了面向对象和函数式编程特性的现代编程语言,其对函数的支持尤为丰富和强大。本文将深入探讨Scala语言中函数......
  • 一键安装ComfyUI!Mac与Windows都能轻松搞定
    如果你玩过AI绘图工具,应该听说过ComfyUI。它可以实现文生图、图生图、局部重绘、扩图、2D转3D,甚至是电商模特试衣这些功能,而且全都靠工作流免费搞定。问题是,之前的安装过程,尤其是对Mac用户来说,简直就是灾难。不会代码的直接劝退,懂代码的也得面对一堆报错。好消息是,现在C......
  • AIGC绘画: ComfyUI安装及环境配置
    ComfyUI简介ComfyUI是一种新型的StableDiffusion用户界面,因其独树一帜的“节点式”界面,逐渐成为了AI绘画领域进阶玩家的得力武器。搭配各式各样的自定义节点与功能强大的工作流,它得以用更低的配置实现许多在WebUI等常规界面里无法做到的复杂生成任务,并为基于StableDiffus......
  • uniapp(Hbuilderx)
    目录微信开发者工具下载新建项目运行微信开发者工具下载新建项目注意点如果要打包安卓,需要勾上:运行微信小程序1:找到.exe路径,粘贴进去2:打开微信小程序“服务端口”......
  • dskquoui.dll未被指定在Windows运行,代码0xc0000020或0xc000012f解决办法
    在大部分情况下出现我们运行或安装软件,游戏出现提示丢失某些DLL文件或OCX文件的原因可能是原始安装包文件不完整造成,原因可能是某些系统防护软件将重要的DLL文件识别为可疑,阻止并放入了隔离单里,还有一些常见的DLL文件缺少是因为系统没有安装齐全的微软运行库,还有部分情况是因为......
  • 「Mac畅玩鸿蒙与硬件52」UI互动应用篇29 - 模拟火车票查询系统
    本篇教程将实现一个模拟火车票查询系统,通过输入条件筛选车次信息,并展示动态筛选结果,学习事件处理、状态管理和界面展示的综合开发技巧。关键词条件筛选动态数据展示状态管理UI交互查询系统一、功能说明模拟火车票查询系统包含以下功能:用户输入查询条件:支持输入出发......
  • 弱密码与BurpSuite爆破
    1、弱口令2、弱口令的分类常见的数据库密码:rootroot123、123456tomcatjboss3、暴力破解用暴力方式进行破解后台系统登录界面爆破SQL注入万能密码xss未授权访问扫子域名js文件4、Burpsuite的使用和用bp爆破密码设置https代理插件导入证书成功bp......
  • 【comfyui教程】新年到了,来用comfyui做一张梦幻卡通风格的头像吧!
    前言ComfyUI工作流:轻松打造梦幻油画风格形象在AI绘画领域,ComfyUI已经成为了许多创作者的得力助手。今天要介绍的这一工作流专为喜欢梦幻油画风格的用户设计,让每个人都能快速生成属于自己的艺术形象。所有的AI设计工具,安装包、模型和插件,都已经整理好了,......
  • ComfyUI | 5分钟部署最新Flux大模型
    前言Midjourney和StableDiffusion都是目前流行的AI图像生成工具,它们能够根据文本描述生成高质量的图像。都是基于深度学习技术的文本到图像生成模型,但它们各自基于不同的大模型。但最近推出了一款比前两者更强大,生成图像更加逼真,在细节上更符合现实世界的模型,就是FL......
  • 学生成绩管理系统源码分享(SpringBoot+Layui+Thymeleaf),附安装教程和运行说明-幽络源
    源码概述这是一套基于SpringBoot+Layui+Thymeleaf开发的学生成绩管理系统源码,功能简单易用,非常适合初学者学习。通过此项目可以学习到:Layui的使用方法;Thymeleaf模板引擎的基本操作;CRUD(增删改查)的实现;两种Echarts数据可视化图表:饼图和柱状图。系统运行环境Java版本:1.8编译......