Java 9天入门(黑马程序员) 课程收尾 ------学生管理系统 (9.13)
1 实现功能
2 结构概述
分为两个包,各自一个类 Student.java 为学生类,目的是储存学生信息
StudentManager.java 是主程序的代码
3 Student.java 的代码如下
可以快捷生成(eciplise--->右键代码区----->选择source----->选择 generate)
package com.itheima.domain; public class Student {
private String sid;//学生学号
private String name;//学生姓名
private int age;//学生年龄
private String birthday;//学生生日
//无参数构造方法
public Student() {
super();
}
//有参数构造方法
public Student(String sid, String name, int age, String birthday) {
super();
this.sid = sid;
this.name = name;
this.age = age;
this.birthday = birthday;
} 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 int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public String getBirthday() {
return birthday;
} public void setBirthday(String birthday) {
this.birthday = birthday;
} }
4 StudentManager.java 代码如下 (各个功能以自定义方法实现)
具体代码如下:
package com.itheima.test;
import java.util.ArrayList;
import java.util.Scanner; import com.itheima.domain.Student; public class StudentManager { public static void main(String[] args) { // TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
// 创建集合容器对象
ArrayList<Student> list = new ArrayList<Student>();
lo: while (true) {
// lo 为循环标号 break lo;
// 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("请输入您的选择:");
int sel = sc.nextInt();
switch (sel) {
case 1:
System.out.println("开始添加学生");
addStudent(list);
break;
case 2:
System.out.println("删除学生");
deleteStudent(list);
break;
case 3:
System.out.println("修改学生");
updateStudent(list);
break;
case 4:
System.out.println("查看学生");
viewStudent(list);
break;
case 5:
System.out.println("感谢您的使用");
break lo;
default:
System.out.println("输入的数字不在我识别之内,请重新输入");
break;
} }
} // 修改学生的方法
private static void updateStudent(ArrayList<Student> list) {
// TODO Auto-generated method stub
System.out.println("请输入您要修改的学号");
Scanner sc = new Scanner(System.in);
String updateSid = sc.next();
int index = getIndex(list, updateSid);
if (index == -1) {
System.out.println("查无信息,请重新输入");
} else {
// 存在: 接受新的学生信息
System.out.println("请输入新的学生姓名");
String name = sc.next();
System.out.println("请输入新的学生年龄");
int age = sc.nextInt();
System.out.println("请输入新的学生生日");
String birthday = sc.next();
// 封装为一个新的学生对象
Student stu = new Student(updateSid, name, age, birthday);
// 调用集合的set方法,完成修改
list.set(index, stu);
System.out.println("修改成功");
} } // 删除学生的方法
public static void deleteStudent(ArrayList<Student> list) {
// TODO Auto-generated method stub
System.out.println("请输入您要删除的学号");
Scanner sc = new Scanner(System.in);
String deleteSid = sc.next();
int index = getIndex(list, deleteSid);
if (index == -1) {
System.out.println("查无信息,请重新输入");
} else {
list.remove(index);
System.out.println("删除成功");
}
} // 查看学生的方法
public static void viewStudent(ArrayList<Student> list) { // TODO Auto-generated method stub
// 判断是否为空数据
if (list.size() == 0) {
System.out.println("无信息,请添加后重新查询");
return;
}
System.out.println("学号\t姓名\t年龄\t生日");
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);
System.out.println(stu.getSid() + "\t" + stu.getName() + "\t" + stu.getAge() + "\t" + stu.getBirthday());
}
} // 添加学生的方法
public static void addStudent(ArrayList<Student> list) {
Scanner sc = new Scanner(System.in);
String sid;
while (true) {
System.out.println("请输入学号");
sid = sc.next();
int index = getIndex(list, sid);
if (index == -1) {
// sid can use
break;
}
}
// 1 给出录入的提示信息 System.out.println("请输入姓名");
String name = sc.next();
System.out.println("请输入年龄");
int age = sc.nextInt();
System.out.println("请输入生日");
String birthday = sc.next();
// 2 将键盘录入的信息封装为学生对象
Student stu = new Student(sid, name, age, birthday);
// 3 将封装好的学生对象添加到集合容器中
list.add(stu);
// 4 给出添加成功的提示信息
System.out.println("添加成功");
} /*
* 定义getIndex方法 : 接受一个集合对象,接受一个学生学号 查找这个学号在集合中出现的索引位置
*/
public static int getIndex(ArrayList<Student> list, String sid) {
// 假设传入的学号,在集合中不存在
int index = -1;
// 遍历集合,获取每一个学生对象,准备进行查找
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);
String id = stu.getSid();
// 和传入的sid进行比对
if (id.equals(sid)) {
// 存在:让index变量记录正确的索引位置
index = i;
} }
return index;
} }
5 小结:
这个项目融合了Java入门级别的知识,综合性强!(总计约210行代码)
------ BTLord 小白工作室
2020.9.13
Java 9天入门(黑马程序员) 课程收尾 ------学生管理系统 (9.13)的更多相关文章
- 2019年最新超级有趣好玩的html+css网页布局课程,前端入门基础,html5+css3零基础入门课程-黑马程序员pink老师精心录制
大家好,我是黑马程序员pink老师!! 本次视频是前端零基础入门的课程,pink老师采取有趣好玩讲法,带你快乐的学习枯燥的html+css知识,学完之后让你能快速布局pc端页面.代码也可以讲的好玩有趣 ...
- 【黑马18期Java毕业生】黑马程序员Java全套资料+视频+工具
Java学习路线图引言: 黑马程序员:深知广大爱好Java的人学习是多么困难,没视频没资源,上网花钱还老被骗. 为此我们历时一个月整理这套Java学习路线图,不管你是不懂电脑的小 ...
- 黑马程序员:轻松精通Java学习路线连载1-基础篇!
编程语言Java,已经21岁了.从1995年诞生以来,就一直活跃于企业中,名企应用天猫,百度,知乎......都是Java语言编写,就连现在使用广泛的XMind也是Java编写的.Java应用的广泛已 ...
- 课程4:黑马程序员_spring2.5视频教程--视频列表
\黑马程序员_spring2.5视频教程\01Struts相关基础理论介绍.mp4; \黑马程序员_spring2.5视频教程\02搭建struts开发环境.mp4; \黑马程序员_spring2.5 ...
- 黑马程序员——【Java高新技术】——代理
---------- android培训.java培训.期待与您交流! ---------- 一.“代理概述”及“AOP概念” (一)代理概述 1.问题:要为已存在的多个具有相同接口的目标类的各个方法 ...
- 黑马程序员:Java基础总结----泛型(高级)
黑马程序员:Java基础总结 泛型(高级) ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 泛型(高级) 泛型是提供给javac编译器使用的,可以限定集合中的输入类型 ...
- 黑马程序员:Java基础总结----类加载器
黑马程序员:Java基础总结 类加载器 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 类加载器 Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个 ...
- 黑马程序员:Java基础总结----静态代理模式&动态代理
黑马程序员:Java基础总结 静态代理模式&动态代理 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 静态代理模式 public class Ts { ...
- 黑马程序员:Java基础总结----枚举
黑马程序员:Java基础总结 枚举 ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 枚举 为什么要有枚举 问题:要定义星期几或性别的变量,该怎么定义?假设用1-7分别 ...
随机推荐
- 使用Tensorflow搭建自编码器(Autoencoder)
自编码器是一种数据压缩算法,其中数据的压缩和解压缩函数是数据相关的.从样本中训练而来的.大部分自编码器中,压缩和解压缩的函数是通过神经网络实现的. 1. 使用卷积神经网络搭建自编码器 导入MNIST数 ...
- 如何使用screen命令
大家好,我是良许. 很多时候,我们都需要执行一些需要很长时间的任务.如果这时候,你的网络连接突然断开了,那么你之前所做的所有工作可能都会丢失,所做的工作可能都要重做一遍,这会浪费我们许多的时间,非常影 ...
- Atomic原子类
Atomic原子类 Atomic原子类位于并发包java.util.concurrent下的java.util.concurrent.Atomic中. 1. 原子更新基本类型类 使用原子方式更新基本数 ...
- 隐藏jqgrid滚动条
.ui-jqgrid .ui-jqgrid-bdiv{ overflow-x: hidden; } /* 隐藏jqgrid滚动条 */
- SpringBoot--- SpringSecurity进行注销,权限控制
SpringBoot--- SpringSecurity进行注销,权限控制 环境 IDEA :2020.1 Maven:3.5.6 SpringBoot: 2.0.9 (与此前整合的版本2.3.3 不 ...
- Python 控制台输出时刷新当前行内容而不是输出新行
需求目标 执行Python程序的时候在控制台输出内容的时候只显示一行,然后自动刷新内容,像这样: Downloading File FooFile.txt [%] 而不是这样: Downloading ...
- 0基础算法基础学算法 第八弹 递归进阶,dfs第一讲
最近很有一段时间没有更新了,主要是因为我要去参加一个重要的考试----小升初!作为一个武汉的兢兢业业的小学生当然要去试一试我们那里最好的几个学校的考试了,总之因为很多的原因放了好久的鸽子,不过从今天开 ...
- 七夕节表白3d相册制作(html5+css3)
七夕节表白3d相册制作 涉及知识点 定位 阴影 3d转换 动画 主要思路: 通过定位将所有照片叠在一起,在设置默认的样式以及照片的布局,最后通过设置盒子以及照片的旋转动画来达到效果. 代码如下: &l ...
- muduo源码解析5-mutex相关类
mutexlock和mutexlockguard class mutexlock:noncopyable { }: class mutexlockguard:noncopyable { }: 作用: ...
- 区块链入门到实战(29)之Solidity – 环境搭建
在线开发环境Remix(推荐) 学习Solidity推荐使用在线开发环境Remix,本教程的例子将使用Remix开发运行. 安装本地编译器 安装 nodejs / npm node官方网站下载node ...