本文主要是介绍JAVA超市管理系统,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
import java.util.HashMap;
import java.util.Map;
// 用户数据访问类(提供对用户数据的CRUD操作:增删改查)
public class UserDao {
// 全局变量:存储所有User的集合
private Map<Integer,User> userMap = new HashMap<>();
// 增
public boolean addUser(User user){
if(!userMap.containsKey(user.getUserNo())){
userMap.put(user.getUserNo(),user);
return true;
}
return false;
}
// 删
public boolean deleteUser(int userNo){
if(userMap.containsKey(userNo)){
userMap.remove(userNo);
return true;
}
return false;
}
// 改
public boolean updateUser(User user){
if(userMap.containsKey(user.getUserNo())){
userMap.put(user.getUserNo(),user);
return true;
}
return false;
}
// 查
public User selectUser(int userNo,String userPwd){
if(userMap.containsKey(userNo)){
User user = userMap.get(userNo);
if(userPwd.equalsIgnoreCase(user.getUserPwd())){
return user;
}
}
return null;
}
// 根据账户查询是否存在指定用户
public boolean checkUserNoExists(int userNo){
return userMap.containsKey(userNo);
}
}
// 超市会员类
public class User {
private String userName; // 用户名称
private Integer userNo; // 用户账号(用于登录的唯一标识)
private String userPwd; // 用户密码
private Integer score; // 用户积分
private Date createDate; // 开户日期(yyyy-MM-dd)
public User() {
}
public User(String userName, Integer userNo, String userPwd, Integer score, Date createDate) {
this.userName = userName;
this.userNo = userNo;
this.userPwd = userPwd;
this.score = score;
this.createDate = createDate;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public Integer getUserNo() {
return userNo;
}
public void setUserNo(Integer userNo) {
this.userNo = userNo;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
public Integer getScore() {
return score;
}
public void setScore(Integer score) {
this.score = score;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
}
// 日期格式化工具类
public class DateFormatUtils {
// 将日期对象格式化为yyyy-MM-dd字符格式
public static String dateToString(Date date,String pattern){
if(pattern == null) {
pattern = "yyyy-MM-dd";
}
return new SimpleDateFormat(pattern).format(date);
}
}
// 用户业务功能相关实现类
public class UserService {
// service依赖dao提供的数据操作能力来完成自己的业务处理能力
private UserDao userDao = new UserDao();
private Scanner input = new Scanner(System.in);
// 管理系统启动方法
public void start(){
System.out.println("*********欢迎使用超市会员管理系统***********");
do {
printMenu();
int choiceId = input.nextInt();
switch (choiceId){
case 1:
addScore();
break;
case 2:
useScore();
break;
case 3:
changePwd();
break;
case 4:
showScore();
break;
case 5:
addUser();
break;
case 6:
dropUser();
break;
default:
System.out.println("谢谢使用!");
return;
}
System.out.println();
}while (true);
}
// 打印菜单的方法
private void printMenu(){
System.out.println("***************");
System.out.println("*1.积分累计 *");
System.out.println("*2.积分兑换 *");
System.out.println("*3.修改密码 *");
System.out.println("*4.查询剩余积分 *");
System.out.println("*5.开卡 *");
System.out.println("*6.销卡 *");
System.out.println("*7.退出 *");
System.out.println("****************");
System.out.print("请选择:");
}
// 用于用户身份的检查(登录)
private User findUser(){
System.out.print("请输入账户:");
int userNo = input.nextInt();
System.out.print("请输入密码:");
String userPwd = input.next();
// 调用Dao提供的“查”方法
User user = userDao.selectUser(userNo,userPwd);
if (user == null) {
System.out.println("用户账户或密码错误!");
}
return user;
}
// 积分累计
private void addScore(){
// 先登录检查
User user = findUser();
if(user != null) {
System.out.print("请输入本次消费金额(1元累计1积分)");
double pay = input.nextDouble();
// 对user积分属性进行修改
user.setScore(user.getScore()+(int)pay);
// 修改用户信息
userDao.updateUser(user);
System.out.println("用户积分累计成功!当前积分:" + user.getScore());
}
}
// 积分兑换
private void useScore(){
// 先登录检查
User user = findUser();
if(user != null) {
System.out.print("请输入本次要兑换的积分(100积分兑换0.1元,不足100积分不能兑换)");
int payScore = input.nextInt();
// 验证积分是否充足
if(user.getScore() >= payScore){
// 对user积分属性进行修改
user.setScore(user.getScore() - payScore);
// 修改用户信息
userDao.updateUser(user);
System.out.println("用户积分兑换成功!本次兑换支付金额:"
+(payScore * 0.001)+"元。当前剩余积分:" + user.getScore());
} else {
System.out.println("您没有足够的积分来兑换!现有积分:" + user.getScore());
}
}
}
// 查询剩余积分
private void showScore(){
// 先登录检查
User user = findUser();
if(user != null) {
System.out.println("用户名称:" + user.getUserName());
System.out.println("用户账户:" + user.getUserNo());
System.out.println("剩余积分:" + user.getScore());
System.out.println("开卡日期:" + DateFormatUtils.dateToString(user.getCreateDate(),null));
}
}
// 修改密码
private void changePwd(){
// 先登录检查
User user = findUser();
if(user != null) {
System.out.print("请输入新密码:");
String newPwd = input.next();
System.out.print("请再次输入新密码:");
String rePwd = input.next();
if(rePwd.equals(newPwd)){
// 更新用户
user.setUserPwd(newPwd);
// 调用DAO更新用户
userDao.updateUser(user);
System.out.println("密码修改成功!");
} else {
System.out.println("两次输入密码不一致,修改失败!");
}
}
}
// 开卡
private void addUser(){
User user = new User();
user.setCreateDate(new Date()); // 开卡日期
user.setScore(100); // 开卡即送100积分
System.out.print("请输入用户名:");
user.setUserName(input.next());
System.out.print("请输入开卡密码:"); // 参考修改密码进行二次密码确认,此处省略...
user.setUserPwd(input.next());
// 随机生成用户账户(2种方式:1,使用随机数 2,使用日期时间)
// 检查生成的账户是否存在
while(true) {
Random random = new Random();
int randomNo = random.nextInt(100000000);
if(!userDao.checkUserNoExists(randomNo)){
// 设置用户的账户(唯一性)
user.setUserNo(randomNo);
break;
}
}
// 方式2:通过日期格式化+随机数生成唯一卡号
// String randomDateNo = DateFormatUtils.dateToString(new Date(),"HHmmss");
// randomDateNo+= new Random().nextInt(10000);
// int randomNum = Integer.valueOf(randomDateNo); // 整数卡号
// 添加用户
userDao.addUser(user);
System.out.println("用户开户成功!您的卡号:"+user.getUserNo()+",请牢记!");
}
// 销卡
private void dropUser(){
// 先登录检查
User user = findUser();
if(user != null) {
userDao.deleteUser(user.getUserNo());
System.out.println("用户销户成功!");
}
}
}
/**
测试类
*/
public class Main {
public static void main(String[] args) {
// 启动管理系统
new UserService().start();
}
}
这篇关于JAVA超市管理系统的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!