以下记录来自一个菜鸟,请大佬们见谅

2019.4.6 16:49,已经在电脑前坐了将近五个小时的我将个人第一个java优化系统调试完成,五个小时,只是将已经写好的系统进行优化,起初开始优化的时候觉得这简直是个无底洞,要考虑的东西太多太细(忽然想起一位java老师曾说过,“永远不要相信你的用户都是正常人”,言外之意就是要考虑到用户各种各样稀奇古怪的操作),而且不同类之间的分工很难协调,初步估算工程量比我原本写出系统的量还大,在这五个小时大脑周围一直有几个声音围着我转:“睡一会吧”、“去##的**系统”、“这##是人干的事吗”。但当最后一个javac stuSystem.java后没有报错,所有的一切都变成了一个声音:“值得!”

以下附上(1)第一次实现功能的代码
(2)优化后的代码

(1)

import java.util.Scanner;
class  Student {String num;String name;String gender;byte age;byte grade;}class main{public static void main(String[] args ){System.out.println("欢迎使用学生信息管理系统");Student stu[] =  new Student[10];int dataIndex = 0;Scanner scanner = new Scanner(System.in);while(true){System.out.println("请选择操作");System.out.println("0:退出系统");System.out.println("1:输入学生信息");System.out.println("2:查询学生信息");System.out.println("3:修改学生信息");System.out.println("4:删除学生信息");//int opIndex = scan.nextInt();int opIndex = scanner.nextInt();switch(opIndex){case 0:System.exit(0);///退出系统case 1:Scanner scan = new Scanner(System.in);Student stud = new Student();System.out.println("请输入学生的学号");stud.num = scan.next() ;///重点:scanner 的使用System.out.println("请输入学生的姓名");stud.name = scan.next() ;///加括号System.out.println("请输入学生的性别");stud.gender = scan.next() ;System.out.println("请输入学生的年龄");stud.age = scan.nextByte() ;System.out.println("请输入学生的成绩");stud.grade = scan.nextByte() ;stu[dataIndex] = stud;dataIndex++; break;case 2:System.out.println("请输入要查询学生的姓名");Scanner sc = new Scanner(System.in);String nam = sc.next();int numb = -1;for(int i = 0; i <dataIndex ; i++){if(stu[i].name .equals(nam)){numb = i;}}if(numb >=0){System.out.println("该学生的学号为:" + stu[numb].num);System.out.println("该学生的性别为:" + stu[numb].gender);    System.out.println("该学生的年龄为:" + stu[numb].age);System.out.println("该学生的成绩为:" + stu[numb].grade);}else{System.out.println("不存在该学生!!");}break;case 3:System.out.println("请输入要修改信息学生的姓名");Scanner sc1 = new Scanner(System.in);//sc不能重复定义String nam1 = sc1.next();///nam不能重复定义int numb1 = -1;for(int i = 0; i <dataIndex ; i++){if(stu[i].name .equals(nam1)){numb1 = i;}      }if(numb1 >= 0){System.out.println("请输入学生的学号");stu[numb1].num = sc1.next() ;System.out.println("请输入学生的姓名");stu[numb1].name = sc1.next() ;System.out.println("请输入学生的性别");stu[numb1].gender = sc1.next() ;System.out.println("请输入学生的年龄");stu[numb1].age = sc1.nextByte() ;System.out.println("请输入学生的成绩");stu[numb1].grade = sc1.nextByte() ;}else{System.out.println("不存在该学生!!");}break;case 4:System.out.println("请输入要删除信息学生的姓名");Scanner sc2 = new Scanner(System.in);String nam2 = sc2.next();int numb2 = -1;for(int i = 0; i <dataIndex ; i++){if(stu[i].name .equals(nam2)){numb2 = i;}   if(numb2 >= 0){for(i= numb2;i<dataIndex;i++){stu[i] = stu[i+1];}dataIndex --;}else{System.out.println("不存在该学生!!");}}}///数组的增长if(dataIndex == stu.length){Student newstu[] = new Student[stu.length + stu.length>>1];for(int i = 0;i < stu.length ;i++){newstu[i] = stu[i]; }stu = newstu;}}}
}///成员变量和局部变量/*****************************************
设计思路
1、输入:
(1)无限循环输入
(2)根据用户操作停止输入
(3)输入时先输入到一个对象中然后赋值给数组
(4)注意要用一个index来记录该输入第几个数组了
(5)用函数来进行输入等操作
输入时在主函数里定义一个成员变量
2、查询:
(1)遍历数组再遍历对象3、修改学生信息
(1)4、删除学生信息
(1)进行覆盖问题:
(1)其他类里的局部变量怎么引入到main里?
是不是可以直接在其他class里给main里的变量赋值?否*****************************************/

(2)

import java.util.Scanner;class Student{Student(){}Student (String stuNo, String stuName, String gender, byte age, int score){this.stuNo   = stuNo;this.stuName = stuName;this.gender  = gender;this.age     =  age;this.score   =  score;}String stuNo;String stuName;String gender;byte   age;int    score;
}class StuData{Student stuArray[] = new Student[10];int dataindex = 0;void insertStu(Student stu){if(dataindex == stuArray.length){Student newArray[] = new Student[stuArray.length + (stuArray.length >> 1)];for(int i = 0; i<dataindex; i++){newArray[i] = stuArray[i];}stuArray = newArray;///赋值时不用加[]}stuArray[dataindex] = stu;dataindex++;}Student checkStuNo(String stuNo){for(int i = 0; i < dataindex; i++){if(stuArray[i].stuNo.equals(stuNo)) ///.equals{return stuArray[i]; }}return null;}void delateStu(String stuNo){///错误:找不到符号 有可能是大小写的问题,只要双击不论大小写只要拼写相同就变绿boolean flag = false;for(int i = 0; i < dataindex; i++){if (stuArray[i].stuNo.equals(stuNo)){stuArray[i] = stuArray[i + 1];flag = true;}}if(flag){dataindex--;}}void updateStu(Student stu){for(int i = 0; i < dataindex; i++){if(stuArray[i].stuNo.equals(stu.stuNo)){stuArray[i] = stu;}}}void printStu(Student stu){System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");System.out.print("学生编号 " + stu.stuNo + "  ");System.out.print("学生姓名 " + stu.stuName + "  ");System.out.print("学生性别 " + stu.gender + "  ");System.out.print("学生年龄 " + stu.age + "  ");System.out.println("学生成绩 " + stu.score + "  ");System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");}void printAllstuInf(){for(int i  = 0; i < dataindex; i++){printStu(stuArray[i]);}}
}class StuSys{StuData stud = new StuData();void insertStu(Scanner scanner){System.out.println("请输入学生的学号 姓名 性别 年龄 成绩(输入出用空格分开):");String stuNo    = scanner.next();String stuName  = scanner.next();String gender   = scanner.next();byte   age       = scanner.nextByte();int    score  = scanner.nextInt();int    i       = 0;if(stud.checkStuNo(stuNo) == null){Student stu = new Student(stuNo, stuName, gender, age, score);stud.insertStu(stu);System.out.println("学生信息添加成功!!!");}else{System.out.println("您输入的学生编号已存在,请选择下一步操作");System.out.println("1、继续添加  2、退出系统");i = scanner.nextInt();if(i == 1){insertStu(scanner); ///递归}else if(i == 2){System.exit(0);}else{System.out.println("您输入的数据不合规!!!");}}}void delateStu(Scanner scan){int i = 0;///可以重复使用i吗System.out.println("请输入要删除学生的编号:");String stuNo = scan.next();if(stud.checkStuNo(stuNo) != null){stud.delateStu(stuNo);System.out.println("学成信息删除成功!!!");}else {System.out.println("您输入的学号不存在,请选择下一步操作");System.out.println("1、继续删除 2、退出系统");if(i == 1){delateStu(scan); }else if(i == 2) {System.exit(0);}else{System.out.println("您输入的数据不合规!!!");}}}void updateStu(Scanner scanner){int i = 0;System.out.println("请输入要修改的学生的编号:");String stuNo = scanner.next();Student stu = new Student();///非要等与null吗??调试后的总结:1不能直接= new student 因为构造方法里没有student() (无参数的构造方法)///解决方法:加一个无参的构造方法if(stud.checkStuNo(stuNo) != null){System.out.println("请输入学生的姓名 性别 年龄 成绩 (输入时用空格分开)");stu.stuNo     = stuNo;stu.stuName  = scanner.next();stu.gender   = scanner.next();stu.age       = scanner.nextByte();stu.score     = scanner.nextInt();stud.updateStu(stu);System.out.println("学生信息修改成功!!!");}else{System.out.println("您输入的学生编号不存在,请选择下一步操作");System.out.println("1、继续修改  2、退出系统");i = scanner.nextInt();if(i == 1){insertStu(scanner); }else if(i == 2){System.exit(0);}else{System.out.println("您输入的数据不合规!!!");}}}void showStuInfo(Scanner scanner){int i = 0;Student stu = new Student();System.out.println("请输入查看学生的编号");String stuNo = scanner.next();if((stu = stud.checkStuNo(stuNo)) != null){stud.printStu(stu);}else{System.out.println("您输入的学号不存在,请选择下一步操作");System.out.println("1、继续查看 2、退出系统");i = scanner.nextInt();if(i == 1){showStuInfo(scanner); }else if(i == 2){System.exit(0);}else{System.out.println("您输入的数据不合规!!!");}}}void showAllStuInfo(){stud.printAllstuInf();}
}class Main{public static void main(String[] strs){System.out.println("欢迎使用tyrantfor的学生管理系统");Scanner scan = new Scanner(System.in);Main main = new Main();StuSys s1 = new StuSys();while(true){main.showMenu();switch(scan.nextInt()){case 0:System.exit(0);case 1:s1.insertStu(scan);break;case 2:s1.delateStu(scan);break;case 3:s1.updateStu(scan);break;case 4:s1.showStuInfo(scan);break;case 5:s1.showAllStuInfo();break;default:System.out.println("输入数据不合规!!!");}}}void showMenu(){System.out.println("请选择操作:\n\n");System.out.println("1:增加学生信息");System.out.println("2:删除学生信息");System.out.println("3:修改学生信息");System.out.println("4:根据学号查看学生信息");System.out.println("5:查看所有学生信息");System.out.println("0:退出系统");}
}

java学生管理系统相关推荐

  1. java学生管理系统(简易)(三)---教师端的登录主页面

    教师端的登录界面就比较清晰了...可能就我自己认为,以为前面写的太乱了...蒙圈 // 学会了先布局,在完善部分代码,嘤嘤嘤...之前那个学生的感觉凉凉啊~ // 有些代码中可能有main函数,有些没 ...

  2. java考勤管理系统源码java学生考勤请假系统java学生考勤管理系统 java考勤系统java学生信息管理系统java学生管理系统

    java考勤管理系统源码java学生考勤请假系统java学生考勤管理系统 java考勤系统java学生信息管理系统java学生管理系统 public Swingtest002() {// 设置标题se ...

  3. 第一篇博客,java学生管理系统(挑战全网最全)

    java学生信息管理系统,(课设必备),附有源码和简版链接 博主虽然技术不高,但是系统写的真的是没话说,留着开学java课设用了. 直接转载链接了,查看系统入口 https://blog.csdn.n ...

  4. Java—学生管理系统使用文件永久存储

    学生管理系统 上一次使用的集合只能对学生信息进行临时存储,关闭程序时数据就会消失,这次新增了文件存储,达到对学生信息的永久记录,首先在上次代码的基础上,增加了两个方法,一个是从学生文件读取信息到集合中 ...

  5. java学生管理系统(swing) (没用数据库,附源码)

    如果有需要带数据库的,请小伙伴移步至:java+mysql学生管理系统(附源码,无套路) 事先声明: 程序简易,只是为了记录学习过程,大佬们勿喷,要实在忍不住,麻烦各位大佬轻点喷就是! 但是如果有任何 ...

  6. 基于IDEA的Java学生管理系统

    1.创建学生类 package studentManager;public class Student {//定义成员变量private String num;//学号private String n ...

  7. 【java项目学习笔记】Java学生管理系统(纯后端基础--增删改查)

    学生管理系统 在一所学校中,对学生人员流动的管理是很麻烦的,本案例要求编写一个学生管理系统,实现对学生信息的添加.删除.修改和查询功能.每个功能的具体要求如下: 系统的首页 用于显示系统所有的操作,并 ...

  8. java学生管理系统代码_java学生信息管理系统(附源码)

    一:   介绍 1:实现登录界面 2:实现主界面 有两种操作 一种是按钮操作  另外一种是SQL语句. 3:连接SQL server 2008 数据库 用到的软件及环境SQLserver2008,ec ...

  9. Java 学生管理系统(详解)

    文章目录 学生类 main方法 首界面登录 功能选择界面 添加学生信息 删除学生信息 修改学生信息 查看学生信息 学号遍历 和 清空控制台方法 附:学生管理系统代码 Student .Java Mai ...

  10. java 学生管理系统

    此案例编写了一个学生管理系统,实现对学生的添加,删除,修改,和查询功能. 此案例分为Student与Test两类 Student类 1.此类定义了四个变量 2.首先创建空参数构造方法 3.再创建带有参 ...

最新文章

  1. 铁线蕨算法(Adiantum)为低端智能手机提供磁盘加密服务
  2. springcloud19---springCloudConfig
  3. javascript函数作用域与闭包
  4. 特征值和特征向量(Eigenvalues and Eigenvectors)
  5. [react] react16跟之前的版本生命周期有哪些变化?
  6. [react] 在JSX中如何写注释?
  7. pb自定义控件 事件_Android WebView与下拉刷新控件滑动冲突的解决方法
  8. Python 入门到精通(—)初识Python
  9. python零基础知识_python 零基础 基本知识
  10. java开发实战经典学习笔记第2部分
  11. informix和mysql对接_优化Informix数据库访问
  12. Linux 不间断后台执行进程
  13. C语言数据类型及typedef下的uint8_t / uint32_t
  14. 解决路由器接电信光猫win10出现ipv6不稳定的问题
  15. DAO:去中心化的新兴领导者
  16. 阿里云服务器 远程桌面连接 卡顿
  17. Java的长整型Long/long后面的数字什么情况下必须加L?
  18. Unlawfully wed 小小新娘 | 经济学人中英双语对照精读笔记
  19. 计算机网络(自顶向下)第四章部分答案
  20. JAVA 从原理到实现,制作license文件,可用于模块授权,程序授权等

热门文章

  1. HBuilderX报错:ESC[0;31m--> LibSass的二进制文件.....]
  2. AllWinner board 笔记
  3. ES6标准入门(阮一峰)-阅读记录与心得
  4. 关于美食html网页设计完整版,10个以美食为主题的网页设计案例
  5. 物理学报 LaTeX模板(自编)
  6. 多备份与Symantec NBU备份软件对比
  7. 全面质量管理体系方案
  8. 良心好用无功能限制、珍藏单文件版Windows录屏软件分享!
  9. MATLAB获取附加功能的方法
  10. 银河麒麟系统安装字体