使用JAVA开发学生管理系统
使用JAVA开发学生管理系统
前言 功能要求 功能浏览 代码提取
一:构建学生类
二:准备完整的学生信息
三:构建控制台菜单选项
四:读取文本中的信息
五:查找功能
六:插入功能
七:删除功能
八:切换用户功能
九:排序
十:退出功能
总结
前言
学校随堂练习要求开发学生管理系统,没事就用java开发了一套简单的程序。主要功能包含:切换用户,增加,插入,删除,修改等功能。本人小白,此篇博客仅供学习交流使用,如有不足,请大佬们指点。
功能要求
本次课设共有3个可选题目,每个学生选择其中一个作为此次程序设计的课设任务。1.顺序表的操作与实现——学生成绩管理系统难度系数:0.85(1)数据准备用记事本新建一个文本文件,文件名为:“班名+序号_stu.txt”,将至少10个学生的成绩信息输入到这个文件中,建议按如下形式存放。
(2)功能要求①创建顺序表。将文本文件中的学生成绩信息数据存储到顺序表中,并输出显示。②查找操作。根据学号、姓名、位置i或成绩进行查找并显示其对应信息。③插入操作。在第i条记录后插入1条新的记录,并显示所有信息。④删除操作。查找第i条记录,找到后删除该条记录,并显示所有信息。⑤更新操作。查找某个学生信息后,修改其相关数据。⑥排序操作。根据总分采用直接插入排序、希尔排序、冒泡排序、快速排序、选择排序等排序算法对学生进行排序(至少选3种排序方法)。
功能浏览
代码提取
一:构建学生类
package com.cowain.pojo; import java.io.Serializable; /** * @author: fxw */ public class Student implements Serializable , Comparable<Student> { //序号 private Integer studentSno; //学号 private Integer studentID; //姓名 private String studentName; //性别 private String studentSex; //专业 private String studentClass; //英语成绩 private Integer English; //数学成绩 private Integer Math; //计算机成绩 private Integer Computer; public Student() { } public Student(Integer studentSno, Integer studentID, String studentName, String studentSex, String studentClass, Integer english, Integer math, Integer computer) { this.studentSno = studentSno; this.studentID = studentID; this.studentName = studentName; this.studentSex = studentSex; this.studentClass = studentClass; English = english; Math = math; Computer = computer; } /** * toSting方法必须这样,方便后面截取以数组的形式进行存储 * @return 显示完整的学生对象 */ @Override public String toString() { return studentSno + studentID + studentName + studentSex + studentClass + English + Math + Computer; } public void setStudentSno(Integer studentSno) { this.studentSno = studentSno; } public void setStudentID(Integer studentID) { this.studentID = studentID; } public void setStudentName(String studentName) { this.studentName = studentName; } public void setStudentSex(String studentSex) { this.studentSex = studentSex; } public void setStudentClass(String studentClass) { this.studentClass = studentClass; } public void setEnglish(Integer english) { English = english; } public void setMath(Integer math) { Math = math; } public void setComputer(Integer computer) { Computer = computer; } public Integer getStudentSno() { return studentSno; } public Integer getStudentID() { return studentID; } public String getStudentName() { return studentName; } public String getStudentSex() { return studentSex; } public String getStudentClass() { return studentClass; } public Integer getEnglish() { return English; } public Integer getMath() { return Math; } public Integer getComputer() { return Computer; } @Override public int compareTo(Student o) { return this.getStudentSno()-o.getStudentSno()==0?this.getStudentID()-o.getStudentID():this.getStudentSno()-o.getStudentSno(); } }
二:准备完整的学生信息
1,20080010,丁勇,男,机械,78,63,73 3,20080012,冯连军,男,信息,80,58,63 5,20080014,郭瑞,男,化工,76,96,81 6,20080015,何超超,男,油工,70,91,78 7,20080016,胡伟,男,信息,66,59,79 8,20080017,黄明强,男,化工,75,77,76 9,20080018,于晓雯,女,英语,68,93,62 10,20080019,李成伟,男,信息,79,71,65
三:构建控制台菜单选项
public int showMenu1(){ 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("请输入你的选项:"+"\n"); int choose= scanner.nextInt(); return choose; } public int showMenu(){ 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.使用退出功能---------------"); System.out.println("请输入你的选项:"+"\n"); int choose= scanner.nextInt(); return choose; }
四:读取文本中的信息
//显示 public static void showStudentMessage() throws Exception { //创建字符缓冲输入流对象 BufferedReader br = new BufferedReader(new FileReader("D:\\javaTestProject\\WorkSpace\\StudentManageSystem\\studentMessage.txt")); //创建ArrayList集合对象 ArrayList<Student> array = new ArrayList<Student>(); //调用字符缓冲输入流对象的方法读数据 String line; while ((line = br.readLine()) != null) { String[] strArray = line.split(","); //创建学生对象 Student student = new Student(); //把字符串数组中的每一个元素取出来对应的赋值给学生对象的成员变量值 student.setStudentSno(Integer.parseInt(strArray[0])); student.setStudentID(Integer.parseInt(strArray[1])); student.setStudentName(strArray[2]); student.setStudentSex(strArray[3]); student.setStudentClass(strArray[4]); student.setEnglish(Integer.parseInt(strArray[5])); student.setMath(Integer.parseInt(strArray[6])); student.setComputer(Integer.parseInt(strArray[7])); array.add(student); } //释放资源 br.close(); //遍历集合 System.out.println("编号 学号 姓名 性别 系名 英语 数学 计算机 "); for (Student student : array) { System.out.println(student.getStudentSno() + " " + student.getStudentID() + " " + student.getStudentName() + " " + student.getStudentSex() + " " + student.getStudentClass() + " " + student.getEnglish() + " " + student.getMath() + " " + student.getComputer()); } }
五:查找功能
/** * 通过控制台录入的学号对文本中的信息进行遍历 * 找到并且将信息显示到控制台 */ public static void queryStudent(){ System.out.println("-------------.使用查找功能---------------"); System.out.println("请输入所所查询的学号:"+"\n"); int num=scanner.nextInt(); List<Student> list=null; try { list = testMethod.LoadMessage(); } catch (Exception e) { e.printStackTrace(); } System.out.println("编号 学号 姓名 性别 系名 英语 数学 计算机 "); for (Student student : list) { if (num==student.getStudentSno()){ System.out.println(student.getStudentSno()+" "+student.getStudentID()+" "+ student.getStudentName()+" "+student.getStudentSex()+" "+ student.getStudentClass()+" "+student.getEnglish()+" "+ student.getMath()+" "+student.getComputer()); } } }
六:插入功能
/** * 通过对键盘录入的信息 封装成Student对象 然后插入到集合中去 */ public static void insertStudent(){ System.out.println("-------------.使用插入功能---------------"); System.out.println("请输入插入学生的序号"); int studentSno=scanner.nextInt(); System.out.println("请输入插入学生的学号"); int studentID=scanner.nextInt(); System.out.println("请输入插入学生的姓名"); String studentName=scanner.next(); System.out.println("请输入插入学生的性别"); String studentSex=scanner.next(); System.out.println("请输入插入学生的专业"); String studentClass=scanner.next(); System.out.println("请输入插入学生的英语"); int English=scanner.nextInt(); System.out.println("请输入插入学生的数学"); int Math=scanner.nextInt(); System.out.println("请输入插入学生的计算机"); int computer=scanner.nextInt(); Student student=new Student(studentSno,studentID,studentName,studentSex,studentClass,English,Math,computer); try { testMethod.insertStudent(student); } catch (IOException e) { e.printStackTrace(); } } /** *调用插入功能 */ public static void insertStudent(Student student1) throws IOException { List<Student> studentList = new ArrayList<>(); Collections.addAll(studentList, student1); BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\javaTestProject\\WorkSpace\\StudentManageSystem\\studentMessage.txt", true)); for (Student student : studentList) { StringBuilder sb = new StringBuilder(); sb.append(student.getStudentSno()).append(",").append(student.getStudentID()).append(",").append(student.getStudentName()).append(",") .append(student.getStudentSex()).append(",").append(student.getStudentClass()).append(",") .append(student.getEnglish()).append(",").append(student.getMath()).append(",").append(student.getComputer()); bw.write(sb.toString()); bw.newLine(); bw.flush(); } bw.close(); }
七:删除功能
public static boolean deleteStudent(int num) { try { //创建字符缓冲输入流对象 BufferedReader br = new BufferedReader(new FileReader("D:\\javaTestProject\\WorkSpace\\StudentManageSystem\\studentMessage.txt")); ArrayList<Student> array = new ArrayList<>(); //调用字符缓冲输入流对象的方法读数据 String line; while ((line = br.readLine()) != null) { String[] strArray = line.split(","); //创建学生对象 Student student = new Student(); //把字符串数组中的每一个元素取出来对应的赋值给学生对象的成员变量值 student.setStudentSno(Integer.parseInt(strArray[0])); student.setStudentID(Integer.parseInt(strArray[1])); student.setStudentName(strArray[2]); student.setStudentSex(strArray[3]); student.setStudentClass(strArray[4]); student.setEnglish(Integer.parseInt(strArray[5])); student.setMath(Integer.parseInt(strArray[6])); student.setComputer(Integer.parseInt(strArray[7])); array.add(student); } br.close(); System.out.println(""); for (Student student : array) { if (num == (student.getStudentSno())) { array.remove(student); BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\javaTestProject\\WorkSpace\\StudentManageSystem\\studentMessage.txt", false)); bw.write("");//执行删除操作,写入空内容覆盖之前的内容 bw.close(); break; } } BufferedWriter bw = new BufferedWriter(new FileWriter("D:\\javaTestProject\\WorkSpace\\StudentManageSystem\\studentMessage.txt")); for (Student student : array) { StringBuilder sb = new StringBuilder(); sb.append(student.getStudentSno()).append(",").append(student.getStudentID()) .append(",").append(student.getStudentName()).append(",") .append(student.getStudentSex()).append(",").append(student.getStudentClass()) .append(",").append(student.getEnglish()).append(",").append(student.getMath()) .append(",").append(student.getComputer()); bw.write(sb.toString()); bw.newLine(); bw.flush(); } bw.close(); return true; } catch (IOException e) { e.printStackTrace(); } return false; }
八:切换用户功能
/** * 因为没有连接数据库 * 所以用户是写死了的 * 第一用户为321所有功能都能使用 * 第二用户为123 只能使用4个功能 */ public static void endTest(){ while (!flag){ System.out.println("请输入用户名"); String username=scanner.next(); System.out.println("请输入密码"); String password=scanner.next(); if ("123".equals(username)&&"123".equals(password)){ testMain1(); } else if ("321".equals(username)&&"321".equals(password)){ testMain(); } else{ System.out.print("用户或密码错误,请重新输入!退出请按Y"); System.out.println("退出Y/N"); String str=scanner.next(); switch (str) { case "Y": System.out.print("已退出当前系统,欢迎下次使用!"); flag=true; break; default: break; } } } }
九:排序
package com.cowain.pojo; import java.io.Serializable; /** * @author: fxw */ public class Student implements Serializable , Comparable<Student> { //序号 private Integer studentSno; //学号 private Integer studentID; //姓名 private String studentName; //性别 private String studentSex; //专业 private String studentClass; //英语成绩 private Integer English; //数学成绩 private Integer Math; //计算机成绩 private Integer Computer; public Student() { } public Student(Integer studentSno, Integer studentID, String studentName, String studentSex, String studentClass, Integer english, Integer math, Integer computer) { this.studentSno = studentSno; this.studentID = studentID; this.studentName = studentName; this.studentSex = studentSex; this.studentClass = studentClass; English = english; Math = math; Computer = computer; } /** * toSting方法必须这样,方便后面截取以数组的形式进行存储 * @return 显示完整的学生对象 */ @Override public String toString() { return studentSno + studentID + studentName + studentSex + studentClass + English + Math + Computer; } /*** * 关于排序是实现Comparable接口进行排序 * 先是将两者对象的序号进行比较 如果相等则比较学号 * 如果不等 就进行序号的比较 * @param student 传入学生的对象 * @return */ @Override public int compareTo(Student student) { return this.getStudentSno()-student.getStudentSno()==0?this.getStudentID()-student.getStudentID():this.getStudentSno()-student.getStudentSno(); } }
十:退出功能
public static boolean exits(){ System.out.println("-------------.使用退出功能---------------"); System.out.println("确定要退出吗?Y/N"); String select=scanner.next(); if ("Y".equals(select)){ return true; } else{ return false; } }
总结
此程序当中可能代码臃肿部分较多,没时间去仔细修改整合,但是大体功能都已经实现。需要的朋友可提取代码自行修改。因为比版本为java语言开发,许多东西都是直接调用写好的接口或者方法。当中如有不足,请多多指点。