教师管理系统

大概功能:

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.mzph.cn/web/64367.shtml

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

相关文章

小程序配置文件 —— 14 全局配置 - tabbar配置

全局配置 - tabBar配置 tabBar 字段&#xff1a;定义小程序顶部、底部 tab 栏&#xff0c;用以实现页面之间的快速切换&#xff1b;可以通过 tabBar 配置项指定 tab 栏的表现&#xff0c;以及 tab 切换时显示的对应页面&#xff1b; 在上面图中&#xff0c;标注了一些 tabBar …

[Wireshark] 使用Wireshark抓包https数据包并显示为明文、配置SSLKEYLOGFILE变量(附下载链接)

wireshark 下载链接&#xff1a;https://pan.quark.cn/s/eab7f1e963be 提取码&#xff1a;rRAg 链接失效&#xff08;可能会被官方和谐&#xff09;可评论或私信我重发 chrome与firefox在访问https网站的时候会将密钥写入这个环境变量SSLKEYLOGFILE中&#xff0c;在wireshark…

Android笔记(四十一):TabLayout内的tab不滚动问题

背景 假设二级页面是上面图片的布局&#xff0c;当进来时TabLayout和ViewPager2绑定完就马上调setCustomItem&#xff0c;跳转到最后一个tab页面时&#xff0c;会发现tab不滚动&#xff0c;手动滑一下ViewPager2时才会滚动tab到正确的位置 原因分析 调用TabLayoutMediator.at…

【Spring】 Bean 注入 HttpServletRequest 能保证线程安全的原理

文章目录 前言1. 图示2. 源码坐标后记 前言 今天看了一段老业务代码&#xff0c;HttpServletRequest 被注入后直接用于业务逻辑。 好奇Spring是如何解决线程安全问题。 Controller public class TestController {ResourceHttpServletRequest request;ResponseBodyGetMapping(…

CSS面试题|[2024-12-24]

1.说一下CSS的盒模型 在HTML页面中的所有元素都可以看成是一个盒子 盒子的组成&#xff1a;内容content、内边距padding、边框border、外边距margin 盒模型的类型&#xff1a; 标准盒模型 margin border padding content IE盒模型 margin content&#xff08;包括border p…

Unity中如何修改Sprite的渲染网格

首先打开SpriteEditor 选择Custom OutLine,点击Genrate 则在图片边缘会出现边缘线&#xff0c;调整白色小方块可以调整边缘 调整后&#xff0c;Sprite就会按照调整后的网格渲染了。 如何在UI中使用&#xff1f; 只要在UI的Image组件中选择Use Sprite Mesh 即可 结果&#xff1…

【Artificial Intelligence篇】AI 前沿探秘:开启智能学习的超维征程

目录 一、人工智能的蓬勃发展与智能学习的重要性: 二、数据的表示与处理 —— 智能学习的基石: 三、构建一个简单的感知机模型 —— 智能学习的初步探索: 四、神经网络 —— 开启超维征程的关键一步: 五、超维挑战与优化 —— 探索智能学习的深度: 六、可视化与交互 —— …

docker-compos mysql5.7主从配置

docker-compos mysql5.7主从配置 docker-compose目录结构 配置文件 master/my.cnf [client] port 3306 socket /var/run/mysqld/mysqld.sock[mysqld_safe] pid-file /var/run/mysqld/mysqld.pid socket /var/run/mysqld/mysqld.sock nice 0…

开源轻量级文件分享服务Go File本地Docker部署与远程访问

???欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老…

路过石岩浪心古村

周末常去的七彩城堡儿童乐园附近经常有老房子&#xff0c;没想到老房子最多的地方还是浪心古村。而且越看越有历史。 见到一座写着《序西书室》的房子&#xff0c;我最开始以为是一个古代的学校。但是查了百度更加不知道什么意思了哈。‌“序西书室”‌是指《文心雕龙》中的一个…

面经hwl

线程进程协程区别 线程、进程和协程是计算机编程中常见的三个并发模型&#xff0c;它们各自有不同的特点和应用场景&#xff1a; 1. 进程 (Process) 定义: 进程是操作系统中资源分配的基本单位&#xff0c;代表一个正在运行的程序实例。特点: 独立性: 每个进程有自己独立的内…

【每日学点鸿蒙知识】PersistentStorage持久化、插槽方法、相对布局、上拉加载下拉刷新、List联动滑动

1、HarmonyOS 使用PersistentStorage持久化用户信息无效&#xff1f; 在首页通过StorageLink(‘userInfoTest’) userInfoTest: string 获取&#xff0c;获不到&#xff0c;返回undefind。是什么原因呢&#xff1f; 首先在首页时&#xff0c;在Entry外声明PersistentStorage…

torch.tensor

torch.tensor 通过复制数据构造一个张量 &#xff08;构造出的张量是一个没有自动微分&#xff08;autograd &#xff09;历史的张量&#xff0c;也称为叶张量&#xff0c;参考Autograd mechanics&#xff09;。 torch.tensor(data, *, dtypeNone, deviceNone, requires_gra…

探索PyTorch:从入门到实践的demo全解析

探索PyTorch:从入门到实践的demo全解析 一、环境搭建:PyTorch的基石(一)选择你的“利器”:安装方式解析(二)步步为营:详细安装步骤指南二、基础入门demo:点亮第一盏灯(一)张量操作:深度学习的“积木”(二)自动求导:模型学习的“幕后英雄”三、数据处理demo:喂饱…

SpringMVC学习(二)——RESTful API、拦截器、异常处理、数据类型转换

一、RESTful (一)RESTful概述 RESTful是一种软件架构风格&#xff0c;用于设计网络应用程序。REST是“Representational State Transfer”的缩写&#xff0c;中文意思是“表现层状态转移”。它基于客户端-服务器模型和无状态操作&#xff0c;以及使用HTTP请求来处理数据。RES…

Windows中安装Python3

Windows中安装Python3 1. 下载Python安装包 首先&#xff0c;访问Python的官方网站 Python.org&#xff0c;选择适合你Windows版本的Python安装包。 2. 运行安装包 下载完成.exe文件后&#xff0c;双击运行安装包。在安装过程中&#xff0c;有一些关键的选项需要特别注意&a…

JS数值类型中特殊数值NaN(Not-a-Number)理解和应用场景

NaN 的含义 在 JavaScript 中&#xff0c;NaN 是一种特殊的数值类型&#xff0c;表示 “Not-a-Number”。它通常用于标识数学运算或类型转换的结果无法产生有效数值的情况。 特性 类型为数值&#xff1a; console.log(typeof NaN); // "number"尽管 NaN 表示 “不是…

虚幻引擎结构之UWorld

Uworld -> Ulevel ->Actors -> AActor 在虚幻引擎中&#xff0c;UWorld 类扮演着至关重要的角色&#xff0c;它就像是游戏世界的总指挥。作为游戏世界的核心容器&#xff0c;UWorld 包含了构成游戏体验的众多元素&#xff0c;从游戏实体到关卡设计&#xff0c;再到物…

java中logback怎么开启异步功能

在Java中使用Logback时&#xff0c;开启异步日志记录功能可以通过配置AsyncAppender来实现。异步日志记录可以显著提高应用程序的性能&#xff0c;因为它将日志记录操作从主线程移到了后台线程执行&#xff0c;从而减少了主线程的阻塞时间。 步骤 1: 添加 Logback 配置文件 确…

2024第一届Solar杯应急响应挑战赛

日志流量 日志流量-1 直接放到D盾分析 解码 flag{A7b4_X9zK_2v8N_wL5q4} 日志流量-2 哥斯拉流量 工具解一下 flag{sA4hP_89dFh_x09tY_lL4SI4} 日志流量-3 tcp流6复制data流 解码 改pdf flag{dD7g_jk90_jnVm_aPkcs} 内存取证 内存取证-1 vol.py -f 123.raw --profileWin…