1. 程式人生 > >第一階段基本結束,獨自完成了一個小專案。雖然還有許多不足,但自己依舊在進步!加油!!!!

第一階段基本結束,獨自完成了一個小專案。雖然還有許多不足,但自己依舊在進步!加油!!!!

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;
            }
        }
    }
}