Java作业-控制台小商城(含源码)
程序员文章站
2022-04-25 09:58:19
...
前言
堂弟的作业,不会做,请教我,时间很短,我就写了一个demo。 用于小白学习用吧,加深对Java的应用和理解。没基础的可以试着自己先写一写。
需求(作业题目)
共包含个模块:
登录(Login)、
用户(User)、
VIP用户(继承自User )、
普通用户(继承自User )、
管理员(继承自User )、
购物模块(Shop)
- 登录模块:用于用户登录及权限选择(是VIP还是普通用户)
- 用户模块:共有属性(均设置为私有变量)及共有方法
- VIP用户:拥有购物、充值、注销账户、抽奖、修改密码等权限(其中部分方法为对父类方法的重写)
- 普通用户:拥有购物、注销账户、修改密码等权限(其中部分方法为对父类方法的重写)
- 管理员:拥有修改商品价格、增加商品、注销账户、修改密码等权限(其中部分方法为对父类方法的重写)
- 购物模块:用于用户购物选择
效果图
因为没有连接数据库,所以不是持久化存储,程序关闭即数据丢失
程序写完没有详细测试,估计会有一些校验错误
项目环境
jdk1.7以上
开发工具(IDE)
idea/eclipse
项目结构
- 用户
package cn.jason.login;
/**
* 用户对象
* Created by Administrator on 2019/3/30 0030.
* 公共功能:
* 1.登录
* 2.注销
* 3.修改密码
*
*
* 约定:
* 0 -- 普通用户
* 1 -- vip 用户
* 2 -- 管理员用户
*/
public class User {
/**
* 无参构造
*/
public User() {
}
/**
* 登录
* @param username 用户名
* @param password 密码
* @return
*/
public boolean login(String username, String password) {
// nothing to do !
// 用作父类, 什么都不做
return false;
}
/**
* 注销
* @param username 用户名
* @param password 密码
* @return
*/
public boolean cancel(String username , String password) {
// nothing to do !
return false;
}
/**
* 修改密码
* @param username 用户名
* @param password 密码
* @return
*/
public boolean update(String username , String password) {
// nothing to do !
return false;
}
}
- Vip用户
package cn.jason.login;
import cn.jason.util.FileReaderUtil;
/**
* vip 用户
* Created by Jason on 2019/3/30 0030.
*/
public class VipUser extends User{
// 幸运数字 1~6
private static final Integer LUCK_NUMBER_ONE = 1;
private static final Integer LUCK_NUMBER_TWO = 2;
private static final Integer LUCK_NUMBER_THREE = 3;
private static final Integer LUCK_NUMBER_FOUR = 4;
private static final Integer LUCK_NUMBER_FVIE = 5;
private static final Integer LUCK_NUMBER_SIX = 6;
// 状态可用
private static final String STATUS_ABLE = "able";
// 状态不可用
private static final String STATUS_DISABLE = "disable";
/**
* 购买商品操作
* @param gname 商品名称
* @return
*/
public boolean buy(String gname,Integer num) {
String name = FileReaderUtil.getContent("goods.name"); // 商品名称
String priceStr = FileReaderUtil.getContent("goods.price"); // 商品单价
// 转型
// 单价
int price = Integer.valueOf(priceStr);
// 账户余额
int money = Integer.valueOf(FileReaderUtil.getContent("vip.account.money"));
if (gname.equals(name)) {
if (money<(price*num)) {
System.out.println("余额不足, 请充值!");
}else {
System.out.println("恭喜您,购买成功!");
int coins = money-(price*num);
Integer gnum = Integer.valueOf(FileReaderUtil.getContent("goods.num")); // 商品名称
gnum = gnum - num;
// 减少商品数量
FileReaderUtil.updateContent("goods.num",gnum+"");
// 更新余额
return FileReaderUtil.updateContent("vip.account.money",coins+"");
}
}else
System.out.println("对不起,没有该商品!");
return false;
}
/**
* 充值
* @param password 密码
* @param count 充值多少?
* @return
*/
public boolean recharge(String password , Integer count) {
String pass = FileReaderUtil.getContent("vip.account.pass");
if (pass.equals(password)) {
// 获取余额
String money = FileReaderUtil.getContent("vip.account.money");
System.out.println("您原来的余额为:"+money);
// 充值
count = Integer.valueOf(money)+count;
System.out.println("您现在的余额为:"+count);
return FileReaderUtil.updateContent("vip.account.money",count+"");
}else
System.out.println("密码不正确, 无法充值!");
return false;
}
/**
* 抽奖
* @param num 输入的幸运数字
* @return
*/
public void lotteryDraw(Integer num) {
if (num == LUCK_NUMBER_ONE)
System.out.println("很遗憾,您没有中奖-。-!");
else if (num == LUCK_NUMBER_TWO)
System.out.println("谢谢惠顾");
else if(num == LUCK_NUMBER_THREE)
System.out.println("谢谢惠顾");
else if (num == LUCK_NUMBER_FOUR)
System.out.println("谢谢惠顾");
else if(num == LUCK_NUMBER_FVIE)
System.out.println("谢谢惠顾");
else if (num == LUCK_NUMBER_SIX)
System.out.println("恭喜您获得一等奖:iPhone xs max 一台");
else
System.out.println("");
}
// 重写父类方法 - 登录
@Override
public boolean login(String username, String password) {
if (username!=null&&password!=null) {
String name = FileReaderUtil.getContent("vip.account");
String pass = FileReaderUtil.getContent("vip.account.pass");
// 校验账号是否被注销
String status = FileReaderUtil.getContent("vip.account.status");
if (!status.equals(STATUS_ABLE)) {
System.out.println("很抱歉,您的账号已被注销,无法进行登陆!");
return false;
}
// 验证登陆
if (username.equals(name)&&password.equals(pass)) {
return true;
}else
System.out.println("用户名或者密码不正确");
}else
System.out.println("用户名,密码不能为空!");
return false;
}
// 重写父类方法 - 注销
@Override
public boolean cancel(String username, String password) {
System.out.println("尊敬的VIP用户,正在为您注销账户!");
// 校验账号是否被注销
String status = FileReaderUtil.getContent("vip.account.status");
if (!status.equals(STATUS_ABLE)) {
System.out.println("您的账号已被注销,请勿重复操作!");
return false;
}
// 注销
String name = FileReaderUtil.getContent("vip.account");
String pass = FileReaderUtil.getContent("vip.account.pass");
if (username.equals(name)&&password.equals(pass)) {
String statusKey = "vip.account.status";
return FileReaderUtil.updateContent(statusKey,STATUS_DISABLE);
}else
System.out.println("账户密码不对,不能修改!");
return false;
}
// 重写父类方法 - 修改密码
@Override
public boolean update(String username, String password) {
System.out.println("【尊敬的vip, 正在为您修改密码!】");
// 校验
if (username == null||password == null) {
System.out.println("用户名或者密码不能为空!");
return false;
}
// 校验账号是否被注销
String status = FileReaderUtil.getContent("vip.account.status");
if (!status.equals(STATUS_ABLE)) {
System.out.println("很抱歉,您的账号已被注销,无法进行修改!");
return false;
}
// 读取账号
String name = FileReaderUtil.getContent("vip.account");
// 匹配账号
if (username.equals(name)) {
// 获取 vip密码对应的键
String passKey = "vip.account.pass";
// 开始修改密码 成功返回true
return FileReaderUtil.updateContent(passKey,password);
}else{
// 匹配账号失败
System.out.println("您输入的账户名称错误, 修改密码失败!");
return false;
}
}
}
- 管理员
package cn.jason.login;
import cn.jason.util.FileReaderUtil;
/**
* 管理员用户
* Created by Jason on 2019/3/31 0031.
*/
public class AdminUser extends User{
// 状态可用
private static final String STATUS_ABLE = "able";
// 状态不可用
private static final String STATUS_DISABLE = "disable";
/**
* 增加商品
* @param gname 商品名称
* @param number 商品数量
* @return
*/
public boolean addGoods(String gname,Integer number) {
String goodsName = FileReaderUtil.getContent("goods.name");
if (gname.equals(goodsName)) {
Integer goodsNum = Integer.valueOf(FileReaderUtil.getContent("goods.num"));
number = goodsNum+number;
FileReaderUtil.updateContent("goods.num",number+"");
System.out.println("剩余商品数量为:"+number);
return true;
}else
System.out.println("没有该类商品,请选择正确的商品名称!");
return false;
}
/**
* 修改商品名称
* @param gname 商品名称
* @param money 商品单价
* @return
*/
public boolean updateGoodsPrice(String gname, Integer money) {
String goodsName = FileReaderUtil.getContent("goods.name");
if (gname.equals(goodsName)) {
Integer goodsPrice = Integer.valueOf(FileReaderUtil.getContent("goods.price"));
money = goodsPrice+money;
FileReaderUtil.updateContent("goods.price",money+"");
System.out.println("商品单价为:"+money);
return true;
}else
System.out.println("没有该类商品,请选择正确的商品名称!");
return false;
}
// 修改商品
// 重写父类方法 - 登录
@Override
public boolean login(String username, String password) {
if (username!=null&&password!=null) {
String name = FileReaderUtil.getContent("admin.account");
String pass = FileReaderUtil.getContent("admin.account.pass");
// 校验账号是否被注销
String status = FileReaderUtil.getContent("admin.account.status");
if (!status.equals(STATUS_ABLE)) {
System.out.println("很抱歉,您的账号已被注销,无法进行登陆!");
return false;
}
// 验证登陆
if (username.equals(name)&&password.equals(pass)) {
return true;
}else
System.out.println("用户名或者密码不正确");
}else
System.out.println("用户名,密码不能为空!");
return false;
}
// 重写父类方法 - 注销
@Override
public boolean cancel(String username, String password) {
System.out.println("尊敬的管理员用户,正在为您注销账户!");
// 校验账号是否被注销
String status = FileReaderUtil.getContent("admin.account.status");
if (!status.equals(STATUS_ABLE)) {
System.out.println("您的账号已被注销,请勿重复操作!");
return false;
}
// 注销
String name = FileReaderUtil.getContent("admin.account");
String pass = FileReaderUtil.getContent("admin.account.pass");
if (username.equals(name)&&password.equals(pass)) {
String statusKey = "admin.account.status";
return FileReaderUtil.updateContent(statusKey,STATUS_DISABLE);
}else
System.out.println("账户密码不对,不能修改!");
return false;
}
// 重写父类方法 - 修改密码
@Override
public boolean update(String username, String password) {
System.out.println("【尊敬的管理员用户, 正在为您修改密码!】");
// 校验
if (username == null||password == null) {
System.out.println("用户名或者密码不能为空!");
return false;
}
// 校验账号是否被注销
String status = FileReaderUtil.getContent("admin.account.status");
if (!status.equals(STATUS_ABLE)) {
System.out.println("很抱歉,您的账号已被注销,无法进行修改!");
return false;
}
// 读取账号
String name = FileReaderUtil.getContent("admin.account");
// 匹配账号
if (username.equals(name)) {
// 获取 vip密码对应的键
String passKey = "admin.account.pass";
// 开始修改密码 成功返回true
return FileReaderUtil.updateContent(passKey,password);
}else{
// 匹配账号失败
System.out.println("您输入的账户名称错误, 修改密码失败!");
return false;
}
}
}
代码下载:
百度云下载点这里
提取码:7s2y
上一篇: 妙招教你用好外置式刻录机
推荐阅读