微型学生信息管理系统的建立

设计需求:制作一个简单的学生信息管理系统,通过键盘选择操作进行添加学生
(学号,姓名,性别,年龄,成绩)的信息,这些信息通过数组存储,
同时还可以进行查询某个或全体学生信息,修改学生信息,删除学生信息的操作。
(要求有一定的优化,例如对用户输入信息是否符合要求的处理)。

面对这个问题,第一想到的是该对象是Student,故创建一个Student类

package com.shxt.java.text1;

//新建一个Student类
public class Student {
 //定义学生的属性,姓名
 public String name;
    public String gender;
    public int age;
    public int score;
    public String stunum;

//返回name
    public String getName() {
        return name;
    }
    //给name赋值
    public void setName(String name) {
        this.name = name;
    }
    //返回age
    public int getAge() {
        return age;
    }
    //给age赋值
    public void setAge(int age) {
        this.age = age;
    }
    //返回score
    public int getScore() {
        return score;
    }
    //给score赋值
    public void setScore(int score) {
        this.score = score;
    }
    //返回gender
    public String getGender() {
        return gender;
    }
    //给gender赋值
    public void setGender(String gender) {
        this.gender = gender;
    }
    //返回stunum
    public String getStunum() {
        return stunum;
    }
    //给stunum赋值
    public void setStunum(String stunum) {
        this.stunum = stunum;
    }

}

其中,由题目可知,该Student类有5个属性,分别是stuname,gender,stunum,score,age。而该程序对于Stduent的操作可以化简为输入输出这五个属性的方法,故对于每个属性,都设计出输入输出这五个属性的方法。其中注意这几个方法返回值的类型。

写完Student类,再写Main方法,首先要考虑该系统需要用户输入,故要引入该方法,

包后,换行写import java.util.Scanner;。然后这需要先定义一个数组,这里暂时没有考虑如果录入学生的数据过多,导致越界的情况。我们把数组定义的足够大。同时数组的每个元素是个Student类,故数组的声明和实例化的语句为“Student[] a=new Student[1000];”,后来我只这样定义数组,程序运行的时候,会显示错误,经过查询将数组的每个元素都实例化了一遍。 “for(int slh=0;slh<1000;slh++){
           a[slh]=new Student();
         }”将每个数组元素都实例化之后,就可以正常运行了。然后定义了两个变量并对这两个变量进行了赋值。“int z=0;”和“int js=0;”这两个变量为什么会在这里定义会在后面解释。

    接下来就是创建用户操作界面,其源代码如下:

while(true){
   System.out.println("************欢迎登陆学生信息管理系统********");
   System.out.println("1.录入学生信息");
   System.out.println("2.修改学生信息");
   System.out.println("3.删除学生信息");
   System.out.println("4.查询学生信息");
   System.out.println("0.退出查询系统");
   System.out.println("————————请输入选项——————————");

……

因为要对该界面重复操作,所以加上while(true){……}这个循环,又因为这个系统是对对象操作,转成对数字操作,故加上switch语句将其转换成用户输入数字通过数字对该对象进行操作,如下:int m=scanner.nextInt();
   switch(m){
   case 1:
     ...

第一个设置为输入学生信息:

case 1:
    System.out.println("请您输入学生信息:");
    System.out.println("学生姓名:");
    String name=scanner.next();
    a[z].setName(name);
    System.out.println("学生学号:");
    String stunum1=scanner.next();
    a[z].setStunum(stunum1);
    System.out.println("学生性别:");
    String gender1=scanner.next();
    a[z].setGender(gender1);
    System.out.println("学生成绩:");
    int score1=scanner.nextInt();
    a[z].setScore(score1);
    System.out.println("学生年龄:");
    int age1=scanner.nextInt();
    a[z].setAge(age1);
    System.out.println("————————————录入完毕!——————————");
    z++;
    break;

其中,z变量之前有定义,后面的z是确定存入第几个元素用的。防止存放混乱。其中引入Student里的方法,就可以将数据存放在数组元素中。

对于第2个,设置成修改学生信息,简而言之,就是设置一个标签int bq=0;这样是为了在判断是否找到指定元素时的条件,对于修改信息就是怼原有的元素重新赋值的一个过程,先设置一个for循环,再在for循环中查找所需要找到的学生,最后对其重新赋值,对其重新赋值的方法,在Student类中的方法也有所提到。源代码如下:

case 2:{
    System.out.println("请输入你想要修改的学生学号:");
    String stunum2=scanner.next();
    int bq=0;
    for(int cz=0;cz<1000;cz++){
     if(stunum2.equals(a[cz].stunum)){
     System.out.println("请您输入学生信息:");
     System.out.println("学生姓名:");
     String name=scanner.next();
     a[cz].setName(name);
     System.out.println("学生学号:");
     String stunum1=scanner.next();
     a[cz].setStunum(stunum1);
     System.out.println("学生性别:");
     String gender1=scanner.next();
     a[cz].setGender(gender1);
     System.out.println("学生成绩:");
     int score1=scanner.nextInt();
     a[cz].setScore(score1);
     System.out.println("学生年龄:");
     int age1=scanner.nextInt();
     a[cz].setAge(age1);
     bq=1;
     System.out.println("————————————修改完毕!——————————");

}
    }
     if(bq==0){
      System.out.println("没有找到该学生信息,请重新确定!");
     }
    break;
   }

其中bq的初始值为0;当for循环结束时没有运行if语句就没有将bq的值改为1,故当bq仍为0时就可以认为并未找到该学生。

将3设置为删除学生的功能,其中判断是否存在要删除的学生的方法和修改学生信息几乎一致,都是设置一盒标签,判断标签的值是否改变。而对于删除这个学生信息的思路是:找到该学生所在数组的位置,再将后面的那个学生信息赋值给该前面一个学生信息,从该信息开始一直到结束,故可以设置一个循环,来完成这个操作。源代码如下:case 3:{
   System.out.println("请输入你想要删除的学生学号:");
   String stunum3=scanner.next();
   int pq=0;
   for(int sc=0;sc<1000;sc++){
    if(stunum3.equals(a[sc].stunum)){
     System.out.println("找到该学生!是否删除?(请输入是或者否)");
     String sf=scanner.next();
     if(sf=="是"){
      for(int w=sc;w<1000-js;w++){
       a[w]=a[w+1];
      }
      for(int gl=999;gl>999-js;gl--){
       a[gl]=null;
      }
      js++;
     }
     else if(sf=="否"){
      break;
     }
     pq=1;
 
    }
   }
   if(pq==0){
    System.out.println("输入错误");
    break;
   }
    break;
   }

对于4操作就是查找学生信息,通过for循环外加if语句来找到该学生,通过Student类里面的方法返回录入变量的值,也就是学生型。同时在判断输入的学生信息是否存在的方法与修改和删除学生信息中的方法一致。源代码如下:

case 4:{
    System.out.println("请您输入要查找的学生学号:");
    String stunum4=scanner.next();
    int mq=0;
    for(int i=0;i<1000;i++){
     if(stunum4.equals(a[i].getStunum())){
       System.out.println("学生姓名:");
       a[i].getName();
                      System.out.println(a[i].getName());
          System.out.println("学生学号:");
          System.out.println(a[i].getStunum());
          System.out.println("学生性别:");
          a[i].getGender();System.out.println(a[i].getGender());
          System.out.println("学生成绩:");
          a[i].getScore();System.out.println(a[i].getScore());
          System.out.println("学生年龄:");
          a[i].getAge();System.out.println(a[i].getAge());
    System.out.println("————————————输出完毕!——————————");
          mq=1;
     }
     
    }
    if(mq==0){
     System.out.println("输入的学号有误!");
    }
    break;
   }

最后设置0为退出程序,源代码如下:

case 0:{
    scanner.close();
    System.exit(0); 
    break;
   }

其中scanner.close();是终止输入命令,System.exit(0);是退出命令。

所有main方法的源代码如下:

package com.shxt.java.text1;
import java.util.Scanner;

public class Main {

public static void main(String[] args) {
  Scanner scanner=new Scanner(System.in);
  Student[] a=new Student[1000];
  for(int slh=0;slh<1000;slh++){
   a[slh]=new Student();
  }
  int z=0;
  int js=0;
  while(true){
   System.out.println("************欢迎登陆学生信息管理系统********");
   System.out.println("1.录入学生信息");
   System.out.println("2.修改学生信息");
   System.out.println("3.删除学生信息");
   System.out.println("4.查询学生信息");
   System.out.println("0.退出查询系统");
   System.out.println("————————请输入选项——————————");
   int m=scanner.nextInt();
   switch(m){
   case 1:{
    System.out.println("请您输入学生信息:");
    System.out.println("学生姓名:");
    String name=scanner.next();
    a[z].setName(name);
    System.out.println("学生学号:");
    String stunum1=scanner.next();
    a[z].setStunum(stunum1);
    System.out.println("学生性别:");
    String gender1=scanner.next();
    a[z].setGender(gender1);
    System.out.println("学生成绩:");
    int score1=scanner.nextInt();
    a[z].setScore(score1);
    System.out.println("学生年龄:");
    int age1=scanner.nextInt();
    a[z].setAge(age1);
    System.out.println("————————————录入完毕!——————————");
    z++;
    break;
   }
   case 2:{
    System.out.println("请输入你想要修改的学生学号:");
    String stunum2=scanner.next();
    int bq=0;
    for(int cz=0;cz<1000;cz++){
     if(stunum2.equals(a[cz].stunum)){
     System.out.println("请您输入学生信息:");
     System.out.println("学生姓名:");
     String name=scanner.next();
     a[cz].setName(name);
     System.out.println("学生学号:");
     String stunum1=scanner.next();
     a[cz].setStunum(stunum1);
     System.out.println("学生性别:");
     String gender1=scanner.next();
     a[cz].setGender(gender1);
     System.out.println("学生成绩:");
     int score1=scanner.nextInt();
     a[cz].setScore(score1);
     System.out.println("学生年龄:");
     int age1=scanner.nextInt();
     a[cz].setAge(age1);
     bq=1;
     System.out.println("————————————修改完毕!——————————");

}
    }
     if(bq==0){
      System.out.println("没有找到该学生信息,请重新确定!");
     }
    break;
   }
   case 3:{
   System.out.println("请输入你想要删除的学生学号:");
   String stunum3=scanner.next();
   int pq=0;
   for(int sc=0;sc<1000;sc++){
    if(stunum3.equals(a[sc].stunum)){
     System.out.println("找到该学生!是否删除?(请输入是或者否)");
     String sf=scanner.next();
     if(sf=="是"){
      for(int w=sc;w<1000-js;w++){
       a[w]=a[w+1];
      }
      for(int gl=999;gl>999-js;gl--){
       a[gl]=null;
      }
      js++;
     }
     else if(sf=="否"){
      break;
     }
     pq=1;
     
    }
    
   }
   if(pq==0){
    System.out.println("输入错误");
    break;
   }
    break;
   }
   case 4:{
    System.out.println("请您输入要查找的学生学号:");
    String stunum4=scanner.next();
    int mq=0;
    for(int i=0;i<1000;i++){
     if(stunum4.equals(a[i].getStunum())){
       System.out.println("学生姓名:");
       a[i].getName();
                      System.out.println(a[i].getName());
          System.out.println("学生学号:");
          System.out.println(a[i].getStunum());
          System.out.println("学生性别:");
          a[i].getGender();System.out.println(a[i].getGender());
          System.out.println("学生成绩:");
          a[i].getScore();System.out.println(a[i].getScore());
          System.out.println("学生年龄:");
          a[i].getAge();System.out.println(a[i].getAge());
    System.out.println("————————————输出完毕!——————————");
          mq=1;
     }
     
    }
    if(mq==0){
     System.out.println("输入的学号有误!");
    }
    break;
   }
   case 0:{
    scanner.close();
    System.exit(0); 
    break;
   }
  }  
       }
 
  }
}

通过这次代码的编写,可以更加熟练地掌握数组和类的运用。为以后学习打下一定的基础。

时间: 2024-08-08 05:20:47

微型学生信息管理系统的建立的相关文章

学生信息管理系统修改

北京工业大学耿丹学院 c语言设计课程报告   课程设计名称:高级语言程序设计 专业班级:计算机科学与技术1 姓名:吴双 学号:150809201   2016年5月10日 一 对c语言指针链表的体会 ------------------------ 二 修改学生信息管理系统 ------------------------ 三 体会 ------------------------ 一 对c语言指针链表的体会 1.指针 简单来说,指针是一个存储计算机内存地址的变量. 用 int *ptr 这种形

学生信息管理系统 1.0

学生信息管理系统V1.0 1.实现用户的注册与登录功能. 1.1:注册时检测用户名,如果有重复则需要重新输入,用户信息存入数据库. 1.2:登录时,有验证码验证. 2.实现用户查询学生表的基本信息. 3.用户可以更改.删除学生表信息. 4.系统可以正确显示系统时间. 5.系统正确显示用户权限(功能暂未实现). 因为很多东西还没有学到,只能用最基础的代码实现功能. 1)欢迎页面 1 <%@ page language="java" contentType="text/ht

利用链表实现简单的学生信息管理系统

#include <stdio.h>#include <stdlib.h>#include <string.h> typedef struct student{ int id; char name[20]; int age; char sex; char birthday[20]; char address[20]; char phone[15]; char email[30]; struct student *next;}student; student *head

【填坑中】学生信息管理系统

目标:简易的学生信息管理系统 功能: -建立学生档案,管理.维护. --录入.更改信息. -成绩管理,查询.修改学生成绩. --根据课程. -课程管理,添加.删除.修改. -班级设置,添加.删除.修改. -分配权限,保证安全性. --不同人员不同权限. 模块图: https://www.processon.com/view/link/56973106e4b038369d270acb 模块设计: -登录模块 --输入用户名 和 密码,如果匹配,则进入主控平台:否则给出错误提示.不明文保存密码. -

数据结构课程设计论文--学生信息管理系统

数据结构课程设计论文--学生信息管理系统 1.学生成绩分析问题 (1)问题描述.录入并保存一个班级学生多门课程的成绩,并对成绩进行分析. (2)基本要求.a)通过键盘输入各学生的多门课程的成绩,建立相应的文件input.dat.b)对文件input.dat中的数据进行处理,要求具有如下功能:按各门课程成绩排序,并生成相应的文件输出:计算每个人的平均成绩,按平均成绩排序,并生成文件:求出各门课程的平均成绩.最高分.最低分.不及格人数.60~69分人数.70~79分人数.80~89分人数.90分以上

JAVA学生信息管理系统

每天记录学习,每天会有好心情.*^_^* 今日思考,完成一个基于JAVA的学生信息管理系统项目,需要实现哪些功能?此类项目常见描述如下:学生信息管理系统可对学生学籍注册.档案管理.学籍异动.升级.毕业.成长记录实现全程信息化管理.采用当前非常流行的B/S体系结构,以JSP作为开发技术,主要依赖SSM技术框架,mysql数据库.SSM(MYECLIPSE)框架及其适合基于JAVA的学生信息管理系统,使用MVC的思想可以极大程度减少重复工作量.和SSM(MYECLIPSE)框架最配的开发工具是MYE

用基本数据结构修改后的学生信息管理系统(增删改查)

package com.xt.student.system; //创建学生类存放信息 public class Student {//声明变量private String stuNo; private String stuName; private String gender; private int age; private int score; //对变量进行封装 public String getStuNo() {return stuNo;} public void setStuNo(St

基于数据库MySQL的简易学生信息管理系统

通过这几天学习Mysql数据库,对其也有了基本的了解,为了加深印象,于是就写了一个最简易的学生信息管理系统. 一:基本要求 1.通过已知用户名和密码进行登录: 2.可以显示菜单: 3.可以随时插入学生信息: 4.可以删除学生信息: 5.可以通过学生姓名或学号显示学生所有信息: 还可以修改学生信息,添加学生表格属性等等,,,这些实现都基本类似上述的(这些不想写了,最简易的学生信息管理系统): 二:步骤 1.写一个sql脚本,包括创建数据库,使用数据库,创建学生信息表格,插入大部分学生信息. stu

学生信息管理系统

根据资料显示,那么,如果写一个字符串到一个文件中,是什么方式呢?显示到屏幕上是默认的输出文件,如果是硬盘中的一个文件,首先要打开一个文件,然后才能往里写,那么就要告诉程序这个文件在什么地方,按照什么样的方式打开(读.写.读和写.添加.覆盖等),然后打开后要给这个打开的文件一个符号(指针变量),表示后续的读和写都是针对这个文件的,而不是到屏幕的,这个指针变量以后就代表了文件自身了. 在学生信息管理系统中,需要同时保存一个学生的姓名,性别,年龄等信息,那么设置变量保存很多同学的这些信息就有点不太方便