import java.sql.SQLOutput;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class MemberDao {
public class Member {
private String name;
private int cardID;
private String password;
private int score;
private String regisDate;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getRegisDate() {
return regisDate;
}
public void setRegisDate(String regisDate) {
this.regisDate = regisDate;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getCardID() {
return cardID;
}
public void setCardID(int cardID) {
this.cardID = cardID;
}
public Member(String name, int cardID, String password, int score, String regisDate) {
this.name = name;
this.cardID = cardID;
this.password = password;
this.score = score;
this.regisDate = regisDate;
}
public Member(){}
public Member(int cardID, String password) {
this.cardID = cardID;
this.password = password;
}
}
}
上述代码是对该程序功能的封装和构造其中有:name . cardID.password.score.regisDate
这几个属性进行封装,构造了一个无参方法 和一个有cardID和password 的有参方法以及所有属性都有的有参方法。
public void menu(){
boolean flag = true;
while (flag) {
System.out.println("青青网校积分商城");
System.out.println("1. 注册");
System.out.println("2. 积分累计");
System.out.println("3. 积分兑换");
System.out.println("4. 积分查询");
System.out.println("5. 修改密码");
System.out.println("6. 退出");
System.out.print("请选择操作:");
int choice = sc.nextInt();
sc.nextLine(); // 消耗换行符
switch (choice) {
case 1:
register();
break;
case 2:
System.out.println("请输入你的会员编号:");
int card = sc.nextInt();
System.out.println("请输入会员密码");
String pwd = sc.nextLine();
member = hasMember(new Member(card, pwd));
if (member != null) {
boolean RE = saveMember();
if (RE) {
System.out.println("ok");
}else{
System.out.println("error");
}
}
break;
case 3:
System.out.println("请输入你的会员编号:");
int C = sc.nextInt();
System.out.println("请输入会员密码");
String P = sc.nextLine();
member = hasMember(new Member(C, P));
if (member != null) {
System.out.println("你当前积分是:"+member.getScore());
System.out.println(minusMember() ? "ok" : "error");
}
break;
case 4:
System.out.println("请输入你的会员编号:");
int Cs = sc.nextInt();
System.out.println("请输入会员密码");
String Ps = sc.nextLine();
member = hasMember(new Member(Cs, Ps));
if (member != null) {
show();
}
break;
case 5:
changePwd();
break;
case 6:
flag = false;
break;
default:
System.out.println("无效的选择,请重新输入。");
}
}
}
上述代码是创建了一个menu,是用来实现菜单的一些基本功能的.
public void register(){
System.out.print("请输入注册姓名:");
String name = sc.nextLine();
System.out.print("请输入注册密码:");
String pwd = sc.nextLine();
String date = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
int card = create();
boolean res =rv.add(new Member(name,card,pwd,100,date));
if(res){
System.out.println("ok");
}else {
System.out.println("error");
}
}
上述代码是实现注册功能
public Member hasMember(Member member){
for(int i = 0;i < rv.size();i++){
Member m = rv.get(i);
if(m.getCardID() == member.getCardID() && m.getPassword().equals(member.getPassword())){
return rv.get(i);
}
}
return null;
}
上述代码是判断该注册信息是否存在或是否被注册
ublic boolean saveMember(){
System.out.println("请输入消费金额:");
int ef = sc.nextInt();
member.setScore(member.getScore()+ef);
for(int i = 0;i < rv.size();i++){
if(member.getCardID() == rv.get(i).getCardID()){
rv.set(i,member);
return true;
}
}
return false;
}
这个方法是用来做积分累计的
public boolean minusMember(){
System.out.println("请输入你要兑换使用的积分:");
int ef = sc.nextInt();
if(ef >=100 && ef % 100 ==0){
member.setScore(member.getScore()-ef);
System.out.println("你本次兑换"+(ef/100)+"剩余积分:"+member.getScore());
for(int i = 0;i < rv.size();i++){
if(member.getCardID() == rv.get(i).getCardID()){
rv.set(i,member);
return true;
}
}
}
return false;
}
这个方法是积分兑换的
public int create(){
LocalDateTime date = LocalDateTime.now();
String s = DateTimeFormatter.ofPattern("hhmmss").format(date);
int id = 0;
if(rv.size() <=0){
s= s+"001";
id = Integer.parseInt(s);
}else {
id =rv.get(rv.size()-1).getCardID();
}
return 0;
}
这个是用来注册会员之后生成的会员编号
public void show(){
System.out.println("姓名"+member.getName());
System.out.println("编号"+member.getCardID());
System.out.println("积分"+member.getScore());
System.out.println("时间"+member.getRegisDate());
}
这个方法是用来展示会员的基本信息的
public boolean changePwd(){
System.out.println("请输入你的会员编号:");
int Cs = sc.nextInt();
System.out.println("请输入会员密码");
String Ps = sc.nextLine();
member = hasMember(new Member(Cs,Ps));
if(member != null){
System.out.println("请输入修改后的密码");
member.setPassword(sc.next());
for (int i = 0;i < rv.size();i++){
if(member.getCardID() == rv.get(i).getCardID()){
rv.set(i,member);
return true;
}
}
}
return false;
}
这个方法让我们来修改用户密码的
public void start(){
menu();
}
创建一个start方法用来调menu菜单的
public class TestMain {
public static void main(String[] args) {
MemberDao memberDao = new MemberDao();
memberDao.start();
}
}
创建TestMain类,对MemberDao类进行实例化,调用start方法。
这个是代码运行后的样子