学生信息管理系统用于管理学生基本信息,该系统除能够大大的帮助学籍管理人员提高工作效率。本小节将从软件功能、数据库系统设计和项目结构几个方面介绍该软件系统的设计方案。
学生信息管理系统集信息展示、查询、增删和修改多种功能为一体,该系统的主界面如图24-1所示。
图24-1学生信息管理系统主界面
从图24-1可以看出:学生信息管理系统具有数据分页浏览、查询、新增、删除、修改及查看学生信息详情等功能。其中查询功能又可以按照用户指定的条件完成查询,用户可以按姓名、按性别和班级查询。如果用户没有指定任何查询条件,则显示系统中全部数据。
当单击“新增”按钮时,系统会弹出新增学生信息对话框,如图24-2所示。
图24-2 新增学生信息对话框
当用户在如图24-2所示的对话框中填写学生的各项信息后,单击“确定”按钮即可新增一条学生信息,如果所填写的信息有误,系统会弹出相应的对话框给予提示,例如,当新增学生的学号与原有学号重复时,会弹出如图24-3所示的对话框。
图24-3提示对话框
用户如果希望删除某一条学生信息,则可以先从如图24-1所示窗体的表格中选择一条信息,然后单击“删除”按钮即可。为防止出现误删除的情况,每次删除操作前系统都会弹出对话框向用户确认是否要删除这条信息。
修改学生信息也需要先选定待修改的信息,如果没有选定,系统会提示用户先完成选定操作。当选定一条学生信息后,单击“修改”按钮即可打开修改学生信息对话框。对话框内会自动把该学生的各项信息显示到相应的文本框中,例如选定图24-1所示界面中第一条学生信息后,单击“修改”按钮后所弹出的对话框如图24-4所示。
图24-4修改学生信息对话框
从图24-4可以看出:修改学生信息对话框和新增学生信息对话框是完全一样的,只是修改学生信息对话框中的学号文本框是只读状态,无法修改其内容。
用户如果需要查询特定的学生信息,可以先用组合框选择一个查询条件,然后在文本框中填写查询关键字,最后单击“查询”按钮即可完成查询,例如希望查询所有女生的信息,则可以先在图24-1所示窗体的组合框中选择“性别”选项,然后在文本框中填写关键字“女”,单击“查询”按钮即可查询到所有女生的信息。查询出的信息以分页的形式显示,这样的显示形式更容易浏览。主窗体界面下方设置了四个翻页按钮以方便用户查看数据,并且在界面正下方还显示出数据的总页数和当前页数。
本系统只保存学生信息,因此只有一张用于保存学生信息的student表,这张数据表位于一个名为student的数据库中,其字段如图24-5所示。
图24-5 student表结构
读者在运行项目前需要先在student数据库中创建student表。
学生信息管理系统总共有6个类,它们分别是:
MainFrame是学生信息管理系统的主窗体,该窗体上有很多组件,这些组件都被定义为MainFrame类的属性,它们分别是:
- JTable table;//数据表格
- JScrollPane scrollPane;//表格所在的滚动面板
- Object[] columns;//表格列名称
- DefaultTableModel data;//表格的数据模型
- JComboBox
jbcKeywords;// 查询关键字组合框 - JButton btnQuery;//查询按钮
- JButton btnAdd;//新增按钮
- JButton btnDelete;//删除按钮
- JButton btnUpdate;//更新按钮
- JButton btnDetail;//信息详情按钮
- JButton btnFirst;// 首页按钮
- JButton btnPreview;// 上一页按钮
- JButton btnNext;// 下一页按钮
- JButton btnLast;// 末页按钮
- JTextField txtKeywords;// 查询关键字文本框
- JLabel lblPage;// 页码标签
DetailDialog表示信息详情对话框,单击“新增”、“修改”和“详情”这三个按钮时都会弹出这个对话框,只是在三种情况下弹出的对话框以不同的形式显示出来。如果是单击“新增”后弹出的对话框上所有的文本框中都没有任何信息,而单击“修改”时,对话框中会自动显示出要修改的学生信息,而单击“详情”按钮时,对话框中也会显示出要查看的学生信息,但这些信息都是不可编辑的。为了表示出不同模式的对话框,在DetailDialog类中定义了三个静态属性用以表示不同模式的对话框,它们分别是:
- public static final int ADD = 1;//新增模式
- public static final int UPDATE = 2;//修改模式
- public static final int DETAIL = 3;//详情模式
当创建出一个DetailDialog类对象后,这个对象只能属于其中一种模式,因此在DetailDialog类中还定义了一个mode属性,这个属性表示当前DetailDialog类对象是哪一种模式,因此mode的值只能是上述静态属性中的一个。
DetailDialog中所定义的组件如下:
- JLabel lblSid;//学号标签
- JTextField txtSid;//学号文本框
- JLabel lblName;//姓名标签
- JTextField txtName;//姓名文本框
- JLabel lblSex;//性别标签
- JRadioButton rbtMale;//单选按钮男
- JRadioButton rbtFemale;//单选按钮女
- ButtonGroup group;//按钮组
- JLabel lblClassId;//班级标签
- JTextField txtClassId;//班级文本框
- JLabel lblPhone;//家长手机标签
- JTextField txtPhone;//家长手机文本框
- JLabel lblInfo;//备注信息标签
- JTextArea txaInfo;//备注信息文本区
- JScrollPane scrollPane;//备注文本区的滚动面板
- JButton btnOK;//确定按钮
- JButton btnCancel;//取消按钮