利用java基础知识实现下面要求:
创建一个用户类User,有属性name(用户名),username(用户名),type(用户类型值stu表示学生,tea表示老师)
password(密码),sex(性别)。
创建一个学生类Student,继承User类,有属性score(分数)
创建一个教师类Teacher,继承User类,有属性workAge(工龄)
1、创建一个Login类,
属性User loginUser用来记录登录用户的。
有方法 main()做菜单选择 1-注册,2-学生登录,3-老师登录,0-退出程序
a、方法register(),要求
①是学生注册,老师不用注册(固定一位老师:name:王老师,username:t01;password:123;type:tea[用来区分老师和学生(stu)])
②输入的登录名不能重复。否则提示“用户已存在,注册失败”,结束程序,
两次输入不一致,注册失败”,结束程序
③输入的密码(6位数字或字母组成,正则表达式验证),要求再次输入确认密码,而且要一致。否则提示“密码
④注册成功的,把用户信息通过对象流方式保存到本地user.txt(老师信息也要保pr存)
b、方法loign()用于登录
(一)、学生登录
从user.txt读取学生信息用于登录
①提示用户输入登录名,检测登录名是否存在,不存在提示“用户不存在,
登录失败”
②在用户正确后,提示输入密码,判断密码与输入的密码是否一致。如果不
一致,提示“密码错误,登录失败”,一致则提示“登录成功,欢迎某某的登录”
登录成功后显示系统首页菜单即提示
“学生登录成功首页(菜单1-显示用户信息,2-修改用户密码,3-去测试,4-查看成绩
0-退出系统)”
1、方法showUser()显示当前用户信息
2、方法updatePwd()修改当前用户密码
3、方法test(),实现随机显示10道选择题(从questions.txt读取),学生做题,得到成绩。
通过对象流保存到本地score.properties
4、方法lookScore(),查看成绩(从score.properties读取)
5、方法logout,注销当前用户,返回主菜单
(二)、老师登录
①提示用户输入登录名,检测登录名是否存在,不存在提示“用户不存在,
登录失败”
②在用户正确后,提示输入密码,判断密码与输入的密码是否一致。如果不
一致,提示“密码错误,登录失败”,一致则提示“登录成功,欢迎某某的登录”
登录成功后显示系统首页菜单即提示
“老师登录成功首页(菜单1-显示用户信息,2-修改用户密码,3-出题,4-查看题目及选项
0-退出系统)”
1、方法showUser()显示当前用户信息
2、方法updatePwd()修改当前用户密码
3、方法addQuestion(),实现显示选择题,录入选择题的资料,并通过对象流保存到本地question.txt
4、listQuestion查看所有的题目
5、方法listScore(),查看成绩
6、方法logout,注销当前用户,返回主菜单
最后用测试类Test,实现程序的开始
package com.entor.entity; import java.io.Serializable; public class User implements Serializable { private static final long serialVersionUID = 6267574801492839029L; private String name; private String username; private String password; private String sex; /** * 学生stu,教师tea */ private String type; public User() { } public User(String name, String username, String password, String sex, String type) { this.name = name; this.username = username; this.password = password; this.sex = sex; this.type = type; } public String getName() { return name; } public void setName(String name) { this.name = name; } 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 getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getType() { return type; } public void setType(String type) { this.type = type; } }
public void menu(){ System.out.println("1、注册"); System.out.println("2、学生登录"); System.out.println("3、教师登录"); System.out.println("4、退出程序"); } public void chooseMenu(){ while (true){ menu(); Scanner s = new Scanner(System.in); System.out.println("请输入菜单选项:"); int num = s.nextInt(); switch (num){ case 1: register(); break; case 2: login(); break; case 3: login(); break; case 4: return; default: System.out.println("没有此选项"); break; } } }
StudentMenu类中有 :
1、方法showUser()显示当前用户信息
2、方法updatePwd()修改当前用户密码
3、方法test(),实现随机显示10道选择题(从questions.txt读取),学生做题,得到成绩。
通过对象流保存到本地score.properties
4、方法lookScore(),查看成绩(从score.properties读取)
5、方法logout,注销当前用户,返回主菜单
TeaxherMenu类中有:
1、方法showUser()显示当前用户信息
2、方法updatePwd()修改当前用户密码
3、方法addQuestion(),实现显示选择题,录入选择题的资料,并通过对象流保存到本地question.txt
4、listQuestion查看所有的题目
5、方法listScore(),查看成绩
6、方法logout,注销当前用户,返回主菜单
把这三个类都放在同一个包中(console),方便后面方法调用。
package com.entor.dao.impl; import com.entor.dao.StudentDao; import com.entor.entity.Student; import com.entor.entity.User; import com.entor.util.FileIOUtil; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.ArrayList; import java.util.List; /** * 学生dao实现类 * dao(data access object) */ public class StudentDaoImpl implements StudentDao { private final String PATH = "/com/entor/file/user.txt"; @Override public Student isExist(String username) { List<User> list = listUsers(); if(list!=null&&!list.isEmpty()){ for(User user:list){ if(user.getUsername().equals(username)){ return (Student) user; } } } return null; } @Override public List<User> listUsers() { List<User> list = new ArrayList<>(); //打开输入流 ObjectInputStream ois = FileIOUtil.getObjectInputStream(StudentDaoImpl.class.getResource(PATH).getPath()); if(ois==null){ return list; } try { return (List<User>) ois.readObject(); } catch (IOException | ClassNotFoundException e) { e.printStackTrace(); } finally{ //关闭流 FileIOUtil.close(ois,null); } return list; } @Override public void add(Student student) { List<User> list = listUsers(); if(list!=null){ list.add(student); } //打开输出流 ObjectOutputStream oos = FileIOUtil.getObjectOutputStream(StudentDaoImpl.class.getResource(PATH).getPath()); try { oos.writeObject(list); } catch (IOException e) { e.printStackTrace(); } finally { FileIOUtil.close(null,oos); } } @Override public Student login(String username, String password) { return null; } @Override public Student getByUsername(String username) { return null; } @Override public void updatePwd(Student student) { } }
package com.entor.util; import java.io.*; public class FileIOUtil { /** * 获取文件对象输入流 * @param path * @return */ public static ObjectInputStream getObjectInputStream(String path){ try { path = path.substring(1); File file = new File(path); if(file.length()!=0){ return new ObjectInputStream(new FileInputStream(path)); } } catch (IOException e) { e.printStackTrace(); } return null; } /** * 获取文件对象输出流 * @param path * @return */ public static ObjectOutputStream getObjectOutputStream(String path){ try { path = path.substring(1); return new ObjectOutputStream(new FileOutputStream(path)); } catch (IOException e) { e.printStackTrace(); } return null; } /** * 关闭文件输入输出流 * @param ois * @param oos */ public static void close(ObjectInputStream ois,ObjectOutputStream oos){ if(ois!=null){ try { ois.close(); ois = null; } catch (IOException e) { e.printStackTrace(); } } if(oos!=null){ try { oos.close(); oos = null; } catch (IOException e) { e.printStackTrace(); } } } }