最近一直在写学校的PTA题目和弄web前端的大作业,就没怎么写博客记录自己的学习过程了,刚好最近写练习的时候写到了一个我感觉很普遍的一个项目,就是大家可能都熟知的学生管理系统。它这个管理系统的需求文档这样描述需求的:
功能很常规,实现起来并不复杂,只要在写出不同功能对应的不同方法就可以了。
首先在开始之前,我们先得创建一个JavaBean类来定义“学生”这个对象吧。
package sutdent_system;
public class student {
private String name;
private String id;
private String address;
public student() {
}
public student(String name, String id, String address) {
this.name = name;
this.id = id;
this.address = address;
}
/**
* 获取
* @return name
*/
public String getName() {
return name;
}
/**
* 设置
* @param name
*/
public void setName(String name) {
this.name = name;
}
/**
* 获取
* @return id
*/
public String getId() {
return id;
}
/**
* 设置
* @param id
*/
public void setId(String id) {
this.id = id;
}
/**
* 获取
* @return address
*/
public String getAddress() {
return address;
}
/**
* 设置
* @param address
*/
public void setAddress(String address) {
this.address = address;
}
public String toString() {
return "student{name = " + name + ", id = " + id + ", address = " + address + "}";
}
}
这样一个学生对象就弄好了,包括名字,id,地址。(我后面才发现我忘了加年龄了,但不是重点,没关系),一般写JavaBean类的时候我定义好成员变量后就直接ptg了,ptg这个插件很好用,节省了我很多时间。
然后我们就开始写学生管理系统吧。
首先是main:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<student> s = new ArrayList<>();
while (true) {
jiemian();
int n = sc.nextInt();
switch (n) {
case 1:
add_student(s);
System.out.println("录入完成!");
break;
case 2:
del_student(s);
break;
case 3:
mod_student(s);
break;
case 4:
chack_student(s);
case 5:
break;
}
}
}
在这里我用while语句,一直循环,达到实现完操作后,继续跳回选择页面,可持续执行下一步操作。
这里面我定义了几个方法:
add_student (添加学生信息) del_student(删除学生信息) mod_student(修改学生信息)
chack_student(查找学生信息) jiemian(就是一个简单的界面)
后面我会把每个方法放出来,就是挺简单的。
首先我建了个student这个类的集合,用它来存储学生的信息。
然后通过从键盘输入数字1~5来对应实现想要的功能。
界面如下:
public static void jiemian(){
System.out.println("----------kinroy学生管理系统----------");
System.out.println("1:添加学生信息");
System.out.println("2:删除学生信息");
System.out.println("3:修改学生信息");
System.out.println("4:查询学生信息");
System.out.println("5:退出系统");
System.out.println("请输入序号开始操作:");
}
用switch语句来简单实现这些功能。
添加学生信息:
public static void add_student(ArrayList<student>s){
Scanner sc=new Scanner(System.in);
student stu=new student();
System.out.println("请输入学生的id:");
String s1=sc.next();
stu.setId(s1);
//判断学号是否唯一
for (int i = 0; i < s.size(); i++) {
if (stu.getId().equals(s.get(i).getId())){
System.out.println("您输入的id已存在,请重新输入:");
add_student(s);
return;
}
}
System.out.println("请输入学生的姓名:");
String s2=sc.next();
stu.setName(s2);
System.out.println("请输入学生的住址:");
String s3=sc.next();
stu.setAddress(s3);
s.add(stu);
}
这里我需要的是需要每个学生的id都是唯一的,所以在遍历集合中元素的id的时候,如果发现id相重合,就必须再次输入新的id,在这里我在这个方法中再次调用这个方法本身来实现这个功能。
if (stu.getId().equals(s.get(i).getId())){
System.out.println("您输入的id已存在,请重新输入:");
add_student(s);
return;
}
删除学生信息:
Scanner sc=new Scanner(System.in);
System.out.println("请输入要删除的学生id:");
String id=sc.next();
for (int i = 0; i < s.size(); i++) {
if (s.get(i).getId().equals(id)){
s.remove(i);
System.out.println("删除成功!");
return;
}
}
System.out.println("你输入的id不存在");
很简单,直接调用集合的remove方法来实现,通过输入学生的id来找到要删除的学生,如果没有这个id存在,就告知id不存在。
修改学生信息:
public static void mod_student(ArrayList<student>s){
Scanner sc=new Scanner(System.in);
System.out.println("请输入要修改信息的学生的ID:");
String mod=sc.next();
for (int i = 0; i < s.size(); i++) {
if (s.get(i).getId().equals(mod)){
System.out.println("修改id---扣1 修改名字---扣2 修改地址---扣3 全部要改---扣4");
int n= sc.nextInt();
switch (n){
case 1:
System.out.println("请输入新id:");
String id=sc.next();
s.get(i).setId(id);
System.out.println("修改成功!");
break;
case 2:
System.out.println("请输入新名字:");
String name= sc.next();
s.get(i).setName(name);
System.out.println("修改成功!");
break;
case 3:
System.out.println("请输入新地址:");
String addres=sc.next();
s.get(i).setAddress(addres);
System.out.println("修改成功!");
break;
case 4:
System.out.println("请输入新id:");
String id1=sc.next();
s.get(i).setId(id1);
System.out.println("请输入新名字:");
String name1= sc.next();
s.get(i).setName(name1);
System.out.println("请输入新地址:");
String addres1=sc.next();
s.get(i).setAddress(addres1);
System.out.println("修改成功!");
break;
}
return;
}
}
System.out.println("您输入的id不存在");
}
这里我觉得要灵活一些,有时候我们要修改的可能是学生的某一项信息,所以我在这个方法中再给操作者一些选择,同样用id来找学生。
查找学生信息:
public static void chack_student(ArrayList<student>s){
Scanner sc=new Scanner(System.in);
System.out.println("显示所以学生信息---扣1 查询单个学生信息---扣2");
int n= sc.nextInt();
switch (n){
case 1:
System.out.println("ID 姓名 住址 ");
System.out.println("----------------------------------------");
for (int i = 0; i < s.size(); i++) {
System.out.println(s.get(i).getId()+" "+s.get(i).getName()+" "+s.get(i).getAddress());
}
return;
case 2:
System.out.println("输入你要查询的学生ID:");
String id=sc.next();
for (int j = 0; j < s.size(); j++) {
if (s.get(j).getId().equals(id)){
System.out.println("ID 姓名 住址 ");
System.out.println("----------------------------------------");
System.out.println(s.get(j).getId()+" "+s.get(j).getName()+" "+s.get(j).getAddress());
}
}
return;
}
}
总体:
package sutdent_system;
import java.util.ArrayList;
import java.util.Scanner;
public class system {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<student> s = new ArrayList<>();
while (true) {
jiemian();
int n = sc.nextInt();
switch (n) {
case 1:
add_student(s);
System.out.println("录入完成!");
break;
case 2:
del_student(s);
break;
case 3:
mod_student(s);
break;
case 4:
chack_student(s);
case 5:
break;
}
for (int i = 0; i < s.size(); i++) {
System.out.println(s.get(i));
}
}
}
public static void jiemian(){
System.out.println("----------kinroy学生管理系统----------");
System.out.println("1:添加学生信息");
System.out.println("2:删除学生信息");
System.out.println("3:修改学生信息");
System.out.println("4:查询学生信息");
System.out.println("5:退出系统");
System.out.println("请输入序号开始操作:");
}
public static void add_student(ArrayList<student>s){
Scanner sc=new Scanner(System.in);
student stu=new student();
System.out.println("请输入学生的id:");
String s1=sc.next();
stu.setId(s1);
//判断学号是否唯一
for (int i = 0; i < s.size(); i++) {
if (stu.getId().equals(s.get(i).getId())){
System.out.println("您输入的id已存在,请重新输入:");
add_student(s);
return;
}
}
System.out.println("请输入学生的姓名:");
String s2=sc.next();
stu.setName(s2);
System.out.println("请输入学生的住址:");
String s3=sc.next();
stu.setAddress(s3);
s.add(stu);
}
public static void del_student(ArrayList<student>s){
Scanner sc=new Scanner(System.in);
System.out.println("请输入要删除的学生id:");
String id=sc.next();
for (int i = 0; i < s.size(); i++) {
if (s.get(i).getId().equals(id)){
s.remove(i);
System.out.println("删除成功!");
return;
}
}
System.out.println("你输入的id不存在");
}
public static void mod_student(ArrayList<student>s){
Scanner sc=new Scanner(System.in);
System.out.println("请输入要修改信息的学生的ID:");
String mod=sc.next();
for (int i = 0; i < s.size(); i++) {
if (s.get(i).getId().equals(mod)){
System.out.println("修改id---扣1 修改名字---扣2 修改地址---扣3 全部要改---扣4");
int n= sc.nextInt();
switch (n){
case 1:
System.out.println("请输入新id:");
String id=sc.next();
s.get(i).setId(id);
System.out.println("修改成功!");
break;
case 2:
System.out.println("请输入新名字:");
String name= sc.next();
s.get(i).setName(name);
System.out.println("修改成功!");
break;
case 3:
System.out.println("请输入新地址:");
String addres=sc.next();
s.get(i).setAddress(addres);
System.out.println("修改成功!");
break;
case 4:
System.out.println("请输入新id:");
String id1=sc.next();
s.get(i).setId(id1);
System.out.println("请输入新名字:");
String name1= sc.next();
s.get(i).setName(name1);
System.out.println("请输入新地址:");
String addres1=sc.next();
s.get(i).setAddress(addres1);
System.out.println("修改成功!");
break;
}
return;
}
}
System.out.println("您输入的id不存在");
}
public static void chack_student(ArrayList<student>s){
Scanner sc=new Scanner(System.in);
System.out.println("显示所以学生信息---扣1 查询单个学生信息---扣2");
int n= sc.nextInt();
switch (n){
case 1:
System.out.println("ID 姓名 住址 ");
System.out.println("----------------------------------------");
for (int i = 0; i < s.size(); i++) {
System.out.println(s.get(i).getId()+" "+s.get(i).getName()+" "+s.get(i).getAddress());
}
return;
case 2:
System.out.println("输入你要查询的学生ID:");
String id=sc.next();
for (int j = 0; j < s.size(); j++) {
if (s.get(j).getId().equals(id)){
System.out.println("ID 姓名 住址 ");
System.out.println("----------------------------------------");
System.out.println(s.get(j).getId()+" "+s.get(j).getName()+" "+s.get(j).getAddress());
}
}
return;
}
}
}
student类:
package sutdent_system;
public class student {
private String name;
private String id;
private String address;
public student() {
}
public student(String name, String id, String address) {
this.name = name;
this.id = id;
this.address = address;
}
/**
* 获取
* @return name
*/
public String getName() {
return name;
}
/**
* 设置
* @param name
*/
public void setName(String name) {
this.name = name;
}
/**
* 获取
* @return id
*/
public String getId() {
return id;
}
/**
* 设置
* @param id
*/
public void setId(String id) {
this.id = id;
}
/**
* 获取
* @return address
*/
public String getAddress() {
return address;
}
/**
* 设置
* @param address
*/
public void setAddress(String address) {
this.address = address;
}
public String toString() {
return "student{name = " + name + ", id = " + id + ", address = " + address + "}";
}
}
来看一下运行的效果吧。
上面会有那个集合的遍历,是我之前查错用的,可以无视掉。
这样一个简单的学生管理系统就完成了。