java 一個簡單的學生資訊管理系統
阿新 • • 發佈:2019-01-26
用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.陣列宣告完之後還要進行對陣列中每個物件分別例項化,否則該物件無法使用。