Java项目:学生管理系统
Java项目:学生管理系统
- 一、学生管理系统基础版
- 需求
- 1. 初始菜单
- 2. 学生类:
- 3. 添加功能:
- 4. 删除功能:
- 5. 修改功能:
- 6. 查询功能:
- 代码
- 1. 学生类
- 2. 测试类
- 输出结果
- a. 添加
- b. 删除
- c. 修改
- d. 查询
- e. 退出
- 二、学生管理系统升级版
- 需求:
- 1. 登录界面:
- 2. 用户类:
- 3. 注册功能:
- 4. 登录功能:
- 5. 忘记密码:
- 6. 验证码规则:
- 代码
- 1. 学生类
- 2. 用户类
- 3. 学生管理系统类
- 4. App入口
- 输出结果
- a. 注册
- b. 登录
- c. 忘记密码
- d. 退出
一、学生管理系统基础版
需求
采取控制台的方式去书写学生管理系统。
1. 初始菜单
"-------------欢迎来到黑马学生管理系统----------------" "1:添加学生" "2:删除学生" "3:修改学生" "4:查询学生" "5:退出" "请输入您的选择:"
2. 学生类:
属性:id、姓名、年龄、家庭住址
3. 添加功能:
键盘录入每一个学生信息并添加,需要满足以下要求:
- id唯一
4. 删除功能:
键盘录入要删除的学生id,需要满足以下要求:
- id存在删除
- id不存在,需要提示不存在,并回到初始菜单
5. 修改功能:
键盘录入要修改的学生id,需要满足以下要求
- id存在,继续录入其他信息
- id不存在,需要提示不存在,并回到初始菜单
6. 查询功能:
打印所有的学生信息,需要满足以下要求
- 如果没有学生信息,提示:当前无学生信息,请添加后再查询
- 如果有学生信息,需要按照以下格式输出。(不用过于纠结对齐的问题)
id 姓名 年龄 家庭住址 heima001 张三 23 南京 heima002 李四 24 北京 heima003 王五 25 广州 heima004 赵六 26 深圳
代码
1. 学生类
package day11; public class Student { private String id; private String name; private int age; private String position; public Student() { } public Student(String id, String name, int age, String position) { this.id = id; this.name = name; this.age = age; this.position = position; } /** * 获取 * @return id */ public String getId() { return id; } /** * 设置 * @param id */ public void setId(String id) { this.id = id; } /** * 获取 * @return name */ public String getName() { return name; } /** * 设置 * @param name */ public void setName(String name) { this.name = name; } /** * 获取 * @return age */ public int getAge() { return age; } /** * 设置 * @param age */ public void setAge(int age) { this.age = age; } /** * 获取 * @return position */ public String getPosition() { return position; } /** * 设置 * @param position */ public void setPosition(String position) { this.position = position; } public String toString() { return "Student{id = " + id + ", name = " + name + ", age = " + age + ", position = " + position + "}"; } }
2. 测试类
package day11; import java.util.ArrayList; import java.util.Scanner; public class StudentSystem { public static void main(String[] args) { ArrayList students = new ArrayList(); Scanner sc = new Scanner(System.in); while (true) { System.out.println("-------------学生管理系统----------------"); System.out.println("1:添加学生"); System.out.println("2:删除学生"); System.out.println("3:修改学生"); System.out.println("4:查询学生"); System.out.println("5:退出"); System.out.print("请输入您的选择: "); String choose = sc.next(); switch (choose) { case "1": addStudent(students); break; case "2": deleteStudent(students); break; case "3": updateStudent(students); break; case "4": queryStudent(students); break; case "5": System.out.println("谢谢光临"); System.exit(0); default: System.out.println("没有这个选项"); break; } } } public static void addStudent(ArrayList students) { Scanner sc = new Scanner(System.in); Student newStu = new Student(); // 判断id是否存在 String id = null; while (true) { System.out.println("请输入学生ID"); id = sc.next(); boolean flag = contains(students, id); if (flag) { System.out.println("id已存在,请重新输入"); } else { newStu.setId(id); break; } } System.out.println("请输入学生姓名"); String name = sc.next(); newStu.setName(name); System.out.println("请输入学生年龄"); int age = sc.nextInt(); newStu.setAge(age); System.out.println("请输入学生家庭住址"); String position = sc.next(); newStu.setPosition(position); students.add(newStu); System.out.println("学生信息添加成功"); } public static void deleteStudent(ArrayList students) { Scanner sc = new Scanner(System.in); System.out.println("请输入要删除的id"); String id = sc.next(); int index = getIndex(students, id); if (index >= 0) { students.remove(index); System.out.println("id为" + id + "的学生删除成功"); } else { System.out.println("要删除的id:" + id + "不存在,请重新输入"); } } public static void updateStudent(ArrayList students) { Scanner sc = new Scanner(System.in); System.out.println("请输入要修改学生的id"); String id = sc.next(); int index = getIndex(students, id); if (index == -1) { System.out.println("要修改的id:" + id + "不存在,请重新输入"); return; } Student stu = students.get(index); System.out.println("请输入要修改的学生姓名"); String newName = sc.next(); stu.setName(newName); System.out.println("请输入要修改的学生年龄"); int newAge = sc.nextInt(); stu.setAge(newAge); System.out.println("请输入要修改的学生家庭住址"); String newPosition = sc.next(); stu.setPosition(newPosition); System.out.println("学生信息修改成功"); } public static void queryStudent(ArrayList students) { if (students.size() == 0) { System.out.println("当前无学生信息,请添加后再查询"); return; } System.out.println("id\t\t姓名\t年龄\t家庭地址"); for (int i = 0; i = 0; } /** * 通过id获得索引 * * @param students 学生集合 * @param id 学生id * @return 存在则返回索引值,不存在返回-1 */ public static int getIndex(ArrayList students, String id) { for (int i = 0; i
输出结果
a. 添加
b. 删除
c. 修改
d. 查询
e. 退出
二、学生管理系统升级版
需求:
为学生管理系统书写一个登陆、注册、忘记密码的功能。
只有用户登录成功之后,才能进入到学生管理系统中进行增删改查操作。
1. 登录界面:
System.out.println("欢迎来到学生管理系统"); System.out.println("请选择操作1登录 2注册 3忘记密码");
2. 用户类:
属性:用户名、密码、身份证号码、手机号码
3. 注册功能:
-
用户名需要满足以下要求:
- 用户名唯一
- 用户名长度必须在3~15位之间
- 只能是字母加数字的组合,但是不能是纯数字
-
密码键盘输入两次,两次一致才可以进行注册。
-
身份证号码需要满足以下要求:
- 长度为18位
- 不能以0为开头
- 前17位,必须都是数字
- 最为一位可以是数字,也可以是大写X或小写x
-
手机号需要满足以下要求:
- 长度为11位
- 不能以0为开头
- 必须都是数字
4. 登录功能:
- 键盘录入用户名
- 键盘录入密码
- 键盘录入验证码
- 验证要求:
- 用户名如果未注册,直接结束方法,并提示:用户名未注册,请先注册
- 判断验证码是否正确,如不正确,重新输入
- 再判断用户名和密码是否正确,有3次机会
5. 忘记密码:
- 键盘录入用户名,判断当前用户名是否存在,如不存在,直接结束方法,并提示:未注册
- 键盘录入身份证号码和手机号码
- 判断当前用户的身份证号码和手机号码是否一致,如果一致,则提示输入密码,进行修改。如果不一致,则提示:账号信息不匹配,修改失败。
6. 验证码规则:
- 长度为5
- 由4位大写或者小写字母和1位数字组成,同一个字母可重复
- 数字可以出现在任意位置。比如:aQa1K。
代码
1. 学生类
package day11; public class Student { private String id; private String name; private int age; private String position; public Student() { } public Student(String id, String name, int age, String position) { this.id = id; this.name = name; this.age = age; this.position = position; } /** * 获取 * @return id */ public String getId() { return id; } /** * 设置 * @param id */ public void setId(String id) { this.id = id; } /** * 获取 * @return name */ public String getName() { return name; } /** * 设置 * @param name */ public void setName(String name) { this.name = name; } /** * 获取 * @return age */ public int getAge() { return age; } /** * 设置 * @param age */ public void setAge(int age) { this.age = age; } /** * 获取 * @return position */ public String getPosition() { return position; } /** * 设置 * @param position */ public void setPosition(String position) { this.position = position; } public String toString() { return "Student{id = " + id + ", name = " + name + ", age = " + age + ", position = " + position + "}"; } }
2. 用户类
package day11; public class User { private String username; private String pd; private String userId; private String phoneNumber; public User() { } public User(String username, String pd, String userId, String phoneNumber) { this.username = username; this.pd = pd; this.userId = userId; this.phoneNumber = phoneNumber; } /** * 获取 * @return username */ public String getUsername() { return username; } /** * 设置 * @param username */ public void setUsername(String username) { this.username = username; } /** * 获取 * @return pd */ public String getPd() { return pd; } /** * 设置 * @param pd */ public void setPd(String pd) { this.pd = pd; } /** * 获取 * @return userId */ public String getUserId() { return userId; } /** * 设置 * @param userId */ public void setUserId(String userId) { this.userId = userId; } /** * 获取 * @return phoneNumber */ public String getPhoneNumber() { return phoneNumber; } /** * 设置 * @param phoneNumber */ public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } public String toString() { return "User{username = " + username + ", pd = " + pd + ", userId = " + userId + ", phoneNumber = " + phoneNumber + "}"; } }
3. 学生管理系统类
package day11; import java.util.ArrayList; import java.util.Scanner; public class StudentSystem { public static void startStudentSystem() { ArrayList students = new ArrayList(); Scanner sc = new Scanner(System.in); loop: while (true) { System.out.println("-------------学生管理系统----------------"); System.out.println("1:添加学生"); System.out.println("2:删除学生"); System.out.println("3:修改学生"); System.out.println("4:查询学生"); System.out.println("5:退出"); System.out.print("请输入您的选择: "); String choose = sc.next(); switch (choose) { case "1": addStudent(students); break; case "2": deleteStudent(students); break; case "3": updateStudent(students); break; case "4": queryStudent(students); break; case "5": System.out.println("谢谢光临"); break loop; // System.exit(0); default: System.out.println("没有这个选项"); break; } } } public static void addStudent(ArrayList students) { Scanner sc = new Scanner(System.in); Student newStu = new Student(); // 判断id是否存在 String id = null; while (true) { System.out.println("请输入学生ID"); id = sc.next(); boolean flag = contains(students, id); if (flag) { System.out.println("id已存在,请重新输入"); } else { newStu.setId(id); break; } } System.out.println("请输入学生姓名"); String name = sc.next(); newStu.setName(name); System.out.println("请输入学生年龄"); int age = sc.nextInt(); newStu.setAge(age); System.out.println("请输入学生家庭住址"); String position = sc.next(); newStu.setPosition(position); students.add(newStu); System.out.println("学生信息添加成功"); } public static void deleteStudent(ArrayList students) { Scanner sc = new Scanner(System.in); System.out.println("请输入要删除的id"); String id = sc.next(); int index = getIndex(students, id); if (index >= 0) { students.remove(index); System.out.println("id为" + id + "的学生删除成功"); } else { System.out.println("要删除的id:" + id + "不存在,请重新输入"); } } public static void updateStudent(ArrayList students) { Scanner sc = new Scanner(System.in); System.out.println("请输入要修改学生的id"); String id = sc.next(); int index = getIndex(students, id); if (index == -1) { System.out.println("要修改的id:" + id + "不存在,请重新输入"); return; } Student stu = students.get(index); System.out.println("请输入要修改的学生姓名"); String newName = sc.next(); stu.setName(newName); System.out.println("请输入要修改的学生年龄"); int newAge = sc.nextInt(); stu.setAge(newAge); System.out.println("请输入要修改的学生家庭住址"); String newPosition = sc.next(); stu.setPosition(newPosition); System.out.println("学生信息修改成功"); } public static void queryStudent(ArrayList students) { if (students.size() == 0) { System.out.println("当前无学生信息,请添加后再查询"); return; } System.out.println("id\t\t姓名\t年龄\t家庭地址"); for (int i = 0; i = 0; } /** * 通过id获得索引 * * @param students 学生集合 * @param id 学生id * @return 存在则返回索引值,不存在返回-1 */ public static int getIndex(ArrayList students, String id) { for (int i = 0; i
4. App入口
package day11; import java.util.ArrayList; import java.util.Random; import java.util.Scanner; public class App { public static void main(String[] args) { Scanner sc = new Scanner(System.in); ArrayList users = new ArrayList(); while (true) { System.out.println("欢迎来到学生管理系统"); System.out.println("请选择操作 1、登录 2、注册 3、忘记密码 按其他键退出"); String choose = sc.next(); switch (choose) { case "1": login(users); break; case "2": register(users); break; case "3": forgetPd(users); break; default: System.out.println("谢谢使用,再见"); System.exit(0); break; } } } /** * 忘记密码 * * @param users 用户集合 */ private static void forgetPd(ArrayList users) { Scanner sc = new Scanner(System.in); System.out.println("请输入用户名"); String username = sc.next(); // 判断用户名是否注册 boolean flag = contains(users, username); if (!flag) { System.out.println("当前用户" + username + "未注册,请先注册"); } System.out.println("请输入身份证号码"); String userId = sc.next(); System.out.println("请输入手机号码"); String phoneNumber = sc.next(); int index = findIndex(users, username); User user = users.get(index); if (!(user.getUserId().equalsIgnoreCase(userId) && user.getPhoneNumber().equals(phoneNumber))) { System.out.println("身份证号码或手机号码输入有误,不能修改密码"); return; } String pd; while (true) { System.out.println("请输入新的密码"); pd = sc.next(); System.out.println("请再次输入新的密码"); String againPd = sc.next(); if (pd.equals(againPd)) { System.out.println("两次密码一致"); break; } else { System.out.println("两次密码不一致,请重新输入"); } } user.setPd(pd); System.out.println("密码修改成功"); } /** * 查找用户名在用户集合中的索引值 * * @param users 用户集合 * @param username 用户名 * @return 存在返回索引值,不存在返回-1 */ private static int findIndex(ArrayList users, String username) { for (int i = 0; i = '0' && c return false; } } return true; } /** * 验证身份证号码格式 * * @param userId 身份证号码 * @return 符合规范返回true,否则返回false */ private static boolean checkUserId(String userId) { if (userId.length() != 18) { return false; } if (userId.startsWith("0")) { return false; } // 前17位必须是数字 for (int i = 0; i 15) { return false; } // 必须是字母加数字 for (int i = 0; i = 'a' && c = 'A' && c = '0' && c return false; } } // 统计在用户名中,有多少个字母和数字 int charCount = 0; int numCount = 0; for (int i = 0; i
-
- id唯一
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。