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分别 ...
随机推荐
- C#LeetCode刷题之#141-环形链表(Linked List Cycle)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3901 访问. 给定一个链表,判断链表中是否有环. 进阶: 你能否 ...
- 打码(C语言)常见粗心小错误 (前方高能,一定要点)
打码(C语言)常见粗心小错误 标签(空格分隔): 博客 自我介绍 本人学院 (http://sdcs.sysu.edu.cn/) 欢迎访问 本人学号 16340213 目录 打码C语言常见粗心小错误 ...
- Revit二次开发——非模态窗口的事件处理
一.起因 自己在写revit二开时,有一个Winform窗体按钮点击事件需要 触发调用事务进行处理,结果出现“异常“Starting a transaction from an external ...
- day7 地址 名片管理系统
1 无限循环 (while True) break 退出 人为设计的 ,并且有退除的出口 死循环 bug 错误 2.引用 数字型
- Orcal语法Merge into用法
Orcal语法 Merge into 1.语法介绍 MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句.通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行 ...
- IDEA使用教程(上)
一.介绍 IDEA全称IntelliJ IDEA,是java语言开发的集成环境.idea提倡的是智能编码,目的是减少程序员的工作,其特色功能有智能的选取.丰富的导航模式.历史记录功能等,最突出的功能 ...
- Istio Routing 实践掌握virtualservice/gateway/destinationrule/AB版本发布/金丝雀发布
原文 在学习像 Istio 这样的新技术时,看一下示例应用程序总是一个好主意. Istio repo 有一些示例应用程序,但它们似乎有各种不足. 文档中的 BookInfo 是一个很好的示例. 但是, ...
- 精确到小数点后n位的两种方法
引言:大家在写程序中多多少少会遇到这个问题,特别对一些初学者会出现这个问题,做个ACM竞赛的同学肯定都会用C语言的printf格式控制输出,但是习惯于用C++的同学也不是一点办法都没有啊,这篇blog ...
- 虚拟化技术之kvm镜像模板制作工具virt-sysprep
virt-sysprep这个工具来自libguest-tools这个工具包,它能够把kvm虚拟机对应的磁盘文件做成一个模板,后续我们启动虚拟机就可以基于这个镜像模板启动:什么是镜像模板呢?所谓模板就是 ...
- in文件注意事项及详细解释(转载)
转载自:https://www.cnblogs.com/sysu/p/10817315.html 和 https://www.cnblogs.com/panscience/p/4953940.h ...