1.使用数组存储会员信息
需求说明:定义系统的数据类Data,用于存储系统的数据信息,例如会员信息。会员的个人信息(会员号、生日和积分)都存储在数组中,定义3个数组分别存储会员信息。
实现思路:
(1)使用Eclipse创建数据类Data (2)声明Data类的3个数组成员变量custNo(存储会员号)、custBirth(存储生日)和custScore(存储会员积分)。每个数组中具有相同下标的数据代表同一个会员的信息,因此一一对应。 (3)定义Data类的成员方法initial(),用于对数组进行赋值。(4)数组的长度设定为100
/**
* Data.java
* 上机第8章:阶段1: 数据类
*/
public class Data {
/*会员信息*/
int[] custNo = new int[100]; //会员号
String[] custBirth = new String[100]; //会员生日
int[] custScore = new int[100]; //会员积分
public void initial(){
/*客户信息*/
custNo [0] = 1623; //客户1
custBirth[0] = "06/26";
custScore[0] = 5000;
custNo [1] = 1545; //客户2
custBirth[1] = "04/08";
custScore[1] = 2200;
}
}
注:定义的数组长度为100,对于没有进行赋值的数组元素,系统给它一个默认值,对于int型数组,默认值是0,对于String类型的数组,数组元素默认值是null
2.扩展数据类,添加数组存储商品信息
(1)在上一阶段代码Data.java的基础上做 (2)添加两个数组类型的成员变量:goodsName(存储商品名称)和goodsPrice(存储商品价格) (3)扩展initial()方法,给据表给数组赋值
package com.wxws.sms;
/**
* Data.java 上机第8章:阶段2: 数据类
*/
public class Data {
/* 商品信息 */
String[] goodsName = new String[50]; // 商品名称
double[] goodsPrice = new double[50]; // 商品价格
/* 会员信息 */
int[] custNo = new int[100]; // 会员号
String[] custBirth = new String[100]; // 会员生日
int[] custScore = new int[100]; // 会员积分
public void initial() {
/* 客户信息 */
custNo[0] = 1623; // 客户1
custBirth[0] = "06/26";
custScore[0] = 5000;
custNo[1] = 1545; // 客户2
custBirth[1] = "04/08";
custScore[1] = 2200;
/* 商品信息 */
goodsName[0] = "addidas运动鞋"; // 商品1
goodsPrice[0] = 880;
goodsName[1] = "addidasT恤"; // 商品2
goodsPrice[1] = 420.78;
goodsName[2] = "Nike运动鞋"; // 商品3
goodsPrice[2] = 900;
}
}
3.实现添加会员信息功能(使用数组进行数据存储)
需求说明:
(1)实现客户管理类CustManagement (2)实现添加新会员功能:从控制台获取用户输入(会员号、生日和会员积分),并将录入的信息保存在数组的第一个空位
实现思路:
(1)创建客户管理类CustManagement (2)对数组进行处理之前,要完成数据加载,创建Data类的一个实例,并编写方法对它进行初始化 (3)编写添加新会员的方法add()
public void add(){
//提示用户输入会员号、生日和积分
//查询会员信息数组中第一个空位下标
//一一对应向3个数组中该位置添加数组元素
}
package com.wxws.sms;
import java.util.Scanner;
/**
* CustManagement.java 第8章阶段3:客户管理类
*/
public class CustManagement {
Data data = new Data(); // 创建一个数据类对象
/**
* 加载数据
*/
public void setData() {
data.initial();
}
/**
* 添加会员信息:阶段3
*/
public void add() {
/* 添加会员信息 */
System.out.println("\n");
System.out.println("我行我素购物管理系统 > 客户信息管理 > 添加客户信息\n\n");
Scanner input = new Scanner(System.in);
System.out.print("请输入会员号(<4位整数>):");
int no = input.nextInt();
System.out.print("请输入会员生日(月/日<用两位数表示>):");
String birth = input.next();
System.out.print("请输入积分:");
int score = input.nextInt();
int index = -1; // 记录插入位置的下标
for (int i = 0; i < data.custNo.length; i++) {
if (data.custNo[i] == 0) { // 查找第一个空位(元素默认值为0)
index = i; // 记录元素下标
break;
}
}
data.custNo[index] = no; // 添加会员号
data.custBirth[index] = birth; // 添加会员生日
data.custScore[index] = score; // 添加会员积分
System.out.println("新会员添加成功!");
}
}
4.实现显示当前会员信息功能
需求说明:扩展客户管理类CustManagement
(1)实现显示"我行我素shopping"当前会员信息功能 (2)编写测试类进行测试
实现思路:
(1)在第3个阶段基础上做
(2)编写CustManagement类的show()方法,显示当前所有会员信息
public void show(){
//循环输出数组中的元素信息,直到会员号为0时跳出循环。
}
(3)编写测试类Test1.java,测试显示会员信息和添加会员信息功能
CustManagement cm = new CustManagement();
cm.setData();//加载数据
cm.show();//显示添加前客户信息
cm.add();//增加客户信息
cm.show();//显示添加后的客户信息
package com.wxws.sms;
import java.util.Scanner;
/**
* CustManagement.java 第8章阶段3:客户管理类
*/
public class CustManagement {
Data data = new Data(); // 创建一个数据类对象
/**
* 加载数据
*/
public void setData() {
data.initial();
}
/**
* 显示会员信息: 阶段4
*/
public void show() {
/* 显示会员信息 */
System.out.println("我行我素购物管理系统 > 客户信息管理 > 显示客户信息\n\n");
System.out.println(" 会员号 生日 积分 ");
System.out.println("------------|------------|---------------");
int length = data.custNo.length; // 获得数组长度
for (int i = 0; i < length; i++) {// 循环输出会员信息
if (data.custNo[i] == 0) {
break; // 客户信息已经显示完毕,直接退出循环
}
System.out.println(data.custNo[i] + "\t\t" + data.custBirth[i] + "\t\t" + data.custScore[i]); // 显示输出
}
}
/**
* 添加会员信息:阶段3
*/
public void add() {
/* 添加会员信息 */
System.out.println("\n");
System.out.println("我行我素购物管理系统 > 客户信息管理 > 添加客户信息\n\n");
Scanner input = new Scanner(System.in);
System.out.print("请输入会员号(<4位整数>):");
int no = input.nextInt();
System.out.print("请输入会员生日(月/日<用两位数表示>):");
String birth = input.next();
System.out.print("请输入积分:");
int score = input.nextInt();
int index = -1; // 记录插入位置的下标
for (int i = 0; i < data.custNo.length; i++) {
if (data.custNo[i] == 0) { // 查找第一个空位(元素默认值为0)
index = i; // 记录元素下标
break;
}
}
data.custNo[index] = no; // 添加会员号
data.custBirth[index] = birth; // 添加会员生日
data.custScore[index] = score; // 添加会员积分
System.out.println("新会员添加成功!");
}
}
package com.wxws.sms;
/**
* 上机第8章:阶段4:测试类-测试显示所有客户信息和添加新客户
*/
public class Test1 {
public static void main(String[] args) {
CustManagement cm = new CustManagement();
cm.setData();// 加载数据
cm.show(); // 显示客户信息
cm.add(); // 添加客户信息
cm.show(); // 显示客户信息
}
}
5.实现幸运大放送
需求说明:说明sendGoldenCust()方法执行的过程和实现的功能
package com.wxws.sms;
import java.util.Scanner;
/**
* GiftManagement.java 上机第8章:阶段5:礼品管理类
*/
public class GiftManagement {
Data data = new Data();
/**
* 加载数据
*/
public void setData() {
data.initial();
}
/**
* 幸运大放送 第8章阶段5阅读
*/
public void sendGoldenCust() {
System.out.println("我行我素购物管理系统 > 幸运大放送\n\n");
int index = 0;
int max = data.custScore[0];
/* 假定积分各不相同 */
for (int i = 0; i < data.custScore.length; i++) {
if (data.custScore[i] == 0) {
break; // 数组后面为空用户
}
/* 求具有最大积分的客户 */
if (data.custScore[i] > max) {
max = data.custScore[i];
index = i;
}
}
System.out.println("具有最高积分的会员是: " + data.custNo[index] + "\t" + data.custBirth[index] + "\t" + data.custScore[index]);
System.out.println("赠送苹果笔记本电脑一台!");
}
}
package com.wxws.sms;
import com.wxws.sms.GiftManagement;
/**
* 上机第8章:阶段5:测试类-测试幸运大放送
*/
public class Test2 {
public static void main(String[] args) {
GiftManagement gm = new GiftManagement();
gm.setData();
gm.sendGoldenCust();
}
}