管理员名称是”accp”,密码是”0000″.
客户管理类
数据类
/**
* 数据类
*扩展阶段1实现的数据类,添加数组存储商品信息(商品名和商品价格)并进行初始化
*商品名 单价
* addidas运动鞋 880
*addudasT恤 420.78
*Nike运动鞋 900
*1.在阶段 代码data的基础上做
*2.添加两个数组类型的成员变量:
*goodsName(存储商品名称)和goodsPrice(存储商品价格)
*3.扩展initial()方法,根据8-2给数组赋值
*/
public class Data {
/**
* int[] 会员号 已经设定长度为100
*/
int[] custNo=new int[100]; //会员号 //会员信息 声明每个数组可以存储100个数据
/**
* String[] 会员生日 已经设定长度为100
*/
String[] custBirth=new String[100]; //会员生日
/**
* int[] 会员积分 已经设定长度为100
*/
int[] custScore=new int[100]; //会员积分
/**
* int[] 商品编号 已经设定长度为100
*/
int[] goodsNo=new int[100];//存储商品编号
/**
* String[] 商品名称 已经设定长度为100
*/
String[] goodsName=new String[100]; //存储商品名称
/**
* double[] 商品价格 已经设定长度为100
*/
double[] goodsPrice=new double[100];//存储商品价格
/**
* 给会员信息数组赋值
*/
public void initial(){
/*客户一*/
custNo [0]=1623; //指定会员号 下标0位置 的值为 1623
custBirth[0]=”06/26″;//指定会员生日 下标0位置 的值为 06/26
custScore[0]=5000;//指定会员积分 下标0位置 的值为 5000
/*客户二*/
custNo [1]=1545; //指定会员号 下标1位置 的值为 1545
custBirth[1]=”04/08″;//指定会员生日 下标1位置 的值为 04/08
custScore[1]=2200;//指定会员积分 下标1位置 的值为 2200
/*客户三*/
custNo [2]=1111; //指定会员号 下标1位置 的值为 1545
custBirth[2]=”06/26″;//指定会员生日 下标1位置 的值为 04/08
custScore[2]=99200;//指定会员积分 下标1位置 的值为 2200
/*商品信息*/
goodsNo[0]=1; //商品编号
goodsName[0]=”addidas运动鞋”; //商品名
goodsPrice[0]=880; //商品价格
goodsNo[1]=2; //商品编号
goodsName[1]=”addudasT恤”; //商品名
goodsPrice[1]=420.78; //商品价格
goodsNo[2]=3; //商品编号
goodsName[2]=”Nike运动鞋”; //商品名
goodsPrice[2]=900; //商品价格
}
}
礼品管理类
import java.util.Scanner;
/*礼品管理类*/
public class GiftManagent {
Scanner input=new Scanner(System.in);
Data data=new Data();
/**
* 加载数据
*/
public void setData(){
data.initial();
}
/**
* 幸运抽奖 的方法
*/
public void sendLuckyCust(){ //2.幸运抽奖
System.out.println(“我行我素购物管理系统>幸运抽奖\n”);
String yesNo=”y”;
while(yesNo.equals(“y”)){
System.out.print(“请输入4位会员号:”);
int number=input.nextInt();
int baiweinum=number/100%10;//分解获得百位数
int random=(int)(Math.random()*10); //产生随机数
System.out.println(random);
if(baiweinum==random){
System.out.println(number+”是幸运用户,多的精美Mp3一个”);
}else{
System.out.println(“谢谢您的支持”);
}
System.out.print(“是否继续(y/n):”);
yesNo=input.next();
if(!yesNo.equals(“y”)||!yesNo.equals(“Y”)){
returnLastMenu();
}
}
//System.out.print(random);
/*int custNo=random; //客户会员号(说明:customer—客户)
int gewei=custNo % 10; //分解获得个位数
int shiwei=custNo/10%10; //分解获得十位数
int baiwei=custNo/100%10;//分解获得百位数
int qianwei=custNo/1000;//
int sum=gewei+shiwei+baiwei+qianwei;
System.out.println(“\n会员卡号”+custNo+”各位之和:”+sum);
if(sum>20){
System.out.println(custNo+”是幸运客户,获精美Mp3一个.”);
}else{
System.out.println(custNo+”谢谢您的支持!”);
}
*/
returnLastMenu();
}
/**
* 幸运大放送 的方法
*/
public void sendGolsentCust(){
System.out.println(“我行我素购物管理系统>幸运大放送\n\n”);
CustManagement cm=new CustManagement();
cm.setData();
int index=0; //定义一个索引 值为0
int max=data.custScore[0]; //定义一个最大值 默认先把会员积分数组0位置的值 赋给max
/*假定积分各不相同*/
for(int i=0;i<data.custScore.length;i++){ //循环遍历积分数组
if(data.custScore[i]==0){ //如果积分下标的值为0 则跳出循环
break;
}
/*求具有最大积分的客户*/
if(data.custScore[i]>max){ //如果积分数组下标 的值 大于 max的值
max=data.custScore[i]; //则将值赋给 max
index=i; //并获取当前数组下标的 号码 赋给索引
}
}
System.out.println(“具有最高积分的会员是:”+data.custNo[index]+”\t”
+data.custBirth[index]+”\t”+data.custScore[index]);
System.out.println(“赠送价值¥12000的苹果笔记本电脑一台!”);
returnLastMenu();
}
/**
* 生日问候 的方法
*/
public void sendBirthCust(){
setData();
System.out.println(“我行我素购物管理系统>生日问候\n\n”);
System.out.print(“请输入今天的日期(月/日<用两位表示>):”);
String date=input.next();
System.out.print(“今天过生日的会员:”);
try{
for(int i=0;i<data.custNo.length;i++){
if(!data.custBirth[i].equals(date)){
continue;
}else{
System.out.print(data.custNo[i]+”\t”);
}
}
}catch(Exception e){ //空指针异常
}finally{
System.out.print(“恭喜获赠MP3一个\n\n”);
System.out.print(“请按\”n\”返回上一级菜单:”);
String n=input.next();
if(n.equals(“n”)||n.equals(“N”)){
Menu mu=new Menu();
mu.showSendGMenu();
}
}
}
/**
* 返回主菜单的方法
*/
public void returnLastMenu(){
System.out.println(“请输入数字0返回上一级菜单”);
int a=input.nextInt();
if(a==0){
Menu mu=new Menu();
mu.showSendGMenu();
}else{
System.out.println(“请重新输入:”);
}
}
}
输入核实类
import java.util.Scanner;
/**
*输入核实类
*/
public class InputVerify {
/**
* 检测输入生日有效性的方法
*/
public String testBirthValid(){
Scanner input=new Scanner(System.in);
System.out.println(“请输入会员生日<月/日 00/00>:”);
String date=input.next();
if(date.indexOf(‘/’)!=2){
System.out.println(“生日形式输入错误!”);
}else{
System.out.println(“该会员的生日是:”+date);
}
return date;
}
/**
* 检测输入管理员密码有效性的方法
*/
public void testPasswordValid(){
Scanner input=new Scanner(System.in);
System.out.println(“请输入会员密码<6~10位>:”);
String password=input.next();
if(password.length()<6||password.length()>10){
System.out.println(“密码形式输入错误!”);
}else{
System.out.println(“该会员的密码是:”+password);
}
}
}
管理员类
/**
* 创建ShopManagementSystem项目结构
* 创建包com.wxws.sms
* 在包中创建管理员类,并设置默认的管理员名称是”accp”,密码是”0000″.
*/
public class Manager { //管理员类
String username=”1″; //用户名默认值
String password=”1″; //密码密码
public String toString() {
return “管理员信息是:”+username+”\t”+password;
}
}
菜单类
import java.util.Scanner;
/**
* 实现菜单类
*创建类的成员方法
*明确每个方法
*1.Menu类的功能是负责显示系统运行中需要的菜单
*2.根据已给出的Menu类的方法,添加showMainMenu()方法显示系统主菜单.
*首先编写方法声明,具体的实现已在第4章中的阶段4中完成,可以直接粘贴MainMenu.java中的main方法
*
*我的错误: 在同一个类里面调用方法 直接写方法名就可以了 不用创建对象不然会报错
*/
public class Menu {
/*商品信息*/
String[] goodsName; //商品名称
double[] goodsPrice;//商品价格
/*会员信息*/
int custNo[]; //会员号
String custBirth[];//会员生日
int custScore[];//会员积分
/**
* 加载系统数据
*/
public void setData(String[] goodsName1,double[] goodsPrice1,int custNo1[],String custBirth1[],int custScore1[]){
goodsName=goodsName1;
goodsPrice=goodsPrice1;
custNo=custNo1;
custBirth=custBirth1;
custScore=custScore1;
}
/**
* 显示登录菜单
*/
public void showLoginMenu(){ //显示登录菜单
System.out.println(“欢迎使用我行我素购物系统1.0版\n\n”);
System.out.println(“**************************\n”);
System.out.println(“\t1. 登 录 系 统\n\n\t2. 退 出\n”);
System.out.println(“**************************\n”);
System.out.print(“请选择输入数字:”);
}
/**
* 显示主菜单
*/
public void showMainMenu(){
System.out.println(“欢迎进入我行我素购物系统”);
System.out.println(“**************************\n”);
System.out.println(“\t1. 客 户 信 息 管 理\n\n\t2. 购 物 结 算\n\n\t3. 真 情 回 馈\n\n\t4. 注 销\n”);
System.out.println(“**************************\n”);
System.out.print(“请选择输入数字:”);
boolean con; //新加代码
do{ //新加代码
con=false; //新加代码
/*输入数字,选择菜单*/
Scanner input=new Scanner(System.in);
int num=input.nextInt();
if(num==1){
showCustMMenu();
}else if(num==2){
Pay p=new Pay();
p.calcPaypay();;
}else if(num==3){
showSendGMenu();
}else if(num==4){
StartSMS start=StartSMS();
start.main(null);
}else{
System.out.print(“输入错误,请重新输入数字”);
con=true;
}
}while(con); //新加代码
//System.out.println(“程序结束”);
}
private StartSMS StartSMS() {
// TODO Auto-generated method stub
return null;
}
/**
* 显示客户管理菜单
*/
public void showCustMMenu(){
System.out.println(“我行我素购物系统>客户信息管理”);
System.out.println(“**************************\n”);
System.out.println(“\t1. 显 示 所 有 客 户 信 息\n\n\t2. 添 加 客 户 信 息\n\n\t3. 修 改 客 户 信 息\n\n\t4. 查 询 客 户 信 息\n”);
System.out.println(“**************************\n”);
System.out.println(“请选择,输入数字或按O返回上一级菜单:”);
CustManagement cm=new CustManagement();
boolean con;
do{
con=false;
System.out.print(“请选择输入数字:”);
Scanner input=new Scanner(System.in);
int num=input.nextInt();
if(num==1){
cm.show();
}else if(num==2){
cm.add();
}else if(num==3){
cm.modify();
}else if(num==4){
cm.seach();
}else if(num==0){
showMainMenu();
}else{
System.out.println(“输入错误,请重新输入数字:”);
con=true;
}
}while(con);
System.out.println(“\n程序结束.”);
}
/**
* 显示礼品馈赠菜单
*/
public void showSendGMenu(){
System.out.println(“我行我素购物系统>真情回馈”);
System.out.println(“**************************\n”);
System.out.println(“\t1. 幸 运 大 放 送\n\n\t2. 幸 运 抽 奖\n\n\t3. 生 日 问 候\n”);
System.out.println(“**************************\n”);
System.out.println(“请选择,输入数字或按O返回上一级菜单:”);
GiftManagent gm=new GiftManagent();
boolean con;
do{
con=false;
System.out.print(“请选择输入数字:”);
Scanner input=new Scanner(System.in);
int num=input.nextInt();
if(num==1){
gm.sendGolsentCust();
}else if(num==2){
gm.sendLuckyCust();
}else if(num==3){
gm.sendBirthCust();
}else if(num==0){
showMainMenu();
}else{
System.out.println(“输入错误”);
con=true;
}
}while(con);
System.out.println(“\n程序结束.”);
}
}
购物结算类
import java.util.Scanner;
/**
*
* @author Administrator
*购物结算 类
*里面有个pay方法 是用来打印购物清单的
*/
public class Pay {
int count; //购入数量
double discount; //会员折扣
double total=0; //购物总金额
double finalPay=0; //打折后需付款
double payment; //实际缴费金额
double returnMoney; //找钱
double allTotal; //多次购物总金额
String name =””; //商品名称
double price=0; //商品价格
int goodsNo; //商品编号
/**
* 扩展购物结算程序,实现自动计算会员折扣
* @param curCustNo
* @param cunst
* @param custScore
* @return
* 已知会员号,根据会员号查找目前的积分,
* 然后计算该会员所享受的会员折扣.
* 会员购物时,根据积分的不通享受不同的折扣
* 从键盘输入会员积分,计算该会员购物时获得的折扣
* 1.****
* 2.天假带啊实现数据加载(可直接复制阶段1Menu类中用于加载系统数据的代码.
* 3.编写带参数的方法实现会员折扣计算(参照第3章的阶段4CalcDiscount.java )
*/
public double getDiscount() {
//根据会员号curCustNo查询对应的下标index
//使用多重if结构判断折扣数目
//使用return返回折扣值
Data data=new Data();
data.initial();
// TODO Auto-generated method stub
System.out.print(“请输入会员号:”);
Scanner input =new Scanner(System.in);
int curCustNo1=input.nextInt();
double discounts=1;
for(int i=0;i<data.custNo.length;i++){
if(data.custNo[i]==curCustNo1){
if(data.custScore[i]<2000){
discounts=0.9;
break;
}else if(data.custScore[i]>=2000&&data.custScore[i]<4000){
discounts=0.8;
break;
}else if(data.custScore[i]>=4000&&data.custScore[i]<8000){
discounts=0.7;
break;
}else if(data.custScore[i]>=8000){
discounts=0.6;
break;
}
}else{
continue;
}
}
return discounts;
}
/**
* 打印产品清单
* */
public void calcPaypay(){
StringBuffer goodsList=new StringBuffer(); //商品清单
Data data=new Data();
data.initial(); //加载数据
System.out.println(“我行我素购物管理系统>购物结算\n\n”);
System.out.println(“********************************************”);
discount=getDiscount();
System.out.println(“请选择购买的商品编号:\n”);
for(int i=0;i<data.goodsName.length;i++){
if(data.goodsNo[i]==0){
continue;
}
System.out.println(data.goodsNo[i]+”\t”+data.goodsName[i]+”\t”+data.goodsPrice[i]+”元”);
}
System.out.println(“********************************************\n”);
Scanner input=new Scanner(System.in);
String answer =”y”;//标识是否继续
while(answer.equals(“y”)) {//answer的值为y时执行循环体
System.out.print(“请输入商品编号:”); //提示输入商品编号
goodsNo=(input.nextInt()-1);
name=data.goodsName[goodsNo];
price=data.goodsPrice[goodsNo];
System.out.print(“请输入购买数量:”); //提示输入购买数量
count=input.nextInt();
total=price*count;
allTotal=allTotal+total;
goodsList.append(name+”\t”+”¥”+price+”\t\t”+count+”\t\t”+”¥”+total+”\t\n”);//连接购物清单
System.out.println(name+”\t”+”¥”+price+”\t”+count+”个\t¥”+total); //输出商品名称和价格
System.out.print(“\n是否继续(y/n):”);
answer=input.next();//用户再次输入是否继续的信息
}
/*计算消费总金额*/
finalPay=allTotal*discount; //计算折后金额
/*打印购物小票*/
System.out.println(“”);
System.out.println(“*******************消费清单*********************”);
System.out.println(“物品\t\t”+”单价\t\t”+”个数\t\t”+”金额\t”);
System.out.println(goodsList);//输出购物清单
System.out.println(“一共消费”+allTotal);
System.out.println(“折扣:”+(discount*10)+”折”);
System.out.println(“折后总计:”+finalPay);
System.out.print(“服务员输入收到的整钱:”);
payment=input.nextDouble();
System.out.println(“实际交费”+payment);
returnMoney=payment-finalPay; //计算找钱金额
System.out.println(“找钱”+returnMoney);
int score=(int) (finalPay/30);
System.out.println(“本次购物所获得的积分是:”+score);
returnLastMenu();
}
public void returnLastMenu(){
System.out.print(“请输入数字0返回上一级菜单:”);
Scanner input=new Scanner(System.in);
boolean con;
do{
con=true;
if(input.next().equals(“0”)){
Menu menu=new Menu();
menu.showMainMenu();
}else{
System.out.println(“输入错误,请重新输入数字0返回上一级菜单:”);
con=false;
}
}while(!con);
}
}
程序入口
import java.util.Scanner;
public class StartSMS {
/**
* 程序入口
* @param Ding
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
/*加载会员信息和商品信息*/
Data data=new Data();
data.initial();
/*初始化系统管理员*/
Manager manager=new Manager();
/**
* 显示登录菜单
*/
Menu menu=new Menu();
//调用setData方法传递数据
menu.setData(data.goodsName, data.goodsPrice, data.custNo, data.custBirth, data.custScore);
menu.showLoginMenu();
Scanner input = new Scanner(System.in);
int choice=input.nextInt();
switch(choice){
case 1:
/*密码验证*/
System.out.print(“请输入用户名:”);
String name=input.next();
System.out.print(“请输入密码:”);
String psw=input.next();
if(name.equals(manager.username)&&psw.equals(manager.password)){
menu.showMainMenu();
}else{
System.out.println(“\n您没有权限进入系统!谢谢!”);
}
break;
case 2:
System.out.println(“谢谢您的使用!”);
break;
}
}
}