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

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()

}

}

大数据

相关推荐
独孤九剑打醒他4 分钟前
#原创声明 #拒绝白嫖 #技术立场 #创作者保护
笔记
avocado_green10 分钟前
【考驾照】科目一备考笔记(个人手工整理,非AI生成)
笔记
雾岛听蓝1 小时前
Qt操作指南:状态栏、浮动窗口与对话框使用
开发语言·经验分享·笔记·qt
APIshop1 小时前
小红书笔记视频详情接口深度解析:smallredbook.item_get_video_pro
数据库·笔记·音视频
y = xⁿ1 小时前
MySQL学习笔记:乐观锁VS悲观锁/八股总结
笔记·学习·mysql
d111111111d1 小时前
STM32-UART抽象层封装
笔记·stm32·单片机·嵌入式硬件·学习
chushiyunen1 小时前
notion(模块化数字工作台)笔记
笔记·notion
三品吉他手会点灯2 小时前
C语言学习笔记 - 12.C语言简介 - 一元二次方程详解
c语言·笔记·学习
Cathy Bryant4 小时前
微分几何:度规(度量)metric
笔记·线性代数·矩阵·高等数学·物理
fengxin_rou5 小时前
JVM 核心笔记:对象创建、生命周期与类加载器详解
java·jvm·笔记