学生管理系统控制台版(java)

 首先得先写个Student类,用来存放学生信息

public class Student {private String id;private  String name;private int age;private String address;public Student() {}public Student(String id, String name, int age, String address) {this.id = id;this.name = name;this.age = age;this.address = address;}/*** 获取* @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 address*/public String getAddress() {return address;}/*** 设置* @param address*/public void setAddress(String address) {this.address = address;}public String toString() {return "Student{id = " + id + ", name = " + name + ", age = " + age + ", address = " + address + "}";}
}

再写个User类,用来存放用户名,密码,身份证号,手机号 

public class User {private String  username;private String password;private String idOnly;private String phone;public User() {}public User(String username, String password, String idOnly, String phone) {this.username = username;this.password = password;this.idOnly = idOnly;this.phone = phone;}/*** 获取* @return username*/public String getUsername() {return username;}/*** 设置* @param username*/public void setUsername(String username) {this.username = username;}/*** 获取* @return password*/public String getPassword() {return password;}/*** 设置* @param password*/public void setPassword(String password) {this.password = password;}/*** 获取* @return idOnly*/public String getIdOnly() {return idOnly;}/*** 设置* @param idOnly*/public void setIdOnly(String idOnly) {this.idOnly = idOnly;}/*** 获取* @return phone*/public String getPhone() {return phone;}/*** 设置* @param phone*/public void setPhone(String phone) {this.phone = phone;}public String toString() {return "User{username = " + username + ", password = " + password + ", idOnly = " + idOnly + ", phone = " + phone + "}";}
}

 接下来就可以开始写正式的代码了

import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;public class StudentSystem {public static void main(String[] args) {ArrayList<User>userList=new ArrayList<>();int count=0;while (true) {System.out.println("欢迎来到学生管理系统");System.out.println("请选择操作1登录 2注册 3忘记密码");Scanner sd=new Scanner(System.in);int s = sd.nextInt();switch (s){case 1: {boolean login = login(userList);if(count==3){System.out.println("您已输入三次错误");exit();}if (login){ArrayList<Student>list=new ArrayList<>();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("请输入您的选择:");Scanner sc = new Scanner(System.in);int number = sc.nextInt();switch (number) {case 1:addStudent(list);break;case 2:deleteStudent(list);break;case 3:reviseStudent(list);break;case 4:selectStudent(list);break;case 5:exit();System.exit(0);//停止虚拟机运行default:System.out.println("没有这个选项");}}}else {System.out.println("用户名密码错误,请重新输入");count++;break;}}case 2:zhuCe(userList);break;case 3:forget(userList);break;default:System.out.println("没有这个选项");}}}//添加学生public static void   addStudent(ArrayList<Student>list){Student s=new Student();Scanner sc=new Scanner(System.in);String id= null;while (true) {System.out.println("请输入学生id");id = sc.next();boolean flag = exist(list, id);if(flag){System.out.println("id已经存在,请重新录入");}else{s.setId(id);break;}}System.out.println("请输入学生姓名");String name=sc.next();s.setName(name);System.out.println("请输入学生年龄");int age=sc.nextInt();s.setAge(age);System.out.println("请输入学生住址");String address=sc.next();s.setAddress(address);list.add(s);System.out.println("学生信息添加成功");}//删除学生public static void deleteStudent(ArrayList<Student>list){System.out.println("您要删除的学生id");Scanner sc=new Scanner(System.in);String id=sc.next();int i = index(list, id);if(i>=0){list.remove(i);System.out.println("id为"+id+"的学生删除成功");}else{System.out.println("id不存在,删除失败");}}//修改学生public static void reviseStudent(ArrayList<Student>list){Scanner sc=new Scanner(System.in);System.out.println("请输入要修改的学生id");String stuId = sc.next();int i = index(list, stuId);if(i>=0){Student stu=list.get(i);System.out.println("请输入学生姓名");String name=sc.next();stu.setName(name);System.out.println("请输入学生年龄");int age=sc.nextInt();stu.setAge(age);System.out.println("请输入学生住址");String address=sc.next();stu.setAddress(address);System.out.println("学生信息修改成功");}else{System.out.println("要修改的id"+stuId+"不存在,请重新输入");return;}}//查询学生public static void selectStudent(ArrayList<Student>list){if(list.size()==0){System.out.println("当前无学生信息,请添加后再查询");return;}System.out.println("id\t\t姓名\t年龄\t地址");for (int i = 0; i < list.size(); i++) {Student student = list.get(i);System.out.println(student.getId()+"\t"+student.getName()+"\t"+student.getAge()+"\t"+student.getAddress());}}//退出public static void exit(){System.out.println("退出");}//是否存在idpublic static boolean exist(ArrayList<Student>list,String id){for (int i = 0; i < list.size(); i++) {Student stu = list.get(i);String stuId = stu.getId();if(stuId.equals(id)){return true;}}return false;}//根据id获取索引public static int index(ArrayList<Student>list,String id){for (int i = 0; i < list.size(); i++) {Student stu = list.get(i);String stuId = stu.getId();if(stuId.equals(id)){return i;}}return -1;}//登录public static  boolean login(ArrayList<User>userList){Scanner sc=new Scanner(System.in);System.out.println("请输入用户名");String name = sc.next();System.out.println("请输入密码");String pwd=sc.next();String yesCode=getCode();System.out.println("请输入验证码");String code=sc.next();for (int i = 0; i < userList.size(); i++) {User user = userList.get(i);String username = user.getUsername();String password = user.getPassword();if(username.equals(name)&&password.equals(pwd)&&(code.equalsIgnoreCase(yesCode))){return true;}}boolean exist = existUser(userList, name);if(exist==false){System.out.println("用户未注册,请先注册");}return false;}//注册public static  void zhuCe(ArrayList<User>userList){User user=new User();Scanner sc=new Scanner(System.in);while (true) {System.out.println("请输入用户名");String username = sc.next();boolean flag1 = checkUsername(username);if (!flag1) {System.out.println("用户格式不满足,需要重新输入");continue;}boolean flag2 = existUser(userList, username);if(flag2){System.out.println("用户名"+username+"已存在,请重新输入");}else{System.out.println("用户名"+username+"可用");user.setUsername(username);break;}}while (true) {System.out.println("请输入密码");String password = sc.next();System.out.println("请再次输入密码");String againPassword=sc.next();if(!againPassword.equals(password)){System.out.println("两次输入的密码不一致,请重新输入");}else{System.out.println("两次输入的密码一致");user.setPassword(password);break;}}while (true) {System.out.println("请输入身份证号,长度18,不能以0开头,前17为必须是数字,最后一位可以是数字,也可以是大写X或小写x");String idOnly = sc.next();boolean flag3 = checkIdOnly(idOnly);if(flag3){System.out.println("身份证"+idOnly+"可用");user.setIdOnly(idOnly);break;}else{System.out.println("身份证"+idOnly+"没有按要求填写");}}while (true) {System.out.println("请输入手机号码,长度为11,不能以0开头,必须都是数字");String phone = sc.next();boolean flag4 = checkPhone(phone);if(flag4){System.out.println("手机号"+phone+"可用");user.setPhone(phone);break;}else{System.out.println("手机号"+phone+"没有按要求填写");}}userList.add(user);}//生成验证码public static String getCode(){ArrayList<Character>list=new ArrayList<>();for (int i = 0; i < 26; i++) {list.add((char)('a'+i));list.add((char)('A'+i));}StringBuilder sb=new StringBuilder();Random r=new Random();for (int i = 0; i < 4; i++) {//获取随即索引int index=r.nextInt(list.size());//利用随即索引获取字符char c=list.get(index);//把随机字符添加到sb中sb.append(c);}int number=r.nextInt(10);sb.append(number);System.out.print("正确的验证码为:");System.out.println(sb);char[] arr=sb.toString().toCharArray();int randomIndex=r.nextInt(arr.length);char temp = arr[randomIndex];arr[randomIndex]=arr[arr.length-1];arr[arr.length-1]=temp;return new String(arr);}//校验手机号private static boolean checkPhone(String phone) {//长度为11if(phone.length()!=11){return false;}//不能以0开头boolean flag = phone.startsWith("0");//如果判断正确返回trueif(flag){return false;}//必须都是数字for (int i = 0; i < phone.length()-1; i++) {char c = phone.charAt(i);if(!(c>='0'&&c<='9')){return false;}}return true;}//校验身份证private static boolean checkIdOnly(String idOnly) {if(idOnly.length()!=18){return false;}/*开头不能为0*/boolean flag = idOnly.startsWith("0");//如果判断正确返回trueif(flag){return false;}//前17为必须是数字for (int i = 0; i < idOnly.length()-1; i++) {char c = idOnly.charAt(i);if(!(c>='0'&&c<='9')){return false;}}//最后一位char endChar = idOnly.charAt(idOnly.length() - 1);if(!((endChar>='0'&&endChar<='9')||(endChar=='X')||(endChar=='x'))){return false;}return true;}//忘记密码public static  void forget(ArrayList<User>userList){User user=new User();System.out.println("请输入用户名");Scanner sc=new Scanner(System.in);String username = sc.next();boolean flag = existUser(userList, username);if(flag){System.out.println("请输入身份证号");String idOnly=sc.next();boolean result1 = existIdOnly(userList, idOnly);System.out.println("请输入手机号");String phone=sc.next();boolean result2 = existPhone(userList, phone);if(result1&&result2){System.out.println("请输入密码");String password=sc.next();user.setPassword(password);}else{System.out.println("账号信息不匹配,修改失败");}}else{System.out.println("未注册");}}//校验用户名public static boolean checkUsername(String username){//用户名长度在3~15之间int len=username.length();if(len<3||len>15){return false;}//只能是字母+数字,但不能是纯数字for (int i = 0; i < username.length(); i++) {char c = username.charAt(i);if(!((c>='a'&&c<='z')||(c>='A'&&c<='Z')||(c>='0'&&c<='9'))){return  false;}}int count=0;for (int i = 0; i < username.length(); i++) {char c = username.charAt(i);if((c>='a'&&c<='z')||(c>='A'&&c<='Z')){count++;break;}}return count>0;}//是否存在用户名public static boolean existUser(ArrayList<User>userList,String username){for (int i = 0; i < userList.size(); i++) {User user = userList.get(i);String stuId = user.getUsername();if(stuId.equals(username)){return true;}}return false;}//是否存在身份证号public static boolean existIdOnly(ArrayList<User>userList,String idOnly){for (int i = 0; i < userList.size(); i++) {User user = userList.get(i);String stuIdOnly = user.getIdOnly();if(stuIdOnly.equals(idOnly)){return true;}}return false;}//是否存在手机号public static boolean existPhone(ArrayList<User>userList,String phone){for (int i = 0; i < userList.size(); i++) {User user = userList.get(i);String stuPhone = user.getPhone();if(stuPhone.equals(phone)){return true;}}return false;}
}

运行结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/815344.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++面向对象程序设计-北京大学-郭炜【课程笔记(六)】

C面向对象程序设计-北京大学-郭炜【课程笔记&#xff08;六&#xff09;】 1、可变长数组类的实现2、流插入运算符和流提取运算符的重载2.1、对形如cout << 5 ; 单个"<<"进行重载2.2、对形如cout << 5 << “this” ;连续多个"<<&…

蓝桥杯-最大子矩阵

问题描述 下面是一个 20x20 的矩阵&#xff0c;矩阵中的每个数字是一个1到9之间的数字&#xff0c;请注意显示时去除了分隔符号。 6985924183938786894117615876963131759284373473483266274834855367125655616786474316121686927432329479135474133499627734472797994592984…

⑤-1 学习PID--什么是PID

​ PID 算法可以用于温度控制、水位控制、飞行姿态控制等领域。后面我们通过PID 控制电机进行说明。 自动控制系统 在直流有刷电机的基础驱动中&#xff0c;如果电机负载不变&#xff0c;我们只要设置固定的占空比&#xff08;电压&#xff09;&#xff0c;电机的速度就会稳定在…

ceph rbd部署与使用

一、前言 Ceph RBD&#xff08;Rados Block Device&#xff09;是 Ceph 存储解决方案的一部分&#xff0c;它提供了一个分布式块设备服务&#xff0c;允许用户创建和管理虚拟块设备&#xff0c;类似于传统的本地磁盘&#xff0c;Ceph RBD 是一个高度可扩展的存储解决方案&#…

C语言:关于动态内存管理我到底应该懂些什么?看了我这篇你就通透了。

1.动态内存的分配 在我们初学C语言的时候&#xff0c;我们经常用一下几种方式申请内存空间。 int a 10;//在栈空间上开辟4个字节存放这个值。 char arr[10] {1,2,3,4,5,6,7,8,9,10};//在栈空间上开辟10个字节的连续空间。但是上述开辟空间有两个特点 1.空间开辟大小是固定的…

FJSP:袋鼠群优化(Kangaroo Swarm Optimization ,KSO)算法求解柔性作业车间调度问题(FJSP),提供MATLAB代码

一、柔性作业车间调度问题 柔性作业车间调度问题&#xff08;Flexible Job Shop Scheduling Problem&#xff0c;FJSP&#xff09;&#xff0c;是一种经典的组合优化问题。在FJSP问题中&#xff0c;有多个作业需要在多个机器上进行加工&#xff0c;每个作业由一系列工序组成&a…

微服务之Consul 注册中心介绍以及搭建

一、微服务概述 1.1单体架构 单体架构&#xff08;monolithic structure&#xff09;&#xff1a;顾名思义&#xff0c;整个项目中所有功能模块都在一个工程中开发&#xff1b;项目部署时需要对所有模块一起编译、打包&#xff1b;项目的架构设计、开发模式都非常简单。 当项…

C++ | Leetcode C++题解之第22题括号生成

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<string> res; //记录答案 vector<string> generateParenthesis(int n) {dfs(n , 0 , 0, "");return res;}void dfs(int n ,int lc, int rc ,string str){if( lc n && rc n…

美团笔试复盘

昨天做了美团的笔试&#xff0c;现在复盘一下。 1、将数组按照绝对值大小排序 有道算法题解决思路需要将数组按照绝对值大小进行排序&#xff0c;我使用的是sort方法Comparator比较器实现的&#xff0c;这里记录一下&#xff1a; public static void main(String[] args) {In…

第二证券策略:股指预计维持震荡格局 关注汽车、工程机械等板块

第二证券指出&#xff0c;指数自今年2月份阶段低点反弹以来&#xff0c;3月份持续高位整理。进入4月份之后面对年报和一季报的双重财报发表期&#xff0c;预计指数短期保持高位整理概率比较大。前期缺乏成绩支撑的概念股或有回落的危险&#xff0c;主张重视成绩稳定、估值低、分…

【Leetcode】1702. 修改后的最大二进制字符串

文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接&#x1f517; 给你一个二进制字符串 b i n a r y binary binary &#xff0c;它仅有 0 0 0 或者 1 1 1 组成。你可以使用下面的操作任意次对它进行修改&#xff1a; 操作 1 &#xff1a;如果…

Golang(一):基础、数组、map、struct

目录 hello world 变量 常量&#xff0c;iota 函数 init函数和导包过程 指针 defer 数组和动态数组 固定长度数组 遍历数组 动态数组 len 和 cap 截取 切片的追加 map 四种声明方式 遍历map 删除 查看键是否存在 结构体 声明 作为形参 方法 封装 继承…

[入门到放弃]设计模式-笔记

模块化设计 20240448 模块不包含数据&#xff0c;通过实例的指针&#xff0c;实现对实例的操作&#xff1b;唯一包含的数据是用于管理这些模块的侵入式链表模块只负责更具定义的数据结构&#xff0c;执行对应的逻辑&#xff0c;实现不同实例的功能&#xff1b; 参考资料 使用…

【热门话题】常见分类算法解析

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 常见分类算法解析1. 逻辑回归&#xff08;Logistic Regression&#xff09;2. 朴…

4.Godot图片素材的获取和编辑

游戏开发中经常遇到图片素材的需求 1. 图片素材的准备 术语&#xff1a;Sprite 精灵&#xff0c;游戏开发中指一张图片来源不明的图片&#xff0c;切勿在商业用途使用&#xff0c;以免引起版权风险。 1. 在学习阶段&#xff0c;可以百度或者从一些资源网站获取&#xff0c;这…

ViT-DeiT:用于乳腺癌组织病理图像分类的集成模型

两种预训练Vision Transformer模型的集成模型&#xff0c;即Vision Transformer和数据高效视觉Transformer&#xff08;Data-Efficient Image Transformer&#xff09;。此集成模型是一种软投票模型。 近年来&#xff0c;乳腺癌的分类研究主要集中在超声图像分类、活检数据分类…

QT常用控件

常用控件 控件概述QWidget 核⼼属性核⼼属性概览enabledgeometrywindowTitlewindowIconwindowOpacitycursorfonttoolTipfocusPolicystyleSheet 按钮类控件Push ButtonRadio ButtionCheck Box 显⽰类控件LabelLCD NumberProgressBarCalendar Widget 输⼊类控件Line EditText Edi…

AI领域的最新动态:大型语言模型的崛起、AI芯片竞争与创新应用

AI领域的最新动态&#xff1a;大型语言模型的崛起、AI芯片竞争与创新应 在最近的AI新闻中&#xff0c;有几个重要的发展值得关注&#xff1a; 1. **大型语言模型的发布和更新**&#xff1a; - Google在其Google Cloud Next活动上宣布&#xff0c;Gemini 1.5现已在180多个国家/…

(学习日记)2024.04.15:UCOSIII第四十三节:任务消息队列

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

# 达梦sql查询 Sql 优化

达梦sql查询 Sql 优化 文章目录 达梦sql查询 Sql 优化注意点测试数据单表查询 Sort 语句优化优化过程 多表关联SORT 优化函数索引的使用 注意点 关于优化过程中工具的选用&#xff0c;推荐使用自带的DM Manage&#xff0c;其它工具在查看执行计划等时候不明确在执行计划中命中…