版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
北京长江软件网上招聘系统编码规范北京长江软件PAGE第4页共36页 项目编号200602006文档编号13密级内部网上招聘系统编码规范及其代码说明V1.0北京长江软件公司评审日期:2006年目录1.导言 31.1目的 31.2范围 31.3缩写说明 31.4术语定义 41.5引用标准 41.6参考资料 41.7版本更新信息 42.编码格式规范 42.1缩进排版 52.2行长度 52.3断行规则: 52.4空行 63.命名规范 73.1包(Packages) 73.2类(Classes) 73.3接口(Interfaces) 73.4方法(Methods) 73.5变量(Variables) 73.6实例变量(InstanceVariables) 83.7常量(Constants) 84.声明规范 84.1每行声明变量的数量 84.2初始化 84.3布局 94.4包的声明 94.5类和接口的声明 95.语句规范 95.1简单语句 105.2复合语句 106.注释规范 106.1注释的方法 106.2开头注释 116.3类和接口的注释 127.代码范例 128.目录规范 14
1.导言1.1目的该文档的目的是描述网上招聘系统项目的编码规范和对代码的说明,其主要内容包括:编码规范命名规范注释规范语句规范声明规范目录设置代码说明本文档的预期的读者是:开发人员项目管理人员质量保证人员1.2范围该文档定义了本项目的代码编写规范,以及部分代码描述和所有代码的说明。1.3缩写说明JSPJavaServerPage(Java服务器页面)的缩写,一个脚本化的语言。MVCModel-View-Control(模式-视图-控制)的缩写,表示一个三层的结构体系。EJBEnterpriseJavaBean(企业级JavaBean)的缩写。1.4术语定义ClassJava程序中的一个程序单位,可以生成很多的实例。Packages由很多的类组成的工作包。1.5引用标准[1]《企业文档格式标准》 北京长江软件有限公司[2]《Java语言编写规范》北京长江软件有限公司软件工程过程化组织1.6参考资料[1]《实战struct》〔美〕TedHusted 机械工业出版社[2]《软件重构》清华大学出版社1.7版本更新信息本文档的更新记录如表D-1所示。表D-1版本更新记录修改编号修改日期修改后版本修改位置修改内容概述0002006.5.280.1全部初始发布版本0012006章修改代码 2.编码格式规范2.1缩进排版4个空格作为缩进排版的一个单位。2.2行长度尽量避免一行的长度超过80个字符,用于文档中的例子应该使用更短的行长,长度一般不超过70个字符。2.3断行规则:当一个表达式无法容纳在一行内时,可以依据如下一般规则断开:在一个逗号后面断开在一个操作符前面断开宁可选择较高级别(higher-level)的断开,而非较低级别(lower-level)的断开(见下面的例子)新的一行应该与上一行同一级别表达式的开头处对齐如果以上规则导致你的代码混乱或者使你的代码都堆挤在右边,那就代之以缩进8个空格以下是两个断开算术表达式的例子。前者属于更高级别的断开,因为断开处位于括号表达式的外边。longName1=longName2*(longName3+longName4-longName5)+4*longname6;//推荐longName1=longName2*(longName3+longName4-longName5)+4*longname6;//避免以下是两个缩进方法声明的例子。前者是常规情形。后者若使用常规的缩进方式将会使第二行和第三行移得很靠右,所以代之以缩进8个空格。//规范的缩进 someMethod(intanArg,ObjectanotherArg,StringyetAnotherArg, ObjectandStillAnother){ … } //以8个空格来缩进,以避免非常纵深的缩进 privatestaticsynchronizedhorkingLongMethodName(intanArg, ObjectanotherArg,StringyetAnotherArg, ObjectandStillAnother){ … }if语句的换行通常使用8个空格的规则,因为常规缩进(4个空格)会使语句体看起来比较费劲。比如: //不可取的缩进方法 if((condition1&&condition2) ||(condition3&&condition4) ||(condition5&&condition6)){ doSomethingAboutIt();} //可取的缩进方法一 if((condition1&&condition2) ||(condition3&&conditin4) ||!(condition5&&condition6)){ doSomethingAboutIt(); } //可取的缩进方法二 if((condition1&&condition2)||(conditin3&&condition4) ||!(condition5&&condition6)){ doSomethingAboutIt(); }三种可取的三元运算符的缩进格式: alpha=(aLongBooleanExpression)?beta:gamma; alpha=(aLongBooleanExpression)?beta :gamma; alpha=(aLongBooleanExpression) ?beta :gamma;2.4空行空行将逻辑相关的代码段分隔开,以提高可读性。下列情况应该总是使用两个空行:一个源文件的两个片段(section)之间类声明和接口声明之间下列情况应该总是使用一个空行:两个方法之间方法内的局部变量和方法的第一条语句之间块注释或单行注释之前一个方法内的两个逻辑段之间,用以提高可读性3.命名规范命名规范使程序更易读,从而更易于理解。它们也可以提供一些有关标识符功能的信息,以助于理解代码。3.1包(Packages)一个唯一包名的前缀总是全部小写的ASCII字母并且是一个顶级域名,通常是com,edu,gov,mil,net,org,或1981年ISO3166标准所指定的标识国家的英文双字符代码。包名的后续部分根据不同机构各自内部的命名规范而不尽相同。这类命名规范可能以特定目录名的组成来区分部门(department),项目(project),机器(machine),或注册名(loginnames)。如:com.sun.engcom.apple.quicktime.v2edu.cmu.cs.bovik.cheese3.2类(Classes)类名是个一名词,采用大小写混合的方式,每个单词的首字母大写。尽量使你的类名简洁而富于描述。使用完整单词,避免缩写词(除非该缩写词被更广泛使用,像URL,HTML)。3.3接口(Interfaces)大小写规则与类名相似。3.4方法(Methods)方法名是一个动词,采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。3.5变量(Variables)采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写。变量名不应以下划线或美元符号开头,尽管这在语法上是允许的。变量名应简短且富于描述。变量名的选用应该易于记忆,即,能够指出其用途。尽量避免单个字符的变量名,除非是一次性的临时变量。临时变量通常被取名为i,j,k,m和n,它们一般用于整型;c,d,e,它们一般用于字符型。3.6实例变量(InstanceVariables)大小写规则和变量名相似,除了前面需要一个下划线,如:int_employeeId.3.7常量(Constants)类常量和ANSI常量的声明,应该全部大写,单词间用下划线隔开。4.声明规范4.1每行声明变量的数量推荐一行一个声明,因为这样以利于写注释。亦即:intlevel;//indentationlevelintsize;//sizeoftable要优于:intlevel,size;不要将不同类型变量的声明放在同一行,例如:intfoo,fooarray[];//WRONG!
注意:上面的例子中,在类型和标识符之间放了一个空格。空格可使用制表符替代。4.2初始化尽量在声明局部变量的同时初始化。唯一不这么做的理由是变量的初始值依赖于某些先前发生的计算。4.3布局只在代码块的开始处声明变量。(一个块是指任何被包含在大括号"{"和"}"中间的代码。)不要在首次用到该变量时才声明之。这会把注意力不集中的程序员搞糊涂,同时会妨碍代码在该作用域内的可移植性。voidmyMethod(){ intint1=0;//beginningofmethodblock if(condition){ intint2=0;//beginningof"if"block }}该规则的一个例外是for循环的索引变量for(inti=0;i<maxLoops;i++){...}4.4包的声明在多数Java源文件中,第一个非注释行是包语句。我们的网上招聘系统包的声明采用如下规范:packagecom.changjiangcompany.struts.form;//form包packagecom.changjiangcompany.struts.action;//action包4.5类和接口的声明当编写类和接口是,应该遵守以下格式规则:在方法名与其参数列表之前的左括号"("间不要有空格左大括号"{"位于声明语句同行的末尾右大括号"}"另起一行,与相应的声明语句对齐,除非是一个空语句,"}"应紧跟在"{"之后方法与方法之间以空行分隔5.语句规范5.1简单语句每行至多包含一条语句,例如:argv++;//推荐argc--;//推荐argv++;argc--;//避免5.2复合语句复合语句是包含在大括号中的语句序列,形如"{语句}"。遵循原则如下:被括其中的语句应该较之复合语句缩进一个层次左大括号"{"应位于复合语句起始行的行尾;右大括号"}"应另起一行并与复合语句首行对齐。大括号可以被用于所有语句,包括单个语句,只要这些语句是诸如if-else或for控制结构的一部分。这样便于添加语句而无需担心由于忘了加括号而引入bug。6.注释规范Java程序有两类注释:实现注释(implementationcomments)和文档注释(documentcomments)。实现注释使用/*...*/和//界定的注释。文档注释(被称为"doccomments")是Java独有的,并由/**...*/界定。文档注释可以通过javadoc工具转换成HTML文件,描述Java的类、接口、构造器,方法,以及字段(field)。一个注释对应一个类、接口或成员。若你想给出有关类、接口、变量或方法的信息,而这些信息又不适合写在文档中,则可使用实现块注释或紧跟在声明后面的单行注释。例如,有关一个类实现的细节,应放入紧跟在类声明后面的实现块注释中,而不是放在文档注释中。注释应被用来给出代码的总括,并提供代码自身没有提供的附加信息。注释应该仅包含与阅读和理解在注释里,对设计决策中重要的或者不是显而易见的地方进行说明是可以的,但应避免提供代码中己清晰表达出来的重复信息。6.1注释的方法程序可以有四种实现注释的风格:块注释、单行注释、尾端注释和行末注释。①块注释块注释通常用于提供对文件,方法,数据结构和算法的描述。块注释被置于每个文件的开始处以及每个方法之前。它们也可以被用于其他地方,比如方法内部。在功能和方法内部的块注释应该和它们所描述的代码具有一样的缩进格式。块注释之首应该有一个空行,用于把块注释和代码分割开来,比如:/**Hereisablockcomment.*/publicclassExample{...注意顶层(top-level)的类和接口是不缩进的,而其成员是缩进的。描述类和接口的文档注释的第一行(/**)不需缩进;随后的文档注释每行都缩进1格(使星号纵向对齐)。成员,包括构造函数在内,其文档注释的第一行缩进4格,随后每行都缩进5格。②单行注释短注释可以显示在一行内,并与其后的代码具有一样的缩进层级。如果一个注释不能在一行内写完,就该采用块注释(参见"块注释")。单行注释之前应该有一个空行。以下是一个Java代码中单行注释的例子:if(condition){/*Handlethecondition.*/...}③尾端注释极短的注释可以与它们所要描述的代码位于同一行,但是应该有足够的空白来分开代码和注释。若有多个短注释出现于大段代码中,它们应该具有相同的缩进。以下是一个Java代码中尾端注释的例子:if(input==2){ returnTRUE;/*特殊处理*/}else{ returnisMine(input);/*调用函数isMine*/}④行末注释注释界定符"//",可以注释掉整行或者一行中的一部分。它一般不用于连续多行的注释文本;然而,它可以用来注释掉连续多行的代码段。注意:频繁的注释有时反映出代码的低质量。当你觉得被迫要加注释的时候,考虑一下重写代码使其更清晰。注释不应写在用星号或其他字符画出来的大框里。注释不应包括诸如制表符和回退符之类的特殊字符。6.2开头注释所有的源文件都应该在开头有一个类似C语言风格的注释,其中列出类名、版本信息、日期、作者以及版权声明。我们的网上招聘系统采用的头注释统一为:/***@System:OnlineCVSystem*@Version:1.0*@Copyright(C)2006byXXX,Inc.AllRightsReserved.*@Class:ValidateSessionTag*@Summary:对用户的身份验证*@Create:2006.05.2江明*@Update:2006.05.02江明*/6.3类和接口的注释①类/接口文档注释(/**……*/):该注释中所需包含的信息,参见"LogonAction.java"②类/接口实现的注释(/*……*/):如果有必要的话,该注释应包含任何有关整个类或接口的信息,而这些信息又不适合作为类/接口文档注释。7.代码范例/***@System:OnlineCVSystem*@Version:1.0*@Copyright(C)2006byXXX,Inc.AllRightsReserved.*@Summary:循环打印用户信息*@Create:2006.05.28冯飞*@Update:*/<%@pagelanguage="java"%><%@tagliburi="/struts/tags-bean"prefix="bean"%><%@tagliburi="/struts/tags-html"prefix="html"%><html> <head> <title>JSPforsampleFormform</title> </head> <body> <%--判断用户信息--%> <logic:presentname="SampleForm"property="userList"> <%--循环显示用户信息--%> <logic:iterateid="user"name="SampleForm"property="userList"> <tr> <td><bean:writename="user"property="id"/></td> <td><bean:writename="user"property="name"/></td> </tr> </logic:iterate></logic:present> </body></html>
8.目录规范开发环境是eclipse,开发之后需要部署到Tomcat服务器环境上。所以开发环境的目录结构与运行环境的目录结构是一致的,只是在部署的运行环境中,可以不设置源代码的目录。开发目录如图D-1。编码过程应该按照详细设计的规划进行,在伪代码的基础上,按照编码标准和规范进行分模块编码。开发环境是eclipse,首先开发人员在开发过程中按照开发的目录将相应的文件存放在指定的目标下,进行调试,如果调试完成,代码评审通过后,放入基线库,再从基线库将代码放入运行(Tomcat)环境中。各个目录的说明如下:1)OnlineCV/src/share 目录中存放所有的JAVA公用的模块,详见基线库OnlineCV/src/share目录下文件,表D-2是公用模块中关于数据库的基本操作类的代码。表D-2:数据库的基本操作/***@System:OnlineCVSystem*@Version:1.0*@Copyright(C)2006bychangjiangcompany,Inc.AllRightsReserved.*@Class:DB*@Summary:取得数据库连接并对数据库进行查询、增加记录、删除记录操作*@Create:2006.04.27李林*@Update:2006.05.9巩俐*/packagecom.changjiangcompany.struts.javashare;importjava.sql.*;importjava.util.*;importcom.microsoft.jdbcx.sqlserver.SQLServerDataSource;publicclassDBConnect{ privateStatementstmt=null; privateResultSetrs=null; publicDBConnect(){ try{//初始化连接 Class.forName(("com.microsoft.jdbc.sqlserver.SQLServerDriver")); }catch(java.lang.ClassNotFoundExceptione){ System.err.println("opendb():"+e.getMessage()); } }/** *方法:executeQuery *描述:执行查询记录操作 *输入:Stringstrsql要执行操作的sql语句 *@返回:ArrayListArrayRs查询的结果 *@异常处理:throwsSQLException */publicArrayListexecuteQuery(SQLServerDataSourcesource,StringstrSql)throwsSQLException{Connectioncon=null; rs=null; ArrayListArrayRs=newArrayList(); try{ con=source.getConnection(); stmt=con.createStatement(); rs=stmt.executeQuery(strSql); ResultSetMetaDatarsmd=rs.getMetaData(); intnumberOfColumns=rsmd.getColumnCount(); //判断是否为空 if(!ArrayRs.isEmpty()){ ArrayRs.clear(); } /* *将每条记录写入ArrayList里 */ while(rs.next()){ ArrayListarrlist1=newArrayList(); for(intj=1;j<=numberOfColumns;j++){ Strings=rs.getString(j); if(s==null){ s=""; } arrlist1.add(s); } ArrayRs.add(arrlist1); } }catch(Exceptione){ System.out.println("queryerror:"+e.getMessage()); }finally{ if(stmt!=null){ stmt.close(); } if(con!=null&&!con.isClosed()){ con.close(); } } returnArrayRs; }/** *方法:executeInsert *描述:执行插入记录操作 *输入:Stringstrsql要执行操作的sql语句 *返回:boolean插入操作是否正确执行 *异常处理:SQLException */ publicbooleanexecuteInsert(SQLServerDataSourcesource,StringstrSql)throwsSQLException{ Connectioncon=null; rs=null; try{ con=source.getConnection(); stmt=con.createStatement(); con.setAutoCommit(true); inti=stmt.executeUpdate(strSql); if(i==1){ return(true); } }catch(Exceptione){ System.out.println("Inserterror:"+e.getMessage()); }finally{ if(stmt!=null){ stmt.close(); } if(con!=null&&!con.isClosed()){ con.close(); } } return(false);}/** *方法:executeUpdate *描述:执行更新操作 *输入:Stringstrsql要执行操作的sql语句 *返回:int更新操作的记录数 *异常处理:SQLException */ publicintexecuteUpdate(SQLServerDataSourcesource,StringstrSql)throwsSQLException{ Connectioncon=null; rs=null; intj=0; try{ con=source.getConnection(); stmt=con.createStatement(); con.setAutoCommit(false); j=stmt.executeUpdate(strSql); if(j>0){ mit(); }else{ con.rollback(); } }catch(Exceptione){ System.out.println("updateerror:"+e.getMessage()); }finally{ if(stmt!=null){ stmt.close(); } if(con!=null&&!con.isClosed()){ con.close(); } }returnj;}/** *方法:executeDelete *描述:执行删除操作 *输入:Stringstrsql要执行操作的sql语句 *返回:int删除操作的记录数 *异常处理:throwsSQLException */ publicintexecuteDelete(SQLServerDataSourcesource,StringstrSql)throwsSQLException{ Connectioncon=null; rs=null; intj=0;try{ con=source.getConnection(); stmt=con.createStatement(); con.setAutoCommit(false); j=stmt.executeUpdate(strSql); if(j>0){ mit(); con.rollback(); } }catch(Exceptione){ System.out.println("Deleteerror:"+e.getMessage()); }finally{ if(stmt!=null){ stmt.close(); } if(con!=null&&!con.isClosed()){ con.close(); } }returnj;}2)OnlineCV/src/Form目录中存放所有模块的form模块,详见基线库的OnlineCV/src/Form目录下文件,表D-3是职位管理中的formAddJobForm模块的代码。表D-3:职位管理中的formAddJobForm模块的代码/***@System:OnlineCVSystem*@Version:1.0*@Copyright(C)2006bychangjiangcompany,Inc.AllRightsReserved.*@Class:AddJobForm*@Summary:只增加职位信息的Form*@Create:2006.05.23章飞*@Update:2006.05.28章飞*/packagecom.changjiangcompany.struts.form;importjavax.servlet.http.HttpServletRequest;importorg.apache.struts.action.ActionErrors;importorg.apache.struts.action.ActionForm;importorg.apache.struts.action.ActionMapping;/***MyEclipseStruts*Creationdate:04-16-2006**XDocletdefinition:*@struts.formname="submitAnswerForm"*/publicclassSubmitAnswerFormextendsActionForm{ //InstanceVariables /**职位名称*/ privateStringJobName; /**职位发布日期*/ privateStringPubDate; /**职位发布结束日期*/ privateStringEndDate; /**职位描述*/ privateStringDescription; /**职位要求*/ privateStringRequirements; /**招聘人数*/ privateintJobNum; //Methods /** *Methodvalidate *@parammapping *@paramrequest *@returnActionErrors */ publicActionErrorsvalidate( ActionMappingmapping, HttpServletRequestrequest) { 。。。。。。 } /** *Methodreset *@parammapping *@paramrequest */ publicvoidreset(ActionMappingmapping,HttpServletRequestrequest) { 。。。。。。 } /** *返回JobName. * */ publicStringgetJobName(){ returnJobName; } /** *赋值JobName. * */ publicvoidsetJobName(StringJobName){ this.JobName=JobName; } /** *返回PubDate. * */ publicStringgetPubDate(){ returnPubDate; } /** *赋值PubDate. * */ publicvoidsetPubDate(StringPubDate){ this.PubDate=PubDate; } /** *返回EndDate. * */ publicStringgetEndDate(){ returnEndDate; } /** *赋值EndDate. * */ publicvoidsetPubDate(StringEndDate){ this.EndDate=EndDate; } /** *返回Description. * */ publicStringgetDescription(){ returnDescription; } /** *赋值Description. * */ publicvoidsetDescription(StringDescription){ this.Description=Description; } /** *返回Requirements. * */ publicStringgetRequirements(){ returnRequirements; } /** *赋值Requirements. * */ publicvoidsetRequirements(StringRequirements){ this.Requirements=Requirements; } /** *返回JobNum. * */ publicintgetJobNum(){ returnJobNum; } /** *赋值JobNum. * */ publicvoidsetJobNum(intJobNum){ this.JobNum=JobNum; }}3)OnlineCV/src/Action目录中存放所有模块的Action模块,详见基线库的OnlineCV/src/Action目录下文件,表D-4是职位管理中的formAddJobAction模块的代码。表D-4:职位管理中的formAddJobAction模块的代码/***@System:OnlineCVSystem*@Version:1.0*@Copyright(C)2006bychangjiangcompany,Inc.AllRightsReserved.*@Class:AddJobAction*@Summary:只增加职位信息的Action*@Create:2006.05.23章飞*@Update:2006.05.28章飞*@Update:2006.05.28章飞*@Update:2006.06.1李杰玉*/packagecom.changjiangcompany.struts.action;importjava.util.Vector;importjavax.servlet.ServletContext;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;importjavax.sql.DataSource;importorg.apache.struts.action.Action;importorg.apache.struts.action.ActionForm;importorg.apache.struts.action.ActionForward;importorg.apache.struts.action.ActionMapping;importorg.apache.struts.action.DynaActionForm;importshare.Constants;importcom.changjiangcompany.DB;importcom.changjiangcompany.Job;/***MyEclipseStrutsCreationdate:04-19-2006**XDocletdefinition:**@struts.actionpath="/addJob"name="AddJobForm"input="/position/joblist.jsp"*scope="request"validate="true"*@struts.action-forwardname="addjob"path="/position/jobdetail.jsp"*/publicclassAddJobActionextendsAction{ /** *Methodexecute *@parammapping *@paramform *@paramrequest *@paramresponse *@returnActionForward */ publicActionForwardexecute( ActionMappingmapping, ActionFormform, HttpServletRequestrequest, HttpServletResponseresponse){ //获取新增加的职位信息 DynaActionFormAddJobForm=(DynaActionForm)form; StringJobName=(String)AddJobForm.get("JobName"); StringPubDate=(String)AddJobForm.get("PubDate"); StringEndDate=(String)AddJobForm.get("EndDate"); StringDescription=(String)AddJobForm.get("Description"); StringRequirements=(String)AddJobForm.get("Requirements"); IntegerJobNum=(Integer)AddJobForm.get("JobNum"); HttpSessionsession=request.getSession(); VectorJobList=newVector(); //连接数据库 ServletContextcontext=servlet.getServletContext(); DataSourcedataSource=(DataSource)context .getAttribute(Constants.DATASOURCE_KEY); DBdb=newDB(dataSource); //将职位基本信息封装到员工类型的对象 try{ Jobjob=newJob(); job.setJobName(JobName); job.setPubDate(PubDate); job.setEndDate(EndDate); job.setDescription(Description); job.setRequirements(Requirements); job.setJobNum(JobNValue()); //将增加的职位信息加入到对应的数据库 if(job.addJob(db,JobName,PubDate,EndDate,Description,Requirements,JobNValue())){ db.close();} }catch(Exceptione){ e.printStackTrace(); } return(mapping.findForward("toaddjob")); }}4)OnlineCV/src/Model是目录中存放所有模块的模型模块,详见基线库的OnlineCV/src/Model目录下文件,表D-5是职位管理中的Job模块的代码。表D-5:Job模块的代码/***@System:OnlineCVSystem*@Version:1.0*@Copyright(C)2006bychangjiangcompany,Inc.AllRightsReserved.*@Class:Job*@Summary:处理Job信息的bean*@Create:2006.05.23张祥*@Update:2006.05.28张祥*/packagecom.changjiangcompany;importjava.sql.ResultSet;importjava.util.Vector;publicclassJob{ //与职位信息相关的基本属性和方法 publicintJobID; publicintJobNum; publicStringJobName; publicStringPubDate; publicStringEndDate; publicStringDescription; publicStringRequirements; publicJob(){} //职位描述属性的set及get方法 publicStringgetDescription(){ returnDescription; } publicvoidsetDescription(StringDescription){ this.Description=Description; } //职位描述截止日期set及get方法 publicStringgetEndDate(){ returnEndDate; } publicvoidsetEndDate(StringEndDate){ this.EndDate=EndDate; } //职位ID的set及get方法 publicintgetJobID(){ returnJobID; } publicvoidsetJobID(intJobID){ this.JobID=JobID; } //职位名称的set及get方法 publicStringgetJobName(){ returnJobName; } publicvoidsetJobName(StringJobName){ this.JobName=JobName; } //职位招聘人数的set及get方法 publicintgetJobNum(){ returnJobNum; } publicvoidsetJobNum(intJobNum){ this.JobNum=JobNum; } //职位发布日期的set及get方法 publicStringgetPubDate(){ returnPubDate; } publicvoidsetPubDate(StringPubDate){ this.PubDate=PubDate; } //职位要求属性的set及get方法 publicStringgetRequirements(){ returnRequirements; } publicvoidsetRequirements(StringRequirements){ this.Requirements=Requirements; }/** *方法:jobSearch *描述:查询满足条件的职位信息 *@paramDBdb数据库对象 *@paramStringJobName职位名称 *@paramStringPubDate发布日期 *@paramStringEndDate截止日期 *@returnVector职位列表 *@throwsException */ publicstaticVectorjobSearch(DBdb,StringJobName, StringPubDate,StringEndDate)throwsException{ VectorJobList=newVector(); ResultSetrs; StringstrSql=null; strSql="select*fromJobListwhereJobNamelike'%"+JobName+"%'" +"andPubDatelike'%"+PubDate+"%'" +"andEndDatelike'%"+EndDate+"%'"; rs=db.OpenSql(strSql); while(rs.next()){ Jobjob=newJob(); job.setJobID(rs.getInt("JobID")); job.setJobName(rs.getString("JobName")); job.setPubDate(rs.getString("PubDate")); job.setEndDate(rs.getString("EndDate")); job.setDescription(rs.getString("Description")); job.setRequirements(rs.getString("Requirements")); job.setJobNum(rs.getInt("JobNum")); JobList.add(job); System.out.println("nnnnnnnnnn,,,,,,,"+rs.getString("JobName")); } returnJobList; } /** *方法:getJobList *描述:获取职位列表 *@paramDBdb数据库对象 *@returnVector职位列表 *@throwsException */ publicstaticVectorgetJobList(DBdb)throwsException{ VectorJobList=newVector(); ResultSetrs; StringstrSql=null; strSql="select*fromJobListorderbyJobID"; rs=db.OpenSql(strSql); while(rs.next()){ Jobjob=newJob(); job.setJobID(rs.getInt("JobID")); job.setJobName(rs.getString("JobName")); job.setPubDate(rs.getString("PubDate")); job.setEndDate(rs.getString("EndDate")); job.setJobNum(rs.getInt("JobNum")); JobList.add(job); } returnJobList; } /** *方法:getJobDetail *描述:获取职位详细信息 *@paramDBdb数据库对象 *@paramintJobID职位代号 *@returnVector职位列表 *@throwsException */ publicVectorgetJobDetail(DBdb,intJobID)throwsException{ ResultSetrs; StringstrSql=null; strSql="select*fromJobListwhereJobID="+JobID; rs=db.OpenSql(strSql); VectorJobList=newVector(); if(rs.next()){ Jobjob=newJob(); job.setJobID(rs.getInt("JobID")); job.setJobName(rs.getString("JobName")); System.out.println("JobID"+rs.getString("JobID")); job.setPubDate(rs.getString("PubDate")); job.setEndDate(rs.getString("EndDate")); job.setDescription(rs.getString("Description")); job.setRequirements(rs.getString("Requirements")); job.setJobNum(rs.getInt("JobNum")); JobList.add(job); } returnJobList; } /** *方法:addJob *描述:新加职位Form信息 *@paramDBdb数据库对象 *@paramStringJobName职位名称 *@paramStringPubDate发布日期 *@paramStringEndDate截止日期 *@paramStringDescription职位描述 *@paramStringRequirements职位要求 *@paramStringJobNum招聘人数 *@returnboolean数据库操作是否成功 *@throwsException */ publicbooleanaddJob(DBdb,StringJobName,StringPubDate,StringEndDate,StringDescription,StringRequirements,intJobNum)throwsException{ StringstrSql=null; ResultSetrs; intJobIDMax; strSql="selectmax(JobID)fromJobList"; rs=db.OpenSql(strSql); if(rs.next()){ JobIDMax=rs.getInt(1)+1; }else{ JobIDMax=1; } strSql="insertintoJobListvalues('"+JobName+"','"+PubDate +"','"+EndDate+"','"+Description+"','"+Requirements +"','"+JobNum +"')"; if(db.ExecSql(strSql)==0){ returnfalse; }else{ returntrue; } }/** *方法:modifyJob *描述:修改职位信息 *@paramDBdb数据库对象 *@paramStringJobID职位代号 *@paramStringJobName职位名称 *@paramStringPubDate发布日期 *@paramStringEndDate截止日期 *@paramStringDescription职位描述 *@paramStringRequirements职位要求 *@paramStringJobNum招聘人数 *@returnboolean数据库操作是否成功 *@throwsException */ publicbooleanmodifyJob(DBdb,intJobID,StringJobName, StringPubDate,StringEndDate,StringDescription, StringRequirements,intJobNum)throwsException{ System.out.print("lokkeewwwww"); StringstrSql=null; strSql="updateJobListsetJobName='"+JobName+"'," +"PubDate='"+PubDate+"'," +"EndDate='"+EndDate+"'," +"Description='"+Description+"'," +"Requirements='"+Requirements+"'," +"JobNum="+JobNum +"whereJobID="+JobID; System.out.print("JobID"+JobID); if(db.ExecSql(strSql)==0){ returnfalse; }else{ returntrue; } } /** *方法:DeleteJob *描述:删除职位信息 *@paramDBdb数据库对象 *@paramintJobID职位代号 *@returnboolean数据库操作是否成功 *@throwsException */ publicbooleanDeleteJob(DBdb,intJobID)throwsException{ StringstrSql=null; strSql="deletefromJobListwhereJobID="+JobID; if(db.ExecSql(strSql)==0){ returnfalse; }else{ returntrue; }}}5)OnlineCV/struts-bean.tld,OnlineCV/struts-html.tld,OnlineCV/struts-logic.tld,OnlineCV/CVTld.tld,是标签库。其中OnlineCV/CVTld.tld是自定义标签库,其他是struct系统标准的标签库,详见基线库的OnlineCV/CVTld目录下文件,表D-6是身
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《电气火灾》课件
- 《研究生培养与管理》课件
- 《服务行业的戴尔》课件
- 广东省梅州市五华县华城镇初级中学-主题班会-防性侵【课件】
- 单位管理制度集合大合集【人事管理篇】
- 单位管理制度集粹汇编【人力资源管理篇】十篇
- 单位管理制度汇编大合集【人力资源管理】
- 单位管理制度合并汇编人事管理十篇
- 单位管理制度分享汇编【职工管理篇】
- 高中语文常见的病句类型及其辨析
- 2023年北京海淀七年级上学期期末英语试卷(含答案)
- 急救、生命支持类医学装备调配制度与流程
- 河南省驻马店市重点中学2023-2024学年九年级上学期12月月考语文试题(无答案)
- 江苏省无锡市2022-2023学年上学期初中学业水平调研测试九年级英语期末试题
- 超声内镜穿刺护理课件
- 国家开放大学电大考试《心理学》课程形成性考核册试题及答案(1-4)最全
- 四川省成都市泡桐树小学小学数学五年级下册期末试卷(培优篇)
- 教练技术工具之:平衡轮课件
- 全国各省市县统计表-
- 国家开放大学电大本科《管理案例分析》2023年期末试题及答案(试卷号:1304)
- 醋酸加尼瑞克注射液
评论
0/150
提交评论