本文实例为大家分享了Java实现简易学籍管理系统的具体代码,供大家参考,具体内容如下
1、我们先来讲讲什么是泛型化编程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
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、我们开始进行管理系统的创建,创建一个学生类和一个课程类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
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测试数据pareTo(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进行增加课程,删除课程,修改课程等的操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
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集合进行删除,添加,查询操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
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进行增加,删除,查询,修改操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
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、进行重载比较
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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测试数据pareTo(o2.name); }
} |
7、进行排序操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
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、辅助类。
1 2 3 4 5 |
package 学生管理系统;
public class ChildCourse extends CourseClass {
} |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
原文链接:https://blog.csdn.net/weixin_43271086/article/details/96907111