面向对象程序设计(Java)课程设计——学生信息管理系统(GUI+文件)个人部分

目录

一、团队成员及任务

二、项目简介

三、运行结果

 四、源代码(详见团队博客)

五、个人部分实现过程


一、团队成员及任务

组长:宗庆亮  计科(智能)22-1  202203200021

负责模块:静态登录界面实现以及学生信息系统管理界面的创建

组员:郑金洲  计科(智能)22-1  202203200022

负责模块:增加,删除,修改以及查询功能的实现

团队博客:面向对象程序设计(Java)课程设计——学生信息管理系统(GUI+文件)小组汇报_WayneZ16的博客-CSDN博客

二、项目简介

本项目由我们二人共同合作完成,该系统可实现学生信息的增加,删除,修改,查询,筛选的功能。并将学生信息存储在文件txt 中,不会覆盖原数据。该系统没有利用数据库,是使用文件来存储学生数据,有基本的 UI 界面,操作友好,项目运行没有问题。

三、运行结果

1.登录界面

 2.管理系统界面

 3.信息录入

4.查看全部信息 

 5.查询信息(输入学号后,点击查询信息)

6. 删除信息(输入存在的学号后,点击删除信息)

 7.修改信息(输入学号后,点击修改信息)

 四、源代码(详见团队博客)

https://blog.csdn.net/ZJZ0116/article/details/131191851?spm=1001.2014.3001.5501

五、个人部分实现过程

1.系统基本功能:录入、修改、删除等

package Student_Manage;

import java.io.*;
import java.util.ArrayList;

public class function {
    //本程序学生数量不多,用数组列表ArrayList,  当学生数据多的时候,考虑用链表
    ArrayList<student_information> arry=new ArrayList<student_information>();
    public function()           //读文件,将文件中的学生信息存放在数组列表
    {
        this.readFile();
    }
    //根据学号查找学生信息,找到返回学号,找不到返回-1
    public int find(String str)
    {
        for (int i = 0; i<arry.size(); i++)
            if (arry.get(i).getStuID().equals(str))
                return i;//等于在数组列表的位置
        return -1;
    }

    //修改学生信息
    public void update(student_information stu) {
        int flag=find(stu.getStuID());    //查找是否存在
        arry.set(flag, stu);		   //替换 flag 处的学生信息
    }
    // 读文件,
    public boolean readFile() {
        String t=null;
        try{
            FileReader f1 = new FileReader("student.txt");
            BufferedReader br=new BufferedReader(f1);
            arry.clear();    //	清除原数组列表中的数据
            while ((t= br.readLine())!= null)
            {
                String [] s=t.split("\\s+");
                student_information st=new student_information(s[0],s[1],s[2],s[3],s[4],s[5],s[6]);//注意若该文件每行没有七个字符串,则会出错
                arry.add(st);
                System.out.println("读取文件:");
                System.out.println(s[0]);
            }
            f1.close();
            br.close();
            return true;
        } catch (IOException e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
            return false;
        }
    }
    //添加学生信息
    public boolean add(student_information stu)
    {
        System.out.println();
        System.out.println("要添加的学生");
        System.out.println(stu.fileString());
        System.out.println();
        if (find(stu.getStuID())!=-1)
            return false;
        arry.add(stu);
        return true;
    }

    //写注意每行必须有七个元素,否则读取文件并判断是否存在时会出错时会出错,没有输入的用---代替
    public boolean writeFile() {
        FileWriter fw=null;
        BufferedWriter out=null;
        try {
            fw = new FileWriter("student.txt");
            out = new BufferedWriter(fw);
            //姓名学号等中间隔一个空格
            for(int i=0;i<arry.size();i++){
                String s=arry.get(i).fileString();
                System.out.println("数组列表数据:");
                System.out.println(arry.get(i).fileString());
                out.write(s);
                out.newLine();
            }
            out.close();
            fw.close();
            return true;
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }
    }

    //删除学生信息,并且文件中的内容也要修改
    public boolean delete(String s)	//添加学生记信息
    {
        int pos=find(s);
        if (pos==-1)
            return false;

        arry.remove(pos);
        return true;
    }

}

2.查询信息,以表格形式呈现

package Student_Manage;

import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableRowSorter;
import java.awt.*;
import java.io.*;
import java.util.ArrayList;
import java.util.Vector;

public class showones {
    //读取学生信息,展示在窗口

    ArrayList<student_information> arry=new ArrayList<student_information>();
    student_information stu=new student_information();
    JTable table = null;
    DefaultTableModel model = null;
    //显示全部学生信息
    public showones() {
        JFrame jf = new JFrame("显示符合条件的学生信息(点击表头可以按照升序降序排序");
        //jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        // 创建内容面板
        JPanel panel = new JPanel();
        // 表头(列名)
        //  String[] columnNames ={"序号","学号","姓名","性别","年龄","电话号码","家庭住址","身份证号码" };
        Vector columnNames=createColumnNames();
        //需要查询的符合条件的,用字符串数组f记录
        String [] f = new String [7];
        try{
            FileReader f1 = new FileReader("查询时暂时存放的文件.txt");
            BufferedReader br=new BufferedReader(f1);
            //arry.clear();//	清除原数组列表中的数据
            String t=null;
            while ((t= br.readLine())!= null)
            {
                f=t.split("\\s+");			//要查询的学生信息
            }


            f1.close();
            br.close();
        } catch (IOException e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }

        //记得清空,否则下次查询没有筛选条件时,查询的是上一次的条件
        File file =new File("查询时暂时存放的文件.txt");
        try {
            if(!file.exists()) {
                file.createNewFile();
            }
            FileWriter fileWriter =new FileWriter(file);
            fileWriter.write("");
            fileWriter.flush();
            fileWriter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        //判断需要查询的是那些条件
        ArrayList List = new ArrayList();
        for(int i=0;i<7;i++) {
            if(!f[i].equals("--"))     //需要满足的条件
                List.add(i);
        }
        //将满足查询条件的学生信息录入系统
        for(int i=0;i<List.size();i++)
            System.out.println(List.get(i));
        try{
            FileReader f1 = new FileReader("student.txt");
            BufferedReader br=new BufferedReader(f1);
            String t=null;
            int flag=0;
            int t1=0;

            arry.clear();//	清除原数组列表中的数据
            while ((t= br.readLine())!= null)
            {
                String [] s=t.split("\\s+");
                for(int i=0;i<List.size();i++)
                {
                    t1=(int) List.get(i);
                    if(f[t1].equals(s[t1])) {
                        flag=flag+1;
                    }
                }
                if(flag==List.size()) {
                    student_information st=new student_information(s[0],s[1],s[2],s[3],s[4],s[5],s[6]);//注意若该文件每行没有七个字符串,则会出错
                    arry.add(st);
                }
                flag=0;

            }
            f1.close();
            br.close();
        } catch (IOException e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }

        Vector data=createTableModelData();

        // 创建一个默认的表格模型
        model = new DefaultTableModel(data, columnNames);
        table = new JTable(model);
        table.setPreferredScrollableViewportSize(new Dimension(400, 80));
        JScrollPane tablePanel = new JScrollPane(table);


        // 设置表格内容颜色
        table.setForeground(Color.BLACK);                   // 字体颜色
        table.setFont(new Font(null, Font.PLAIN, 14));      // 字体样式
        table.setSelectionForeground(Color.DARK_GRAY);      // 选中后字体颜色
        table.setSelectionBackground(Color.LIGHT_GRAY);     // 选中后字体背景
        table.setGridColor(Color.GRAY);                     // 网格颜色

        // 设置表头
        table.getTableHeader().setFont(new Font(null, Font.BOLD, 14));  // 设置表头名称字体样式
        table.getTableHeader().setForeground(Color.RED);                // 设置表头名称字体颜色
        table.getTableHeader().setResizingAllowed(false);               // 设置不允许手动改变列宽
        table.getTableHeader().setReorderingAllowed(false);             // 设置不允许拖动重新排序各列

        // 设置行高
        table.setRowHeight(40);

        // 第一列列宽设置为40
        table.getColumnModel().getColumn(0).setPreferredWidth(40);

        // 设置滚动面板视口大小(超过该大小的行数据,需要拖动滚动条才能看到)
        table.setPreferredScrollableViewportSize(new Dimension(900, 320));
        //排序器
        RowSorter sorter = new TableRowSorter(model);
        table.setRowSorter(sorter);
        JScrollPane pane = new JScrollPane(table);

        // 把 表格 放到 滚动面板 中(表头将自动添加到滚动面板顶部)
        JScrollPane scrollPane = new JScrollPane(table);

        // 添加 滚动面板 到 内容面板
        panel.add(scrollPane);
        // JScrollPane pane = new JScrollPane(table);
        // 设置 内容面板 到 窗口
        jf.setContentPane(panel);
        jf.pack();
        jf.setSize(900, 600);
        jf.add(scrollPane, BorderLayout.CENTER);
        //数据居中显示
        DefaultTableCellRenderer r = new DefaultTableCellRenderer();
        r.setHorizontalAlignment(JLabel.CENTER);
        table.setDefaultRenderer(Object.class, r);

        jf.setLocationRelativeTo(null);
        int t=arry.size();
        //int t=table.getRowCount();
        if(t<=0){
            JOptionPane.showMessageDialog(null, "该系统中没有符合条件的学生!!!");
            jf.setVisible(false);
        }
        else {
            jf.setVisible(true);
        }
    }
    private Vector createColumnNames() {
        Vector columnNames = new Vector();
        //columnNames.add("序号");
        columnNames.add("学号");
        columnNames.add("姓名");
        columnNames.add("性别");
        columnNames.add("年龄");
        columnNames.add("电话");
        columnNames.add("宿舍号");
        columnNames.add("家庭住址");


        return columnNames;
    }

    private Vector createTableModelData() {
        Vector data = new Vector();
        for(int i=0;i<arry.size();i++) {
            Vector<String> rowData=new Vector<>();
            rowData.add(arry.get(i).getStuID());
            rowData.add(arry.get(i).getName());
            rowData.add(arry.get(i).getSex());
            rowData.add(arry.get(i).getAge());
            rowData.add(arry.get(i).getPhoneNumber());
            rowData.add(arry.get(i).getRoomNumber());
            rowData.add(arry.get(i).getHome_place());

            data.add(rowData);

        }
        return data;
    }

3.实现表格排序功能

package Student_Manage;

import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableRowSorter;
import java.awt.*;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Vector;

public class show_stuall {
    JTable table = null;
    DefaultTableModel model = null;
    //显示全部学生信息
    public show_stuall() {
        JFrame jf = new JFrame("显示全部学生信息(点击表头可以按照升序降序排序)");
        // 创建内容面板
        JPanel panel = new JPanel();
        // 表头(列名)
        Vector columnNames=createColumnNames();
        Vector data=createTableModelData();
        // 创建一个默认的表格模型
        model = new DefaultTableModel(data, columnNames);
        table = new JTable(model);
        table.setPreferredScrollableViewportSize(new Dimension(400, 80));
        JScrollPane tablePanel = new JScrollPane(table);
        // 设置表格内容颜色
        table.setForeground(Color.BLACK);                   // 字体颜色
        table.setFont(new Font(null, Font.PLAIN, 14));      // 字体样式
        table.setSelectionForeground(Color.DARK_GRAY);      // 选中后字体颜色
        table.setSelectionBackground(Color.LIGHT_GRAY);     // 选中后字体背景
        table.setGridColor(Color.GRAY);                     // 网格颜色

        // 设置表头
        table.getTableHeader().setFont(new Font(null, Font.BOLD, 14));  // 设置表头名称字体样式
        table.getTableHeader().setForeground(Color.RED);                // 设置表头名称字体颜色
        table.getTableHeader().setResizingAllowed(false);               // 设置不允许手动改变列宽
        table.getTableHeader().setReorderingAllowed(false);             // 设置不允许拖动重新排序各列

        // 设置行高
        table.setRowHeight(40);

        // 第一列列宽设置为40
        table.getColumnModel().getColumn(0).setPreferredWidth(40);

        // 设置滚动面板视口大小(超过该大小的行数据,需要拖动滚动条才能看到)
        table.setPreferredScrollableViewportSize(new Dimension(900, 320));

        //排序器
        RowSorter sorter = new TableRowSorter(model);
        table.setRowSorter(sorter);
        JScrollPane pane = new JScrollPane(table);

        // 把 表格 放到 滚动面板 中(表头将自动添加到滚动面板顶部)
        JScrollPane scrollPane = new JScrollPane(table);

        // 添加 滚动面板 到 内容面板
        panel.add(scrollPane);
        // JScrollPane pane = new JScrollPane(table);
        // 设置 内容面板 到 窗口
        jf.setContentPane(panel);
        jf.pack();
        jf.setSize(900, 600);
        jf.add(scrollPane, BorderLayout.CENTER);

        //数据居中显示
        DefaultTableCellRenderer r = new DefaultTableCellRenderer();
        r.setHorizontalAlignment(JLabel.CENTER);
        table.setDefaultRenderer(Object.class, r);

        jf.setLocationRelativeTo(null);
        int t=table.getRowCount();
        if(t<=0){
            JOptionPane.showMessageDialog(null, "该系统中还没有录入学生信息!!!");
            jf.setVisible(false);
        }
        else {
            jf.setVisible(true);
        }
    }

    private Vector createColumnNames() {
        Vector columnNames = new Vector();
        //columnNames.add("序号");
        columnNames.add("学号");
        columnNames.add("姓名");
        columnNames.add("性别");
        columnNames.add("年龄");
        columnNames.add("电话");
        columnNames.add("宿舍号");
        columnNames.add("家庭住址");


        return columnNames;
    }

    private Vector createTableModelData() {

        Vector data = new Vector();
        String t=null;
        try{
            FileReader f1 = new FileReader("student.txt");
            BufferedReader br=new BufferedReader(f1);
            //arry.clear();//	清除原数组列表中的数据
            int i=0;
            while ((t= br.readLine())!= null)
            {
                String [] s=t.split("\\s+");		//通过空格分割字符串数组
                Vector rowData = new Vector();

                //rowData.add("i");
                rowData.add(s[0]);
                rowData.add(s[1]);
                rowData.add(s[2]);
                rowData.add(s[3]);
                rowData.add(s[4]);
                rowData.add(s[5]);
                rowData.add(s[6]);
                data.add(rowData);
                // System.out.print(s[6]);
                i++;
            }
            f1.close();
            br.close();

        } catch (IOException e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();

        }
        return data;
    }
}

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学生信息管理系统是一个用于管理学生信息的软件系统。基于Java学生信息管理系统设计与实现涉及以下几个方面: 1. 需求分析:根据用户的需求,确定学生信息管理系统的功能和模块。可能包括学生信息的录入、查询、修改和删除,班级和课程信息的管理等。 2. 数据库设计设计数据库表结构来存储学生信息、班级信息和课程信息等。使用MySQL或SQL Server等关系型数据库管理系统,通过Java的JDBC技术连接数据库。 3. 后台逻辑实现:使用Java编程语言,通过面向对象的方法编写后台逻辑,包括学生信息的增删改查操作,班级和课程信息的增删改查操作等。 4. 用户界面设计:使用Java的Swing或JavaFX等图形界面库,设计系统的用户界面。通过按钮和文本框等组件,实现学生信息查询、录入、修改和删除等操作的交互界面。 5. 安全性设计:为了保护学生信息的安全,可以设计登录界面和权限管理功能。只有经过身份验证的用户才能进行数据操作,并分配不同的权限给不同的用户。 6. 错误处理和异常处理:在系统开发过程中,考虑异常情况,实现错误处理和异常处理机制。例如,对输入的格式进行校验,避免输入非法数据。 7. 数据备份和恢复:定期备份学生信息数据,以防止数据丢失。当系统出现故障或数据丢失时,可以通过备份恢复数据。 8. 测试和优化:在系统开发完成后,进行系统测试和性能优化。确保系统的稳定性和可靠性,并对系统的性能进行优化,提高系统的响应速度和处理能力。 基于Java学生信息管理系统设计与实现,涉及多个环节,通过以上步骤的实施,可以开发出一个功能全面、安全稳定的学生信息管理系统

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值