资源描述
江苏大学 毕业设计论文 学生成绩管理系统的设计与实现 THE DESIGN AND REALIZATION OF THE RESULT OF STUDENT ADMINISTRATION MANAGEMENT SYSTEM 学生姓名: 学 号: 年级专业:2004 级计算机科学与技术 指导老师: 学 院:应用科学技术学院 提 交 日 期 : 年 月 2 目 录 摘 要 .3 一、 开发平台及工具简介 .5 二、系统分析 .7 (一)学生成绩管理系统概述 .7 (二) 需求分析 .8 1) 功能需求分析 .8 2) 性能需 求分析 .9 3)数据库需求分析数据流图 .9 4) 数据结构分析数据流图 .10 (三)系统功能结构设计 .12 三、 系统设计 .13 (一)设计目标 .13 (二)开发及运行环境 .13 (三) 数据库设计 .14 四、系统的实现 .17 (一)学生查询成绩部分 .17 (二)后台管理成绩部分 .19 登陆模块 .19 年纪班级管理模块 .20 课程管理模块 .24 评分模块 .24 学生信息管理模块 .27 管理员模块 .29 五、系统存在的问题及前景展望 .30 (一)系统存在问题 .30 (二)前景展望 .30 参考文献 .31 3 摘要 随着现代计算机科学的发展,计算机信息系统越来越受到重视, 网络已经成为人们交流信息的重要方式,所以基于网络平台的各种 系统不断出现,B/S 结构的软件已经成为人们生活工作的一种重要 工具。本文将介绍如何使用 java 后台结合 RIA 富客户端技术制作学 生管理系统,其中涉及到数据库的建立和系统模块功能的实现,并 在最后说明了系统存在问题和前景展望。 关键词:java,SQL ,TOMCAT,学生成绩管理 4 Abstract Along with the modern computer science development, the computer information system is more and more important, the network already became the people to exchange the information important way, therefore appeared systems that based on network platform, the B/S system already became one kind of important tool which the people exchanged. Now we will introduce how to use java and RIA to develop a student score management system. This part including database creation and the system function realization. Finally expound the matter and shortage of the system, in order to ameliorate better in the future. Keywords: java, SQL, TOMCAT,Student score management 5 一、开发平台及工具简介 1、Java 概述 Java 包括 Java 编程语言、开发工具和环境、Java 类库等。 Java 语言是美国 SUN 公司开发的一种完全面向对象的程序设计语言。 Java 语言由 C+语言发展而来,但比 C+语言简单。Java 语言具有简单、与 平台无关、高效、健壮、安全、多线程等特点,它是当前网络编程中的首选 语言。 JDK 提供了 Java 程序的编译和运行方式,并且编译和运行都是命令行方 式。JDK 本身没有提供源程序编辑环境,没有提供可视化的集成开发环境 (Integrated Development Environment,IDE) 。有一些其他 Java 开发工具提供集 成开发环境,如 Eclipse、 JCreator、JBuilder 等,它们都是建立在 JDK 的运行 时环境之上的。 Java 是一门编译语言(compiled language),但它不直接生成硬件处理器 指令,而是生成一种字节码(bytecodes)这种字节码由 Java 虚拟机解释执行。 Java 虚拟机(Java Virtual Machine,JVM)实际上是一个程序,它定义了 指令集、寄存器集、类文件结构栈、垃圾收集堆、内存区域等,提供了跨平 台能力的基础框架。 Java 虚拟机实现了一台理想的计算机,并可以优化运行 Java 程序。因此, 一个 Java 程序其实是被 Java 虚拟机执行的,而 Java 虚拟机运行于实际的处理 器之上。 Java 虚拟机执行应用程序具有以下三个典型特点: 1)JavaJava 2、SQL Server 2000 SQL Server 2000 是 Microsoft 公司推出的 SQL Server 数据库管理系统 的最新版本该版本继承了 SQL Server 7.0 版本的优点同时又比它增加了许多 更先进的功能具有使用方便可伸缩性好与相关软件集成程度高等优点可跨越 从运行 Microsoft Windows 98 的膝上型电脑到运行 Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。它的优点有: 1)上手容易,学习 SQL Server 是掌握其他平台及大型数据,如 Oracle,Sybase,DB/2 的基础。因为这些大型数据库对于设备、平台、人员知识 的要求往往较高,而并不是每个人都具备这样的条件,且有机会去接触它们。 但有了 SQL Server 的基础,再去学习和使用它们就容易多了。IT 行业的实践 经验充分证明了这一点。 2)兼容性良好,由于今天 Windows 操作系统占领着主导地的位,选择 SQL Server 一定会在兼容性方面取得一些优势。另外,SQL Server 2000 除了 具有扩展性,可靠性以外,还具有可以迅速开发新的因特网系统的功能。尤 其是它可以直接存贮 XML 数据,可以将搜索结果以 XML 格式输出等特点, 有利于构建了异构系统的互操作性,奠定了面向互联网的企业应用和服务的 基石。这些特点在.NET 战略中发挥着重要的作用。 3)相对于 7.0 的忧越性,Microsoft SQL Server 2000 是在 SQL Server 7.0 的 基础上对性能、可靠性、质量以及易用性进行了扩展。SQL Server 2000 中包 6 含许多新特性,这些特性使其成为针对电子商务、数据仓库和在线商务解决 方案的卓越的数据库平台。其增强的特性包括对丰富的扩展标记语言 (XML)的支持、综合分析服务以及便捷的数据库管理。 4)电子商务,在使用由 Microsoft SQL Server 2000 关系数据库引擎的情况 下,XML 数据可在关系表中进行存储,而查询则能以 XML 格式将有关结果 返回。此外,XML 支持还简化了后端系统集成,并实现了跨防火墙的无缝数 据传输。你还可以使用 Hypertext Transfer Protocol(超文本传输协议, HTTP)来访问 SQL Server 2000,以实现面向 SQL Server 2000 数据库的安全 Web 连接和无须额外编程的联机分析处理( OLAP)多维数据集。 5)数据仓库,Microsoft SQL Server 2000 非常明显的改进就是增加了 OLAP(联机分析处理)功能,这可以让很多中小企业用户也可以使用数据仓库的 一些特性进行分析。OLAP 可以通过多维存储技术对大型、复杂数据集执行快 速、高级的分析工作。数据挖掘功能能够揭示出隐藏在大量数据中的倾向及 趋势,它允许组织或机构最大 限度的从数据中获取价值。通过对现有数据进行有效分析,这一功能可以对 未来的趋势进行预测。 6)增强的在线商务,Microsoft SQL Server 2000 简化了管理、优化工作, 并且增强了迅速、成功的部署在线商务应用程序所需的可靠性和伸缩性。其 中,用以提高可靠性的特性包括日志传送、在线备份和故障切换群集。在伸 缩性方面的改进包括对多达 32 颗 CPU 和 64 GB RAM 的支持。通过自动优化 和改进后的管理特性-诸如数据文件尺寸的自动管理、基于向导的数据库拷贝、 自动内存管理和简化的故障切换群集安装与管理,在线商务应用程序能够被 迅速部署并有效管理。 7)利于构筑敏捷性商务 ,所谓敏捷性商务 就是能够打破内部和外部 的商业界限,对迅速改变的环境做出快速反应。 。微软已经与关键的合作伙伴 建立起了战略关系,创造出了能够与许多供应商的产品实现整合的解决方案, 因而企业用户并不需要做出要么完全接受,要么全部不要 的承诺。在部署解 决方案的过程中,企业用户不一定要拆除原有的设备从头。敏捷商务让企业 用户能够充分利用现有的系统,自主决定所需的硬件和软件解决方案以及由 谁来提供,伸缩自如、游刃有余。 3、TOMCAT 简介 Tomcat 是一个带有 jsp 环境的 servlet 容器.servlet 容器是一个根据用户的行 为可以管理和激活 servlet 的运行时的 shell. 启动与关闭 Tomcat,使用”bin” 目录中的脚本启动与关闭 Tomcat. 启动: uinx:bin/startup.sh , win32:binstartup 。关闭: unix:bin/shutdown.sh ,win32:binshutdown 。 Tomcat 目录结构 ,目录名- 描述: bin 包含启动/关闭脚本 ;conf 包含不 同的配置文件, 包括 server.xml(Tomcat 的主要配置文件 )和为不同的 Tomcat 配置的 web 应用设置缺省值的文件 web.xml ; doc 包含各种 Tomcat 文档 ;lib 包含 Tomcat 使用的 jar 文件.unix 平台此目录下的任何文件都被加到 Tomcat 的 classpath 中 ; logs Tomcat 摆放日志文件的地方 ;src ServletAPI 源 文件.先别高兴,这些只有些必须在 Servlet 容器内实现的空接口和抽象类 ;webapps 包含 web 项目示例 ,此外 Tomcat 会创建如下目录: work 7 ,Tomcat 自动生成,放置 Tomcat 运行时的临时文件(如编译后的 JSP 文件).如 在 Tomcat 运行时删除此目录.JSP 页面将不能运行;classes 可以创建此目录来 添加一些附加的类到类路径中.任何加到此目录中的类都可在 Tomcat 的类路径 中找到自身. Tomcat 的脚本 ,Tomcat 是一个 Java 程序,因此在设置好几个环境变量后即 可用命令行的方式运行.然而设置 Tomcat 使用的每个环境变量和如下的命令行 参数乏味且易错.因此,Tomcat 开发组提供了一些脚本使启动和关闭 Tomcat 变 得轻松. 二、系统分析 (一) 学生成绩管理系统概述 1)学生成绩管理系统的发展背景 学生成绩管理是各大学的主要日常管理工作之一,涉及到校、系、师、生 的诸多方面,随着教学体制的不断改革,尤其是学分制、选课制的展开和深入, 学生成绩日常管理工作及保存管理日趋繁重、复杂。迫切需要研制开发一款功 能强大,操作简单,具有人性化的学生成绩管理系统。 目前研究的现状在安全性和信息更新化方面存在有一定的不足,各现有系统资 料单独建立,共享性差;在以管理者为主体的方式中,信息取舍依赖管理者对 于信息的认知与喜好,较不容易掌握用户真正的需求,也因此无法完全满足用 户的需求。因此,教务管理软件应充分依托校园网,实现教务信息的集中管理、 分散操作、信息共享,使传统的教务管理朝数字化、无纸化、智能化、综合化 的方向发展,并为进一步实现完善的计算机教务管理系统和全校信息系统打下 良好的基础。 随着计算机及网络技术的飞速发展,Internet/Intranet 应用在全球范围内日 益普及,在众多的网络服务中,Web 给人耳目一新的感觉,而在这其中,网络 已经日渐普及,任何人可以在网络所提供的平台上进行自由的交流,通过网络, 学生可以通过在线的网络直接查询程序,而学校教师也可在网上在线管理学生 的成绩,不需要再去张贴成绩单,使用了在线电子系统,既便于数据查询不容 易使数据丢失,又省去了印刷张贴的麻烦,可谓一举两得。 B/S 系统得益于网络的兴起,采用浏览器作为前端用户操作的平台,所有 的操作系统都预装了网络浏览器,比如 IE,用户不用再去费心安装每个系统的 客户端就可以通过浏览器访问服务器上架设的系统 只是随着网络的发展,人们不再局限于只查看文字信息图片这些静态信息, 对 B/S 系统的互操作性有了进一步的需求,这才兴起了 RIA 富客户端的风潮, 使用各种技术对浏览器进行功能上的增强,让它可以满足现代用户的需要。 这套学生成绩管理系统,就是基于 java 平台和 ajax 实现的 RIA 富客户端开发的, 它包括学生查询平台和后台管理平台两部分,分别为学生提供成绩查询功能, 8 为老师提供管理学生成绩的功能。 2)方案论证 成绩管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建 立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性 和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用 等特点。 本系统主要完成对学生成绩的管理,包括数据库中表的添加、修改、删除等。 系统还可以完成对各类信息的浏览、查询、添加、删除、修改等功能。 3) 开发工具的选择 本系统开发工具:JDK Version1.5+ SQL SERVER 2000 (二) 需求分析 1) 功能需求分析 该学生成绩管理系统具备三方面的功能:一方面是学生用户,学生通过输入 学号和密码进下该系统后,可以进行一些基础查询(学生信息查询、班级信息 查询、课程信息查询) 、成绩管理(成绩查询、计算平均分)重新登陆系统;一 方面老师进入该系统则比学生多一些权限:成绩输入、成绩查询。 具体功能的详细描述如下 1 选择学生基本维护菜单命令,即可进入 学生基本维护 功能窗体,在其中 输入学生的相关信息,如果需要添加或修改学生信息,则单击相应的按纽,输 入新信息后单击添加 就可以了。需要删除一条信息,则只要选择这条信息再 点击 删除 。在搜索条件中输入相关的条件,单击 查询就可查找信息。 2 选择学生信息查询菜单命令,即可进入学生信息查询 功能窗体,在其中的 下拉列表中选择你要看的信息,则在下面的表格中显示你要的信息。 3 选择成绩管理 添加成绩菜单命令,即可进入 添加成绩功能窗体,此功 能权限只有管理员和教师。 4 选择成绩管理 输入成绩 菜单命令,即可进入 输入成绩功能窗体, 此功能权限只有管理员和教师。 5 选择成绩管理 修改成绩 界面,此功能规管理员所有。 6 选择成绩管理 查询成绩界面此界面对学生也是可见的,它的权限规所 有用户所有。 9 7 选择登陆 重新登陆 则会返回登陆界面,为用户提供方便。 8 选择退出将退出整个系统。 2) 性能需求分析 时间特性要求:在软件方面,响应时间有点慢,因为是用 JBuilder 做的, 它占用内存比较大,更新处理时间比较快而且迅速。 安全性:设立口令号和密码验证方式,防止非法用户登录进行操作。也就 是用户只有管理员、学生和教师才能进入这个系统,用户凭口令号和密码进入 此系统,系统会自动判断用户是那种类型,分别拥有不同的权限。 3) 数据库需求分析数据流图 在教务系统中功能模块主要牵涉到的信息包括:是学生信息(base_info) 、 班级信息(class_info) 、课程信息 (class_info)、成绩表 (chengjibiao)、选课表 (xuankebiao)、登陆表(stu) 。 学生信息:包含学号(id) 、姓名 (name)、班级(class)、班级(grade) 、性别(sex) 课程信息:包括课程编号(course_id)、课程名称(coursename) 姓名(name)、成绩 (result) 成绩表:编号(number) 、学号 (id)、课程名称(coursename)、成绩(result) 班级信息:班级编号(bjbh)、学号(id) 、姓名(name) 、班级名称(bjmc)。 登陆表:口令号(id) 、密码 (password)。 根据以上划分的具体数据信息,得到数据流图如 1.1 所示: 1.1 数据库需求分析数据流图 4)数据结构分析 学生信息=组成: 学号(id)、姓名(name)、班级 (class)、性别(sex) 、地址 (address) 课程信息=组成: 编号(course_id)、课程名称(coursename)、教师(teacher) 选课信息=组成:编号(select_id) 课程名称(coursename)、课程编号(course_id) 、 用 户 登 录 操 作 登陆信息 错误信息 账号信 息 2 开 发环境 与工具 介绍 前端 客户端我 用的是 Macromedi a Dreamweav er 8 来编 写 JSP 文 件。中间 业务逻辑 层的 JavaBeans 用的是 JBuilderX Enterpris eX 版。数 据库的编 写是采用 MYSQL 数据 库。 2.1 开发 环境 由于 我用的 是 JBuilde rX Enterpri se 版开 发的这 个系统, 这个开 发软件 功能十 分强大, 所以自然 对开发环 境要求相 对来说比 较高。 1对 系统硬件 的要求: 最小 512M RAM,推荐 786MB RAM。 2. 对 系统平台 的要求: Windo ws 平台 CPU:Intel PentiumIII 及以上兼 容系列 500MHz 以上。 操作 系 统: M i c r o s o f t W i n d o w s 2 0 0 0 ( S P 4 )、 W i n d o w X P 或 者 W i n d o w s S e r v e r 2 0 0 3 。 Linux 平台 C P U : I n t e l P e n t i u m I I I 及 以 上 兼 容 系 列 5 0 0 M H z 以 上。 操作 系 统: S u n J a v a D e s k t o p S y s t e m R e l e a s e 2 或 者 R e d H a t E n t e r p r i s e L i n u x 3 . 0 2.2 运行 环 境: 硬件: 适用于数 据吞吐量 较大的不 同服务器; 软件 :服务器 端: WINDOWS XP+MySQL 用 户端: WindowXP+ IE 返回信息 寻找信息 数 据 库 10 学号(xh)、姓名 (name)、成绩 (result) 、教师(teacher) 成绩表包括=组成:编号 (number)、学号(id)、课程名称(coursename)、成绩 (result)、教师(teacher) 课程信息包括=组成:课程编号 (course_id)、课程名称(coursename)、教师 (teacher) 班级信息=组成:班级编号 (bjbh)、年级(nj)、班级名称 (bjmc)、人数(rs)、班主 任(bzr) 登陆表=组成:口令号(id)、密码(password)、权限(rightlimit) 1、对图 1.1 中所涉及的数据流描述如下: 1) 数据流名:口令号 说明:根据这个口令号定位到用户管理数据库,以便进行身份验证。 数据流来源:登陆界面输入的口令号和密码。 数据流去向:其中用户口令信息将存在于整个操作过程中,防止非法登陆。 数据流组成:口令号(文本) ;密码(文本) 2) 数据流名:寻找信息 说明:根据用户在学生信息维护的时候所填写的信息。 数据流来源:学生信息维护界面学生输入包含学号、班级编号、名称等。 数据流去向:学号将存在整个操作,其它的存入数据库。 数据流组成:学号(文本) ;姓名(文本)等 3) 数据流名:寻找信息 说明:根据用户在成绩管理的时候所填写的信息。 数据流来源:成绩输入、修改、添加等界面用户输入包含课程编号、课程 名称、成绩、教师。 数据流去向:学号、班级编号、课程编号将存在整个操作,其它的存入数 据库。 数据流组成:课程编号(文本) 、课程名称(文本) 、教师(文本)等。 4) 数据流名:返回信息 说明:根据用户在学生信息维护的时候所填写的信息存入了数据库之后。 数据流来源:由学生信息维护界面学生输入的包含学号、姓名、性别等存 11 入数据库的。 数据流去向:学生信息维护界面。 数据流组成:学号(文本) 、姓名(文本) 、班级名称(文本) 、性别(文本) 等。 5) 数据流名:返回信息 说明:根据用户在成绩管理的时候所填写的信息存入数据库后。 数据流来源:由成绩管理输入的包含班级名称、教师、课程名、成绩存入 数据库的。 数据流去向:成绩管理的各子界面。 数据流组成:班级编号(文本) ;班级名称(文本) ;教师(文本)等 2. 对图 1.1 中所涉及的处理过程描述如下: 1) 处理过程名:登陆 输入数据流:口令号、密码 输出数据流:不符合输入条件的错误信息 处理过程逻辑:用 IF 条件进行判断。 2) 处理过程名:班级信息维护 输入数据流:班级编号、班级名称、教师等 输出数据流:班级编号、班级名称等 ,其中班级编号将存在整个操作。 处理过程号:班级编号,其中班级编号将存在整个操作。 3) 处理过程名:学生信息维护 输入数据流:学号、姓名、班级编号、性别等。 输出数据流:学号、姓名、班级编号、性别等。其中学号将存在整个操作。 4) 处理过程名:课程查询 输入数据流:学号、姓名 输出数据流:学号、班级名称、课程名称、上课时间节、上课时间天、上 课地点、其中课程编号将存在整个操作。 12 5) 处理过程名:成绩输入 输入数据流:课程编号、课程名称 输出数据流:编号、学号、课程名称、成绩 、其中编号和学号将存在整个 操作。 (三) 系统功能结构设计 根据需求分析阶段得到的功能需求,管理员、学生和教师用户通过输入口 令号和密码进下该系统后,可以进行一些学生基础信息查询(学生信息查询、 班级信息查询、课程信息查询) 、学生信息维护、成绩管理(成绩查询、计算平 均分)重新登陆系统、退出。 模块功能大概可以分为如下 4 个方面:这几个模块学生基础维护、成绩管 理、登陆、退出。其中基础维护还要包括学生信息维护、班级信息维护、课程 信息维护。成绩管理包括成绩查询、添加成绩、成绩输入等。综上所述,得到 客户端功能模块图如下 2.1 所示。 学生成绩管理系统 13 成绩管理 重新登陆 三、系统设计 (一)设计目标 通过对学生管理工作的调查和研究,要求系统设计完成后将达到以下目标: 界面设计友好、美观,方便管理员的日常操作。 基本信息的全面设置,数据录入方便、快捷。 具有用户维护功能。 最大限度地实现了易维护性和易操作性。 (二)开发及运行环境 硬件平台: CPU:P41.8GHz; 内存:256MB 以上。 软件平台: 操作系统:Windows2000 Server; 数据库:SQL Server 2000; 开发工具包:JDK Version1.5 建立环境,这个过程如下: 在 http:/ JDK(Java2SDK、StandardEdition、v6.0)。JDK 的安装是首先运行下载得到的 jdk-6u5-windows-i586-p.exe,然后修改系统环境 管理员模块 学生基本信息 登陆 退出 学生信息维护 学生信息查询 成绩查询 成绩修改 成绩输入 图 2.1 客户模块系统功能模块图 退出成绩添加 学生模块 成绩 查询 14 变量,新建 JAVA_HOME=x:jdk6.0,并在 PATH 参数中加入% JAVA_HOME%bin;,其中x:是安装 JDK 的硬盘符(c:、d:等) 。 在 http:/jakarta.apache.org/处下载 Tomcat6.0。tomcat 的安装仅需将 apache- tomcat-5.5.26.zip 带目录释放到硬盘根目录下(c: 、d:等) ,然后就可以在硬盘 上找到 apache-tomcat-5.5.26 目录。 启动则在 apache-tomcat-5.5.26/bin 目录下执行 startup.bat,就可启动 tomcat 中 一个支持 JSP 网页技术的 Web 服务器。为了不与现有的 Web 服务器(例如 IIS、PWS 等)冲突,tomcat 的 Web 服务器使用了 8080 端口。 在浏览器的地址栏中键入 http:/localhost:8080 或者 http:/127.0.0.1:8080 后,如 果能看到 tomcat 的欢迎页就说明 JSP 实验环境已经建成,可进入下一步实验。 要关闭 Web 服务器则运行 shutdown.bat。 (三)数据库设计 数据库连接数据库连接对动态网站来说是最为重要的部分,从 JSP 中访 问数据通常是通过 Java Bean 来实现的。Java 中连接数据库的技术是 JDBC(Java Database Connectivity)。很多数据库系统带有 JDBC 驱动程序,Java 程序就通过 JDBC 驱动程序与数据库相连,执行查询、提取数据等等操作。Sun 公司还开发 了 JDBC-ODBC bridge,用此技术 Java 程序就可以访问带有 ODBC 驱动程序的 数据库,目前大多数数据库系统都带有 ODBC 驱动程序,所以 Java 程序能访问 诸如 Oracle、Sybase 、MSSQL Server 和 MS Access 等数据库。 1 JavaBean JavaBeans 是基于 java 的组件模型,由属性,方法和事件 3 个部分组成。 在该模型中,Javabeans 可以被修改或与其他组件结合生成新组件或完成的程序。 它是一种 Java 类,通过封装成为具有某种功能或者处理某个业务的对象。因此, 也可以通过嵌在 JSP 页面内的 Java 代码访问 Bean 及其方法。Bean 的含义是可 重复使用的 Java 组件。所谓组件就是一个由可以自行进行内部管理的一个或几 个类所组成,外界了解其内部信息和运行方式的群体。使用它的对象只能通过 接口来操作。 Bean 实际上是根据 JavaBeans 技术标准所指定的 Bean 的命名和设计规范而 编写的 Java 类。Bean 并不需要继承特别的基类(base class)或事项特定的接口 (Interface) 。JavaBeans1.01-A 规范定义了该组件的 5 种重要的机制: 1) 内省(Introspection) :组件可发表其支持的操作和属性,同时也支持在其他 组件中发现重复利用的对象库,例如用户权限和电子自动回复等。 2) 通信(Communication ):生成和收集组件的消息事件 3) 持续(Persistence ):存放组件的状态。 4) 属性(Properties):支持组件布局的控制,包括组件占用的空间和组件的相 对位置。 5) 定制(Customization):开发者可控制组件所需的改变机制。 6) Javabeans 可实现在设计平台被规定的操作,一般可表示为简单的图形界面, 如按钮,光标和菜单等,也可以是不可见的接受并处理事件的操作,如数 15 据库连接 Bean。JSP 吸引人之处很大程度上在于它使用了 Javabeans 组件技 术,但 JSP 中只支持不可见的 Javabeans。 2 jdbc 创建一个简单的数据库连接 Bean 需要 5 个步骤:导入 JDBC 标准类库,注 册数据库驱动程序,建立数据库连接,数据库操作和关闭。 1)导入 JDBC 标准类库 JDBC(Java DataBase Connectivity, Java 数据库连接)是一种可用于执行 SQL(Structured Query Language ,结构化查询语言) 语句的应用程序接口,为了将 服务器从客户端接受信息存入数据库,需要使用 JDBC 标准类库,所以需要在 程序的开始加入以下 import 语句: Import java.sql.*; 2)注册数据库驱动程序 在一个 JDBC 的驱动程序被用来建立数据库连接之前,必须向数据库驱动 程序管理器注册该驱动程序。管理器的主要职责是保证所有的驱动程序对象可 被 JDBC 的用户程序访问。当一个 JDBC 驱动程序被载入时,它将自动地在驱 动程序管理器上注册。 可以调用 Class.forName()方法载入一个 JDBC 驱动程序: String strDBDriver=sun.jdbc.odbc.JdbcOdbcDriver; Class.forName(“strDBDriver ”); Class.forName()是 Java 的 Class 类的静态方法,它使 Java 虚拟机动态的寻找, 载入并连接指定的类。 一个 JDBC 的驱动程序就是一个可以通过 classpath 找到一个 Java 类。这里 载入的 JDBC_ODBC 桥驱动程序就在 sun.jdbc.odbc 包中 3)建立数据库连接 载入一个正确的驱动程序后,就可以用它来建立与数据库的连接了。一个 JDBC 的数据库连接是用数据库 URL 来标记的。连接标记将告诉驱动程序管理 器使用哪个驱动程序和连接哪个数据库。数据库 URL 的基本形式: jdbc:: URL 的第一部分表示使用 JDBC 建立数据库连接。第 2 部分表示所使用的 JDBC 驱动程序名或网络协议名。第 3 部分是数据源标记,它映射所需连接的 数据库。例如数据库的数据源标记是 firm 则同 JDBC-ODBC 桥连接该数据库所 用的数据库 URL 为 jdbc:odbc:firm. 可以通过 DriverManager 类的静态方法 getConnection()来建立一个数据库连 接: String strDBUrl=jdbc:odbc:firm; conn=DriverManager.getConnection(strDBUrl,sa,); 一旦建立数据库连接,就可以打开该目标数据库,并通过该连接向目标数 据库 SQL 指令。SQL 指令通常会执行查询,插入,更新和删除等数据库操作。 要执行 SQL 指令,必须通过 Connection 对象的 createStatement()方法来创建一 个 STMT 对象。STMT 对象提供了许动方法来执行不同的数据库操作。可以 通 过以下方式创建 STMT 对象: 16 private Connection conn=null; private Statement stmt=null; ResultSet rs=null; stmt=conn.createStatement(); 4)数据操作 与数据库建立了连接后,接着就要进行数据操作了。数据操作包括查询, 插入,更新和删除等操作。要对数据库精心操作可以使用 STMT 对象的 executeQuery()方法。executeQuery()方法接受一个 SQL 指令字符串作为参数, 返回结果信息是 ResultSet 对象。具体如下: rs=stmt.executeQuery(sql); 5)关闭 因为数据库连接是宝贵和有限的资源,因此必须在数据库操作完毕后即使 释放数据库连接。Connection 对象提供了一个简单的关闭数据库连接的方法 close()。例如: conn.close(); stmt.close。 利用数据库原理相关知识,对数据库设计和每个模块、每个界面的具体设 计。此系统采用的数据库软件是 sqldb。 以下是系统需要的六张主要数据表的结构。 字段名 字段类型 null default 描述 主键 外键 id bigint 主键 increment code varchar(100) 年级代码 name varchar(200) 年级名称 School_grade 年级 字段名 字段类型 null default 描述 主键 外键 id bigint 主键 increment code varchar(100) 班级代码 name varchar(200) 班级名称 school_grade bigint 所在年级 school_grade School_class 班级 字段名 字段类型 null default 描述 主键 外键 id bigint 主键 increment code varchar(50) 课程编码 name varchar(200) 课程名称 credit_hour float 学分 pass float 及格线 school_grade bigint 所在学期 school_grade Lesson 课程 17 字段名 字段类型 null default 描述 主键 外键 id bigint 主键 increment username varchar(200) 用户名 password varchar(200) 密码 truename varchar(200) 真实姓名 sex integer 性别 school_class bigint 所在班级 school_class Student 学生 字段名 字段类型 null default 描述 主键 外键 id bigint 主键 increment score float 成绩 student bigint 用户 student lesson bigint 课程 lesson Score 成绩 字段名 字段类型 null default 描述 主键 外键 id bigint 主键 increment username varchar(200) 用户名 password varchar(200) 密码 Admin 管理员 四、 系统的实现 (一) 学生查询成绩部分 访问 http:/localhost:8080/ST/index.html。 测试用户名:test 测试密码:test 学生需要先登录才能进入查询程序的界面, 进入系统前要对用户和密码进行 校验,即用户名和密码正确才能进入系统。并且若用户连续三次密码输入错误, 则不能再次输入。 18 输入用户 ID 后,按键,系统校验该用户是否存在 .在公共方法 jTuser_keyPressed()中,定义一个 String 类型变量 sqlSelect 用来生成 SQL 查询语 句,再定义一个公共类 PetrieveObject 类型变量 retrieve,然后调用 retrieve 的 getObjectRow()方法,其参数为 sqlSelect,用来判断该用户是否存在。 如果用户名与密码不正确,就会弹出警告信息,要求用户重新输入。 19 登录成功后就可以看到登录学生的个人信息和相关学科的分数。 (二) 后台管理成绩部分 访问 http:/localhost:8080/st/admin.html,进入后台管理界面。 测试管理员帐号:admin 测试密码:admin 20 输入用户 ID 之后,按键,系统校验该用户是否存在。在公共方法 jTuser_keyPressed()中,定义一个 String 类型变量 sqlSelect 用来生成 SQL 查询 语句,再定义一个公共类 RetrieveObject 类型变量 retrieve,然后调用 retrieve 的 getObjectRow()方法,其参数为 sqlSelect,用来判断该用户是否存在。该方法的 详细代码如下: Public void jTextField1_keyPressed(KeyEvent keyEvent) If(keyEvent.getKeyCode()=KeyEvent.VK_ENTER) String sqlSelect=null; Java.util.Vector vdata=null; sqlSelect=”select username from tb_user where userid=”+jTextField1.getText().trim()+”; appstu.util.RetrieveObject retrieve=new appstu.util.RetrieveObject(); vdata=retrieve.getObjectRow(sqlSelect); if (vdata.size()0) jPasswordField1.requestFocus(); else Javax.swing.JOptionPane.showMessageDialog(null,”该用户不存在”,”错误” ,javax.swing.JOptionPane.ERROR_MESSAGE); jTextField1.requestFocus(); 如果用户存在,再输入对应的口令,输入的口令正确时,单击“登录”按 钮,进入系统。公共方法 jTuser_keyPressed()的设计与 jTextField1_keyPressed 21 的设计方法相似,其关键代码如下: Public void jBlogin_actionPerformed(ActionEvent e) String sqlSelect=null; sqlSelect=”select count(*)from tb_user where userid=”+jTextField1.getText().trim() +”and pass=”+pass+”; Java.util.Vector vdata=null; appstu.util.RetrieveObject retrieve=new appstu.util.RetrieveObject(); vdata=retrieve.getObjectRow(sqlSelect); if(Integer.parseInt(String.valueOf(vdata.get(0)0) AppMain frame=new AppMain(); This.setVisible(false); else Javax.swing.JOptionPane.showMessageDialog(null,”密码错误”,” 错误”, Javax.swing.JOptionPane.ERROR_MESS AGE); jPasswordField1.requestFocus(); return; 登录成功可以选择功能模块进行操作。其中包括有年级班级管理模块、课 程管理模块、学生管理模块、系统管理模块。这些模块都只有管理人员才能使 用。 22 管理年级信息,年级管理模块可以添加、修改、删除各年级的 ID、年级编 码及年级名称。 23 管理班级信息,班级信息设置用来维护班级的基本情况,包括对班级信息 的添加、修改和删除等操作。 通过调用 Jdbcadapter,完成对班级表的相应操作。执行该模块程序,首先从 数据表中检索出班级的基本信息,如果存在数据用户单击某一条数据之后可以 对其进行修改、删除等操作。单击 jf_view_sysset_class.java 文件的 source 代码, 编辑窗口首先导入 UTIL 公共包下的相应类文件;定义一个 BOOLEAN 实例变 量 INSERTFLAG,用来标志操作数据库的类型,然后定义一个私有方法 BUILDTABLE() ,用来检索班级数据。代码如下: private void buildTable() DefaultTableModel=null; String name =“班级编号”,” 年级编号”,”班级名称”; String sqlstr=”select*from tb_classinfo”; Appstu.util.retrieveObject bdt=new appstu.util.RetrieveObject(); Tabemodel=bdt.getTableModel(name,sqlstr); jTable.setModel(tablemodel); jTable.setRowHeight(24); 单击“新增”按钮,用来增加一条新的数据信息。在公共方法 jBadd_actionPerformed()中定义局部字符串变量 sqlgrade,用来生成年级 sql 的查 询语句,然后调用公共类 RetrieveObject 的 getObjectRow()方法,其参数为 sqlgrade,将返回结果数据解析后添加到 jComboBox1 组件中。其 jBadd_actionPerformed()方法的代码如下: Public void jBadd_actionPerformed(ActionEvent e) /获得年级名称 /if(jComboBox1.getItemCount()=0) Insertflag=true; RetrieveObject bdt=new RetrieveObject(); String sqlgrade=”select gradeName from tb_gradeinfo”; Java.util.Vector vdata=new java.util.Vector(); Vdata=bdt.getObjectRow(sqlgrade); jComboBox1.removeAllItems(); for (int i=0;ivdata.size();i+) jComboBox1.addItem(vdata.get(i); ItemEvent item=new ItemEvent(jComboBox1,0,jComboBox1, jComboBox1.getSelectedIndex(); jComboBox1_itemStateChanged(item); jTextField2.setText(“”); jTextField2.requestFocus(); 24 用户单击表格上的某条数据后,程序会将这条数据填写到 jPanel2 面板上的 相应组件上,以方便用户进行相应的操作,在公共方法 jTable1_mouseClicked() 中定义一个 string 类型的局部变量 sqlStr,用来生成 sql 查询语句,然后调用公共 类 RetrieveObject 的 getObjectPow()方法,进行数据查询,如果找到数据则将该 数据解析显示给用户,代码如下: Public void jTable1_mouseClicked(MouseEvent e) Insertflag=false; String id=null; String sqlStr=null; Int selectrow=0; Selectrow=jTable1.getSelectedRow(); If(selectrow0)return; Id=jTable1.getValueAt(selectrow,0).toSwing(); sqlStr=”SELECT c.classID,d.gradeName FROM tb_classinfo c INNER JOIN” +”tb_gradeinfo d ON c.gradeID=d.gradeID” + “where c.classID=”+id+”; Java.util.Vector vdata=null; RetrieveObject retrive=new RetrieveObject(); Vdata=retrive.getObjectRow(sqlStr); jComboBox1.removeAllItems(); jTextField1.setText(vdata.get(0).toString(); jComboBox1.addItem(vdata.get(1); jTextField2.setText(vdata.get(2).toString(); 25 管理课程信息,课程管理模块可增加、修改、删除学院各班级开设的课程 数据,包括课程的 ID、课程代码、课程名称、课程学分、该课程的及格分数线 及开设该课程的年级信息。 26 评分模块主要是给学习某一课程的学生评分,通过选择课程的名称,可录 入、修改、删除和查看学习该门课程所有学生的成绩。 this.tbar = new Ext.Toolbar(选择课程:, filter, -, id: addMenu, text: 添加, iconCls : add, tooltip : 添加, disabled: true, handler: function() if (this.filter.getValue() = ) Ext.Msg.alert(提示, 请先选择课程 ); else var initValue = id: null, student.truename: null, student.id: null, score: 0 ; var p = new this.dataRecord(initValue); this.stopEditing(); this.store.insert(0, p); this.startEditing(0, 0); p.dirty = true; p.modified = initValue; if(this.store.modified.indexOf(p) = -1) this.store.modified.push(p); if (this.insertedRecords.indexOf(p) = -1) this.insertedRecords.push(p); .createDelegate(this) , id: deleteMenu, text: 删除, iconCls : delete, tooltip : 删除, disabled: true, handler: function() if (this.filter.getValue() = ) Ext.Msg.alert(提示, 请先选择课程 ); 27 else Ext.Msg.confirm(信息, 确定要删除?, function(btn) if (btn = yes) var sm = this.getSelectionModel(); var cell = sm.getSelectedCell(); var record = this.store.getAt(cell0); if(this.store.modified.indexOf(record) != -1) this.store.modified.remove(record); / 记录删除了哪些 id var id = record.get(id); if (id = null else if (id != null this.store.remove(record); , this); .createDelegate(this) , id: saveMenu, text: 提交修改 , iconCls : edit, tooltip : 提交修改, disabled: true, handler: function() if (this.filter.getValue() = ) Ext.Msg.alert(提示, 请先选择课程 ); else var m = this.store.mo
展开阅读全文