package com.lovo.manager;

import java.util.Scanner;

/**
* 学生管理
*
* @author 向往的生活
*
*/
public class StudentManager {

public static void main(String[] args) {
        String[] user = new String[10];
        int[] password = new int[10];
        while (true) {
        // 菜单
        System.out.println("A 注册");
        System.out.println("B 登录");
        System.out.println("C 退出");

System.out.println("请选择菜单:");

        Scanner scan = new Scanner(System.in);
        String operator = scan.nextLine();
        operator = operator.toUpperCase();// 大小写互转
        // "SFCDS" 转换为一个一个的'S','F','C','D','S'
        char[] chr = operator.toCharArray();// 把字符串(String)转化为char数组

switch (chr[0]) {
        case 'A':
             register(user, password);
             break;
        case 'B':
             login(user, password);
             break;
        case 'C':
             System.out.println("退出系统!");
             System.exit(-1);
             break;
        default:
             System.out.println("操作错误,请从新输入!");
             break;
         }
     }
}

/**
* 登录
*/
public static void login(String[] user, int[] password) {

System.out.println("输入用户名:");
     Scanner input = new Scanner(System.in);
     String userName = input.nextLine();

System.out.println("输入密码:");
     int pwd = input.nextInt();

int index = -1;
     for (int i = 0; i < user.length; i++) {
     if (userName.equals(user[i]) && pwd == password[i]) {// 如果用户名与密码匹配
          System.out.println("登录成功!");
          studentMenu(userName);
          index = i;
          break;
     }
     }
     if (index == -1) {// 如果没有找到下标,则登录失败
         System.out.println("登录失败!");
         return;
     }
}

/**
* 注册
*/
public static void register(String[] user, int[] password) {

System.out.println("请输入用户名");
     Scanner scan = new Scanner(System.in);
     String userName = scan.nextLine();

System.out.println("请输入密码");
     int pwd = scan.nextInt();
     // 字符串中默认的数据是null,循环检查,一旦遇到null,
     // 就输入用户名和密码,把值赋值进去。
     for (int i = 0; i < user.length; i++) {
          if (user[i] == null) {
              user[i] = userName;
              password[i] = pwd;
              break;
          }
      }
}

/**
* 学生菜单
*/
public static void studentMenu(String user) {
     // 学生姓名与分数
     String[] studentName = new String[2];
     int[] score = new int[2];
     boolean flag = false;
     while (true) {

System.out.println("***欢迎您" + user + "***");

System.out.println("A 新增学生成绩");
           System.out.println("B 修改学生成绩");
           System.out.println("C 删除学生成绩");
           System.out.println("D 查询学生成绩");
           System.out.println("E 返回上级菜单");

System.out.println("请选择菜单:");
           Scanner input = new Scanner(System.in);
           String operator = input.nextLine();

operator = operator.toUpperCase();
           char op = operator.toCharArray()[0];

switch (op) {
                case 'A':
                    addInfo(studentName, score);
                    break;
                case 'B':
                    updateInfo(studentName, score);
                    break;
                case 'C':
                    deleteInfo(studentName, score);
                    break;
                case 'D':
                    queryInfo(studentName, score);
                    break;
                case 'E':
                    flag = true;
                    break;// 退出这个switch,如果在while中不多增加一个break,则会继续循环不会返回上一级菜单
                default:
                    System.out.println("操作错误,请从新输入!");
                    break;
            }
            if (flag) {
                 break;// 退出这个while,就返回到了登陆菜单
             }
         }
}

/**
* 新增学生信息
*
* @param studentName
* @param score
*/
public static void addInfo(String[] studentName, int[] score) {

for (int i = 0; i < studentName.length; i++) {
            System.out.println("请输入学生姓名:");
            Scanner scan = new Scanner(System.in);
            String stName = scan.nextLine();
            studentName[i] = stName;

System.out.println("请输入学生成绩:");
            int scr = scan.nextInt();

score[i] = scr;
        }
}

/**
* 修改学生姓名
*/
public static void updateInfo(String[] studentName, int[] score) {
       System.out.println("请输入学生姓名:");
       Scanner scan = new Scanner(System.in);
       String stName = scan.nextLine();
       // 通过名字修改分数
       int index = -1;
       for (int i = 0; i < score.length; i++) {// 通过遍历,输入的数与数组中的数据元素比较
       if (stName.equals(studentName[i])) {// 如果找到这个学生姓名,就记录下标
           index = i;
       }
       }
       // 输入一个分数
       System.out.println("请输入学生成绩:");
       int scr = scan.nextInt();

score[index] = scr;// 把输入的成绩赋值给,index记录找到的这个 下标
}

/**
* 删除员工数据
*/
public static void deleteInfo(String[] studentName, int[] score) {
       // 删除人名、删除分数
      System.out.println("请输入学生姓名:");
      Scanner scan = new Scanner(System.in);
      String stName = scan.nextLine();
      boolean flag = false;
      for (int i = 0; i < studentName.length; i++) {

if (studentName.length - 1 == i) { // 当前下标是最后一个的话,就退出循环
          studentName[i] = null;
          score[i] = 0;
          break;
      }
      if (stName.equals(studentName[i]) || flag) { // 如果发现这个名字,就用当前数组元素的下一个元素,向前移动替换当前这个元素
          flag = true;
          studentName[i] = studentName[i + 1];
          score[i] = score[i + 1];
      }
      }
      for (int i = 0; i < studentName.length; i++) {
            System.out.println("学生姓名=" + studentName[i] + ",成绩=" + score[i]);
      }
}

/**
* 查询学生信息
*/
public static void queryInfo(String[] studentName, int[] score) {
      boolean flag = false;
      while (true) {

      System.out.println("A 查询单个学生信息");
      System.out.println("B 查询所有学生信息");
      System.out.println("C 返回上级菜单");

System.out.println("请选择菜单:");
      Scanner scan = new Scanner(System.in);
      String operator = scan.nextLine();
      operator = operator.toUpperCase();// 大小写互转

char chr = operator.toCharArray()[0];
      switch (chr) {
      case 'A':
           querySinglStudentInfo(studentName, score);
           break;
      case 'B':
           queryAllStudentInfo(studentName, score);
           break;
      case 'C':
           flag = true;
           break;
      default:
           System.out.println("操作错误,请从新输入!");
           break;
}
if(flag) {
break;
}
}

}

/**
* 查询单个学生信息
*/
public static void querySinglStudentInfo(String[] studentName, int[] score) {
      System.out.println("请输入学生姓名:");
      Scanner scan = new Scanner(System.in);
      String stName = scan.nextLine();

for (int i = 0; i < studentName.length; i++) {
           if (stName.equals(studentName[i])) {
               System.out.println("学生:" + studentName[i] + ",成绩:" + score[i]);
               break;
           }
      }
}

/**
* 查询所有学生信息
*/
public static void queryAllStudentInfo(String[] studentName, int[] score) {
     for (int i = 0; i < studentName.length; i++) {
          System.out.println("学生:" + studentName[i] + ",成绩:" + score[i]);
      }
}
}

java基础:学生管理系统的更多相关文章

  1. java构建学生管理系统(一)

    用java搭建学生管理系统,重要还是对数据库的操作,诸如增删改查等. 1.基本的功能: 老师完成对学生信息的查看和修改,完成对班级的信息的概览. 学生可以看自己的成绩和对自己信息的修改. 学生和老师有 ...

  2. Java 简化版学生管理系统(IO版)

    Student management system   学生管理系统IO版 详细知识点可参考一下几篇文章 常用API Java 之ArrayList集合及应用 Java 之IO流及应用 Compreh ...

  3. Java+Mysql+学生管理系统

    最近正在学java和数据库,想起以前写的学生管理系统,都是从网上下载,敷衍了事.闲来无事,也就自己写了一个,不过功能实现的不是很多. 开发语言:java: 开发环境:Mysql, java: 开发工具 ...

  4. Java 小型学生管理系统心得

    这个学生管理系统相对来说比较简单,主要就是复习下java怎么连接数据库,然后你怎么来实现这个功能,我简单的说下思路吧. 首先你要构思好这个界面,他包括增删查改这些基本功能,然后你去分析这些功能都能怎么 ...

  5. Java开发学生管理系统

    Java 学生管理系统 使用JDBC了链接本地MySQL 数据库,因此在没有建立好数据库的情况下没法成功运行 (数据库部分, Java界面部分, JDBC部分) 资源下载: http://downlo ...

  6. Java写学生管理系统

    package Homework08;/*调试了一上午,收获:学会了昨天的debug的使用吸取教训:Student stus[]=new Student[2]; for (int i=0;i<s ...

  7. Java案例——学生管理系统

    简单完整的学生管理系统 学生类 public class Student { private String id; private String age; private String name; p ...

  8. java集合学生管理系统

    //student.java package com.sran.www; import java.util.Arrays; import java.util.Scanner; public class ...

  9. 学生管理系统——数据库、java基础

    1.项目分层 view层:视图层 controller层:控制层 service层:业务层 dao层:数据库访问层 domain:实体包 tools:工具类 2.jar包 3.配置文件 4.程序设计 ...

  10. Java基础进阶:学生管理系统数组方式分包源码实现,教师管理系统集合和数组两种方式源码实现,图书馆管理系统源码实现,现附重难点,代码实现源码,课堂笔记,课后扩展及答案

    1.案例驱动模式 1.1案例驱动模式概述 (理解) 通过我们已掌握的知识点,先实现一个案例,然后找出这个案例中,存在的一些问题,在通过新知识点解决问题 1.2案例驱动模式的好处 (理解) 解决重复代码 ...

随机推荐

  1. Unity3D 相关技术

    slua相关shader编程相关animation相关attack check攻击检测相关

  2. Backbone源码解读(一)事件模块

    Backbone源码浅读: 前言: Backbone是早起的js前端MV*框架之一,是一个依赖于underscore和jquery的轻量级框架,虽然underscore中基于字符串拼接的模板引擎相比如 ...

  3. 将[4,3,2,5,4,3]分割成[4,3,2]、[5,4,3]两个List的算法

    将[4,3,2,5,4,3]分割成[4,3,2].[5,4,3]两个List的算法 package com.srie.test; import java.util.ArrayList; import ...

  4. Spring mvc基本原理

    http://blog.csdn.net/xtu_xiaoxin/article/details/8796499 http://www.cnblogs.com/wawlian/archive/2012 ...

  5. Java学习之旅基础知识篇:数组及引用类型内存分配

    在上一篇中,我们已经了解了数组,它是一种引用类型,本篇将详细介绍数组的内存分配等知识点.数组用来存储同一种数据类型的数据,一旦初始化完成,即所占的空间就已固定下来,即使某个元素被清空,但其所在空间仍然 ...

  6. 游戏开发之UE4添加角色到场景中

    接着上次继续学习,现在我们已经有了一个场景并且运行了,我们需要添加一个角色到场景中.要这样做,我们必须从UE4的GameFramework类继承它. 一. 创建一个从Character类继承的类 从基 ...

  7. hessian原理解析一(客户端分析)

    hessian 是一款开源的二进制远程通讯协议,使用简单方法提供了RMI功能,主要用于面向对象的消息通信. 优点:跨平台.多语言支持.使用简单 缺点:传递复杂对象性能会下降,不适合安全性高的应用 一 ...

  8. 简单js

    js是一门弱类型的语言,要是你学过c/c++,那么上手js是一件简单的事情. js的变量是通过 var 来声明的.例如:声明一个变量 num 是这样的: var num; 我们也可以直接用 num , ...

  9. [CSS3] 学习笔记-选择器详解(三)

    1.UI元素状态伪类选择器 在CSS3的选择器中,除了结构性伪类选择器外,还有一种UI元素伪类选择器.这些选择器的共同特征是:指定的样式只有当元素处于某种状态时才起作用,在默认状态下不起作用.在CSS ...

  10. 自己动手系列——实现一个简单的ArrayList

    ArrayList是Java集合框架中一个经典的实现类.他比起常用的数组而言,明显的优点在于,可以随意的添加和删除元素而不需考虑数组的大小.处于练手的目的,实现一个简单的ArrayList,并且把实现 ...