Java学习之学籍管理系统

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43271086/article/details/96907111

1,我们先来讲讲什么是泛型化编程

package 学生管理系统;

import java.util.ArrayList;
import java.util.List;

/*
 * 进行泛型化编程
 * @autor:pcb
 * */
public class TestGeneric {
	//进行泛型化编程,规定类型。
	public List <CourseClass> courses;
	public TestGeneric() {
		this.courses = new ArrayList<CourseClass>();
	}
	public void testAdd() {
		CourseClass cr1 = new CourseClass("1","大学语文");
		courses.add(cr1);
		//泛型集合中不能添加规定意外的对象
		//courses.add("能否添加一些奇怪的东西");
		CourseClass cr2 = new CourseClass("2","Java基础");
		courses.add(cr2);
	}
	public void testForEach() {
		//进行泛型之后,可直接利用它规定的类型及其子类型直接进行访问
		for(CourseClass cr:courses) {
			System.out.println(cr.id+":"+cr.name);
		}
	}
	//泛型集合可以添加泛型的子类型的对象实例
	public void testChild() {
		ChildCourse ccr = new ChildCourse();
		ccr.id = "3";
		ccr.name = "我是子类的课程实例对象";
		courses.add(ccr);
	}
	//泛型必须使用包装类型进行创建,例如:int和integer
	public void testBaic() {
		List<Integer> list = new ArrayList<Integer>();
		list.add(1);
		System.out.println("基本类型必须使用包装类作为泛型!"+list.get(0));
	}
	public static void main(String[] args) {
		TestGeneric tg = new TestGeneric();
		tg.testAdd();
		tg.testForEach();
		tg.testChild();
		tg.testForEach();
		tg.testBaic();
		//tg.testForEach();
	}
}

2.我们开始进行管理系统的创建,创建一个学生类和一个课程类

package 学生管理系统;

import java.util.HashSet;
import java.util.Set;
public class StudentsClass implements Comparable <StudentsClass> {
	public String id;
	public String name;
	
	public Set<CourseClass> courses;
	
	public StudentsClass(String id,String name){
		this.id=id;
		this.name=name;
		this.courses=new HashSet<CourseClass>();
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (!(obj instanceof StudentsClass))
			return false;
		StudentsClass other = (StudentsClass) obj;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}
	public int compareTo(StudentsClass o) {
		return this.id.compareTo(o.id);
	}
}
package 学生管理系统;

public class CourseClass {
	public String id;
	public String name;
	public CourseClass(String id,String name){
		this.id=id;
		this.name=name;
	}
	public CourseClass() {
		
	}
	
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (!(obj instanceof CourseClass))
			return false;
		CourseClass other = (CourseClass) obj;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}
}

3,利用List进行增加课程,删除课程,修改课程等的操作

package 学生管理系统;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

public class ListTest {
	//创建
public List coursesToSelect;
	//构造器
	public ListTest(){
		 this.coursesToSelect = new ArrayList(); 
	}
	
	public void testAdd(){
		//加课
		  CourseClass cr1 = new CourseClass("1","数据结构");
		  coursesToSelect.add(cr1); 
		  CourseClass temp = (CourseClass)coursesToSelect.get(0);
		  System.out.println("添加了课程:"+temp.id+":"+temp.name);
		  CourseClass cr2 = new CourseClass("2","c语言");
		  coursesToSelect.add(0, cr2);
		  CourseClass temp2 = (CourseClass)coursesToSelect.get(0);
		  System.out.println("添加了课程:"+temp2.id+":"+temp2.name);
		  CourseClass[] Course={new CourseClass("3","离散数学"),new CourseClass("4","汇编语言")};
		  coursesToSelect.addAll(Arrays.asList(Course));
		  CourseClass temp3 = (CourseClass)coursesToSelect.get(2);
		  CourseClass temp4 = (CourseClass)coursesToSelect.get(3);
		  System.out.println("添加了两门课程:"+temp3.id+":"+temp3.name+";"+temp4.id+":"+temp4.name);
		  CourseClass[] Course1= {new CourseClass("5","高等数学"),new CourseClass("6","大学英语")};
		  coursesToSelect.addAll(2, Arrays.asList(Course1));
		  CourseClass temp5 = (CourseClass)coursesToSelect.get(2);
		  CourseClass temp6 = (CourseClass)coursesToSelect.get(3);
		  System.out.println("添加了两门课程:"+temp5.id+":"+temp5.name+";"+temp6.id+":"+temp6.name);

	}
		public void test() {
			int size = coursesToSelect.size();
			for(int i=0;i<size;i++) {
				//进行强制类型转化
				CourseClass cr = (CourseClass)coursesToSelect.get(i);
				System.out.println("课程"+i+":"+cr.id+":"+cr.name);
			}
		}
		//迭代器输入方法
		public void testIterator() {
			Iterator it = coursesToSelect.iterator();
			System.out.println("可选择的课程(通过迭代器访问):");
			while(it.hasNext()) {
				CourseClass cr  = (CourseClass) it.next();
				System.out.println("课程"+":"+cr.id+":"+cr.name);
			}
				
		}
		//利用foreach语句进行遍历
		public void testForEach() {
			System.out.println("可选择的课程(通过FOREACH访问):");
			for(Object obj:coursesToSelect) {
				CourseClass cr  = (CourseClass) obj;
				System.out.println("课程"+":"+cr.id+":"+cr.name);
			}
		}
		//进行修改操作
		public void testModify() {
			coursesToSelect.set(4, new CourseClass("7","毛概"));
		}
		//利用对象进行删除操作
		public void testRmove1() {
			System.out.println("通过对象进行删除");
			CourseClass cr = (CourseClass) coursesToSelect.get(4);
			System.out.println("我是课程:"+cr.id+":"+cr.name);
			coursesToSelect.remove(cr);
			System.out.println("成功删除课程!!");
			testForEach();
		}
		//利用索引值进行删除操作
		public void testRmove2() {
//			CourseClass cr = (CourseClass) coursesToSelect.get(4);
//			System.out.println("我是课程:"+cr.id+":"+cr.name);
			System.out.println("通过索引值进行删除");
			coursesToSelect.remove(4);
			System.out.println("成功删除课程!!");
			testForEach();
		}
		//进行删除,删除多位置的方法操作
		public void testRmove3() {
			System.out.println("删除4位置和5位置的课程");
			CourseClass [] Course={(CourseClass) coursesToSelect.get(4),(CourseClass) coursesToSelect.get(5)};
			//将Course数组转化成一个集合传递进去
			coursesToSelect.removeAll(Arrays.asList(Course));
			System.out.println("成功删除课程!!");
			testForEach();
			}
	public static void main(String[] args) {
		ListTest it = new ListTest();
		it.testAdd();
		it.test();
		//it.testIterator();
		//it.testForEach();
		//it.testModify();
		//it.testForEach();
		//it.testRmove2();
		it.testRmove3();
	}
}

4,利用set集合进行删除,添加,查询操作

package 学生管理系统;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class SetTest {
	//创建
	public List <CourseClass> coursesToSelect;
	//向屏幕读取
	private Scanner console;
	
	public StudentsClass student;
	//进行构造
	public SetTest() {
		coursesToSelect = new ArrayList<CourseClass>();
		console = new Scanner(System.in);
	}
	
	public void testAdd(){
		//加课
		  CourseClass cr1 = new CourseClass("1","数据结构");
		  coursesToSelect.add(cr1); 
		  CourseClass temp = (CourseClass)coursesToSelect.get(0);
		  //System.out.println("添加了课程:"+temp.id+":"+temp.name);
		  CourseClass cr2 = new CourseClass("2","c语言");
		  coursesToSelect.add(0, cr2);
		  CourseClass temp2 = (CourseClass)coursesToSelect.get(0);
		  //System.out.println("添加了课程:"+temp2.id+":"+temp2.name);
		  CourseClass[] Course={new CourseClass("3","离散数学"),new CourseClass("4","汇编语言")};
		  coursesToSelect.addAll(Arrays.asList(Course));
		  CourseClass temp3 = (CourseClass)coursesToSelect.get(2);
		  CourseClass temp4 = (CourseClass)coursesToSelect.get(3);
		  //System.out.println("添加了两门课程:"+temp3.id+":"+temp3.name+";"+temp4.id+":"+temp4.name);
		  CourseClass[] Course1= {new CourseClass("5","高等数学"),new CourseClass("6","大学英语")};
		  coursesToSelect.addAll(2, Arrays.asList(Course1));
		  CourseClass temp5 = (CourseClass)coursesToSelect.get(2);
		  CourseClass temp6 = (CourseClass)coursesToSelect.get(3);
		  //System.out.println("添加了两门课程:"+temp5.id+":"+temp5.name+";"+temp6.id+":"+temp6.name);

	}
	public void testForEach() {
		System.out.println("可选择的课程(通过FOREACH访问):");
		for(Object obj:coursesToSelect) {
			CourseClass cr  = (CourseClass) obj;
			System.out.println("课程"+":"+cr.id+":"+cr.name);
		}
	}
	//查询是否包含此课程
	public void testListContains() {
		CourseClass course = coursesToSelect.get(0);
		System.out.println("取得课程:"+course.name);
		
		System.out.println("备选课程是否包含课程:"+course.name+","
				+coursesToSelect.contains(course));
		System.out.println("请输入课程名称:");
		String name = console.next();
		CourseClass course2 = new CourseClass();
		course2.name = name;
		System.out.println("新创建课程:"+course2.name);
		System.out.println("备选课程是否包含课程:"+course2.name+","
				+coursesToSelect.contains(course2));
		//indexof来求出索引
				if(coursesToSelect.contains(course2)) {
					System.out.println("课程:"+course2.name+"的索引位置为:"+
				coursesToSelect.indexOf(course2));
				}
	}
	public void creatStudentAndSelect() {
		//创建一个学生对象
				 student = new StudentsClass("1","小明");
				System.out.println("欢迎学生:"+student.name+"选课!");
				//从键盘输入课程
				Scanner console = new Scanner(System.in);
				for(int i = 0;i<3;i++) {
					System.out.println("请输入课程ID");
					String courseId = console.next();
					for(CourseClass cr :coursesToSelect) {
						if(cr.id.equals(courseId)) {
							student.courses.add(cr);
						student.courses.add(null);
						student.courses.add(cr);
						}
					}
				}
	}
	//测试Set的contains方法
	public void testSetContains() {
		System.out.println("请输入学生已选的课程名:");
		String name =  console.next();
		CourseClass course2 = new CourseClass();
		course2.name = name;
		System.out.println("新创建课程:"+course2.name);
		System.out.println("备选课程是否包含课程:"+course2.name+","
				+student.courses.contains(course2));		
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SetTest st = new SetTest();
		st.testAdd();
 		st.testForEach();
		st.testListContains();
//		st.creatStudentAndSelect();
//		st.testSetContains();
	}
}

5,利用Map进行增加,删除,查询,修改操作

package 学生管理系统;

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;

public class MapTest {
	
public Map<String,StudentsClass>students;
	//利用哈希键值对进行创建
	public MapTest() {
	this.students = new HashMap<String,StudentsClass>();
}
	//进行学生的插入操作
	 public void testPut() {
		 Scanner console = new Scanner (System.in);
		 int i = 0;
		 while(i<3) {
			 System.out.println("请输入学生ID:");
			 String ID = console.next();
			 StudentsClass st = students.get(ID);
			 if(st == null) {
				 System.out.println("请输入学生姓名:");
				 String name = console.next();
				 StudentsClass newStudent = new StudentsClass(ID,name);
				 students.put(ID,newStudent);
				 System.out.println("成功添加学生:"+students.get(ID).name);
				 i++;
			 }else {
				 System.out.println("该学生ID已经被占用!");
				 continue;
			 }
		 }
	 }
	 //利用keyset方法将key值放在一个集合中,然后利用key值进行遍历
	 public void testKeySet() {
		 Set<String>keySet = students.keySet();
		 //进行遍历
		 for(String stuID:keySet) {
			 StudentsClass st = students.get(stuID);
			 if(st != null) {
				 System.out.println("学生:"+st.name);
			 }
		 }
	 }
	 //进行删除操作
	 public void testRmove() {
		 Scanner console = new Scanner(System.in);
		 while(true) {
		 System.out.println("请输入要删除的学生ID!");
		 String ID = console.next();
		 StudentsClass st = students.get(ID);
		  if(st == null) {
			  System.out.println("该ID不存在!");
			  continue;
		  }
		  students.remove(ID);
		  System.out.println("成功删除学生:"+st.name);
		  break;
	 }
}
	 //通过entryset来遍历Map
	 public void testEntrySet() {
		 Set<Entry<String,StudentsClass>>entrySet = students.entrySet();
		for(Entry<String,StudentsClass> entry:entrySet) {
				System.out.println("取得键:"+entry.getKey());
				System.out.println("对应的值为:"+entry.getValue().name);
		} 
	 }
	 //进行修改操作
	 public void testModify() {
		 System.out.println("请输入要修改的学生ID:");
		 Scanner console = new Scanner(System.in);
		 while(true) {
			 String stuID = console.next();
			 StudentsClass student = students.get(stuID);
			 if(student == null) {
				 System.out.println("该ID不存在!请重新输入!");
				 continue;
			 }
			 System.out.println("当前学生ID,所对应的学生为:"+student.name);
			 System.out.println("请输入新的学生姓名:");
			 String name =  console.next();
			 StudentsClass newStudent = new StudentsClass(stuID,name);
			 students.put(stuID,newStudent);
			 System.out.println("修改成功");
		 }
	 }
	 //通过键值或值进行查询操作
	 public void testContainsKeyOrValue() {
		 System.out.println("请输入要查询的学生ID:");
		 Scanner console = new Scanner(System.in);
		 String id = console.next();
		 System.out.println("您输入的学生ID为:"+id+"在学生映射表中是否存在:"+
		 students.containsKey(id)
				 );
		 if(students.containsKey(id)) {
			 System.out.println("对应的学生为:"+students.get(id).name);
		 }
		 System.out.println("请输入要查询的学生姓名:");
		 String name = console.next();
		 if(students.containsValue(new StudentsClass(null,name)))
			 System.out.println("在学生映射表中确实包含学生:"+name);
		 else
			 System.out.println("在学生映射表中不存在该学生");
	 }
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MapTest mt = new MapTest();
		mt.testPut();
		mt.testKeySet();
//		mt.testRmove();
//		mt.testEntrySet();
//		mt.testModify();
//		mt.testEntrySet();
		mt.testContainsKeyOrValue();
	}
}

6.进行重载比较

package 学生管理系统;

import java.util.Comparator;

public class StudentComparator implements Comparator<StudentsClass> {

	@Override
	public int compare(StudentsClass o1, StudentsClass o2) {
		// TODO Auto-generated method stub
		
		
		return o1.name.compareTo(o2.name);
	}

}

7,进行排序操作

package 学生管理系统;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

public class CollectionTest {
	
	//利用Collection内部方法进行排序操作
	public void testSort1() {
		//进行整形排序
		List<Integer>intergerList = new ArrayList<Integer>();
		Random random = new Random();
		Integer k;
		for(int i = 0;i < 10; i++) {
			 do {
			k = random.nextInt(100);
			 }while(intergerList.contains(k));
			 intergerList.add(k);
			 System.out.println("成功添加整数:"+k);
			 System.out.println("--------排序前-------");
			 for(Integer integer:intergerList) {
				 System.out.println("元素:"+integer);
			 }
			 Collections.sort(intergerList);
			 System.out.println("--------排序后-------");
			 for(Integer integer:intergerList) 
				 System.out.println("元素:"+integer);
		}
	}
	//进行String排序
	public void testSort2() {
		List<String>stringList = new ArrayList<String>();
		stringList.add("microsoft");
		stringList.add("google");
		stringList.add("lenovo");
		System.out.println("--------排序前-------");
		for(String string : stringList) {
			System.out.println("元素:"+string);
		}
		Collections.sort(stringList);
		System.out.println("--------排序后-------");
		for(String string : stringList) {
			System.out.println("元素:"+string);
		}
	}
	//对StudentsClass类进行排序,这里就需要进行equal和hashcode的重载
	public void testSort3() {
		List<StudentsClass>StudentList = new ArrayList<StudentsClass>();
		Random random = new Random();
		StudentList.add(new StudentsClass(random.nextInt(1000)+"","mike"));
		StudentList.add(new StudentsClass(random.nextInt(1000)+"","lucy"));
		StudentList.add(new StudentsClass(random.nextInt(1000)+"","angel"));
		System.out.println("--------排序前-------");
		for(StudentsClass student:StudentList) {
			System.out.println("学生:"+student.id+student.name);
		}
		Collections.sort(StudentList);
		System.out.println("--------排序后-------");
		for(StudentsClass student:StudentList) {
			System.out.println("学生:"+student.id+student.name);
		}
		Collections.sort(StudentList,new StudentComparator());
		System.out.println("----------按照姓名排序----------");
		for(StudentsClass student:StudentList) {
			System.out.println("学生:"+student.id+student.name);
		}
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		CollectionTest ct = new CollectionTest();
		//ct.testSort1();
		//ct.testSort2();
		ct.testSort3();
	}

}

8,辅助类。

package 学生管理系统;

public class ChildCourse extends CourseClass {
	
	
}

猜你喜欢

转载自blog.csdn.net/weixin_43271086/article/details/96907111