教师管理系统

大概功能:

1.显示所有教师 2.按姓名查找教师 3.按工号查找教师 4.增加教师 5.删除教师 6.退出

数据会保存到 txt 文件里面

姓名:必须是中文

手机号码:必须是11位,必须是数字

效果展示:

代码展示:

TeacherSystem类:

package TEACHERSYSTEM;import java.io.*;
import java.util.ArrayList;
import java.util.Objects;
import java.util.Random;
import java.util.Scanner;public class TeacherSystem {public static void main(String[] args) {ArrayList<User> list = new ArrayList<>();User u1 = new User("1238", "张三", "18716699212", "35612341243123@qq.com", 701);User u2 = new User("1234", "李四", "18716699212", "35612341243123@qq.com", 801);User u3 = new User("12345", "王五", "18716699212", "35612341243123@qq.com", 901);list.add(u1);list.add(u2);list.add(u3);// 从文件加载数据LoadFromFile(list);// 启动登录流程login(list);// 保存数据到文件SaveToFile(list);}private static void login(ArrayList<User> list) {Scanner sc = new Scanner(System.in);System.out.println("请输入工号:");while (true) {String inputID = sc.next();boolean found = false;for (User user : list) {if (user.getId().equals(inputID)) {found = true;break;}}if (found) {break;} else {System.out.println("账号 " + inputID + " 不存在,请重新输入");}}System.out.println("请输入姓名:");while (true) {String inputName = sc.next();boolean found = false;for (User user : list) {if (Objects.equals(user.getName(), inputName)) {found = true;break;}}if (found) {break;} else {System.out.println("姓名 " + inputName + " 不存在,请重新输入");}}// 获取验证码while (true) {String rightCode = getCode();System.out.println("当前正确的验证码为:" + rightCode);System.out.print("请输入验证码:");String code = sc.next();if (code.equalsIgnoreCase(rightCode)) {System.out.println("验证码正确");OperaterTeacher(list);break;} else {System.out.println("验证码错误,请重新输入");}}sc.close();}public static void OperaterTeacher(ArrayList<User> list) {Scanner sc = new Scanner(System.in);while (true) {System.out.println("---------------------------------------------------------------------");System.out.println("Welcome to the use 教师管理系统");System.out.println("请选择你需要进行的操作:1.显示所有教师 2.按姓名查找教师 3.按工号查找教师 4.增加教师 5.删除教师 6.退出");System.out.println("---------------------------------------------------------------------");int choose = sc.nextInt();switch (choose) {case 1:ShowAllTeacher(list);break;case 2:SeekName(list);break;case 3:SeekId(list);break;case 4:AddTeacher(list);break;case 5:DeleteTeacher(list);break;case 6:System.out.println("退出管理员操作页面");return;default:System.out.println("没有该选项");}}}public static void ShowAllTeacher(ArrayList<User> list) {System.out.println("工号\t\t\t姓名\t\t\t电话\t\t\t\t邮箱\t\t\t\t\t班级");for (User user : list) {System.out.println(user.getId() + "\t\t\t" + user.getName() + "\t\t\t" + user.getPhoneNumber() + "\t\t\t" + user.getLetterbox() + "\t\t" + user.getClassNumber());}}public static void SeekName(ArrayList<User> list) {Scanner sc = new Scanner(System.in);while (true) {System.out.println("请输入姓名:");String inputName = sc.next();boolean found = false;for (User user : list) {if (user.getName().equals(inputName)) {System.out.println("工号\t\t\t姓名\t\t\t电话\t\t\t\t邮箱\t\t\t\t班级");System.out.println(user.getId() + "\t\t\t" + user.getName() + "\t\t\t" + user.getPhoneNumber() + "\t\t\t" + user.getLetterbox() + "\t\t" + user.getClassNumber());found = true;}}if (!found) {System.out.println("输入的姓名不存在,请重新输入");} else {return; // 如果找到教师信息,退出循环}}}public static void SeekId(ArrayList<User> list) {Scanner sc = new Scanner(System.in);while (true) {System.out.println("请输入工号:");String inputID = sc.next();boolean found = false;for (User user : list) {if (user.getId().equals(inputID)) {System.out.println("工号\t\t\t姓名\t\t\t电话\t\t\t\t邮箱\t\t\t\t班级");System.out.println(user.getId() + "\t\t\t" + user.getName() + "\t\t\t" + user.getPhoneNumber() + "\t\t\t" + user.getLetterbox() + "\t\t" + user.getClassNumber());found = true;}}if (!found) {System.out.println("输入的工号不存在,请重新输入");} else {return;}}}public static void AddTeacher(ArrayList<User> list) {Scanner sc = new Scanner(System.in);System.out.println("请输入新教师工号:");String newID = sc.next();if (contain(list, newID)) {System.out.println("该工号已经存在,请选择其他工号");return;}String newName;while (true) {System.out.println("请输入新教师的姓名:");newName = sc.next();if (checkChineseName(newName)) {break;} else {System.out.println("输入无效,请输入中文姓名。");}}String newPhone;while (true) {System.out.println("请输入新教师的手机号码:");sc.nextLine();newPhone = sc.nextLine();boolean flag = checkPhoneNumber(newPhone);if (flag) {break;} else {System.out.println("手机号码格式错误,请重新输入");}}System.out.println("请输入新教师的邮箱账号:");String newLetterBox = sc.next();System.out.println("请输入新教师的所在班级:");int newClassNumber = Integer.parseInt(sc.next());User newUser = new User(newID, newName, newPhone, newLetterBox, newClassNumber);list.add(newUser);System.out.println("教师添加成功");}public static void DeleteTeacher(ArrayList<User> list) {Scanner sc = new Scanner(System.in);System.out.println("请输入要删除的工号:");String IDToDelete = sc.next();User AimUser = findUserByAccount(list, IDToDelete);if (AimUser == null) {System.out.println("用户账号不存在");return;}list.remove(AimUser);System.out.println("用户删除成功");}private static boolean checkChineseName(String name) {return name.matches("^[\\u4e00-\\u9fa5]+$"); // 判断是否全为中文}private static boolean checkPhoneNumber(String phoneNumber) {int len = phoneNumber.length();// 检查手机号码长度并且只包含数字return len == 11 && phoneNumber.matches("\\d+");}// 用户者寻找用户private static User findUserByAccount(ArrayList<User> list, String ID) {for (User user : list) {if (user.getId().equals(ID)) {return user;}}return null;}public static boolean contain(ArrayList<User> list, String ID) {for (User user : list) {if (ID.equals(user.getId())) {return true;}}return false;}private 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));}Random r = new Random();StringBuilder sb = new StringBuilder();for (int i = 0; i < 4; i++) {int index = r.nextInt(list.size());char c = list.get(index);sb.append(c);}int number = r.nextInt(10);sb.append(number);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 void LoadFromFile(ArrayList<User> list) {try (BufferedReader br = new BufferedReader(new FileReader("teachers.txt"))) {String line;line = br.readLine(); // 读取并忽略第一行标题while ((line = br.readLine()) != null) {String[] parts = line.split(",");if (parts.length == 5) {String id = parts[0];String name = parts[1];String phone = parts[2];String email = parts[3];int classNumber = Integer.parseInt(parts[4]);User user = new User(id, name, phone, email, classNumber);list.add(user);}}} catch (IOException e) {System.out.println("加载文件失败,可能是文件不存在。");}}private static void SaveToFile(ArrayList<User> list) {try (BufferedWriter bw = new BufferedWriter(new FileWriter("teachers.txt"))) {bw.write("工号\t\t\t姓名\t\t\t电话\t\t\t\t邮箱\t\t\t\t\t班级");bw.newLine();for (User user : list) {bw.write(user.getId() + "\t\t\t" + user.getName() + "\t\t\t" + user.getPhoneNumber() + "\t\t\t" + user.getLetterbox() + "\t\t" + user.getClassNumber());bw.newLine();}} catch (IOException e) {System.out.println("保存文件失败");}}
}

User类:

package TEACHERSYSTEM;public class User {private String id;private String name;private String PhoneNumber;private String Letterbox;private int ClassNumber;public User(){}public User(String id, String name, String phoneNumber, String letterbox, int classNumber) {this.id = id;this.name = name;PhoneNumber = phoneNumber;Letterbox = letterbox;ClassNumber = classNumber;}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPhoneNumber() {return PhoneNumber;}public void setPhoneNumber(String phoneNumber) {PhoneNumber = phoneNumber;}public String getLetterbox() {return Letterbox;}public void setLetterbox(String letterbox) {Letterbox = letterbox;}public int getClassNumber() {return ClassNumber;}public void setClassNumber(int classNumber) {ClassNumber = classNumber;}
}

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

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

相关文章

LLaMA详解

LLaMA 进化史 大规模语言模型(Large Language Model, LLM)的快速发展正在以前所未有的速度推动人工智能(AI)技术的进步。 作为这一领域的先行者, Meta在其LLaMA(Large Language Model Meta AI)系列模型上取得了一系列重大突破。 近日, Meta官方正式宣布推出LLaMA-3, 作为继LL…

BAPI_BATCH_CHANGE在更新后不自动更新批次特征

1、问题介绍 在CL03中看到分类特性配置了制造日期字段&#xff0c;并绑定了生产日期字段MCH1~HSDAT MSC2N修改批次的生产日期字段时&#xff0c;自动修改了对应的批次特性 但是通过BAPI&#xff1a;BAPI_BATCH_CHANGE修改生产日期时&#xff0c;并没有更新到批次特性中 2、BAPI…

JVM简介—3.JVM的执行子系统

大纲 1.Class文件结构 2.Class文件格式概述 3.Class文件格式详解 4.字节码指令 5.类的生命周期和初始化 6.类加载的全过程 7.类加载器 8.双亲委派模型 9.栈桢详解 11.方法调用详解 12.基于栈的字节码解释执行引擎 1.Class文件结构 (1)Java跨平台的基础 字节码是各…

【学生管理系统】权限管理之角色管理

目录 6.3 角色管理 6.3.1 查询所有角色 6.3.2 核心2&#xff1a;给角色授予权限(菜单) 6.3.3 添加角色 6.3 角色管理 6.3.1 查询所有角色 1&#xff09;后端【已有】 2&#xff09;前端 要求&#xff1a;左右分屏 <template><div><el-row><el-c…

ArrayList 和LinkedList的区别比较

前言 ‌ArrayList和LinkedList的主要区别在于它们的底层数据结构、性能特点以及适用场景。‌ArrayList和LinkedList从名字分析&#xff0c;他们一个是Array&#xff08;动态数组&#xff09;的数据结构&#xff0c;一个是Linked&#xff08;链表&#xff09;的数据结构&#x…

深度学习笔记(4)——视频理解

视频理解 视频理解的问题:视频太大了 解决方案:在切片上训练,低FPS,低分辨率 测试的时候:在不同的clips上运行模型,取平均预测结果 视频由图片序列组成: 单帧CNN模型 训练普通的2D CNN模型,对每一帧进行分类&#xff0c;通常是视频分类的一个非常强的基线方法。 Late Fusio…

前端项目 npm报错解决记录

1.首先尝试解决思路 npm报错就切换yarn &#xff0c; yarn报错就先切换npm删除 node_modules 跟 package-lock.json文件重新下载依 2. 报错信息&#xff1a; Module build failed: Error: Missing binding D:\vue-element-admin\node_modules\node-sass\vendor\win32-x64-8…

【AI大模型】探索GPT模型的奥秘:引领自然语言处理的新纪元

目录 &#x1f354; GPT介绍 &#x1f354; GPT的架构 &#x1f354; GPT训练过程 3.1 无监督的预训练语言模型 3.2 有监督的下游任务fine-tunning &#x1f354; 小结 学习目标 了解什么是GPT.掌握GPT的架构.掌握GPT的预训练任务. &#x1f354; GPT介绍 GPT是OpenAI公…

elasticsearch-java客户端jar包中各模块的应用梳理

最近使用elasticsearch-java客户端实现对elasticsearch服务的Api请求&#xff0c;现对elasticsearch-java客户端jar包中各模块的应用做个梳理。主要是对co.elastic.clients.elasticsearch路径下的各子包的简单说明。使用的版本为&#xff1a;co.elastic.clients:elasticsearch-…

前后端分离(前后端交互步骤)

1.设计数据库 /*Navicat Premium Data Transfer ​Source Server : localhost_3306Source Server Type : MySQLSource Server Version : 80037 (8.0.37)Source Host : localhost:3306Source Schema : studymysql ​Target Server Type : MySQL…

【VulnOSv2靶场渗透】

文章目录 一、基础信息 二、信息收集 三、漏洞探测 四、提权 一、基础信息 Kali IP: 192.168.20.146 靶机IP&#xff1a;192.168.20.152 二、信息收集 nmap -sS -sV -p- -A 192.168.20.152 开放了22、80、6667等端口 22端口&#xff1a;openssh 6.6.1p1 80端口&…

无需训练!多提示视频生成最新SOTA!港中文腾讯等发布DiTCtrl:基于MM-DiT架构

文章链接&#xff1a;https://arxiv.org/pdf/2412.18597 项目链接&#xff1a;https://github.com/TencentARC/DiTCtrl 亮点直击 DiTCtrl&#xff0c;这是一种基于MM-DiT架构的、首次无需调优的多提示视频生成方法。本文的方法结合了新颖的KV共享机制和隐混合策略&#xff0c;使…

SpringBoot对静态资源的映射规则

目录 什么是SpringBoot静态资源映射&#xff1f; 如何实现SpringBoot静态资源映射&#xff1f; 1. webjars&#xff1a;以jar包的方式引入静态资源 示例&#xff1a; 2. /** 访问当前项目的任何资源 示例一&#xff1a; 示例二&#xff1a; 3. 静态首页&#xff08;欢…

【EtherCATBasics】- KRTS C++示例精讲(2)

EtherCATBasics示例讲解 目录 EtherCATBasics示例讲解结构说明代码讲解 项目打开请查看【BaseFunction精讲】。 结构说明 EtherCATBasics&#xff1a;应用层程序&#xff0c;主要用于人机交互、数据显示、内核层数据交互等&#xff1b; EtherCATBasics.h &#xff1a; 数据定义…

【论文阅读】Reducing Activation Recomputation in Large Transformer Models

创新点&#xff1a; 针对Transformer结构&#xff0c;通过序列并行和选择性重计算激活值&#xff0c;在节省显存空间占用的情况下&#xff0c;不带来明显通信开销&#xff0c;同时减少重计算成本。 总的来说&#xff0c;就是在原有的张量并行的基础上&#xff0c;对LayerNorm和…

Linux arm 编译安装glibc-2.29

重要的话说三遍&#xff1a; &#xff01;&#xff01;&#xff01;&#xff01;&#xff01;不要轻易自己去安装glibc&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; &#xff01;&#xff01;&#xff01;&#xff01;&#xff01;不要轻易自己去安装glibc&a…

STM32完全学习——FLASH上FATFS文件管理系统

一、需要移植的接口 我们通过看官网的手册&#xff0c;可以看到我们只要完成下面函数的实现&#xff0c;就可以完成移植。我们这里只移植前5个函数&#xff0c;获取时间的函数我们不在这里移植。 二、移植接口函数 DSTATUS disk_status (BYTE pdrv /* Physical drive nmuber…

Docker使用——国内Docker的安装办法

文章目录 参考资料前言Mac安装办法Homebrew 安装1. 直接下报错2. 安装homebrew&#xff0c; 用国内镜像3. 安装Docker4. 启动docker服务5. 测试是否安装成功 参考资料 鸣谢大佬文章。 macOS系统中&#xff1a;Docker的安装&#xff1a;https://blog.csdn.net/sulia1234567890…

Java-38 深入浅出 Spring - AOP切面增强 核心概念 相关术语 Proxy配置

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 大数据篇正在更新&#xff01;https://blog.csdn.net/w776341482/category_12713819.html 目前已经更新到了&#xff1a; MyBatis&#xff…

【CSS in Depth 2 精译_096】16.4:CSS 中的三维变换 + 16.5:本章小结

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第五部分 添加动效 ✔️【第 16 章 变换】 ✔️ 16.1 旋转、平移、缩放与倾斜 16.1.1 变换原点的更改16.1.2 多重变换的设置16.1.3 单个变换属性的设置 16.2 变换在动效中的应用 16.2.1 放大图标&am…