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

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

时间: 2024-08-03 17:05:16

一个简易的学生成绩管理系统的相关文章

java开发的简易学生成绩管理系统

经过1个月的紧张学习和应用,终于做出了这个简易的学生成绩管理系统. 代码如下(仅供参考学习) view包下的菜单 package com.xujulong.www.view: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Scanner; import com.xujulong.www.po.Manager; import

简易学生成绩管理系统

做了一个小型的成绩管理系统.主要代码如下: /* * 功能:简易学生成绩管理系统 */package day7; import java.util.Scanner; public class HomeWork { static Scanner scan=new Scanner(System.in); static String[] user=new String[2]; static String[] password=new String[2]; static String[] name=ne

C语言学生成绩管理系统(简易版)

1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 5 int readstudents(struct students stu[]); //读取学生信息 6 int readsexcode(struct sexcode sex[]); //读取性别代码 7 int readcollegecode(struct collegecode colle[]); //读取学院代码 8 void tran

[项目记录] 用c语言完成的一个学生成绩管理系统

一.要求: 学生成绩管理系统 某班有最多不超过30人(具体人数由键盘输入)参加期末考试,最多不超过6门(具体门数由键盘输入).使用链表编程实现如下菜单驱动的学生成绩管理系统. 从文件读入每个学生个人信息和成绩信息,可以由键盘输入文件名.读入成功提示读入学生记录的个数,不成功提示相应出错信息. 增量式手动录入每个学生的学号.姓名和各科考试成绩.不考虑中文姓名,但需要考虑重名情况下的处理,学生的学号是唯一的. 计算每门课程的总分和平均分: 计算每个学生的总分和平均分: 按每个学生的总分由高到低排出名

C语言练手自己编写学生成绩管理系统

#include<stdio.h> #include<stdlib.h> /*定义学生结构体*/ struct Student { char ID[20]; char Name[20]; float Mark1; float Mark2; float Mark3; float Avarage; }; /*声明学生数组及学生数量*/ struct Student students[1000]; int num=0; /*计算平均成绩*/ float Avg(struct Studen

【学生成绩管理系统】 大二c语言作业

几年前写的了,只能在命令行窗口运行,虽然比较挫,还是有一定参考价值... #include <cstdio> #include <conio.h> #include <iostream> #include <process.h> #include <stdlib.h> #include <algorithm> #include <cstring> #include <cmath> #define N 5 con

c++学生成绩管理系统

虽然比较水 =.= 但是写了两节课+一个中午 都是强迫症的锅 http://www.cnblogs.com/wenruo/p/4940182.html #include <cstdio> #include <cstring> #include <iostream> using namespace std; class student // student 类为管理系统的一个节点 { friend class studentMessage; student *next;

使用C++结合文件操作和链表实现学生成绩管理系统

对于学生成绩管理系统,我是不会陌生,几乎学习C语言的人,做项目的时候都会想到学生成绩管理系统,我也不例外,在学了一段时间C语言后,也用C语言做了一个学生管理系统,后来联系做了几个,算过来,这个系统对前面的系统有所改进,增加了文件操作可以不用手动输入学生信息,可以直接从文件中读取学生信息,从而简化了操作 使用C语言实现学生成绩管理系统 http://blog.csdn.net/u010105970/article/details/17752193 使用链表实现学生成绩管理系统 http://blo

C语言实现---学生成绩管理系统

C语言实现了学生成绩管理系统,可以进行学生成绩的增加,删除,更新,查询,计算和展示. 完整代码如下: #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct person //定义结构体 { char num[10]; //学号 char name[20]; //姓名 float cyuyan; //C语言成绩 float en; //物理学成绩 float ji; //原子物理成绩