StringBuffer
与 StringBuilder
对字符串频繁修改(如字符串连接)时,使用 StringBuffer
类可以大大提高程序执行效率
//速度慢,线程安全
StringBuffer strb = new StringBuffer();
strb.append("hello");
strb.append(" World!"); //向后添加字符串
strb.insert(5,"HSK"); //在指定位置插入字符串
System.out.println(strb.toString); //转换为String类型
//速度快,线程不安全
StringBuilder strb1 = new StringBuilder();
strb.append("hello");
strb.append(" World!"); //向后添加字符串
strb.insert(5,"HSK"); //在指定位置插入字符串
System.out.println(strb1.toString); //转换为String类型
日期操作
Date 类型:new Date() 获得当前时间,位于 java.util.Date
包中
SimpleDateFormat
格式化日期类
//创建日期对象
Date date = new Date();
System.out.println("当前日期和时间:" +date);
//定制日期格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss");
String now = sdf.format(date);
System.out.println("格式化后的日期:" +now);
Calendar 类
Calendar calendar = Calendar.getInstance();
//获取年份
int year = calendar.get(Calendar.YEAR);
//获取月份
int month = calendar.get(Calendar.MONTH)+1;
//获取日
int day = calendar.get(Calendar.DAY_OF_MONTH);
//获取星期几
int week = calendar.get(Calendar.DAY_OF_WEEK)-1;
System.out.println("当前日期:" +year+ "年" +month+ "月" +day+ "日星期" +week);
System.currentTimeMillis(); //返回 1970年1月1日0时0分0秒到现在的毫秒数,主要用来计算代码执行时间
超市会员管理系统
超市会员类
package ShoppingSystem;
//超市会员类
public class Member {
//姓名、卡号、密码、积分、开卡日期
private String name;
private int id;
private String password;
private int score;
private String date;
public Member(){
}
public Member(String name, int id, String password, int score, String date) {
this.name = name;
this.id = id;
this.password = password;
this.score = score;
this.date = date;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
}
超市会员管理类
package ShoppingSystem;
import java.text.SimpleDateFormat;
import java.util.*;
//超市会员管理类
public class MemberManage {
//管理所有会员信息
List<Member> memberList = new ArrayList<>();
Scanner sc = new Scanner(System.in);
//输出菜单
public void menu(){
System.out.println("**********欢迎来到超市会员管理系统**********");
System.out.println("1.开卡 2.修改密码 3.积分累计 4.积分兑换 5.查询剩余积分 6.退出");
System.out.println("****************************************");
System.out.print("请输入您的选择:");
}
//项目整体流程
public void course(){
do {
menu();
int choice = sc.nextInt();
switch (choice){
case 1:
openCard();
continue;
case 2:
if (changePassword()){
System.out.println("密码修改成功!");
}
continue;
case 3:
if (addScore()){
System.out.println("积分累计成功!");
}
continue;
case 4:
if (convert()){
System.out.println("积分兑换成功!");
}
continue;
case 5:
queryScore();
continue;
case 6:
System.out.println("感谢您的使用,欢迎下次光临!!!");
break; //跳出switch
default:
System.out.println("您的操作有误,请重新选择!");
continue;//结束本次循环,进入下次循环
}
break; //跳出循环
}while (true);
}
//系统随机生成8位会员卡号
public int getId(){
Random random = new Random();
int id;
do {
id = 1000000 + random.nextInt(99999999);
} while(memberList.contains(id));
return id;
}
//开卡
public void openCard(){
Member member = new Member();
System.out.print("请输入您的注册姓名:");
member.setName(sc.next());
System.out.print("请输入您的注册密码:");
member.setPassword(sc.next());
//密码不能低于6位
while (member.getPassword().length() < 6){
System.out.print("密码长度不能低于6位,请重新输入:");
member.setPassword(sc.next());
}
member.setId(getId());
member.setScore(100);
//开卡日期
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
member.setDate(sdf.format(date));
//将注册成功的会员添加到集合中
memberList.add(member);
System.out.println("恭喜您开通会员卡成功!系统默认赠送您100积分,您的会员卡号为:"+member.getId()+",开卡日期为:"+member.getDate());
}
//验证会员是否存在
//查询条件:会员卡号+密码
public Member getMember(Member m){
Member member = null;
for (Member everymember : memberList) {
if (m.getId() == everymember.getId() && m.getPassword().equals(everymember.getPassword())){
//找到会员,会员存在
member = everymember;
}
}
return member;
}
//修改密码
public boolean changePassword(){
boolean flag = true; //验证密码是否成功
Member member = new Member();
System.out.print("请输入您的会员卡号:");
member.setId(sc.nextInt());
System.out.print("请输入您的会员卡密码:");
member.setPassword(sc.next());
member = getMember(member);
if (member != null){
//会员卡号和密码正确,找到会员,允许修改密码
System.out.print("请输入新的会员密码:");
String newPassword;
boolean flagnewPassword; //新密码是否合法
do {
newPassword = sc.next();
if (newPassword.length() < 6){
System.out.println("密码长度不能低于6位,请重新输入:");
flagnewPassword = false;
}else {
member.setPassword(newPassword);
flag = true; //修改密码成功
flagnewPassword = true; //密码格式正确
}
}while (!flagnewPassword);
}else {
System.out.println("会员卡号或密码错误,请重新输入!");
flag = false;
}
return flag;
}
//积分累计
public boolean addScore(){
boolean flag = true; //验证累计积分是否成功
Member member = new Member();
System.out.print("请输入您的会员卡号:");
member.setId(sc.nextInt());
System.out.print("请输入您的会员卡密码:");
member.setPassword(sc.next());
member = getMember(member); //查找会员
if (member != null){
//会员存在可以累计积分
System.out.print("请输入您本次消费金额(消费一元累计一积分):");
int money = sc.nextInt();
member.setScore(member.getScore() + money);
System.out.println("恭喜您,本次消费成功,本次消费金额为:"+money+",当前剩余积分为:"+member.getScore());
flag = true;
}else {
System.out.println("您输入的会员卡号或密码错误,无法累计积分!");
flag = false;
}
return flag;
}
//查询剩余积分
public void queryScore(){
Member member = new Member();
System.out.print("请输入您的会员卡号:");
member.setId(sc.nextInt());
System.out.print("请输入您的会员卡密码:");
member.setPassword(sc.next());
member = getMember(member); //查找会员
if (member != null){
System.out.println("姓名\t会员卡号\t剩余积分\t开卡日期");
System.out.println(member.getName()+"\t"+member.getId()+"\t"+member.getScore()+"\t"+member.getDate());
}else {
System.out.println("您输入的会员卡号或密码错误,无法查询积分!");
}
}
//积分兑换
public boolean convert(){
boolean flag = true; //验证积分兑换是否成功
Member member = new Member();
System.out.print("请输入您的会员卡号:");
member.setId(sc.nextInt());
System.out.print("请输入您的会员卡密码:");
member.setPassword(sc.next());
member = getMember(member); //查找会员
if (member != null){
System.out.print("请输入您需要兑换使用的积分(100积分抵用0.1元,不足100积分不做抵用):");
int score = sc.nextInt();
//对积分兑换进行判断
if (score <= member.getScore()){
member.setScore(member.getScore() - score);
System.out.println("您的消费金额中使用会员积分抵消了"+score/100*0.1+"元");
flag = true;
}else{
System.out.println("抱歉,您的积分不足,无法兑换!");
flag = false;
}
}else {
System.out.println("您输入的会员卡号或密码错误,无法积分兑换!");
flag = false;
}
return flag;
}
}
程序入口,测试类
package ShoppingSystem;
//程序入口,测试类
public class ShoppingTest {
public static void main(String[] args) {
MemberManage memberManage = new MemberManage();
memberManage.course();
}
}