已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业设计说明书 毕 业 设 计 题 目 程序设计评判系统 摘 要 随着 Internet 的广泛引用 计算机技术的飞速发展 同学们提高程序设计能力的愿望 越发强烈 本在线评判系统利用 BS 模式和 Windows 系统提供的应用程序接口 借助网络这 一方便而又有效的平台 可以快速方便地返回评测结果给用户 并且提供了交流的场所 从而起到提高同学们计算机编程能力的作用 本系统以 MyEclipse8 6 作为开发环境 主要使用 ORM 对象持久化技术 以 Hibernate 作为后台解决方案 配合 Struts 框架作为前 台的开发 应用 Tomcat6 0 作为 Web 服务器 同时选用开源的 MySQL 作为连接的数据 库 实现了分层的目的 即显示层 业务逻辑层 数据持久层和数据库层 整个系统的 各个模块保持高度的可重用性 各个模块之间的耦合程度非常低 保证了系统的高可 扩展性 高可维护性 本文介绍了该系统的产生背景 并指出进行开发的需求分析 然后给出该系统的 业务范围 在各种基本功能要求下 分析了系统的具体需求 其次 本文阐述了关于 该系统整体结构的概要设计方案 说明了模块的层次与处理的流程 再次 针对该系 统的答题及判题模块 本文给出了详细的结构设计 逻辑流程 为后面所进行的编码实 现打下了基础 最后 本文提出了系统测试方案 并列出了针对判题处理模块的测试 结果 关键词关键词 STRUTS 框架 HIBERNATE MYSQL 数据库 Abstract With the wider use of the Internet computer technology rapid development students capacity The online evaluation system using B S mode and Windows API using the network this convenient and effective platforms we can quickly and easily return to the evaluation results to the users and to provide a location for the exchange the students as a Web server subscribe to raise revenue as a link to the MySQL database to achieve the purpose of layered demonstrate that the layer business logic tier Data Persistence and the database layer The entire system of the various modules to maintain a modules is extremely low guarantee the system s gives the business scope of the basic functional requirements analysis of the system s specific needs Secondly this paper on the structure of the overall system design outline on the module level with the process Again against the system and the answer was that module this paper presents a detailed structural design logic flow behind for the Coding laid the groundwork Finally this paper presents a specific and system testing program and listing the processing module that the test results Key words Struts framework Hibernate MySQL database 目录 for Computing Machinery 即美国计算机协会 ICPC International Collegiate Programming Contest 即国际大学生程序设计竞赛 ACM 国际大学生程序设计竞 英文全称 ACM International Collegiate ProgrammingContest ACM ICPC 或 ICPC 是由美国计算机协会 ACM 主办的 一 项旨在展示大学生创新能力 团队精神和在压力下编写程序 分析和解决问题能力的 年度竞赛 经过近 30 多年的发展 ACM 国际大学生程序设计竞赛已经发展成为最具 影响力的大学生计算机竞赛 引用至百度百科 1 1 21 1 2 课题的产生课题的产生 随着同学们对于编程积极性的不断提高 这就需要一套专门的评判系统来完成 虽 然 有些高校以有成功的在线评判软件 但都是基于自己本校具体情况来开发的 有 些功能对其它院校来说 并非实用 题库和测试时间也难以自主控制 达不到集中的 训练测重点 除此之外 只有在网络环境下才能够使用 而对于未连到 Internet 的局域 网来说就不适用了 因此 重新开发一套适合的评判系统是很必要的 大多数高等院校都积极参加了程序设计大赛 我们院校也不例外 但是在练习和 测验过程之中 发现并没有适合我们学院特色的程序设计评判系统 只能运用传统的 方式进行练习 因此 我的课题是开发出一套程序设计评判系统 为程序设计比赛练 习及平时测验而用 提高平时训练的质量及学习的效率 同时也提高同学们的动手能 力 1 2 课题产生的意义课题产生的意义 开发一套适合本校的程序设计评判系统 除了提高了我们平时练习的效率此外 本系统还能应用在某些计算机学科上的训练及考试 如程序设计训练 校三级考试系 统等学科上的应用 实现自动出题及评判工作 极大地减少了考务方面的冗繁环节 减清了老师的工作负担 第二章第二章 系统发展与软硬件要求系统发展与软硬件要求 2 1 发展动态发展动态 国内以有不少高校开发出了他们的在线评判系统 OJ onJudge 这些院校所用的 大体上都是采用 BS 架构 除了选用的开发语言和程序编译器不同 其它如出题的模块 答题的模块 判题的模块等模块大体上没有明显的区别 北京大学采用的是 Servlet JavaBean 编程技术 运用 G GCC Java Pascal C C 六种程序编译器 可以说是包含了现在的所有主流的程序编译器 浙江大学 用 PHP 动态语言来开发的 运用了 C C GPC FPC 四种程序编译器 因此 我的课题也选用 C 编译器 国外对程序设计评判系统的开发与研究以相当的完善 他们的开发理念 所运用 的开发方法与国内的完全不同 由于国内各高校开发的系统 主要的使用者是面向我 们中国的大学生而开发的 但是国外运用的是以文件上传的方式 其他人根本无法看 到程序的源代码 保证了安全性 通过国内与国外的对比不难发现 国内开发的软件产品及设计理念更侧重于训练 测验模式 操作方便快捷 对于安全性的要求不是很高 出发点是训练编程的能力 而国外的软件产品更多的是侧重于编程者信息传输的安全性与保密性 2 2 课题主攻方向课题主攻方向 现在的 OJ 系统的业务逻辑及所运用的关键技术已经相当的纯熟 出题模块 答题 模块 判题模块及线程轮询模块都相当完善 可以直接作为标准来引用 虽然技术上 以相当成熟 但国内各高校的 OnJudge 系统几乎都是两层的系统 即业务逻辑层和数 据库层 绝大多数都使用 Servlet 单一技术来开发 这种结构的系统很难维护 没有很 好的程序可扩展性 因此 我的课题主攻方向重点是研究 OnJudge 系统的层次结构 对原有的系统进行重构 运用先进的 MVC 设计模式和数据持久层技术来实现程序设计 评判系统 经分析与考虑之后 OJ 系统初步可划分为 表示层 业务逻辑层 持久化 层 数据库层 2 3 系统开发环境及技术方案系统开发环境及技术方案 1 采用 Struts Hibernate JSP 开发框架 2 系统采用四层体系结构 3 操作系统平台 Windows 7 4 数据库系统 MySQL 5 0 5 服务器平台 Tomcat 6 0 6 集成开发环境 MyEclipse 8 6 第三章第三章 系统需求与分析系统需求与分析 3 1 系统总体结构系统总体结构 本系统主要包括四个模块 即用户管理模块 题库管理模块 答题模块 判题模块 本系统的使用提高平时训练的质量及学习的效率 此外 还能够应用到小型上机考试 中 该系统主要面向本校师生的程序设计服务 目的在于提高学生程序设计的动手能 力 最终用户是我们学院的师生 同学们掌握的专业知识可以自己理解和操作该系统 需要较少的维护人员 无需进行培训 预期使用频率为 30 50 人天 3 2 系统可行性分析系统可行性分析 可行性分析对于整个系统的开发至关重要 是系统开发的成败的关键 系统可行 性大致包括如下四类准则 经济可行性是对一个项目或方案的成本效益的度量 技术可行性是对一种特定技 术方案的现实性以及技术资源和专家的可用性的度量 时间可行性是对项目时间表的 合理性的度量 运行可行性是对方案在组织中的合适程度的度量 它也是就人们对该 系统的感觉的度量 3 2 1 经济可行性经济可行性 开发所用的硬件设备都已配置好 采用 Windows 7 平台 软件设备所需要的 Web 服务器可以使用开源的 Tomcat 服务器 开发工具采用开源的 MyEclipse 开发平台 数据 库采用 MySql 足够题库的数据存储 所有开发应用软件都是开源 免费的 因此无需 额外的经济投入 开发这个系统所需的软硬件资源都已齐备 因此在经济上完全可行 3 2 2 技术可行性技术可行性 面临的关键问题主要有 编译器如何在服务器端自动调用 如果编译阶段通过后 系统如何调用事先准备好 的测试数据来检验程序 如何进行结果控制等 所用到的关键技术主要有 IO 流的管道技术 java 调用外部程序的技术 线程轮 询技术 文件管理技术 学校图书馆拥有大量所需资料 书籍和电子图书以供参考 外加导师的指导 在规 定的时间内 鉴于现有的软硬件资源 系统可以基于 BS 系统构建 采用 MVC 设计 模式 保证系统的灵活性 可维护性 数据库上采用开源的 MySql 做为后台开发 持 久层采用 Hibernate 技术 并以开源的 Eclipse 作为开发环境 基本可以熟练的掌握 因此 开发这个系统在技术上是完全可行的 3 2 3 时间可行性时间可行性 从系统开始确定到最终实施的时间 根据本项目的规模来分析 时间是充分的 基本上可以达到预期的目标 此外 根据实际的工作量和开发所面对的困难 可以在 限定的时间内完成 3 3 数据流程分析数据流程分析 3 3 1 功能级数据流整体分析功能级数据流整体分析 根据前面描述的系统基本特点及其完成的功能 可得系统与外部实体之间的操作 关系 反应了普通用户和管理员两个外部实体与系统进行交互的整体关系 描述了系 统的运作环境 系统的功能级数据流图如图 3 1 所示 3 1 功能级数据流图 3 3 2 系统用例描述系统用例描述 整个系统中存在管理员和普通用户两个角色 普通用户和管理员通过 WEB 页登录 本系统后 可以完成各自相应的功能操作 系统用例图如 3 2 程程序序设设计计评评判判系系统统 用户注册 用户修改 试题浏览 答题状态 登 录 学 生 管理员 提交答题 题目添加 题目修改 用户删除 用户查看 题目查看 题目删除 管理员登录 3 2 用例图 用例描述如下 例 1 学生在线判题 1 新用户注册 2 注册后的用户登录 3 浏览试题题目 进入详细页面 4 用户开始答题 5 提交后 查看答题状态 例 2 管理员后台管理 1 管理员登录 2 管理员查看并添加新题目 3 对所添加的题目进行删除及修改 4 查看注册用户 对非法用户进行限制或删除 5 管理员退出登录 3 3 3 系统开发技术方案系统开发技术方案 本评判系统是基于四层结构 BS 架构模式设计的 采用 Hibernate Struts JSP 技术 进行实现 普通用户和管理员通过 WEB 页登录到系统并获得不同的操作权限 然后完 成各自的操作 3 4 Struts framwork 的使用的使用 Struts 为 Java Web 应用提供了现成的通用的框架 Struts 可以大大提高 Web 应用 的开发速度 如果没有 Struts 开发人员不得不首先花大量的时间和精力来设计 开发 自己的框架 如果在 Web 应用中恰到好处地 Struts 将把从头开始设计的框架的时间 节省下来 使得开发人员可以把精力集中在如何解决实际业务问题上 Struts 有一组相互协作的类 Serlvet 以及 JspTagLib 组成 基于 Struts 构架的 web 应用程序基本上符合 JSP Model2 的设计标准 可以说是 MVC 设计模式的一种变化类 型 根据上面对 framework 的描述 我们很容易理解为什么说 Struts 是一个 web framwork 而不仅仅是一些标记库的组合 但 Struts 也包含了丰富的标记库和独立于 该框架工作的实用程序类 Struts 有其自己的控制器 Controller 同时整合了其他的一些技术去实现模型层 Model 和视图层 View 在模型层 Struts 可以很容易的与数据访问技术相结合 包括 EJB JDBC 和 Object Relation Bridge 在视图层 Struts 能够与 JSP Velocity Templates XSL 等等这些表示层组件想结合 3 5Hibernate 简介简介 Hibernate 是一个开放源代码的对象关系映射框架 可以应用在任何使用 JDBC 的 场合 既可以在 Java 的客户端程序使用 也可以在 ServletJSP 的 Web 应用中使用 Hibernate 是对象关系映射 ObjectRelational Mapping 的解决方案 简写为 ORM 简单 地说就是将 Java 中的对象与对象关系映射至关系型数据库中的表格与表格之间的关系 Hibernate 提供了这个过程中自动对应转换的方法 是 Java 应用和关系数据库之间的桥 梁 它负责 Java 对象和关系数据之间的映射 Hibernate 内部封装了通过 JDBC 访问 数据库的操作 向上层应用提供了面向对象的数据访问 API 3 6 关系型数据库关系型数据库 关系型数据库在处理大量数据等方面 有着明显的优势 关系型数据库是以服务器的 方式提供数据服务的 对于数据的管理有着良好的控制 在维护数据的完整性 安全性考 虑全面 对于本系统而言 数据库整个过程的核心部分 本系统采用 MySQL 作为后台 数据库 对后台数据进行操作 添加 修改 删除 查询等 第四章第四章 系统总体设计与实现系统总体设计与实现 4 1 数据库设计数据库设计 4 1 1 逻辑结构设计逻辑结构设计 根据对系统整体结构的分析 为完成系统各个功能的需求 故在数据库中建立了 下面几个具体的表 1 用户表 用户编号 密码 昵称 院校 邮箱 类型 语言 提交数量 解决 数量 注册时间 访问时间 2 题目表 题目编号 标题 描述 输入 输出 输入路径 输出路径 用例输 入 用例输出 提示 来源 日期 时间限制 内存限制 正确数量 提交数量 错 误数量 正确率 题目难度 提交人数 是否解决 用例时间限制 3 状态表 状态编号 题目编号 用户编号 运行结果 所用时间 所占内存 提交时间 主类名 代码长度 选择语言 提交数量 4 源代码表 状态编号 源代码 5 编译表 状态编号 错误信息 4 1 2 物理结构设计物理结构设计 根据逻辑结构 本系统物理数据库设计结构如图 4 1 所示 4 1 数据库表图 数据库的具体设计 表 4 1 用户信息表 users 序号字段名称数据类型必须项关键字默认值字段描述 1userIdVarchar 20 YPRI 用户编号 2PasswordVarchar 20 Y 用户密码 3NickVarchar 100 Y 用户昵称 4SchoolVarchar 100 NNULL 所属院校 5EmailVarchar 100 YNULL 邮 箱 6userType Int 4 N0 用户类型 7LanguageInt 11 N0 选择语言 8SubmitInt 11 N0 提交数量 9SolvedInt 11 N0 解答数量 10regTimeDatetimeNNULL 注册时间 11accessTimeDatatimeNNULL 访问时间 表 4 2 题目信息表 problem 序号字段名称数据类型必须项关键字默认值字段描述 1proIdInt 11 YPRINULL 题目编号 2TitleVarchar 200 Y 题目标题 3DescriptionTextNNULL 题目描述 4InputTextNNULL 输入内容 5OutputTextNNULL 输出内容 6Input pathVarchar 255 NNULL 输入路径 7Output pathVarchar 255 NNULL 输出路径 8sampleInputTextNNULL 例子输入 9sampleOutputTextNNULL 例子输出 10HintTextNNULL 题干提示 11SourceVarchar 100 NNULL 题目来源 12InDateDatetimeNNULL 提交日期 13timeLimitInt 11 N0 时间限制 14memoryLimitInt 11 N0 内存限制 15AcceptedInt 11 N0 正确数量 16SubmitInt 11 N1 提交数量 17RatioInt 11 N0 正确率 18DifficultyInt 11 N0 题目难度 19ErrorInt 11 N0 错误数量 20Submit userInt 11 N0 提交人数 21Solvedint 11 N0 是否解决 22Case time limitInt 11 N0 用例时间 表 4 3 答题状态表 solution 序号字段名称数据类型必须项关键字默认值字段描述 1solIdInt 11 YPRI 状态编号 2proIdInt 11 YMUL 题目编号 3userIdVarchar 20 YMUL 用户编号 4TimeInt 11 N0 所用时间 5MomeryInt 11 N0 所用内存 6inDateDatetimeNNULL 提交时间 7classNameVarchar 20 N0 主类名 8ResultInt 11 NMUL0 运行结果 9codeLengthInt 11 N0 代码长度 10LanguageInt 11 N0 选择语言 11NumInt 4 N0 提交数量 表 4 4 源代码信息表 sourcecode 序号字段名称数据类型必须项关键字默认值字段描述 1solidInt 11 YPRI 状态编号 2SourceTextNNULL 源代码 表 4 5 编译信息表 compileinfo 序号字段名称数据类型必须项关键字默认值字段描述 1solidInt 11 YPRI 状态编号 2ErrorTextNNULL 错误信息 4 2 SQL 脚本设计脚本设计 建立数据库的 SQL 脚本如下 databaseacm create database acm useacm TABLE 1 users table field 11 create table users userIdvarchar 20 passwordvarchar 20 not NULL nickvarchar 100 not NULL schoolvarchar 100 emailvarchar 100 userTypeint 4 languageint 11 default 0 submitint 11 default 1 solvedint 11 default 0 regTimedatetime default NULL accessTimedatetime default NULL primary key userId insert into users userId password nick userType regTime values admin admin manager 2 2007 06 10 08 27 49 select from users TABLE 2 problem table field 22 create table problem proIdint 11 not null auto increment primary key titlevarchar 200 not null description text default NULL input text default NULL output text default NULL input pathvarchar 255 default NULL output pathvarchar 255 default Null sampleInput text default NULL sampleOutput text default NULL table field 11 create table solution solIdint 11 not null primary key proIdint 11 default 0 not null userIdvarchar 20 not null timeint default 0 not null momeryint default 0 not null inDatedatetime not null default 0000 00 00 00 00 00 classNamevarchar 20 not null resultint 11 default 0 not null codeLengthint 11 default 0 not null languageint 4 default 0 not null numint 4 default 0 not null index proId index userId index result TABLE 4 compileinfo table field 2 create table compileinfo solIdint 11 default 0 primary key error text default null TABLE 5 sourcecode table field 2 create table sourcecode solIdint 11 default 0 primary key source text 4 3 系统架构设计系统架构设计 为了满足程序设计评判系统的应用需求 进行灵活的评判分析 本系统采用 BS 结 构作为系统的解决方案 系统结构图如 4 2 图所示 4 2 系统架构图 如图 4 3 所示 系统物理上分为三个部分 浏览器客户端 应用服务器 数据库 服务器 所有用户通过浏览器访问应用服务器 应用服务器和数据库服务器交互获得 需要的数据 采用 MySQL 作为数据存储数据库 采用 Hibernate Struts 技术作为系统 的的解决方案 系统逻辑上分为四层 数据库 持久层 业务逻辑层和表现层 以使系 统具有更好的可扩展性 保证了系统的高可扩展及高可维护性 后台数据持久层采用 ORM 对象关系映射 模式 其体系结构示意图如图 采用 Tomcat6 0 作为系统的应 用服务器 运用了 hibernate 默认的连接池技术 无需在另外配置 客户端采用浏览器 形式 满足零客户端的易用性要求 4 3 ORM 模式图 4 4 系统功能设计系统功能设计 整个系统初步划分为四个模块 即用户管理模块 题库管理模块 答题模块 判题 模块 用户管理模块主要包括用户登录 用户注册和用户信息修改 题库管理模块主 要包括题目的添加 修改 删除 查询和用例添加 答题模块主要包括界面显示和问 题提交 判题模块主要包括程序编译和程序运行 其中 所面临的关键问题就是编译 器如何在服务器端正常运行 整个系统的功能结构如图 4 4 4 4 功能设计图 如图 4 5 整个系统四大功能介绍分别如下 1 用户信息管理 用户信息管理由普通用户及管理员共同完成 主要实现功能有 3 个 普通用户能够在线注册新用户信息 用户编号不能重复 用户注册模块将用户提交 的个人信息存储到数据库之中 如图 4 5 用户注册实现图 为了保证用户安全 普通用户可以对以注册的个人信息进行修改 业务处里过程中 管理员可对非法用户有删除的权限 2 题库信息管理 题库信息管理主要由管理员来完成 主要实现功能有 3 个 管理员能够按照固定的格式添加新的试题及试题用例 管理员有删除的权限 对 于存在问题或有错误的试题 管理员可以进行修改 3 答题模块 普通用户能够浏览试题 或根据标题进行搜索来查看题目的详细信息 进入提交 页面 选择所要答题的编号及所运用的语言 编写出所要实现的程序代码 提交程序 进入答题状态页面 查看所做的题目的相关信息 4 判题模块 主要由编译 运行和答案比对三个功能组成 整个过程运行于服务器端 是本系统 的核心部分 当用户把编写好程序代码提交后 系统首先会把代码存到数据库所对应 的 Sourcecode 表中 同时 再把代码拷贝一份到有固定文件名 如 main app 中作为 编译时的源文件 若再次提交 则上一次写入的源代码将会被新的代码所覆盖 然后 根据用户提交时所选择的语言 来调用相应的语言编译器对具有固定源文件名的文件 进行编译 若有错误 则直接跳出判题模块到答题状态页面 显示结果为 Compile Error 若编译通过 则进入运行环境 执行编译后的文件 若有运行时出现错误 则 直接跳出判题模块到答题页面 显示结果为 Run Error 若运行也通过 则调用测试 用例对运行后的文件进行逻辑测试 此时以进入答案比对功能模块 若测试用例的输 出与所给的测试用例输出比较后 结果为真 则跳转到答题状态页面 显示结果为 接受 accepted 说明用户所提交的代码成功 相应表中的提交数量及解决数量都 会加 1 正确率也会发生改变 若比对的结果为假 跳转到答题状态页面 显示结果为 Answer Error 除此之外 如果超过题目给定的限制时间 限制内存大小及用例 时间限制 则会在答题状态页面中显示结果为 超时 溢出 或 用例超时 等信 息 由于系统使用轮询进程 同一时刻只能有一个用户的程序被评判 此时其它用户 提交的程序只能进入等待状态 在答题状态页面结果显示为 等待中 Waitting 信 息 直到被评判过为止 最后完成判题功能 如图 4 6 所示 开开始始 问问题题浏浏览览 答答题题页页面面 DB 开开始始判判题题 进进程程 生生成成工工作作路路径径 存存取取用用户户程程序序 编编译译过过程程 运运行行过过程程 用用例例比比对对 提提交交正正确确 结结果果 结结束束通通过过 通通过过 相相等等 提提交交错错误误 结结果果 进进入入 提提交交 产产生生 执执行行 执执行行 Y N 执执行行 执执行行 Y 执执行行 Y N N 存存储储 重重定定向向 4 6 判题流程图 4 5 页头和页尾设计页头和页尾设计 页头和导航栏设计 center cellpadding 0 cellspacing 0 用户修改 管理员登录 root jdbc mysql localhost 3306acm org profile JDBC ACM 111 org gjt mm mysql Driver 6 1 2 编写持久层代码编写持久层代码 用户类 Users java 的部分代码如下 packagecom acm problem 题目描述 private String input 题目所要输入的内容介绍 private String output 题目所要输出的内容介绍 private String inputPath 题目的输入路径 private String outputPath 题目的输出路径 private String sampleInput 用例输入 private String sampleOutput 用例输出 private String session null static Transaction tx null static Logger logger Logger getLogger ProblemDAO class 根据 ID 查找一个题目 public static Problem findById int id Problem pro null try session HibernateUtil getSession tx session beginTransaction pro Problem session get Problem class id txmit catch HibernateException e e printStackTrace tx rollback finally HibernateUtil closeSession return pro 查找下一题目 ID publicintfindNextId intproId 0 try session HibernateUtil getSession tx session beginTransaction Query q session createQuery select max p proId from Problem p List list q list for inti 0 i list size i proId Integer list get i 1 txmit catch HibernateException e e printStackTrace tx rollback finally HibernateUtil closeSession returnproId 根据标题查找题目集合 public static List findByName String title List list null try session HibernateUtil getSession tx session beginTransaction Query q session createQuery from Problem p where p title title q setString 1 title list q list txmit catch HibernateException e e printStackTrace tx rollback finally HibernateUtil closeSession return list 查找所有题目的集合 public static List getAllProblem List list null try session HibernateUtil getSession tx session beginTransaction list session createQuery from Problem list txmit catch HibernateException e e printStackTrace tx rollback finally HibernateUtil closeSession return list 删除问题 public List delProblem int delProblemId try session HibernateUtil getSession tx session beginTransaction for inti 0 i delProblemId length i Problem problem Problem session get Problem class delProblemId i session delete problem txmit catch HibernateException e e printStackTrace tx rollback finally HibernateUtil closeSession returngetAllProblem 查询一道题目信息 public Problem getOneProblem intproId Problem problem null try session HibernateUtil getSession tx session beginTransaction problem Problem session get Problem class proId txmit catch HibernateException e e printStackTrace tx rollback finally HibernateUtil closeSession return problem 修改题目信息 public void updateProblem Problem problem try session HibernateUtil getSession tx session beginTransaction session update problem txmit catch HibernateException e e printStackTrace tx rollback finally HibernateUtil closeSession 该类继承了 BaseDAO java 而 BaseDAO java 主要实现了所有模块通用的增 加 删除 修改功能 单独提出来 是为了其它模块的共享使用 简化代码长度 BaseDAO java 代码如下 BaseDAO java 包引用略 public class BaseDAO static Session session null static Transaction tx null 创建新对象 public static void createObj Problem o try session HibernateUtil getSession tx session beginTransaction session save o txmit catch HibernateException e e printStackTrace tx rollback finally if session null HibernateUtil closeSession 删除对象 public static void delObject int id try session HibernateUtil getSession tx session beginTransaction Object o session get Problem class id session delete o txmit catch HibernateException e e printStackTrace tx rollback finally HibernateUtil closeSession 修改对象 public static void mdfObj Object o try session HibernateUtil getSession tx session beginTransaction session update o txmit catch HibernateException e e printStackTrace tx rollback finally HibernateUtil closeSession 6 1 4 编写展现层编写展现层 展现层的上报是提供友好的界面传递信息并与用户交互 JSP 只是负责输入输出 它没有处理数据的能力 而 Action 则把将要给 JSP 页面的数据处理准备好 把数据放 入 request 中 然后把数据导向输出的页面 1 编写 ActionForm 在持久层有一个 Problem 类封装了持久数据的信息 它与展现层的 ActionForm 意 义不一样 但代码去一样 之所以要编写两个相似的类 是因为这样可以减少层之间 的耦合性 2 编写 Action Action 就好像是数据指路牌 处理数据并将数据导向正确的页面 本项目中的所 有 Action 都继承了 DispatchAction 类 这样处理业务更为方便 不用为每一项业务都 写一个 Action 类 运用一个参数 action 来导向 6 2 测试测试 测试是把各个模块程序合在一起 看各接口之间的连接是否正常 各部分功能是 否能被正常实现 表 6 1 测试结果表 序号检查项输入动作输入值期望的输出 实际结果错误原因 1 浏览试题 页面 打开首页 显示浏览试 题页面 出错 没有显 示 浏览页面 JSP 代码错误 2 提交页面 题目编 号和程 序代码 操作正常执 行 转到状 态结果页面 显示错误 提示 Action 中的 Juage 方法有 误 不能连到编 译器 3 添加题目 页面 添加题 目信息 跳到题目浏 览页面 显示错误 提示 在计算正确率 时 新添加的题 目提交数量为 0 出现了除数 不能为 0 的错 误 4 页面的链 接 点击各个 页面中的 链接 跳转到各个 链接的界面 成功 5 论坛链接 点击页面 中的链接 跳转到论坛 页面显示 成功 第七章第七章 结论结论 在毕业设计的这段时间里 我得到了锻炼 熟悉了框架编程 体会到编程的乐趣 扩大了知识领域 在制作过程中体会到一种求实创新 不断进取的精神 但也遇到了 许多的困难和许多需要解决的问题 在老师的指导和同学的帮助下 都被很好的解决 了 在解决问题的时候 我学到了很多有价值的技术和知识 积累了一些对我来说很 重要的经验 好的设计是成功的关键 设计帮助我把用户需求准确地转变为最终的软件产品 也是后续的所有软件开发和软件维护步骤的基础 一个好的软件设计 不仅可以给开 发人员带来极大的方便 还可以缩短开发的时间和减少开发成本 为项目的开发成功 奠定了很好的基础 发现的重要性 每个软件工程方法都试图创建的一个环境中能够尽可能早地做出 最重要的发现 这是很重要的 软件项目在本质上就是以发现为中心的项目 随着时 间的过去 对客户 应用 环境以及发起者的认识也会随着项目的进展而增加 因此 必须得做好适应新发现的知识的准备 开发文档也具有重要性 开发文档的作用有利于自己对项目的理解 有利于保持 一致性 提高开发效率 同时编写必需的文档也在一定程度上降低了系统的风险 使 项目不会受到重大的影响 在这次的毕业设计中 我不仅学到了很多有价值的知识和技术 也认识到了自己 的缺点和不足 希望在以后的学习和工作中能够摒弃缺点 弥补不足 积极的努力学 习知识和技术 充分的提高自己的实力 致致 谢谢 毕业设计已经结束 这里面每一个功能的实现 每一行语句的调试 每一段文本 的输入有我辛勤的汗水 设计时间虽然短暂 我却从中学到了很多的东西 在这段时 间里 我得到了指导教师韩子扬老师以及其同学们的关心 帮助以及大力支持 较顺 利的完成了设计任务 在设计过程中 我结合了过去三年学习过的基础和专业课理论 较好的解决了问题 为今后走向工作岗位打下了坚实的基础 所以我也要感谢三年以 来教导过我 给予我很多帮助的老师们 本文是在韩子扬老师的精心指导下完成的 从论文的选题 文章结构的构筑到最 后的定稿 都得到了导师的细心指点和提携 导师的严谨治学的作风也让我记忆颇深 在这里 我特别向我的指导老师韩子扬老师表示衷心的感谢 最后 在整个的毕业设计过程还得到了广大同学们的帮助 特此 向所有关心 支持和帮助过我的老师 同学致以诚挚的谢意 参考文献参考文献 1 美 阿卢 Alur Deepak 等著 刘天北等译 J2EE 核心模式 原书第2版 北京 机械工 业出版社 2009 3 2 孙更新 周峰 宾晟编著 白领就业指南 J2EE 开发员成长之路 北京 电子工 业出版社 2010 8 3 美 Bruce Eckel 著 京京工作室译 Java 编程思想 M 北京 机械工业出版社 2008 4 4 闫鸿编著 java 与模式 北京 电子工业出版社 2011 10 5 孙卫琴编著 精通 Struts 基于 MVC 的 JavaWeb 设计与开发 北京 电子工业出版 社 2009 8 6 蔡雪焘 Hibernate 开发及整合应用大全 M 北京 清华大学出版社 2011 3 7 朗波 Java 语言程序设计 M 北京 清华大学出版社 2009 5 8 萨师煊 王珊 数据库系统概论 M 北京 高等教育出版社 2009 2 袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇 蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇袄
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026及未来5年中国开窗式包装礼品酒市场现状数据分析及前景预测报告
- 《火区的封闭与启封》课件
- 常见气体的实验室制法课件
- 新北师大版六年级上册数学课件:5统计图的选择
- 椎间孔内外口解剖医学资料教程
- 《锡恩客户价值》课件
- 2026年PgMP项目集管理专业人士考试战略项目集管理章节练习题
- 桥梁工程0201桥梁的设计作用荷载
- (2026版)学校(单位)食堂食品安全管理制度
- 小学科学跨学科实践实施方案
- 2026中国可穿戴健康监测设备消费行为与品牌竞争力分析报告
- 【试卷】湖南省长沙市部分校2027届高三上学期10月阶段检测数学试卷
- 2026年北师大版中考数学基础训练模拟试卷及答案
- 健康体检异常结果测试题及答案解析
- 仲利国际租赁在线测评题库及答案
- 光缆制造过程质量控制标准考核试卷及答案
- CSCO软组织肉瘤诊疗指南2026
- 第7课 神奇的世界 第2课时 课件(内嵌视频)2026-2027学年道德与法治四年级上册统编版
- 柴油发电机组专项施工方案
- 2026年民航货运员中级实操试题及答案
- 废水处理设施运行台账
评论
0/150
提交评论