java學生管理系統程式碼
//匯入的包名
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
//學生管理系統類
publicclass StudentManager {
publicstaticvoid main(String[] args) throws IOException {
ArrayList<Student> array =
Scanner sc = new Scanner(System.in);//定義Scanner物件用於接收指令資訊。
System.out.println("----------歡迎來到學生管理系統----------");
//建立迴圈使程式能夠迴圈進行。
while(true){
顯示();//包含指令資訊已經對應的操作。
System.out.println("請輸入一個數字進行操作:");
int num = sc.nextInt();//根據提示,錄入指令。
switch(num){//根據指令,選擇需要進行的操作。
case
檢視學生(array);//具體如方法名
break;
case 2:
新增學生(array);//具體如方法名
break;
case 3:
修改學生(array);//具體如方法名
break;
case 4:
刪除學生(array);//具體如方法名
break;
case 5:
是否儲存資訊(array);//具體如方法名
System.out.println("系統已退出!");
System.exit(0);//退出系統的程式碼。
break;
default:
System.out.println("你輸入有誤請重新輸入!");
break;
}
}
}
publicstaticvoid 是否儲存資訊(ArrayList<Student> array)
Scanner sc = new Scanner(System.in);//定義Scanner物件用於接收指令資訊。
System.out.println("是否保留本次操作的結果!(輸入1儲存,輸入2不儲存):");
//建立迴圈使程式在輸入有問題的時候能夠迴圈進行。
while(true){
int num =sc.nextInt();//獲取指令資訊。
if(num==1){//當指令為1時,儲存此次操作的結果。
System.out.println("請輸入儲存資料的檔案路徑:");//選擇一個儲存檔案的路徑。
String f = sc.next();
BufferedWriter bw = new BufferedWriter(new FileWriter(f));//建立物件用於接收資料。
bw.write("學號"+"\t"+"姓名"+"\t"+"年齡"+"\t"+"戶籍");//文件擡頭。
bw.newLine();//換行
for (int i = 0; i < array.size(); i++) {//建立for迴圈,將集合中的資料迴圈錄入到文件中。
Student s = array.get(i);//得到集合中i索引的物件。
bw.write(s.get學號()+"\t"+s.get姓名()+"\t"+s.get年齡()+"\t"+s.get戶籍());//將集合中i索引的物件的資訊資料錄入到文件中。
bw.newLine();//換行
}
bw.close();//結束輸入。
break;//跳出while迴圈,從而結束方法。
}elseif(num==2){
break;//當不儲存操作結果的時候,不用進行任何操作,跳出迴圈即可。
}else{
System.out.println("你輸入有誤!請重新輸入(輸入1儲存,輸入2不儲存):");//輸入錯誤的提示。
}
}
}
publicstaticvoid 顯示() {//包含指令資訊已經對應的操作。
System.out.println("1.輸入1檢視(檢視系統中所有的學生資訊);");
System.out.println("2.輸入2新增(新增學生資訊到系統中);");
System.out.println("3.輸入3修改(根據學號修改學生資訊);");
System.out.println("4.輸入4刪除(根據學號刪除學生資訊);");
System.out.println("5.輸入5退出。");
}
publicstaticvoid 刪除學生(ArrayList<Student> array) throws IOException {//按照錄入與匯入的方法修改集合當中學生的資訊。
Scanner sc = new Scanner(System.in);//定義Scanner物件用於接收指令資訊。
System.out.println("請輸入刪除的方法(1、匯入 2、手動輸入):");
while(true){
int num = sc.nextInt();
if(num==2){//手動輸入。
System.out.println("請輸入學生學號:");
String code = sc.nextLine();//學號。
int index = 判斷(array, code);
if(index!=-1){//當索引值為true的時候,即集合中存在輸入的學號的時候,根據該物件的索引刪除該物件。
array.remove(index);
System.out.println("刪除成功!");
}else{
System.out.println("系統中不存在該學號,請重新輸入!");//不存在就迴圈錄入。
}
}elseif(num==1){//匯入。
System.out.println("請輸入需要刪除資料的檔案路徑:");//選擇一個檔案的路徑。
String filename = sc.next();
BufferedReader br = new BufferedReader(new FileReader (filename));//建立匯入資料的物件
String line="";//定義字串用於接收整行資料。
int sum = 0 ;//用於接收刪除的學生總數。
while((line = br.readLine())!=null){//判斷讀取的資料是否為空。
String[] s = line.split(" ");//利用空格分割字串得到Student物件的資訊。
//下面的方法同上面手動錄入的過程。
int index = 判斷(array, s[0]);
if(index!=-1){
array.remove(index);
sum++ ;
}else{
System.out.println("學號'"+s[0]+"不存在");
}
}
br.close();
System.out.println("成功刪除了"+sum+"位同學的資訊!");
break;
}else{
System.out.println("你輸入有誤,請重新選擇刪除的方法(1、匯入 2、手動輸入):");
}
}
}
publicstaticvoid 修改學生(ArrayList<Student> array) throws IOException {//按照錄入與匯入的方法修改集合當中學生的資訊。
Scanner sc = new Scanner(System.in);
System.out.println("請輸入修改的方法(1、匯入 2、手動輸入):");
while(true){
int num = sc.nextInt();
if(num==1){
System.out.println("請輸入需要修改資料的檔案路徑:");
String filename = sc.next();
BufferedReader br = new BufferedReader(new FileReader (filename));
String line="";
int sum = 0 ;
//while迴圈判斷是否錄入完畢。
while((line = br.readLine())!=null){
String[] s = line.split(" ");
//for迴圈判斷是否存在錄入的學號
int index = 判斷(array, s[0]);
if(index==-1){
System.out.println("學號'"+s[0]+"不存在");
}else{
Student st = new Student(s);
array.set(index,st);
sum++ ;
}
}
br.close();
System.out.println("成功修改了"+sum+"位同學的資訊!");
break;
}elseif(num==2){
System.out.println("請輸入學生學號:");
String code = sc.nextLine();
//for迴圈判斷是否存在錄入的學號
int index = 判斷(array, code);
if(index==-1){
System.out.println("系統中不存在學號'"+code+"',請重新輸入!");
}else{
System.out.println("請輸入學生新姓名:");
String name = sc.next();
System.out.println("請輸入學生新年齡:");
String age = sc.next();
System.out.println("請輸入學生新戶籍:");
String place=sc.next();
Student s = new Student(code,name,age,place);
array.set(index,s);
System.out.println("修改成功!");
break;
}
}else{
System.out.println("你輸入有誤,請重新選擇修改的方法(1、匯入 2、手動輸入):");
}
}
}
publicstaticvoid 檢視學生(ArrayList<Student> array) {//將集合中的資料以特定格式遍歷出來。
if(array.isEmpty()==true){
System.out.println("系統中還未儲存學生資訊,請你新增之後再檢視!");
}else{
System.out.println("學號"+"\t"+"姓名"+"\t"+"年齡"+"\t"+"戶籍");
for (int i = 0; i < array.size(); i++) {
Student s = array.get(i);
System.out.println(s.get學號()+"\t"+s.get姓名()+"\t"+s.get年齡()+"\t"+s.get戶籍());
}
}
}
publicstaticvoid 新增學生(ArrayList<Student> array) throws IOException {//按照錄入與匯入的方法新增學生的資訊到集合中。
Scanner sc = new Scanner(System.in);
System.out.println("請輸入新增的方法(1、匯入 2、手動輸入):");
while(true){
int num = sc.nextInt();
if(num==1){
System.out.println("請輸入需要匯入資料的檔案路徑:");
String filename = sc.next();
BufferedReader br = new BufferedReader(new FileReader (filename));
String line="";
int sum = 0;
//while迴圈判斷是否錄入完畢。
while((line = br.readLine())!=null){
String[] s = line.split(" ");
int index = 判斷(array, s[0]);
if(index!=-1){
System.out.println("學號'"+s[0]+"'在系統中已存在!");
}else{
Student st = new Student(s);
array.add(st);//將物件存入集合。
sum++;
}
}
br.close();
System.out.println("成功添加了"+sum+"位同學的資訊!");
return;
}elseif(num==2){
System.out.println("請輸入學生學號:");
String code = sc.next();
int index = 判斷(array, code);
if(index!=-1){
System.out.println("學號'"+code+"'已經存在,請重新輸入!");
}else{
System.out.println("請輸入學生姓名:");
String name = sc.next();
System.out.println("請輸入學生年齡:");
String age = sc.next();
System.out.println("請輸入學生戶籍:");
String place=sc.next();
Student s = new Student(code,name,age,place);
array.add(s);//將物件存入集合。
System.out.println("新增成功!");
return;
}
}else{
System.out.println("你輸入有誤,請重新選擇新增的方法:");
}
}
}
publicstaticint 判斷(ArrayList<Student> array, String code) {//判斷集合中是否存在與code相同的學號,如果存在,返回值為索引值,不存在返回值為-1。
for (int i = 0; i < array.size(); i++) {//遍歷集合。
if (array.get(i).get學號().equals(code)){//判斷集合中是否存在與code相同的學號,如果存在,同時得到索引值。
return i ;
}
}
return -1;//不存在返回值為-1。
}
}
//學生類
publicclass Student {
private String 學號 ;
private String 姓名 ;
private String 年齡 ;
private String 戶籍 ;
public Student() {
}
public Student(String[] s) {
this.學號 = s[0];
this.姓名 = s[1];
this.年齡 = s[2];
this.戶籍 = s[3];
}
public Student(String 學號, String 姓名, String 年齡, String 戶籍) {
this.學號 = 學號;
this.姓名 = 姓名;
this.年齡 = 年齡;
this.戶籍 = 戶籍;
}
public String get學號() {
return學號;
}
publicvoid set學號(String 學號) {
this.學號 = 學號;
}
public String get姓名() {
return姓名;
}
publicvoid set姓名(String 姓名) {
this.姓名 = 姓名;
}
public String get年齡() {
return年齡;
}
publicvoid set年齡(String 年齡) {
this.年齡 = 年齡;
}
public String get戶籍() {
return戶籍;
}
publicvoid set戶籍(String 戶籍) {
this.戶籍 = 戶籍;
}
}