我的学生管理系统已经写好了,可是总感觉少点东西怎么办,诶,登录界面他来了!本来以为昨天一个晚自习就能写完,没想到又多写了一个晚自习,虽然说不难,但真的好繁琐。

登录界面由三个功能组成

  1. 注册

  1. 登录

  1. 忘记密码

既然功能不同,输入1,2,3对应到不同的值,那就要搬出我那万能的switch了!

把不同的选项对应不同的函数。

如果有什么差错我还要重新开始一遍选择的过程,所以在switch上套一个名为log的while也是理所应当的了

log:while (true) {System.out.println("-----欢迎来到兵器谱的登录界面-----");System.out.println("请选择操作:1注册 2登录 3忘记密码 4退出");String str = sc.next();switch (str) {case "1":logon(use);continue log;//注册成功之后当然要让人家在登录界面登陆一次了case "2":boolean flag = false;if (signIn(use, flag)) {System.out.println("请重新登录");continue log;//登陆失败要重新登录哦}System.out.println("登陆成功");break log;case "3":forgetenPa(use);continue log;case "4":System.exit(0);default:System.out.println("你输入的数不符合规矩哦,少侠");}}

接下来是注册

用户名唯一

​1. 用户名长度必须在3~15位之间

​ 只能是字母加数字的组合,但是不能是纯数字

​ 2. 密码键盘输入两次,两次一致才可以进行注册。

​ 3. 身份证号码需要验证。

既然要对用户操作了,自然要写一个用户类,在里面填上用户所有的属性了:


public class user {private String username;private String password;private String usernum;private String phonenum;public user(){}public user(String username, String password, String usernum, String phonenum) {this.username = username;this.password = password;this.usernum = usernum;this.phonenum = phonenum;}public void setUsername(String username) {this.username = username;}public void setPassword(String password) {this.password = password;}public void setUsernum(String usernum) {this.usernum = usernum;}public String getUsername() {return username;}public String getPassword() {return password;}public String getUsernum() {return usernum;}public String getPhonenum() {return phonenum;}public void setPhonenum(String phonenum) {this.phonenum = phonenum;}
}

用户名先判断长短的合法性,再判断唯一性,唯一性用 use.get(i).getUsername().equals(username)判断,用for循环把每一个用户的用户名get出来再和新起的比较,一样就让他换一个。

然后设置密码和验证身份证号是否合法,简单的判断就可以实现。

​ 身份证验证要求:长度为18位 不能以0为开头 前17位,必须都是数字

​ 最为一位可以是数字,也可以是大写X或小写x

密码要输入两次验证

 //用户注册public static void logon(ArrayList<user> use) {Scanner sc = new Scanner(System.in);String usernum = null;String phonenum = null;String password = null;ch:while (true) {//这个循环判断用户名的合法性System.out.println("请输入用户名:");String username = sc.next();cn:while (true) {if (username.length() < 3) {System.out.println("用户名太短,请重新输入");continue ch;}if (username.length() > 15) {System.out.println("用户名太长,请重新输入");continue ch;}for (int i = 0; i < username.length(); i++) {char ch = username.charAt(i);if (!((ch >= 'A' && ch <= 'z') || ch >= '0' && ch <= '0')) {//让他一定是数字和字母的组合System.out.println("用户名只能由数字和字母组成,请重新输入");continue ch;}//只要有一个字母就合法if (ch >= 'A' && ch <= 'z') break cn;}System.out.println("用户名不能是纯数字,请重新输入:");}for (int i = 0; i < use.size(); i++) {if (use.get(i).getUsername().equals(username)) {System.out.println("给爷重新选一个用户名!!!");continue ch;}}while (true) {System.out.println("请设置阁下的密码:");password = sc.next();System.out.println("请确认阁下的密码:");String password1 = sc.next();if (password.equals(password1)) break;else System.out.println("您两次输入的密码不一样,请重新设置");}pn:while (true) {System.out.println("请告知阁下手机号码:");phonenum = sc.next();if (phonenum.length() != 11) {System.out.println("这是手机号码吗?");continue;}if (phonenum.charAt(0) != '1') {System.out.println("这是手机号码吗?");continue;}for (int i = 0; i < phonenum.length(); i++) {char ch = phonenum.charAt(i);if (ch > '9' || ch < '0') {System.out.println("这是手机号码吗?");continue pn;}}break;}un:while (true) {System.out.println("请告知阁下身份证号码:");usernum = sc.next();if (usernum.length() != 18) continue;if (usernum.charAt(0) == '0') continue;if ((usernum.charAt(17) > '9' || usernum.charAt(17) < '0')&& (usernum.charAt(17) != 'x' && usernum.charAt(17) != 'X'))continue;for (int i = 0; i < usernum.length(); i++) {char ch = usernum.charAt(i);if (usernum.charAt(i) > '9' || usernum.charAt(i) < '0') {System.out.println("你输入的是身份证号吗?");continue un;}}user us = new user(username, password, usernum, phonenum);use.add(us);return;}}}

接下来是登录操作

判断用户名是否存在,不存在直接return false,存在输入密码,设置计数器cnt=3

当cnt=0时直接退出程序,当密码正确时进入验证码阶段

public static boolean signIn(ArrayList<user> use, boolean flag) {Scanner sc = new Scanner(System.in);System.out.println("请输入用户名:");String username = sc.next();//看看有没有这个用户,有就继续,没就返回让他注册for (int i = 0; i < use.size(); i++) {if (use.get(i).getUsername().equals(username)) {flag = true;}if (!flag) {System.out.println("未查询到该用户名");return true;}}int cnt = 3;//密码验证pa:while (true) {System.out.println("请输入您的密码:");String password = sc.next();for (int i = 0; i < use.size(); i++) {if (use.get(i).getUsername().equals(username)) {//找到那个用户if (use.get(i).getPassword().equals(password)) {//密码正确System.out.println("密码正确");break pa;} else {cnt--;System.out.println("密码错误,您还有" + cnt + "次机会");if (cnt == 0) {System.out.println("您的账号已被冻结,请重新注册");System.exit(0);}continue pa;}}}}//验证码验证while (true) {String ra = ra();System.out.println("请输入验证码:");System.out.println(ra);String str = sc.next();if (str.equals(ra)) {//输入验证码与输入是否相同System.out.println("验证码正确");return false;} else {System.out.println("验证码错误");continue;}}}

随机生成验证码的函数如下:

 public static String ra() {Random r = new Random();StringBuilder sb = new StringBuilder();//建了个StringBuilder对象for (int i = 0; i < 4; i++) {int f = r.nextInt(2);//随机数字或小写字母if (f == 1) {int ch = r.nextInt(26) + 97;char c = (char) ch;sb.append(c);//字母添加入容器sb中} else {int ch = r.nextInt(10);sb.append(ch);//数字添加到容器sb中}}return sb.toString();//换回String字符串}

最后一步,忘记密码怎么办,当然是先翻用户名再翻手机号和身份证了,判断的时候还是用链式编程了。ps:链式编程yyds

到最后直接setpassword就行了

//忘记密码public static void forgetenPa(ArrayList<user> use) {Scanner sc = new Scanner(System.in);boolean flag = false;System.out.println("请输入用户名:");String username = sc.next();int i;for (i = 0; i < use.size(); i++) {if (use.get(i).getUsername().equals(username)) {flag = true;break;}}if (!flag) {System.out.println("没有此用户名,请重新选择");return;}flag = false;System.out.println("现在验证你的手机号,请输入:");String phonenum = sc.next();if (use.get(i).getPhonenum().equals(phonenum))flag = true;if (!flag) {System.out.println("手机号错误请重新选择");return;}flag = false;System.out.println("现在验证你的身份证号,请输入:");String usernum = sc.next();if (use.get(i).getUsernum().equals(usernum)) {flag = true;}if (!flag) {System.out.println("身份证号错误,请重新输入");return;}System.out.println("身份验证成功!请输入新密码");String password = sc.next();use.get(i).setPassword(password);System.out.println("密码修改成功");}

大功告成 (叉腰)(得意)最后把昨天的合在一起,一个完美的学生信息登记系统就完成了

下面是完整代码(除了学生JavaBean)


import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;public class studentTest {public static void main(String[] args) {ArrayList<student> list = new ArrayList<>();ArrayList<user> use = new ArrayList<>();Scanner sc = new Scanner(System.in);//登陆界面log:while (true) {System.out.println("-----欢迎来到兵器谱的登录界面-----");System.out.println("请选择操作:1注册 2登录 3忘记密码 4退出");String str = sc.next();switch (str) {case "1":logon(use);continue log;case "2":boolean flag = false;if (signIn(use, flag)) {System.out.println("请重新登录");continue log;}System.out.println("登陆成功");break log;case "3":forgetenPa(use);continue log;case "4":System.exit(0);default:System.out.println("你输入的数不符合规矩哦,少侠");}}//学生信息管理界面quit: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.println("请做出你的选择吧!");String choose = sc.next();switch (choose) {case "1":addStudent(list);break;case "2":deleteStudent(list);break;case "3":change(list);break;case "4":look(list);break;case "5":System.out.println("退出成功");break quit;default:System.out.println("你输入的什么玩意");}}}//添加学生信息public static void addStudent(ArrayList<student> list) {Scanner sc = new Scanner(System.in);String id = null;re:while (true) {System.out.println("请输入高手的绰号:");id = sc.next();for (int i = 0; i < list.size(); i++) {if (list.get(i).getId().equals(id)) {System.out.println("已经有高手起这个绰号了,给爷重新起");continue re;}}break;}list.add(gai(list, id));}//删除学生信息public static void deleteStudent(ArrayList<student> list) {if (list.size() == 0) {System.out.println("一个高手也没,你除个锤子名");return;}System.out.println("请输入要除名的高手绰号:");Scanner sc = new Scanner(System.in);String id = sc.next();for (int i = 0; i < list.size(); i++) {if (list.get(i).getId().equals(id)) {list.remove(i);System.out.println("除名成功");return;}}System.out.println("你tm故意找茬是吧!!!");}//查看学生信息public static void look(ArrayList<student> list) {if (list.size() == 0) {System.out.println("还有没有高手你心里没有点ac数?");return;}System.out.println("绰号" + '\t' + '\t' + "姓名" + '\t' + '\t' + "年龄" + '\t' + '\t' + "籍贯");for (int i = 0; i < list.size(); i++) {System.out.printf(list.get(i).getId() + "\t\t");System.out.printf(list.get(i).getName() + "\t\t");System.out.printf(list.get(i).getAge() + "\t\t");System.out.printf(list.get(i).getPlace() + "\t\t");System.out.println("");}}//更改学生信息public static void change(ArrayList<student> list) {Scanner sc = new Scanner(System.in);if (list.size() == 0) {System.out.println("一个高手也没,你改个锤子名");return;}System.out.println("请输入要替换的高手绰号:");String id = sc.next();for (int i = 0; i < list.size(); i++) {if (list.get(i).getId().equals(id)) {System.out.println("请输入高手的新绰号:");id = sc.next();list.set(i, gai(list, id));System.out.println("替换成功");return;}}System.out.println("查无此人");}//重复代码方法化,建立新的学生对象public static student gai(ArrayList<student> list, String id) {Scanner sc = new Scanner(System.in);System.out.println("请输入高手的姓名:");String name = sc.next();System.out.println("请输入高手的籍贯:");String place = sc.next();System.out.println("请输入高手的年龄:");int age = sc.nextInt();student a = new student(name, id, age, place);return a;}//用户注册public static void logon(ArrayList<user> use) {Scanner sc = new Scanner(System.in);String usernum = null;String phonenum = null;String password = null;ch:while (true) {//这个循环判断用户名的合法性System.out.println("请输入用户名:");String username = sc.next();cn:while (true) {if (username.length() < 3) {System.out.println("用户名太短,请重新输入");continue ch;}if (username.length() > 15) {System.out.println("用户名太长,请重新输入");continue ch;}for (int i = 0; i < username.length(); i++) {char ch = username.charAt(i);if (!((ch >= 'A' && ch <= 'z') || ch >= '0' && ch <= '0')) {//让他一定是数字和字母的组合System.out.println("用户名只能由数字和字母组成,请重新输入");continue ch;}//只要有一个字母就合法if (ch >= 'A' && ch <= 'z') break cn;}System.out.println("用户名不能是纯数字,请重新输入:");}for (int i = 0; i < use.size(); i++) {if (use.get(i).getUsername().equals(username)) {System.out.println("给爷重新选一个用户名!!!");continue ch;}}while (true) {System.out.println("请设置阁下的密码:");password = sc.next();System.out.println("请确认阁下的密码:");String password1 = sc.next();if (password.equals(password1)) break;else System.out.println("您两次输入的密码不一样,请重新设置");}pn:while (true) {System.out.println("请告知阁下手机号码:");phonenum = sc.next();if (phonenum.length() != 11) {System.out.println("这是手机号码吗?");continue;}if (phonenum.charAt(0) != '1') {System.out.println("这是手机号码吗?");continue;}for (int i = 0; i < phonenum.length(); i++) {char ch = phonenum.charAt(i);if (ch > '9' || ch < '0') {System.out.println("这是手机号码吗?");continue pn;}}break;}un:while (true) {System.out.println("请告知阁下身份证号码:");usernum = sc.next();if (usernum.length() != 18) continue;if (usernum.charAt(0) == '0') continue;if ((usernum.charAt(17) > '9' || usernum.charAt(17) < '0')&& (usernum.charAt(17) != 'x' && usernum.charAt(17) != 'X'))continue;for (int i = 0; i < usernum.length(); i++) {char ch = usernum.charAt(i);if (usernum.charAt(i) > '9' || usernum.charAt(i) < '0') {System.out.println("你输入的是身份证号吗?");continue un;}}user us = new user(username, password, usernum, phonenum);use.add(us);return;}}}//用户登录public static boolean signIn(ArrayList<user> use, boolean flag) {Scanner sc = new Scanner(System.in);System.out.println("请输入用户名:");String username = sc.next();//看看有没有这个用户,有就继续,没就返回让他注册for (int i = 0; i < use.size(); i++) {if (use.get(i).getUsername().equals(username)) {flag = true;}if (!flag) {System.out.println("未查询到该用户名");return true;}}int cnt = 3;//密码验证pa:while (true) {System.out.println("请输入您的密码:");String password = sc.next();for (int i = 0; i < use.size(); i++) {if (use.get(i).getUsername().equals(username)) {if (use.get(i).getPassword().equals(password)) {System.out.println("密码正确");break pa;} else {cnt--;System.out.println("密码错误,您还有" + cnt + "次机会");if (cnt == 0) {System.out.println("您的账号已被冻结,请重新注册");System.exit(0);}continue pa;}}}}//验证码验证while (true) {String ra = ra();System.out.println("请输入验证码:");System.out.println(ra);String str = sc.next();if (str.equals(ra)) {System.out.println("验证码正确");return false;} else {System.out.println("验证码错误");continue;}}}//忘记密码public static void forgetenPa(ArrayList<user> use) {Scanner sc = new Scanner(System.in);boolean flag = false;System.out.println("请输入用户名:");String username = sc.next();int i;for (i = 0; i < use.size(); i++) {if (use.get(i).getUsername().equals(username)) {flag = true;break;}}if (!flag) {System.out.println("没有此用户名,请重新选择");return;}flag = false;System.out.println("现在验证你的手机号,请输入:");String phonenum = sc.next();if (use.get(i).getPhonenum().equals(phonenum))flag = true;if (!flag) {System.out.println("手机号错误请重新选择");return;}flag = false;System.out.println("现在验证你的身份证号,请输入:");String usernum = sc.next();if (use.get(i).getUsernum().equals(usernum)) {flag = true;}if (!flag) {System.out.println("身份证号错误,请重新输入");return;}System.out.println("身份验证成功!请输入新密码");String password = sc.next();use.get(i).setPassword(password);System.out.println("密码修改成功");}//随机产生验证码函数public static String ra() {Random r = new Random();StringBuilder sb = new StringBuilder();for (int i = 0; i < 4; i++) {int f = r.nextInt(2);if (f == 1) {int ch = r.nextInt(26) + 97;char c = (char) ch;sb.append(c);} else {int ch = r.nextInt(10);sb.append(ch);}}return sb.toString();}}

明天尝试用c写一下系统,挑战一下自己(笑)

学生管理系统登录界面(java版)相关推荐

  1. 学生管理系统登录界面/接口---简单前后端连接

    分析需写页面: 登录页面 学生信息展示页面:表格(可做处理) 学生详情页 前后端分别做: 前端: 1.搭建项目 2.写静态页面 3.用js实现简单的逻辑功能 4.连接后端(ajax),把数据变为真正的 ...

  2. 学生管理系统登录部分

    学生管理系统登录部分 这个只是登录部分的代码 def welcome():print("="*40) # 居中: "{:^{}}".format("* ...

  3. Java毕设项目房地产管理系统登录(java+VUE+Mybatis+Maven+Mysql)

    Java毕设项目房地产管理系统登录(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(We ...

  4. 学生学籍管理系统~~登录界面(Java、SQL)

    有些同学跟我要代码但是因为我没及时看到所以没能及时回复,很抱歉!于是把代码放到github里了.https://github.com/DKAngel/DatabaseExperiment 这次所要介绍 ...

  5. JAVA登录界面学生和老师_学生信息管理系统之第三篇登录界面java代码

    class DLFrame extends JFrame implements ActionListener, ItemListener {// 登录界面 JPanel p1 = null; JPan ...

  6. 学生管理系统(C语言版)

    学生管理系统 这个是大一学习C语言的时候做的一个小项目,代码部分基本都是自己一人完成,没用到什么高大上的技术,在图形化方面用了EasyX(一个C++的图形库),其他都是C语言的基础内容. 项目介绍 项 ...

  7. 微信公众号开发扫码登录(java版)

    文章有不当之处,欢迎指正,如果喜欢微信阅读,你也可以关注我的微信公众号:好好学java,获取优质学习资源. 商家信息管理系统登录时可以用微信扫码登录. 参考文档是微信开放平台,**着重需要关注文档(开 ...

  8. 模仿酷狗7(Kugou7)界面——Java版

    源码名称:模仿酷狗7(Kugou7)界面源码--Java版 源码作者:戴意愿(FlyingWind) 源码说明:内含Java源码和jar运行文件 开发环境:开发环境Eclipse 注意事项:此软件运行 ...

  9. C语言学生管理系统图文超详细版(拷贝即用)

    花哥哥的瞎扯: 大一的课设学生管理系统,因为学也学不精,望各位大神轻点骂,多指点一下吖.注释写得相对的仔细,认真看玩就没有不会的!哈哈哈加油! 实现功能: 建立学生结点之后再弄一个链表,用尾插法的方式 ...

最新文章

  1. PL/SQL学习笔记-常量变量及数据类型初步
  2. vc6.0 点击鼠标获取mysql数据库所在行_VC6.0连接到mysql数据库
  3. 自增符号++(自减符号--)带来的部分影响
  4. 灰度图片维度与彩色图片维度-python-scikit-image包
  5. Linux 如何取进程运行时间,linux -- 获取进程执行时间
  6. 西门子SIMENS学习网站
  7. jq设置html的fontsize,Jquery 设置字体大小(font-size)与行高(line-height)
  8. Makefile(三)
  9. 【Q】【poj 1144】【poj 1523】
  10. 数据结构系统学习(1)数据类型和数据结构的概念
  11. Unity3d Shader开发(三)Pass(Fog )
  12. 1w存银行一年多少利息_2020年,在中国邮政储蓄银行存20万,一年能拿到多少利息?...
  13. Atitit 安全措施流程法 目录 1. 常见等安全措施方法 2 1.1. 安全的语言 代码法,编译型 java 2 1.2. 安全编码法 2 1.3. 安全等框架类库 api 2 1.4. 加密法
  14. MATLAB偏微分方程数值解视频课程
  15. 0402 0603 0805 1206焊盘封装尺寸
  16. mhl数据线_利用MHL数据线 手机同屏到乐视电视X50air上
  17. 免费把自己写的网页上传到网上(腾讯云)
  18. c语言跳马思路,跳马问题 - 日拱一卒的个人空间 - OSCHINA - 中文开源技术交流社区...
  19. BT通信中数据下载的分析和实现
  20. 一、搜索引擎篇-揭开es神秘的面纱

热门文章

  1. 【LittleXi】操作系统
  2. 研究生开题报告评议意见计算机,对开题报告评议意见
  3. Docker启动提示:Cannot connect to the Docker daemon...
  4. 沸点网络电视停运之殇
  5. 关于HBuilder真机调试,手机卸载后无法使用的问题
  6. BAT命令用RoboCopy定期备份文件夹
  7. [Widget]Android小票打印,蓝牙打印、固定IP打印、黑白图片打印
  8. 时序轮转的意思_时序轮转 春之耕耘篇
  9. python------线程池的应用
  10. XILINX FPGA数字信号处理——16、自适应信号处理原理及实现