一個簡易的學生成績管理系統


簡易成績管理系統:
    分2大塊功能
    1、實現一個菜單包括
        A注冊 注冊一個管理員賬戶
        B登錄 通過注冊的賬戶登錄系統
        C退出 退出整個程序
    2、實現一個菜單
        A新增學生分數信息 循環新增學生的姓名與分數信息
        B修改學生分數信息 通過學生的姓名修改一個學生的分數
        C刪除學生分數信息 通過學生的姓名刪除一個學生的姓名與分數
        D查詢學生信息 查詢功能看第3小點
        E返回上級菜單
    3、查詢學生信息中實現一個小菜單
        A查詢學生分數 通過一個學生姓名查詢一個學生分數
        B查詢所有學生分數 查詢所有學生的分數

 

package com.lovo.classes1122;

import java.util.Scanner;

public class gradeManager {
    
    static String [] usr = new String [3];            //定義全局變量
    static int [] pwd = new int [3];
    static String [] name = new String [5];
    static int [] grade = new int [5];

    public static void main(String[] args) {
        userMenu();                                   //調用初始菜單

    }
    
    public static void userMenu(){ 
        //初始用戶菜單
        
        while(true){
            
            System.out.print("A.注冊   ");
            System.out.print("B.登陸   ");
            System.out.println("C.退出   ");
            
            Scanner input=new Scanner(System.in);     //輸入操作編號
            System.out.println("請輸入操作:");
            String operate =input.nextLine();
            
            switch (operate) {                        //判斷操作
            case "A":
            case "a":
                register();
                break;

            case "B":
            case "b":
                signIn();
                break;
                
            case "C":
            case "c":
                System.out.println("系統已退出,歡迎使用!!!");
                System.exit(-1);
                break;
                
            default:
                System.out.println("操作錯誤,請重新輸入指令");
                break;
            }
        }
    }

    public static void register(){
        //注冊
        
        boolean flag1 = false;
        
        for (int i = 0; i < usr.length; i++) {
            if (usr[i]==null) {                             //非null才賦值
                Scanner input = new Scanner(System.in);
                System.out.println("請輸入需注冊的賬號");
                usr[i] = input.nextLine();
                System.out.println("請輸入需注冊的密碼");
                pwd[i] = input.nextInt();
                flag1=true;
                break;                                      //賦值一次才退出循環
            }
        }
        
        if(flag1==false){
            System.out.println("用戶已滿,無法進行輸入!!!");
        }
        
    }
    
    public static void signIn() {
        //登陸
        
        Scanner input = new Scanner(System.in);
        System.out.println("請輸入您的的賬號");
        String user = input.nextLine();
        System.out.println("請輸入您的的密碼");
        int password = input.nextInt();
        
        for (int i = 0; i < usr.length; i++) {
            if (user.equals(usr[i]) && pwd[i]==password) { //賬號密碼一致才調用studentMenu()
                studentMenu();
                return;               //studentMenu()返回之后,再返回到上一級菜單
            }
        }
        
        System.out.println("賬號密碼錯誤!!!");
        
    }

    public static void studentMenu() {
        // 學生信息菜單
        
        while (true) {
            
            System.out.print("A.新增學生信息   ");
            System.out.print("B.修改學生信息   ");
            System.out.print("C.刪除學生信息   ");
            System.out.print("D.查詢學生信息   ");
            System.out.println("E.退出   ");
            
            Scanner input=new Scanner(System.in);
            System.out.println("請輸入操作:");
            String operate =input.nextLine();
            
            switch (operate) {                       //判斷操作
            case "A":
            case "a":
                addGrade();
                break;
                
            case "B":
            case "b":
                fixGrade();
                break;
                
            case "C":
            case "c":
                deleteGrade();
                break;
                
            case "D":
            case "d":
                scanGrade();
                break;
                
            case "E":
            case "e":
                return;

            default:
                System.out.println("操作錯誤,請重新輸入指令!!!");
                break;
            }
        }
    }

    public static void addGrade() {
        // 新增學生分數信息
        
        String flag = null;
        boolean flag1 = false;
        
        for (int i = 0; i < name.length; i++) {
            if (name[i]==null) {                            //非null才賦值
                Scanner input = new Scanner(System.in);
                System.out.println("請輸入學生姓名");
                name[i] = input.nextLine();
                System.out.println("請輸入學生成績");
                grade[i] = input.nextInt();
                flag1=true;
                
                Scanner input1 = new Scanner(System.in);    //每循環一次詢問是否繼續或中斷
                System.out.println("中斷新增請輸 1 ,否則輸入其他數");
                flag = input1.nextLine();
                
                if (flag.equals("1")) {
                    break;
                }
            }
            
        }
        
        if(flag1==false){                                   //提示是否能夠繼續輸入
            System.out.println("用戶已滿,無法進行輸入!!!");
        }
        
    }
    
    public static void fixGrade() {
        // 修改學生分數信息
        
        String flag = null;
        
        while (true) {
            
            boolean flag1 = false;
            
            Scanner input = new Scanner(System.in);
            System.out.println("請輸入需修改的學生姓名");
            String name1 = input.nextLine();
            System.out.println("請輸入學生成績修改為多少");
            int grade1 = input.nextInt();
            
            for (int i = 0; i < name.length; i++) {           //修改對應名字的對應的成績
                if(name1.equals(name[i])){
                    grade[i]=grade1;
                    flag1=true;
                }
            }
            
            if(flag1==false){
                System.out.println("無法查找到此名字!!!");
            }
            
            Scanner input1 = new Scanner(System.in);          //每循環一次詢問是否繼續或中斷
            System.out.println("中斷修改請輸 1 ,否則輸入其他數");
            flag = input1.nextLine();
                
            if (flag.equals("1")) {
                break;
            }
            
        }
        
    }
    
    public static void deleteGrade() {
        // 刪除學生分數信息
        
        String flag = null;
        String [] nameTemp= new String [name.length];
        int [] gradeTemp= new int [grade.length];
        int index=0;
        
        while (true) {
            
            boolean flag1=false;
            
            Scanner input = new Scanner(System.in);
            System.out.println("請輸入需刪除的學生姓名");
            String name1 = input.nextLine();
            
            for (int i = 0; i < name.length; i++) {          //將對應的名字和成績置空
                if(name1.equals(name[i])){
                    name[i]=null;
                    grade[i]=0;
                    flag1=true;
                }
            }
            
            if(flag1==false){                                //提示輸入姓名是否錯誤
                System.out.println("無法查找到此名字!!!");
            }
            
            Scanner input1 = new Scanner(System.in);         //每循環一次詢問是否繼續或中斷
            System.out.println("中斷修改請輸 1 ,否則輸入其他數");
            flag = input1.nextLine();
                
            if (flag.equals("1")) {
                break;
            }
        }
        
        for (int i = 0; i < name.length; i++) {  //將數組name和grade非空元素賦給Temp
            if (name[i]!=null) {
                nameTemp[index]=name[i];
                gradeTemp[index]=grade[i];
                index++;
            }
        }
        
        for (int i = 0; i < name.length; i++) {  //將Temp全部元素賦給數組name和grade
            name[i]=nameTemp[i];
            grade[i]=gradeTemp[i];
        }
    }
    
    public static void scanGrade() {
        // 查詢學生信息
        
        
        while (true) {
            
            System.out.print("A.查詢學生分數   ");
            System.out.print("B.查詢所有學生分數   ");
            System.out.println("C.返回上一級   ");
        
            Scanner input=new Scanner(System.in);
            System.out.println("請輸入操作:");
            String operate =input.nextLine();
        
            switch (operate) {                       //判斷操作
            case "A":
            case "a":
                scanOne();
                break;
            
            case "B":
            case "b":
                scanAll();
                break;
            
            case "C":
            case "c":
                return;

            default:
                System.out.println("操作錯誤,系統返回上級菜單!!!");
                break;
            }
        }
    }

    public static void scanOne() {
        // 查詢學生分數
        
        boolean flag1 =false;
        
        Scanner input=new Scanner(System.in);
        System.out.println("請輸入要查詢的姓名");
        String name1 =input.nextLine();
        
        for (int i = 0; i < name.length; i++) {         //打印對應名字對應的分數
            if (name1.equals(name[i]) ) {
                System.out.print("姓名:"+name[i]+"   ");
                System.out.println("成績:"+grade[i]);
                flag1=true;
            }
        }
        
        if(flag1==false){                               //提示輸入姓名是否錯誤
            System.out.println("無法查找到此名字!!!");
        }
        
    }
    
    public static void scanAll() {
        // 查詢所有學生分數
        
        for (int i = 0; i < grade.length; i++) {        //遍歷
            System.out.print("姓名:"+name[i]+"   ");
            System.out.println("成績:"+grade[i]);
        }
    }

}

 

由於現階段還沒接觸到 javaoo 及 數據庫 等,手中能使用的東西很少,只能用已學到的基礎語法及函數來完成這個題目,所以還有很多可以改進和完善的地方。

這次編寫過程中,遇到了一些小難點,首先是 用戶名、密碼、學生姓名、學生成績 這4個數組 的聲明位置和參數傳遞的問題。如果 聲明位置不恰當 或 參數傳輸有誤,在學生信息菜單返回上級菜單之后,再進入到學生信息菜單時,會出現學生信息被初始化的問題。這里,我們可以將這四個數組都聲明在main函數中,但全程很多地方需要同時傳入和返回四個數組,略顯麻煩。所以,我們也可以將他們聲明為全局變量,即在class中聲明,與各函數同級,這樣就可以省去不少函數參數傳遞的過程。

當然在以后接觸了數據庫之后,會簡單許多。

最后是顯示 “無法查找到此名字!!!” 和 “用戶已滿,無法進行輸入!!!” 的問題,這里需要使用到我在之前博客中提到的“開關”思想,即本程序中flag、flag1的使用。在以后的編程之路上,“開關”思想是必不可少的,望同為java學習者的各位務必掌握。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM