Java实现学生籍贯信息管理与查询系统

1 下载量 25 浏览量 更新于2024-08-04 1 收藏 10KB TXT 举报
在Java课程设计中,"Java 学生籍贯信息.txt"文件主要涉及一个名为`xsjgxx`的类,用于处理学生的基本信息,特别是籍贯的管理。这个项目的主要功能可以分为五个部分: 1. **创建信息并保存到磁盘**: 类中的`xxl`数组用于存储每个学生的学号、姓名和籍贯信息,预设数组大小为99999个元素。在`main`方法中,程序初始化一个`JFrame`窗口,用户可以通过这个界面进行操作。程序通过`BufferedReader`和`FileWriter`或`BufferedWriter`来读取和写入文件,实现了数据的持久化。 2. **读取并显示学生籍贯信息**: 程序能够读取磁盘上的文件,解析其中包含的学生信息,并通过`JFrame`展示出来,可能通过`JTextArea`或`JScrollPane`来呈现列表形式,让用户直观查看所有学生的籍贯信息。 3. **按学号或姓名查询籍贯**: 用户界面提供了搜索功能,允许用户输入学号或姓名,然后从文件中查找相应的籍贯信息,使用`JTextField`接收用户输入,并通过事件监听器(如`ActionListener`)触发查找操作。 4. **按籍贯查询学生**: 类似于查找功能,用户可以根据指定的籍贯筛选出所有拥有该籍贯的学生,并在界面上显示这些学生的信息。 5. **添加、删除和修改学生籍贯信息**: 程序提供添加、删除和修改功能,可能通过`JButton`触发相应的操作,比如添加新学生时通过`FileWriter`追加新的记录,删除或修改籍贯信息则需要先读取文件,修改后再写回磁盘,确保数据的一致性。 **备注**: 每个学生的信息结构被定义为包含学号、姓名和籍贯三个字段,且每个学生信息被存储在一个动态数组中。项目使用了Java Swing库来构建图形用户界面(GUI),如`JFrame`、`JButton`、`JLabel`、`JTextField`和`JTextArea`等组件。 在实际开发过程中,还需要考虑错误处理,如文件读写异常、输入验证以及数据结构的有效性检查,以保证程序的健壮性和用户体验。此外,可能还需要实现更友好的用户交互,例如使用对话框(`JDialog`)来显示查询结果或者提示用户进行操作。整个项目旨在练习Java的基本IO操作、数据结构管理和用户界面设计技巧。

import javax.swing.; import java.util.; import java.io.File; import java.io.FileWriter; import java.io.IOException; public class Stu { private String name;//姓名 private String stuNum;//学号 private String sex;//性别 private String jiguan;//籍贯 private String xueyuan;//学院 public String getName() { return name; } public void setName(String name) { this.name = name; } public String getStuNum() { return stuNum; } public void setStuNum(String stuNum) { this.stuNum = stuNum; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getJiguan() { return jiguan; } public void setJiguan(String jiguan) { this.jiguan = jiguan; } public String getXueyuan() { return xueyuan; } public void setXueyuan(String xueyuan) { this.xueyuan = xueyuan; } static Stu[] Stu = new Stu[8];//定义学生数组,根据题目要求容量为8 static int number = 0; static Scanner scanner = new Scanner(System.in); public static void main(String args[]) { Stu stu = new Stu(); int choice; while (true) { System.out.println("1 添加新的学生信息"); System.out.println("2 展示学生信息"); System.out.println("3 查询学生信息"); System.out.println("4 学生信息统计信息"); System.out.println("5 退出"); System.out.println("请输入输入相应数字选择要进行的操作:"); choice = scanner.nextInt(); if (choice == 5) break; switch (choice) { case 1: add(); break;//添加学生信息 case 2: show(); break;//展示学生信息 case 3: query(); break;//查询学生信息 case 4: tongji(); break;//统计籍贯为陕西的学生人数,以及男生和女生的人数; } } System.out.println("\n结束"); } static void add() {//添加学生信息 while (true) { System.out.println("按任意键继续添加学生信息,按0结束"); if (scanner.nextInt() == 0) break; System.out.println("输入该学生的学号,姓名,性别,籍贯,学院"); Stu[number] = new Stu(); Stu[number].setStuNum(scanner.next()); Stu[number].setName(scanner.next()); Stu[number].setSex(scanner.next()); Stu[number].setJiguan(scanner.next()); Stu[number].setXueyuan(scanner.next()); number++; System.out.println("完成"); } } public class Log_ExceptionUtil { public void writeEror_to_txt(String name,String stuNum,String sex,String jiguan,String xueyuan) throws IOException{ File F=new File("D:/TEST.txt"); //如果文件不存在,就动态创建文件 if(!F.exists()){ F.createNewFile(); } FileWriter fw=null; //writeDate 写入的内容1 String writeDate=name+""+ stuNum+""+ sex+""+jiguan+""+xueyuan; try { //设置为:True,表示写入的时候追加数据 fw=new FileWriter(F, true); //回车并换行 fw.write(writeDate+"\r\n"); } catch (IOException e) { e.printStackTrace(); }finally{ if(fw!=null){ fw.close(); } System.out.println("已保存到文件"); } } } static void show() {//展示学生信息 System.out.println(" 学号 姓名 性别 籍贯 学院"); for (int i = 0; i < number; i++) System.out.println(Stu[i].getStuNum() + "\t" + Stu[i].getName() + "\t" + "\t" + Stu[i].getSex() + "\t" + Stu[i].getJiguan() + "\t" + Stu[i].getXueyuan()); System.out.println(); } static void tongji() {//统计籍贯为陕西的学生人数,以及男生和女生的人数 int shanxiren = 0, male = 0, female = 0; for (int i = 0; i < 8; i++) { if (Stu[i].getJiguan() == "陕西") shanxiren++; if (Stu[i].getSex() == "男") male++; if (Stu[i].getSex() == "女 ") female++; System.out.println("籍贯为陕西的人数为:"+shanxiren+"男生人数为:"+male+"女生人数为:"+female+"\n\n\n\n"); } } static void query() {//用学号查询 System.out.println("请输入要查询的学生学号"); String Stunumber = scanner.next(); int i; for (i = 0; i < number; i++) { if (Stunumber.equals(Stu[i].getStuNum())) { System.out.println(" 学号 姓名 性别 籍贯 学院"); System.out.println(Stu[i].getStuNum() + "\t" + Stu[i].getName() + "\t" + "\t" + Stu[i].getSex() + "\t" + Stu[i].getJiguan() + "\t" + Stu[i].getXueyuan()); } } } }请问这些代码有什么错误么

2023-02-06 上传