Java-用集合編寫的班級管理系統
阿新 • • 發佈:2019-01-08
這是我初學java以來寫的第一個大一點的小程式,在這裡就跟大家一起來分享一下。
首先給大家說一下做這個小程式的需求:
每個班有一個老師,每個班可以有多個學生。
學生的增刪改查
老師的增刪改查
學生可以轉班
思路:1、我們實現這一個功能因為還沒學習資料庫話,首先應該想到要用到陣列的方式來實現;
2、構思:結構要安排合理,什麼部分該實現什麼功能,以及應該先實現什麼再做什麼,一步一步的寫;
3、先不要管程式碼量有多少,以實現功能為主要目的;
4、實現功能後,再考慮程式碼的優化問題。
下面就是程式碼實現的部分:
第一步:我們要有一個主程式來執行,程式碼如下
import java.util.*; import java.util.List; import java.util.Scanner; import org.lanqiao.service.ClassService; import org.lanqiao.service.StudentService; import org.lanqiao.service.TeacherService; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); ClassService cs = new ClassService(); StudentService ss = new StudentService(); TeacherService ts = new TeacherService(); a:while(true) { System.out.println("=======班級管理======"); System.out.println("1、班級資訊管理"); System.out.println("2、老師資訊管理"); System.out.println("3、學生資訊管理"); System.out.println("4、退出程式"); int input = sc.nextInt(); switch (input) { case 1: cs.checkAll(sc); break; case 2: ts.teacherAll(sc); break; case 3: ss.studentAll(sc); break; case 4: System.out.println("歡迎下次使用!"); System.exit(0); break a; default: System.out.println("沒有此功能!!!"); break; } } } }
第二步:服務類
這裡要說的就是我把實現功能都在寫在Service類裡面:
1、班級的Service類如下:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import org.lanqiao.school.Clazz;
import org.lanqiao.school.Student;
import org.lanqiao.school.Teacher;
public class ClassService {
// 建立班級容器
static List<Clazz> clazz = new ArrayList<>();
static {
Teacher t1 = new Teacher(1, "AA", " [email protected]", "英語");
Teacher t2 = new Teacher(2, "BB", "[email protected]", "語文");
List<Student> student1 = new ArrayList<>();
student1.add(new Student(1, "aa", "[email protected]", 85));
student1.add(new Student(2, "bb", "[email protected]", 90));
List<Student> student2 = new ArrayList<>();
student2.add(new Student(3, "cc", "[email protected]", 95));
student2.add(new Student(4, "dd", "[email protected]", 100));
student2.add(new Student(5, "ee", "[email protected]", 75));
clazz.add(new Clazz(t1, student1, 1));
clazz.add(new Clazz(t2, student2, 2));
}
public static void checkAll(Scanner sc) {
d: 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、返回上級選單");
int input = sc.nextInt();
switch (input) {
case 1:
check(sc);
break;
case 2:
check1(sc);
break;
case 3:
add(sc);
break;
case 4:
delete(sc);
break;
case 5:
break d;
default:
System.out.println("沒有該功能!");
break;
}
}
}
/**
* 檢視所有班級資訊
*/
public static void check(Scanner sc) {
int sum=0;
System.out.println("本校共有" + clazz.size() + "個班,資訊如下");
for (Clazz a : clazz) {
System.out.println(a.getId() + "班有" + a.getStulist().size() + "個學生");
for (int i = 0; i < a.getStulist().size(); i++) {
System.out.println(a.getStulist().get(i).toString());
}
sum+=a.getStulist().size();
}
System.out.println("本校共有"+sum+"個學生");
System.out.println("===========");
}
/**
* 檢視指定班級資訊
*/
public static void check1(Scanner sc) {
System.out.println("請輸入要檢視的班級id");
int id = sc.nextInt();
int index = -1;
for (Clazz c : clazz) {
if (id == c.getId()) {
System.out.println(c.getId() + "班有" + c.getStulist().size() + "個學生");
for (int i = 0; i <= c.getStulist().size() - 1; i++) {
System.out.println(c.getStulist().get(i).toString());
index = i;
}
}
}
if (index == -1) {
System.out.println("沒有該班級");
}
}
/**
* 增加班級
*/
public static void add(Scanner sc) {
//判斷輸入班級id是否存在
System.out.println("請輸入增加的班級id");
int cID = sc.nextInt();
for(Clazz c:clazz) {
if(c.getId()==cID) {
System.out.println("此班級id已經存在!!!");
return;
}
}
//使用者輸入一個老師物件
System.out.println("請輸入一個老師資訊,格式為:[email protected]數學");
String s = sc.next();
String[] infos = s.split("-");
Teacher t3 = new Teacher(Integer.parseInt(infos[0]),infos[1],infos[2],infos[3]);
//判斷輸入的老師id是否存在
for(Clazz c:clazz) {
if(t3.getId()==c.getT().getId()) {
System.out.println("此id已經存在");
return;
}
}
//新增學生
System.out.println("請輸入要新增的學生個數");
int n = sc.nextInt();
//因為是新班級,所以要重新建立一個學生容器
List<Student> stul = new ArrayList<>();
System.out.println("請輸入要新增的學生資訊,格式為:[email protected]");
//定義一個統計學生的變數
int num=0;
//當新增學生數量大於輸入的就結束迴圈
a:while(num<n) {
String s1 = sc.next();
String[] info = s1.split("-");
//判斷輸入格式是否正確
if(info.length<4) {
System.out.println("輸入資訊錯誤");
continue a;
}
//建立學生物件
Student newStu = new Student(Integer.parseInt(info[0]),info[1],info[2],Double.parseDouble(info[3]));
//判斷輸入的學生id是否存在
for(Clazz c :clazz) {
for(int i = 0;i<c.getStulist().size();i++) {
if(newStu.getId()==c.getStulist().get(i).getId()) {
System.out.println("該學號已經存在!!!");
continue a;
}
}
}
stul.add(newStu);
num++;
}
clazz.add(new Clazz(t3, stul, cID));
System.out.println("新增成功!");
}
/**
* 刪除班級
*/
public static void delete(Scanner sc) {
System.out.println("請輸入要刪除的班級id");
int id = sc.nextInt();
int index =-1;
for(int i =0;i<=clazz.size();i++) {
if(id==clazz.get(i).getId()) {
clazz.remove(id-1);
index=i;
System.out.println("刪除成功!!");
break;
}
}
if(index==-1) {
System.out.println("沒有該班級!!!");
}
System.out.println("=======");
}
}
2、學生的服務類如下:
import java.util.Scanner;
import org.lanqiao.school.Clazz;
import org.lanqiao.school.Student;
public class StudentService extends ClassService {
public static void studentAll(Scanner sc) {
c: 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、返回上一級選單");
int input = sc.nextInt();
switch (input) {
case 1:
stuAdd(sc);
break;
case 2:
stuDelete(sc);
break;
case 3:
stuUpdate(sc);
break;
case 4:
stuZb(sc);
break;
case 5:
break c;
default:
System.out.println("沒有此功能!");
break;
}
}
}
/**
* 增加一個學生 先輸入班級
*/
public static void stuAdd(Scanner sc) {
System.out.println("請先輸入要增加到哪一個班級");
int id = sc.nextInt();
//定義一個下標,判斷是否存在這個班級
int index = -1;
for (Clazz c : clazz) {
if (id == c.getId()) {
System.out.println(c.getId() + "班共有" + c.getStulist().size() + "個學生");
for (int i = 0; i <= c.getStulist().size() - 1; i++) {
System.out.println(c.getStulist().get(i).toString());
index = i;
}
}
}
if (index == -1) {
System.out.println("沒有該班級");
return;
}
System.out.println("請輸入你要增加的學生資訊,例如([email protected])");
String s = sc.next();
try {
String[] infos = s.split("-");
// 建立學生物件
Student newStu = new Student(Integer.parseInt(infos[0]), infos[1], infos[2], Double.parseDouble(infos[3]));
for (Clazz c : clazz) {
for (int i = 0; i < c.getStulist().size(); i++) {
if (newStu.getId() == c.getStulist().get(i).getId()) {
System.out.println("輸入有誤,學號不能一樣!");
return;
}
}
// c.getStulist().add(newStu);
}
for (int i = 0; i < clazz.size(); i++) {
if (id == clazz.get(i).getId()) {
clazz.get(i).getStulist().add(newStu);
}
}
System.out.println("新增成功!!");
} catch (Exception e) {
System.out.println("輸入有誤!");
// TODO: handle exception
}
}
/**
* 刪除
*/
public static void stuDelete(Scanner sc) {
System.out.println("請輸入要刪除的學生id");
int id = sc.nextInt();
int index = -1;
for (Clazz c : clazz) {
for (int i = 0; i < c.getStulist().size(); i++) {
if (id == c.getStulist().get(i).getId()) {
index = i;
c.getStulist().remove(c.getStulist().get(i));
}
}
}
if (index == -1) {
System.out.println("沒有該學號的學生!");
return;
}
System.out.println("刪除成功!");
}
/**
* 更新
*/
public static void stuUpdate(Scanner sc) {
System.out.println("請輸入要更新的學生學號");
int id = sc.nextInt();
int index =-1;
for (Clazz c : clazz) {
for (int i = 0; i < c.getStulist().size(); i++) {
if (id == c.getStulist().get(i).getId()) {
System.out.println(c.getStulist().get(i).toString());
index=i;
}
}
}
if (index == -1) {
System.out.println("沒有該學號的學生!");
return;
}
System.out.println("請輸入修改的資訊:[email protected] 學號不能修改");
String s = sc.next();
try {
String[] infos = s.split("-");
for(Clazz c:clazz) {
for(int i =0;i<c.getStulist().size();i++) {
if(id==c.getStulist().get(i).getId()) {
c.getStulist().get(i).setName(infos[0]);
c.getStulist().get(i).setEmail(infos[1]);
c.getStulist().get(i).setScore(Double.parseDouble(infos[2]));
}
}
}
System.out.println("更新成功!");
} catch (Exception e) {
System.out.println("輸入有誤,請按要求重新輸入");
// TODO: handle exception
}
}
/**
* 轉班
*/
public static void stuZb(Scanner sc) {
System.out.println("請輸入要轉班的學生學號");
int id1 = sc.nextInt();
//定義一個下標,判斷該學生是否存在
int index = -1;
for (Clazz c : clazz) {
for (int i = 0; i < c.getStulist().size(); i++) {
if (id1 == c.getStulist().get(i).getId()) {
System.out.println("該學生原班級為:"+c.getId()+"班");
System.out.println(c.getStulist().get(i).toString());
index = i;
}
}
}
if (index == -1) {
System.out.println("學號不存在!");
return;
}
System.out.println("請輸入要轉入的班級的編號");
int id2 = sc.nextInt();
int index1 = -1;
//新建一個學生空的學生物件,為了後面把要轉班的學生資訊給自己
Student newStu = null;
for (Clazz c : clazz) {
for (int i = 0; i < c.getStulist().size(); i++) {
if (id1 == c.getStulist().get(i).getId()) {
// 把這個學生資訊放入新的學生物件裡面
newStu=c.getStulist().get(i);
// 找到這個學生把學生資訊在這個班級刪除
c.getStulist().remove(i);
index1 = i;
}
}
}
//找到轉入的班級,再把學生物件放入
for (int i = 0; i < clazz.size(); i++) {
if (clazz.get(i).getId() == id2) {
clazz.get(i).getStulist().add(newStu);
}
}
if (index1 == -1) {
System.out.println("該班級不存在");
return;
}
System.out.println("轉班成功");
}
}
3、老師的服務類:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import org.lanqiao.school.Clazz;
import org.lanqiao.school.Teacher;
public class TeacherService extends ClassService{
public static void teacherAll(Scanner sc) {
b:while(true) {
System.out.println("===老師資訊管理===");
System.out.println("1、檢視所有老師資訊");
System.out.println("2、修改老師資訊");
System.out.println("3、返回上一級選單");
int input = sc.nextInt();
switch(input) {
case 1:
tcAll(sc);
break;
case 2:
tcUpdate(sc);
break;
case 3:
break b;
default:
System.out.println("沒有該功能!");
break;
}
}
}
/**
* 檢視
*/
public static void tcAll(Scanner sc) {
System.out.println("本校共有"+clazz.size()+"個老師,老師資訊如下");
for(int i = 0;i<clazz.size();i++) {
System.out.println(clazz.get(i).getT().toString());
}
}
/**
* 修改
*/
public static void tcUpdate(Scanner sc) {
System.out.println("請輸入要修改老師的id");
int id = sc.nextInt();
int index = -1;
for (int i = 0; i < clazz.size(); i++) {
if (id == clazz.get(i).getId()) {
System.out.println(clazz.get(i).getT().toString());
index=i;
}
}
if (index==-1) {
System.out.println("查無此人!");
return;
}
System.out.println("請輸入修改的老師資訊,例如([email protected]英語) 編號不能修改");
String s = sc.next();
try {
String[] infos = s.split("-");
for(int i =0;i<clazz.size();i++) {
if(id==clazz.get(i).getId()) {
clazz.get(i).getT().setName(infos[0]);
clazz.get(i).getT().setEmail(infos[1]);
clazz.get(i).getT().setJob(infos[2]);
}
}
System.out.println("修改成功!!");
} catch (Exception e) {
System.out.println("輸入有誤,請按要求重新輸入!");
// TODO: handle exception
}
}
}
服務類就寫完了,下面就是班級,學生,老師的封裝類了,程式碼如下:
1、班級:
import java.util.ArrayList;
import java.util.List;
public class Clazz {
private Teacher t;
private List<Student> stulist = new ArrayList<>();
private int id;
public Teacher getT() {
return t;
}
public void setT(Teacher t) {
this.t = t;
}
public List<Student> getStulist() {
return stulist;
}
public void setStulist(List<Student> stulist) {
this.stulist = stulist;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Clazz(Teacher t, List<Student> stulist, int id) {
super();
this.t = t;
this.stulist = stulist;
this.id = id;
}
public Clazz() {
super();
}
}
2、學生:
public class Student {
private int id;
private String name;
private String email;
private double score;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
public Student(int id, String name, String email, double score) {
super();
this.id = id;
this.name = name;
this.email = email;
this.score = score;
}
@Override
public String toString() {
return "學號:" + id + "姓名:" + name+ "郵箱:" + email + "分數:" + score;
}
public Student() {
super();
}
}
3、老師:
public class Teacher {
private int id;
private String name;
private String email;
private String job;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public Teacher(int id, String name, String email, String job) {
super();
this.id = id;
this.name = name;
this.email = email;
this.job = job;
}
@Override
public String toString() {
return "編號:" + id + ",姓名"+ name+",郵箱:"+ email + ",科目:"+job;
}
public Teacher() {
super();
}
}
以上就是我的程式碼部分,在這裡說明以下,我也是一個初學者,程式碼的結構和處理以及程式碼的優化可能不是很好,對於新手來說還是以實現功能為目的,等你練得多了自己也就會去修改程式碼,後面我也會更多的給大家說說自己學習java的經歷。也希望有更多的朋友為我評論,說說我的不足之處,謝謝!!!