网络在线考试系统软件实现_第1页
网络在线考试系统软件实现_第2页
网络在线考试系统软件实现_第3页
网络在线考试系统软件实现_第4页
网络在线考试系统软件实现_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 软软件件实实现现 网络在线考试系统网络在线考试系统 姓姓 名 名 班级 班级 计科 1201 学号 学号 12111001 2 目录 1 引言 1 1 1 目的和作用 1 1 2 文档概述 1 2 编码规范 1 2 1 文件组织 1 2 2 文件格式标准 2 2 3 注释 3 2 4 声明 6 2 5 语句 Statements 7 2 6 命名规范 11 2 7 代码范例 Code Examples 13 1 1 1 引言引言 1 1 目的和作用目的和作用 衡量一个程序的质量 主要有两个方面 运行质量和代码质量 一个稳定 运行的程序并不等同于优良的程序 有可能其源代码可读性极差 不具有低成 本的可维护性 以后的升级或者新员工接手时都会非常困难 对公司来说 意 味着更高的资源投入 对工程师来说 意味着精力时间的浪费 甚至会引起对 程序的抵制情绪 导致推翻重新实现 降低了软件复用度 当然 程序的运行 质量是必须保证的 否则代码再规范也是一个废品 事实上 程序的不良书写 风格和错误的写法往往是滋生错误的温床 而且很大一部分反复出现的错误是 同一个原因造成的 本文档结合一些常见的错误或者危险的代码 规定了编码 的规范 按照规范上的要求编码 不仅可以使不同人写的代码看起来很统一 降低了交流的障碍和工作转接的成本 而且能够规避很多反复出现的程序错误 1 2 文档概述文档概述 该规范定义了良好的编程风格 内容涉及排版 可读性 可维护性 可测 性等方面 2 2 编码规范编码规范 2 1 文件组织文件组织 每个 Java 源文件包含一个单独的 Public 类接口或接口 当 private 类和接口 与某个 Public 类有关部门时 可以把他们放在同一源文件中作为 Public 类 Public 类应为文件中第一个类或接口 Java 源文件中有下列顺序 1 开头注释 2 2 包和引用声明 如 package u lms utils import java sql Connection import java sql DriverManager 3 类和接口定义 下面表格按序定义了一个类或接口的定义的各个部分 表 5 1 类和接口定义 序号类 接口定义部分说明 1类 接口文档注释 见注释 2类 接口声明 3类 接口执行注释可选 需包含不在类 接口文档注释的关于类 接 口的所有信息 4类静态变量先是 Public 类变量 再 protected 再 private 5实例变量同上 6构造函数 7方法按功能排序 2 2 文件格式标准文件格式标准 2 2 12 2 1 缩排缩排 缩排的单位 逻辑 Tab 键 统一缩进为 4 个字符 2 2 22 2 2 换行换行 当一个表示不能在一行内写完时 按以下规则断行 在逗号后断行 在操作符前断行 宁可选择较高级别 higher level 的断开 而不是较低级别 lower level 的断开 新的一行应该与上一行同一级别表达式的开头处对齐 3 如果以上规则导致代码混乱或者使代码都堆挤在右边 那就代之缩进 8 个空格 2 2 32 2 3 空白空白 应谨慎使用空行来突出代码 例 在循环和条件块前后至少有一个空行 函数间至少有一个空行 注释前至少有一个空行 2 2 42 2 4 行长度行长度 尽量避免一行的长度超过 80 个字符 因为很多终端和工具不能很好处理之 注意 用于文档中的例子应该使用更短的行长 长度一般不超过 70 个字符 2 2 52 2 5 数值语句数值语句 不要用硬性代码数值 用符号常量 例 nTimeout 3000 BAD NTimeout MAX ABC DURATION Good 2 3 注释注释 注释是帮助程序读者的一种手段 最好的注释是简洁地点明程序的突出特 征 或是提供一种概观 帮助别人理解程序 Java 程序有两类注释 实现注释 implementation comments 和文档注释 document comments 实现注释使用 和 界定的注释 文档的注 释 被称为 doc comments 是 Java 独有的 并由 界定 文档注释 4 可以通过 javadoc 工具转换 HTML 文件 2 3 12 3 1 文件头注释文件头注释 一个文件由被空行隔开的节和可选的标识节的注释组成 一个包声明和 接口声明需用至少一个空行隔开 每个文件需在开头包括一个注释块 提供以下信息 版权声明 修改历 史 数据库连接管理类 author WangLiyun version1 0 2 3 22 3 2 类注释类注释 每个源文件需在类声明前包含一个注释 提供以下信息 作者 版本 Window win new window parent win show author Sami Shaic version I G see java awt BaseWindow see java awt Button class window extends BaseWindow 2 2 32 2 3 方法头注释方法头注释 每个函数要在开头提供一个注释 包含以下信息 描述做了什么 如何 完成的 假设 前提 限制 输入输出 包括返回值 5 用户登录 param mapping param form param request param response return throws ServletException 2 3 42 3 4 定义注释定义注释 多数域都需要描述其目的的简单注释 private String username 用户名 2 3 52 3 5 注释风格注释风格 程序可以有四中实现注释的风格 块 block 单行 single line 尾端 trailing 和行末 end of line 下面用例子来解释 块注释 块注释 block Comments 保存帐号 param accountForm 单行注释 单行注释 single line Comments if condition Handle the condition 6 尾端注释 尾端注释 trailing Comments if a 2 return TRUE special case 行末注释 行末注释 end of line Comments private String username 用户名 2 4 声明声明 2 4 12 4 1 每行声明变量的数量 每行声明变量的数量 NumberNumber PerPer LineLine 推荐一行议购声明 因为这样有利于写注释 2 4 22 4 2 布局 布局 PlacementPlacement 只在代码块的开始处声明变量 一个块是指任何被包含在大括号 和 中间的代码 不要在首次用到该变量时才声明之 避免声明的局部变量覆盖上 一级的变量 2 4 32 4 3 初始化 初始化 InitializationInitialization 尽量在声明局部变量的同时初始化 唯一不这样做的理由是变量的初始值 依赖于某些先前发生的计算 2 4 42 4 4 类和接口的声明 类和接口的声明 ClassClass andand InterfaceInterface DeclarationDeclaration 当编写类和接口时 应该遵循以下格式规则 在方法名与其参数列表之前的左扩号 间不要有空格 左大扩号 位于声明语句同行的末尾 右大括号 另起一行 与相应的声明语句对齐 除非是一个空语句 应紧跟在 之后 public void setUsername String username 7 this username username 方法与方法之间一空行分隔 2 5 语句 语句 Statements 2 5 12 5 1 简单语句 简单语句 SimpleSimple StatementsStatements 每行至多包含一条语句 例如 argv Correct argc Correct argv argc AVOID 2 5 22 5 2 复合语句 复合语句 CompoundCompound StatementsStatements 复合语句是包含在大括号中的语句序列 形如 语句 例如下面各段 被括其中的语句应该较之复合语句缩进一个层 左大括号 应位于复合语句起始行的行尾 右大括号 应另起一行 与复合语句首行对齐 大括号可以被用于所有语句 包括单个语句 只有这些语句诸如此类 if else 或 for 控制语句的一部分 这样便于添加语句而无需担心由于忘了加括号 而引入 bug 2 5 32 5 3 返回语句 返回语句 returnreturn StatementsStatements 一个返回值的 return 语句不使用小括号 除非它们以美中不足方 式使返回值更为显见 public String getUsername return username 8 2 5 42 5 4 if if else if if else if if else ifelse if elseelse 语句语句 if else 语句应具有如下格式 if condition statement if condition statement else statement if condition statement else if condition statement else statement 注意 if 语句总是用 和 括起来 避免使用如下容易引起错误的格式 if condition AVOID this omits the braces Statement 2 5 52 5 5 forfor 语句 语句 forfor StatementsStatements 一个 for 语句应该具有如下格式 for int i 0 i ids length i deleteAccount ids i 一个空的 for 语句 所有工作都在初始化 条件判断 更新子句中完成 应该具有如下格式 9 for initialization condition update statement 当在 for 语句的初始化或更新子句中使用逗号时 避免因使用三个以上变 量 而导致复杂度提高 如果需要 可以在 for 循环之前 为初始化子句 或 for 循环末尾 为更新子句 使用单独的语句 2 5 62 5 6 whilewhile 语句 语句 whilewhile StatementsStatements 一个 while 语句应该具有如下格式 while rs next AccountForm accountForm new AccountForm accountForm setId rs getString id accountForm setUsername rs getString username accountForm setType rs getString type accountList add accountForm 2 5 72 5 7 do whiledo while 语句 语句 do whiledo while StatementsStatements 一个 do while 语句应该具有如下格式 do while condition 2 5 82 5 8 switchswitch 语句 语句 switchswitch StatementsStatements 一个 switch 语句应该具有如下格式 10 switch condition 2 5 92 5 9 try catchtry catch 语句 语句 try catchtry catch StatementsStatements 一个 try catch 语句应该具有如下格式 try Class forName DBDriver conn DriverManager getConnection DBUrl DBUser DBPassword catch ClassNotFoundException ex ex printStackTrace throw new CustomException 找不着驱动程序 ex catch Exception ex ex printStackTrace throw new CustomException 数据库连接错误 ex 一个 try catch 语句后面也可紧跟着一个 finally 语句 不论 try 代码块是否 顺利执行完 它都会执行 try Class forName DBDriver conn DriverManager getConnection DBUrl DBUser DBPassword catch ClassNotFoundException ex ex printStackTrace throw new CustomException 找不着驱动程序 ex 11 catch Exception ex ex printStackTrace throw new CustomException 数据库连接错误 ex finally if conn null conn close 2 6 命名规范命名规范 命名规范使程序更易读 从而易于理解 它们可以提供一个有关标识符功 能的信息 以助于理解代码 不论它是一个常量 包 还是类 表 5 2 标识符命名 标识符类 型 命名规则例子 包 Packages 一个唯一的包名的前 缀总是全部小写的 ASCII 字 母并且是一个顶级域名 通常是 com edu gov mil net org 或 1981 年 ISO3166 标准所指定的标识国家的 英文双字符代码 包名的 后缀部分根据不同机构各 自内部的命名规范而不尽 相同 这类命名规范可能 一特定目录名的组成来区 分部门 department 项 目 project 机器 com sun eng com apple quicktime v2 edu cmu cs bovik cheese 12 machine 或注册名 login names 类 Class 类名是一个名词 采 用大小写混合的方式 每 个单词的首字母大写 尽 量使类名简洁而富于描述 使用完整单词 避免缩写 词 除非缩写词已被广泛 使用 像 URL HTML class Raster class ImageSprite 接口 Interface 大小写规则与类名相 似 interface ResterDelegate interface Storing 方法 Methods 方法名是一个动词 采用大小写混合的方式 第一个单词首字母小写 其后单词的首字母大写 run runFast getRackground 变量 Variables 除了变量名外 所有 实例 包括类 类常量 均采用大小写混合的方式 第一个单词的首字母小写 其后单词的首字母大写 变量名不应以下划线或美 元符号开头 尽管这在语 发上是允许的 变量名应简短且富于 描述 变量名的选用应该 易于记忆 能够指出其用 途 尽量避免单个字符的 变量名 除非是一次性的 临时变量 临时变量通常 char c int i flost myWidth 13 被取名为 i j k m 和 n 它们 一般用于整型 c d e 它们 一般用于字符型 实例变量 Instance Variables 大小写规则和变量名 相似 除了在前面需要一 个下划线 int comployeeId String name Customer customer 常量 Constants 类常量和 ANSI 常量的 声明 应该全部大写 单 词间用下划线隔开 尽量 避免 ANSI 常量 容易引起 错误 static final int MIN WIDTH 4 static final int MAX WIDTH 999 static final int GET THE CPU 1 2 7 代码范例 代码范例 Code Examples 账户管理控制类 author WangLiyun package u lms action import java util ArrayList import java util List import javax servlet ServletException import javax servlet http HttpServletRequest import javax servlet http HttpServletResponse import javax servlet http HttpSession 14 import mons logging Log import mons logging LogFactory import org apache struts action ActionForm import org apache struts action ActionForward import org apache struts action ActionMapping import org apache struts actions DispatchAction import u lms DaoFactory import u lms dao IAccountDao import u lms dao IBookDao import u lms form AccountForm import u lms form BookForm public class AccountAction extends DispatchAction private static final Log logger LogFactory getLog AccountAction class 用户登录 param mapping param form param request param response return throws ServletException public ActionForward logon ActionMapping mapping ActionForm form HttpServletRequest request HttpServletResponse response 15 throws ServletException AccountForm accountForm AccountForm form boolean isAccount false try IAccountDao iAccountDao DaoFactory getInstance getAccountDao isAccount iAccountDao isAccount accountForm if isAccount HttpSession session request getSession session setAttribute username accountForm getUsername session setAttribute type accountForm getType 如果是管理员 则跳转到index if accountForm getType equals 1 return mapping findForward index else return mapping findForward indexR else request setAttribute invalidAccount invalidAccount return mapping findForward logon catch Exception e logger error 登录出错 e throw new ServletException 登录出错 e 16 注销用户 param mapping param form param request param response return throws ServletException public ActionForward logout ActionMapping mapping ActionForm form HttpServletRequest request HttpServletResponse response throws ServletException try HttpSession session request getSession session invalidate return mapping findForward logon catch Exception e logger error 注销出错 e throw new ServletException 注销出错 e 17 添加帐号 param mapping param form param request param response return throws ServletException public ActionForward save ActionMapping mapping ActionForm form HttpServletRequest request HttpServletResponse response throws ServletException AccountForm accountForm AccountForm form try IAccountDao iAccountDao DaoFactory getInstance getAccountDao iAccountDao saveAccount accountForm return mapping findForward success save catch Exception e logger error 添加帐号出错 e throw new ServletException 添加帐号出错 e 18 删除帐号信息 param mapping param form param request param response return throws ServletException public ActionForward delete ActionMapping mapping ActionForm form HttpServletRequest request HttpServletResponse response throws ServletException try String ids request getParameterValues id IAccountDao iAccountDao DaoFactory getInstance getAccountDao iAccountDao deleteAccount ids return mapping findForward success delete catch Exception e logger error 删除帐号信息出错 e throw new ServletException 删除帐号信息出错 e 查找帐号信息 19 param mapping param form param request param response return throws ServletException public ActionForward query ActionMapping mapping ActionForm form HttpServletRequest request HttpServletResponse response throws ServletException AccountForm accountForm AccountForm form List accountList new ArrayList try IAccountDao iAccountDao DaoFactory getInstance getAccountDao accountList iAccountDao getAccounts accountForm getUsername accountForm getType request setAttribute accountList accountList return mapping findForward accountList catch Exception e logger error 查找帐号信息出错 e throw new ServletException 查找帐号信息出错 e 20 在更新页面显示帐号信息 param mapping param form param request param response return throws ServletException public ActionForward updateInit ActionMapping mapping ActionForm form HttpServletRequest request HttpServletResponse response throws ServletException try String id

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论