学生信息管理练习程序设计
复习面向对象的程序设计思想、理解并掌握面向接口的程序设计思想、理解掌握三层架构的基本思想及实践。
一、需要解决问题
学生信息管理练习程序,实现对学生信息的管理,学生的学号、姓名、联系地址。录入学生的信息、编辑学生的信息、删除学生的信息、查询(根据学号查询、根据姓名查询)
1.如何存储学生的基本信息
必然要涉及很多名学生的信息,如何存储这些信息呢?一名学生就是个对象,也就是说,程序需要存储N个学生对象,最基本的方案使用对象数组。对象数组有哪些问题?
数组的长度是固定的,引入集合
2.List集合接口、ArrayList类
List集合接口、ArrayList类,位于java.util包。
有序的
collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。
List
接口的大小可变数组的实现。ArrayList的存储结构是数组(可变)
**ArrayList**() 构造一个初始容量为 10 的空列表。 |
---|
**ArrayList**(Collection<? extends E> c) 构造一个包含指定 collection 的元素的列表,这些元素是按照该 collection 的迭代器返回它们的顺序排列的。 |
**ArrayList**(int initialCapacity) 构造一个具有指定初始容量的空列表。 |
void add(E e);//将指定的元素添加到此列表的尾部。
void add(int index,E element);//将指定的元素插入到此列表中的指定位置
void clear();//移除列表中的所有元素
E get(int index);//返回此列表中指定位置上的元素
boolean remove(Object o);//移除此列表中指定位置上的元素
int size();//返回此列表中的元素数
package demo;
import java.util.ArrayList;
import java.util.List;
public class Demo1 {
public static void main(String[] args) {
List<String> strs=new ArrayList<>();
strs.add("Hello");
strs.add("World");
strs.add(0,"WWW");
System.out.println(strs.size());
System.out.println(strs.get(1));
System.out.println(strs.contains("123"));
strs.remove("Hello");
for (String str : strs) {
System.out.println(str);
}
}
}
package demo2;
public class Student {
private String number;
private String name;
private String address;
public Student() {
}
public Student(String number, String name, String address) {
this.number = number;
this.name = name;
this.address = address;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
package demo2;
import java.util.ArrayList;
import java.util.List;
public class Demo2 {
public static void main(String[] args) {
List<Student> stus=new ArrayList<>();
Student s1=new Student("20181812102","张三丰","武当山");
Student s2=new Student("20181812103","张无忌","光明顶");
Student s3=new Student("20181812104","赵敏","元大都");
stus.add(s1);//将元素加入到集合中
stus.add(s2);
stus.add(s3);
//遍历
for (Student student : stus) {
System.out.println(student.getNumber()+" "+student.getName()+" "+student.getAddress());
}
//查询根据学号得到
for (Student s : stus) {
if(s.getNumber().equals("20181812105")){
System.out.println(s.getNumber()+" "+s.getName()+" "+s.getAddress());
}
}
//如何从集合中移除对象,首先要找到欲删除的记录,然后再删除。
for (Student s : stus) {
if(s.getNumber().equals("20181812102")){
//stus.remove(s);
System.out.println(stus.indexOf(s));
stus.remove(stus.indexOf(s));
break;
}
}
for (Student s : stus) {
System.out.println(s.getNumber()+" "+s.getName()+" "+s.getAddress());
}
}
}
二、练习程序设计
表示层功能:显示所有学生信息的列表、根据学号查询学生信息、根据姓名查询学生信息、编辑学生信息、删除学生信息、录入学生信息
业务层功能:IStudentService接口:
List
Student getStudentByNumber(String number);
List
boolean editStudentInfo(Student stu);
boolean deleteStudentByNumber(String number);
Student addStudent(Student stu);
数据访问层功能:IStudentDao接口:
List
Student getStudentByNumber(String number);
List
boolean updateStudentInfo(Student stu);
boolean deleteStudentByNumber(String number);
Student addStudent(Student stu);