




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
北京長江軟件網上招聘系統編碼規范北京長江軟件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*/}④行末注釋注釋界定符"http://",可以注釋掉整行或者一行中的一部分。它一般不用于連續多行的注釋文本;然而,它可以用來注釋掉連續多行的代碼段。注意:頻繁的注釋有時反映出代碼的低質量。當你覺得被迫要加注釋的時候,考慮一下重寫代碼使其更清晰。注釋不應寫在用星號或其他字符畫出來的大框里。注釋不應包括諸如制表符和回退符之類的特殊字符。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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 不同覆蓋作物與玉米間作對土壤養分及微生物群落的影響
- 小分子化合物組合促進牙齦間充質干細胞轉分化為神經元樣細胞研究
- 2025西部銀行筆試題庫及答案
- 2025食品安全考試題庫及答案
- 基于注意力機制和編解碼器結構協同的視網膜血管分割方法研究
- 中日雙邊旅游與進出口貿易互動關系研究
- 大單元教學設計在高中生物學教學中的應用研究-以《遺傳與進化》模塊為例
- 考慮錨索松弛的懸浮隧道沖擊動力響應研究
- 2025年第六屆全國國家版圖知識競賽測試試題題庫(中小學組)附答案詳解(黃金題型)
- 2025年海上風力發電場運維管理技術創新與運維服務創新應用報告
- 網絡優化低PHR高占比提升優化處理案例總結
- 《公路隧道施工技術規范》(3660-2020)【可編輯】
- 2023-2024學年安徽省合肥市七年級下學期期末語文質量檢測試題(含答案)
- 華為認證安全方向HCIP-Security H12-725 V4.0更新題庫匯總(含答案)
- 中國城市區域劃分表(超實用)
- 2022分布式并網光伏調試方案
- 卷揚機調速控制系統設計
- 研學旅行PPT模板
- 精神科常見并發癥發生危險及防范課件
- 精益管理之精益生產
- 架空索道安裝施工工藝標準
評論
0/150
提交評論