目录
自己刚开始学习JAVA,一边做一边学一遍记录下来。
开发工具
- JDK11;
- IntelliJ IDEA Community Edition 2022.1.1;
设计背景
针对学生进行姓名,学号,年龄的添加修改删除查看等操作。
项目框架
1.整个系统分为4个功能,增删改查以及一个退出系统。
2.创建一个SMS包。
3.包下设计一个Studen类和一个StudentManager类(包含main方法)。
Student类设计
1.定义三个私有成员变量:name,id,age;
2.再对他们分别定义get和set方法(完成封装);
3.定义一个无参构造方法和含参构造方法;
4.DEA中定义变量后可以按Alt+Ins快速生成对应构造方法和get、set方法。
完整代码
package SMS;
//学生类 alt+Ins快速生成方法
public class Student {
private String name;
private String id;
private String age;
public Student(){}
public Student(String name,String id,String age){
this.name=name;
this.id=id;
this.age=age;
}
public String GetName(){return name;}
public String GetId(){return id;}
public String GetAge() {return age;}
public void SetName(String name){
this.name=name;
}
public void SetId(String id) {
this.id = id;
}
public void SetAge(String id){
this.age=age;
}
}
StudentManager类设计
首先学生的数据我使用集合来存储。需要导包import java.util.ArrayList;
输入学生数据需要导包import java.util.Scanner;
主页面设计
使用switch语句进行功能选择
//获取键盘输入
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
//Switch语句进行功能匹配
switch (num) {
case 1:
Add(al);
break;
case 2:
Delete(al);
break;
case 3:
Change(al);
break;
case 4:
Check(al);
break;
case 5:
System.out.println("谢谢使用");
System.exit(0);
default:
System.out.println("输入正确的选项");
}
一、添加学生功能
输入添加的学生信息后,利用其创建新对象st,再将st存储到集合al中。
注意学号重复问题。
我定义了一个学号检查方法,用于验证添加或者修改的学号是否重复。将在后面介绍。
二、查看所有学生功能
主界面下输入4查看所有学生,如果一个学生都没有则给出提示,该验证功能通过集合大小是否为0实现,如果为0则给出提示并直接return;停止整个查看功能方法。有学生信息则利用for循环输出。
三、删除学生功能
输入需要删除的学生学号后,需要进行验证:学号是否存在?
我通过循环遍历查看要删除的学号在集合中是否存在,若存在则给索引index赋值。
经过所有循环后如果索引index的值改变了,说明原集合中存在该学号,则删除;如果经过循环索引index的值没变,说明不存在这一学号,则给出提示信息。
故此需要在删除方法内遍历循环外定义index为一个不可能是索引的值,如-1。
四、 修改学生功能
通过输入学号确定所需修改的学生。所以这一功能也需要验证原集合中是否存在该学号,所使用的验证方法与删除功能中一致。另外输入修改后的学号与添加新学生功能一样也需要注意验证是否与原集合中有重复,在此我再度调用检查学号方法。
五、 检查学号功能
定义了一个返回类型为Boolean类型的方法,传入集合和id
在其中定义了一个Boolean类型的变量flag,设置初始值为true。
利用for循环遍历集合,使用equals()方法判断输入的id和集合中原有id是否相同
如果有说明存在重复的id,所以将flag赋值flase并终止for循环,最后return flag。
之后再添加功能和修改功能的学号输入后调用学号检查方法,通过if(flag)来判断执行下一步。
//定义方法检查学号是否相同
public static boolean CheckId(ArrayList<Student> al,String id){
//默认为false
boolean flag=true;
for(int i=0;i<al.size();i++){
Student st=al.get(i);
if(st.GetId().equals(id)){
//说明有重复的ID
flag=false;
break;
}
}
return flag;
}
总结
自己一点一点的做完整个项目,虽然有点简陋,但是也学到了不少,很开心。
如果有什么不懂的或者感兴趣的可以和我联系。
StudentManager完整代码
package SMS;
import java.util.ArrayList;
import java.util.Scanner;
//学生管理类
//5个功能:添加学生;删除学生;修改学生;查看学生;退出
public class StudentManager {
public static void main(String[] args) {
ArrayList<Student> al=new ArrayList<>();
//主界面
while(true) {
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.print("输入序号以选择功能:");
//获取键盘输入
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
//Switch语句进行功能匹配
switch (num) {
case 1:
Add(al);
break;
case 2:
Delete(al);
break;
case 3:
Change(al);
break;
case 4:
Check(al);
break;
case 5:
System.out.println("谢谢使用");
System.exit(0);
default:
System.out.println("输入正确的选项");
}
}
}
//添加学生功能
public static void Add(ArrayList<Student> al){
System.out.print("请输入学生姓名:");
Scanner sc=new Scanner(System.in);
String name=sc.nextLine();
System.out.print("请输入学生id:");
String id=sc.nextLine();
boolean flag=CheckId(al,id);
if(flag){
System.out.print("请输入学生年龄:");
String age=sc.nextLine();
Student st=new Student(name,id,age);
al.add(st);
System.out.println("添加成功");
}else {
System.out.println("ID重复");
//Add(al);
}
}
//查看所有学生功能
public static void Check(ArrayList<Student> al){
//没有学生信息则提示
if(al.size()==0){
System.out.println("没有学生信息!请先添加");
return;
}
//有学生信息则格式输出
System.out.println("姓名\t\tID\t\t年龄");
for(int i=0;i<al.size();i++){
Student s=al.get(i);
System.out.println(s.GetName()+"\t\t"+s.GetId()+"\t\t"+s.GetAge()+"岁");
}
}
//删除学生功能
public static void Delete(ArrayList<Student> al){
System.out.print("请输入要删除的学生ID:");
Scanner sc=new Scanner(System.in);
String Did= sc.nextLine();
int index=-1;
//循环遍历查看要删除的学号在集合中是否存在,若存在则给索引index赋值
for(int i=0;i<al.size();i++){
Student st = al.get(i);
if(Did.equals(st.GetId())){
index=i;
break;
}
}
if(index==-1){
System.out.println("该学生ID不存在!请重新输入:");
Delete(al);
}else{
al.remove(index);
System.out.println("删除成功");
}
}
//修改学生功能
public static void Change(ArrayList<Student> al){
System.out.print("请输入需要修改的学生的学号:");
Scanner sc=new Scanner(System.in);
String Cid= sc.nextLine();
int index=-1;
//循环遍历查看要删除的学号在集合中是否存在,若存在则给索引index赋值
for(int i=0;i<al.size();i++){
Student st=al.get(i);
if(st.GetId().equals(Cid)){
index=i;
break;
}
}
if(index==-1){
System.out.println("学号不存在!请重新输入:");
//Change(al);
}else{
System.out.print("请输入学生新姓名:");
String newname=sc.nextLine();
System.out.print("请输入学生新学号:");
String newid=sc.nextLine();
boolean bl=CheckId(al,newid);
if(bl){
System.out.print("请输入学生新年龄:");
String newage=sc.nextLine();
Student newst=new Student(newname,newid,newage);
al.set(index,newst);
System.out.println("修改成功!");
}else {
System.out.println("ID重复");
// Change(al);
}
}
}
//定义方法检查学号是否相同
public static boolean CheckId(ArrayList<Student> al,String id){
//默认为false
boolean flag=true;
for(int i=0;i<al.size();i++){
Student st=al.get(i);
if(st.GetId().equals(id)){
//说明有重复的ID
flag=false;
break;
}
}
return flag;
}
}