|
30鱼币
- 主类
- import java.io.*;
- import java.nio.charset.StandardCharsets;
- import java.util.ArrayList;
- import java.util.Random;
- import java.util.Scanner;
- public class StudentSystem implements Serializable{
- static ArrayList<User> Ulist = new ArrayList<>();
- static ArrayList<Student> Slist = new ArrayList<>();
- static User user = new User();
- static Student student = new Student();
- static String path1,path2;
- static {
- path2 = "studentsystem\\student.txt";
- path1 = "studentsystem\\user.txt";
- }
- // static File file1 = new File(path1),file2 = new File(path2);
- // static {
- // if (!file1.exists()) {
- // try {
- // file1.createNewFile();
- // } catch (IOException e) {
- // e.printStackTrace();
- // }
- // if (!file1.exists()) {
- // try {
- // file1.createNewFile();
- // } catch (IOException e) {
- // e.printStackTrace();
- // }
- // }
- // }
- // }
- public static void main(String[] args) throws Exception {
- readFile(Ulist,null,path1,user,null);
- enterUserSystem(Ulist);
- }
- private static void enterUserSystem(ArrayList<User> list) throws Exception{
- User user = new User();
- System.out.println("---------------欢迎来到Java版学生管理系统---------------");
- while (true){
- System.out.println("--------请选择1.登录 2.注册 3.忘记密码--------");
- Scanner sc = new Scanner(System.in);
- String choice = sc.next();
- switch (choice) {
- case "1":
- logIn(Ulist);
- break;
- case "2":
- register(Ulist);
- writeFile(Ulist,path1);
- break;
- case "3":
- forgotPassword(Ulist);
- break;
- case "4":
- System.out.println("---------------退出用户界面---------------");
- System.exit(0);
- default:
- System.out.println("选项不存在!默认退出");
- System.exit(0);
- }
- }
- }
- private static void enterStudentSystem() throws Exception {
- loop: while(true){
- System.out.println("添加学生信息,请按1");
- System.out.println("删除学生信息,请按2");
- System.out.println("修改学生信息,请按3");
- System.out.println("查询学生信息,请按4");
- System.out.println("退出,请按5");
- System.out.print("请输入您的选择:");
- Scanner sc = new Scanner(System.in);
- String choice = sc.next();
- switch (choice) {
- case "1":
- readFile(null,Slist,path2,null,student);
- addStudent(Slist);
- writeFile(Slist,path2);
- break;
- case "2":
- readFile(null,Slist,path2,null,student);
- deleteStudent(Slist);
- break ;
- case "3":
- readFile(null,Slist,path2,null,student);
- changeStudent(Slist);
- writeFile(Slist,path2);
- break ;
- case "4":
- readFile(null,Slist,path2,null,student);
- queryStudent(Slist);
- break ;
- case "5":
- System.out.println("---------------退出学生管理系统---------------");
- break loop;
- default:
- System.out.println("选项不存在!请重新输入");
- }
- }
- }
- private static void register(ArrayList<User> list) throws IOException {
- String s1,s2,s3,s4;
- s1 = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXVZ";
- s3 = "0123456789xX";
- s2 = "0123456789";
- s4 = "~`!@#$%^&*()_+-={}[]|\\;:'"<>,.?/";
- User user = new User();
- Scanner sc = new Scanner(System.in);
- String userName,password,repassword,personId,phoneNum;
- boolean flag1 = true,flag2 = true,flag3 = true,flag4 = true;
- while(flag3) {
- System.out.print("请输入用户名(长度必须在3到15位):");
- userName = sc.next();
- int l = userName.length();
- if(l < 3||l > 15){
- System.out.println("输入用户名语法错误,请重新输入");
- }
- if(userContain(list,userName)) {
- System.out.println("用户名已被注册,请再输入其他用户名!");
- continue;
- }else{
- System.out.println("注册用户名成功");
- user.setUserName(userName);
- flag3 = false;
- }
- }
- while(flag4){
- System.out.print("请设置密码(长度必须在8到15位):");
- password = sc.next();
- int l = password.length();
- if(l < 8||l > 15){
- System.out.println("设置密码语法错误,请重新输入");
- }else {
- System.out.print("密码设置成功,请再次输入核对:");
- while (flag4){
- repassword = sc.next();
- if(password.equals(repassword)){
- System.out.println("密码核对成功,已录入");
- repassword = null;
- user.setPassword(password);
- flag4 = false;
- }else {
- System.out.println("密码核对错误,请再次核对");
- }
- }
- }
- }
- while (flag2){
- System.out.println("请输入身份证号码:");
- personId = sc.next();
- String id = personId;
- if((id.charAt(0)=='0')||(id.length()!=18)){
- flag2 = true;
- }else if (isContain(id.substring(0,17).toString(),s1)){
- flag2 = true;
- }else if(!(isContain(id.substring(17),s3))){
- flag2 = true;
- }else {
- flag2 = false;
- }
- if(flag2 == false){
- user.setPersonId(id);
- }else {
- System.out.println("输入错误,请重新输入:");
- }
- }
- while (flag1 ){
- System.out.println("请输入手机号码:");
- phoneNum = sc.next();
- if((isContain(phoneNum,s1))||(isContain(phoneNum,s4))){
- flag1 = true;
- }else if((phoneNum.length() != 11)||phoneNum.charAt(0) == '0'){
- flag1 = true;
- }else {
- flag1 = false;
- }
- if(flag1 == true){
- System.out.println("输入格式错误!请重新输入:");
- }else {
- System.out.println("输入成功");
- user.setPhoneNum(phoneNum);
- }
- }
- if((flag2 == flag3 == flag1 == flag4)&&(flag2 == false)){
- System.out.println("注册成功");
- list.add(user);
- }else {
- System.out.println("注册失败");
- }
- }
- private static void logIn(ArrayList<User> list) throws Exception {
- Scanner sc = new Scanner(System.in);
- System.out.print("请输入用户名:");
- String name = sc.next();
- while (true){
- if(userContain(list,name)){
- break ;
- }else {
- System.out.println("未找到该用户,请先注册");
- return;
- }
- }
- System.out.print("请输入密码:");
- String key = sc.next();
- while (true){
- String code = getCode();
- System.out.println("验证码:" + code);
- System.out.print("请输入验证码:");
- String recode = sc.next();
- if(code.equalsIgnoreCase(recode)){
- System.out.println("验证码正确");
- break;
- }else{
- System.out.println("验证码输入错误,请重新输入");
- }
- }
- User user = new User(name,key,null,null);
- if(isRight(list,user)){
- System.out.println("登录成功,正在进入学生管理系统");
- enterStudentSystem();
- }else{
- System.out.println("登录失败,账户名或密码输入错误");
- }
- }
- private static void forgotPassword(ArrayList<User> list){
- Scanner sc = new Scanner(System.in);
- System.out.print("请输入用户名:");
- String name = sc.next();
- while (true){
- if(userContain(list,name)){
- break ;
- }else {
- System.out.println(userContain(list, name));
- System.out.println("未找到该用户,请先注册");
- return;
- }
- }
- int index = userByName(list,name);
- User user = new User();
- user = list.get(index);
- String pI, pN, key, rekey;
- while (true){
- System.out.print("请输入身份证号码:");
- pI = sc.next();
- System.out.print("请输入电话号码:");
- pN = sc.next();
- if (!(user.getPersonId().equalsIgnoreCase(pI) && user.getPhoneNum().equals(pN))) {
- System.out.println("身份证或电话号码输入错误!!!");
- continue;
- }else {
- break;
- }
- }
- clock: while(true){
- System.out.print("请设置密码(长度必须在8到15位):");
- key = sc.next();
- int l = key.length();
- if(l < 8||l > 15){
- System.out.println("设置密码语法错误,请重新输入");
- }else {
- System.out.print("密码设置成功,请再次输入核对:");
- while (true){
- rekey = sc.next();
- if(key.equals(rekey)){
- System.out.println("密码核对成功,已录入");
- rekey = null;
- break clock;
- }else {
- System.out.println("密码核对错误,请再次核对");
- continue ;
- }
- }
- }
- }
- user.setPassword(key);
- }
- private static int userByName(ArrayList<User> list,String name) {
- for (int i = 0; i < list.size(); i++) {
- User user = new User();
- user = list.get(i);
- if(user.getUserName().equals(name)){
- return i;
- }
- }
- return -1;
- }
- public static void addStudent(ArrayList<Student> list) throws IOException {
- Student stu = new Student();
- Scanner sc = new Scanner(System.in);
- String id = null;
- while (true) {
- System.out.print("请输入学号:");
- id = sc.next();
- boolean key = idOnly(list, id);
- if(key){
- System.out.println("您添加的学号已存在,请重新输入!!!");
- }else{
- stu.setId(id);
- list.add(stu);
- break;
- }
- }
- System.out.print("请输入姓名:");
- String name = sc.next();
- System.out.print("请输入籍贯:");
- String address = sc.next();
- System.out.print("请输入年龄:");
- int age = sc.nextInt();
- stu = new Student(name,id,address,age);
- list.add(stu);
- System.out.println("学生信息添加成功!");
- }
- public static void deleteStudent(ArrayList<Student> list){
- Scanner sc = new Scanner(System.in);
- System.out.print("请输入您的学号来删除对应信息:");
- String id = sc.next();
- int bool = getIndex(list,id);
- if(bool >= 0){
- list.remove(bool);
- System.out.println("删除成功");
- }else{
- System.out.println("很抱歉,未能找到您的学号!");
- }
- }
- public static void changeStudent(ArrayList<Student> list){
- System.out.print("请输入您的学号以便于修改您对应的信息:");
- Scanner sc = new Scanner(System.in);
- String id = null;
- while (true) {
- id = sc.next();
- boolean flag = idOnly(list, id);
- if(flag){
- break;
- }else{
- System.out.println("您输入的学号不存在!请重新输入!");
- }
- }
- int index = getIndex(list,id);
- First: while(true) {
- System.out.println("修改学号请按1\n修改姓名请按2\n修改年龄请按3\n修改籍贯请按4\n其余均为放弃修改\n");
- System.out.print("请按照提示输入:");
- String choice = sc.next();
- switch (choice) {
- case "1":
- System.out.print("请输入您想修改学号为:");
- list.get(index).setId(sc.next());
- break;
- case "2":
- System.out.print("请输入您想修改姓名为:");
- list.get(index).setName(sc.next());
- break;
- case "3":
- System.out.print("请输入您想修改年龄为:");
- list.get(index).setAge(sc.nextInt());
- break;
- case "4":
- System.out.print("请输入您想修改籍贯为:");
- list.get(index).setAddress(sc.next());
- break;
- default:
- System.out.println("退出");
- }
- Second:while(true) {
- System.out.println("是否继续修改?(yes/no)");
- String chance = sc.next();
- if (chance.equalsIgnoreCase("no")) {
- break First;
- } else if (chance.equalsIgnoreCase("yes")) {
- System.out.println("继续修改");
- break Second;
- } else {
- System.out.println("输入错误请重新选择:");
- }
- }
- }
- }
- public static void queryStudent(ArrayList<Student> list){
- if(list.size() == 0){
- System.out.println("没有学生信息,请添加后再查询");
- return;
- }
- System.out.println("学号\t\t\t" + "姓名\t" + "年龄\t" + "籍贯");
- for (int i = 0; i < list.size(); i++) {
- Student stu = new Student();
- stu = list.get(i);
- System.out.println(stu.getId()+"\t"+stu.getName()+"\t"+stu.getAge()+"\t"+stu.getAddress());
- }
- }
- public static boolean idOnly(ArrayList<Student> list,String id) {
- int flag = getIndex(list,id);
- if(flag >= 0){
- return true;
- }
- return false;
- }
- public static int getIndex(ArrayList<Student> list,String id){
- for (int i = 0; i < list.size(); i++) {
- String sid = list.get(i).getId();
- if (sid.equals(id)) {
- return i;
- }
- }
- return -1;
- }
- public static boolean isContain(String s1,String s2){
- for (int i = 0; i < s1.length(); i++) {
- char c1 = s1.charAt(i);
- for (int k = 0; k < s2.length(); k++) {
- char c2 = s2.charAt(k);
- if(c2 == c1){
- return true;
- }
- }
- }
- return false;
- }
- public static boolean userContain(ArrayList<User> list,String name){
- for (int l = 0; l < list.size(); l++) {
- User user = new User();
- user = list.get(l);
- String rightName = user.getUserName();
- if (rightName.equals(name)){
- return true;
- }
- }
- return false;
- }
- private static boolean isRight(ArrayList<User> list,User user) {
- String n = user.getUserName();
- String p = user.getPassword();
- for (int i = 0; i < list.size(); i++) {
- User reuser = new User();
- reuser = list.get(i);
- if((reuser.getPassword().equals(p))&&(reuser.getUserName().equals(n))){
- return true;
- }
- }
- return false;
- }
- public static String getCode(){
- ArrayList<Character> clist = new ArrayList<>();
- for (int i = 0; i < 26; i++) {
- clist.add((char)('a'+i)) ;
- clist.add((char)('A'+i)) ;
- }
- StringBuilder sb = new StringBuilder();
- Random random = new Random();
- for (int l = 0; l < 4; l++) {
- int index = random.nextInt(clist.size());
- char c = clist.get(index);
- sb.append(c);
- }
- int num = random.nextInt(10);
- sb.append(num);
- char[] chars = sb.toString().toCharArray();
- for (int i = 0; i < chars.length; i++) {
- int n = random.nextInt(chars.length);
- char temp = chars[n];
- chars[n] = chars[chars.length-1];
- chars[chars.length-1] = temp;
- }
- return new String(chars);
- }
- public static void writeFile(ArrayList<?> list,String path) throws Exception{
- int length = list.size();
- ObjectOutputStream oos = null;
- OutputStream ops = null;
- for (int i = 0; i < length; i++) {
- ops = new FileOutputStream(path,true);
- oos = new ObjectOutputStream(ops);
- oos.writeObject(list.get(i));
- oos.writeObject('\n');
- }
- oos.flush();
- oos.close();
- ops.close();
- }
- public static void readFile(ArrayList<User> list1,ArrayList<Student> list2,String path,User user,Student student) throws Exception {
- InputStream inputStream;
- ObjectInputStream ois = null;
- //String str;
- try {
- if(student == null) {
- inputStream = new FileInputStream(path);
- /* int len;
- byte[] b = new byte[1024];
- while((len = inputStream.read(b)) != -1){
- str = new String(b,0,len);
- }*/
- ois = new ObjectInputStream(inputStream);
- user = (User) ois.readObject();
- list1.add(user);
- }
- } catch (Exception e) {
- e.printStackTrace();
- /* System.out.println("没有任何数据,请先添加用户数据");
- System.out.println("是否选择注册账户?(yes/no)");
- String choice;
- Scanner scanner = new Scanner(System.in);
- choice = scanner.next();
- if (choice.equalsIgnoreCase("yes")){
- register(Ulist);
- writeFile(Ulist,path1);
- }else {
- System.out.println("默认退出");
- System.exit(0);
- }*/
- }
- try {
- if(user == null){
- inputStream = new FileInputStream(path);
- ois = new ObjectInputStream(inputStream);
- student= (Student) ois.readObject();
- list2.add(student);
- }
- } catch (Exception e) {
- e.printStackTrace();
- /* System.out.println("没有任何数据,请先添加学生数据");
- System.out.println("是否选择添加学生信息?(yes/no)");
- String choice;
- Scanner scanner = new Scanner(System.in);
- choice = scanner.next();
- if (choice.equalsIgnoreCase("yes")){
- addStudent(Slist);
- writeFile(Ulist,path1);
- }else {
- System.out.println("默认退出");
- System.exit(0);
- }*/
- }
- }
- }
复制代码- 用户类
- import java.io.Serializable;
- public class User implements Serializable {
- public String userName;
- private String password;
- private String personId;
- private String phoneNum;
- public User() {
- }
- public User(String userName, String password, String personId, String phoneNum) {
- this.userName = userName;
- this.password = password;
- this.personId = personId;
- this.phoneNum = phoneNum;
- }
- public String getUserName() {
- return userName;
- }
- public void setUserName(String userName) {
- this.userName = userName;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public String getPersonId() {
- return personId;
- }
- public void setPersonId(String personId) {
- this.personId = personId;
- }
- public String getPhoneNum() {
- return phoneNum;
- }
- public void setPhoneNum(String phoneNum) {
- this.phoneNum = phoneNum;
- }
- }
复制代码- 学生类
- import java.io.Serializable;
- public class Student implements Serializable {
- private String name;
- private String id;
- private String address;
- private int age;
- public Student(String name, String id, String address, int age) {
- this.name = name;
- this.id = id;
- this.address = address;
- this.age = age;
- }
- public Student() {
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getId() {
- return id;
- }
- public void setId(String id) {
- this.id = id;
- }
- public String getAddress() {
- return address;
- }
- public void setAddress(String address) {
- this.address = address;
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- }
复制代码
这代码文件路径我稍微改了一下
- import java.io.BufferedReader;
- import java.io.FileNotFoundException;
- import java.io.FileReader;
- import java.io.IOException;
- public class Temp {
- public static void main(String[] args) {
- try {
- BufferedReader bufferedReader = new BufferedReader(new FileReader("填写你的文本路径"));
- while(bufferedReader.readLine() != null){
- System.out.println(bufferedReader.readLine());
- }
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
复制代码
|
|