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

相关文章

Java判断多个时间段是否重合的方法小结

《Java判断多个时间段是否重合的方法小结》这篇文章主要为大家详细介绍了Java中判断多个时间段是否重合的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录判断多个时间段是否有间隔判断时间段集合是否与某时间段重合判断多个时间段是否有间隔实体类内容public class D

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

MySQL修改密码的四种实现方式

《MySQL修改密码的四种实现方式》文章主要介绍了如何使用命令行工具修改MySQL密码,包括使用`setpassword`命令和`mysqladmin`命令,此外,还详细描述了忘记密码时的处理方法,包... 目录mysql修改密码四种方式一、set password命令二、使用mysqladmin三、修改u

使用Python在Excel中插入、修改、提取和删除超链接

《使用Python在Excel中插入、修改、提取和删除超链接》超链接是Excel中的常用功能,通过点击超链接可以快速跳转到外部网站、本地文件或工作表中的特定单元格,有效提升数据访问的效率和用户体验,这... 目录引言使用工具python在Excel中插入超链接Python修改Excel中的超链接Python

Oracle数据库如何切换登录用户(system和sys)

《Oracle数据库如何切换登录用户(system和sys)》文章介绍了如何使用SQL*Plus工具登录Oracle数据库的system用户,包括打开登录入口、输入用户名和口令、以及切换到sys用户的... 目录打开登录入口登录system用户总结打开登录入口win+R打开运行对话框,输php入:sqlp

电脑密码怎么设置? 一文读懂电脑密码的详细指南

《电脑密码怎么设置?一文读懂电脑密码的详细指南》为了保护个人隐私和数据安全,设置电脑密码显得尤为重要,那么,如何在电脑上设置密码呢?详细请看下文介绍... 设置电脑密码是保护个人隐私、数据安全以及系统安全的重要措施,下面以Windows 11系统为例,跟大家分享一下设置电脑密码的具体办php法。Windo

Python判断for循环最后一次的6种方法

《Python判断for循环最后一次的6种方法》在Python中,通常我们不会直接判断for循环是否正在执行最后一次迭代,因为Python的for循环是基于可迭代对象的,它不知道也不关心迭代的内部状态... 目录1.使用enuhttp://www.chinasem.cnmerate()和len()来判断for

使用Python合并 Excel单元格指定行列或单元格范围

《使用Python合并Excel单元格指定行列或单元格范围》合并Excel单元格是Excel数据处理和表格设计中的一项常用操作,本文将介绍如何通过Python合并Excel中的指定行列或单... 目录python Excel库安装Python合并Excel 中的指定行Python合并Excel 中的指定列P

数据库oracle用户密码过期查询及解决方案

《数据库oracle用户密码过期查询及解决方案》:本文主要介绍如何处理ORACLE数据库用户密码过期和修改密码期限的问题,包括创建用户、赋予权限、修改密码、解锁用户和设置密码期限,文中通过代码介绍... 目录前言一、创建用户、赋予权限、修改密码、解锁用户和设置期限二、查询用户密码期限和过期后的修改1.查询用

Python将大量遥感数据的值缩放指定倍数的方法(推荐)

《Python将大量遥感数据的值缩放指定倍数的方法(推荐)》本文介绍基于Python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处理,并将所得处理后数据保存为新的遥感影像... 本文介绍基于python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处