Java OOP 8 实用类
文章目录
一、学习目标
- 掌握枚举的用法
- 掌握包装类和基本数据类型间相互转换的方法
- 掌握日期类的用法
- 掌握Random类的用法
二、Java API
Java应用程序编程接口(Java Application Programming Interface)
- 是运行库的集合
预先定义了一些接口和类
还特指API的说明文档,也称API帮助文档
常用包
包 描述 java.lang
编写Java程序时最广泛使用的包,自动导入所有的程序中,包含了Java程序的基础类和接 口。包装类、String类等常用的类都包含在此包中, 还提供了用于管理类的动态加载、外部进程创建、主机环境查询和安全策略实施等系统操作的类 java.util
包含系统辅助类,特别是Collection、List和Map等集合类 java.time
包含对日期时间进行处理的类,如创建日期对象,格式化日期等 java.io 包含与输入/输出有关的类,如文件操作等类 java.net 包含与网络有关的类,如Socket、ServerSocket等类 java.sql 包含与数据库相关的类,如Connection、Statement等类
三、枚举
3.1为什么使用枚举?
问题:定义果树的生长状态,包括“生长期”、“成熟期” 和 “已死亡”
public class Constants { public static final String GROW = "生长期"; public static final String MATURE = "采摘期"; public static final String DEAD = "已死亡"; }
分析:数据库存储、状态判断时,int类型数据的执行效率高
public class Constants { public static final int GROW = 0; public static final int MATURE = 1; public static final int DEAD = 2; }
问题:如果要实现遍历所有的果树生长状态信息,或自动获取果树状态的个数等更强大的数据展示和处理功能,则需要自行编码,是否有更好的解决方案?
分析:使用枚举类型
3.2什么是枚举?
- 枚举由一组固定的常量组成的类型,JDK1.5引入
- 继承自
java.lang.Enum
类语法
访问修饰符 enum 枚举名 { 常量1[,常量2...[;] ] //[其他成员] } //说明: //enum:表示是枚举类型 //常量1[,常量2...[;] ] :可以定义多个常量,表示不同的枚举值,逗号作为分隔符 //枚举中可以定义其他成员,须置于枚举常量后
示例
public enum Genders { Male,Female; }
经验:通常,使用枚举表示一组有限的值,实现对输入的值进行约束
3.3如何使用枚举?
枚举使用示例
定义7个枚举常量,代表一周中的7天,查看一周中每天日程安排
public enum Week { MON,TUE,WED,THU,FRI,SAT,SUN; }
测试代码
public class WeekTest{ public void doWhat(Week day) { switch(day) {//case关键字后的常量必须是Week中定义的枚举常量 case MON: case TUE: case WED: case THU: case FRI: System.out.println("工作日,努力写代码!"); break; case SAT: System.out.println("星期六,休息!看电影!"); break; case SUN: System.out.println("星期日,休息!打篮球!"); break; default: System.out.println("地球上一个星期就7天。"); } } }
public static void main(String[] args) { WeekTest wt = new WeekTest(); wt.doWhat(Week.THU); Week sat = Week.SAT; wt.doWhat(sat); }
运行结果:
工作日,努力写代码! 星期六,休息!看电影!
修改main()方法中代码,调用枚举的values()方法,返回一个对象数组,即:枚举中全部内容
public static void main(String[] args) { WeekTest wt = new WeekTest(); for(Week w:Week.values()) { wt.doWhat(w); } }
运行结果:
工作日,努力写代码! 工作日,努力写代码! 工作日,努力写代码! 工作日,努力写代码! 工作日,努力写代码! 星期六,休息!看电影! 星期日,休息!打篮球!
3.4常见错误
指出下面代码的错误
public void doWhat(Week day) { switch(day) { case MON: case TUE: case WED: case THU: case Week.FRI://编译错误 System.out.println("工作日,努力写代码!"); break; case SAT: System.out.println("星期六,休息!看电影!"); break; case SUN: System.out.println("星期日,休息!打篮球!"); break; default: System.out.println("地球上一个星期就7天。"); } }
四、枚举方法
每一个枚举类型成员都是Enum类的对象
可以调用Enum类的方法,实现枚举的遍历、比较等操作
常用方法
方法 描述 T[] values() 以数组形式返回枚举类型的所有成员 T valueOf() 将普通字符串转换为枚举实例 int compareTo() 比较两个枚举成员在定义时的顺序,结果为负整数、零或正整数,表示当前对象 小于、等于或大于指定对象 int ordinal() 获取枚举成员的索引位置 使用枚举方法实现枚举的遍历和比较
package com.aiden.commons.demo2; //星期枚举 enum Week { //定义枚举类型 MON, TUE, WED, THU, FRI, SAT, SUN } //测试类 public class EnumTest { public static void main(String[] args) { //遍历枚举 System.out.println("*********foreach遍历枚举元素*********"); for (Week w : Week.values()) { System.out.println(w); } System.out.println("*********获取枚举的个数*********"); System.out.println("一周有" + Week.values().length + "天。"); System.out.println("*********使用索引遍历枚举元素*********"); for (int i = 0; i < Week.values().length; i++) { System.out.println("索引" + Week.values()[i].ordinal() + ",值:" + Week.values()[i] + "。"); } System.out.println("*********枚举元素比较*********"); System.out.println((Week.valueOf("MON")).equals(Week.MON));//字符串转换为枚举再进行比较 System.out.println(Week.FRI.compareTo(Week.TUE)); } }
运行结果
*********foreach遍历枚举元素********* MON TUE WED THU FRI SAT SUN *********获取枚举的个数********* 一周有7天。 *********使用索引遍历枚举元素********* 索引0,值:MON。 索引1,值:TUE。 索引2,值:WED。 索引3,值:THU。 索引4,值:FRI。 索引5,值:SAT。 索引6,值:SUN。 *********枚举元素比较********* true 3
五、包装类
问题
ArrayList集合的元素为Object类型,向其中添加基本类型数据时,程序为什么不报错呢?
ArrayList fruitList = new ArrayList(); fruitList.add("香水梨") ; fruitList.add("苹果梨"); //添加基本数据类型的数据 fruitList.add(5); fruitList.add(2.8); fruitList.add('甜');
基本数据类型是不支持面向对象机制的,不具备对象的特征,为程序开发带来了一定方便的同时,也会受到一些制约
添加到集合的基本类型数据自动转换为包装类对象
将基本数据类型封装到一个类中,即将基本类型包装成一个类类型
Java为每一种基本类型都提供了一个包装类
保存于java.lang包中
用途
- 作为和基本数据类型对应的类型,方便对象的操作
- 包含每种基本数据类型的相关属性
- 如最大值、最小值等,以及相关的操作方法
包装类关系图
包装类和基本数据类型对应表
类型 长度 默认值 包装类 byte 8位 0 java.lang.Byte
short 16位 0 java.lang.Short
int 32位 0 java.lang.Integer
long 64位 0 java.lang.Long
float 32位 0.0 java.lang.Float
double 64位 0.0 java.lang.Double
char 16位 \u0000~\uFFFF
java.lang.Character
boolean 1位 false、true java.lang.Boolean
不同应用场景中,基本数据类型和包装类型间要进行相互转换以完成特定操作
基础数据类型===> 包装类
基本数据类型向包装类转换示例
包装类的构造方法
语法
public Type (type value)//Type:表示包装类,type:基本数据类型 public Type (String value)
示例 使用构造方法将基本数据类型值包装为包装类对象
Integer intValue = new Integer(21); //或 Integer intValue = new Integer("21");
package com.aiden.commons.demo3; /** * 基本数据类型向包装类转换 */ public class Test { public static void main(String[] args) { boolean bl = true; //通过构造器实现基本数据类型向包装类转换 Boolean blObj = new Boolean(bl); Integer itObj = new Integer(35); Character chObj = new Character('男'); System.out.println(blObj + "," + itObj + "," + chObj); //将字符串转换为Boolean对象 Boolean bObj = new Boolean("true"); Boolean bObj2 = new Boolean("TRue");//不区别大小写 Boolean bObj3 = new Boolean("hello");//非true即为false System.out.println(bObj + "," + bObj2 + "," + bObj3); } }
运行结果
true,35,男 true,true,false
调用包装类的
valueOf()
方法也可实现从基本数据类型到包装类型的转换,大家可自行查阅API帮助文档学习常见错误
//运行时将出现java.lang.NumberFormatException异常 Long lObj = new Long("hello");
//Char型数据不能使用字符串构造包装类对象 Character chobj2=new Character("男");
注意:
除Character类外,其他包装类可将一个字符串作为参数构造它们的实例对象
通常使用的方法
语法:
public type typeValue( );
如:
byteValue()
、charValue()
方法,相应的返回值则为 byte、charpackage com.aiden.commons.demo4; /** * 包装类转换为基本数据类型 */ public class Test { public static void main(String[] args) { boolean bl = true; //通过构造器实现基本数据类型向包装类转换 Boolean blObj = new Boolean(bl); Integer itObj = new Integer(35); Character chObj = new Character('男'); //包装类转换为基本数据类型 boolean b1 = blObj.booleanValue(); int i = itObj.intValue(); char ch = chObj.charValue(); System.out.println(b1 + "," + i + "," + ch); } }
六、装箱拆箱
自动装箱(
Autoboxing
)
- 把基本类型变量直接转换为对应的包装类对象,或者转换为Object类型对象
自动拆箱(
AutoUnboxing
)
- 与装箱相反,将包装类对象转换成对应的基本类型变量
示例:
package com.aiden.commons.demo5; /** * 自动装箱拆箱操作用法 */ public class BoxTest { public static void main(String[] args) { //基本类型变量转换为包装类 Integer inObj = 5; Object boolObj = true; System.out.println(inObj + "," + boolObj); //包装类转换为基本数据类型 int it = inObj; System.out.println(it); if (boolObj instanceof Boolean) { //先把Object对象强制转换为Boolean类型,再赋值给boolean变量 boolean b = (Boolean) boolObj; System.out.println(b); } } }
自动装箱拆箱大大简化了基本类型和包装类型相互转换的过程
编码时,基本数据类型和包装类型要相互匹配
Integer
对象只能自动拆箱成int变量,不能试图拆箱成boolean
类型变量
int
变量也只能自动装箱成Integer
对象,而不能是Boolean对象即使可以赋值给Object对象,也只是利用了Java中向上自动转型特性
基本数据类型和包装类对象间的相互转换工作会增加系统的额外负担,影响代码的运行性能
包装类对象只有在基本数据类型需要用对象表示时才使用,但它并不能取代基本数据类型
七、日期类
- JDK1.8中,所有的日期/时间基础类都包含在
java.time
包中- 是不可变的线程安全的
- 在绝大多数情况下,这些类能够有效地处理一些公共的需求
- 常用类
类 描述 示例 LocalDate 表示日期(年/月/日),不包含时间 2020/11/24 LocalTime 表示时间(时/分/秒/毫秒),不包含日期 15:32:12 LocalDateTime 表示日期和时间(年/月/日/时/分/秒/毫秒) 2020/11/24 15:32
- 都是不可变的对象
- 提供简单的日期或时间
- 不包含与时区相关的信息
日期类的通用方法
方法 描述 日期类 now() 据当前时间创建对象返回日期对象 日期类 of(int year, Month month, int dayOfMonth) 据指定日期/时间创建日期类对象 Month getMonth() 获取月份 int getDayOfMonth() 返回当前日期对象的月份天数 int getYear() 返回当前日期对象的年份 日期类 plusDays() 在指定日期上添加天数 日期类 plusWeeks() 在指定日期上添加周数 日期类 plusMonths() 在指定日期上添加月数 日期类 plusYears() 在指定日期上添加年数 示例
LocalDate localDate = LocalDate.now(); //获取当前日期 LocalTime localTime = LocalTime.now(); //获取当前时间
日期格式化
使用
DateTimeFormatter
类对日期格式化,使之按指定格式输出DateTimeFormatter
类位于java.time.format
包常用方法
方法 描述 ofPattern() 传入格式字符串,规范化日期输出格式 format() 将日期格式化为字符串 示例
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日" ); //两种格式化方式 String str1 = localDate.format( formatter ); String str2 = formatter.format( localDate );
日期格式化示例
package com.aiden.commons.demo6; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.Scanner; /** * 时间类测试 */ public class DateTest { public static void main(String[] args) { //1.获取现在时间 LocalDateTime today = LocalDateTime.now(); //2.创建格式化器 DateTimeFormatter fm1 = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss"); DateTimeFormatter fm2 = DateTimeFormatter.ofPattern("yyyy-MM-dd"); //3.将日期格式化为字符串 String str1 = today.format(fm1);//获得格式化后的日期+时间字符串 String str2 = today.format(fm2);//获得格式化后的日期字符串 System.out.println("当前日期(日期+时间):" + str1 + "。"); System.out.println("当前日期:" + str2 + "。"); //4.提取日期中的年、月、日信息 System.out.println("年:" + today.getYear() + " 月:" + today.getMonth() + " 日:" + today.getDayOfMonth()); //5.根据间隔时间输出日期 System.out.print("距离下次播种大约还有几个月?(1~12间的整数):"); Scanner in = new Scanner(System.in); LocalDateTime future = today.plusMonths(in.nextLong()); String str3 = future.format(fm2); System.out.println("下次播种时间约为:" + str3 + "。"); //6.根据输入时间输出 System.out.print("请输入本季计划开始收割日期(格式:yyyy-MM-dd):"); LocalDate ld = LocalDate.parse(in.next()); String str4 = ld.format(fm2); System.out.println("收割开始日期为" + str4 + ",预祝好收成!"); } }
运行效果
当前日期(日期+时间):2022年04月05日 11:57:22。 当前日期:2022-04-05。 年:2022 月:APRIL 日:5 距离下次播种大约还有几个月?(1~12间的整数):2 下次播种时间约为:2022-06-05。 请输入本季计划开始收割日期(格式:yyyy-MM-dd):2022-08-15 收割开始日期为2022-08-15,预祝好收成!
八、Random类
通过一个种子以任意或非系统方式生成随机数
位于java.util包
构造方法
方法 描述 Random() 创建一个随机数生成器 Random(long seed) 使用单个long种子创建一个随机数生成器 nextInt()重载方法
方法 描述 int nextInt(); 返回下一个伪随机数,它是此随机数生成器序列中均匀分布的int值 int nextInt(int n); 取自此随机数生成器序列的在0(包括)和指定值n(不包括)之间均匀分布的int值 注意:
- 使用同样的一个种子值初始化两个Random对象,如果用每个对象调用相同的方法,得到的随机数也是相同的
- 未设置种子值时,默认使用当前时间的毫秒数作为种子
Random
类还定义了得到long
型、boolean
型、float
型等伪随机数的方法,具体用法可查看API帮助文档Random类示例
随机生成10个10以内大于或等于0的整数,并显示输出
package com.aiden.commons.demo7; import java.util.Random; /** * 随机数测试 */ public class RandomTest { public static void main(String[] args) { //创建一个Random对象 Random rand = new Random(); //随机生成20个随机整数,并显示 for (int i = 0; i < 10; i++) { int num = rand.nextInt(10); System.out.println("第" + (i + 1) + "个随机数是:" + num); } } }
运行效果
第1个随机数是:5 第2个随机数是:8 第3个随机数是:8 第4个随机数是:0 第5个随机数是:8 第6个随机数是:9 第7个随机数是:1 第8个随机数是:4 第9个随机数是:5 第10个随机数是:1
九、综合练习
需求描述1
在商城消费之后可获取积分,积分兑换成青币后可在商城选购礼物
- 注册:录入用户姓名和密码,要求密码为6位(不区分大小写)
- 注册完成后,随机生成8位数字会员编号,赠送100积分
- 输出会员编号、注册日期和积分数
- 积分累计:根据消费金额换算并累计积分,每消费1元的1个积分
- 积分兑换:每100个积分,可兑换1元青币;兑换后,更新剩余积分数
- 积分查询:查看会员的剩余总积分
- 修改密码:接受会员当前密码和新密码,执行密码修改
- 退出:退出当前系统
需求描述2
在商城消费之后可获取积分,积分兑换成青币后可在商城选购礼物
实现功能:
- 注册
- 积分累计
- 积分兑换
- 积分查询
- 修改密码
- 退出
需求描述3
在商城消费之后可获取积分,积分兑换成青币后可在商城选购礼物
实现思路
1. 定义会员类Member
2. 定义操作类MemberDao
3. 定义测试类,调试并运行程序代码
具体实现代码:
package com.aiden.scoremall; /** * 会员类 */ public class Member { //姓名 会员卡号 密码 会员积分 private String name;//姓名 private int cardId;//会员卡号 private String password;//密码 private int score;//会员积分 private String registerDate; //注册日期 public Member() { } public Member(String name, int cardId, String password, int score) { this.name = name; this.cardId = cardId; this.password = password; this.score = score; } public Member(String name, int cardId, String password, int score, String registerDate) { super(); this.name = name; this.cardId = cardId; this.password = password; this.score = score; this.registerDate = registerDate; } public String getRegisterDate() { return registerDate; } public void setRegisterDate(String registerDate) { this.registerDate = registerDate; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getCardId() { return cardId; } public void setCardId(int cardId) { this.cardId = cardId; } 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; } }
package com.aiden.scoremall; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.Scanner; public class MemberDao { Scanner input = new Scanner(System.in); List<Member> memberList = new ArrayList<Member>(); Member member = new Member(); public void menu() { System.out.println("*************************欢迎进入青青网校积分商城***************************************"); System.out.println("1.注册 2.积分累计 3.积分兑换 4.积分查询 5.修改密码 6.退出"); System.out.println("****************************************************************************************"); System.out.print("请选择:"); } public void start() { do { menu(); int choose = input.nextInt(); switch (choose) { case 1: register(); continue; case 2: if (saveScore()) { System.out.println("积分累计成功!"); } else { System.out.println("积分累计失败!"); } continue; case 3: if (minusScore()) { System.out.println("积分兑换成功!"); } else { System.out.println("积分兑换失败!"); } continue; case 4: showScore(); continue; case 5: if (changePwd()) { System.out.println("密码修改成功!"); } else { System.out.println("密码修改失败!"); } continue; case 6: System.out.println("感谢您的使用,欢迎下次使用!"); break; default: System.out.println("您的操作有误,请重新选择:"); continue; } break; } while (true); } //注册 public void register() { Member member = new Member(); System.out.print("请输入注册姓名:"); member.setName(input.next()); //会员编号随机生成 member.setCardId(this.createId()); System.out.print("请输入注册密码:"); //会员密码不能小于6位 String pwd; boolean flag = true; do { pwd = input.next(); if (pwd.length() < 6) { System.out.print("会员密码不能小于6位,请重新输入注册密码:"); flag = false; } else { flag = true; member.setPassword(pwd); } } while (!flag); member.setScore(100); //增加会员注册日期 LocalDate date = LocalDate.now(); //当天日期 DateTimeFormatter fm = DateTimeFormatter.ofPattern("yyyy-MM-dd"); String registDate = fm.format(date); member.setRegisterDate(registDate); memberList.add(member); System.out.println("恭喜,注册成功,系统赠送您100积分!您的会员编号:" + member.getCardId() + " 注册日期:" + member.getRegisterDate() + "。"); } //查询会员是否存在,会员密码不区分大小写 public Member hasMember(Member member) { if (member.getPassword() != null) { for (int i = 0; i < memberList.size(); i++) { if (memberList.get(i).getCardId() == member.getCardId() && memberList.get(i).getPassword().equalsIgnoreCase(member.getPassword())) { return memberList.get(i); } } } else { for (int i = 0; i < memberList.size(); i++) { if (memberList.get(i).getCardId() == member.getCardId()) { return memberList.get(i); } } } return null; } //积分累计 public boolean saveScore() { Member member = new Member(); System.out.print("请输入您的会员编号:"); member.setCardId(input.nextInt()); System.out.print("请输入您的会员密码:"); member.setPassword(input.next()); if ((member = hasMember(member)) != null) { System.out.print("请输入您此次消费金额(消费1元累计1积分):"); int score = input.nextInt(); member.setScore(member.getScore() + score); return true; } else { System.out.println("您输入的会员编号或密码错误,无法积累积分!"); } return false; } //积分兑换 public boolean minusScore() { Member member = new Member(); System.out.print("请输入您的会员编号:"); member.setCardId(input.nextInt()); System.out.print("请输入您的会员密码:"); member.setPassword(input.next()); if ((member = hasMember(member)) != null) { System.out.println("您当前的积分是:" + member.getScore() + "。"); System.out.print("请输入您需要兑换使用的积分(100积分抵用1元,不足100的积分不做抵用):"); int score = input.nextInt(); if (score < 100) { System.err.println("输入的积分不能小于100!"); return false; } else if (score <= member.getScore()) { member.setScore(member.getScore() - score); System.out.println("您本次兑换" + score / 100 + "元青币,剩余积分为" + member.getScore() + ",可以选购礼物啦。"); return true; } else { System.out.println("抱歉,您的积分不够,无法抵用消费金额。"); } } else { System.out.println("您输入的会员编号或密码错误,无法完成积分兑换!"); } return false; } //生成随机编号 public int createId() { boolean flag = true; Random random = new Random(); int id = random.nextInt(100000000); for (Member member : memberList) { if (member.getCardId() == id) { id = random.nextInt(100000000); } } return id; } //查询积分 public void showScore() { Member member = new Member(); System.out.print("请输入您的会员编号:"); member.setCardId(input.nextInt()); System.out.print("请输入您的会员编号密码:"); member.setPassword(input.next()); if ((member = hasMember(member)) != null) { System.out.println("姓名\t会员编号\t剩余积分\t注册日期"); System.out.println(member.getName() + "\t\t" + member.getCardId() + "\t\t" + member.getScore() + "\t\t" + member.getRegisterDate()); } else { System.out.println("您输入的会员编号或密码错误,无法查询积分!"); } } //修改会员密码 public boolean changePwd() { Member member = new Member(); System.out.print("请输入您的会员编号:"); member.setCardId(input.nextInt()); System.out.print("请输入您的会员密码:"); member.setPassword(input.next()); if ((member = hasMember(member)) != null) { System.out.print("请输入新的会员密码:"); //新的会员密码不能小于6位 String pwd; boolean flag = true; do { pwd = input.next(); if (pwd.length() < 6) { System.out.print("会员密码不能小于6位,请重新输入会员密码:"); flag = false; } else { flag = true; member.setPassword(pwd); } } while (!flag); return true; } else { System.out.println("您输入的会员编号或密码错误,无法修改密码!"); } return false; } }
package com.aiden.scoremall; public class TestMember { public static void main(String[] args) { MemberDao dao = new MemberDao(); try { dao.start(); } catch (Exception ex) { ex.printStackTrace(); } } }
运行结果
*************************欢迎进入青青网校积分商城************************************* 1.注册 2.积分累计 3.积分兑换 4.积分查询 5.修改密码 6.退出 ************************************************************************************ 请选择:1 请输入注册姓名:aiden 请输入注册密码:123456 恭喜,注册成功,系统赠送您100积分!您的会员编号:50435326 注册日期:2022-04-05。 *************************欢迎进入青青网校积分商城************************************* 1.注册 2.积分累计 3.积分兑换 4.积分查询 5.修改密码 6.退出 ************************************************************************************ 请选择:2 请输入您的会员编号:50435326 请输入您的会员密码:123456 请输入您此次消费金额(消费1元累计1积分):1000 积分累计成功! *************************欢迎进入青青网校积分商城************************************* 1.注册 2.积分累计 3.积分兑换 4.积分查询 5.修改密码 6.退出 ************************************************************************************ 请选择:3 请输入您的会员编号:50435326 请输入您的会员密码:123456 您当前的积分是:1100。 请输入您需要兑换使用的积分(100积分抵用1元,不足100的积分不做抵用):100 您本次兑换1元青币,剩余积分为1000,可以选购礼物啦。 积分兑换成功! *************************欢迎进入青青网校积分商城************************************* 1.注册 2.积分累计 3.积分兑换 4.积分查询 5.修改密码 6.退出 ************************************************************************************ 请选择:4 请输入您的会员编号:50435326 请输入您的会员编号密码:123456 姓名 会员编号 剩余积分 注册日期 aiden 50435326 1000 2022-04-05 *************************欢迎进入青青网校积分商城************************************* 1.注册 2.积分累计 3.积分兑换 4.积分查询 5.修改密码 6.退出 ************************************************************************************ 请选择:5 请输入您的会员编号:50435326 请输入您的会员密码:123456 请输入新的会员密码:123123 密码修改成功! *************************欢迎进入青青网校积分商城************************************* 1.注册 2.积分累计 3.积分兑换 4.积分查询 5.修改密码 6.退出 ************************************************************************************ 请选择:6 感谢您的使用,欢迎下次使用!