实现思路:创建
Vip类表示购物系统中的会员,创建
shop类表示用户购买的商品,创建
Menu类显示系统运行的菜单以及实现系统功能的方法,创建测试类
TestMenu测试功能
1.创建会员类,会员有三个属性,账号、积分、会员生日,提供get、set方
法,以及有三个参数的构造器
public class Vip {
/**
* 会员积分
*/
private int score;
/**
* 会员账号
*/
private int number;
/**
* 会员生日
*/
private String birth;
public int getNumber() {
r eturn number;
}
public void setNumber(int number) {
this.number = number;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
public String getBirth() {
return birth;
}
public void setBirth(String birth) {
this.birth = birth;
}
/**
* 三参构造器
*
* @param number
* @param score
*@param birth
*/
public Vip(int number, int score, String birth) {
super();
this.number = number;
this.score = score;
this.birth = birth;
}
2.创建商品类,商品有三个属性,编号、数目、单价,提供set、get方法以及有
三个参数的构造器
public class Shop {
/**
* 商品编号
*/
public int bh;
/**
* 商品数目
*/
public int num;
/**
* 商品单价
*/
public double price;
public int getBh() {
return bh;
}
/**
* 全参构造器
*
* @param bh
* @param num
* @param price
*/
public Shop(int bh, int num, double price) {
super();
this.bh = bh;
this.num = num;
this.price = price;
}
public void setBh(int bh) {
this.bh = bh;public void showInfo1() {
System.out.println("欢迎使用我行我素购物管理系统");
System.out.println("\t1、登录");
System.out.println("\t2、退出");
System.out.println("********************************************");
}
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
3.创建Menu类(帮助类),创造方法实现系统运行时的菜单界面以及实现系统public void showInfo1() {
System.out.println("欢迎使用我行我素购物管理系统");
System.out.println("\t1、登录");
System.out.println("\t2、退出");
System.out.println("********************************************");
}
public void showInfo1() {
System.out.println("欢迎使用我行我素购物管理系统");
System.out.println("\t1、登录");
System.out.println("\t2、退出");
System.out.println("********************************************");
}
功能的方法,
①显示登陆菜单:
public void showInfo1() {
System.out.println("欢迎使用我行我素购物管理系统");
System.out.println("\t1、登录");
System.out.println("\t2、退出");
System.out.println("********************************************");
}
②显示主菜单
public void showInfo2() {
System.out.println("欢迎使用我行我素购物管理系统");
System.out.println("\t1、客户信息管理");
System.out.println("\t2、购物结算");
System.out.println("\t3、真情回馈");
System.out.println("\t4、注销");
}
③显示客户信息管理菜单
public void
showInfo3() {
System.out.println("我行我素购物系统管理>客户信息管理");
System.out.println("******************************************");
System.out.println("1、显示所有客户信息");
System.out.println("2、添加客户信息");
System.out.println("3、修改所有客户信息");
System.out.println("4、查询所有客户信息");
System.out.println("******************************************");
}
③菜单下必须实现1、2、3、4四个功能:
功能一 显示所有客户信息:
public void
showInfo4() {
System.out.println("我行我素购物系统管理>客户信息管理>显示客户信息");
System.out.println("会员号\t生日\t积分\t");
System.out.println("------ ------ ------");固定的显示格式
for (int i = 0; i < count; i++) {
System.out.println(vip[i].getNumber() + "\t" + vip[i].getBirth()
+ "\t" + vip[i].getScore());
}访问存储会员的数组成员,遍历输出会员信息,
}
功能二 实现添加客户:
public void
showInfo6() {
System.out.println("我行我素购物系统管理>客户信息管理>添加客户信息");
System.out.println("请输入会员号");
int cao1 = sc.nextInt();
boolean flag = true;
for (int i = 0; i < vip.length; i++) {
if (cao1 == vip[i].getNumber()) {
flag = false;
}判断用户输入的会员账号是否已经存在,存在flag=false;
}
if (flag == true) {
System.out.println("请输入会员生日");
String cao2 = sc.next();
System.out.println("请输入会员积分");
int cao3 = sc.nextInt();
Vip vip1 = new Vip(cao1, cao3, cao2);//调用会员类的三个参数的构造方法创建会员对象
vip[count] = vip1;
count++;//每调用一次这个方法count++,避免重复添加前面已经添加的会员被覆盖
System.out.println("注册成功!");
} else {
System.out.println("您输入的会员号已存在!");
}
}
功能三 实现修改客户信息:
public void
showInfo9() {
System.out.println("我行我素购物系统管理>客户信息管理>修改客户信息");
System.out.println("***********************************************");
System.out.println("请输入会员号:");
int num = sc.nextInt();
boolean bool = true;
for (int i = 0; i < vip.length; i++) {
if (num == vip[i].getNumber()) {
//判断用户输入的会员账号是否存在,
bool = false;
System.out.println("会员号\t生日\t积分\t");
System.out.println("--------- --------- ----------");
System.out.println(vip[i].getNumber() + "\t"
+ vip[i].getBirth() + "\t" + vip[i].getScore() + "\t"); //输出用户要修改的会员信息
System.out
.println("***********************************************");
System.out.println("1、修改会员生日");
System.out.println("2、修改会员积分");
System.out
.println("***********************************************");
System.out.println("请输入要修改的内容:");
int num1 = sc.nextInt(); //判断用户要修改会员的生日还是积分
if (num1 == 1) {
//输入数字1时修改会员生日
System.out.println("请输入新的生日:");
String str = sc.next();
vip[i].setBirth(str);
//调用会员类的set方法修改该会员的生日
System.out.println("修改成功!");
break;
} else if (num1 == 2) {
//输入数字2时修改会员积分
System.out.println("请输入最新积分:");
int str = sc.nextInt();
vip[i].setScore(str);
//调用会员类的set方法修改会员的积分
System.out.println("修改成功!");
break;
//修改成功跳出循环,后面的不需要执行了,不可能有相同的会员账号,添加的时候已经排除了添加相同的会员账号
}
}
}
if (bool == true) {
//输入的会员账号不存在显示不存在
System.out.println("您输入的会员不存在!");
}
}
功能四 实现查询客户信息
public void
showInfo5() {
System.out.println("我行我素购物系统管理>客户信息管理>查询客户信息");
System.out.println("请输入会员号:");
int num = sc.nextInt();
boolean bool = true;
for (int i = 0; i < count; i++) {
if (num == vip[i].getNumber()) {
//判断用户输入的会员账号是否存在,存在执行if里面的代码
bool = false;
System.out.println("会员号\t生日\t积分\t");
System.out.println("------ ------ ------");
System.out.println(vip[i].getNumber() + "\t"
+ vip[i].getBirth() + "\t" + vip[i].getScore() + "\t");//输出会员信息
}
}
if (bool == true) {
//输入的账号不存在,就不进入循环,
System.out.println("您输入的会员不存在!");
}
}
④显示购物结算菜单
public void
showInfo7() {
System.out.println("我行我素购物系统管理>购物结算");
System.out.println("************************************************");
System.out.println("请选择购买的商品编号");
System.out.println("1、adidas运动鞋");
System.out.println("2、adidast恤");
System.out.println("3、Nike运动鞋");
System.out.println("************************************************");
}
购物结算界面需要让用户输入购买的商品并且打印消费账单:
public void calcu() {
int count = 0;
boolean bool = false;
System.out.println("请输入会员号:");//输入正确的会员账号才能执行购物结算功能
int hy = sc.nextInt();
for (int i = 0; i < vip.length; i++) {
if (hy == vip[i].getNumber()) {
bool = true;
}
} //判断输入的会员号是否存在存在执行下面的if
if (bool) {
for (int i = 0; i < 100; i++) {// 用数组接受用户购买的商品信息
System.out.println("请输入商品编号:");
int kao1 = sc.nextInt();
System.out.println("请输入商品价格");
double kao2 = sc.nextDouble();
System.out.println("请输入商品数量");
int kao3 = sc.nextInt();
Shop shop1 = new Shop(kao1, kao3, kao2);//调用商品类的三参构造方法
shop[i] = shop1;
//将商品依次存入shop数组中
count++;
System.out.println("是否继续y/n?");
String str = sc.next();
if (str.equals("n")) {// 判断是否继续购买
break; //判断是否继续输入,输入n跳出循环
}
}
-------------------------打印消费清单-------------------------------------------
System.out.println("******************消费清单*******************");
System.out.println("物品\t单价\t个数\t金额");
double sum = 0;
for (int j = 0; j < count; j++) {
// 遍历数组计算消费总金额
System.out.println(shop[j].bh + "\t" + shop[j].price + "\t"
+ shop[j].num + "\t" + (shop[j].price * shop[j].num));
sum = sum + (shop[j].price * shop[j].num);/
/用sum存储消费总金额
}
S
ystem.out.println("消费总金额为:" + sum);
System.out.println("实际缴费:");
double money = sc.nextDouble();// 接收用户的缴费金额
if (money >= sum) {// 判断用户输入
System.out.println("找零:" + (money - sum));
} else {
System.out.println("余额不足!");
} //判断用户输入的金额是否足够,不足显示余额不足,足够则打印消费单
} else {
System.out.println("输入的会员号不存在!");
}
}
⑤显示真情回馈菜单:
public void showInfo8() {
System.out.println("我行我素购物系统管理>真情回馈");
System.out.println("**********************************************");
System.out.println("1、幸运大放送");
System.out.println("2、幸运抽奖");
System.out.println("3、生日问候");
System.out.println("**********************************************");
}
幸运大放送菜单:
public void showInfo10() {
System.out.println("我行我素购物系统管理>真情回馈>幸运大放送");
int num = 0;
boolean boole = true;
System.out.println("请输入会员号:");
int hy = sc.nextInt();
for (int i = 0; i < vip.length; i++) {
if (hy == vip[i].getNumber()) {
num = i;
boole = false;
if(vip[num].getScore()>500){
System.out.println("恭喜您获得猴年限定皮肤一个!");
}else{
System.out.println("您积分余额不足,无法参与幸运大放送!");
}
break;
}
}
if(boole){
System.out.println("您输入的会员号不存在");
}
}
幸运抽奖:
public void showInfo12() {
System.out.println("我行我素购物系统管理>真情回馈>幸运抽奖");
int num = 0;
boolean boole = true;
System.out.println("请输入会员号:");
int hy = sc.nextInt();
for (int i = 0; i < vip.length; i++) {
if (hy == vip[i].getNumber()) {
num = i;
System.out.println("活动规则:用户输入开始,系统随机产生一个随机数字,根据产生的随机数字判定用户的奖金多少!");
System.out.println("输入开始,产生一个您的幸运数字!");
String str = sc.next();
int x=(int)(Math.random()*100);//产生一个0到100之间的随机数
System.out.println("您的幸运数字为:"+x);
if(x<50){
System.out.println("恭喜您获得100元购物卡一张!");
}else if(x%10==0){
System.out.println("恭喜您获得500元购物卡一张!");
}else{
System.out.println("您获得了最佳人气奖!");
}
boole = false;
break;
}
}
if(boole){
System.out.println("您输入的会员号不存在");
}
}
生日问候:
public void showInfo11() {
System.out.println("我行我素购物系统管理>真情回馈>生日问候");
int num = 0;
boolean boole = true;
System.out.println("请输入会员号:");
int hy = sc.nextInt();
for (int i = 0; i < vip.length; i++) {
if (hy == vip[i].getNumber()) {
num = i;
boole = false;
System.out.println("请输入今天的日期:");
String str = sc.next();
if(str.equals(vip[num].getBirth())){
System.out.println("今天是您的生日,获赠双倍积分卡一张!");
}else{
System.out.println("很抱歉,今天不是您的生日!");
}
break;
}
}
if(boole){
System.out.println("您输入的会员号不存在");
}
}
----------------------------------------------------------------------------------------------------
创建测试类TestMenu,实现系统的基本操作以实现功能:
public class TestMenu {
public static void main(String[] args) {
Menu menu = new Menu();
Scanner sc = new Scanner(System.in);
boolean bool = true;
menu.main();
menu.main1();
while (bool) {最外层循环确保程序能够返回最开始的主界面
menu.showInfo1();// 调用主界面
System.out.println("请选择,输入数字:");
int num5 = sc.nextInt();
if (num5 == 1) {
// 输入1执行登录界面,判断是否进入登录界面
System.out.println("请输入用户名:");
int num = sc.nextInt();
System.out.println("请输入密码:");
int password = sc.nextInt();
do {//第二层循环确保用户输入错误后能够冲新输入
if (password == 5233) {// 输入正确的密码
while (bool) {//第三层循环确保用户输入0后能返回到购物信息系统管理菜单
menu.showInfo2();// 进入主界面
System.out.println("请选择,输入数字:");
int num1 = sc.nextInt();
while (bool) {//第四层循环保证用户输入0后能返回到客户信息管理菜单界面
if (num1 == 1) {//
用户输入数字1执行客户信息管理系统
menu.showInfo3();// 客户信息管理菜单
System.out.println("请选择,输入数字0返回上一层");
int num3 = sc.nextInt();
if (num3 != 0) {
do {//内层循环实现客户不用返回上一级就可以重复执行已经选择的操作
if (num3 == 1) {// 用户输入数字1执行显示客户信息
menu.showInfo4();
} else if (num3 == 2) {// 数字2执行添加会员
menu.showInfo6();
} else if (num3 == 4) {// 数字3执行查询服务
menu.showInfo5();
} else if (num3 == 3) {// 执行修改服务
menu.showInfo9();
}
System.out
.println("输入0返回上一层,输入其他数字继续执行");
int num4 = sc.nextInt();
if (num4 == 0) {
break;// 输入0返回上一层
}
} while (bool);
}
else {
break;// 输入0跳出循环,返回上一层
}
}
else if (num1 == 2) {
// 用户输入数字2时执行购物结算功能
do {//该循环实现用户输入0的情况下可以返回上一级菜单
menu.showInfo7();// 调用购物结算界面
menu.calcu();// 调用计算金额方法
System.out
.println("输入0返回上一层,输入其他数字继续执行");
int num4 = sc.nextInt();
if (num4 == 0) {
break;// 输入0返回上一层
}
} while (bool);
}
else if (num1 == 3) {//
用户输入3执行真情回馈
do {该循环实现了在用户输入0的情况下能够返回上一级菜单
menu.showInfo8();
System.out.println("输入0返回上一层:");
int num4 = sc.nextInt();
if (num4 == 0) {
break;// 返回上一层
}
} while (bool);
}
else if (num1 == 4) {
System.out.println("注销登录");
bool = false;// 结束所有循环
}
}
}
} else {
System.out.println("密码错误!");
break;// 密码错误跳出循环,重新进入登录界面
}
} while (bool);
}
else {
System.out.println("退出登录!");
break;// 选择退出跳出循环
}
}
}
}