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

相关文章

springboot security验证码的登录实例

《springbootsecurity验证码的登录实例》:本文主要介绍springbootsecurity验证码的登录实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录前言代码示例引入依赖定义验证码生成器定义获取验证码及认证接口测试获取验证码登录总结前言在spring

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

使用Python实现获取网页指定内容

《使用Python实现获取网页指定内容》在当今互联网时代,网页数据抓取是一项非常重要的技能,本文将带你从零开始学习如何使用Python获取网页中的指定内容,希望对大家有所帮助... 目录引言1. 网页抓取的基本概念2. python中的网页抓取库3. 安装必要的库4. 发送HTTP请求并获取网页内容5. 解

Linux修改pip和conda缓存路径的几种方法

《Linux修改pip和conda缓存路径的几种方法》在Python生态中,pip和conda是两种常见的软件包管理工具,它们在安装、更新和卸载软件包时都会使用缓存来提高效率,适当地修改它们的缓存路径... 目录一、pip 和 conda 的缓存机制1. pip 的缓存机制默认缓存路径2. conda 的缓

Linux修改pip临时目录方法的详解

《Linux修改pip临时目录方法的详解》在Linux系统中,pip在安装Python包时会使用临时目录(TMPDIR),但默认的临时目录可能会受到存储空间不足或权限问题的影响,所以本文将详细介绍如何... 目录引言一、为什么要修改 pip 的临时目录?1. 解决存储空间不足的问题2. 解决权限问题3. 提

SpringBoot项目使用MDC给日志增加唯一标识的实现步骤

《SpringBoot项目使用MDC给日志增加唯一标识的实现步骤》本文介绍了如何在SpringBoot项目中使用MDC(MappedDiagnosticContext)为日志增加唯一标识,以便于日... 目录【Java】SpringBoot项目使用MDC给日志增加唯一标识,方便日志追踪1.日志效果2.实现步

Redis中如何实现商品秒杀

《Redis中如何实现商品秒杀》:本文主要介绍Redis中如何实现商品秒杀问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录技术栈功能实现步骤步骤一:准备商品库存数据步骤二:实现商品秒杀步骤三:优化Redis性能技术讲解Redis的List类型Redis的Set

Python实现合并与拆分多个PDF文档中的指定页

《Python实现合并与拆分多个PDF文档中的指定页》这篇文章主要为大家详细介绍了如何使用Python实现将多个PDF文档中的指定页合并生成新的PDF以及拆分PDF,感兴趣的小伙伴可以参考一下... 安装所需要的库pip install PyPDF2 -i https://pypi.tuna.tsingh

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

SpringSecurity 认证、注销、权限控制功能(注销、记住密码、自定义登入页)

《SpringSecurity认证、注销、权限控制功能(注销、记住密码、自定义登入页)》SpringSecurity是一个强大的Java框架,用于保护应用程序的安全性,它提供了一套全面的安全解决方案... 目录简介认识Spring Security“认证”(Authentication)“授权” (Auth