第一階段基本結束,獨自完成了一個小專案。雖然還有許多不足,但自己依舊在進步!加油!!!!
package com.jbit.sms;
/**
* 學生資訊管理系統
* @author Administrator
*
*/
import java.util.Arrays;
import java.util.Scanner;
import org.omg.Messaging.SyncScopeHelper;
public class StudentInformation {
public static void main(String[] args) {
// 定義區域性變數
int[] stuNumbers = new int[] {};// 學號陣列
String[] names = new String[] {};// 學生姓名陣列
String[] major = new String[] {};// 專業陣列
int[] classId = new int[] {};// 班級陣列
Scanner input = new Scanner(System.in);
boolean isLogin = true;// 標識為使用者登入成功
/*
* 使用者登入主介面
*/
a: while (true) {
System.out.println("******************************\n\n");
System.out.println("歡迎使用學生資訊管理系統\n\n");
System.out.println("1.登入");
System.out.println("2.退出\n\n");
System.out.println("******************************");
// 提示使用者選擇
System.out.println("請選擇:");
String choice = input.next();// 使用者輸入選擇
switch (choice) {
case "1":
int change = 3;// 使用者的登入機會,超過三次強制退出
while (isLogin) {
System.out.println("請輸入使用者名稱:");
String userName = input.next();
System.out.println("請輸入密碼:");
String passWord = input.next();
// 判斷使用者輸入
if ("admin".equals(userName) && passWord.equals("123")) {
System.out.println("登入成功!請等待!");
// 等待時間
for (int i = 0; i < 6; i++) {
System.out.print("》");
try {
Thread.sleep(250);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
break a;
} else {
change--;
System.out.println("你還有" + change + "次機會");
if (change == 0) {
System.err.println("三次帳號密碼均不匹配!登入失敗!\n請重新選擇:");
break;
}
}
}
break;
case "2":
System.out.println("感謝您的使用!謝謝!");
break;
default:
System.err.println("輸入非法!請輸入(1-2的整數)!");
break;
}
}
/*
* 登入成功後選擇介面
*/
while (isLogin) {
System.out.println("\n******************************\n");
System.out.println("1.新增學生資訊");
System.out.println("2.查詢學生資訊");
System.out.println("3.修改學生資訊");
System.out.println("4.刪除學生資訊");
System.out.println("5.檢視所有學生資訊");
System.out.println("6.退出\n");
System.out.println("******************************");
System.out.println("請選擇:");
String choice = input.next();
/*
* 選擇新增學生資訊時才進行擴容
*/
if (choice.equals("1")) {
stuNumbers = Arrays.copyOf(stuNumbers, stuNumbers.length + 1);// 學號
names = Arrays.copyOf(names, names.length + 1);// 姓名
major = Arrays.copyOf(major, major.length + 1);// 專業
classId = Arrays.copyOf(classId, classId.length + 1);// 班級
}
switch (choice) {
case "1":
/*
* 從學號開始依次新增
*/
while (true) {
System.out.println("請輸入新增的學號:");
int newStuNumbers = input.nextInt();
boolean isAdd = true;
int index = -1;// 索引
for (int i = 0; i < stuNumbers.length; i++) {
if (stuNumbers[i] == newStuNumbers) {
index = i;
isAdd = false;
break;
}
}
if (isAdd) {
stuNumbers[stuNumbers.length - 1] = newStuNumbers;
Arrays.sort(stuNumbers);
break;
} else {
System.err.println("該學號已存在!請重新輸入!");
}
}
System.out.println("請輸入新增的姓名:");
String newName = input.next();
names[names.length - 1] = newName;
System.out.println("請輸入新增的專業:");
String newMajor = input.next();
major[major.length - 1] = newMajor;
System.out.println("請輸入新增的班級:");
int newClass = input.nextInt();
classId[classId.length - 1] = newClass;
System.out.println("新增成功!");
break;
case "2":
/*
* 根據學號進行查詢
*/
a: while (true) {
System.out.println("請輸入需要查詢的學號:");
int findStuNo = input.nextInt();
boolean isFind = true;
for (int i = 0; i < stuNumbers.length; i++) {
if (stuNumbers[i] == findStuNo) {
System.out.println("學生資訊如下:");
System.out.println("學號\t姓名\t專業\t班級");
System.out.println(stuNumbers[i] + "\t" + names[i] + "\t" + major[i] + "\t" + classId[i]);
break a;
} else {
isFind = false;
}
}
if (!isFind) {
System.err.println("該學號" + findStuNo + "不存在");
break a;
}
}
break;
case "3":
/*
* 根據學號進行修改
*/
b: while (true) {
System.out.println("請輸入需要修改的學號:");
int editNo = input.nextInt();
int index = -1;// 定位學號陣列的索引
boolean isFindEdit = true;
//System.out.println(stuNumbers.length);
for (int i = 0; i < stuNumbers.length; i++) {
isFindEdit = true;//在這裡除錯了很久沒有考慮到迴圈一次布林值都要做相應改變
if (stuNumbers[i] == editNo) {
index = i;
break;
} else {
isFindEdit = false;
}
}
// System.out.println(index);
if (!isFindEdit) {
System.err.println("該學號" + editNo + "不存在");
break b;
}
System.out.println("請輸入修改後的姓名:");
String editName = input.next();
names[index] = editName;
System.out.println("請輸入修改後的專業:");
String editMajor = input.next();
major[index] = editMajor;
System.out.println("請輸入修改後的班級:");
int editClass = input.nextInt();
classId[index] = editClass;
System.out.println("修改成功!");
break b;
}
break;
case "4":
/*
* 根據學號進行刪除
*/
c:while(true) {
System.out.println("請輸入需要刪除的學號:");
int deleteNo = input.nextInt();
int index = -1;
boolean isDelete = true;
for (int i = 0; i < stuNumbers.length; i++) {
isDelete = true;
if (stuNumbers[i] == deleteNo) {
index = i;
break;
}else {
isDelete = false;
}
}
if(!isDelete) {
System.err.println("該學號"+deleteNo+"不存在!刪除失敗!");
break c;
}
for(int i=stuNumbers.length-1;i>index;i--) {
stuNumbers[i-1] = stuNumbers[i];
}
stuNumbers = Arrays.copyOf(stuNumbers, stuNumbers.length-1);
//刪除姓名
for(int i=names.length-1;i>index;i--) {
names[i-1] = names[i];
}
names = Arrays.copyOf(names, names.length-1);
//刪除專業
for(int i=major.length-1;i>index;i--) {
major[i-1] = major[i];
}
major = Arrays.copyOf(major, major.length-1);
//刪除班級
for(int i=classId.length-1;i>index;i--) {
classId[i-1] = classId[i];
}
classId = Arrays.copyOf(classId, classId.length-1);
System.out.println("刪除成功!");
break c;
}
break;
case "5":
System.out.println("學生資訊如下:");
System.out.println("學號\t姓名\t專業\t班級");
for (int i = 0; i < stuNumbers.length; i++) {
System.out.println(stuNumbers[i] + "\t" + names[i] + "\t" + major[i] + "\t" + classId[i]);
}
break;
case "6":
System.out.println("感謝使用!");
break;
default:
System.err.println("輸入非法!請輸入(1-4的整數)!");
break;
}
}
}
}