1、目标
会使用StringBuffer 操作字符串
会使用Date类和Calendar类操作日期时间
会使用SimpleDateFormat类格式化日期时间
使用集合框架和实用类完成超市管理系统
2、实用类补充——StringBuffer类
StringBuffer
对字符串频繁修改(如字符串连接)时,使用StringBuffer类可以大大提高程序执行效率
StringBuffer声明
StringBuffer strb = new StringBuffer();
StringBuffer strb = new StringBuffer("aaa");
StringBuffer使用
sb.toString(); //转换为String类型
sb.append("**"); //追加字符串
sb.insert(1,"**"); //插入字符串
将一个数字字符串转换成逗号分隔的数字串,即从右边开始每三个数字用逗号分隔
package exercise01;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
System.out.println("请输入一串数字");
int s = sc.nextInt();
StringBuffer strb = new StringBuffer();
strb.append(s);
for (int i = strb.length()-3 ;i>0;i-=3){
strb.insert(i,",");
}
System.out.println(strb);
}
}
String类与StringBuffer类
String是不可变对象
经常改变内容的字符串最好不要使用String
StringBuffer是可变的字符串
字符串经常改变的情况可使用StringBuffer,更高效
JDK5.0后提供了StringBuilder,等价StringBuffer
3、实用类补充——操作日期时间
获取当前日期
java.ytil.Date类:表示日期和时间
提供操作日期和时间各组成部分的方法
java.text.SimpleDateFormat类
//创建日期对象
Date date = new Date();
//定制日期格式
SimpleDateFormat formater = new SimpleDateFormat("yyyy- MM-dd HH:mm:ss");
String now = formater.format(date);
System.out.println(now);
Calendar类
抽象类,java.util.Calendar
用于设置和获取日期/时间数据的特定部分
方法或属性 | 说明 |
int get(int field) | 返回给定日历字段的值 |
MONTH | 指示月 |
DAY_OF_MONTH | 指示一个月中的某天 |
DAY_OF_WEEK | 指示一个星期中的某天 |
需求说明获取当前时间,使用SimpleDateFormat以“年-月-日”方式显示计算2015年4月6日是一年中的第几星期
这个函数时间不太准确,通过查询得知是因为开发者编写的问题,这里的月份为13个月份,而且我们输入月份的时候还需要让月份+1。
package exercise02;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Test {
public static void main(String[] args) {
Date date = new Date();
SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String now = formater.format(date);
System.out.println(now);
Calendar ca = Calendar.getInstance();
// ca.setFirstDayOfWeek(Calendar.MONDAY);
// ca.set(Calendar.YEAR,2015);
// ca.set(Calendar.MONTH,3);
// ca.set(Calendar.DAY_OF_MONTH,6);
// ca.set(2015,4,6);
System.out.println("2015年4月6日是星期" + ca.get(Calendar.DAY_OF_WEEK));
// Calendar calendar = Calendar.getInstance();
//
// // 设置2015年4月6日
// calendar.set(2015, 5, 6);
//
// // 获取星期几
// int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
//
// // 输出结果
// System.out.println("2015年4月6日是星期" + dayOfWeek);
}
}
4、超市会员管理系统
要求
借助集合框架及实用类实现该系统、
积分累计
积分兑换
查询
剩余积分
修改密码
开卡
退出
类:
Test (测试类)
CustomVip类(会员用户)
ShopVipService(服务类)
Goods(可兑换商品信息)
Test
package ShopVipSystem;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
//创建业务
ShopVipService sp = new ShopVipService();
String name; //用户名
String pwd; //面膜
int integal; //积分
sp.start();
Scanner sc = new Scanner(System.in);
System.out.println("******欢迎来到超市会员管理系统******");
while(true){
System.out.println("1、积分累计 \n 2、积分兑换 \n 3、查询剩余积分 \n 4、修改密码 \n 5、开卡 \n 6、退出");
System.out.print("请选择您要进行的操作:");
int d = sc.nextInt();
switch(d){
case 1:
//输出用户信息
System.out.println("积分累计");
System.out.println("请输入您的账号");
name = sc.next();
System.out.println("请输入您的密码");
pwd = sc.next();
sp.addi(name,pwd);
// sp.addI();
break;
case 2:
System.out.println("积分兑换");
System.out.println("请输入您的账号");
name = sc.next();
System.out.println("请输入您的密码");
pwd = sc.next();
sp.conversion(name,pwd);
break;
case 3:
// sp.info();
System.out.println("查询剩余积分");
System.out.println("请输入您的账号");
name = sc.next();
System.out.println("请输入您的密码");
pwd = sc.next();
sp.select(name,pwd);
break;
case 4:
System.out.println("修改密码");
System.out.println("请输入您的账号");
name = sc.next();
System.out.println("请输入您的密码");
pwd = sc.next();
sp.resetpwd(name,pwd);
break;
case 5:
//添加用户用到
System.out.println("开卡");
System.out.println("请输入用户名");
name = sc.next();
System.out.println("请输入密码");
pwd= sc.next();
System.out.println("请输入积分");
integal = sc.nextInt();
sp.add(name,pwd,integal);
break;
default:break;
}
if (d == 6){
System.out.println("谢谢使用");
break;
}else {
System.out.println("输入0返回");
d = sc.nextInt();
}
}
}
}
ShopVipService
package ShopVipSystem;
import java.util.ArrayList;
import java.util.Scanner;
public class ShopVipService {
ArrayList<CustomVip> cv = new ArrayList<>();
ArrayList<Goods> goods = new ArrayList<>();
Scanner sc = new Scanner(System.in);
public void start() {
//管理员
Admin a = new Admin("admin","admin");
//用户信息
CustomVip cv1 = new CustomVip(10001, "张三", "123456", 200);
CustomVip cv2 = new CustomVip(10002, "李四", "123456", 300);
CustomVip cv3 = new CustomVip(10003, "王五", "123456", 400);
CustomVip cv4 = new CustomVip(10004, "李明", "123456", 500);
CustomVip cv5 = new CustomVip(10005, "张强", "123456", 600);
cv.add(cv1);
cv.add(cv2);
cv.add(cv3);
cv.add(cv4);
cv.add(cv5);
//商品信息
Goods goods1 = new Goods(1,"食用油",200);
Goods goods2 = new Goods(2,"电磁炉",400);
Goods goods3 = new Goods(3,"吹风机",300);
Goods goods4 = new Goods(4,"洗衣液",100);
goods.add(goods1);
goods.add(goods2);
goods.add(goods3);
goods.add(goods4);
}
//输出基本信息
public void info() {
for (CustomVip cc : cv) {
System.out.println("id:" + cc.getId() + ",用户名:" + cc.getName() + ",积分余额" + cc.getIntegral());
}
}
//开卡
public void add(String name, String pwd, int integal) {
CustomVip cc = new CustomVip(cv.get(cv.size() - 1).getId() + 1, name, pwd, integal);
cv.add(cc);
}
//查询积分
public void select(String name, String pwd) {
CustomVip flag = login(name, pwd);
if (!"".equals(flag.getName())) {
System.out.println("您的积分为:" + flag.getIntegral());
} else {
System.out.println("无法查询积分");
}
}
//登录
public CustomVip login(String name, String pwd) {
for (CustomVip cc : cv) {
if (name.equals(cc.getName()) && pwd.equals(cc.getPwd())) {
System.out.println("登录成功");
return cc;
} else {
System.out.println("登录失败");
return new CustomVip(0,"","",0);
}
}
System.out.println("您的账号未开卡");
return new CustomVip(0,"","",0);
}
//重置密码
public void resetpwd(String name,String pwd){
CustomVip cc = login(name,pwd);
if (!"".equals(cc.getName())){
System.out.println("请输入您的新密码");
String repwd = sc.next();
cc.setPwd(repwd);
}else{
System.out.println("无法修改新密码");
}
}
//增加积分
public void addi(String name,String pwd){
CustomVip cc= login(name,pwd);
if (!"".equals(cc.getName())){
System.out.println("请输入需要增加的积分");
int integal = sc.nextInt();
cc.setIntegral(cc.getIntegral()+integal);
System.out.println("积分累计成功,您目前积分为:" + cc.getIntegral());
}else{
System.out.println("无法为您增加积分");
}
}
public void conversion(String name,String pwd){
CustomVip cc= login(name,pwd);
if (!"".equals(cc.getName())){
goodsInfo();
System.out.println("请输入您要兑换的商品id:");
int id = sc.nextInt();
if(goods.get(id-1).getIntegal() > cc.getIntegral()){
System.out.println("您的积分不够,请选择其他商品");
}else {
cc.setIntegral(cc.getIntegral()-goods.get(id-1).getIntegal());
System.out.println("恭喜您兑换成功,您兑换后的剩余积分为" + cc.getIntegral());
}
}else{
System.out.println("无法为您兑换商品");
}
}
public void goodsInfo(){
for (Goods goods : goods){
System.out.println(" " + goods.getId() + "," + goods.getName() + "," + goods.getIntegal());
}
}
}
CustomVip
package ShopVipSystem;
public class CustomVip {
private int id;
private String name;
private String pwd;
private int integral;
public CustomVip(int id, String name, String pwd, int integral) {
this.id = id;
this.name = name;
this.pwd = pwd;
this.integral = integral;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public int getIntegral() {
return integral;
}
public void setIntegral(int integral) {
this.integral = integral;
}
}
Goods
package ShopVipSystem;
public class Goods {
private int id;
private String name;
private int integal;
public Goods(int id, String name, int integal) {
this.id = id;
this.name = name;
this.integal = integal;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getIntegal() {
return integal;
}
public void setIntegal(int integal) {
this.integal = integal;
}
}