一个简易的学生成绩管理系统

简易成绩管理系统:
    分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学习者的各位务必掌握。

posted @ 2016-11-27 11:31  晨M风  阅读(10469)  评论(2编辑  收藏  举报