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

相关文章

利用c++判断水仙花数并输出示例代码

《利用c++判断水仙花数并输出示例代码》水仙花数是指一个三位数,其各位数字的立方和恰好等于该数本身,:本文主要介绍利用c++判断水仙花数并输出的相关资料,文中通过代码介绍的非常详细,需要的朋友可以... 以下是使用C++实现的相同逻辑代码:#include <IOStream>#include <vec

MySQL底层文件的查看和修改方法

《MySQL底层文件的查看和修改方法》MySQL底层文件分为文本类(可安全查看/修改)和二进制类(禁止手动操作),以下按「查看方法、修改方法、风险管控三部分详细说明,所有操作均以Linux环境为例,需... 目录引言一、mysql 底层文件的查看方法1. 先定位核心文件路径(基础前提)2. 文本类文件(可直

MyBatis-Plus逻辑删除实现过程

《MyBatis-Plus逻辑删除实现过程》本文介绍了MyBatis-Plus如何实现逻辑删除功能,包括自动填充字段、配置与实现步骤、常见应用场景,并展示了如何使用remove方法进行逻辑删除,逻辑删... 目录1. 逻辑删除的必要性编程1.1 逻辑删除的定义1.2 逻辑删php除的优点1.3 适用场景2.

Spring Boot基于 JWT 优化 Spring Security 无状态登录实战指南

《SpringBoot基于JWT优化SpringSecurity无状态登录实战指南》本文介绍如何使用JWT优化SpringSecurity实现无状态登录,提高接口安全性,并通过实际操作步骤... 目录Spring Boot 实战:基于 JWT 优化 Spring Security 无状态登录一、先搞懂:为什

在C#中调用Windows防火墙界面的常见方式

《在C#中调用Windows防火墙界面的常见方式》在C#中调用Windows防火墙界面(基础设置或高级安全设置),可以使用进程启动(Process.Start)或Win32API来实现,所以本文给大家... 目录引言1. 直接启动防火墙界面(1) 打开基本防火墙设置(firewall.cpl)(2) 打开高

java创建xls文件放到指定文件夹中实现方式

《java创建xls文件放到指定文件夹中实现方式》本文介绍了如何在Java中使用ApachePOI库创建和操作Excel文件,重点是如何创建一个XLS文件并将其放置到指定文件夹中... 目录Java创建XLS文件并放到指定文件夹中步骤一:引入依赖步骤二:创建XLS文件总结Java创建XLS文件并放到指定文件

kingbase修改权限实现方式

《kingbase修改权限实现方式》该文章详细介绍了如何在数据库中创建用户并赋予其相应的权限,包括创建用户、回收默认权限、创建数据库、赋权数据库权限、创建只读用户以及回收权限等步骤... 目录前言使用步骤总结前言创建用户后对数据库对象的读写权限进行修改使用步骤1、创建用户create user cs

linux实现对.jar文件的配置文件进行修改

《linux实现对.jar文件的配置文件进行修改》文章讲述了如何使用Linux系统修改.jar文件的配置文件,包括进入文件夹、编辑文件、保存并退出编辑器,以及重新启动项目... 目录linux对.jar文件的配置文件进行修改第一步第二步 第三步第四步总结linux对.jar文件的配置文件进行修改第一步进

在DataGrip中操作MySQL完整流程步骤(从登录到数据查询)

《在DataGrip中操作MySQL完整流程步骤(从登录到数据查询)》DataGrip是JetBrains公司出品的一款现代化数据库管理工具,支持多种数据库系统,包括MySQL,:本文主要介绍在D... 目录前言一、登录 mysql 服务器1.1 打开 DataGrip 并添加数据源1.2 配置 MySQL

Springboot中JWT登录校验及其拦截器实现方法

《Springboot中JWT登录校验及其拦截器实现方法》:本文主要介绍Springboot中JWT登录校验及其拦截器实现方法的相关资料,包括引入Maven坐标、获取Token、JWT拦截器的实现... 目录前言一、JWT是什么?二、实现步骤1.引入Maven坐标2.获取Token3.JWT拦截器的实现4.