20190726——综合练习——幸运抽奖、购物商城

一、小知识点
方法中不能含输入功能,通过参数实现传递
一旦有输出,方法必须带有返回值

二、综合练习——幸运抽奖
1、任务:模拟注册登录幸运抽奖全过程

主要功能
注册
登录
幸运抽奖

阶段1:实现菜单的输出显示
需求说明
输出菜单
选择菜单编号,输出菜单信息
如果编号选择错误,输出“您的输入有误!”

在这里插入图片描述
菜单输出的显示结果

阶段2:实现循环执行功能
需求说明
系统询问用户是否继续
如果用户选择继续,则可以继续选择菜单,否则程序结束,退出系统
在这里插入图片描述

						实现循环执行功能

阶段3:实现注册功能
需求说明
输入用户名和密码,系统产生4位随机数作为卡号。
注册成功,显示注册信息并修改注册标识为true

在这里插入图片描述

					注册功能的运行结果

阶段4:实现登录功能
需求说明
输入注册时的用户名和密码,登录成功,系统提示欢迎信息
如果用户名和密码输入错误,提示用户继续输入,最多有3次输入机会

在这里插入图片描述

					登录功能的运行结果

阶段5:实现幸运抽奖功能
需求说明
登录成功后,用户选择幸运抽奖菜单,进入幸运抽奖功能
输入会员卡号,系统生成5个4位随机数作为幸运数字
生成随机数的号码: int num =(int)(Math.random()*8999+1000);
如果会员卡号是其中之一,则成为本日幸运会员;否则不是幸运会员

在这里插入图片描述

							幸运抽奖功能的运行结果

2、实现过程
幸运抽奖
首先完成主菜单的功能
//定义主菜单的方法
public static void mainMenu(){
int choose = 0;
do{
System.out.println("=购物商城主菜单===");
System.out.println(“1:登录”);
System.out.println(“2:注册”);
System.out.println(“3:抽奖”);
System.out.println(“0:退出”);
System.out.println(“请输入选择项”);
choose = input.nextInt();
switch(choose){
case 1:
break;
case 2:
break;
case 3:
break;
case 0:
System.out.println(“退出”);
break;
default:
System.out.println(“选项无效”);
}
}while(choose!=0);
}

在当前类中,定义全局数组初始化默认的用户信息
static Scanner input = new Scanner(System.in);
//保存注册信息
static String[] username ={“zhangsan”,“lisi”,null,null,null,null};
static String[] userpwd ={“123456”,“654321”,null,null,null,null};
static String[] userid ={“5675”,“3245”,null,null,null,null};
//
static int loginIndex = -1; //标识当前登陆者的位置

实现定义方法实现登录的功能

在这里插入图片描述

修改主材单,调用登录的方法
在这里插入图片描述

实现用户的注册功能
1 注册是时候必须要验证用户名是否重复
定义一个验证用户名是否重复的方法
在这里插入图片描述
如果验证可以通过,则需要定义一个增加用户的方法(增加用户没有进行数组的扩容)
在这里插入图片描述
在主菜单中,实现注册功能的调用

在这里插入图片描述
注册功能完毕后,实现登录用户的抽奖
定义一个抽奖的方法
在这里插入图片描述
在主菜单中调用抽奖的方法

在这里插入图片描述
整体功能完毕

3、具体代码
package com.xja.java0726;

import java.util.Random;
import java.util.Scanner;

/**

  • @author 作者 :聂姚鑫

  • @date 创建时间:2019年7月26日 上午8:45:58

  • @version 1.0
    */
    public class Test {
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    mainMenu();
    }

    static Scanner input= new Scanner(System.in);
    //保存注册信息
    static String[] username = {“zhangsan”,“lisi”,null,null,null,null};
    static String[] userpwd = {“123”,“456”,null,null,null,null};
    static String[] userid = {“11”,“12”,null,null,null,null};
    //
    static int LoginIndex = -1;//标识当前登陆者的位置

    //定义主菜单方法
    public static void mainMenu() {
    int choose = 0;
    do {
    System.out.println("==购物商城主菜单=");
    System.out.println(“1:登录”);
    System.out.println(“2:注册”);
    System.out.println(“3:抽奖”);
    System.out.println(“0:退出”);
    System.out.println(“请输入菜单选项:”);
    choose = input.nextInt();
    switch(choose) {
    case 1:
    System.out.println(“请输入登录名:”);
    String uname = input.next();
    System.out.println(“请输入登录密码:”);
    String upwd = input.next();
    int index = login(uname,upwd);
    if(index == -1) {
    System.out.println(“登录失败”);
    break;
    }else {
    System.out.println(“登录成功”);
    LoginIndex = index;
    }
    break;
    case 2:
    System.out.println(“请输入登录名:”);
    String addname = input.next();
    boolean isHave = checkName(addname);
    //先验证用户名是否存在
    if(isHave == true) {
    System.out.println(“此用户名已存在”);
    }else{
    //验证信息并添加
    System.out.println(“请输入登录密码:”);
    String addpwd = input.next();
    addUser(addname,addpwd);
    }
    break;
    case 3:
    if(LoginIndex == -1) {
    System.out.println(“请先登录再进行抽奖”);
    }else {
    System.out.println(“当前用户账号为”+userid[LoginIndex]);
    boolean isLuck = luckNum();
    System.out.println(“是否中奖:”+isLuck);
    }

      	break;
      case 0:
      	System.out.println("退出");
      	break;
      	default:
      		System.out.println("选项无效");
      }
      }while(choose != 0);
    

    }
    //验证用户名是否存在
    public static boolean checkName(String uname) {
    boolean isHave = false;
    for(int i=0;i<username.length;i++) {
    if(username[i] == null) {
    break;
    }
    if(username[i].equals(uname)) {
    isHave = true;
    break;
    }
    }
    return isHave;
    }

    //注册的方法
    public static void addUser(String uname,String upwd) {
    //该功能没有实现数组扩容,只能增加四个用户名
    String no = (int)(Math.random()*89 +1000)+"";
    //系统产生一个随机账号
    System.out.println(“注册成功,您的账号为”+no);
    for(int i=0;i<username.length;i++) {
    if(username[i] == null) {
    username[i] = uname;
    userpwd[i] = upwd;
    userid[i] = no;
    break;
    }
    }
    }

    //登录的方法
    public static int login(String uname,String upwd) {
    int index = -1;//表示登录失败
    for(int i=0;i<username.length;i++) {
    if(username[i] == null) {
    break;
    }
    if(username[i].equals(uname) && userpwd[i].equals(upwd)) {
    index = i;
    break;
    }

      }
      return index;
    

    }

    //抽奖的方法
    public static boolean luckNum() {
    String luckNo = (int)(Math.random()*89 +1000)+"";
    boolean isLuck = false;
    for(int i=0;i<username.length;i++) {
    if(luckNo.equals(userid)) {
    isLuck = true;
    break;
    }else {
    break;
    }
    }
    return isLuck;
    }
    }

三、综合练习——购物商城
1、设计实现
商品购物管理系统
1.实现用户的登录功能
1.1.添加初始化的方法(上午已完成)

1.2.添加主菜单的方法

1.3.添加登录业务的方法

1.4.添加登录菜单的方法,并修改主菜单,在主菜单的登录选项中调用登录菜单
//登录菜单的方法
public static void loginMenu(){
System.out.println(“请输入用户名:”);
String uname = input.next();
System.out.println(“请输入用户密码:”);
String upass = input.next();
//调用登录的方法
User user =login(uname,upass);
//判断登录方法返回的对象是否为空,如果为空登录失败
if(user == null){
System.out.println(“登录失败,用户名或密码错误”);
return;
}
//登录成功
if(user.getUserstatus().equals(“冻结”))
{
System.out.println(“您以被冻结,请联系管理员”);
return;
}
//判断用户是管理员还是普通用户
if(user.getUsertype().equals(“管理员”)){
//管理员登录成功
//adminMenu();
}else{
//普通用户登录
//customerMenu();
}
}
修改主菜单

1.5.测试即可
测试是否能够正确登录
2.管理员登录以后实现用户信息的冻结和解冻功能
2.1.定义管理员的主菜单方法

2.2.定义用户管理的菜单方法

2.3.编写用户信息的编辑菜单
public static void useEdit(){
//首先需要显示所有的普通用户信息
System.out.println(“编号\t登录名\t密码\t状态\t积分”);
for(int i =0;i<users.length;i++){
if(users[i]==null){
break;
}
//只显示普通用户的信息
if(users[i].getUsertype().equals(“普通用户”))
{
User user =users[i];
System.out.println(user.getUsercode()+"\t"+user.getUsername()+"\t"
+user.getUserpwd()+"\t"+user.getUserstatus()+"\t"+user.getUserscore());
}
}
System.out.println(“请输入要修改的用户的编号”);
int usercode = input.nextInt();
//验证输入的用户ID是否正确
//User user = findUserById(usercode);
if(user == null)
{
System.out.println(“输入的用户编号错误”);
}else{
//更新用户状态
//updateUserStatus(user);
}
}

2.4.根据用户ID,查询单个用户的功能

2.5.实现修改用户的状态

2.6.整体测试
先使用zhangsan登录 -->管理员登录 -->冻结张三 —张三登录 -->管理员登录–解冻张三 --张三登录

3.管理员登录以后实现商品信息的添加功能(添加的商品做重复验证)
3.1.先定义一个商品管理的主界面(并且在管理员主界面中调用该方法)

在管理员主界面中调用商品管理页面的方法

3.2.实现添加商品的菜单功能

3.3.实现添加商品的业务功能

3.4.测试功能是否能够正确的添加

4.实现普通登录以后购买商品的功能
登录成功后,需要记录当前登录用户的信息
需要在全局变量增加连个变量保存登录用户信息和当前用户购买的商品信息

登录成功保存

4.1.定义普通用户登录以后的主菜单方法

4.2.定义购买菜单(代码稍微多了一点,但是都是之前写过的。)
public static void buyShopMenu(){
String answer ="";
do{
//显示允许购买的商品列表信息
System.out.println(“商品编号\t商品名称\t商品价格\t商品数量”);
for(int i=0;i< shops.length;i++){
Shop shop = shops[i];
if(shopnull){
break;
}
System.out.println(shop.getShopno()+"\t"+shop.getShopname()+"\t"
+shop.getShopprice()+"\t"+shop.getShopnum());
}
//选择购买的商品ID
System.out.println(“请选择要够卖的商品”);
int shopid = input.nextInt();
//判断购买的商品是否存在
Shop shop = findShopById(shopid);
if(shop
null){
System.out.println(“选择的商品不存在”);
}else{
System.out.println(“请购买商品的数量”);
int num = input.nextInt();
//把要购买的商品保存起来
buyShop(shop,num);
}
//是否继续购买
System.out.println(“是否继续购买(y/n)”);
answer = input.next();
}while(answer.equals(“y”));

	//停止购物以后显示本次购物的商品信息
	System.out.println("本次购物清单");
	System.out.println("商品编号\t商品名称\t商品价格\t商品数量\t小计");
	int sum = 0;
	for(int i=0;i< buyshops.length;i++){
		Shop shop = buyshops[i];
		if(shop==null){
			break;
		}
		System.out.println(shop.getShopno()+"\t"+shop.getShopname()+"\t"+
		shop.getShopprice()+"\t"+shop.getShopnum()+"\t");
		sum += shop.getShopprice()*shop.getShopnum();
	}
	System.out.println("本次一共消费:"+ sum+"元");
	int score = (int)((sum /100.0)*3);
	System.out.println("原始积分:"+ loginUser.getUserscore());
	System.out.println("本次新增积分:" + score);
	//修改用户的积分
	loginUser.setUserscore(loginUser.getUserscore()+score);
	System.out.println("最新积分:" + loginUser.getUserscore());
	//结算完毕后,清空已购商品列表
	for(int i = 0;i<buyshops.length;i++){ 
		buyshops[i] = null; 
	}
}

4.3.定义一个根据商品ID,查询商品的方法

4.4.定义一个添加购买信息的方法

2、具体代码
①shop类
package com.xja.sxnd.shop;

public class Shop {
//商品信息
private Integer shopno;
private String shopname;
private Integer shopprice;
private Integer shopnum;

public Integer getShopno() {
	return shopno;
}
public void setShopno(Integer shopno) {
	this.shopno = shopno;
}
public String getShopname() {
	return shopname;
}
public void setShopname(String shopname) {
	this.shopname = shopname;
}
public Integer getShopprice() {
	return shopprice;
}
public void setShopprice(Integer shopprice) {
	this.shopprice = shopprice;
}
public Integer getShopnum() {
	return shopnum;
}
public void setShopnum(Integer shopnum) {
	this.shopnum = shopnum;
}

}
②User类
package com.xja.sxnd.shop;

public class User {
//用于保存用户的基础信息
private Integer usercode; //用户编号
private String username; //用户名称
private String userpwd; //用户密码
private Integer userscore; //用户积分
private String usertype; //管理员和普通用户
private String userstatus; //正常用户还是冻结用户
public Integer getUsercode() {
return usercode;
}
public void setUsercode(Integer usercode) {
this.usercode = usercode;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getUserpwd() {
return userpwd;
}
public void setUserpwd(String userpwd) {
this.userpwd = userpwd;
}
public Integer getUserscore() {
return userscore;
}
public void setUserscore(Integer userscore) {
this.userscore = userscore;
}
public String getUsertype() {
return usertype;
}
public void setUsertype(String usertype) {
this.usertype = usertype;
}
public String getUserstatus() {
return userstatus;
}
public void setUserstatus(String userstatus) {
this.userstatus = userstatus;
}

}
③ShopMain类
package com.xja.sxnd.shop;

import java.util.Scanner;

public class ShopMain {
static User[] users = new User[20]; //可以保存20个用户
static Shop[] shops = new Shop[20]; //可以保存20件商品
static Shop[] buyshops = new Shop[20]; //保存购买的商品列表

static Scanner input = new Scanner(System.in);
static User loginUser =null;  //记录当前登陆者对象
public static void main(String[] args) {
	//程序启动,加载所有数据
	 init();
	 //调用主菜单
	 mainMenu();
} 

//实现简单的登录
public static void mainMenu(){
	int choose = 0;
	do{
		System.out.println("欢迎来到农大超市管理系统");
		System.out.println("1:登录");
		System.out.println("2:注册");
		System.out.println("0:退出");
		choose = input.nextInt();
		switch(choose){
		case 1:
			//实现登录功能
			loginMenu();
			break;
		case 2:
			//实现注册功能
			//registerMenu();
			break;
		}
	}while(choose !=0);
}
//登录菜单的方法
public static void loginMenu(){
	System.out.println("请输入用户名:");
	String uname = input.next();
	System.out.println("请输入用户密码:");
	String upass = input.next();
	//调用登录的方法
	User user =login(uname,upass);
	//判断登录方法返回的对象是否为空,如果为空登录失败
	if(user == null){
		System.out.println("登录失败,用户名或密码错误");
		return;
	}
	//登录成功
	if(user.getUserstatus().equals("冻结"))
	{
		System.out.println("您以被冻结,请联系管理员");
		return;
	}
	//判断用户是管理员还是普通用户
	loginUser = user; //保存当前登录对象
	if(user.getUsertype().equals("管理员")){ 
		//管理员登录成功
		adminMenu();
	}else{
		//普通用户登录
		customerMenu();
	}
}
public static void adminMenu(){
	int choose =0;
	do{
	//管理员页面
	System.out.println("欢迎管理员使用后台管理系统");
	System.out.println("1:用户管理");
	System.out.println("2:商品管理");
	System.out.println("0:退出");
	choose = input.nextInt();
	switch(choose){
	case 1:
		userManagerMenu();
		break;
	case 2:
		shopManagerMenu();
		break;
	}
	}while(choose!=0);
}
//商品管理菜单 
public static void shopManagerMenu(){
	int choose =0;
	do{
	//管理员页面
	System.out.println("商品管理");
	System.out.println("1:添加商品");
	System.out.println("2:显示商品");
	System.out.println("3:修改商品");
	System.out.println("4:删除商品");
	System.out.println("0:退出");
	choose = input.nextInt();
	switch(choose){
	case 1:
		 //添加商品
		addShopMenu();
		break;
	case 2:
		//显示商品
		break;
	}
	}while(choose!=0);
}	
public static void addShopMenu(){
	System.out.println("请输入新商品的名称");
	String shopname = input.next();
	System.out.println("请输入新商品的价格");
	Integer shopprice = input.nextInt();	
	System.out.println("请输入新商品的数量");
	Integer shopnum = input.nextInt();	
	Shop shop = new Shop();
	shop.setShopname(shopname);
	shop.setShopnum(shopnum);
	shop.setShopprice(shopprice);
	//调用添加商品的业务方法
	addShop(shop);
	
}
//添加商品的时候,需要一个商品作为参数
public static void addShop(Shop shop){
	for(int i =0;i<shops.length;i++){
		if(shops[i] ==null){
			int shopno =(int)(Math.random()*8999+1000);
			shop.setShopno(shopno);
			shops[i] = shop;
			break;
		}
	}
}

public static void userManagerMenu(){
	int choose =0;
	do{
	//管理员页面
	System.out.println("欢迎管理员使用后台管理系统");
	System.out.println("1:用户排名");
	System.out.println("2:用户编辑");
	System.out.println("0:退出");
	choose = input.nextInt();
	switch(choose){
	case 1:
		System.out.println("暂无实现");
		break;
	case 2:
		useEdit();
		break;
	}
	}while(choose!=0);
}	
public static void useEdit(){
	//首先需要显示所有的普通用户信息
	System.out.println("编号\t登录名\t密码\t状态\t积分");
	for(int i =0;i<users.length;i++){
		if(users[i]==null){
			break;
		}
		//只显示普通用户的信息
		if(users[i].getUsertype().equals("普通用户"))
		{
			User user =users[i];
			System.out.println(user.getUsercode()+"\t"+user.getUsername()+"\t"
			+user.getUserpwd()+"\t"+user.getUserstatus()+"\t"+user.getUserscore());
		}
	}
	System.out.println("请输入要修改的用户的编号");
	int usercode = input.nextInt();
	//验证输入的用户ID是否正确
	User user = findUserById(usercode);
	if(user == null)
	{
		System.out.println("输入的用户编号错误");
	}else{
		//更新用户状态
		updateUserStatus(user);
	}
}
//根据用户的编号获取用户的信息
public static User findUserById(int usercode){
	User user = null;
	for(int i =0;i<users.length;i++){
		if(users[i] == null)
		{
			break;
		}
		if(users[i].getUsercode() == usercode){
			user = users[i];
			break;
		}
	}
	return user;
}
//更新用户的状态(根据用户的编号修改用户的状态)
public static void updateUserStatus(User user){
	if(user.getUserstatus().equals("正常"))
		user.setUserstatus("冻结");
	else
		user.setUserstatus("正常");
	
	//把该用户的信息保存到数组中
	for(int i =0;i<users.length;i++){
		if(users[i] == null)
		{
			break;
		}
		if(users[i].getUsercode() ==user.getUsercode()){
			users[i] = user;
			break;
		}
	}
}
//普通客户主界面
public static void customerMenu(){
	int choose =0;
	do{
	//管理员页面
	System.out.println("欢迎管理系统");
	System.out.println("1:修改用户密码");
	System.out.println("2:购买商品");
	System.out.println("3:幸运抽奖");
	System.out.println("4:积分兑换");
	System.out.println("0:退出");
	choose = input.nextInt();
	switch(choose){
	case 1:
		System.out.println("暂无实现");
		break;
	case 2:
		buyShopMenu();
		break;
	}
	}while(choose!=0);
}
public static void buyShopMenu(){
	String answer ="";
	do{
		//显示允许购买的商品列表信息
	System.out.println("商品编号\t商品名称\t商品价格\t商品数量");
	for(int i=0;i< shops.length;i++){
		Shop shop = shops[i];
		if(shop==null){
			break;
		}
		System.out.println(shop.getShopno()+"\t"+shop.getShopname()+"\t"
		+shop.getShopprice()+"\t"+shop.getShopnum());
	}
	//选择购买的商品ID
	System.out.println("请选择要够卖的商品");
	int shopid = input.nextInt();
	//判断购买的商品是否存在
	Shop shop = findShopById(shopid);
	if(shop== null){
		System.out.println("选择的商品不存在");
	}else{
		System.out.println("请购买商品的数量");
		int num = input.nextInt();
		//把要购买的商品保存起来
		buyShop(shop,num);
	}
	//是否继续购买
	System.out.println("是否继续购买(y/n)");
	answer = input.next();
	}while(answer.equals("y"));
	
	//停止购物以后显示本次购物的商品信息
	System.out.println("本次购物清单");
	System.out.println("商品编号\t商品名称\t商品价格\t商品数量\t小计");
	int sum = 0;
	for(int i=0;i< buyshops.length;i++){
		Shop shop = buyshops[i];
		if(shop==null){
			break;
		}
		System.out.println(shop.getShopno()+"\t"+shop.getShopname()+"\t"+
		shop.getShopprice()+"\t"+shop.getShopnum()+"\t");
		sum += shop.getShopprice()*shop.getShopnum();
	}
	System.out.println("本次一共消费:"+ sum+"元");
	int score = (int)((sum /100.0)*3);
	System.out.println("原始积分:"+ loginUser.getUserscore());
	System.out.println("本次新增积分:" + score);
	//修改用户的积分
	loginUser.setUserscore(loginUser.getUserscore()+score);
	System.out.println("最新积分:" + loginUser.getUserscore());
	//结算完毕后,清空已购商品列表
	for(int i = 0;i<buyshops.length;i++){ 
		buyshops[i] = null; 
	}
}
//类似于在购物车中添加商品的过程
public static void buyShop(Shop shop,int num){
	for(int i = 0;i<buyshops.length;i++){
		if(buyshops[i] == null){
			shop.setShopnum(num); //设置购买的数量
			buyshops[i] = shop;
			break;
		}
	}
}
//根据商品ID,查询单件商品信息
public static Shop findShopById(int shopid){
	Shop shop = null;
	for(int i =0;i<shops.length;i++){			
		if(shops[i]==null)
			break;
		if(shops[i].getShopno() == shopid)
		{
			shop = shops[i];
			break;
		}
	}
	return shop;
}
//登录业务方法的实现
public static User login(String uname,String upass){
	for(int i =0;i< users.length;i++){
		User user = users[i];
		if(user == null)
			return null;
		if(user.getUsername().equals(uname) && user.getUserpwd().equals(upass))
			return user;
	}
	return null;
}


//定义一个初始化的方法(约定系统最开始的用户信息和商品信息)
public static void init(){
	User user1 = new User();
	user1.setUsertype("管理员");
	user1.setUsercode(1234);
	user1.setUsername("admin");
	user1.setUserpwd("admin");
	user1.setUserscore(30);
	user1.setUserstatus("正常");
	User user2 = new User();
	user2.setUsertype("普通用户");
	user2.setUsercode(1235);
	user2.setUsername("zhangsan");
	user2.setUserpwd("123456");
	user2.setUserscore(60);
	user2.setUserstatus("正常");
	//把用户的信息保存到数组中区
	users[0] = user1;
	users[1] = user2;
	
	Shop shop1 = new Shop();
	shop1.setShopname("方便面");
	shop1.setShopno(1234);
	shop1.setShopnum(500);
	shop1.setShopprice(2);
	Shop shop2 = new Shop();
	shop2.setShopname("电视机");
	shop2.setShopno(1235);
	shop2.setShopnum(500);
	shop2.setShopprice(2);
	//把商品的信息保存到数组中区
	shops[0] = shop1;
	shops[1] = shop2;
}

}

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值