利用集合之前的知识完成一个学生管理系统
实现功能
1.注册账号
账号为手机号
密码为大写字母与小写字母和数字组合而成
获取用户email和身份证号
根据用户身份证号判断用户性别与年龄
获取用户出生日期
2.登录账号
根据注册账号进行登录
登录时需要验证码
3.进入登录系统可进行学生管理系统基本的增删改查功能
代码:
学生类
package com.xingyun.bean;
import java.util.Arrays;
import java.util.List;
public class Student {
private String name;//学生姓名
private String classname;//学生班级
private Student []student;//学生数组
private int age;//学生年龄
private int s_id;//学生ID
private List<Student> list;
//构造方法
public Student(String name, String classname, Student[] student, int age, int s_id) {
this.name = name;
this.classname = classname;
this.student = student;
this.age = age;
this.s_id = s_id;
}
public Student() {
// TODO Auto-generated constructor stub
}
//封装
public Student[] getStudent() {
return student;
}
public void setStudent(Student[] student) {
this.student = student;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getClassname() {
return classname;
}
public void setClassname(String classname) {
this.classname = classname;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getS_id() {
return s_id;
}
public void setS_id(int s_id) {
this.s_id = s_id;
}
public List<Student> getList() {
return list;
}
public void setList(List<Student> list) {
this.list = list;
}
//重写tostring
@Override
public String toString() {
return "Student [name=" + name + ", classname=" + classname + ", age="
+ age + ", s_id=" + s_id + "]";
}
}
学生接口
package com.xingyun.studentDao;
import com.xingyun.bean.Student;
public interface StudentDao {
void getAll(Student student);//查询所有信息
void StudentgetById(Student student);//根据学生编号进行学生信息查询
void deleteByName(Student student);//删除学生信息
void addStudent(Student student);//增加学生信息
void updateStudent(Student student);//修改学生信息
void yunxingfangfa(Student student);//运行增删改查功能
}
学生实例化
package com.xingyun.dao.imp;
import java.util.Iterator;
import java.util.Scanner;
import com.xingyun.bean.Student;
import com.xingyun.studentDao.StudentDao;
public class StudentDaoImp implements StudentDao{
Scanner input = new Scanner(System.in);
//查询所有信息
@Override
public void getAll(Student student) {
Iterator<Student> iterator=student.getList().iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
//用学生id查信息
@Override
public void StudentgetById(Student student) {
System.out.println("请输入你要查询的学生ID");
int id=input.nextInt();//获取用户输入
Iterator<Student> iterator=student.getList().iterator();
while(iterator.hasNext()){
Student stu=iterator.next();
if(stu!=null&&stu.getS_id()==id){
System.out.println(stu);
}
}
}
//删除学生信息
@Override
public void deleteByName(Student student) {
System.out.println("请输入你要删除的学生信息ID");
int id=input.nextInt();//获取用户输入
Iterator<Student> iterator=student.getList().iterator();
while(iterator.hasNext()){
Student stu=iterator.next();
if(stu!=null&& stu.getS_id()==id){
iterator.remove();
break;
}
}
}
//增加学生信息
@Override
public void addStudent(Student student) {
for(int i=0;;i++){//进入数组循环
System.out.println("请输入你要增加的学生姓名");
String name=input.next();//获取用户输入姓名
System.out.println("请输入你要增加的学生年龄");
int age=input.nextInt();//获取用户输入年龄
System.out.println("请输入你要增加的学生班级");
String sclass=input.next();//获取用户输入班级
Student stu=new Student();//创建一个新对象作为载体
stu.setAge(age);//将用户输入年龄赋值给新对象
stu.setClassname(sclass);//将用户输入班级赋值给新对象
stu.setName(name);//将用户输入姓名赋值给新对象
System.out.println("请输入你要增加的学生id");
int id=input.nextInt();
stu.setS_id(id);//自动生成学生id
student.getList().add(stu);
System.out.println("是否要继续进行添加学生");
String or=input.next();
if("是".equals(or)){
}else{
System.out.println("成功退出");
return;
}
}
}
//改变学生信息
@Override
public void updateStudent(Student student) {
System.out.println("请输入你要修改的学生ID");
int or=input.nextInt();//获取用户输入
Iterator<Student> iterator=student.getList().iterator();
while(iterator.hasNext()){
Student stu=iterator.next();
if(stu!=null&& stu.getS_id()==or){
boolean bool=true;//判断初始条件
while(bool){//进入修改信息循环
System.out.println(stu);
System.out.println("请选择你要修改的学生信息 1、学生姓名 2、学生年龄 3、学生班级 4.退出");
int num=input.nextInt();
if(num==1){
System.out.println("请输入你要改变的学生姓名");
String name=input.next();
stu.setName(name);
System.out.println("修改成功");
}else if(num==2){
System.out.println("请输入你要改变的学生年龄");
int age=input.nextInt();
stu.setAge(age);
System.out.println("修改成功");
}else if(num==3){
System.out.println("请输入你要改变的学生班级");
String sclass=input.next();
stu.setClassname(sclass);
System.out.println("修改成功");
}else{
bool=false;
}
}
}
}
}
@Override
public void yunxingfangfa(Student student) {
StudentDao stu=new StudentDaoImp();
boolean bool=true;//循环初始变量
while(bool){//进入增删改查循环
System.out.println("1.增加学生 2.删除学生信息 3.改变学生信息 4.查看所有学生信息 5.按照学号查询信息 6.退出");
int num=input.nextInt();
if(num==1){
stu.addStudent(student);
}else if(num==2){
stu.deleteByName(student);
}else if(num==3){
stu.updateStudent(student);
}else if(num==4){
stu.getAll(student);
}else if(num==5){
stu.StudentgetById(student);
}else{
System.out.println("成功退出");
bool=false;
}
}
}
}
用户类
package com.xingyun.bean;
public class User {
private String phone;//用户手机号
private String email;//用户邮箱
private String password;//用户密码
private String sex;//用户性别
private StringBuilder intro;//用户简介
private String id;//用户身份证号
private String year;//用户出生年月日
private Integer age;//用户年龄
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
private User[]user;//user数组
//构造方法
public User() {
}
public User(String phone, String email, String password, String sex, StringBuilder intro,
String id) {
super();
this.phone = phone;
this.email = email;
this.password = password;
this.sex = sex;
this.intro = intro;
this.id = id;
}
//封装
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public StringBuilder getIntro() {
return intro;
}
public void setIntro(StringBuilder intro) {
this.intro = intro;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getYear() {
return year;
}
public void setYear(String year) {
this.year = year;
}
public User[] getUser() {
return user;
}
public void setUser(User[] user) {
this.user = user;
}
@Override
public String toString() {
return "用户 [账号=" + phone + ", e-mail=" + email + ", 密码=" + password + ", 性别=" + sex + ", 个人简介=" + intro
+ ", 身份证号=" + id + ", 出生日期=" + year + ", 年龄=" + age + "]";
}
//重写tostring方法
}
用户接口
package com.xingyun.studentDao;
import com.xingyun.bean.Student;
import com.xingyun.bean.User;
public interface UserDao {
void logIn(User user);//注册
void langing(User user,Student student);//登录
void logInAndLanging(User user,Student student);//注册和登录
StringBuilder suijishu();//随机数
}
实例化用户接口
package com.xingyun.dao.imp;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
import com.xingyun.bean.Student;
import com.xingyun.bean.User;
import com.xingyun.studentDao.StudentDao;
import com.xingyun.studentDao.UserDao;
public class UserDaoimp implements UserDao {
Scanner input = new Scanner(System.in);
// 注册
@Override
public void logIn(User user) {
//定义一个装载所有大写字母的数组
char[] daxie = new char[] { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q',
'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };
//定义一个装载所有小写字母的数组
char[] xiaoxie = new char[] { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p',
'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
//定义一个装载所有数字类型的数组
char[] shuzi = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
boolean bool = true;//注册账号循环初始条件
while (bool) {//进入账号注册循环
// 输入账号
System.out.println("请以你的手机号来注册你的账号");
String num = input.next();//获取用户输入
String num1 = num.trim();// 自动消除空格
if (num1.length() == 11) {// 判断输入是否为11位
for (int i = 0; i < num1.length(); i++) {//进入手机号注册循环判断
for (int j = 0; j < daxie.length; j++) {//进入手机号有无字母的循环判断
if (num1.startsWith("13") || num1.startsWith("15") || num1.startsWith("18")) {// 判断是否为这些数字开头
if (daxie[j] == num1.charAt(i) || xiaoxie[j] == num1.charAt(i)) {// 判断输入是否含有字母,如果有则提示用户输入错误
System.out.println("你的输入有误是否要重新进行重新输入");
String or = input.next();
if ("是".equals(or)) {
i = num1.length() + 1;
break;
} else {
System.out.println("你已成功退出账号注册");
return;
}
}
// 输入密码
boolean bool1 = true;
while (bool1) {
System.out.println("请输入你的密码");
String password = input.next();
// 进行密码长度判断
if (password.length() >= 6 && password.length() <= 10) {
//进行首字母大写的判断循环
for(int i1=0;i1<daxie.length;i1++){
if(password.charAt(0)==daxie[i1]){
//进入密码含有小写字母的判断
for(int j1=0;j1<xiaoxie.length;j1++){
if(password.indexOf(xiaoxie[j1])>0){
//进入密码是否含有数字的判断
for(int k1=0;k1<shuzi.length;k1++){
if(password.indexOf(shuzi[k1])>0){
//进入确认密码循环
boolean bool2=true;
while(bool2){
System.out.println("请确认你的密码");
String password1=input.next();//获取用户的确认密码
if(password.equals(password1)){//如果用户两次密码输入一致进入邮箱输入
boolean bool3=true;
while(bool3){
System.out.println("请输入你要绑定的邮箱号码");
String mail=input.next();//获取用户输入邮箱
if(mail.endsWith("@qq.com")||mail.endsWith("@163.com")){//如果用户输入邮箱符合QQ邮箱和163邮箱的规定
boolean bool4=true;
while(bool4){//进入身份证号码输入循环
System.out.println("请输入你的身份证号码");
String uid=input.next();
if(uid.length()==18){//如果用户身份证号码符合18位
String useid=uid.substring(6, 14);//获取出生日期
//获取并计算年龄
String useYear=uid.substring(6, 10);//获取用户出生年份
Integer bir=Integer.valueOf(useYear);//将String类型转为integer
Calendar cl=Calendar.getInstance();//创建日历类型
Date time=cl.getTime();//获取实时时间
SimpleDateFormat sdf= new SimpleDateFormat("yyyy");//设置日期显示格式
String aa=sdf.format(time);//将实时时间进行格式转换并转为String类型
Integer bir1=Integer.valueOf(aa);//将获取的实时年份转为integer类型
Integer uAge=bir1-bir;//进行年龄计算
//获取性别
String useSexnNum=uid.substring(16, 17);//获取身份证倒数第二位
Integer userSexNum=Integer.valueOf(useSexnNum);//将String 转为integer类型
if(userSexNum%2==0){//如果身份证倒数第二位为偶数则为女
String useSex="女";
System.out.println("请输入你的个人简介");
String jianjie=input.next();//输入个人简介
StringBuilder useJJ=new StringBuilder(jianjie);//将其转为可变的StringBuilder类型
for(int p=0;p<user.getUser().length;p++){//进入用户注册信息录入
User userP=new User();//创建一个用户对象
userP.setPhone(num1);//赋值用户注册电话
userP.setPassword(password1);//赋值用户注册密码
userP.setEmail(mail);//赋值用户注册邮箱
userP.setId(uid);//赋值用户注册身份证
userP.setAge(uAge);//赋值用户年龄
userP.setIntro(useJJ);//赋值用户简介
userP.setYear(useid);//赋值用户出生日期
userP.setSex(useSex);//赋值用户性别
if(user.getUser()[p]==null){
user.getUser()[p]=userP;
System.out.println("注册成功");
System.out.println(user.getUser()[p]);
return;
}
}
}else{//身份证倒数第二位为奇数则为男
String useSex="男";
System.out.println("请输入你的个人简介");
String jianjie=input.next();//输入个人简介
StringBuilder useJJ=new StringBuilder(jianjie);//将其转为可变的StringBuilder类型
for(int p=0;p<user.getUser().length;p++){//进入用户注册信息录入
User userP=new User();
userP.setPhone(num1);//赋值用户注册电话
userP.setPassword(password1);//赋值用户注册密码
userP.setEmail(mail);//赋值用户注册邮箱
userP.setId(uid);//赋值用户注册身份证
userP.setAge(uAge);//赋值用户年龄
userP.setIntro(useJJ);//赋值用户简介
userP.setYear(useid);//赋值用户出生日期
userP.setSex(useSex);//赋值用户性别
if(user.getUser()[p]==null){
user.getUser()[p]=userP;
System.out.println("注册成功");
System.out.println(user.getUser()[p]);
return;
}
}
}
}else{
System.out.println("你输入的身份证不符合要求是否要重新进行重新输入");
String or = input.next();
if ("是".equals(or)) {
} else {
System.out.println("你已成功退出账号注册");
return;
}
}
}
}else{//如果邮箱不符合要求 则提示用户
System.out.println("你输入的邮箱不符合要求是否要重新进行重新输入");
String or = input.next();
if ("是".equals(or)) {
} else {
System.out.println("你已成功退出账号注册");
return;
}
}
}
}else{//如果用户两次用户密码输入不一致 则提示用户
System.out.println("你两次输入密码不一致是否要重新进行重新输入");
String or = input.next();
if ("是".equals(or)) {
} else {
System.out.println("你已成功退出账号注册");
return;
}
}
}
}else if(k1==shuzi.length-1){//如果密码没有含有数字
System.out.println("你的密码没有含有数字是否要重新进行重新输入");
String or = input.next();
if ("是".equals(or)) {
k1=shuzi.length;
j1=xiaoxie.length;
i1=daxie.length;
} else {
System.out.println("你已成功退出账号注册");
return;
}
}
}
}else if(j1==xiaoxie.length-1){//如果密码中没有小写字母
System.out.println("你的密码没有含有小写字母是否要重新进行重新输入");
String or = input.next();
if ("是".equals(or)) {
j1=xiaoxie.length;
i1=daxie.length;
} else {
System.out.println("你已成功退出账号注册");
return;
}
}
}
}else if(i1==daxie.length-1){//如果用户密码没有首字母大写
System.out.println("你的首字母没有大写是否要重新进行重新输入");
String or = input.next();
if ("是".equals(or)) {
i1=daxie.length;
} else {
System.out.println("你已成功退出账号注册");
return;
}
}
}
} else {//如果密码长度不符合要求 则提示用户
System.out.println("你的输入有误是否要重新进行重新输入");
String or = input.next();
if ("是".equals(or)) {
} else {
System.out.println("你已成功退出账号注册");
return;
}
}
}
} else {//如果手机号不是按照13、15、18开头 则提示用户
System.out.println("请以13、15、18为开头的电话号码进行注册");
System.out.println("你的输入有误是否要重新进行重新输入");
String or = input.next();
if ("是".equals(or)) {
i = num1.length() + 1;
break;
} else {
System.out.println("你已成功退出账号注册");
return;
}
}
}
}
} else {//如果手机号不是11位
System.out.println("你的输入有误是否要重新进行重新输入");
String or = input.next();
if ("是".equals(or)) {
} else {
System.out.println("你已成功退出账号注册");
return;
}
}
}
}
//登录
@Override
public void langing(User user,Student stu) {
//进入登录循环
UserDao users=new UserDaoimp();
while(true){
System.out.println("请输入你要登录的账号");
String num=input.next();//获取用户登录登陆的账号
System.out.println("请输入你要登录的密码");
String password=input.next();//获取用户登录密码
for(int i=0;i<user.getUser().length;i++){//进行信息比对循环
if(user.getUser()[i]!=null){//判断用户是否为空
if(num.equals(user.getUser()[i].getPhone())&&password.equals(user.getUser()[i].getPassword())){//如果用户输入账号与密码正确
while(true){//进入输入验证码循环
//调取验证码方法
StringBuilder yzm=users.suijishu();
String yzm1=yzm.toString();//将StringBuilder转为String类型
System.out.println("請輸入驗證碼"+yzm1);
String get=input.next();//获取用户输入
if(yzm1.equals(get)){//如果一致
System.out.println("登陆成功");
System.out.println(user.getUser()[i]);
//调取用户增删改查学生功能
StudentDao student=new StudentDaoImp();
student.yunxingfangfa(stu);
return;
}else{//如果不一致
System.out.println("您输入的验证码有误是否要重新输入");
String or = input.next();
if ("是".equals(or)) {
} else {
System.out.println("你已成功退出账号登录");
return;
}
}
}
}else if(i==user.getUser().length-1){
System.out.println("账号名或密码错误是否要进行重新输入");
String or = input.next();
if ("是".equals(or)) {
i=user.getUser().length;
} else {
System.out.println("你已成功退出账号登录");
return;
}
}
}else if(user.getUser()[i]==null){
System.out.println("账号名或密码错误是否要进行重新输入");
String or = input.next();
if ("是".equals(or)) {
} else {
System.out.println("你已成功退出账号登录");
return;
}
}
}
}
}
@Override
public void logInAndLanging(User user,Student student) {
UserDao d=new UserDaoimp();
while(true){
System.out.println("1.登录 2.注册 3.查看注册 4.退出系统");
System.out.println("请输入你要执行的操作");
String or=input.next();
if("1".equals(or)){
d.langing(user, student);
}else if("2".equals(or)){
d.logIn(user);
}else if("3".equals(or)){
for(User use:user.getUser()){
System.out.println(use);
}
}else{
return;
}
}
}
@Override
public StringBuilder suijishu() {//4位随机数产生
StringBuilder c=new StringBuilder();//创建一个可变得类型
for(int z=1;z<5;z++){
double i=Math.random();//获取1个0.0~1.0的随机数
long m=Math.round(i*10);//将其乘10并转为long类型
if(m>10){//保证M不大于10
m=m-10;
}
String a=String.valueOf(m);//将M转为String类型
c=c.append(a);//将其添加到C
if(z==4){
return c;//如果凑够4位数则返回C
}
}
return c;
}
}
test
package com.xingyun.test;
import java.util.ArrayList;
import com.xingyun.bean.Student;
import com.xingyun.bean.User;
import com.xingyun.dao.imp.UserDaoimp;
import com.xingyun.studentDao.UserDao;
public class test {
public static void main(String[] args) {
UserDao ud=new UserDaoimp();
User use=new User();
use.setUser(new User[3]);
Student stu=new Student();
stu.setList(new ArrayList<>());
ud.logInAndLanging(use,stu);
}
}