还剩33页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
湖南人文科技学院计算机系课程设计说明书课程名称:软件工程导论课程代码:408023题目:企业工资管理系统年级/专业/班:08级计科二班学生姓名:学号:指导老师:颜富强开题时间:2009年6月5日完成时间:2009年6月29日2009年6月18日课程设计任务书及成绩评定课程名称:软件工程导论完成者:
1、设计的目的与要求1)加强学生的实践能力;2)理解小型系统开发的基本步骤;3)本系统的功能包括档案信息管理模块、工资管理模块、工资统计模块,部门查询特殊查询,报表查询
2、设计进度及完成情况日期内容
6.5-
6.7项目开发计划书
6.8-
6.10系统需求说明书
6.11-
6.13系统设计说明书
6.14-
6.15项目的形成
6.16-
6.17测试计划和Bug跟踪列表
6.17-
6.18项目的递交
3、成绩评定设计成绩(教师填写)指导老师(签字)二00九年月目录TOC\o1-3\h\z\u目录1一项目开发计划书
31.1引言
31.2工资管理系统功能模块描述
41.3实施计划
41.4支持条件5二可行性分析
52.1可行性研究前提
52.2经济上可行性
62.3技术可行性
62.4开发工具的选择
62.5开发工具概述
62.
5.1JSP概述
62.
5.2SQLServer数据库简介7三需求分析
83.1市场需求分析
83.2系统需求分析
83.
2.1系统目标
83.
2.2系统的分析和概要设计
93.
2.3系统功能分析
103.
2.4系统业务流程图
113.3系统E-R图
123.4数据流图
133.5数据字典15四系统设计
164.1系统处理流程和数据流程
164.2系统数据库概念结构
184.3系统数据库逻辑结构
184.4系统数据库设计19五系统测试
225.1部分代码
225.
1.1登陆平台
225.
1.2工资查询系统
245.
1.3工资发放系统
265.2测试
275.
2.1测试的作用和意义
275.
2.2测试方法
275.
2.3测试内容
285.
2.4测试结果28六总结29参考文献29附录编码规范29一项目开发计划书
1.1引言企业工资管理系统是一个企业单位不可缺少的部分它的内容对于企业的决策者和管理者来说都至关重要所以工资管理系统应该能够为用户提供充足的信息和快捷的查询手段使其公司工资管理初步实行计算机化,让计算机在工资管理中得到初步应用使工资管理者总是根据准确、及时的工资管理信息来进行决策,实现管理只有计算机才能将现代化社会中,成倍增长的工资管理信息量,进行及时收集、加工、整理、贮存、检索、传递、反馈给决策者而一个企业工资管理系统在企业对工资管理已不可或缺其功能主要有
(1)对输入的工资管理数据,进行数值运算和逻辑运算,求解各种问题
(2)对工资管理信息进行加工来解决各种数据处理问题,为人事决策者在决策时提供依据
(3)对工资管理的各种资料数据进等统计计算,并将处理后的信息存贮起来当前,不少单位的工资管理部门对于计算机的应用还仅限于简单的单机应用,随着时间的推移、任务的复杂、用户的需求,其应用还会扩大随着计算机的广泛应用,计算机工资管理信息系统的建立,适应了社会经济发的客观要求,是工资管理现代化的一大进步今天我们运用计算机进行了工资管理档案管理的初步现代化的开发和使用,它大大提高了工资管理工作者的工作效率,它把工资管理(档案、工资)从繁重的手工操作中解脱出来,用更多精力从事创造性的管理活动;它能使决策、计划和其它管理活动更加科学、精确、灵活因此,建立计算机工资管理信息系统是一种客观发展必然趋势尽管在工资管理方面还不可能普遍使用计算机,但从长远来说,工资管理现代化和计算机是不分割的轻视或者拒绝利用计算机技术,就不可能真正地、全面地实现工资管理现代化
1.2工资管理系统功能模块描述具体系统功能需求描述1档案信息管理提供对”人员档案信息”数据输入、查询功能2工资管理提供对”职工工资表”数据的输入、查询、统计功能3工资统计提供对“职工工资表”数据的月统计,由系统自行生成“职工工资构成情况表”实现该表的查询、打印功能4部门查询提供以某一部门为索引的”人员档案信息”查询功能5特殊查询提供对日期型字段和合同期限的”人员档案信息”查询功能6报表查询提供对工资、职工履历的信息以报表的形式供用户查询、打印,另外用户还可以对这些基本信息进行更新和删除,
1.3实施计划工作任务的分门与人员分工组长:贺泽溪任务:
(1)系统总的开发计划书
(2)每周至少组织小组讨论一次,记录讨论内列出本周开发计划
(3)项目开发进度的管理
(4)团队的组织和协调设计罗维马红操任务
(1)参与小组讨论
(2)进行系统的需求分析和系统设计
(3)完成系统需求说明书和系统设计说明书
(4)编写测试计划,参与系统测试
(5)协助文档人员完成用户相关文档开发王日春卢洪波任务
(1)参与小组讨论
(2)根据设计完成编码,并注释
(3)进行单元测试系统规划阶段:项标志性事件开始到完成开发阶段目开发计划书的完成
6.5-
6.7需求分析阶段:系统需求说明书完成
6.8-
6.10设计阶段:系统设计说明书
6.11-
6.13编码实现:项目的形成
6.14-
6.15测试阶段:测试计划和Bug跟踪列表
6.16-
6.17移交阶段:项目的递交
6.17-
6.
181.4支持条件计算机系统支持操作系统需要windows2000以上版本;二可行性分析
2.1可行性研究前提要求满足对工资管理的基本要求及功能,并对职工信息收集、处理、保存目标实现无纸化办公,节省成本,提高工作效率条件、假定、限制当企业工资管理的信息量和复杂程度达到某一限度时,即管理人员的劳动强度超过其承受能力时,就必须采用新的管理手段,如用计算机技术对信息的收集、加工、传递和存贮等,这样,一个工资管理系统就可以对企业职工工资进行高效、合理、恰当地管理此系统成本低廉,自开发到运行结束至少可运行3年,开发成本不超过600人民币,开发软件到投入使用不超过1个月
2.2经济上可行性开发成本600元人民币效益大幅度地提高工资管理信息系统的工作质量和效率,让企业掌握整个工资管理系统的全面情况,为管理人员提供了准确的工资管理信息,促进工资管理工作的规范化及各项管理制度与指标体系的建立和健全;提供各种加工处理了的工资管理信息,以满足工资管理的特殊要求,适应新形势对职工队伍提出的新要求效益/投资比暂时无法估算投资回收期大约3个月
2.3技术可行性软件需求操作系统WINDOWS2000AdvanceServer以上硬件需求赛扬
1.7GCPU、512M内存80G硬盘的计算机本系统采用JSP实现,依靠其强大的面向对象系统,与SQLServer2000数据库管理系统相结合,能在1个月内开发出系统
2.4开发工具的选择eclipse作为前台的开发工具,用SQLServer200作为后台支持数据库,通过JSP的数据库控件来连接SQLServer200中并对其编程来实现各种功能
2.5开发工具概述
2.
5.1JSP概述JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能JSP与JavaServlet一样,是在服务器端执行的,通常返回该客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览JSP的
1.0规范的最后版本是1999年9月推出的,12月又推出了
1.1规范目前较新的是JSP
1.2规范,JSP
2.0规范的征求意见稿也已出台JSP页面由HTML代码和嵌入其中的Java代码所组成服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器JavaServlet是JSP的技术基础,而且大型的Web应用程序的开发需要JavaServlet和JSP配合才能完成JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点自JSP推出后,众多大公司都支持JSP技术的服务器,如IBM、Oracle、Bea公司等,所以JSP迅速成为商业应用的服务器端语言JSP可用一种简单易懂的等式表示为HTML+Java=JSP
2.
5.2SQLServer数据库简介SQLServer是由Microsoft开发和推广的关系数据库管理系统(DBMS),它最初是由Microsoft、Sybase、Ashton-Tate等三家公司共同开发的,并于1988年推出了第一个在OS/2版本上运行的SQLServer系统1992年Sybase和Microsoft这两家公司将SQLServer移植到了WindowsNT操作系统上,后来Microsoft致力于WindowsNT平台的SQLServer的开发,而Sybase则专注于SQLServer在UNIX上的应用近年来在MicrosoftSQLServer的发展历程中不断更新版本,有两个版本具有重要的意义即是在1996年推出的SQLServer
6.5版本和在2000年8月推出的SQLServer2000版本
6.5版本使得SQLServer得到广泛的应用,而2000版本在功能和易用性上有很大的增强,并推出了简体中文版,它包括企业版、标准版、开发版和个人版等4个版本三需求分析
3.1市场需求分析工资管理系统是一个企业单位不可缺少的部分它能为用户提供充足的信息和快捷的查询手段
(1)一个工资管理系统可以高效能、大容量地收集、处理、存贮工资管理信息,大幅度地提高工资管理信息系统的工作质量和效率
(2)能够为企业管理人员及时掌握整个工资管理系统的全面情况,提供系统的准确的工资管理信息,可以促进工资管理工作的规范化及各项管理制度与指标体系的建立和健全
(3)为企业提供各种加工处理了的工资管理信息,以满足工资管理的特殊要求,适应新形势对职工队伍提出的新要求,帮助管理人员选择方案,实现优化决策虽然当前,不少单位的工资管理部门对于计算机的应用还仅限于简单的单机应用,随着时间的推移、任务的复杂、用户的需求,其应用还会扩大
3.2系统需求分析
3.
2.1系统目标企业工资管理系统可以用于支持企业完成工资管理工作,有如下3个方面的目标
(1)支持企业实现规范化的管理
(2)支持企业高效率完成人事管理的日常业务,包括新员工加入时人事档案的建立,老员工转出、辞职、退休等
(3)支持企业进行人事管理及其相关方面的科学决策,如企业领导根据现有的员工合同期限决定是否继续聘用等
3.
2.2系统的分析和概要设计根据实际情况,我们使用原型法(RapidPrototyping)即以少量代价快速地构造一个可执行的软件系统模型使用户和开发人员可以较快地确定需求,然后采用循环进化的开发方式,对系统模型作连续的精化,将系统需具备的性质逐渐增加上去,直到所有的性质全部满足此时模块也发展成为最终产品了通过对用户需求的分析,我们可以分析出该工资管理系统大致可以分为六个模块人事档案管理模块、职工工资管理模块、工资统计模块的实现、部门查询模块、特殊查询模块、报表查询模块现在对这六个模块做具体说明人事基本情况管理模块输入职工信息输出“人员档案表”功能对人事基本信息的查询职工工资管理模块输入人员月工资输出“职工工资表”功能完成员工工资的查询工资统计模块输出“职工工资统计表”功能完成员工工资的统计和打印部门查询模块输出以部门为索引的“职工档案信息”功能完成以部门为索引的“职工档案信息”的统计和查询特殊查询模块的实现输出满足查询条件的“职工档案信息”和职工合同的期限功能完成满足查询条件的“职工档案信息”和职工合同的期限的查询报表查询模块的实现输出员工履历信息和工资信息的基本情况查询及打印功能功能完成对员工履历信息和工资信息基本情况的查询及打印
3.
2.3系统功能分析本系统是基于JSP和SQLServer数据库建立的B/S结构管理系统,考虑了两种角色工资管理员和普通员工他们通过相同的登陆页面,选择不同的登陆方式,各自进入自己的用户界面管理员进入管理页面可以对员工发放工资,可以新添加新的员工,修改自己的密码,以及发布消息普通用户可以查看自己的工资情况,可以根据需要查询具体每个月,或几个月的工资发放情况,察看最近的动态发布消息,同时也可以修改密码
3.
2.4系统业务流程图
3.3系统E-R图图3-3E-R图
3.4数据流图人事科工资管理银行财务科报表传盘职工名单D1工资表表6-1底层数据流图人事科劳资科P2发本月工资P1异动管理本月工资银行职工名单D1本月工资表财务科劳资科停发名单职工信息报表工资表6-2工资管理第一层数据流图人事科P
1.1涨工资劳资科P
1.3停发工资劳资科P
1.2登记职工劳资科涨工资名单停发名单职工名单D1工资表职工信息工资信息工资信息表6-3工资管理的展开劳资科D1本月工资表P
2.3银行传盘P
2.1统计汇总银行本月工资各科室P
2.2发工资记账停发名单本月工资职工记账存档记账存档按科室汇总本月工资表6-4本月工资管理的展开
3.5数据字典通过系统需求分析,对企业工资管理系统编制数据字典如下
(1)数据流定义
(2)数据存储定义
(3)处理逻辑定义
(4)外部实体定义四系统设计
4.1系统处理流程和数据流程
4.2系统数据库概念结构
4.3系统数据库逻辑结构
4.4系统数据库设计由于考虑到本系统是应用在单机系统上,另外根据人员规模,我们只建立起一个数据库,在此数据库基础上建立起如下表 ·职工基本信息表 employee_information_table ·职工工资表employee_salary_table ·系统信息表system_table下面我们详细说明表3-21员工基本信息字段名类型长度允许职工编号数值型8No部门字符型6Yes职务字符型8Yes职工姓名字符型8Yes身份证号字符型18Yes性别字符型2Yes出生日期日期型10Yes婚否逻辑型2Yes文化程度字符型8Yes政治面目字符型6Yes毕业学校字符型16Yes联系电话数值型16Yes籍贯字符型10Yes民族字符型10Yes家庭地址字符型30Yes邮政编码数值型6Yes入单位时间日期型10Yes合同期限数值型8Yes职称字符型16Yes评定时间日期型10Yes备注备注型100Yes表3-22部门查询表字段名类型长度允许职工编号数值型8No职工姓名字符型8Yes职务字符型8Yes实发工资数值型8Yes表3-23员工工资表字段名类型长度允许职工编号数值型8No职工姓名字符型8Yes年/月日期型10Yes技能工资数值型8Yes工龄工资数值型8Yes岗位工资数值型8Yes职务工资数值型8Yes洗理费数值型8Yes房屋补贴数值型8Yes交通补贴数值型8Yes价格补贴数值型8Yes工会会费数值型8Yes房屋租金数值型8Yes养老保险数值型8Yes建房扣款数值型8Yes实发工资数值型8Yes表3-24工资统计表字段名类型长度允许部门字符型8Yes人数数值型10Yes工资总和数值型20Yes表3-25特殊查询表字段名类型长度允许职工编号数值型8No职工姓名字符型8Yes日期日期型8Yes表3-26报表查询表字段名类型长度允许职工编号数值型8No部门字符型6Yes职务字符型8Yes房屋租金数值型8Yes养老保险数值型8Yes建房扣款数值型8Yes实发工资数值型8Yes日期日期型8Yes五系统测试
5.1部分代码
5.
1.1登陆平台该平台可以实现员工和管理员的登录验证,根据登陆的身份不同进入不同的管理系统如普通员工进入工资查询系统,管理员则进入工资发放系统核心代码%@pagecontentType=text/html;charset=GB2312session=true%%@pageimport=java.sql.*%jsp:useBeanid=loginscope=sessionclass=DataBase.DBControl/jsp:useBean%Stringlname=request.getParameterUserName;Stringlpassword=request.getParameterPassword;intltype=Integer.parseIntrequest.getParameterlogintype;ifltype==0{iflogin.isManagerlnamelpasswordltype{session.setAttributeMANAGERIDString.valueOflogin.getMID;session.setAttributeMANAGERNAMElname;session.setAttributeMANAGERPASSWORDlpassword;response.sendRedirectmanageMain.jsp;}else{response.sendRedirecterror.jsp;}}elseifltype==1{iflogin.isUserlnamelpassword{session.setAttributeGUESTIDString.valueOflogin.getUID;session.setAttributeGUESTNAMElname;session.setAttributeGUESTPASSWORDlpassword;response.sendRedirectuser.jsp;}else{response.sendRedirecterror.jsp;}}%以及javabean文件的核心部分publicbooleanisManagerStringmanagerStringpasswordinttype{this.setMnamemanager;this.setMpasswordpassword;Stringcstr=select*frommanagerwheremanagername=+manager+andmanagerpassword=+password+;try{mcon=this.connection;mstmt=mcon.createStatement;mrs=mstmt.executeQuerycstr;ifmrs.next{setMIDmrs.getIntMID;returntrue;}else{returnfalse;}}catchExceptionex{returnfalse;}}publicbooleanisUserStringuserStringpassword{this.setUsernameuser;this.setUserpasswordpassword;Stringustr=select*fromguestuserwhereusername=+user+anduserpassword=+password+;try{ucon=this.connection;ustmt=ucon.createStatement;urs=ustmt.executeQueryustr;ifurs.next{setUIDurs.getIntUSERID;returntrue;}else{returnfalse;}}catchExceptionex{System.out.printlnex.toString;returnfalse;}}
5.
1.2工资查询系统该子系统实现普通员工对工资的查询以及动态新闻的浏览以及密码修改核心代码%Connectionusercon;Statementuserstmt;ResultSetuserrs;Stringrsstr=select*fromguestuserwhereusername=+uname+anduserpassword=+upassword+;try{usercon=datacon.connection;userstmt=usercon.createStatement;userrs=userstmt.executeQueryrsstr;whileuserrs.next{%trtdwidth=124align=centerpstyle=margin-top:0;margin-bottom:0fontsize=2%=userrs.getDatewagetime%/font/tdtdwidth=146align=centerpstyle=margin-top:0;margin-bottom:0fontsize=2%=userrs.getFloatoldmoney%/font/tdtdalign=centerpstyle=margin-top:0;margin-bottom:0fontsize=2%=userrs.getFloathealthmoney%/font/tdtdalign=centerpstyle=margin-top:0;margin-bottom:0fontsize=2%=userrs.getFloatwages%/font/tdtdalign=centerpstyle=margin-top:0;margin-bottom:0fontsize=2%=userrs.getFloathousemoney%/font/tdtdwidth=148align=centerpstyle=margin-top:0;margin-bottom:0fontsize=2%=userrs.getFloattotalmoney%/font/td/tr%}userrs.close;userstmt.close;usercon.close;}catchExceptionex{}%修改密码的核心代码packageDataBase;importjava.sql.*;publicclassChangepwdextendsDataAction{privateConnectionchangepwdcon;privateStatementchangestmt;publicbooleanchangeStringusernameStringoldpassStringnewpass{changepwdcon=this.connection;Stringchangestr=updateguestusersetuserpassword=+newpass+whereusernamelike+username+;try{changestmt=changepwdcon.createStatement;changestmt.executechangestr;changestmt.close;changepwdcon.close;returntrue;}catchExceptionex{System.out.printlnex.toString;returnfalse;}}}
5.
1.3工资发放系统该平台下,管理员可以为员工发放每月的工资,同时还可以修改密码以及发布动态的新闻核心代码%StringmdStr=select*fromguestuser;try{Connectionmdcon=managecon.connection;Statementmdstmt=mdcon.createStatement;ResultSetmdrs=mdstmt.executeQuerymdStr;whilemdrs.next{%trtdalign=center%=mdrs.getStringusername%/tdtdalign=center%=mdrs.getStringdepartment%/tdtdalign=center%=mdrs.getDatewagetime%/tdtdalign=center%=mdrs.getFloathousemoney%/tdtdalign=center%=mdrs.getFloatoldmoney%/tdtdalign=center%=mdrs.getFloathealthmoney%/tdtdalign=center%=mdrs.getFloattotalmoney%/tdtdalign=centerinputtype=buttonvalue=发放工资name=B1/td/tr%}mdrs.close;mdstmt.close;mdcon.close;}catchExceptionex{}%
5.2测试
5.
2.1测试的作用和意义系统测试是教师工资管理系统的开发周期中的一个十分重要环节尽管在系统开发周期的各个阶段均采取了严格的技术审查,但依然难免会留下错误,如果没有在投入运行前的系统测试阶段被发现并纠正,问题迟早会在运行中暴露出来,到那时要纠正错误将会付出更大的代价系统测试占用的时间、花费的人力和成本占软件开发的很大比例统计表明,开发较大规模的系统,系统测试的工作量大约占整个软件开发工作量的40%-50%而对于一些特别重要的大系统,测试的工作量和成本更大,甚至超过系统开发其他各阶段的总和的若干倍
5.
2.2测试方法
(1)测试人员测试队伍由两位成员组成软件的设计者在测试整个过程中负责整体测试方案的制定和测试进度的掌握以及白盒测试的测试者第二位成员由未参加软件制作者担任,主要责任是进行软件的黑盒测试以及软件环境,硬件要求和极限测试工作
(2)机器测试通过在计算机上直接运行被测程序,来发现程序中的错误机器测试包括黑盒测试盒白盒测试黑盒测试也称功能测试,将软件看作黑盒子,在完全不考虑程序的内部结构和特性的情况下,研究软件的外部特性根据软件的需求规格说明书测试用例,从程序的输入和输出特性上测试是否满足设定的功能白盒测试也称结构测试,将软件看作一个透明的白盒子,按照程序的内部结构和处理逻辑来选定测试用例,对软件的逻辑路径及过程进行测试,检查与测试是否相符
5.
2.3测试内容
①软件的正常运行、关闭及退出时保存记录的提示(默认为是)
②用户登录界面友好,可操作性及安全性能较好,能对不同管理级别者进行限制,以保证数据库的安全
③数据库的可维护性好,数据的录入、删除及更改均能顺利完成,并能实现动态更新
④数据查询便捷,能对各种不同的查询条件进行搜索,以找到最合适的答案
⑤数据溢出、越界均能进行非法提示,以警告用户正确使用对用户的非正常操作方式也提出警告
⑥数据类型填写错误时,系统能够报错
⑦软件对操作系统的兼容性良好,可移植性完好
5.
2.4测试结果
①软件在运行、关闭及退出时保存记录的提示功能基本完成,在软件的不断启动关闭过程中没有出现死机、程序执行效率降低等各种不良现象,功能的实现较为完善
②用户登录界面较友好,但软件界面的色彩选择、搭配上对于长期工作者而言仍然不会产生眼部不适感可操作性及安全性能较好,能完成对不同管理级别者的限制工作,对软件涉及到的机密数据能进行良好的保护
③数据库的可维护性良好,数据的录入能顺利完成,并能实现动态更新,删除和修改也能顺利完成
④数据查询不够全面,只能按系统设定的少数查询条件进行搜索,以找到合适的答案
⑤数据溢出、越界基本不能进行非法提示,以警告用户正确使用对用户的非正常操作方式能提出警告
⑥数据类型填写错误时,系统有报错功能,在数据输入错误时,使用者能够获知错误所在
⑦软件兼容性有待提高,在Dreamweaver版本较低的机子上测试不断出现错误提示六总结经过反复测试,系统完成后运行添加、修改、查询、报表等功能均正常,发布
1.0版此系统仍存在许多缺陷,但是通过该系统设计达到了系统设计目的意义,基本掌握了软件开发的主要步骤,了解了各环节在开发时要注意的问题,体会到开发一个系统应该注意的方面以及重视用户在系统开发过程中间的作用,开发出好的软件高质量的软件另外在设计过程中也逐渐提高了软件开发技能和编程技能以及良好的软件开发思维模式参考文献1.张海藩,软件工程(第二版)北京人民邮电出版社,20062.张海藩,牟永敏,面向对象程序设计使用教程(第二版)北京清华大学出版社,20073.金敏,周翔,高级软件开发过程北京清华大学出版社,20054.朱如龙,ACCESS2000数据库应用系统开发技术,机械工业出版社,20055.谭浩强,软件工程系统分析与设计.,清华大学出版社,20056.王少锋,面向对象技术UML教程,北京清华大学出版社,20047.张海藩,软件工程导论(第三版)北京清华大学出版社,19988.郑人杰,殷人昆,陶永雷,实用软件工程(第二版)北京清华大学出版社,1997附录编码规范编码规范对于程序员而言尤为重要,一个软件的生命周期中,80%的花费在于维护几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护编码规范可以改善软件的可读性,可以让程序员尽快而彻底地理解新的代码常见的编码规范总结如下1.开头注释BeginningComments所有的源文件都应该在开头有一个风格一致的注释,其中列出类名、版本信息、日期和版权声明等,如下/***Classname*Versioninformation*Date*Copyrightnotice*/2.包和引入语句PackageandImportStatements在多数Java源文件中,第一个非注释行是包语句在它之后可以跟引入语句例如packagejava.awt;importjava.awt.peer.CanvasPeer;3.缩进排版Indentation4个空格常被作为缩进排版的一个单位4.行长度LineLength尽量避免一行的长度超过80个字符,因为很多终端和工具不能很好处理长度超过80个字符的行5.换行WrappingLines当一个表达式无法容纳在一行内时,可以依据如下一般规则断开该行在一个逗号后面断开在一个操作符前面断开宁可选择较高级别higher-level的断开,而非较低级别lower-level的断开新的一行应该与上一行同一级别表达式的开头处对齐如果以上规则导致你的代码混乱或者使你的代码都堆挤在右边,那就代之以缩进4个空格6.注释CommentsJava程序有两类注释实现注释implementationcomments和文档注释documentcomments实现注释是那些在C++中见过的,使用/*...*/和//界定的注释文档注释被称为doccomments是Java独有的,并由/**...*/界定文档注释可以通过javadoc工具转换成HTML文件为了使程序更容易阅读,程序员应适当的在代码中添加注释7.每行声明变量的数量NumberPerLine推荐一行一个声明,因为这样以利于写注释,如下intlevel;//indentationlevelintsize;//sizeoftable不要将不同类型变量的声明放在同一行,例如intfoofooarray[];8.避免声明的局部变量覆盖上一级声明的变量例如,不要在内部代码块中声明相同的变量名,见下面的代码,定义了两个“count”,这种情况应避免intcount;...myMethod{ifcondition{intcount=0;...}...}9.简单语句SimpleStatements每行至多包含一条语句,例如argv++;//推荐使用argv++;argc--;//不推荐使用10.复合语句CompoundStatements复合语句是包含在大括号中的语句序列,形如{语句}复合语句的书写一般应遵守以下原则被括其中的语句应该较之复合语句缩进一个层次左大括号{应位于复合语句起始行的行尾;右大括号}应另起一行并与复合语句首行对齐大括号可以被用于所有语句,包括单个语句,只要这些语句是诸如if-else或for控制结构的一部分这样便于添加语句而无需担心由于忘了加括号而引入bug11.空行BlankLines空行将逻辑相关的代码段分隔开,以提高可读性下列情况应该总是使用空行一个源文件的两个片段section之间类声明和接口声明之间两个方法之间方法内的局部变量和方法的第一条语句之间一个方法内的两个逻辑段之间,用以提高可读性12.命名规范NamingConventions命名规范使程序更易读,从而更易于理解它们也可以提供一些有关标识符功能的信息,以助于理解代码,例如,不论它是一个常量,包,还是类标识符类型命名规则例子包一个唯一包名的前缀总是全部小写的ASCII字母并且是一个顶级域名,通常是com,edu,gov,mil,net,org,或1981年ISO3166标准所指定的标识国家的英文双字符代码包名的后续部分根据不同机构各自内部的命名规范而不尽相同这类命名规范可能以特定目录名的组成来区分部门、项目、机器或注册名com.sun.engcom.apple.quicktime.v2edu.cmu.cs.bovik.cheese类命名规则类名是个一名词,采用大小写混合的方式,每个单词的首字母大写尽量使你的类名简洁而富于描述使用完整单词,避免缩写词除非该缩写词被更广泛使用,像URL,HTMLclassRaster;classImageSprite;接口与类名相似interfaceRasterDelegate;interfaceStoring;方法方法名是一个动词,采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写run;getBackground;变量除了变量名外,所有实例,包括类,类常量,均采用大小写混合的方式,第一个单词的首字母小写,其后单词的首字母大写变量名不应以下划线或美元符号开头变量名应简短且富于描述变量名的选用应该易于记忆尽量避免单个字符的变量名,除非是一次性的临时变量总言之,变量应遵循匈牙利命名法charc;inti;floatmyWidth;常量类常量和ANSI常量的声明,应该全部大写,单词间用下划线隔开staticfinalintGET_THE_CPU=1;13.变量赋值VariableAssignments避免在一个语句中给多个变量赋相同的值它很难读懂例如fooBar.fChar=barFoo.lchar=c;14.圆括号Parentheses一般而言,在含有多种运算符的表达式中使用圆括号来避免运算符优先级问题,是个好方法即使运算符的优先级对你而言可能很清楚,但对其他人未必如此你不能假设别的程序员和你一样清楚运算符的优先级ifa==bc==d//不推荐使用ifa==bc==d//推荐使用职工编号民族婚否籍贯满勤缺勤性别出勤表员工职务员工信息设置m用户1m工资设置报表查询技能工资实发工资别资1实发工资别资职工编号m部门设置部门m工资职务基本工资职工姓名职务数据流名称职工名单数据流编号F1简述职工信息数据来源人事科数据去向P
1.1数据流名称本月工资数据流编号F2简述对职工本月工资进行修改数据来源劳资科数据去向P
2.1,P
2.2数据流名称职工发工资数据流编号P
2.2简述根据工资条形成本月工资表输入数据流D2-P
2.2输出数据流P
2.2-职工处理查询D1(本月工资表),打印本月职工工资条财务记账后传盘给银行外部实体名称人事科数据流编号S1简述对职工添加,删除进行管理的部门输出数据流F1外部实体名称劳资科数据流编号S2简述对职工工资进行管理的部门输出数据流F2外部实体名称财务科数据流编号S3简述发放工资,及工资记账管理数据存储名称职工信息表数据存储编号D0简述职工基本信息数据存储组成职工编号+姓名+科室号+职称+体制+医保号+公积金号+养老金号+银行账号+有效标志关键字职工编号相关处理F1数据存储名称本月工资表数据存储编号D1简述职工本月工资信息数据存储组成职工号+工资日期+操作员+1{薪金科目}20+1{扣款科目}5关键字职工编号+工资日期相关处理F2银行帐户性别财务处数据库职工工作部门部门汇总信息姓名职称工作考勤情况后勤部门职工月消费及工资税汇总表水电费个人所得税职工保险住房公积金银行ATM机收费公司税务部门保险公司人事处。