PS:第一次写有的地方可能理解有错误或者表达不清晰,术语不专业等问题大家谅解。
目录:
一、项目简介
二、项目介绍
2.1学生类
2.2mian()方法
2.2.1.1Student_Input()方法(学生信息录入)
2.2.1.2Student_Delete()方法(学生信息删除)
2.2.1.3Student_Change()方法(学生信息更改)
2.2.1.4Student_Inquire()方法(学生信息查询)
2.2.1.5Student_Individual()方法(学生个人信息查询)
三、项目总结
一、项目简介
实现6个功能: 1.学生信息录入 。2.学生信息删除 。3.学生信息更改。 4.学生信息查询。5.学生个人信息查询。6.退出。
用途:初学者训练项目。
二、项目介绍
该项目分两块:类的书写,main()方法的书写(6个功能方法,实现上面的6个功能)。
2.1学生类
由于一个学生有姓名,年龄,学号,家庭地址等,因此成员变量设置了四个String类型的变量。一个标准的类里面有无参构造和有参构造,(get,set)方法,熟练掌握的话可以使用快捷键。set方法的形参可以接收main方法中外部输入的数据,方法内用this封装,this可以指代一个变量,变量被指代之后,这个变量就是成员变量了。
package Student_project;
public class Student_Class {
private String stu_name;
private String stu_age;
private String stu_number;
private String address;
public Student_Class(){}
public Student_Class(String stu_number,String stu_name,String stu_age,String address){
this.stu_number=stu_number;
this.stu_name=stu_name;
this.stu_age=stu_age;
this.address=address;
}
public void setStu_number(String stu_number) {
this.stu_number = stu_number;
}
public String getStu_number() {
return stu_number;
}
public void setStu_name(String stu_name) {
this.stu_name = stu_name;
}
public String getStu_name() {
return stu_name;
}
public void setStu_age(String stu_age) {
this.stu_age = stu_age;
}
public String getStu_age() {
return stu_age;
}
public void setAddress(String address) {
this.address = address;
}
public String getAddress() {
return address;
}
}
2.2mian()方法的书写
创建ArrayList集合类型为2.1中的学生类,Scanner进行外部数据的接收。为使程序反复的运行用while进行控制,控制变量bring,内部嵌套switch语句表达式为整型变量anInt接收Scanner输入的值从而进行功能的选择。为使程序不死循环,因此在case 6中令循环控制变量bring=0结束循环。
package Student_project;
import java.util.ArrayList;
import java.util.Scanner;
public class Student_main {
public static void main(String[] args) {
ArrayList<Student_Class> Communication_Engineering_6=new ArrayList<Student_Class>();
Scanner sc=new Scanner(System.in);
int bring=1;
while (bring==1){
System.out.println("1.学生信息录入");
System.out.println("2.学生信息删除");
System.out.println("3.学生信息更改");
System.out.println("4.学生信息查询");
System.out.println("5.学生个人信息查询");
System.out.println("6.退出");
System.out.println("*********欢迎使用学生信息管理系统*********");
System.out.print("请输入所以进行的项目:");
int anInt = sc.nextInt();
switch (anInt){
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
case 6:
bring=0;
break;
}
}
}
}
2.2.1main()方法中功能方法
2.2.1.1Student_Input()方法(学生信息录入)
其中的重点为学生信息重复该如何的处理,因为ArrayList集合的底层是List集合该集合的特点是:元素有序元素可重复。因此在添加学生信息时候要进行信息的查重。重复查询利用while语句内嵌套if语句进行判断,判断集合中的元素个数利用size()方法,如果集合长度为0直接进行添加,如果不为0,使用student_Input_1()方法进行学号的查重返回的结果用boolean类型的变量接收,直到没有重复时退出循环,输入其余的数据最后创建学生类对象利用带参构造进行数据的接收,然后利用add()方法添加到集合中。
public static void Student_Input(ArrayList<Student_Class> Communication_Engineering_6){
//学生信息录入
Scanner sc=new Scanner(System.in);
String number="",age="",name="",address="";
int bring=1;
if (Communication_Engineering_6.size()==0){
System.out.println("请输入信息");
System.out.print("学号:");
number = sc.nextLine();
System.out.print("姓名:");
name = sc.nextLine();
System.out.print("年龄:");
age = sc.nextLine();
System.out.print("家庭住址:");
address = sc.nextLine();
} else{
Scanner sc1=new Scanner(System.in);
while (true){
System.out.println("请输入信息");
System.out.print("学号:");
number = sc1.nextLine();
boolean input_1 = Student_Input_1(Communication_Engineering_6,number);
if (input_1){
System.out.println("学号重复,重新录入信息!");
System.out.println("************************");
}else{
break;
}
}
System.out.print("姓名:");
name = sc1.nextLine();
System.out.print("年龄:");
age = sc1.nextLine();
System.out.print("家庭住址:");
address = sc1.nextLine();
}
Student_Class SC=new Student_Class(number,name,age,address);
Communication_Engineering_6.add(SC);
System.out.println("-----------------------------------------------------------------");
}
student_Input_1()方法:
这是一个返回值类型为Boolean类型的方法,自定义一个boolean类型的变量flg用for循环对集合遍历内嵌套if语句对返回元素的学号和输入的学号用equals()方法进行判断,最后返回该集合是否有该目标元素的结果,那为什么不在Student_Input()方法中使用equals进行判断,我亲自测试时候发生了情况就是第一次查询还可以,到第二次的时候就漏过了目标元素。
public static boolean Student_Input_1(ArrayList<Student_Class> Communication_Engineering_6,String number) {
boolean flg=false;
for (int i=0;i<Communication_Engineering_6.size();i++){
Student_Class student_Number = Communication_Engineering_6.get(i);
if (number.equals(student_Number.getStu_number())){
flg=true;
}
}
return flg;
}
2.2.1.2Student_Delete()方法(学生信息删除)
该方法的要点是信息查询时候对集合进行判断是否已经有元素存在,集合不为空时利用for循环对集合进行遍历利用ArrayList集合中的get(i)【i为元素的索引值】方法进行元素的返回,后利用if语句进行判断,判断条件为查询人的学号和集合中已有元素的学号是否相同,在2.1中学生类里面的成员变量设定是类型都为String所以这里用equals()方法进行比较返回值为Boolean类型。查到之后进行删除或者是返回。
public static void Student_Delete(ArrayList<Student_Class> Communication_Engineering_6){//学生信息删除
Scanner sc=new Scanner(System.in);
System.out.println("请输入信息");
System.out.print("查询人的学号:");
String Delete_number = sc.nextLine();
if (Communication_Engineering_6.size()==0) {
System.out.println("系统中无成员信息!");
System.out.println("************************");
}
for (int i=0;i<Communication_Engineering_6.size();i++){
Student_Class student_Number = Communication_Engineering_6.get(i);
if (Delete_number.equals(student_Number.getStu_number())){
System.out.println("查到该同学,是否删除信息。");
System.out.println("1.继续 2.返回");
System.out.print("输入选项:");
System.out.println("************************");
int i1 = sc.nextInt();
if (i1==1){
Communication_Engineering_6.remove(i);
System.out.println("学生信息删除成功!");
System.out.println("************************");
}else if (i1==2){
break;
}
}else {
System.out.println("查无此人!");
System.out.println("************************");
}
}
System.out.println("-----------------------------------------------------------------");
}
2.2.1.3Student_Change()方法(学生信息更改)
这个方法和上面2.2.1.3类似主要流程差不多,多了一个修改时候对元素的各个数据都重新设定了一下,有不懂得可以看上一个方法的文字介绍。
public static void Student_Change(ArrayList<Student_Class> Communication_Engineering_6){//学生信息更改
Scanner sc=new Scanner(System.in);
System.out.println("请输入信息");
System.out.print("修改人的学号:");
String Delete_number = sc.nextLine();
if (Communication_Engineering_6.size()==0) {
System.out.println("系统中无成员信息!");
System.out.println("************************");
}
for (int i=0;i<Communication_Engineering_6.size();i++) {
Student_Class student_Number = Communication_Engineering_6.get(i);
if (Delete_number.equals(student_Number.getStu_number())){
System.out.println("查到该同学,是否修改信息。");
System.out.println("1.继续 2.返回");
System.out.print("输入选项:");
System.out.println("************************");
int i1 = sc.nextInt();
if (i1==1){
Scanner sc1=new Scanner(System.in);
System.out.println("请输入信息");
System.out.print("学号:");
String number = sc1.nextLine();
System.out.print("姓名:");
String name = sc1.nextLine();
System.out.print("年龄:");
String age = sc1.nextLine();
System.out.print("家庭住址:");
String address = sc1.nextLine();
student_Number.setStu_number(number);
student_Number.setStu_name(name);
student_Number.setStu_age(age);
student_Number.setAddress(address);
}else if (i1==2){
break;
}
}else {
System.out.println("查无此人!");
System.out.println("************************");
}
}
System.out.println("-----------------------------------------------------------------");
}
2.2.1.4Student_Inquire()方法(学生信息查询)
这个方法一看代码量就少了,仔细看这个方法其实就是一个集合的遍历,遍历后根据索引值利用get()方法返回该元素到aClass学生类变量中,再用aClass变量调用学生类里面的get()方法最后用sout语句输出。
public static void Student_Inquire(ArrayList<Student_Class> Communication_Engineering_6){//学生信息查询
System.out.println("************************全 部 学 生 信 息************************");
for (int i=0;i<Communication_Engineering_6.size();i++){
Student_Class aClass = Communication_Engineering_6.get(i);
System.out.println("* "+"学号;"+aClass.getStu_number()+"\t"+"姓名:"+aClass.getStu_name()+"\t"+"年龄:"+aClass.getStu_age()+"\t\t"+"家庭地址:"+aClass.getAddress()+"\t");
}
System.out.println("-----------------------------------------------------------------");
}
拓展:这里讲一下集合的遍历方法常用的有三种:
1.增强for遍历。
for()中先定义一个和集合元素类型相同的变量后用:分开写集合名。
2.迭代器遍历。
迭代器遍历又分为正序输出和逆序输出,具体的原理过于复杂可以查找相关的文章或者视频有对源码的剖析。
3.for循环遍历。
for循环遍历还是搭配get()方法根据索引值将对于的元素返回。
package 练习_集合迭代器及三种输出方法;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class ListIterator_main {
public static void main(String[] args) {
List<String> LS=new ArrayList<>();
LS.add("Hello");
LS.add("World");
LS.add("java");
ListIterator<String> stringListIterator = LS.listIterator();
//迭代器输出方法
//hasNext()正输出法
while (stringListIterator.hasNext()){
String next = stringListIterator.next();
if (next.equals("World")){
stringListIterator.add("C++");
}
}
System.out.println(LS);
//hasPrevious()逆序输出法
while (stringListIterator.hasPrevious()){
String previous = stringListIterator.previous();
System.out.println(previous);
}
//增强for循环方法
for (String i:LS){
System.out.println(i);
}
//get()方法
for (int i=0;i< LS.size();i++){
String s = LS.get(i);
System.out.println(s);
}
}
}
2.2.1.5Student_Individual()方法(学生个人信息查询)
看完上边的功能方法这个方法就很容易理解了,主要的代码流程和之前几个类似实际上就是将2.2.1.2的部分内容和2.2.1.4结合了,相信大家一定能看懂。
public static void Student_Individual(ArrayList<Student_Class> Communication_Engineering_6){//学生个人信息查询
Scanner sc=new Scanner(System.in);
int i1=-1;
System.out.println("请输入信息");
System.out.print("查询人的学号:");
String Delete_number = sc.nextLine();
if (Communication_Engineering_6.size()==0) {
System.out.println("系统中无成员信息!");
System.out.println("************************");
}
for (int i=0;i<Communication_Engineering_6.size();i++){
Student_Class student_Number = Communication_Engineering_6.get(i);
if (Delete_number.equals(student_Number.getStu_number())) {
i1 = i;
break;
}else{
System.out.println("查无此人!");
}
}
if (i1!=-1){
Student_Class aClass = Communication_Engineering_6.get(i1);
System.out.println("************************学 生 信 息************************");
System.out.println("* "+"学号;"+aClass.getStu_number()+"\t"+"姓名:"+aClass.getStu_name()+"\t"+"年龄:"+aClass.getStu_age()+"\t"+"家庭地址:"+aClass.getAddress()+"\t");
}
System.out.println("-----------------------------------------------------------------");
}
三、项目总结
这个项目里面有许多的重复之处,因此这是初学的练习项目,可以反复的对知识点的理解,加深对基础概念的记忆。
PS:制作不易,未经本人允许,严禁转载,谢谢观看。
以下为源码,可直接跳过。
1.main()
package Student_project;
import java.util.ArrayList;
import java.util.Scanner;
public class Student_main {
public static void main(String[] args) {
ArrayList<Student_Class> Communication_Engineering_6=new ArrayList<Student_Class>();
Scanner sc=new Scanner(System.in);
int bring=1;
while (bring==1){
System.out.println("1.学生信息录入");
System.out.println("2.学生信息删除");
System.out.println("3.学生信息更改");
System.out.println("4.学生信息查询");
System.out.println("5.学生个人信息查询");
System.out.println("6.退出");
System.out.println("*********欢迎使用学生信息管理系统*********");
System.out.print("请输入所以进行的项目:");
int anInt = sc.nextInt();
switch (anInt){
case 1:
Student_Input(Communication_Engineering_6);
break;
case 2:
Student_Delete(Communication_Engineering_6);
break;
case 3:
Student_Change(Communication_Engineering_6);
break;
case 4:
Student_Inquire(Communication_Engineering_6);
break;
case 5:
Student_Individual(Communication_Engineering_6);
break;
case 6:
bring=0;
break;
}
}
}
public static void Student_Input(ArrayList<Student_Class> Communication_Engineering_6){//学生信息录入
Scanner sc=new Scanner(System.in);
String number="",age="",name="",address="";
int bring=1;
if (Communication_Engineering_6.size()==0){
System.out.println("请输入信息");
System.out.print("学号:");
number = sc.nextLine();
System.out.print("姓名:");
name = sc.nextLine();
System.out.print("年龄:");
age = sc.nextLine();
System.out.print("家庭住址:");
address = sc.nextLine();
} else{
Scanner sc1=new Scanner(System.in);
while (true){
System.out.println("请输入信息");
System.out.print("学号:");
number = sc1.nextLine();
boolean input_1 = Student_Input_1(Communication_Engineering_6,number);
if (input_1){
System.out.println("学号重复,重新录入信息!");
System.out.println("************************");
}else{
break;
}
}
System.out.print("姓名:");
name = sc1.nextLine();
System.out.print("年龄:");
age = sc1.nextLine();
System.out.print("家庭住址:");
address = sc1.nextLine();
}
Student_Class SC=new Student_Class(number,name,age,address);
Communication_Engineering_6.add(SC);
System.out.println("-----------------------------------------------------------------");
}
public static void Student_Delete(ArrayList<Student_Class> Communication_Engineering_6){//学生信息删除
Scanner sc=new Scanner(System.in);
System.out.println("请输入信息");
System.out.print("查询人的学号:");
String Delete_number = sc.nextLine();
if (Communication_Engineering_6.size()==0) {
System.out.println("系统中无成员信息!");
System.out.println("************************");
}
for (int i=0;i<Communication_Engineering_6.size();i++){
Student_Class student_Number = Communication_Engineering_6.get(i);
if (Delete_number.equals(student_Number.getStu_number())){
System.out.println("查到该同学,是否删除信息。");
System.out.println("1.继续 2.返回");
System.out.print("输入选项:");
System.out.println("************************");
int i1 = sc.nextInt();
if (i1==1){
Communication_Engineering_6.remove(i);
System.out.println("学生信息删除成功!");
System.out.println("************************");
}else if (i1==2){
break;
}
}else {
System.out.println("查无此人!");
System.out.println("************************");
}
}
System.out.println("-----------------------------------------------------------------");
}
public static void Student_Change(ArrayList<Student_Class> Communication_Engineering_6){//学生信息更改
Scanner sc=new Scanner(System.in);
System.out.println("请输入信息");
System.out.print("修改人的学号:");
String Delete_number = sc.nextLine();
if (Communication_Engineering_6.size()==0) {
System.out.println("系统中无成员信息!");
System.out.println("************************");
}
for (int i=0;i<Communication_Engineering_6.size();i++) {
Student_Class student_Number = Communication_Engineering_6.get(i);
if (Delete_number.equals(student_Number.getStu_number())){
System.out.println("查到该同学,是否修改信息。");
System.out.println("1.继续 2.返回");
System.out.print("输入选项:");
System.out.println("************************");
int i1 = sc.nextInt();
if (i1==1){
Scanner sc1=new Scanner(System.in);
System.out.println("请输入信息");
System.out.print("学号:");
String number = sc1.nextLine();
System.out.print("姓名:");
String name = sc1.nextLine();
System.out.print("年龄:");
String age = sc1.nextLine();
System.out.print("家庭住址:");
String address = sc1.nextLine();
student_Number.setStu_number(number);
student_Number.setStu_name(name);
student_Number.setStu_age(age);
student_Number.setAddress(address);
}else if (i1==2){
break;
}
}else {
System.out.println("查无此人!");
System.out.println("************************");
}
}
System.out.println("-----------------------------------------------------------------");
}
public static void Student_Inquire(ArrayList<Student_Class> Communication_Engineering_6){//学生信息查询
System.out.println("************************全 部 学 生 信 息************************");
for (int i=0;i<Communication_Engineering_6.size();i++){
Student_Class aClass = Communication_Engineering_6.get(i);
System.out.println("* "+"学号;"+aClass.getStu_number()+"\t"+"姓名:"+aClass.getStu_name()+"\t"+"年龄:"+aClass.getStu_age()+"\t\t"+"家庭地址:"+aClass.getAddress()+"\t");
}
System.out.println("-----------------------------------------------------------------");
}
public static void Student_Individual(ArrayList<Student_Class> Communication_Engineering_6){//学生个人信息查询
Scanner sc=new Scanner(System.in);
int i1=-1;
System.out.println("请输入信息");
System.out.print("查询人的学号:");
String Delete_number = sc.nextLine();
if (Communication_Engineering_6.size()==0) {
System.out.println("系统中无成员信息!");
System.out.println("************************");
}
for (int i=0;i<Communication_Engineering_6.size();i++){
Student_Class student_Number = Communication_Engineering_6.get(i);
if (Delete_number.equals(student_Number.getStu_number())) {
i1 = i;
break;
}else{
System.out.println("查无此人!");
}
}
if (i1!=-1){
Student_Class aClass = Communication_Engineering_6.get(i1);
System.out.println("************************学 生 信 息************************");
System.out.println("* "+"学号;"+aClass.getStu_number()+"\t"+"姓名:"+aClass.getStu_name()+"\t"+"年龄:"+aClass.getStu_age()+"\t"+"家庭地址:"+aClass.getAddress()+"\t");
}
System.out.println("-----------------------------------------------------------------");
}
public static boolean Student_Input_1(ArrayList<Student_Class> Communication_Engineering_6,String number) {
boolean flg=false;
for (int i=0;i<Communication_Engineering_6.size();i++){
Student_Class student_Number = Communication_Engineering_6.get(i);
if (number.equals(student_Number.getStu_number())){
flg=true;
}
}
return flg;
}
}
2.StudentClass
package Student_project;
public class Student_Class {
private String stu_name;
private String stu_age;
private String stu_number;
private String address;
public Student_Class(){}
public Student_Class(String stu_number,String stu_name,String stu_age,String address){
this.stu_number=stu_number;
this.stu_name=stu_name;
this.stu_age=stu_age;
this.address=address;
}
public void setStu_number(String stu_number) {
this.stu_number = stu_number;
}
public String getStu_number() {
return stu_number;
}
public void setStu_name(String stu_name) {
this.stu_name = stu_name;
}
public String getStu_name() {
return stu_name;
}
public void setStu_age(String stu_age) {
this.stu_age = stu_age;
}
public String getStu_age() {
return stu_age;
}
public void setAddress(String address) {
this.address = address;
}
public String getAddress() {
return address;
}
public void show(){
//后续更新
}
}