题目要求:

编写程序:实现登录注册功能,程序一进来如果没有账号就选择注册,如果有账号就直接登录。
注册功能的时候要输入注册账号、设置密码、输入确认密码、输入邮箱号码、输入性别、输入个人简介、输入你的身份证号码、根据身份证号码获取你的出生年月日、输入验证码。
账号就是你的电话号码,不能小于11位 只能是13 、15、18开头的。
密码不能小于6位 不能大于10位, 首字母必须是大写字母开头,密码不能是纯数字,必须有大写字母和小写字母和数字组成。
确认密码必须与设置的密码一致
邮箱号码 必须进行验证 只能是 QQ 和163 邮箱
性别 是根据身份证号码的来判断男和女。
个人简介必须使用可变字符串进行保存设置
必须对身份证号码进行验证 长度验证 (【如果有能力就根据你的身份证号码进行你的省份验证】)
出生年月日 根据你的身份证号码获取你的出生年月日,并计算出你现在的年龄。
随机产生一组数字 四个数字 与输入的验证码进行比对。如果验证码不对就注册失败

第一步:创建UserDao类

利用抽象类进行登录和注册方法的封装,考虑到要用集合存储。所以必须要传入List集合的参数。
package com.xingyun.dao;import java.util.Collection;
import java.util.List;import com.xingyun.bean.User;public interface userDao {void enter(List<User> coll); //登录界面void apply(List<User> coll);//申请界面}

第二步:创建User的实体类

由于要输入用户名 密码 邮箱 身份证号 年 月 日 性别 和 个人简介 所以在这个User实体类中封装了这些属性。
package com.xingyun.bean;public class User{private String userName;//用户名private StringBuilder userPwd;//密码private String email;//邮箱private String  idNumber; //身份证号  private String sex;//性别private String year,money,day;//出生的年月日private StringBuilder intro; //个人简介    public User() {super();// TODO Auto-generated constructor stub}//有参构造方法public User(String userName, StringBuilder userPwd, String email, String idNumber, String sex, String year, String money,String day, StringBuilder intro) {super();this.userName = userName;this.userPwd = userPwd;this.email = email;this.idNumber = idNumber;this.sex = sex;this.year = year;this.money = money;this.day = day;this.intro = intro;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public StringBuilder getUserPwd() {return userPwd;}public void setUserPwd(StringBuilder userPwd) {this.userPwd = userPwd;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getIdNumber() {return idNumber;}public void setIdNumber(String idNumber) {this.idNumber = idNumber;}public StringBuilder getIntro() {return intro;}public void setIntro(StringBuilder intro) {this.intro = intro;}public String getYear() {return year;}public void setYear(String year) {this.year = year;}public String getMoney() {return money;}public void setMoney(String money) {this.money = money;}public String getDay() {return day;}public void setDay(String day) {this.day = day;}}

第三步:创建实现接口的Imp类

实现登录和注册功能
1、首先申请账户的时候,必须满足是手机号,并且是11位的手机号所以利用String.length来判断是否是11位,同时必须是 13 15 18 开头的手机号 ,所以利用,username.indexOf(“13”)==0方法来判断一开始输入的字符是否符合要求。 并且下一次注册的时候会先调用自己定义的查找函数,查看是否有相同的手机号 已经被注册使用了。返回boolean值
@Overridepublic void apply(List<User> coll) {String username = null; //定义的 输入用户名StringBuilder userpwd = null;//定义的输入的 密码  由于要反转密码  所以使用 StringBuilderString email = null;  //定义的email 输入String idNumber = null; //定义的身份证号String year= null,money = null,day= null;  //定义的年 月 日String sex= null;  //定义的 性别int age;StringBuilder intro = null; //定义的个人介绍boolean bools = true; //定义的 输入用户名 循环boolean bool1 = true;//定义的 输入 密码 循环boolean   bool2 = true;//定义的 输入email 循环boolean   bool3 = true;//定义的 输入  身份证号  循环boolean bool4= true;//定义的 输入验证码  循环boolean bool5= true;//定义的  输入个人简介  循环System.out.println("——————申请界面——————");while(bools){System.out.println("请输入用户名(11位手机号--13--15--18-开头的手机号)");username = input.next();if(username.length()==11 && username.indexOf("13")==0||username.indexOf("15")==0||username.indexOf("18")==0){//判断输入的手机号 是否 是 13  15  18 开头  并且是否是  11位boolean rePetitionName = RePetition.RePetitionName(coll,username);  //调用类 让他去查看是否 存在相同的手机号 然后返回Boolean值if(rePetitionName){System.out.println("该用户名已经被注册");}else{bools = false;}}else{System.out.println("用户名输入错误!");}   }
2、注册密码的时候,首先判断输入的不能全是小写字符和数字,所以定义了一个字符串让它为真,然后进行for循环判断 如果全是小写字符或者全是数字就将字符串=假;等到下面第二次判断的时候 如果为假就提示密码输入错误。同时使用 userpwd.charAt(0),来判断输入的是否是大写字母。由于要反转密码 所以定义的密码是StringBuilder类型的。当输入的确认密码和之前输入的密码相同 就将反转的密码 存到List集合里 对象的userpwd中。
  //输入密码的循环while(bool1){ int sumChar=0;  //判断输入的是否全都是 小写字符int sumNum=0;  //判断是否 输入的 全是 纯数字System.out.print("请输入密码(首字母大写!密码在6到10位!密码不能是纯数字!密码必须有大小写字母)");userpwd =new StringBuilder(input.next());String userPwd = userpwd.substring(0, userpwd.length()-1);//将输入的密码截取 下来String bool ="真";for( int j=0;j< userpwd.length();j++){ if((byte) userpwd.charAt(j)>=97 &&(byte) userpwd.charAt(j)<=122){ //如果是 小写字符 sumChar就加一 sumChar++;if(sumChar==userpwd.length()-1){bool = "假";  //如果 输入的 全是 小写字符 就bool 就 变为假}}else if((byte) userpwd.charAt(j)>=48 && (byte) userpwd.charAt(j)<=57){//如果输入的是 数字 sumNum 就加一sumNum++;if(sumNum==userpwd.length()-1){  //直到 这个 sum 等于 这个密码的长度 说明 全是 数字bool = "假";  //就 将字符串 bool  判断为假  }}}                    //判断输入的密码长度 是否 符合  并且  首字母 是不是 大写   然后加上  bool 是否为真if(userpwd.length()>=6 && userpwd.length()<=10&&(byte) userpwd.charAt(0)>=65&&(byte) userpwd.charAt(0)<=90&&bool.equals("真")){System.out.print("请输入确认密码!");  //如果判断为真  就接着 输入 确认密码StringBuilder surepwd = new StringBuilder(input.next());String surePwd = surepwd.substring(0,surepwd.length()-1);  //密码如果 和确认密码 相同 就通过 否则 重新输入密码if(surePwd.equals(userPwd)){System.out.println("密码确认成功!"); //密码确认成功 就 将密码  反序userpwd.reverse();bool1 = false;    //反序 完  以后 退出这个循环}else{System.out.println("密码确认输入错误!-----(请重新输入!)");}}else {System.out.println("错误!请重新输入密码!");}}   
3、注册邮箱时,使用email.endsWith("@qq.com") || email.endsWith("@163.com") 来判断输入的是否符合QQ或者163邮箱标准。如果符合标准,同时会进行自己定义的函数进行查找判断,查看这个邮箱是否已经被使用。
 //输入 邮箱的循环while(bool2){ System.out.print("请输入邮箱账号!(支持QQ 和  163 邮箱)");email = input.next();if(email.endsWith("@qq.com") || email.endsWith("@163.com")){  //先判断 输入的 邮箱 是否是 符合要求的 boolean rePetitionemail = RePetition.RePetitionemail(coll,email); // 是 就 调用类 让他判断 该邮箱 是否已经被注册if(rePetitionemail){  //如果为真 就 继续输入System.out.println("该邮箱已经被注册");}else{ //否则 就 退出循环bool2 = false;}}else {System.out.println("请重新输入---邮箱账号");}
4 、注册身份证时,也同样会进行自己定义的类方法进行查找判断 ,查看这个身份证号是否已经被使用过。如果没有就继续输入同时进行 判断String.length是否等于18位。如果相等, 就调用地域类的方法,同时截取下 身份证上的 年,月,日。来进行该注册人的出生年月日 。以及利用日历类。来获取当前年减去出生年 ,计算出他的年龄 以及 取出身份证号的倒数第二位。查看是否是奇数或者是偶数。来判断注册人的性别。输入完成以后 保存输入的身份证号。
 //输入的 身份证 循环while(bool3){System.out.println("请输入身份证号(18位)!");idNumber=input.next();if(idNumber.length()==18){  //判断输入的  身份证号 是否是 18 位boolean rePetitionID = RePetition.RePetitionID(coll,idNumber); //如果是的话 就接着判断  该身份证号 是否已经被注册使用if(rePetitionID){System.out.println("该身份证号已经被注册");}else{bool3 = false;}//调用地域函数 判断居住地int nativePlaceCode=Integer.parseInt(idNumber.substring(0, 6));//调用NativePlace.getNativePlace方法,将nativePlaceCode参数传递进去,进行地域判断String nativePlace=NativePlace.getNativePlace(nativePlaceCode);//输出地域System.out.println("您位于:"+nativePlace);int sexInt=Integer.parseInt(idNumber.substring(16, 17)); //截取到 这个 身份证号 中的 性别位置if(sexInt%2==0){ //如果是偶数 就是女sex="女";}else {  //否则 就是男sex = "男";}Calendar cl = Calendar.getInstance(); //获取日历对象  //获取到日历对象int yearInt=Integer.parseInt(idNumber.substring(6, 10));  //获取到出生年int moneyInt=Integer.parseInt(idNumber.substring(10, 12)); //获取到出生月int dayInt=Integer.parseInt(idNumber.substring(12, 14)); //获取到出生日System.out.println("你的出生日期是:"+yearInt+"年"+moneyInt+"月"+dayInt+"日"); //然后输出age = cl.get(Calendar.YEAR)-yearInt; //用日历的 年 减去  出生年 就是它的年龄System.out.println("你的年龄是:"+age);System.out.println("你的性别是:"+sex);year = String.valueOf(yearInt); //然后将这个 年  月  日 转换成 字符串money = String.valueOf(moneyInt);day = String.valueOf(dayInt);bool3 =false; //最后退出循环}else{System.out.println("身份证号输入错误!请重新输入");}}
5、输入个人简介。由于个人简介是可以添加的。所以使用StringBuilder来进行定义。同时为了使程序更人性化。利用while循环来反复可以添加字符串进去。提示输入0结束。同时最后截取最后一位字符,比对是否是0,如果是0 就结束输入。如果不是0 就接着输入。。最后删除这个StringBuilder的最后一位0;
 //个人简介while(bool5){System.out.println("请输入个人简介(最后输入0结束):");int substring;intro = new StringBuilder(input.next()); //给 intro 这个StringBuilder 里面输入 东西String intro1;  //定义的 字符形势的 字符串do{ //利用循环输入 intro1 = input.next();  intro.append(intro1); //向这个StringBuilder 中添加东西  最后输入0 结束substring = intro.lastIndexOf("0");  //获取到这个 最后一次 出现0 的位置}while(!(intro.length()-1==substring));  //判断这个0是否 等于 这个最后一个 如果 是 就  非条件转换一下  intro.delete(intro.length()-1, intro.length()); // 最后 删除 这个 最后一个 0bool5 = false;  //跳出这个 输入 个人简介循环}
6、利用Random()类中的方法 来随机生成一位数。然后使用4个这样的方法,最后进行加合。在将这个数字转换成字符串形。来进行验证码的输入。输入正确的话,就提示注册成功。同时使用coll.applend(new User的有参构造方法);向集合中添加这个new的对象。
//输入验证码循环 while(bool4){Random  random = new Random();  //new Random类的 对象int randomNum1= random.nextInt(10); //调用它的nextInt方法  让他生成一个一位数的 随机数int randomNum2= random.nextInt(10);int randomNum3= random.nextInt(10);int randomNum4= random.nextInt(10);int authcode  = randomNum1+randomNum2*10+randomNum3*100+randomNum4*1000; //最后 把他们都加起来   成为一个 四位的随机数String authcodeNum  = String.valueOf(authcode); //将这个随机数 转换成 字符串System.out.println("请输入验证码:"+authcodeNum);String authcodeScanner = input.next();  //然后输入这个随机数  if(authcodeScanner.equals(authcodeNum)){coll.add(new User(username,userpwd,email,idNumber,sex,year,money,day, intro)); //如果相等 就new 这个 User的 构造方法 将这个new的 对象传给这个 coll集合对象System.out.println("账户申请成功");bool4 = false;  //最后跳出循环}else {System.out.println("验证码错误!");}}
7、登录的时候,可以输入手机号,邮箱,身份证号,来进行登录。再一次使用自己定义的类方法。来查找这个用户名相同的时候 返回该对象中的密码。同时在定义一个接受密码的StringBuilder进行密码反转回来,再用String来接受subString 截取出这个密码 。让这个密码和输入的密码比对。成功就登录,否则就提示用户名或者密码输入错误!然后重新输入。直到登录成功!
 @Overridepublic void enter(List<User> coll) {Iterator<User> iterator = coll.iterator();  //定义的 这个集合的iteratorString username = null; //定义的登录输入姓名String userpwd = null; //定义的输入密码StringBuilder pwd2 = null; //定义的接受反转的密码,用来判断的System.out.println("——————登录界面———————");boolean bool = true;boolean bool1 = true;while(bool){System.out.println("用户名/邮箱/身份证号:");username = input.next();System.out.println("密码:");userpwd  = input.next();pwd2 = RePetition.RePetitionDL(coll, username); //调用RePetition 类 穿 coll对象和输入的值 然后接受 返回值pwd2.reverse();String pwd1 = pwd2.substring(0, pwd2.length()); //从StringBulider截取 到 密码if(userpwd.equals(pwd1)){  //判断输入的密码 是否 和 存储的密码相同boolean boolYz = true;while(boolYz){Random  random = new Random();int randomNum1= random.nextInt(10);//生成四位随机数  一位一位 输出int randomNum2= random.nextInt(10); int randomNum3= random.nextInt(10);int randomNum4= random.nextInt(10);int authcode  = randomNum1+randomNum2*10+randomNum3*100+randomNum4*1000;  //随后 把他们加起来生成四位随机数String authcodeNum  = String.valueOf(authcode); //将这个四位数 随机数转换成 字符串System.out.println("请输入验证码登录:"+authcodeNum);String authcodeScanner = input.next();      //定义的输入验证码if(authcodeScanner.equals(authcodeNum)){   // System.out.println("登录成功!");Student stt = new Student();   //创建这个学生类的对象StudentDao sDao = new StudentDaoImp();  // 创建引用对象ContrlTest ct =  new ContrlTest(); //创建管理学生页面ct.ContrlStudent(stt, sDao); //调用管理学生页面的循环 方法boolYz = false; //调用完以后退出 这个 输入验证码循环bool = false; //同时退出登录  循环}else {System.out.println("验证码错误!");}}break; }else {   //如果不对 就System.out.println("账号 or 密码输入错误!");break;}}
8、自己定义的查找类
package com.xingyun.bean;import java.util.Iterator;
import java.util.List;public class RePetition {public static boolean RePetitionName(List<User> coll,String username){Iterator<User> iterator = coll.iterator();while(iterator.hasNext()){User us1 =iterator.next();if(username.equals(us1.getUserName())){                    return true;}}return false;}public static boolean RePetitionemail(List<User> coll,String email){Iterator<User> iterator = coll.iterator();while(iterator.hasNext()){User us1 = iterator.next();if(email.equals(us1.getEmail())){                  return true;}}return false;}public static boolean RePetitionID(List<User> coll,String idNumber){Iterator<User> iterator = coll.iterator();while(iterator.hasNext()){User us1 = iterator.next();if(idNumber.equals(us1.getIdNumber())){                    return true;}}return false;}public static StringBuilder RePetitionDL(List<User> coll,String username){StringBuilder pwd=null;Iterator<User> iterator = coll.iterator();while(iterator.hasNext()){User us1 = iterator.next();if(username.equals(us1.getUserName()) || username.equals(us1.getEmail()) || username.equals(us1.getIdNumber())){ pwd = us1.getUserPwd();return pwd;}}return pwd;}}

第四步:创建一个实现这个登录和注册的类

package com.xingyun.test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;import com.xingyun.bean.Student;
import com.xingyun.bean.User;
import com.xingyun.dao.StudentDao;
import com.xingyun.dao.userDao;
import com.xingyun.dao.imp.StudentDaoImp;
import com.xingyun.dao.imp.userDaoImp;public class TestUser {public void testuser(){Scanner input = new Scanner(System.in);userDao userdao = new userDaoImp();//定义的 userDao的 对象  用于 调用它的方法List<User> coll = new ArrayList(); //定义的List 集合boolean bool = true;while(bool){System.out.println("*************************");System.out.println("         1、登录");System.out.println("         2、注册");System.out.println("         3、退出");System.out.println("*************************");String chose = input.next();switch(chose){case "1":userdao.enter(coll);break; //输入的等于1  就调用 登录方法case "2":userdao.apply(coll);break;//输入的等于2 就调用 这个 注册方法case "3":bool = false;break; //如果 输入的3 就 退出这个循环default :System.out.println("重新输入!"); //否则就 提示重新输入}}System.out.println("退出系统");   }}

第五步:创建一个Test测试类

package com.xingyun.test;import java.util.Calendar;
import java.util.Scanner;  public class Test {  public static void main(String[] args) {TestUser tu = new TestUser(); // new  这个 TestUser 的对象tu.testuser(); //调用 这个方法 即可}}  

实现学生管理系统的注册以及登录

package com.xingyun.dao.imp;import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
import java.util.Scanner;import com.xingyun.bean.RePetition;
import com.xingyun.bean.Student;
import com.xingyun.bean.User;
import com.xingyun.dao.StudentDao;
import com.xingyun.dao.userDao;
import com.xingyun.test.ContrlTest;public class userDaoImp implements userDao{Scanner input = new Scanner(System.in);@Overridepublic void enter(List<User> coll) {Iterator<User> iterator = coll.iterator();  //定义的 这个集合的iteratorString username = null; //定义的登录输入姓名String userpwd = null; //定义的输入密码StringBuilder pwd2 = null; //定义的接受反转的密码,用来判断的System.out.println("——————登录界面———————");boolean bool = true;boolean bool1 = true;while(bool){System.out.println("用户名/邮箱/身份证号:");username = input.next();System.out.println("密码:");userpwd  = input.next();pwd2 = RePetition.RePetitionDL(coll, username); //调用RePetition 类 穿 coll对象和输入的值 然后接受 返回值pwd2.reverse();String pwd1 = pwd2.substring(0, pwd2.length()); //从StringBulider截取 到 密码if(userpwd.equals(pwd1)){  //判断输入的密码 是否 和 存储的密码相同boolean boolYz = true;while(boolYz){Random  random = new Random();int randomNum1= random.nextInt(10);//生成四位随机数  一位一位 输出int randomNum2= random.nextInt(10); int randomNum3= random.nextInt(10);int randomNum4= random.nextInt(10);int authcode  = randomNum1+randomNum2*10+randomNum3*100+randomNum4*1000;  //随后 把他们加起来生成四位随机数String authcodeNum  = String.valueOf(authcode); //将这个四位数 随机数转换成 字符串System.out.println("请输入验证码登录:"+authcodeNum);String authcodeScanner = input.next();        //定义的输入验证码if(authcodeScanner.equals(authcodeNum)){   // System.out.println("登录成功!");Student stt = new Student();   //创建这个学生类的对象StudentDao sDao = new StudentDaoImp();  // 创建引用对象ContrlTest ct =  new ContrlTest(); //创建管理学生页面ct.ContrlStudent(stt, sDao); //调用管理学生页面的循环 方法boolYz = false; //调用完以后退出 这个 输入验证码循环bool = false; //同时退出登录  循环}else {System.out.println("验证码错误!");}}break; }else {   //如果不对 就System.out.println("账号 or 密码输入错误!");break;}}}@Overridepublic void apply(List<User> coll) {String username = null; //定义的 输入用户名StringBuilder userpwd = null;//定义的输入的 密码  由于要反转密码  所以使用 StringBuilderString email = null;  //定义的email 输入String idNumber = null; //定义的身份证号String year= null,money = null,day= null;  //定义的年 月 日String sex= null;  //定义的 性别int age;StringBuilder intro = null; //定义的个人介绍boolean bools = true; //定义的 输入用户名 循环boolean bool1 = true;//定义的 输入 密码 循环boolean  bool2 = true;//定义的 输入email 循环boolean   bool3 = true;//定义的 输入  身份证号  循环boolean bool4= true;//定义的 输入验证码  循环boolean bool5= true;//定义的  输入个人简介  循环System.out.println("——————申请界面——————");while(bools){System.out.println("请输入用户名(11位手机号--13--15--18-开头的手机号)");username = input.next();if(username.length()==11 && username.indexOf("13")==0||username.indexOf("15")==0||username.indexOf("18")==0){//判断输入的手机号 是否 是 13  15  18 开头  并且是否是  11位boolean rePetitionName = RePetition.RePetitionName(coll,username);  //调用类 让他去查看是否 存在相同的手机号 然后返回Boolean值if(rePetitionName){System.out.println("该用户名已经被注册");}else{bools = false;}}else{System.out.println("用户名输入错误!");}   }   //输入密码的循环while(bool1){  int sumChar=0;  //判断输入的是否全都是 小写字符int sumNum=0;  //判断是否 输入的 全是 纯数字System.out.print("请输入密码(首字母大写!密码在6到10位!密码不能是纯数字!密码必须有大小写字母)");userpwd =new StringBuilder(input.next());String userPwd = userpwd.substring(0, userpwd.length()-1);//将输入的密码截取 下来String bool ="真";for( int j=0;j< userpwd.length();j++){ if((byte) userpwd.charAt(j)>=97 &&(byte) userpwd.charAt(j)<=122){ //如果是 小写字符 sumChar就加一 sumChar++;if(sumChar==userpwd.length()-1){bool = "假";  //如果 输入的 全是 小写字符 就bool 就 变为假}}else if((byte) userpwd.charAt(j)>=48 && (byte) userpwd.charAt(j)<=57){//如果输入的是 数字 sumNum 就加一sumNum++;if(sumNum==userpwd.length()-1){  //直到 这个 sum 等于 这个密码的长度 说明 全是 数字bool = "假";  //就 将字符串 bool  判断为假  }}}                    //判断输入的密码长度 是否 符合  并且  首字母 是不是 大写   然后加上  bool 是否为真if(userpwd.length()>=6 && userpwd.length()<=10&&(byte) userpwd.charAt(0)>=65&&(byte) userpwd.charAt(0)<=90&&bool.equals("真")){System.out.print("请输入确认密码!");  //如果判断为真  就接着 输入 确认密码StringBuilder surepwd = new StringBuilder(input.next());String surePwd = surepwd.substring(0,surepwd.length()-1);  //密码如果 和确认密码 相同 就通过 否则 重新输入密码if(surePwd.equals(userPwd)){System.out.println("密码确认成功!"); //密码确认成功 就 将密码  反序userpwd.reverse();bool1 = false;    //反序 完  以后 退出这个循环}else{System.out.println("密码确认输入错误!-----(请重新输入!)");}}else {System.out.println("错误!请重新输入密码!");}}   //输入 邮箱的循环while(bool2){ System.out.print("请输入邮箱账号!(支持QQ 和  163 邮箱)");email = input.next();if(email.endsWith("@qq.com") || email.endsWith("@163.com")){  //先判断 输入的 邮箱 是否是 符合要求的 boolean rePetitionemail = RePetition.RePetitionemail(coll,email); // 是 就 调用类 让他判断 该邮箱 是否已经被注册if(rePetitionemail){  //如果为真 就 继续输入System.out.println("该邮箱已经被注册");}else{ //否则 就 退出循环bool2 = false;}}else {System.out.println("请重新输入---邮箱账号");}}//输入的 身份证 循环while(bool3){System.out.println("请输入身份证号(18位)!");idNumber=input.next();if(idNumber.length()==18){  //判断输入的  身份证号 是否是 18 位boolean rePetitionID = RePetition.RePetitionID(coll,idNumber); //如果是的话 就接着判断  该身份证号 是否已经被注册使用if(rePetitionID){System.out.println("该身份证号已经被注册");}else{bool3 = false;}//调用地域函数 判断居住地int nativePlaceCode=Integer.parseInt(idNumber.substring(0, 6));//调用NativePlace.getNativePlace方法,将nativePlaceCode参数传递进去,进行地域判断String nativePlace=NativePlace.getNativePlace(nativePlaceCode);//输出地域System.out.println("您位于:"+nativePlace);int sexInt=Integer.parseInt(idNumber.substring(16, 17)); //截取到 这个 身份证号 中的 性别位置if(sexInt%2==0){ //如果是偶数 就是女sex="女";}else {  //否则 就是男sex = "男";}Calendar cl = Calendar.getInstance(); //获取日历对象  //获取到日历对象int yearInt=Integer.parseInt(idNumber.substring(6, 10));  //获取到出生年int moneyInt=Integer.parseInt(idNumber.substring(10, 12)); //获取到出生月int dayInt=Integer.parseInt(idNumber.substring(12, 14)); //获取到出生日System.out.println("你的出生日期是:"+yearInt+"年"+moneyInt+"月"+dayInt+"日"); //然后输出age = cl.get(Calendar.YEAR)-yearInt; //用日历的 年 减去  出生年 就是它的年龄System.out.println("你的年龄是:"+age);System.out.println("你的性别是:"+sex);year = String.valueOf(yearInt); //然后将这个 年  月  日 转换成 字符串money = String.valueOf(moneyInt);day = String.valueOf(dayInt);bool3 =false; //最后退出循环}else{System.out.println("身份证号输入错误!请重新输入");}}//个人简介while(bool5){System.out.println("请输入个人简介(最后输入0结束):");int substring;intro = new StringBuilder(input.next()); //给 intro 这个StringBuilder 里面输入 东西String intro1;  //定义的 字符形势的 字符串do{ //利用循环输入 intro1 = input.next();  intro.append(intro1); //向这个StringBuilder 中添加东西  最后输入0 结束substring = intro.lastIndexOf("0");  //获取到这个 最后一次 出现0 的位置}while(!(intro.length()-1==substring));  //判断这个0是否 等于 这个最后一个 如果 是 就  非条件转换一下  intro.delete(intro.length()-1, intro.length()); // 最后 删除 这个 最后一个 0bool5 = false;  //跳出这个 输入 个人简介循环}//输入验证码循环 while(bool4){Random  random = new Random();  //new Random类的 对象int randomNum1= random.nextInt(10); //调用它的nextInt方法  让他生成一个一位数的 随机数int randomNum2= random.nextInt(10);int randomNum3= random.nextInt(10);int randomNum4= random.nextInt(10);int authcode  = randomNum1+randomNum2*10+randomNum3*100+randomNum4*1000; //最后 把他们都加起来   成为一个 四位的随机数String authcodeNum  = String.valueOf(authcode); //将这个随机数 转换成 字符串System.out.println("请输入验证码:"+authcodeNum);String authcodeScanner = input.next();  //然后输入这个随机数  if(authcodeScanner.equals(authcodeNum)){coll.add(new User(username,userpwd,email,idNumber,sex,year,money,day, intro)); //如果相等 就new 这个 User的 构造方法 将这个new的 对象传给这个 coll集合对象System.out.println("账户申请成功");bool4 = false;  //最后跳出循环}else {System.out.println("验证码错误!");}}}}

好像还要写心得!!

啊啊啊!!想玩。。

学生管理系统的注册登录以及管理的具体实现相关推荐

  1. 学生管理系统:含注册登录操作

    目录 一.分包概况: 二.USER包 1.AMain类:主函数所在 2.User类:构造账号属性 3.PasswordOperate包:用于登录,注册,修改密码,查看账号操作 (1)Login类:登录 ...

  2. 关于学生管理系统(注册,登录,学生端)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.注册模块 1.注册模块 2.判断账号是否存在 3.判断账号是否未被注册 4.注册成功的账号的保存 二.登录模块 1 ...

  3. C++单链表学生管理系统(有登录界面)

    C++单链表 学生管理系统 这个程序是我好几天的心血,欢迎大家指正!!! 该程序需要新建三个txt文件.1.login.txt用来存放注册用户的用户名与密码. 2.login2.txt用于登录时将lo ...

  4. Java Swing 邮箱管理系统(实现注册/登录、收/发邮件)

    回顾Swing知识第二天,实现了一个简单的邮箱管理系统 技术点: Swing窗口+MYSQL+Eclipse 主要代码实现: 一.数据库连接类 package Jdbc;import java.sql ...

  5. C#笔记(学生管理系统实战 - 用户登录)

    总算忙过一段时间了,两个月前看了一点点关于 C# 的实战视频,现在看回来居然忘得七七八八,果然学习还是要写笔记,好记性不如烂笔头.. 1 项目框架 用户界面模块 数据访问模块 DAL(即如同 Serv ...

  6. 【学生管理系统】用户登录三种验证方式—图片验证、短信验证、邮件验证

    目录 一.页面需求展示 二.验证方式-按钮组件 三.手机短信验证 四.邮件验证 五.图片验证邮件验证

  7. 教育培训机构学生管理系统

    摘  要 计算机网络如果结合使用信息管理系统,能够提高管理员管理的效率,改善服务质量.优秀的教育培训机构学生管理系统能够更有效管理教育培训机构学生信息业务规范,帮助管理者更加有效管理教育培训机构学生信 ...

  8. Python实现学生管理系统(功能全面)

    标题Python实现学生管理系统 功能描述 1.分为两个界面:(1)登录和注册界面 (2)学生管理系统界面 2.登录功能和之前发布的图书管理系统相同,登录成功后可进入学生管理系统界面,这里不再叙述 3 ...

  9. 学生管理系统 C语言 动态链表 结构体 文件操作 设置密码 输入密码回显星号

    C语言 学生管理系统代码 实现功能 功能:学生管理系统设计,每个学生信息作为一条记录,包括姓名.学号.专业.  性别.年龄.   电话.家庭住址.还可以继续拓展 系统要求实现以下功能: 1.输入功能: ...

最新文章

  1. 【Arduino】开发入门教程【一】什么是Arduino
  2. Centos配置在线yum源
  3. 《Head First设计模式》 读书笔记16 其余的模式(二) 蝇量 解释器 中介者
  4. php protobuf 二进制,PHP环境中使用ProtoBuf数据格式
  5. 使用python对数据集进行批处理
  6. 解决172.17 或者172.18 机房环境下harbor服务器不通的问题
  7. oracle9i使用OMS备份数据
  8. nodeJS之域名DNS
  9. 《Java语言程序设计》(基础篇原书第10版)第五章复习题答案
  10. R语言环境下载及RStudio安装教程
  11. ltspice滑动变阻器在哪_NB物理创新课堂|变阻器
  12. javaweb表格制作举例
  13. 虫师乙醇自动化测试培训第三期
  14. js-面向对象的程序设计,函数表达式
  15. Android通用流行框架大全,零基础入门学习android
  16. 解决win10搜索框无法搜索本地应用或无反应
  17. 亲历2012百度开发者大会
  18. 2018092609-2 选题 Scrum立会报告+燃尽图 02
  19. Tkinter Frame大小设置不起作用
  20. java jmap_Java进程内存分析工具之jmap

热门文章

  1. unity3d折线图
  2. 中职计算机课程教学方法标准,浅谈中职计算机教学模式
  3. 随机用户名 头像 php,PHP随机图片/头像
  4. NYOJ594 还是A+B
  5. 【笔记分享】RS触发器
  6. 3d模型多怎么优化_3D打印外观结构手板模型,使用越来越多
  7. 如果没有杰顿·桑乔,谁应该曼彻斯特联合标志
  8. 企业OA即时通讯系统解决方案
  9. 搭建DNF台服之链接数据库
  10. element 下拉框中树节点选中之后不收回下拉框