JAVA简单项目购物系统的整个开发过程详解(内含源码和注释)
1. 购物系统的需求分析和类划分
2. 购物系统的类之间的关系和流程(用图示法表示)
3. 代码实现
3.1 StartSMS类
package cn.itcast;import java.util.Scanner;/*** 该类是这个系统的主方法类,用于启动购物系统* * @author * */
public class StartSMS {/*** 空构造方法* */public StartSMS() {}/*** 系统主方法* * @param args*/public static void main(String args[]) {// 创建已有的数据类的对象,并初始化已有的商品信息和顾客信息Data data = new Data();data.initial();// 创建菜单类的对象Menu menu = new Menu();// 这里将初始化的已有数据信息送给了菜单对象menu.setData(data.goodsName, data.goodsPrice, data.custNo,data.custBirth, data.custScore);// 显示一级菜单,即登录界面menu.showLoginMenu();// 该标志用来判断是否发生了系统操作错误,当操作不当的时候flag为假,从而退出系统,默认为无错误boolean flag = true;// 处理整个系统的流程do {// 发生操作错误,退出系统if (!flag)break;// 创建验证用户登录的账户和密码是否正确的类的对象,这里只创建对象,并没有执行验证方法VerifyEqual verifyequal = new VerifyEqual();// 输入一级菜单中的选择Scanner scanner = new Scanner(System.in);int i = scanner.nextInt();// 根据用户对一级菜单的选择做出不同的响应,注意这里就是经典的switch-case的用法switch (i) {case 1: // 用户选择"登录系统"// 定义计数器,表示用户最多只能尝试3次,3次输入错误直接退出系统int j = 3;// 处理登录系统的流程do {if (verifyequal.verify(data.manager.username,data.manager.password)) {// 用户登录成功,显示购物二级菜单!!!menu.showMainMenu();break;}if (j != 1) {// 用户输入有误,还没有达到3次,允许重新输入System.out.println("\n用户名和密码不匹配,请重新输入:");} else {// 3次尝试结束,设置退出标志,并退出do-while循环System.out.println("\n您没有权限进入系统!谢谢!");flag = false;break;}// 每输入一次将计数器减1,用于表示已经尝试了多少次j--;} while (true);break;case 2: // 用户选择"更改管理员信息"if (verifyequal.verify(data.manager.username,data.manager.password)) {// 输入新信息前要先验证原来的信息,此处表示已经验证成功System.out.print("请输入新的用户名:");data.manager.username = scanner.next();System.out.print("请输入新的密码:");data.manager.password = scanner.next();System.out.println("用户名和密码已更改!");// 信息更改成功,选择下一步的操作System.out.println("\n请选择,输入数字:");} else {// 信息验证失败,设置退出标志System.out.println("抱歉,你没有权限修改!");flag = false;}break;case 3: // 用户选择"退出"System.out.println("谢谢您的使用!");System.exit(0);break;default: // 一级菜单输入错误,需要重新选择System.out.print("\n输入有误!请重新选择,输入数字: ");break;}} while (flag);}
}
3.2 Data类
package cn.itcast;/*** 存放购物系统的初始化数据的数据类,该类只是存放了已有的商品信息和顾客信息* * @author * */
public class Data {/*** 默认构造方法,初始化变量,由于都是数组对象或类对象,所以都需要采用new* */public Data() {goodsName = new String[50] ;goodsPrice = new double[50] ;custNo = new int[100] ;custBirth = new String[100];custScore = new int[100] ;manager = new Manager() ;}/*** 初始化该类的数据* */public void initial() {/*====================添加了初始的7种商品信息====================*/goodsName [0] = "addidas运动鞋";goodsPrice[0] = 880D;goodsName [1] = "Kappa网球裙";goodsPrice[1] = 200D;goodsName [2] = "网球拍";goodsPrice[2] = 780D;goodsName [3] = "addidasT恤";goodsPrice[3] = 420.77999999999997D;goodsName [4] = "Nike运动鞋";goodsPrice[4] = 900D;goodsName [5] = "Kappa网球";goodsPrice[5] = 45D;goodsName [6] = "KappaT恤";goodsPrice[6] = 245D;/*====================添加了初始的7个顾客信息====================*/custNo [0] = 1900;custBirth[0] = "08/05";custScore[0] = 2000;custNo [1] = 1711;custBirth[1] = "07/13";custScore[1] = 4000;custNo [2] = 1623;custBirth[2] = "06/26";custScore[2] = 5000;custNo [3] = 1545;custBirth[3] = "04/08";custScore[3] = 2200;custNo [4] = 1464;custBirth[4] = "08/16";custScore[4] = 1000;custNo [5] = 1372;custBirth[5] = "12/23";custScore[5] = 3000;custNo [6] = 1286;custBirth[6] = "12/21";custScore[6] = 10080;}/*====================定义该类所拥有的变量====================*/public String goodsName []; // 商品的名称public double goodsPrice[]; // 商品的价格public int custNo []; // 顾客的会员号public String custBirth []; // 顾客的生日public int custScore []; // 顾客的积分public Manager manager ; // 管理员类,仅仅存储了管理员的用户名和密码
}
3.3 Manager类
package cn.itcast;/*** 管理员类,仅仅存储了管理员的用户名和密码* * @author* */
public class Manager {/*** 设置默认的用户名和密码* */public Manager() {username = "itcast";password = "itcast";}/*====================定义该类所拥有的变量====================*/public String username; // 用户名public String password; // 密码
}
3.4 VerifyEqual类
package cn.itcast;import java.util.Scanner;/*** 验证用户登录的账户和密码是否正确的类* * @author* */
public class VerifyEqual {/*** 空构造方法* */public VerifyEqual() {}/*** 执行验证的方法* * @param s 用于验证的正确的用户名* @param s1 用于验证的正确的密码* @return*/public boolean verify(String s, String s1) {// 由用户输入用户名System.out.print("请输入用户名:");Scanner scanner = new Scanner(System.in);String s2 = scanner.next();// 由用户输入密码System.out.print("请输入密码:");scanner = new Scanner(System.in);String s3 = scanner.next();// 判断用户输入的信息是否和已有的信息一致return s2.equals(s) && s1.equals(s3);}
}
3.5 Menu类
package cn.itcast;import java.util.Scanner;/*** 菜单类,用于显示所有级菜单供用户选择* * @author* */
public class Menu {/*** 空构造方法* */public Menu() {}/*** 设置菜单类中的数据信息* * @param as* @param ad* @param ai* @param as1* @param ai1*/public void setData(String as[], double ad[], int ai[], String as1[], int ai1[]) {goodsName = as;goodsPrice = ad;custNo = ai;custBirth = as1;custScore = ai1;}/*** 显示一级菜单,即登录界面* */public void showLoginMenu() {System.out.println("\n\n\t\t\t 欢迎使用itcast购物管理系统1.0版\n\n");System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");System.out.println("\t\t\t\t 1. 登 录 系 统\n\n");System.out.println("\t\t\t\t 2. 更 改 管 理 员 信 息\n\n");System.out.println("\t\t\t\t 3. 退 出\n\n");System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");System.out.print("请选择,输入数字:");}/*** 显示二级菜单,即系统的主菜单,这个方法里面包含了对这个菜单处理的所有流程* */public void showMainMenu() {// 显示二级菜单,即系统的主菜单System.out.println("\n\n\t\t\t\t欢迎使用购物管理系统\n");System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");System.out.println("\t\t\t\t 1. 客 户 信 息 管 理\n");System.out.println("\t\t\t\t 2. 购 物 结 算\n");System.out.println("\t\t\t\t 3. 真 情 回 馈\n");System.out.println("\t\t\t\t 4. 注 销\n");System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");// 用户选择服务项目System.out.print("请选择,输入数字:");Scanner scanner = new Scanner(System.in);// 设置标志用于控制循环boolean flag = false;do {String s = scanner.next();// 用户选择"客户信息管理"if (s.equals("1")) {// 显示客户信息管理菜单并处理这个菜单的整个流程,当这个流程处理完showCustMMenu();break;}// 用户选择"购物结算"if (s.equals("2")) {// 定义购物结算类的对象,并处理整个购物结算的流程Pay pay = new Pay();pay.setData(goodsName, goodsPrice, custNo, custBirth, custScore);pay.calcPrice();break;}// 用户选择"真情回馈"if (s.equals("3")) {// 处理真情回馈的整个处理流程showSendGMenu();break;}// 用户选择"注销"if (s.equals("4")) {// 显示一级菜单,此时会返回至StartSMS类中的一级菜单处理流程showLoginMenu();break;}System.out.print("输入错误,请重新输入数字:");flag = false;} while (!flag);}/*** 显示三级菜单-客户信息管理,并处理所有客户信息管理的流程* */public void showCustMMenu() {System.out.println("购物管理系统 > 客户信息管理\n");System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");System.out.println("\t\t\t\t 1. 显 示 所 有 客 户 信 息\n");System.out.println("\t\t\t\t 2. 添 加 客 户 信 息\n");System.out.println("\t\t\t\t 3. 修 改 客 户 信 息\n");System.out.println("\t\t\t\t 4. 查 询 客 户 信 息\n");System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");System.out.print("请选择,输入数字或按'n'返回上一级菜单:");Scanner scanner = new Scanner(System.in);boolean flag = true;do {// 创建客户信息管理对象,并设置数据,这里的数据还是原始的那些数据CustManagement custmanagement = new CustManagement();custmanagement.setData(goodsName, goodsPrice, custNo, custBirth, custScore);String s = scanner.next();// 客户选择"显示所有客户信息"if (s.equals("1")) {custmanagement.show();break;}// 客户选择"添加客户信息"if (s.equals("2")) {custmanagement.add();break;}// 客户选择"修改客户信息"if (s.equals("3")) {custmanagement.modify();break;}// 客户选择"查询客户信息"if (s.equals("4")) {custmanagement.search();break;}// 客户选择"返回上一级菜单"if (s.equals("n")) {showMainMenu();break;}System.out.println("输入错误, 请重新输入数字:");flag = false;} while (!flag);}/*** 显示三级菜单-真情回馈,并处理所有真情回馈的流程* */public void showSendGMenu() {System.out.println("购物管理系统 > 真情回馈\n");System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");System.out.println("\t\t\t\t 1. 幸 运 大 放 送\n");System.out.println("\t\t\t\t 2. 幸 运 抽 奖\n");System.out.println("\t\t\t\t 3. 生 日 问 候\n");System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");System.out.print("请选择,输入数字或按'n'返回上一级菜单:");Scanner scanner = new Scanner(System.in);// 创建礼物管理对象,并设置数据,这里的数据还是原始的那些数据GiftManagement giftmanagement = new GiftManagement();giftmanagement.setData(goodsName, goodsPrice, custNo, custBirth, custScore);boolean flag = true;do {String s = scanner.next();// 客户选择"幸运大放送"if (s.equals("1")) {giftmanagement.sendGoldenCust();break;}// 客户选择"幸运抽奖"if (s.equals("2")) {giftmanagement.sendLuckyCust();break;}// 客户选择"生日问候"if (s.equals("3")) {giftmanagement.sendBirthCust();break;}// 客户选择"返回上一级菜单"if (s.equals("n")) {showMainMenu();break;}System.out.println("输入错误, 请重新输入数字:");flag = false;} while (!flag);}/*====================定义该类所拥有的变量====================*/public String goodsName []; // 商品的名称public double goodsPrice[]; // 商品的价格public int custNo []; // 顾客的会员号public String custBirth []; // 顾客的生日public int custScore []; // 顾客的积分
}
3.6 CustManagement类
package cn.itcast;import java.util.Scanner;/*** 顾客信息管理类* * @author**/
public class CustManagement {/*** 空构造方法* */public CustManagement() {}/*** 设置顾客信息管理类的数据信息* * @param as* @param ad* @param ai* @param as1* @param ai1*/public void setData(String as[], double ad[], int ai[], String as1[], int ai1[]) {goodsName = as;goodsPrice = ad;custNo = ai;custBirth = as1;custScore = ai1;}/*** 返回上一级菜单,即二级菜单-客户信息管理菜单* */public void returnLastMenu() {System.out.print("\n\n请按'n'返回上一级菜单:");Scanner scanner = new Scanner(System.in);boolean flag = true;doif (scanner.next().equals("n")) {// 返回上一级菜单,这里新建了一个菜单对象,只是在用户看来其实还是同样的处理流程,// 不过对于程序来说却又开始了一个新的二级菜单处理流程Menu menu = new Menu();menu.setData(goodsName, goodsPrice, custNo, custBirth, custScore);menu.showCustMMenu();} else {System.out.print("输入错误, 请重新'n'返回上一级菜单:");flag = false;}while (!flag);}/*** 添加客户信息* */public void add() {System.out.println("购物管理系统 > 客户信息管理 > 添加客户信息\n\n");Scanner scanner = new Scanner(System.in);System.out.print("请输入会员号(<4位整数>):");int i = scanner.nextInt();System.out.print("请输入会员生日(月/日<用两位数表示>):");String s = scanner.next();System.out.print("请输入积分:");int j = scanner.nextInt();int k = -1;int l = 0;do {if (l >= custNo.length)break;// 寻找数组中的第一个空位置,用来存储新的顾客信息if (custNo[l] == 0) {k = l;break;}l++;} while (true);custNo [k] = i;custBirth[k] = s;custScore[k] = j;System.out.println("新会员添加成功!");// 返回上一级菜单returnLastMenu();}/*** 修改客户信息* */public void modify() {System.out.println("购物管理系统 > 客户信息管理 > 修改客户信息\n\n");System.out.print("请输入会员号:");Scanner scanner = new Scanner(System.in);int i = scanner.nextInt();System.out.println(" 会员号 生日 积分 ");System.out.println("------------|------------|---------------");int j = -1;int k = 0;do {if (k >= custNo.length)break;// 显示该会员的信息if (custNo[k] == i) {System.out.println((new StringBuilder()).append(custNo[k]).append("\t\t").append(custBirth[k]).append("\t\t").append(custScore[k]).toString());j = k;break;}k++;} while (true);// 该会员存在,则进行修改信息流程if (j != -1) {System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");System.out.println("\t\t\t\t1.修 改 会 员 生 日.\n");System.out.println("\t\t\t\t2.修 改 会 员 积 分.\n");System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");System.out.print("请选择,输入数字:");switch (scanner.nextInt()) {case 1: // "修改会员生日"System.out.print("请输入修改后的生日:");custBirth[j] = scanner.next();System.out.println("生日信息已更改!");break;case 2: // "修改会员积分"System.out.print("请输入修改后的会员积分:");custScore[j] = scanner.nextInt();System.out.println("会员积分已更改!");break;}} else {System.out.println("抱歉,没有你查询的会员。");}// 返回上一级菜单returnLastMenu();}/*** 查询客户信息* */public void search() {System.out.println("购物管理系统 > 客户信息管理 > 查询客户信息\n");Scanner scanner = new Scanner(System.in);for (String s = "y"; s.equals("y"); s = scanner.next()) {System.out.print("请输入会员号:");int i = scanner.nextInt();System.out.println(" 会员号 生日 积分 ");System.out.println("------------|------------|---------------");boolean flag = false;int j = 0;do {if (j >= custNo.length)break;// 显示该会员的信息if (custNo[j] == i) {System.out.println((new StringBuilder()).append(custNo[j]).append("\t\t").append(custBirth[j]).append("\t\t").append(custScore[j]).toString());flag = true;break;}j++;} while (true);if (!flag)System.out.println("抱歉,没有你查询的会员信息。");System.out.print("\n要继续查询吗(y/n):");}// 返回上一级菜单returnLastMenu();}/*** 显示所有客户信息* */public void show() {System.out.println("购物管理系统 > 客户信息管理 > 显示客户信息\n\n");System.out.println(" 会员号 生日 积分 ");System.out.println("------------|------------|---------------");int i = custNo.length;for (int j = 0; j < i && custNo[j] != 0; j++)System.out.println((new StringBuilder()).append(custNo[j]).append("\t\t").append(custBirth[j]).append("\t\t").append(custScore[j]).toString());// 返回上一级菜单returnLastMenu();}/*====================定义该类所拥有的变量====================*/public String goodsName []; // 商品的名称public double goodsPrice[]; // 商品的价格public int custNo []; // 顾客的会员号public String custBirth []; // 顾客的生日public int custScore []; // 顾客的积分
}
3.7 Pay类
package cn.itcast;import java.util.Scanner;/*** 处理顾客购买商品以及结算的类* * @author* */
public class Pay {/*** 空构造方法* */public Pay() {}/*** 设置购物结算类的数据信息* * @param as* @param ad* @param ai* @param as1* @param ai1*/public void setData(String as[], double ad[], int ai[], String as1[], int ai1[]) {goodsName = as;goodsPrice = ad;custNo = ai;custBirth = as1;custScore = ai1;}/*** 根据会员信息确定折扣率* * @param i* @param ai* @param ai1* @return*/public double getDiscount(int i, int ai[], int ai1[]) {int j = -1;int k = 0;do {if (k >= ai.length)break;if (i == ai[k]) {j = k;break;}k++;} while (true);double d;if (ai1[j] < 1000)d = 0.94999999999999996D;else if (1000 <= ai1[j] && ai1[j] < 2000)d = 0.90000000000000002D;else if (2000 <= ai1[j] && ai1[j] < 3000)d = 0.84999999999999998D;else if (3000 <= ai1[j] && ai1[j] < 4000)d = 0.80000000000000004D;else if (4000 <= ai1[j] && ai1[j] < 6000)d = 0.75D;else if (6000 <= ai1[j] && ai1[j] < 8000)d = 0.69999999999999996D;elsed = 0.59999999999999998D;return d;}/*** 该类的关键方法,用于处理购物和结算* */public void calcPrice() {String s2 = "";double d1 = 0.0D;double d2 = 0.0D;int l = 0;double d4 = 0;System.out.println("购物管理系统 > 购物结算\n\n");System.out.println("*************************************");System.out.println("请选择购买的商品编号:");// 显示所有的可购买商品信息,这里的信息就是最初的那些初始化商品数据for (l = 0; l < goodsName.length && goodsName[l] != null; l++) {d4++;System.out.println((new StringBuilder()).append(d4).append(": ").append(goodsName[l]).append("\t").toString());}System.out.println("*************************************\n");Scanner scanner = new Scanner(System.in);System.out.print("\t请输入会员号:");int i = scanner.nextInt();// 根据会员信息获取打折信息d4 = getDiscount(i, custNo, custScore); String s1;do {System.out.print("\t请输入商品编号:");int j = scanner.nextInt();System.out.print("\t请输入数目:");int k = scanner.nextInt();double d = goodsPrice[j - 1];String s = goodsName[j - 1];d1 += d * (double) k;s2 = (new StringBuilder()).append(s2).append("\n").append(s).append("\t").append("¥").append(d).append("\t\t").append(k).append("\t\t").append("¥").append(d * (double) k).append("\t").toString();System.out.print("\t是否继续(y/n)");s1 = scanner.next();} while (s1.equals("y"));d2 = d1 * d4; // 打折后的总价System.out.println("\n");System.out.println("*****************消费清单*********************");System.out.println("物品\t\t单价\t\t个数\t\t金额\t");System.out.print(s2);System.out.println((new StringBuilder()).append("\n折扣:\t").append(d4).toString());System.out.println((new StringBuilder()).append("金额总计:\t¥").append(d2).toString());System.out.print("实际交费:\t¥");double d3 = scanner.nextDouble();System.out.println((new StringBuilder()).append("找钱:\t¥").append(d3 - d2).toString());int i1 = ((int) d2 / 100) * 3;int j1 = 0;do {if (j1 >= custNo.length)break;if (custNo[j1] == i) {custScore[j1] = custScore[j1] + i1;System.out.println((new StringBuilder()).append("本次购物所获的积分是: ").append(i1).toString());break;}j1++;} while (true);System.out.print("\n请'n'返回上一级菜单:");if (scanner.next().equals("n")) {// 返回上一级菜单,这里新建了一个菜单对象,只是在用户看来其实还是同样的处理流程,// 不过对于程序来说却又开始了一个新的二级菜单处理流程Menu menu = new Menu();menu.setData(goodsName, goodsPrice, custNo, custBirth, custScore);menu.showMainMenu();}}/*====================定义该类所拥有的变量====================*/public String goodsName []; // 商品的名称public double goodsPrice[]; // 商品的价格public int custNo []; // 顾客的会员号public String custBirth []; // 顾客的生日public int custScore []; // 顾客的积分
}
3.8 GiftManagement类
package cn.itcast;import java.util.Scanner;/*** 礼物管理类* * @author* */
public class GiftManagement {/*** 空构造方法* */public GiftManagement() {}/*** 设置礼物管理类的数据信息* * @param as* @param ad* @param ai* @param as1* @param ai1*/public void setData(String as[], double ad[], int ai[], String as1[], int ai1[]) {goodsName = as;goodsPrice = ad;custNo = ai;custBirth = as1;custScore = ai1;}/*** 返回上一级菜单,即二级菜单-真情回馈菜单* */public void returnLastMenu() {System.out.print("\n\n请按'n'返回上一级菜单:");Scanner scanner = new Scanner(System.in);boolean flag = true;doif (scanner.next().equals("n")) {// 返回上一级菜单,这里新建了一个菜单对象,只是在用户看来其实还是同样的处理流程,// 不过对于程序来说却又开始了一个新的二级菜单处理流程Menu menu = new Menu();menu.setData(goodsName, goodsPrice, custNo, custBirth, custScore);menu.showCustMMenu();} else {System.out.print("输入错误, 请重新'n'返回上一级菜单:");flag = false;}while (!flag);}/*** 生日问候* */public void sendBirthCust() {System.out.println("购物管理系统 > 生日问候\n\n");System.out.print("请输入今天的日期(月/日<用两位表示>):");Scanner scanner = new Scanner(System.in);String s = scanner.next();System.out.println(s);String s1 = "";boolean flag = false;for (int i = 0; i < custBirth.length; i++)if (custBirth[i] != null && custBirth[i].equals(s)) {s1 = (new StringBuilder()).append(s1).append(custNo[i]).append("\n").toString();flag = true;}// 这里的礼物是固定的,所以没有用礼物类if (flag) {System.out.println("过生日的会员是:");System.out.println(s1);System.out.println("恭喜!获赠MP3一个!");} else {System.out.println("今天没有过生日的会员!");}// 返回上一级菜单returnLastMenu();}/*** 幸运抽奖,注意这里是随机的抽奖,所以需要随机数,只需要自己制定一个抽奖规则就可以* */public void sendLuckyCust() {System.out.println("购物管理系统 > 幸运抽奖\n\n");System.out.print("是否开始(y/n):");Scanner scanner = new Scanner(System.in);if (scanner.next().equals("y")) {int i = (int) (Math.random() * 10D); // 产生一个随机数String s = "";boolean flag = false;for (int k = 0; k < custNo.length && custNo[k] != 0; k++) {// 拿随机数与顾客会员号的相应结果进行比较,从而判断是否有顾客中奖int j = (custNo[k] / 100) % 10;if (j == i) {s = (new StringBuilder()).append(s).append(custNo[k]).append("\t").toString();flag = true;}}// 固定的奖品,所以不需要礼物类if (flag)System.out.println((new StringBuilder()).append("幸运客户获赠MP3:").append(s).toString());elseSystem.out.println("无幸运客户。");}// 返回上一级菜单returnLastMenu();}/*** 幸运大放送,取积分最高的会员作为幸运者,送其奖品* */public void sendGoldenCust() {System.out.println("购物管理系统 > 幸运大放送\n\n");int i = 0;int j = custScore[0];for (int k = 0; k < custScore.length && custScore[k] != 0; k++) {// 找到积分最高的会员if (custScore[k] > j) {j = custScore[k];i = k;}}System.out.println((new StringBuilder()).append("具有最高积分的会员是: ").append(custNo[i]).append("\t").append(custBirth[i]).append("\t").append(custScore[i]).toString());// 创建礼物类,并对礼物信息进行设置,这里的礼物是固定的信息Gift gift = new Gift();gift.name = "苹果笔记本电脑";gift.price = 12000D;System.out.print("恭喜!获赠礼品: ");System.out.println(gift);// 返回上一级菜单returnLastMenu();}/*====================定义该类所拥有的变量====================*/public String goodsName []; // 商品的名称public double goodsPrice[]; // 商品的价格public int custNo []; // 顾客的会员号public String custBirth []; // 顾客的生日public int custScore []; // 顾客的积分
}
3.9 Gift类
package cn.itcast;/*** 用来存放真情回馈中的礼物的类*/public class Gift {/*** 空构造方法* */public Gift() {}/*** 根据礼物对象的变量返回礼物的全部信息* */public String toString() {return (new StringBuilder()).append("一个价值¥").append(price).append("的").append(name).toString();}/*====================定义该类所拥有的变量====================*/public String name ; // 礼物名字public double price; // 礼物价格
}
3.10 代码总结
4. 总结
JAVA简单项目购物系统的整个开发过程详解(内含源码和注释)相关推荐
- 【Vue 实战项目】后台管理系统登录页详解附源码
提示:前端查漏补缺,仅代表个人观点. 文章目录 一.先看效果图 二.实战步骤 1. 创建项目 2. 引入库 3. 登录页关键代码 三.页面源代码 总结 提示:项目源代码除了登录页面还有动态路由 一.先 ...
- Java毕设项目东理咨询交流论坛计算机(附源码+系统+数据库+LW)
Java毕设项目东理咨询交流论坛计算机(附源码+系统+数据库+LW) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Ec ...
- Java毕设项目艾灸减肥管理网站计算机(附源码+系统+数据库+LW)
Java毕设项目艾灸减肥管理网站计算机(附源码+系统+数据库+LW) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Ec ...
- Java毕设项目仓库进销存管理系统计算机(附源码+系统+数据库+LW)
Java毕设项目仓库进销存管理系统计算机(附源码+系统+数据库+LW) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ E ...
- Java毕设项目爱家家政公司网站计算机(附源码+系统+数据库+LW)
Java毕设项目爱家家政公司网站计算机(附源码+系统+数据库+LW) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ Ec ...
- Java毕设项目教育培训机构信息管理系统计算机(附源码+系统+数据库+LW)
Java毕设项目教育培训机构信息管理系统计算机(附源码+系统+数据库+LW) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行) ...
- Java毕设项目滁州市住房公积金管理中心网站计算机(附源码+系统+数据库+LW)
Java毕设项目滁州市住房公积金管理中心网站计算机(附源码+系统+数据库+LW) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也 ...
- Java毕设项目桌游店会员管理系统计算机(附源码+系统+数据库+LW)
Java毕设项目桌游店会员管理系统计算机(附源码+系统+数据库+LW) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm也行)+ E ...
- 基于JAVA企业员工考勤系统的设计与实现计算机毕业设计源码+数据库+lw文档+系统+部署
基于JAVA企业员工考勤系统的设计与实现计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA企业员工考勤系统的设计与实现计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目 ...
- 基于JAVA超市自助结账系统的设计与实现计算机毕业设计源码+系统+数据库+lw文档+部署
基于JAVA超市自助结账系统的设计与实现计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA超市自助结账系统的设计与实现计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈: 项目 ...
最新文章
- java websocket_理清 WebSocket 和 HTTP 的关系
- AngularJs2与AMD加载器(dojo requirejs)集成
- CCF NOI1144 众数
- sublime txt常用插件推荐
- 平庸技术流,用 WebApi +AngularJS 实现网络爬虫
- day37-数据库分组查询
- python去掉空白行_python去掉空白行的多种实现代码
- 对字符串进行 匹配,查找,替换,判断。
- mysql下载安装安装包_mysql下载安装包及安装步骤
- 确定互异字符(编程基础)
- 命令行窗口-隐藏黑窗口
- 大宝收购案花落强生 静待商务部审批
- win10停止更新_烦人的Windows10更新,教你如何有效的关闭。
- java面试-jvm
- 《让荧光舞一直挥舞下去》
- 计算机一直重启无法进入系统,电脑进不了系统一直重启怎么处理
- 唯物辩证法-马克思主义辩证法
- 蓝牙室内定位,SOC芯片NRF52832
- Java虚拟机:Java虚拟机结构
- Windows8和MacOS10.9双系统安装及Mac常用软件安装--联想E49A