1. 程式人生 > >java 一個簡單的學生資訊管理系統

java 一個簡單的學生資訊管理系統

用java來寫一個管理系統

我第一次做資訊管理系統是用C語言做的,當時的第一感覺就是指標真的很好使,但是java中沒有指標,這讓我不能指哪兒打哪兒,而且兩種語言的核心思想也是不同的—一個面向過程,一個面向物件。這使得我在思想上要有轉變,這個管理系統我完成的有點緊迫,但是,做的再簡單,最基礎的增刪改查功能一定要實現 。在這個過程中我還是遇到了很多的問題。

下面是相關的一些程式碼:

package contralSystem;
import java.util.*;

//需求:製作一個簡單的學生資訊管理系統,通過鍵盤選擇操作進行新增學生
//(學號,姓名,性別,年齡,成績)的資訊,這些資訊通過陣列儲存,同時
//還可以進行查詢某個或全體學生資訊,修改學生資訊,刪除學生資訊的操作。 //(要求有一定的優化,例如對使用者輸入資訊是否符合要求的處理)。 public class Main { static Stu[] stu=new Stu[100]; static int number=0; static Scanner scanner=new Scanner(System.in); public static void main(String args[]){ int choice; System.out.println("這是一個學生資訊管理系統,最大容量為100,歡迎您對本系統的使用"
); while(true){ System.out.println("1.學生資訊新增"); System.out.println("2.學生資訊檢視"); System.out.println("3.學生資訊修改"); System.out.println("4.學生資訊刪除"); System.out.println("5.學生資訊按成績從低到高排序"); System.out.println("6.退出本作業系統"); System.out.println("請輸入你要進行的操作"); choice=scanner.nextInt(); if
(choice==6)break; switch(choice){ case 1: add(); break;//新增學生資訊 case 2: show();break;//查詢學生資訊 case 3: change();break;//修改學生資訊 case 4: delete();break;//刪除學生資訊 case 5: paixu();break;//對學生資訊排序 } } System.out.println("感謝您對本系統的使用,歡迎下次繼續使用"); } static void add(){//新增學生資訊 while(true){ System.out.println("點選任意鍵繼續新增學生資訊,停止新增輸入0"); if(scanner.nextInt()==0)break; System.out.println("請輸入該學生的學號,姓名,性別,年齡,成績"); stu[number]=new Stu(); stu[number].setStuNum(scanner.next()); stu[number].setName(scanner.next()); stu[number].setGender(scanner.next()); stu[number].setAge(scanner.nextInt()); stu[number].setScore(scanner.nextInt()); number++; System.out.println("新增成功"); }} static void show(){//展示學生資訊 System.out.println("這些學生的學號,姓名,性別,年齡,成績分別為"); for(int i=0;i<number;i++) System.out.println(stu[i].getStuNum()+"\t"+stu[i].getName()+"\t"+"\t"+stu[i].getGender()+"\t"+stu[i].getAge()+"\t"+stu[i].getScore()); System.out.println(); } static void paixu(){//對學生資訊進行排序 int j; Stu temp=new Stu(); for(int i=0;i<number;i++) { for(j=i+1;j<number;j++) if(stu[i].getScore()>stu[j].getScore()) {temp=stu[i];stu[i]=stu[j];stu[j]=temp;} } System.out.println("排序完成,選擇”學生資訊檢視“進行檢視"); } static void change(){//改變學生資訊 System.out.println("請輸入要修改資訊的學生學號"); String stunumber=scanner.next(); for(int i=0;i<number;i++) { if(stunumber.equals(stu[i].getStuNum())) {System.out.println("請輸入要修改的學生的資訊"); stu[i].setStuNum(scanner.next()); stu[i].setName(scanner.next()); stu[i].setGender(scanner.next()); stu[i].setAge(scanner.nextInt()); stu[i].setScore(scanner.nextInt()); break; } if(number==i)System.out.println("對不起查無此人"); } } static void delete(){//刪除學生資訊 System.out.println("請輸入要刪除資訊的學生學號"); String stunumber=scanner.next(); int i; for( i=0;i<number;i++) if(stunumber.equals(stu[i].getStuNum()))break; if(number==i)System.out.println("對不起查無此人"); for(;i<number-1;i++) stu[i]=stu[i+1]; number--; System.out.println("刪除完成"); } }

學生類的定義我就不在上面寫了。我遇到的主要問題有:
1.首先就是無法通過傳陣列地址的方式來對陣列進行操作。因為java中沒有指標,我想的解決方法就是將陣列靜態定義在帶有main函式的類中。這樣一來就可以在一開始就在方法區中給陣列分配記憶體。
2.函式呼叫是出現問題。無法正常呼叫函式。原因是沒有例項化物件,函式就沒有建立入口,無法進行呼叫。解決辦法是在帶有main函式的類中定義靜態函式就可以實現在C語言中相似的操作,在程式一開始就建立了這些功能函式的入口。
3.陣列宣告完之後還要進行對陣列中每個物件分別例項化,否則該物件無法使用。