Java--学生管理系统

        本案例基于Java语言中的ArrayList集合来储存数据,并建立两个类——学生类和用户类存储在集合中,通过用户交互,搭建简单的学生管理系统。

1、学生类

        学生类利用set函数进行获取学生单个信息,show函数负责获取全部信息。

package test;
public class Student {private String name;private int age;private String sex;private String id;private int score;//构造函数public Student(){};//带参构造函数public Student(String name,String id,int age,String sex,int score){this.name=name;this.age=age;this.sex=sex;this.id=id;this.score=score;}//显示信息public void show(){System.out.println(this.name+"\t"+this.id+"\t"+this.age+"\t"+this.sex+"\t"+this.score);}//判断姓名是否相同是否相等public boolean judge(String name_){if(name_.equals(this.name))return true;elsereturn false;}//输出私有属性public String getname(){return this.name;}public String getid(){return this.id;}public int getage(){return this.age;}public int getscore(){return this.score;}public String getsex(){return this.sex;}
}

2、用户类

        用户类与学生类一样,get负责返回私有属性,show负责显示类内所有信息。

package test;
public class User {private String username;private String password;private String id;private String phonenumber;public User(){};public User(String username,String password,String id,String phonenumber){this.username=username;this.password=password;this.id=id;this.phonenumber=phonenumber;}public String getusername(){return this.username;}public String getpassword(){return this.password;}public String getid(){return this.id;}public String getphonenumber(){return this.phonenumber;}public void show()  {System.out.println(this.username+'\t'+this.password+'\t'+this.id+'\t'+this.phonenumber+'\t');}
}

3、主类-登录系统

        登录系统分别设置登录、注册、忘记密码功能,后续可以添加文本数据库来进行储存。

        ArrayList<User> ulist=new ArrayList<>();boolean log_verify=false;while(true){System.out.println("------欢迎来到学生管理系统------");System.out.println("**\t   1、登录\t      **");System.out.println("**\t   2、注册\t      **");System.out.println("**\t   3、忘记密码\t      **");System.out.println("--------------------------------");System.out.println("请输入你的选择:");int choice=new Scanner(System.in).nextInt();switch(choice){case 0:showuser(ulist);break;case 1:log_verify=log(ulist);break;case 2:register(ulist);break;case 3:forget_password(ulist);break;default:System.out.println("输入指令错误,请重试!");}if(choice==1&log_verify==true)break;}

3.1登录

        登录中存在的问题:用户名不存在,密码错误问题

public static boolean log(ArrayList<User>list){boolean log_verify=false;System.out.println("请输入您的账号: ");String username=new Scanner(System.in).next();System.out.println("请输入密码: ");String password=new Scanner(System.in).next();if(list.size()==0)System.out.println("用户名不存在! ");for(int i=0;i<list.size();i++){if(list.get(i).getusername().equals(username)){if(list.get(i).getpassword().equals(password)){System.out.println("欢迎回来! ");log_verify=true;break;}else{System.out.println("密码错误,请重试");break;}}else{System.out.println("用户名不存在! ");break;}}return log_verify;}

 

 

3.2注册

        用户信息中设置账号,密码,身份证号,手机号四个信息,密码需要进行重复输入,若两次密码结果不一致,将会被要求重新输入。用户名重复会被告知用户名存在。

    //注册public static ArrayList<User> register(ArrayList<User>list){System.out.println("请输入注册用户名:");String username=new Scanner(System.in).next();String password,id,phonenumber;boolean flag=false;for(int i=0;i<list.size();i++){if(list.get(i).getusername().equals(username)){System.out.println("此用户已存在!");flag=true;return list;}}if(flag==false){while(true){System.out.println("请输入密码:");password=new Scanner(System.in).next();System.out.println("请再次输入密码:");String again=new Scanner(System.in).next();if(password.equals(again))break;elseSystem.out.println("密码前后不一致!");}while(true){boolean flag_id=true;System.out.println("请输入身份证号:");id=new Scanner(System.in).next();if(id.length()!=18){   System.out.println("身份证号错误");continue;}for(int i=0;i<id.length();i++){if(id.charAt(i)<'0'|id.charAt(i)>'9')flag_id=false;if(i==17&(id.charAt(i)=='X'|id.charAt(i)=='x'))flag_id=true;}if(flag_id)break;else{System.out.println("身份证号错误");continue;}}while(true){System.out.println("请输入手机号:");phonenumber=new Scanner(System.in).next();boolean flag_ph=true;for(int i=0;i<phonenumber.length();i++){if(phonenumber.charAt(i)<'0'|phonenumber.charAt(i)>'9'){System.out.println("手机号错误");flag_ph=false;break;}}if(flag_ph)break;elsecontinue;}User user=new User(username,password,id,phonenumber);list.add(user);}return list;}

 

 

3.3忘记密码

        当忘记密码时,需要输入账号,若账号不存在则退回主菜单,若账号存在则需要验证身份信息,核实是否为本人,然后进行二次重复输入新密码,修改密码后保存至ArrayList,回退主菜单。

    //忘记密码public static void forget_password(ArrayList<User>list){System.out.println("请输入您的账号: ");String username=new Scanner(System.in).next();boolean exist=false;int exist_index=0;if(list.size()==0)System.out.println("账号不存在! ");for(int i=0;i<list.size();i++){if(list.get(i).getusername().equals(username)){exist_index=i;exist=true;break;}}if(exist==false){System.out.println("账号不存在! ");}else{System.out.println("请输入身份证号:");String id=new Scanner(System.in).next();if(list.get(exist_index).getid().equals(id)){boolean password_verify=false;while(true){System.out.println("请输入新密码: ");String password=new Scanner(System.in).next();System.out.println("请再次输入新密码: ");String password_=new Scanner(System.in).next();if (password.equals(password_)){list.set(exist_index,new User(list.get(exist_index).getusername(),password,list.get(exist_index).getid(),list.get(exist_index).getphonenumber()));password_verify=true;}else{System.out.println("两次密码不一致! ");}if(password_verify==true)break;}}else{System.out.println("身份信息验证错误! ");}}

4、主类-学生系统

        学生系统包括添加,删除,选择,显示,排序,修改指令来进行简单的系统交互。

ArrayList<Student> list=new ArrayList<>();while(true){boolean flag=false;  //不进行自动退出getmenu();String command=new Scanner(System.in).next();switch(command){case "1":add(list);break;case "2":delete(list);break;case "3":select(list);;break;case "4":showinformation(list);break;case "5":sort(list);break;case "6":modify(list);break;case "q":flag=true;break;default:System.out.println("输入指令错误,请重试! ");}if(flag==true)break;}System.out.println("再见,欢迎下次使用!");

        表头信息:

    //打印表头public static void getmenu(){System.out.println("\n-----------学生管理系统---------");System.out.println("**\t1、添加学生信息       **");System.out.println("**\t2、删除学生信息       **");System.out.println("**\t3、查询学生信息       **");System.out.println("**\t4、显示所有信息       **");System.out.println("**\t5、排序所有信息       **");System.out.println("**\t6、修改学生信息       **");System.out.println("**\t退出系统请按q,谢谢!   **");System.out.println("--------------------------------");System.out.println("请输入你的选择:");}

4.1添加学生信息

        学生信息包括姓名,学号,年龄,性别,分数五个变量,若学生姓名存在,则会提示存在该学生,回退上一级菜单。

    //添加学生信息public static ArrayList<Student> add(ArrayList<Student>list){String name;String id;int age;String sex;int score;boolean flag=false;System.out.println("请输入所要添加的学生姓名: ");name=new Scanner(System.in).next();for(int i=0;i<list.size();i++){if(list.get(i).judge(name)){System.out.println("系统中存在该信息,请重新输入信息:");flag=true;break;}}if(flag==false){System.out.println("请输入所要添加的学生学号:");id=new Scanner(System.in).next();System.out.println("请输入所要添加学生年龄:");age=new Scanner(System.in).nextInt();System.out.println("请输入所要添加学生性别:");sex=new Scanner(System.in).next();System.out.println("请输入所要添加学生分数:");score=new Scanner(System.in).nextInt();Student stu=new Student(name,id,age,sex,score);list.add(stu);return list;}elsereturn list;}

4.2删除学生信息

        通过输入学生姓名,删除该学生所有信息,若不存在该学生则会提示查无此人。

    //删除学生信息public static ArrayList<Student> delete(ArrayList<Student>list){String name;boolean flag=false;System.out.println("请输入删除学生姓名: ");name=new Scanner(System.in).next();for(int i=0;i<list.size();i++){if(list.get(i).judge(name)){flag=true;list.remove(i);break;}}if(flag==false){System.out.println("查无此人!");}return list;}

4.3查询学生信息

        通过输入需要查询的姓名或者学号,来获取该学生所有信息,若不存在,则警告查无此人。

    //查找学生信息public static void select(ArrayList<Student> list){boolean flag=false;System.out.println("请问您要查询的是:\n1、姓名\n2、学号");int num=new Scanner(System.in).nextInt();if(num==1){System.out.println("请问您要查询的学生姓名: ");String name=new Scanner(System.in).next();for(int i=0;i<list.size();i++){if(list.get(i).getname().equals(name)){flag=true;list.get(i).show();break;}}}else if(num==2){System.out.println("请问您要查询的学生学号: ");String id=new Scanner(System.in).next();for(int i=0;i<list.size();i++){if(list.get(i).getid().equals(id)){flag=true;list.get(i).show();break;}}}else{System.out.println("请输入正确的序号!");return;}if(flag==false){System.out.println("查无此人! ");}}

4.4显示所有信息

        循环调用类内的show函数来输出所有学生信息。

    //显示所有信息public static void showinformation(ArrayList<Student>list){if(list.size()==0)System.out.println("系统中未添加学生信息!");System.out.println("姓名\t学号\t年龄\t性别\t分数");for(int i=0;i<list.size();i++){list.get(i).show();}}

4.5排序学生信息

        可以针对姓名和学号两个变量进行排序,并选择升序和降序的方法使用冒泡排序,compareTo函数返回的是两个变量的ASCII码差值。

    //排序学生信息public static ArrayList<Student> sort(ArrayList<Student>list){System.out.println("请问您要排序的是:\n1、姓名\n2、学号");int num=new Scanner(System.in).nextInt();if(num!=1 &num!=2)System.out.println("输入错误命令!");System.out.println("排序方式:\n1、降序\n2、升序");int style=new Scanner(System.in).nextInt();if(num!=1 &num!=2)System.out.println("输入错误命令!");switch(num){case 1:{for(int i=0;i<list.size();i++){for(int j=0;j<list.size()-i-1;j++){if (num==2)if(list.get(j).getname().compareTo(list.get(j+1).getname())>0)swap(list,j,j+1);elseif(list.get(j).getname().compareTo(list.get(j+1).getname())<0)swap(list,j,j+1);}}break;}case 2:{for(int i=0;i<list.size();i++){for(int j=0;j<list.size()-i-1;j++){if(num==2)if(list.get(j).getid().compareTo(list.get(j+1).getid())>0)swap(list,j,j+1);elseif(list.get(j).getid().compareTo(list.get(j+1).getid())<0)swap(list,j,j+1);}}}break;}return list;}

交换两个学生信息:

    //交换两个学生信息public static ArrayList<Student> swap(ArrayList<Student> list,int i,int j){Student tmpi=new Student(list.get(i).getname(), list.get(i).getid(), list.get(i).getage(), list.get(i).getsex(), list.get(i).getscore());Student tmpj=new Student(list.get(j).getname(), list.get(j).getid(), list.get(j).getage(), list.get(j).getsex(), list.get(j).getscore());list.set(i,tmpj);list.set(j,tmpi);return list;}

4.6修改学生信息

        用户输入要求修改的姓名,若不存在该学生,则警告查无此人,若存在,则依次输入学号,年龄,性别,分数进行修改。

    //修改学生信息public static ArrayList<Student> modify(ArrayList<Student> list){boolean flag=false;int modicount=0;System.out.println("请问您要修改的姓名是: ");String name=new Scanner(System.in).next();for(int i=0;i<list.size();i++){if(list.get(i).getname().equals(name)){flag=true;modicount=i;break;}}if(flag==false)System.out.println("查无此人! ");else{System.out.println("请问修改后的学号是: ");String id=new Scanner(System.in).next();System.out.println("请问修改后的年龄是: ");int age=new Scanner(System.in).nextInt();System.out.println("请问修改后的性别是: ");String sex=new Scanner(System.in).next();System.out.println("请问修改后的分数是: ");int score=new Scanner(System.in).nextInt();list.set(modicount,new Student(name, id, age, sex, score));}return list;}

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

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

相关文章

LCD驱动芯片VK1024B兼容HT系列驱动芯片,体积更小

产品型号&#xff1a;VK1024B 产品&#xff1a;VINKA/永嘉微电 封装形式&#xff1a;SOP16 产品年份&#xff1a;新年份 工程服务&#xff0c;技术支持&#xff0c;用芯服务 VK1024概述&#xff1a; VK1024B 是 24 点、 内存映象和多功能的 LCD 驱动&#xff0c; VK1024B …

Nginx实现反向代理和负载均衡

Nginx安装 本文章主要介绍下&#xff0c;如何使用Nginx来实现反向代理和负载均衡&#xff0c;Nginx安装和基础知识&#xff0c;可参考我的这篇文章 Nginx安装。 Nginx实现反向代理 实现反向代理需要准备两台Nginx服务器。一台Nginx服务器A&#xff0c;ip为 192.168.206.140&…

MySQL主从复制入门指南:基础概念和配置步骤

文章目录 前言一、问题分析二、Mysql主从复制1. 介绍2. 配置3. 测试 三、读写分离案例1. 背景2. shardingDBC介绍3. 入门案例4. 功能测试 总结 前言 为了巩固所学的知识&#xff0c;作者尝试着开始发布一些学习笔记类的博客&#xff0c;方便日后回顾。当然&#xff0c;如果能帮…

基于freertos的温湿度蓝牙系统

前言&#xff1a;本项目主要是基于freertos的小项目&#xff0c;目的是为了巩固近期学习的知识&#xff0c;功能较简单&#xff0c;可自行扩充。 一、项目基本架构 项目基本功能&#xff1a;通过STM32单片机的freertos操作系统&#xff0c;将温湿度数据显示在oled屏幕上&#…

vue响应数据为二维码如何渲染到页面

在postman测试请求后发现响应数据为一个二维码图片,不是链接,如何解决? 然后如果在vue中使用请求还会报Uncaught (in promise) SyntaxError: Unexpected token o in JSON at position 1的错误。这个就是使用了JSON.parse导致的响应格式不对)&#xff0c;使用JSON.stringify解决…

Spring Boot集成单元测试调用dao,service

文章目录 Spring Boot集成单元测试调用dao&#xff0c;service1 添加相关依赖2 新建测试类 Spring Boot集成单元测试调用dao&#xff0c;service 1 添加相关依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-st…

奥威BI—数字化转型首选,以数据驱动企业发展

奥威BI系统BI方案可以迅速构建企业级大数据分析平台&#xff0c;可以将大量数据转化为直观、易于理解的图表和图形&#xff0c;推动和促进数字化转型的进程&#xff0c;帮助企业更好地了解自身的运营状况&#xff0c;及时发现问题并采取相应的措施&#xff0c;提高运营效率和质…

程序员的帝路应该是肉身成圣

标题听着贼中二&#xff0c;没办法哥们实在想不到啥好的标题&#xff0c;只是看到这个讨论程序员身体健康的话题啊情不自禁想到中学时期看过的一本修仙小说《遮天》小说内容忘记的差不多了&#xff0c;印象最深的就是各种体质&#xff0c;荒古圣体、先天霸体、混沌体等等&#…

【无公网IP】在公网环境下Windows远程桌面Ubuntu 18.04

【无公网IP】在公网环境下Windows远程桌面Ubuntu 18.04 文章目录 *【无*公网IP】在公网环境下Windows远程桌面Ubuntu 18.04一、 同个局域网内远程桌面Ubuntu1. 更新软件仓库2. 安装支持包3. 安装XFCE4桌面环境4. 安装XRDP5. 环境设置5.1 XFCE桌面配置5.2 在配置文件中&#xff…

[JAVAee]锁策略

目录 乐观锁与悲观锁 乐观锁 乐观锁的冲突检测 悲观锁 读锁与写锁 重量级锁与轻量级锁 重量级锁 轻量级锁 自旋锁 公平锁与非公平锁 可重入锁与不可重入锁 乐观锁与悲观锁 乐观锁 在乐观锁中,假设数据并不会发生冲突,在正式提交数据时会对数据进行冲突检测,如果发…

小白入门Java第一天

当你对 Java语言有了一些了解后&#xff0c;你就可以开始着手学习Java了。 作为你的Java 学习第一天&#xff0c;所需掌握内容如下述目录&#xff1a; 文章目录 1. 注释1. 三种注释1.1 单行注释1.2 多行注释1.3 文档注释 2. 标识符和关键字2.1 标识符的组成&#xff1a;2.2 那…

Smarty

一.知识 1.PHP Smarty模版注入 二.实例 {{system(ls /)}}{{system(cat /flag)}}

从零搭建一个react + electron项目

最近打算搭建一个react electron的项目&#xff0c;发现并不是那么傻瓜式 于是记录一下自己的实践步骤 通过create-react-app 创建react项目 npx create-react-app my-app 安装electron依赖 npm i electron -D暴露react项目的配置文件&#xff08;这一步看自己需求&#xff0c…

《Flask Web 开发指南 pt.2》

在编写 Flask 程序的时候&#xff0c;你需要注意你的程序文件不要命名为 flask.py&#xff0c;建议命名为 app.py 或者 wsgi.py 但如果你的程序不是叫 app.py 或者 wsgi.py&#xff0c;那么你就需要设置环境变量 FLASK_APP 的值为程序名字 设置环境变量有两种方法&#xff0c;在…

url重定向

不安全的url跳转 不安全的url跳转问题可能发生在一切执行了url地址跳转的地方。 如果后端采用了前端传进来的(可能是用户传参,或者之前预埋在前端页面的url地址)参数作为了跳转的目的地,而又没有做判断的话 就可能发生"跳错对象"的问题。 url跳转比较直接的危害是…

SpringBoot整合邮件服务

SpringBoot整合邮件服务 发送邮件应该是网站的必备功能之一&#xff0c;什么注册验证&#xff0c;忘记密码或者是给用户发送营销信息。最早期的时候我们会 使用 JavaMail 相关 api 来写发送邮件的相关代码&#xff0c;后来 Spring 推出了 JavaMailSender 更加简化了邮件发送的…

API是什么?

API是什么&#xff1f; API&#xff08;Application Programming Interface,应用程序编程接口&#xff09;是一些预先定义的函数&#xff0c;目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力&#xff0c;而又无需访问源码&#xff0c;或理解内部工作机制…

SSM(Vue3+ElementPlus+Axios+SSM前后端分离)【三】

文章目录 SSM(Vue3ElementPlusAxiosSSM前后端分离)--基础环境搭建【三】项目介绍项目功能/界面● SSM 整合项目界面 配置Spring 和MyBatis , 并完成整合 SSM(Vue3ElementPlusAxiosSSM前后端分离)–基础环境搭建【三】 项目介绍 项目功能/界面 ● SSM 整合项目界面 配置Sprin…

回调函数的简单用例

列举项目中一个简单的回调函数用例 ①用MsgInterface_t定义一个结构体s_Lin_MsgInterface&#xff0c;包含两个回调函数成员&#xff1a; ②确定结构体下的回调函数成员的参数&#xff1a; ③传入实参&#xff0c;确定结构体下的回调函数成员的函数名&#xff1a; ④最终回…

【数据结构与算法——TypeScript】算法的复杂度分析、 数组和链表的对比

【数据结构与算法——TypeScript】 算法的复杂度分析 什么是算法复杂度(现实案例)&#xff1f; ❤️‍&#x1f525; 前面已经解释了什么是算法&#xff1f; 其实就是解决问题的一系列步骤操作、逻辑。 ✅ 对于同一个问题&#xff0c;我们往往有很多种解决思路和方法&#x…