热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

用Java代码实现学生管理系统

文章目录学生管理系统1.1项目演示1.2学生管理系统实现思路1.3定义学生类1.4主界面的代码编写1.5添加学生的代码编写1.6查看学生代码的编写1.7查看学生代码的编写升级版1.


文章目录

  • 学生管理系统
    • 1.1 项目演示
    • 1.2 学生管理系统实现思路
    • 1.3 定义学生类
    • 1.4 主界面的代码编写
    • 1.5 添加学生的代码编写
    • 1.6 查看学生代码的编写
    • 1.7 查看学生代码的编写升级版
    • 1.8 删除学生的代码编写
    • 1.9 修改学生的代码编写
    • 1.10 解决删除/修改学生学号不存在问题
    • 1.11 解决添加学生学号重复问题
    • 1.12 完整代码


学生管理系统


1.1 项目演示

在这里插入图片描述


1.2 学生管理系统实现思路


  1. 定义学生类
  2. 主界面的代码编写
  3. 添加学生的代码编写
  4. 查看学生的代码编写
  5. 删除学生的的代码编写
  6. 修改学生的代码编写

1.3 定义学生类

学生类:


  • Student

成员变量:


  • 学号:sid
  • 姓名:name
  • 年龄:age
  • 居住地:address

构造方法:


  • 无参构造
  • 带四个参数的构造

成员方法


  • 每个成员变量对应给出get/set方法

1.4 主界面的代码编写

思路


  1. 用输出语句完成主界面的编写
  2. 用Scanner实现键盘录入数据
  3. 用switch语句完成操作的选择
  4. 用循环完成再次回到主界面

1.5 添加学生的代码编写

思路


  1. 用键盘录入选择添加学生

  2. 定义一个方法,用于添加学生

    1. 显示提示信息,提示要输入何种信息
    2. 键盘录入学生对象所需要的的数据
    3. 创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
    4. 将学生对象添加到集合中(保存)
    5. 调用方法

    在这里插入图片描述


1.6 查看学生代码的编写

思路


  1. 用键盘录入选择查看所有学生信息
  2. 定义一个方法,用于查看学生信息
    1. 显示表头信息
    2. 将集合中数据取出按照对应格式显示学生信息,年龄显示补充”岁“
  3. 调用方法

在这里插入图片描述


1.7 查看学生代码的编写升级版

思考: 假如并没有先添加学生,而是一进来就直接查看学生信息,这时候集合中是没有数据的,控制台就不可能有学生数据信息,表头的信息也不应该显示。

思路


  1. 用键盘录入选择查看所有学生信息
  2. 定义一个方法,用于查看学生信息
    1. 判断集合中是否有数据,如果没有显示提示信息
    2. 显示表头信息
    3. 将集合中数据取出按照对应格式显示学生信息,年龄显示补充”岁“
  3. 调用方法

在这里插入图片描述


1.8 删除学生的代码编写

思路


  1. 用键盘录入选择删除学生信息
  2. 定义一个方法,用于删除学生信息
    1. 显示提示信息
    2. 键盘录入要删除的学生学号
    3. 遍历集合将对应学生对象从集合中删除
    4. 给出删除成功提示
  3. 调用方法

在这里插入图片描述


1.9 修改学生的代码编写

思路


  1. 用键盘录入选择修改学生信息
  2. 定义一个方法,用于修改学生信息
    1. 显示提示信息
    2. 键盘录入要修改的学生学号
    3. 键盘录入要修改的学生信息
    4. 遍历集合修改对应的学生信息
    5. 给出修改成功提示
  3. 调用方法

在这里插入图片描述


1.10 解决删除/修改学生学号不存在问题

思路


  1. 在删除/修改学生操作前,对学号是否存在进行判断
    1. 如果不存在,显示提示信息
    2. 如果存在,执行删除/修改操作

在这里插入图片描述


1.11 解决添加学生学号重复问题

思路


  1. 定义一个方法,对学号是否被使用进行判断
    • 如果与集合中的某一个学生学号相同,返回true
    • 如果都不相同,返回false
  2. 在添加学生录入学号后调用该方法
    1. 如果返回true,弹出提示,重新输入学号
    2. 如果返回false,正常添加学生对象

在这里插入图片描述


1.12 完整代码


  1. Student(学生类)

public class Student {private String sid;//学号private String name;//姓名private String age;//年龄private String address;//居住地public Student() {}public Student(String sid, String name, String age, String address) {this.sid = sid;this.name = name;this.age = age;this.address = address;}public String getSid() {return sid;}public void setSid(String sid) {this.sid = sid;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}
}

  1. StudentManager(学生管理系统类)

public class StudentManager {/*1. 用输出语句完成主界面的编写2. 用Scanner实现键盘录入数据3. 用switch语句完成操作的选择4. 用循环完成再次回到主界面*/public static void main(String[] args) {//创建集合对象,用于存储学生数据ArrayList<Student> array = new ArrayList<Student>();//用循环完成再次回到主界面while (true) {// 1. 用输出语句完成主界面的编写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("-------------------------------------");// 2. 用Scanner实现键盘录入数据Scanner scanner = new Scanner(System.in);int line = scanner.nextInt();//3. 用switch语句完成操作的选择switch (line) {case 1://System.out.println("添加学生");addStudent(array);break;case 2://System.out.println("删除学生");deleteStudent(array);break;case 3://System.out.println("修改学生");updataStudent(array);break;case 4://System.out.println("查看所有学生");findAllStudent(array);break;case 5:System.out.println("谢谢使用");System.exit(0);}}}//定义一个方法,用于添加学生信息public static void addStudent(ArrayList<Student> array) {//用键盘录入选择添加学生,显示提示信息,提示要输入何种信息Scanner sc = new Scanner(System.in);//为了让sid在while循环外面能被访问到,我们就把它定义在了循环外String sid;//为了让程序能够回到这里,我们使用循环使用while (true) {System.out.println("请输入学生学号:");sid = sc.nextLine();boolean flag = isUsed(array, sid);if (flag) {System.out.println("你输入的学号已经被使用,请重新输入");} else {break;}}System.out.println("请输入学生姓名:");String name = sc.nextLine();System.out.println("请输入学生年龄:");String age = sc.nextLine();System.out.println("请输入学生居住地:");String address = sc.nextLine();//创建学生对象,把键盘录入的数据赋值给学生对象的成员变量Student s = new Student();s.setSid(sid);s.setName(name);s.setAge(age);s.setAddress(address);//将学生对象添加到集合中(保存)array.add(s);//给出添加成功提示System.out.println("添加学生成功");}//定义一个方法,判断学号是否被占用public static boolean isUsed(ArrayList<Student> array, String sid) {//如果与集合中的某一个学生学号相同,返回true 如果都不相同,返回falseboolean flag = false;for (int i = 0; i < array.size(); i++) {Student s = array.get(i);if (s.getSid().equals(sid)) {flag = true;break;}}return flag;}//定义一个方法,用于查看学生信息public static void findAllStudent(ArrayList<Student> array) {//显示表头信息// &#39;\t&#39; 其实就是tab键的位置if (array.size() == 0) {System.out.println("无信息,请先添加信息再查询");//为了不让程序继续往下执行return;}System.out.println("学号\t\t\t姓名\t\t年龄\t\t居住地");//将集合中数据取出按照对应格式显示学生信息,年龄显示补充”岁“for (int i = 0; i < array.size(); i++) {Student s = array.get(i);System.out.println(s.getSid() + "\t\t" + s.getName() + "\t\t" + s.getAge() + "岁\t\t" + s.getAddress());}}//定义一个方法,用于删除学生信息public static void deleteStudent(ArrayList<Student> array) {// 键盘录入要删除的学生学号,显示提示信息Scanner sc = new Scanner(System.in);System.out.println("请输入要删除的学生的学号");String sid = sc.nextLine();//在删除/修改学生操作前,对学号是否存在进行判断//如果不存在,显示提示信息//如果存在,执行删除/修改操作int index = -1;// 遍历集合将对应学生对象从集合中删除for (int i = 0; i < array.size(); i++) {Student s = array.get(i);if (s.getSid().equals(sid)) {index = i;break;}}if (index == -1) {System.out.println("该学号不存在,请重新输入");} else {array.remove(index);System.out.println("删除学生成功");}}//定义一个方法,用于修改学生信息public static void updataStudent(ArrayList<Student> array) {// 键盘录入要修改的学生学号,显示提示信息Scanner sc = new Scanner(System.in);System.out.println("请输入要修改的学生的学号");String sid = sc.nextLine();//在删除/修改学生操作前,对学号是否存在进行判断//如果不存在,显示提示信息//如果存在,执行删除/修改操作int index = -1;// 遍历集合修改对应的学生信息for (int i = 0; i < array.size(); i++) {Student s = array.get(i);if (s.getSid().equals(sid)) {index = i;break;}}if (index == -1) {System.out.println("该学号不存在,请重新输入");} else {for (int j = 0; j < array.size(); j++) {Student student = array.get(j);if (student.getSid().equals(sid)) {// 键盘录入要修改的学生信息System.out.println("请输入学生的新姓名");String name = sc.nextLine();System.out.println("请输入学生的新年龄");String age = sc.nextLine();System.out.println("请输入学生的新居住地");String address = sc.nextLine();// 创建学生对象Student s = new Student();s.setSid(sid);s.setName(name);s.setAge(age);s.setAddress(address);array.set(j, s);// 给出修改成功提示System.out.println("修改学生成功");break;}}}}
}

推荐阅读
  • Java 实现二维极点算法
    本文介绍了一种使用 Java 编程语言实现的二维极点算法。该算法用于从一组二维坐标中筛选出极点,适用于需要处理几何图形和空间数据的应用场景。文章不仅详细解释了算法的工作原理,还提供了完整的代码示例。 ... [详细]
  • 开发笔记:9.八大排序
    开发笔记:9.八大排序 ... [详细]
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 使用lambda表达式排序Collections.sort(temp,(Stringa,Stringb)-{returnb.compareTo(a);});Collections ... [详细]
  • 深入解析for与foreach遍历集合时的性能差异
    本文将详细探讨for循环和foreach(迭代器)在遍历集合时的性能差异,并通过实际代码示例和源码分析,帮助读者理解这两种遍历方式的不同之处。文章内容丰富且专业,旨在为编程爱好者提供有价值的参考。 ... [详细]
  • JavaScript 基础语法指南
    本文详细介绍了 JavaScript 的基础语法,包括变量、数据类型、运算符、语句和函数等内容,旨在为初学者提供全面的入门指导。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 本题探讨了在一个有向图中,如何根据特定规则将城市划分为若干个区域,使得每个区域内的城市之间能够相互到达,并且划分的区域数量最少。题目提供了时间限制和内存限制,要求在给定的城市和道路信息下,计算出最少需要划分的区域数量。 ... [详细]
  • 本文探讨了在C++中如何有效地清空输入缓冲区,确保程序只处理最近的输入并丢弃多余的输入。我们将介绍一种不阻塞的方法,并提供一个具体的实现方案。 ... [详细]
  • 对象自省自省在计算机编程领域里,是指在运行时判断一个对象的类型和能力。dir能够返回一个列表,列举了一个对象所拥有的属性和方法。my_list[ ... [详细]
  • 深入理解Lucene搜索机制
    本文旨在帮助读者全面掌握Lucene搜索的编写步骤、核心API及其应用。通过详细解析Lucene的基本查询和查询解析器的使用方法,结合架构图和代码示例,带领读者深入了解Lucene搜索的工作流程。 ... [详细]
  • 本文介绍如何使用 Android 的 Canvas 和 View 组件创建一个简单的绘图板应用程序,支持触摸绘画和保存图片功能。 ... [详细]
  • 本文将探讨Java编程语言中对象和类的核心概念,帮助读者更好地理解和应用面向对象编程的思想。通过实际例子和代码演示,我们将揭示如何在Java中定义、创建和使用对象。 ... [详细]
  • 本题来自WC2014,题目编号为BZOJ3435、洛谷P3920和UOJ55。该问题描述了一棵不断生长的带权树及其节点上小精灵之间的友谊关系,要求实时计算每次新增节点后树上所有可能的朋友对数。 ... [详细]
  • ------------------------------————————————————————————————1.定义一个类,实现与被增强对象相同的接口2.在类中定义一个对象,记住被增强 ... [详细]
author-avatar
手机用户2502885897
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有