Scala实现登录商品界面,指定退货商品,指定退货数量,在浏览商品时库存有增加2.完善商品出库操作 ,判断库存是否足够,假如不够就剩余库存的商品全部卖出,完善退出登录逻辑,增加修改密码

本文主要是介绍Scala实现登录商品界面,指定退货商品,指定退货数量,在浏览商品时库存有增加2.完善商品出库操作 ,判断库存是否足够,假如不够就剩余库存的商品全部卖出,完善退出登录逻辑,增加修改密码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

定义一个case class类,用来表示商品信息
case class Product(pName: String, pPrice: Float, pQuantity: Int)

显示管理员登陆界面函数

 def showLogin() = {// 管理员登录界面println("***********************************")println("*                                 *")println("*         CMS商品管理系统                                       *")println("*                                 *")println("* 请选择操作(输入操作对应的数字):                            *")println("* 1. 管理员登录                                                                   *")println("* 0. 退出系统                                                                       *")println("*                                 *")println("***********************************")}

显示管理员操作界面函数

def showOperation(username: String) = {println("***********************************")println("*                                 *")println(s"*       欢迎您,$username! ^_^         *")println("*                                 *")println("* 请选择操作(输入操作对应的数字):                            *")println("* 1. 浏览商品信息                                                               *")println("* 2. 商品入库操作                                                               *")println("* 3. 商品出库操作                                                               *")println("* 4. 商品退货操作                                                               *")println("* 5. 商品下架                                                                      *")println("* 6. 退出登录                                                                       *")println("* 7. 修改用户密码                                                                       *")println("* 0. 退出系统                                                                       *")println("*                                 *")println("***********************************")}

浏览商品信息

def showProducts(products: List[Product]) = {if (products.isEmpty) {println("目前没有库存商品。")} else {products.foreach(println)}}

商品入库操作函数

 def addProduct(products: List[Product]) = {val pName = readLine("入库商品名称:")val pPrice = readLine("入库商品单价:").toFloatval pQuantity = readLine("入库商品数量:").toInt// 构造一个商品实体val product = Product(pName, pPrice, pQuantity)// 将该商品加入到集合中(入库操作)products.:+(product)}

商品出库操作函数

def subProduct(products: List[Product]) = {val cpName = readLine("出库商品名称:")val cpQuantity = readLine("出库商品数量:").toIntproducts.map {//          篮球,奶,手机case Product(pName, pPrice, pQuantity) if pName == cpName && pQuantity > cpQuantity => Product(pName, pPrice, pQuantity - cpQuantity)//若出库数量小于库存则 减去出库数量case Product(pName, pPrice, pQuantity) if pName == cpName && pQuantity <= cpQuantity => Product(pName, pPrice, pQuantity - pQuantity) //若出库数量大于等于库存则 库存全部出售case Product(pName, pPrice, pQuantity)                    => Product(pName, pPrice, pQuantity)/* // 使用模式匹配products.map {//          篮球,奶,手机case Product(pName, pPrice, pQuantity) if pName == cpName => Product(pName, pPrice, pQuantity - cpQuantity)case Product(pName, pPrice, pQuantity)                    => Product(pName, pPrice, pQuantity)*/}}

商品退货操作

def removeProduct(products: List[Product]) = {val tpName = readLine("退货商品名称:")val tpQuantity = readLine("退货商品数量:").toIntproducts.map {//          篮球,奶,手机case Product(pName, pPrice, pQuantity) if pName == tpName => Product(pName, pPrice, pQuantity + tpQuantity)   //判断要退货的名字是否符合输入名字 若true则增加对应数量tpQuantitycase Product(pName, pPrice, pQuantity)                    => Product(pName, pPrice, pQuantity)// 使用模式匹配/* products.filter {case Product(pName, _, _) if pName == tpName => falsecase Product(pName, _, _)                    => true*/}}

商品下架操作

 def deleteProduct(products:List[Product]) = {val tpName = readLine("下架商品名称:")// 使用模式匹配products.filter {case Product(pName, _, _) if pName == tpName => falsecase Product(pName, _, _)                    => true}}

判断新密码是否包含去大小写字母

def isSpecialCharacterTable(string: String): Boolean = {if (string.replaceAll("[\u4e00-\u9fa5]*[a-z]*[A-Z]*\\d*-*_*\\s*", "").length() == 0) {return false}else {return true}}

设置管理员账号和密码以及修改密码及选择的商品操作

def main(args: Array[String]) {// 内置管理员信息(账号和密码)val adminName = "admin"var adminPwd = "123456"// 定义一个列表,用来存储所有的商品信息var products: List[Product] = Nil // 初始为空// 任务1// 管理员登录界面showLogin()val op = readLine("\n请选择操作:")if (op == "1") {println("\n您选择管理员登录")// 任务2// 管理员登录操作var flag = true // 这是一个标志变量。true:继续输入账号和密码;false:结束登录过程while (flag) {val username = readLine("请输入账号:")val userpwd = readLine("请输入密码:")// 判断用户输入的账号和密码是否正确if (username == adminName && userpwd == adminPwd) {flag = false // 如果登录成功,则改变标志变量的值// 再定义一个控制管理员操作的标志变量var opFlag = truewhile (opFlag) {// 管理员操作界面showOperation(username)// 任务3// 选择操作选项val op2 = readLine("请选择您的操作(1-7):")// 使用简单模式匹配op2 match {case "1" =>println("您选择浏览商品信息。当前库存商品有:")showProducts(products)case "2" =>println("您选择商品入库操作。请按以下提示输入要入库的商品信息:")// 将该商品加入到集合中(入库操作)products = addProduct(products)case "3" =>println("您选择商品出库操作。请选择要出库的商品名称和数量:")// 出库操作products = subProduct(products)case "4" =>println("您选择商品退货操作。请选择要出库的商品名称和数量:")// 退货操作products = removeProduct(products)case "5" =>println("您选择商品下架操作。请选择要下架的商品名称和数量:")//退货操作products = deleteProduct(products)case "6" =>println("您选择注销登录")opFlag = falseflag = true//退出登录showLogin()case "7" =>println("您选择修改登陆密码。注意:(密码长度不少于8位,必须包含大小写字母和特殊符号。)")var newPwd: String = readLine("请输入修改后的密码:")var asdfasfd = truewhile (asdfasfd){println("所输入的密码不符合规则,请重新输入")newPwd = readLine("请输入新的密码:")val aaaaa :Boolean = isDigit(newPwd) & isSpecialCharacterTable(newPwd) & newPwd.length >= 8//println(aaaaa)if (aaaaa){asdfasfd = false}}adminPwd = newPwdprintln("密码更新成功!!!")println("新密码为:" + adminPwd)case "0" =>println("您选择退出CMS系统")System.exit(0)case _ =>println("您的选择不正确。请重新选择正确的操作(1-7)!\n")}}} else {println("账号或密码错误!请重新登录。\n")}}} else if (op == "0") {println("\n欢迎再次登录!")System.exit(0)} else {println("\n您选择的操作不正确!")}}
}

完整代码:

package com.scalaDemo
import sun.security.util.Password
import scala.io.StdIn.readLine
object cms5 {// 定义一个case class类,用来表示商品信息case class Product(pName: String, pPrice: Float, pQuantity: Int)// 显示管理员登录界面的函数def showLogin() = {// 管理员登录界面println("***********************************")println("*                                 *")println("*         CMS商品管理系统                                       *")println("*                                 *")println("* 请选择操作(输入操作对应的数字):                            *")println("* 1. 管理员登录                                                                   *")println("* 0. 退出系统                                                                       *")println("*                                 *")println("***********************************")}// 显示管理员操作界面的函数def showOperation(username: String) = {println("***********************************")println("*                                 *")println(s"*       欢迎您,$username! ^_^         *")println("*                                 *")println("* 请选择操作(输入操作对应的数字):                            *")println("* 1. 浏览商品信息                                                               *")println("* 2. 商品入库操作                                                               *")println("* 3. 商品出库操作                                                               *")println("* 4. 商品退货操作                                                               *")println("* 5. 商品下架                                                                      *")println("* 6. 退出登录                                                                       *")println("* 7. 修改用户密码                                                                       *")println("* 0. 退出系统                                                                       *")println("*                                 *")println("***********************************")}// 浏览商品信息函数def showProducts(products: List[Product]) = {if (products.isEmpty) {println("目前没有库存商品。")} else {products.foreach(println)}}// 商品入库操作函数def addProduct(products: List[Product]) = {val pName = readLine("入库商品名称:")val pPrice = readLine("入库商品单价:").toFloatval pQuantity = readLine("入库商品数量:").toInt// 构造一个商品实体val product = Product(pName, pPrice, pQuantity)// 将该商品加入到集合中(入库操作)products.:+(product)}// 商品出库操作函数def subProduct(products: List[Product]) = {val cpName = readLine("出库商品名称:")val cpQuantity = readLine("出库商品数量:").toIntproducts.map {//          篮球,奶,手机case Product(pName, pPrice, pQuantity) if pName == cpName && pQuantity > cpQuantity => Product(pName, pPrice, pQuantity - cpQuantity)//若出库数量小于库存则 减去出库数量case Product(pName, pPrice, pQuantity) if pName == cpName && pQuantity <= cpQuantity => Product(pName, pPrice, pQuantity - pQuantity) //若出库数量大于等于库存则 库存全部出售case Product(pName, pPrice, pQuantity)                    => Product(pName, pPrice, pQuantity)/* // 使用模式匹配products.map {//          篮球,奶,手机case Product(pName, pPrice, pQuantity) if pName == cpName => Product(pName, pPrice, pQuantity - cpQuantity)case Product(pName, pPrice, pQuantity)                    => Product(pName, pPrice, pQuantity)*/}}// 商品退货操作def removeProduct(products: List[Product]) = {val tpName = readLine("退货商品名称:")val tpQuantity = readLine("退货商品数量:").toIntproducts.map {//          篮球,奶,手机case Product(pName, pPrice, pQuantity) if pName == tpName => Product(pName, pPrice, pQuantity + tpQuantity)   //判断要退货的名字是否符合输入名字 若true则增加对应数量tpQuantitycase Product(pName, pPrice, pQuantity)                    => Product(pName, pPrice, pQuantity)// 使用模式匹配/* products.filter {case Product(pName, _, _) if pName == tpName => falsecase Product(pName, _, _)                    => true*/}}//  商品下架操作def deleteProduct(products:List[Product]) = {val tpName = readLine("下架商品名称:")// 使用模式匹配products.filter {case Product(pName, _, _) if pName == tpName => falsecase Product(pName, _, _)                    => true}}//判断新密码是否包含数字和大小写英文def isDigit(string: String): Boolean = {if (string.replaceAll("[\u4e00-\u9fa5]*\\d*-*_*\\s*", "").length() == 0) {false}else true}//判断新密码是否包含特殊字符def isSpecialCharacterTable(string: String): Boolean = {if (string.replaceAll("[\u4e00-\u9fa5]*[a-z]*[A-Z]*\\d*-*_*\\s*", "").length() == 0) {return false}else {return true}}def main(args: Array[String]) {// 内置管理员信息(账号和密码)val adminName = "admin"var adminPwd = "123456"// 定义一个列表,用来存储所有的商品信息var products: List[Product] = Nil // 初始为空// 任务1// 管理员登录界面showLogin()val op = readLine("\n请选择操作:")if (op == "1") {println("\n您选择管理员登录")// 任务2// 管理员登录操作var flag = true // 这是一个标志变量。true:继续输入账号和密码;false:结束登录过程while (flag) {val username = readLine("请输入账号:")val userpwd = readLine("请输入密码:")// 判断用户输入的账号和密码是否正确if (username == adminName && userpwd == adminPwd) {flag = false // 如果登录成功,则改变标志变量的值// 再定义一个控制管理员操作的标志变量var opFlag = truewhile (opFlag) {// 管理员操作界面showOperation(username)// 任务3// 选择操作选项val op2 = readLine("请选择您的操作(1-7):")// 使用简单模式匹配op2 match {case "1" =>println("您选择浏览商品信息。当前库存商品有:")showProducts(products)case "2" =>println("您选择商品入库操作。请按以下提示输入要入库的商品信息:")// 将该商品加入到集合中(入库操作)products = addProduct(products)case "3" =>println("您选择商品出库操作。请选择要出库的商品名称和数量:")// 出库操作products = subProduct(products)case "4" =>println("您选择商品退货操作。请选择要出库的商品名称和数量:")// 退货操作products = removeProduct(products)case "5" =>println("您选择商品下架操作。请选择要下架的商品名称和数量:")//退货操作products = deleteProduct(products)case "6" =>println("您选择注销登录")opFlag = falseflag = true//退出登录showLogin()case "7" =>println("您选择修改登陆密码。注意:(密码长度不少于8位,必须包含大小写字母和特殊符号。)")var newPwd: String = readLine("请输入修改后的密码:")var asdfasfd = truewhile (asdfasfd){println("所输入的密码不符合规则,请重新输入")newPwd = readLine("请输入新的密码:")val aaaaa :Boolean = isDigit(newPwd) & isSpecialCharacterTable(newPwd) & newPwd.length >= 8//println(aaaaa)if (aaaaa){asdfasfd = false}}adminPwd = newPwdprintln("密码更新成功!!!")println("新密码为:" + adminPwd)case "0" =>println("您选择退出CMS系统")System.exit(0)case _ =>println("您的选择不正确。请重新选择正确的操作(1-7)!\n")}}} else {println("账号或密码错误!请重新登录。\n")}}} else if (op == "0") {println("\n欢迎再次登录!")System.exit(0)} else {println("\n您选择的操作不正确!")}}
}

运行结果:

 

 

这篇关于Scala实现登录商品界面,指定退货商品,指定退货数量,在浏览商品时库存有增加2.完善商品出库操作 ,判断库存是否足够,假如不够就剩余库存的商品全部卖出,完善退出登录逻辑,增加修改密码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/239587

相关文章

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

MySQL8 密码强度评估与配置详解

《MySQL8密码强度评估与配置详解》MySQL8默认启用密码强度插件,实施MEDIUM策略(长度8、含数字/字母/特殊字符),支持动态调整与配置文件设置,推荐使用STRONG策略并定期更新密码以提... 目录一、mysql 8 密码强度评估机制1.核心插件:validate_password2.密码策略级

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

从基础到进阶详解Python条件判断的实用指南

《从基础到进阶详解Python条件判断的实用指南》本文将通过15个实战案例,带你大家掌握条件判断的核心技巧,并从基础语法到高级应用一网打尽,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录​引言:条件判断为何如此重要一、基础语法:三行代码构建决策系统二、多条件分支:elif的魔法三、

MySQL设置密码复杂度策略的完整步骤(附代码示例)

《MySQL设置密码复杂度策略的完整步骤(附代码示例)》MySQL密码策略还可能包括密码复杂度的检查,如是否要求密码包含大写字母、小写字母、数字和特殊字符等,:本文主要介绍MySQL设置密码复杂度... 目录前言1. 使用 validate_password 插件1.1 启用 validate_passwo

java -jar example.jar 产生的日志输出到指定文件的方法

《java-jarexample.jar产生的日志输出到指定文件的方法》这篇文章给大家介绍java-jarexample.jar产生的日志输出到指定文件的方法,本文给大家介绍的非常详细,对大家的... 目录怎么让 Java -jar example.jar 产生的日志输出到指定文件一、方法1:使用重定向1、

基于Python实现数字限制在指定范围内的五种方式

《基于Python实现数字限制在指定范围内的五种方式》在编程中,数字范围限制是常见需求,无论是游戏开发中的角色属性值、金融计算中的利率调整,还是传感器数据处理中的异常值过滤,都需要将数字控制在合理范围... 目录引言一、基础条件判断法二、数学运算巧解法三、装饰器模式法四、自定义类封装法五、NumPy数组处理