第 4 章 学生成绩管理系统(C 级)
项目目标:本项目为必做项目,相比于一般 Java 课程中基于文本编辑模式的程序设计,要求首先熟 悉和习惯基于 JBuilder 平台开发 Java 应用程序的一般方法,在界面设计中练习使用 JBuilder 容器和组件、掌握并灵活应用布局管理器,掌握菜单设计和菜单事件响应机制,掌握 JDBC 数 据库连接方法和技巧。 本项目实现以 JBuilder 2006 为例,便于入手;读者可根据 3.1 节介绍,分别以 Eclipse 和 MyEclipse 实现。
4.1 项目概述
学生成绩管理系统是学生熟悉的 MIS(信息管理系统),是学生易于理解和掌握的,便于 程序设计和拓展开发。本系统以友好的图形界面实现,包括:学生信息管理、课程管理、成绩 管理等功能;系统整体功能结构如图 41 所示。 图 41 系统功能结构图 读者在完成本教程涉及的基本管理功能后,可以自行添加用户系统身份验证、用户角色 识别,以及进行信息查询、更新、打印、备份等功能。4.2 数据库设计
打开 Oracle 10g XE 浏览器工作模式,以 shiy 客户登入,建立表空间,如图 42 所示,向 导分为四个步骤,分别是设置列字段、设置主键、设置外键、设置约束条件等。 依据向导,最终设计的学生信息表如图 43 所示,学生课程信息表如图 44 所示,学生学 期信息表如图 45 所示,学生成绩表如图 46 所示。 学 生 成 绩 管 理 系 统 学生基本信息管理 学校课程信息管理 学生成绩信息管理 系统辅助功能管理 信息增加 信息删除 信息修改 设置图 42 创建数据表
图 43 学生信息表
图 44 课程信息表
图 46 学生成绩表
4.3 实现步骤
4.3.1 建立项目工程 打开 JBuilder 2006,选择菜单 File→New Project,出现工程创建向导程序:第一步填写 项目名称、存储目录以及选择项目模板,如图 47 所示;第二步设置项目的 JDK、输入输出 路径,以及选择必须的类库等,如图 48 所示;第三步设置字符集、版权等信息,如图 49 所示。 图 47 创建项目向导界面 1 图 48 创建项目向导界面 2图 49 创建项目向导界面 3
创建一个工程,事实上创建了一个文件夹(包),如图 410 所示。
图 410 创建工程后的文件夹 4.3.2 创建应用程序
选择菜单 File→New, 在 General 选项中选择 Application, 依据向导填写 Application 类名, 即 main 函数入口,如图 411 所示;在图 412 中设置 Application 界面类名,选择工具栏、菜 单等;在图 413 中创建一个运行实例。
图 411 创建 Application 向导界面 1
图 412 创建 Application 向导界面 2
创建完毕后项目文件夹如图 414 所示。
图 414 创建 Application 后的项目文件夹 4.3.3 编辑菜单
打开 MainFrame 类 Design 视图,双击其中的 Menu→jMenuBar1,编辑菜单,其编辑界面 如图 415 所示。
生成的 MainFrame 类结构如图 416 所示。 图 416 MainFrame 类包图 4.3.4 创建功能面板 选择菜单 File→New,在 General 选项中选择 Panel,进入 Panel Wizard,如图 417 所示, 输入类名并单击 OK 按钮,生成一个空面板。 图 417 创建学生信息录入面板
根据需求,还需要创建学生信息录入、查询、修改功能面板,课程、学期录入、修改等 功能面板。 4.3.5 创建 JDBC 连接 创建类 DBConnect.java,其类属性和类方法如第 3.1.1 所示,实现数据库访问。 创建完整的项目结构如图 418 所示。 图 418 Project 视图
4.4 JavaUI 布局管理器
因为 Java 语言的目标是跨平台的,在 UI 设计组件位置定位时使用绝对坐标显然会出现 问题,即在不同平台、不同分辨率下的显示效果不一样。Java 为了实现跨平台的特性并且获 得动态的布局效果,将容器内的所有组件安排给一个“布局管理器”负责管理,如排列顺序, 组件的大小位置等, 窗口移动或调整大小后组件如何变化等功能授权给对应的容器布局管理 器来管理,不同的布局管理器使用不同算法和策略,容器可以通过选择不同的布局管理器来 决定布局。 Java 中常用的布局管理器有 6 种,通过使用 6 种布局管理器组合,能够设计出复杂的界 面,而且在不同操作系统平台上都能够获得一致的显示界面。6 种布局管理器分别是 BorderLayout、BoxLayout、FlowLayout、GridBagLayout、GridLayout 和 CardLayout。 在理解这 6 种布局管理器工作方法之前,读者一定要掌握并且灵活应用 BorderLayout 和 GridLayout。 (1)BorderLayout 布局管理器 BorderLayout 是顶层容器(JFrame、JDialog 和 JApplet)的默认布局管理器,也是一种非 常简单的布局策略,它把容器内的空间简单地划分为东、西、南、北、中五个区域,每加入一 个组件都应该指明把这个组件加在哪个区域中。如果容器的大小发生变化,其变化规律为:组 件的相对位置不变, 大小发生变化。 例如容器变高了, 则 North、 South 区域不变, West、 Center、 East 区域变高;如果容器变宽了,West、East 区域不变,North、Center、South 区域变宽。不一定所有的区域都有组件,如果四周的区域(West、East、North、South 区域)没有组件,则 由 Center 区域去补充,但是如果 Center 区域没有组件,则保持空白。 (2)GridLayout 布局管理器 GridLayout 将成员按网格型排列,每个成员尽可能地占据网格的空间,每个网格也同样 尽可能地占据空间,从而各个成员按一定的大小比例放置。如果你改变大小,GridLayout 将 相应地改变每个网格的大小,以使各个网格尽可能地大,占据 Container 容器全部的空间。 组件就位于这些划分出来的小区域中,所有的区域大小一样。组件按从左到右、从上到下的 方法加入。
采用 BorderLayout 和 GridLayout 配合使用, 可以完成类似 JBuilder、 Eclipse、 NetBeans, 微软的 Visual Studio 等很多软件的流行界面。本书中所有的实例也都是采用了这两种布局 模式。
4.5 添加事件响应
JBuilder 中添加事件响应比较方便,用户只需显式的为目标组件添加事件响应函数并写函 数体,JBuilder 会自动做好事件监听器的注册和管理。 4.5.1 菜单事件响应 菜单事件添加过程如图 419 所示,选中菜单条目后,切换到 Events 页面,在其中的事件 列表中选中需要添加的事件,本程序选择添加 mousePressed 事件,双击完成操作。 图 419 添加 menuPressed 的事件响应函数添加事件函数后,将在主程序体自动出现定义的 Event Adapter 类,完成 listener 的注册, 读者只需关注完成函数功能部分就可以了,函数体如下所示: public void jMenuStudentInsert_mousePressed(MouseEvent e) { /*添加的事件响应函数体,完成面板切换,即实现既定的面板如欢迎面板,切换到学生信息录入面板*/ StudentInsertPanel si=new StudentInsertPanel(this); //构造学生信息输入面板实例 this.remove(this.getContentPane()); //移去当前面板 this.setContentPane(si); //设置当前面板为学生信息输入面板 this.setVisible(true); } 4.5.2 窗体事件响应 如图 420 所示,选择目标组件后,如选择输入按钮,切换到 Events 页面,在其中的事件 列表中选中需要添加的事件,本程序选择添加 keyPressed 事件,双击完成操作。 图 420 窗体事件响应函数添加
4.6 实现效果
4.6.1 主界面效果 主界面定义固定大小,如 600*550,效果如图 421 所示。图 421 主界面效果 4.6.2 学生信息的管理 学生信息的管理包括学生信息的录入、查询、修改等操作,其中学生信息录入界面的效 果如图 422 所示。 图 422 学生信息录入 4.6.3 课程信息的管理 课程的管理包括课程的插入、查询和修改操作,其中课程的插入界面如图 423 所示。 图 423 课程信息的插入
4.6.4 学期信息的管理 学期信息的管理包括学期的设定和修改操作,其中学期修改效果如图 424 所示。 图 424 学期信息的修改 4.6.5 学生成绩管理 学生的成绩管理包括成绩的录入和查询,其中成绩的录入效果如图 425 所示。 图 425 成绩的录入
4.7 应用程序打包发布
程序开发完毕后,制作一个在一定平台下的可执行文件并交付给客户是必要的。JBuilder 2006 提供了一套程序打包、发布的可视化方法,分两个步骤:首先制作 Basic JAR 文件;在此 基础上打包制作 EXE 文件或可执行的 JAR 文件。 4.7.1 打包基本的 JAR 文件 选择菜单 New→Archive→Basic,如图 426 所示,依据向导制作基本 JAR 文件,详细步 骤如图 427 到图 433 所示。 如图 427 所示,在 File 文本框中填写将要创建的 JAR 文件名称;下面两个选中的复选框 分别表示采取内容压缩和只要编译时就重新构建 JAR 文件。图 426 制作 Basic Archive 文件
图 427 为 Basic Archive 文件命名
如图 428 所示,确定要包含的具体的包、类以及标签等资源,一般选择指定资源即可。
图 429 确定 Basic Archive 文件包含第三方类库
图 430 确定 Basic Archive 文件 Manifest
采用混淆器是 Java 程序防止反编译的有效手段,JBuilder 2006 自带 RetroGuard 混淆器。 一般情况下,通过单独下载其他开源的混淆器进行 Java 防反编译操作。
图 432 确定 Basic Archive 文件是否记录重构过程 图 433 确定 Basic Archive 文件签名信息 完成向导的各项设置之后,在工程面板会出现 BasicArchive 条目,选中后右击选择快捷 菜单中的 Make 命令, 或者直接编译工程, 会生成名称为 StudentManage2.jar 的文件, 如图 434 所示。 图 434 含 BasicArchive 的工程结构图
4.7.2 打包可执行文件 选择菜单 New→Archive→Executable JAR,如图 435 所示,依据向导制作可执行文件, 详细步骤如图 436 到图 439 所示。 图 435 制作可执行文件 如图 436 所示,Name 文本框为在工程结构图中列出的条目,JAR File 文本框为选择的 Basic JAR 文件;复选框表示只要编译工程就生成可执行文件。 图 436 选择 Basic JAR 图 437 指定工程的 Main 函数
如图 438 所示, JBuilder 2006 提供了 5 种不同类型的可执行文件类型, 分别是 Windows 图形界面程序、Windows 文字界面程序、Linux 程序、Solaris 程序和 Mac OS X 程序;可以 多选。 图 438 选择目标平台 图 439 创建运行环境说明 依据向导设置结束后,在左边的工程结构菜单树中生成了一个 ExecutableEXE 条目,右 键单击它, 选择快捷菜单中的 Make 或编译工程文件, 可以发现在 ExecutableEXE 下生成可执 行文件,如图 440 所示;此时就可以把 StudentManage3W.exe 单独发布,在其他配置了 JDK 的 Windows 环境下独立运行了,如图 441 所示。 图 440 含 EXE 文件的工程结构图
图 441 EXE 文件独立发布