教师管理系统
大概功能:
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;}
}
相关文章:
教师管理系统
大概功能: 1.显示所有教师 2.按姓名查找教师 3.按工号查找教师 4.增加教师 5.删除教师 6.退出 数据会保存到 txt 文件里面 姓名:必须是中文 手机号码:必须是11位,必须是数字 效果展示: 代码展示: Teache…...
Word论文交叉引用一键上标
Word论文交叉引用一键上标 1.进入Microsoft word使用CtrlH快捷键或单击替换按钮 2.在查找内容中输入[^#] 3.鼠标点击,标签为“替换为:”的文本框,注意光标一定要打在图红色方框圈中的文本框中! 4.点击格式选择字体 5.勾选上标…...
集成方案 | Docusign + 蓝凌 EKP,打造一站式合同管理平台,实现无缝协作!
本文将详细介绍 Docusign 与蓝凌 EKP 的集成步骤及其效果,并通过实际应用场景来展示 Docusign 的强大集成能力,以证明 Docusign 集成功能的高效性和实用性。 在当今数字化办公环境中,企业对于提高工作效率和提升用户体验的需求日益迫切。蓝凌…...
Python大数据可视化:基于python大数据的电脑硬件推荐系统_flask+Hadoop+spider
开发语言:Python框架:flaskPython版本:python3.7.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 管理员登录 管理员功能界面 价格区间界面 用户信息界面 品牌管理 笔记本管理 电脑主机…...
【递归与回溯深度解析:经典题解精讲(下篇)】—— Leetcode
文章目录 有效的数独解数独单词搜索黄金矿工不同的路径||| 有效的数独 递归解法思路 将每个数独的格子视为一个任务,依次检查每个格子是否合法。 如果当前格子中的数字违反了数独规则(在行、列或 33 小方块中重复),直接返回 Fals…...
Spring boot处理跨域问题
Spring boot处理跨域问题 方案一方案二推荐解决方案注意 方案一 实现WebMvcConfigurer的addCorsMappings方法 Configuration public class InterceptorConfig implements WebMvcConfigurer {Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMappin…...
每日小题打卡
目录 幂次方 手机键盘 简单排序 校庆 性感素数 幂次方 题目描述 对任意正整数 N,计算 X^Nmod233333 的值。 输入格式 共一行,两个整数 X 和 N。 输出格式 共一行,一个整数,表示 X^Nmod233333 的值。 数据范围 1≤…...
RockyLinux介绍及初始化
文章目录 一、背景二、下载 RockyLinux9 镜像三、环境初始化四、安装 Docker 环境 一、背景 这里讲一个小故事: 我们都知道Linux 内核是由芬兰计算机科学家林纳斯托瓦兹 (Linus Torvalds) 于 1991 年首次开发的,随后有一个非常重要的公司RetHat成立&am…...
2024年12月青少年软件编程(C语言/C++)等级考试试卷(三级)
2024.12青少年软件编程(C语言三级)等级考试试卷 1.最近的斐波那契数 题目描述 斐波那契数列 Fn的定义为:对n≥0有Fn2Fn1Fn、初始值为 F00和F11。所谓与给定的整数N最近的斐波那契数是指与N的差之绝对值最小的斐波那契数。 本题就请你为任意给…...
【Leecode】Leecode刷题之路第92天之反转链表II
题目出处 92-反转链表II-题目出处 题目描述 个人解法 思路: todo代码示例:(Java) todo复杂度分析 todo官方解法 92-反转链表II-官方解法 前言 链表的操作问题,一般而言面试(机试)的时候不…...
StableAnimator模型的部署:复旦微软提出可实现高质量和高保真的ID一致性人类视频生成
文章目录 一、项目介绍二、项目部署模型的权重下载提取目标图像的关节点图像(这个可以先不看先用官方提供的数据集进行生成)提取人脸(这个也可以先不看)进行图片的生成 三、模型部署报错 一、项目介绍 由复旦、微软、虎牙、CMU的…...
3.阿里云flinkselectdb-py作业
1.概述 Python API中文文档 本文介绍在阿里云实时计算flink中使用python作业,把oss中的数据同步数据到阿里云selectdb的过程。python简单的语法特性更适合flink作业的开发; 先说结论: 在实际开发中遇到了很多问题,导致python作业基本基本无法…...
MATLAB语言的网络编程
标题:MATLAB中的网络编程:深入探索与实践 一、引言 在现代科学和工程领域中,网络编程已经成为了数据处理、信号分析、模型构建等众多任务中不可或缺的一环。MATLAB作为一款强大的数学计算软件,不仅提供了丰富的数值计算功能&…...
深入浅出 Linux 操作系统
深入浅出 Linux 操作系统 引言 在当今数字化的时代,Linux 操作系统无处不在。从支撑互联网巨头庞大的数据中心,到嵌入智能家居设备的微型芯片,Linux 都发挥着关键作用。然而,对于许多人来说,Linux 仍笼罩着一层神秘的…...
golang实现生产者消费者模式
在Go语言中,生产者消费者模式可以通过使用Goroutines和Channels来实现。Goroutines允许并发执行,而Channels则用于在生产者和消费者之间安全地传递数据。 生产者消费者模式的基本思路 生产者:负责生成数据并将其放入一个共享的缓冲区…...
自动化测试-Pytest测试
目录 pytest简介 基本测试实例 编写测试文件 执行测试 pytest运行时参数 mark标记 Fixture pytest插件 Allure测试报告 测试步骤 pytest简介 Pytest是一个非常流行的Python测试框架,它支持简单的单元测试和复杂的功能测试,具有易于上手、功…...
Ingress-Nginx Annotations 指南:配置要点全方面解读(下)
文章目录 1.HTTP2 Push Preload2.Server Alias3.Server snippet4.Client Body Buffer Size5.External Authentication6.Global External Authentication7.Rate Limiting8.Global Rate Limiting9.Permanent Redirect10.Permanent Redirect Code11.Temporal Redirect12.SSL Passt…...
【QED】等式构造
文章目录 题目题目描述输入输出格式数据范围测试样例 思路代码复杂度分析时间复杂度空间复杂度 题目 题目链接🔗 题目描述 有关 「上述等式为何正确」 的问题解决了,然而 「如何构造出上述那种让人啼笑皆非的正确等式」 成为了一个新的问题。 我们认…...
Kafka数据迁移全解析:同集群和跨集群
文章目录 一、同集群迁移二、跨集群迁移 Kafka两种迁移场景,分别是同集群数据迁移、跨集群数据迁移。 一、同集群迁移 应用场景: broker 迁移 主要使用的场景是broker 上线,下线,或者扩容等.基于同一套zookeeper的操作。 实践: 将需要新添加…...
Debian安装配置RocketMQ
安装配置 本次安装在/tools/rocket目录下 下载 wget https://dist.apache.org/repos/dist/release/rocketmq/5.3.1/rocketmq-all-5.3.1-bin-release.zip 解压缩 unzip rocketmq-all-5.3.1-bin-release.zip 如果出现以下报错 -bash: unzip: command not found可安装unzip工具后执…...
STC89C52内存告急?手把手教你优化MPU6050 DMP库,让51单片机也能流畅跑姿态解算
STC89C52内存告急?手把手教你优化MPU6050 DMP库,让51单片机也能流畅跑姿态解算 当你在STC89C52这类资源有限的51单片机上尝试运行MPU6050的DMP(Digital Motion Processor)库时,是否遇到过编译失败或运行不稳定的情况&…...
QtScrcpy突破手游操控限制:从设备连接到多端协同的全栈解决方案
QtScrcpy突破手游操控限制:从设备连接到多端协同的全栈解决方案 【免费下载链接】QtScrcpy Android real-time display control software 项目地址: https://gitcode.com/GitHub_Trending/qt/QtScrcpy 在移动游戏竞技领域,触控操作的物理局限已成…...
解密网页资源批量下载:ResourcesSaverExt实战配置指南
解密网页资源批量下载:ResourcesSaverExt实战配置指南 【免费下载链接】ResourcesSaverExt Chrome Extension for one click downloading all resources files and keeping folder structures. 项目地址: https://gitcode.com/gh_mirrors/re/ResourcesSaverExt …...
SuperSplat部署完全指南:从开发到生产环境的终极教程
SuperSplat部署完全指南:从开发到生产环境的终极教程 【免费下载链接】super-splat 3D Gaussian Splat Editor 项目地址: https://gitcode.com/gh_mirrors/su/super-splat SuperSplat是一款基于Web的免费开源3D高斯泼溅编辑器,专为检查、编辑、优…...
手把手搭建基于Kintex UltraScale+的Cameralink图像处理系统:从LVDS解码到GTY输出HDMI的完整Vivado工程解析
手把手搭建基于Kintex UltraScale的Cameralink图像处理系统:从LVDS解码到GTY输出HDMI的完整Vivado工程解析 在工业视觉和医疗影像领域,Cameralink接口凭借其高带宽和低延迟特性,依然是许多高端相机的首选接口方案。而Xilinx的Kintex UltraSca…...
告别数学恐惧:用Python可视化单相PWM整流器的dq变换过程
用Python动画拆解单相PWM整流器的坐标变换魔法 1. 从交流到直流的控制艺术 当我们面对单相PWM整流器的控制问题时,最令人着迷的挑战莫过于如何将交流系统中的正弦量转化为适合控制的直流量。这就像是要在汹涌的交流海浪中建造一个稳定的直流岛屿。传统三相系统可以…...
从信息收集到密码爆破:如何用DictGenerate定制你的专属社工字典?
从信息收集到密码爆破:如何用DictGenerate定制你的专属社工字典? 在授权渗透测试和安全评估中,社会工程学攻击往往是最难防御的一环。攻击者通过收集目标的个人信息,精心构造符合目标习惯的密码字典,能够显著提高暴力…...
Inconsolata字体深度解析:从代码美学到专业排版的完整方案
Inconsolata字体深度解析:从代码美学到专业排版的完整方案 【免费下载链接】Inconsolata Development repo of Inconsolata Fonts by Raph Levien 项目地址: https://gitcode.com/gh_mirrors/in/Inconsolata 在编程世界中,字体的选择远不止是审美…...
Linux 调度器中的限流机制:throttled 标志的触发与解除
一、简介在实时系统和云计算环境中,资源隔离与公平分配是 Linux 内核调度的核心挑战。当多个任务共享 CPU 资源时,某些恶意或失控的任务可能耗尽全部 CPU 时间,导致关键任务饥饿(Starvation)。为此,Linux 内…...
3个核心技巧:快速掌握免费在线PPT编辑器PPTist的创作秘诀
3个核心技巧:快速掌握免费在线PPT编辑器PPTist的创作秘诀 【免费下载链接】PPTist PowerPoint-ist(/pauəpɔintist/), An online presentation application that replicates most of the commonly used features of MS PowerPoint, allowing…...
