1. 程式人生 > >java學生管理系統程式碼

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 =

new ArrayList<Student>();//定義一個集合,用於接收學生物件的資訊。

Scanner sc = new Scanner(System.in);//定義Scanner物件用於接收指令資訊。

System.out.println("----------歡迎來到學生管理系統----------");

//建立迴圈使程式能夠迴圈進行。

while(true){

顯示();//包含指令資訊已經對應的操作。

System.out.println("請輸入一個數字進行操作:");

int num = sc.nextInt();//根據提示,錄入指令。

switch(num){//根據指令,選擇需要進行的操作。

case

 1:

檢視學生(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)

throws IOException {//退出系統提示是否儲存資訊。

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.戶籍 = 戶籍;

}

}