java学生信息管理系统

4.8k 词

JAVA作业——学生管理系统

2022年05月06日 笔记

学生管理系统

一、程序简介

1.简介

本程序源码为简化版学生管理系统,仅供学习参考,学生信息存放在ROM中随程序运行而存在,关闭后消失。源码总计300行。所用知识点非list接口

2.功能实现

  • 登记学生信息
  • 显示所有学生信息
  • 根据学号查询学生信息
  • 根据学号插入学生信息
  • 根据学号修改学生信息
  • 根据学号删除学生信息
  • 根据要求排序
  • 退出系统

二、程序源码

新建文件名StudentSystem.java将以下代码复制

import java.util.Scanner;
class Score{
int chinese;
int math;
int english;
int total;
}
class Student{
String id;
String name;
Score score=new Score();
//添加学生信息
//显示学生信息
void showStudent(){
System.out.println("学号:"+id+"\t姓名:"+name+"\t语文:"+score.chinese+"\t数学:"+score.math+"\t英语:"+score.english+"\t总分:"+score.total);
}
}
public class StudentSystem {
public static final int Max=100;
//创建一个全局变量用来记录学生的个数
public static int stuNum=0;
public static void main(String[] args) {
Student[] stus=new Student[Max];
Scanner functionNum=new Scanner(System.in);
Scanner sc=new Scanner(System.in);
String id;
while(true){
{
System.out.println("请输入你的操作:");
System.out.println("1.登记学生信息");
System.out.println("2.显示所有学生信息");
System.out.println("3.根据学号查询学生信息");
System.out.println("4.根据学号插入学生信息");
System.out.println("5.根据学号修改学生信息");
System.out.println("6.根据学号删除学生信息");
System.out.println("7.根据要求排序");
System.out.println("0.退出系统");
}//菜单
boolean flag=false;
switch(functionNum.nextInt())
{
case 1:
System.out.print("请输入需要添加的学生个数:");
int num=sc.nextInt();
for (int i=0;i<num;i++){
stus[stuNum]=new Student();
while (true){
System.out.println("请输入学生的学号:");
id = sc.next();
for (int j = 0; j < stuNum; j++) {
if (id.equals(stus[j].id)) {
System.out.println("学号重复,请重新输入");
flag = true;
break;
}
}
if (flag) {
flag = false;
continue;
}
break;
}
stus[stuNum].id=id;
System.out.println("请输入学生的姓名:");
stus[stuNum].name=sc.next();
System.out.println("请输入学生的语文成绩:");
stus[stuNum].score.chinese=sc.nextInt();
System.out.println("请输入学生的数学成绩:");
stus[stuNum].score.math=sc.nextInt();
System.out.println("请输入学生的英语成绩:");
stus[stuNum].score.english=sc.nextInt();
stus[stuNum].score.total=stus[stuNum].score.chinese+stus[stuNum].score.math+stus[stuNum].score.english;
stuNum++;

}
break;
case 2://显示所有学生信息
System.out.println("——————————");
for (int i = 0; i < stuNum; i++) {
if (stus[i] != null) {
stus[i].showStudent();
System.out.println("——————————");
}
}
break;
case 3://根据学号查询学生信息
System.out.print("请输入需要查询的学生学号:");
id=sc.next();
for (int i = 0; i < stuNum; i++) {
if (stus[i] != null) {
if(id.equals(stus[i].id)){
stus[i].showStudent();
}
else if (i==stuNum-1){
System.out.println("没有找到该学生");
}
}
}
break;
case 4://根据学号插入学生信息
while (true){
System.out.println("请输入需要插入的学生学号:");
id = sc.next();
for (int j = 0; j < stuNum; j++) {
if (stus[j] != null) {
if (id.equals(stus[j].id)) {
System.out.println("学号重复,请重新输入");
flag = true;
break;
}
}
}
if (flag) {
flag = false;
continue;
}
break;
}
//遍历所有学生信息
for (int j = 0; j < stuNum; j++) {
stus[j].showStudent();
}
System.out.print("请选择在学号为xx的学生前面插入学生信息:");
String insertId=sc.next();
//寻找插入位置
for (int j = 0; j < stuNum; j++) {
if (stus[j] != null) {
if (insertId.equals(stus[j].id)) {
stus[stuNum] = new Student();
stus[stuNum].id = id;
System.out.println("请输入学生的姓名:");
stus[stuNum].name = sc.next();
System.out.println("请输入学生的语文成绩:");
stus[stuNum].score.chinese = sc.nextInt();
System.out.println("请输入学生的数学成绩:");
stus[stuNum].score.math = sc.nextInt();
System.out.println("请输入学生的英语成绩:");
stus[stuNum].score.english = sc.nextInt();
stus[stuNum].score.total = stus[stuNum].score.chinese + stus[stuNum].score.math + stus[stuNum].score.english;
stuNum++;
for (int k = stuNum - 1; k > j; k--) {
switchStudent(stus[k], stus[k - 1]);
}
break;
}
}
}
//遍历所有学生信息
for (int j = 0; j < stuNum; j++) {
stus[j].showStudent();
}
break;
case 5:
System.out.print("请输入需要修改的学生学号:");
id=sc.next();
for (int i = 0; i < stuNum; i++) {
if (stus[i] != null) {
if (id.equals(stus[i].id)) {
stus[i].showStudent();
System.out.println("请输入修改后的学生姓名:");
stus[i].name = sc.next();
System.out.println("请输入修改后的学生语文成绩:");
stus[i].score.chinese = sc.nextInt();
System.out.println("请输入修改后的学生数学成绩:");
stus[i].score.math = sc.nextInt();
System.out.println("请输入修改后的学生英语成绩:");
stus[i].score.english = sc.nextInt();
stus[i].score.total = stus[i].score.chinese + stus[i].score.math + stus[i].score.english;
break;
} else if (i == stuNum - 1) {
System.out.println("没有找到该学生!");
}
}
}
break;
case 6:
System.out.print("请输入需要删除的学生学号:");
id=sc.next();
for (int i = 0; i < stuNum; i++) {
if (stus[i] != null){
if (id.equals(stus[i].id)) {
for (int j = i; j < stuNum - 1; j++) {
switchStudent(stus[j], stus[j + 1]);
}
stus[stuNum - 1] = null;
stuNum--;
break;
} else if (i == stuNum - 1) {
System.out.println("没有找到该学生!");
}
}
}
break;
case 7:
System.out.println("1.按登记排序");
System.out.println("2.按学号升序排序");
System.out.println("3.按语文成绩降序排序");
System.out.println("4.按数学成绩降序排序");
System.out.println("5.按英语成绩降序排序");
System.out.println("6.按总成绩降序排序");
System.out.println("请选择排序方式:");
int sort=sc.nextInt();
//复制一份数组
Student[] stus1=new Student[stuNum];
for (int i = 0; i < stuNum; i++) {
stus1[i]=stus[i];
}
sortStudent2(stus1,sort);
System.out.println("排序成功!");
//输出排序后的学生信息
System.out.println("——————————");
for (int i = 0; i < stuNum; i++) {
stus1[i].showStudent();
System.out.println("——————————");
}
break;
case 0:
System.out.println("谢谢使用学生管理系统!");
System.exit(0);
break;
default:
System.out.println("输入错误,请重新输入");
}
}
}
public static void sortStudent2(Student[] stus,int choice){
switch (choice){
case 1:
break;
case 2:
for (int i = 0; i < stuNum; i++) {
for (int j = 0; j < stuNum-i-1; j++) {
if(stus[j].id.compareTo(stus[j+1].id)>0){
Student temp=stus[j];
stus[j]=stus[j+1];
stus[j+1]=temp;
}
}
}
break;
case 3:
for (int i = 0; i < stuNum; i++) {
for (int j = 0; j < stuNum-i-1; j++) {
if(stus[j].score.chinese<stus[j+1].score.chinese){
Student temp=stus[j];
stus[j]=stus[j+1];
stus[j+1]=temp;

}
}
}
break;
case 4:
for (int i = 0; i < stuNum; i++) {
for (int j = 0; j < stuNum-i-1; j++) {
if(stus[j].score.math<stus[j+1].score.math){
Student temp=stus[j];
stus[j]=stus[j+1];
stus[j+1]=temp;
}
}
}
break;
case 5:
for (int i = 0; i < stuNum; i++) {
for (int j = 0; j < stuNum-i-1; j++) {
if(stus[j].score.english<stus[j+1].score.english){
Student temp=stus[j];
stus[j]=stus[j+1];
stus[j+1]=temp;
}
}
}
break;
case 6:
for (int i = 0; i < stuNum; i++) {
for (int j = 0; j < stuNum-i-1; j++) {
if(stus[j].score.total<stus[j+1].score.total){
Student temp=stus[j];
stus[j]=stus[j+1];
stus[j+1]=temp;
}
}
}
break;
default:
System.out.println("输入错误!请重新输入!");
break;
}
}//排序
public static void switchStudent(Student stus1,Student stus2){
Student temp=new Student();
//交换id
temp.id=stus1.id;
stus1.id=stus2.id;
stus2.id=temp.id;
//交换name
temp.name=stus1.name;
stus1.name=stus2.name;
stus2.name=temp.name;
//交换数学成绩
temp.score.math=stus1.score.math;
stus1.score.math=stus2.score.math;
stus2.score.math=temp.score.math;
//交换语文成绩
temp.score.chinese=stus1.score.chinese;
stus1.score.chinese=stus2.score.chinese;
stus2.score.chinese=temp.score.chinese;
//交换英语成绩
temp.score.english=stus1.score.english;
stus1.score.english=stus2.score.english;
stus2.score.english=temp.score.english;
//交换总成绩
temp.score.total=stus1.score.total;
stus1.score.total=stus2.score.total;
stus2.score.total=temp.score.total;
}//交换学生信息
}

三、程序运行截图

1.菜单

菜单

2.学生登记系统

登记

3.显示所有学生信息

显示

4.根据学号查询学生信息

查询

5.根据学号插入学生信息

插入

6.根据学号修改学生信息

修改
修改后

7.根据学号删除学生信息

删除

8.根据要求排序

排序

9.退出系统

退出

作业总结

所用知识点

  • 类,成员,方法
  • 数组(类数组)
  • Scanner接口
  • 其他基础知识

以上就是我的java作业啦!