这是我第一次,搞这种近乎于现实的学生管理系统,基本功能都实现了,做了我六个小时,昨天下午六点,跟着EDG敲了一路代码,EDG打比赛,我打代码,太燃了,EDG夺冠,EDG牛逼!!!!

全校都在高呼EDG牛逼!

来,接下来我们进入正题!

这个系统基本模拟了一个真正学生管理系统的基本功能,我写了六个小时,改bug改了两个小时,除了还剩下一些输入不合规范还有一些友好的界面问题,bug都已经消除干净,毕竟我又不是真正要卖出去,所以这些,只是做个练习,我就懒得改剩下那些bug了,都很简单不费事.

接下来看结果截图

以上所有功能均可以实现,看着比我想得困难许多,我一开始以为只需要两个小时的,是我太天真了,第一次搞这个,这种不再简陋的模拟.

接下来,请看代码,实现的代码:

package per.llldf.lx;public class Student {private String studNum;private String stuName;private float math;private float chinese;public Student() {}public Student(String studNum, String stuName) {this.setStudNum(studNum);this.setStuName(stuName);this.setMath(0.0f);this.setChinese(0.0f);}public String getStudNum() {return studNum;}public void setStudNum(String studNum) {this.studNum = studNum;}public String getStuName() {return stuName;}public void setStuName(String stuName) {this.stuName = stuName;}public float getMath() {return math;}public void setMath(float math) {this.math = math;}public float getChinese() {return chinese;}public void setChinese(float chinese) {this.chinese = chinese;}@Overridepublic String toString() {return "学生信息: [学号:" + studNum + ", 学生姓名" + stuName + "]";}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + Float.floatToIntBits(chinese);result = prime * result + Float.floatToIntBits(math);result = prime * result + ((stuName == null) ? 0 : stuName.hashCode());result = prime * result + ((studNum == null) ? 0 : studNum.hashCode());return result;}@Overridepublic boolean equals(Object obj) {if (obj == this)return true;if (obj.getClass() == Student.class) {Student stu0 = (Student) obj;return (stu0.getStudNum() == this.getStudNum() && stu0.getStuName() == this.getStuName()&& stu0.getMath() == this.getMath() && stu0.getChinese() == this.getChinese());}return false;}
}
package per.llldf.lx;import java.util.ArrayList;
import java.util.List;public class Class {private String classId;private String className;List<Student> stuList;public Class() {}public Class(String classId, String className) {this.setClassId(classId);this.setClassName(className);stuList = new ArrayList<Student>();}public String getClassId() {return classId;}public void setClassId(String classId) {this.classId = classId;}public String getClassName() {return className;}public void setClassName(String className) {this.className = className;}// 添加学生到班级public void addStudent(Student stu) {boolean flag = false;for (Student stu0 : stuList)if (stu.equals(stu0)) {flag = true;break;}if (flag)System.out.println("请不要重复添加学生!");elsestuList.add(stu);}// 通过学号查询学生在班级中是否存在public Student searchStudentByNum(String stuNum) {Student stu00 = null;for (Student stu0 : stuList)if (stu0.getStudNum().equals(stuNum)) {stu00 = stu0;}return stu00;}// 输入班级学生的语文成绩public void insertChineseScore(String stuNum, float score) {Student stu0 = null;stu0 = this.searchStudentByNum(stuNum);stu0.setChinese(score);}// 输入班级学生的数学成绩public void insertMathScore(String stuNum, float score) {Student stu0 = null;stu0 = this.searchStudentByNum(stuNum);stu0.setMath(score);}// 删除学生信息public void deleteStudent(String stuNum) {Student stu0 = this.searchStudentByNum(stuNum);if (stu0 != null)this.stuList.remove(stu0);elseSystem.out.println("抱歉该学生信息未被记录!");}// 显示所有学生的信息(包括学号和姓名)public void displayAllStudent() {boolean flag = true;for (Student stu0 : stuList) {flag = false;System.out.println(stu0);}if (flag)System.out.println("目前没有任何学生!");}@Overridepublic String toString() {return "班级信息: [班级编号:" + classId + ", 班级名称:" + className + "]";}}
package per.llldf.lx;import java.util.*;
import java.util.Map.Entry;public class School {Map<String, Class> schoolMap = null;public School() {schoolMap = new HashMap<>();}// 添加班级public void addClass(Class class0) {Scanner sc = new Scanner(System.in);boolean flag = false;for (String className000 : schoolMap.keySet()) {Class class00 = schoolMap.get(className000);if (class0.getClassId().equals(class00.getClassId())) {System.out.println("违规操作!!!");return;}if (class0.getClassName().equals(class00.getClassId()))flag = true;if (class0.getClassId().equals(class00.getClassName()))flag = true;}if (schoolMap.containsKey(class0.getClassName())) {System.out.println("该班级已存在!");return;}if (flag == true) {System.out.println("是否继续进行操作!(0/1)");int i = sc.nextInt();if (i == 1)flag = false;}if (flag == true) {System.out.println("违规操作!");return;}schoolMap.put(class0.getClassName(), class0);}// 删除班级public void deleteClass(Class class0) {if (schoolMap.containsKey(class0.getClassName()) && !(class0.getClassName().equals("主学生列表")))schoolMap.remove(class0.getClassName());elseSystem.out.println("抱歉,做不到!");}// 通过班级名称查询班级public Class searchByName(String className) {Class class0 = null;Set<String> classNameSet = schoolMap.keySet();for (String strName : classNameSet) {if (strName.equals(className)) {class0 = schoolMap.get(className);return class0;}}System.out.println("抱歉,这个班级被外星人拐没了!");return class0;}// 对各班语文成绩按平均分进行由大到小排序public void sortChineseByAverage() {Map<String, Float> scoreMap = new HashMap<>();Set<String> scoreSet = schoolMap.keySet();for (String className : scoreSet) {if (className.equals("主学生列表"))continue;float score = 0.0f;float average = 0.0f;Class class0 = this.searchByName(className);for (Student stu0 : class0.stuList) {score += stu0.getChinese();}average = score / class0.stuList.size();scoreMap.put(className, average);}List<Map.Entry<String, Float>> ln = new ArrayList<>(scoreMap.entrySet());Collections.sort(ln, new Comparator<Map.Entry<String, Float>>() {public int compare(Entry<String, Float> o1, Entry<String, Float> o2) {return o2.getValue().compareTo(o1.getValue());}});System.out.println("排序后的数据为:");for (Map.Entry<String, Float> nes : ln)System.out.println(nes.getKey() + "的平均分:" + nes.getValue());}// 对各班数学成绩按平均分进行由大到小排序public void sortMathByAverage() {Map<String, Float> scoreMap = new HashMap<>();Set<String> scoreSet = schoolMap.keySet();for (String className : scoreSet) {if (className.equals("主学生列表"))continue;Class class0 = this.searchByName(className);float score = 0.0f, average = 0.0f;for (Student stu0 : class0.stuList) {score += stu0.getMath();}average = score / class0.stuList.size();scoreMap.put(className, average);}List<Map.Entry<String, Float>> ln = new ArrayList<>(scoreMap.entrySet());Collections.sort(ln, new Comparator<Map.Entry<String, Float>>() {public int compare(Entry<String, Float> o1, Entry<String, Float> o2) {return o2.getValue().compareTo(o1.getValue());}});System.out.println("排序后的数据为:");for (Map.Entry<String, Float> nes : ln)System.out.println(nes.getKey() + "的平均分:" + nes.getValue());}// 显示所有班级名称public void displayClassName() {boolean flag = true;for (Class class0 : schoolMap.values()) {flag = false;if (class0.getClassName().equals("主学生列表"))continue;System.out.println(class0.getClassName());}if (flag)System.out.println("目前没有班级!");}
}
package per.llldf.lx;import java.util.Scanner;public class TestDemo {public void mainMenu() {System.out.println("***************************************************");System.out.println("                **主菜单**");System.out.println("                1--班级管理");System.out.println("                2--学校管理");System.out.println("                3--退出");System.out.println("***************************************************");}public void schoolMenu() {System.out.println("***************************************************");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("                9--返回上一级菜单");System.out.println("***************************************************");}public void classMenu() {System.out.println("***************************************************");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("                9--返回上一级菜单");System.out.println("***************************************************");}public void testClass(Class mainClass, School school) {Scanner sc = new Scanner(System.in);while (true) {classMenu();System.out.println("请输入对应数字进行选择:");int input = sc.nextInt();if (input == 9)return;switch (input) {case 1:System.out.println("添加学生信息到主学生列表!");System.out.println("请输入学生信息!");System.out.println("请输入学生学号:");String stuNum0 = sc.next();System.out.println("请输入学生姓名:");String stuName = sc.next();Student stu1 = new Student(stuNum0, stuName);mainClass.addStudent(stu1);break;case 2:System.out.println("添加学生信息到普通班级!");System.out.println("请输入普通班级的名称:");String className = sc.next();Class class4 = school.searchByName(className);if (class4 == null)break;System.out.println("请输入要添加的学生的学号:");String stuNum1 = sc.next();Student stu2 = mainClass.searchStudentByNum(stuNum1);if (stu2 == null)break;class4.addStudent(stu2);System.out.println("添加成功!");break;case 3:System.out.println("通过学号查询学生信息!");System.out.println("请输入要查询的学生的学号!");String stuNum2 = sc.next();Student stu3 = mainClass.searchStudentByNum(stuNum2);if (stu3 == null) {System.out.println("查无此人!");break;}Class class5 = null;for (Class class00 : school.schoolMap.values()) {if (class00.getClassName().equals("主学生列表"))continue;if (class00.searchStudentByNum(stuNum2) != null)class5 = class00;}if (class5 == null)System.out.println(stu3);else {System.out.println(class5);System.out.println(stu3);}break;case 4:System.out.println("输入班级的语文成绩!");boolean flag = true;for (Class class6 : school.schoolMap.values()) {System.out.println(class6);for (Student stu4 : class6.stuList) {flag = false;System.out.println(stu4);System.out.println("请输入" + stu4.getStuName() + "语文成绩:");float score0 = sc.nextFloat();stu4.setChinese(score0);}}if (flag)System.out.println("目前没有班级,或者班级内没有分配学生!");break;case 5:System.out.println("输入班级的数学成绩!");boolean flag1 = true;for (Class class6 : school.schoolMap.values())for (Student stu4 : class6.stuList) {flag1 = false;System.out.println(stu4);System.out.println("请输入" + stu4.getStuName() + "数学成绩:");float score1 = sc.nextFloat();stu4.setChinese(score1);}if (flag1)System.out.println("目前没有班级,或者班级内没有分配学生!");break;case 6:try {System.out.println("删除学生信息");System.out.println("请输入想要删除学生的学号:");String stuNum8 = sc.next();Student stu8;stu8 = mainClass.searchStudentByNum(stuNum8);if (stu8 == null) {System.out.println("查无此人!");break;}Class class8 = null;for (Class class00 : school.schoolMap.values()) {if (class00.getClassName().equals("主学生列表"))continue;if (class00.searchStudentByNum(stuNum8) != null)class8 = class00;}if (class8 != null)class8.deleteStudent(stuNum8);mainClass.deleteStudent(stuNum8);} catch (java.lang.NullPointerException e) {e.printStackTrace();}break;case 7:System.out.println("显示所有学生信息");mainClass.displayAllStudent();break;default:System.out.println("请输入正确的数字!");break;}}}public void TestSchool(School school) {Scanner sc = new Scanner(System.in);while (true) {schoolMenu();System.out.println("请输入数字进行对应的选择:");int input = sc.nextInt();if (input == 9)return;switch (input) {case 1:System.out.println("创建班级!");System.out.println("请输入要创建的班级的Id:");String classId = sc.next();System.out.println("请输入要创建的班级的名称:");String className = sc.next();Class class1 = new Class(classId, className);school.addClass(class1);break;case 2:System.out.println("删除班级!");System.out.println("请输入要删除的班级的名称");String className0 = sc.next();Class class2 = null;class2 = school.searchByName(className0);if (class2 != null)school.deleteClass(class2);elseSystem.out.println("查无此班级!");break;case 3:System.out.println("通过班级名称查询班级信息");System.out.println("请输入班级名称:");String className1 = sc.next();Class class3 = school.searchByName(className1);if (class3 == null) {System.out.println("查询不到!");break;}System.out.println(class3);class3.displayAllStudent();break;case 4:System.out.println("各班语文成绩平均分由大到小排序!");school.sortChineseByAverage();break;case 5:System.out.println("各班数学成绩平均分由大到小排序!");school.sortMathByAverage();break;case 6:school.displayClassName();break;default:System.out.println("请输入正确的数字!");break;}}}public static void main(String[] args) {School school = new School();Class mainClass = new Class("C00", "主学生列表");Scanner sc = new Scanner(System.in);TestDemo td = new TestDemo();while (true) {td.mainMenu();System.out.println("请输入对应选择的数字!");int input = sc.nextInt();if (input == 3)break;switch (input) {case 1:System.out.println("班级管理!");td.testClass(mainClass, school);break;case 2:System.out.println("学校管理");td.TestSchool(school);break;default:System.out.println("请输入正确的数字!");break;}}System.out.println("退出系统!");}}

真的是满满的成就感,加上EDG夺冠,太热血了!!!!

虽然我不打lol,但是我室友都挺热热线,完全给我感染了,EDG牛逼!!!

继续加油干!!!

java模拟真正学生管理系统相关推荐

  1. 第83节:Java中的学生管理系统分页功能

    第83节:Java中的学生管理系统分页功能 分页功能一般可以做成两种,一种是物理分页,另一种是逻辑分页.这两种功能是有各自的特点的,物理分页是查询的时候,对数据库进行访问,只是查一页数据就进行返回,其 ...

  2. java计算机毕业设计学生管理系统MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计学生管理系统MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计学生管理系统MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: 项目架构:B/S架构 ...

  3. java毕业设计高校学生管理系统mybatis+源码+调试部署+系统+数据库+lw

    java毕业设计高校学生管理系统mybatis+源码+调试部署+系统+数据库+lw java毕业设计高校学生管理系统mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目架构:B/S ...

  4. 【java学习】学生管理系统项目实现(四)

    文章目录 前言 一.学生管理系统的实现准备 二.ArrayList的使用 三.学生管理系统的实现 1,构造方法的实现 2,主界面的实现 3,添加学生的方法实现 实现思路 4,删除学生的方法实现 实现思 ...

  5. Java+MySQL实现学生管理系统

    文章目录 需求分析 设计思路 具体实现 具体测试展示 需求分析 Java课程设计:实现一个学生管理系统,方便老师对学生信息进行统计管理 用户登录功能 学生管理功能 完善界面交互 数据持久可靠 设计思路 ...

  6. (Java)类比学生管理系统做一个游戏管理系统(不含JDBC)

    游戏管理系统类比学生管理系统主要功能是对游戏人物的信息的添加.查询.删除.修改 1.创建项目 2.创建一个具体操作信息的包并创建用来保存游戏人物信息的java类这里是[DNF] 2.1创建用来保存游戏 ...

  7. 用java做一个管理系统难吗_想知道怎样用Java做出一个学生管理系统,课一直听得一知半解。现在考试啥都不会?...

    我觉得这个几天就能够做完,要不了半个月的吧 除非是JavaWEB版比较费时间君墨:javase到mysql综合学生管理系统​zhuanlan.zhihu.com 部分代码实现: public stat ...

  8. 【Java】升级版学生管理系统项目

    目录 一.前言 二.学生管理系统主要功能 在学生类下 在学生总部类下: main方法: 登录密码验证: 打印菜单: 增加学生信息: 查看学生信息: 删除学生信息: 修改学生信息: 查找学生信息: 代码 ...

  9. 初学Java Web(9)——学生管理系统(简易版)总结

    技术准备 这个项目是自己用于巩固 J2EE 相关知识的练手项目,非常简单,但是相关的功能却非常实用,所以在这里分享一下 为了完成这个项目,需要掌握如下技术: Java 基础知识 前端: HTML, C ...

最新文章

  1. java实现多线程的方式并源码分析
  2. gorm一对一 一对多 多对多查询案例
  3. 论文浅尝 | 基于常识知识图谱感知和图注意力机制的对话生成
  4. mysql mybatis 工具类_我肝了一个星期,为你们整理出了mybatis程序配置教程
  5. 关于 vmware虚拟机的一些问题及解决办法备忘
  6. mysql 9_mysql-9索引
  7. 小程序开发好学吗?需要掌握哪些知识技能?
  8. CSS一行显示,显示不下的用省略号显示
  9. 如何做好项目的需求与业务调研?
  10. JVM 图形化监控工具
  11. POI导出echarts统计报表到Excel
  12. IDEA左侧,按照文件夹排序
  13. 因子主成分分析,因子载荷矩阵、因子解释度 因子得分-在基金净值和主要金融因子分析上的应用
  14. 进度条Progress的用法介绍
  15. 这个是具体的农历年份和期的计算等等,还显示国际时
  16. 自己动手编写CSDN博客备份工具-blogspider之源码分析(1)
  17. VUE中导出Excel功能的实现
  18. 怎么可以修改pr基本图形中的文字_不会给视频添加字幕?这里可以解决(附工具下载)...
  19. 常用的华为路由器命令
  20. 1059604-93-1,m-PEG13-Ms甲磺酸基是亲核取代反应的良好离开基

热门文章

  1. 获取鼠标在盒子里的位置
  2. 游戏开发中的人工智能(六):基本路径寻找及航点应用
  3. Think Pad 前置摄像头不能打开及其解决
  4. vue封装一个日历组件
  5. AES密码加密(vue)
  6. 数组——洛谷#P1428 小鱼比可爱(Python实现)
  7. 本实战将实现根据当天的总步数,计算消耗的热量值。由于行走速度不同,计算卡路里的消耗也不同,这里假设走一步消耗28卡路里。实现效果如图4所示
  8. 环信大学:业务互联网化与客户中心韧性服务 —— 浅谈12306十年填坑路对客户中心智能化变革的启示
  9. 一二三四五六七八九十
  10. 将excel按照某一列拆分成多个文件