软件工程课程设计企业工资管理系统概述_第1页
软件工程课程设计企业工资管理系统概述_第2页
软件工程课程设计企业工资管理系统概述_第3页
软件工程课程设计企业工资管理系统概述_第4页
软件工程课程设计企业工资管理系统概述_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

人文科技学院计算机系课程设计说明书课程名称:软件工程导论课程代码: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、成绩评定#/47处理逻辑定义外部实体名称:人事科数据流编号:S1简述:对职工添加,删除进行管理的部门输出数据流:F1外部实体名称:劳资科数据流编号:S2简述:对职工工资进行管理的部门输出数据流:F2外部实体名称:财务科数据流编号:S3简述:发放工资,与工资记账管理。外部实体定义数据存储名称:职工信息表数据存储编号:DO简述:职工基本信息数据存储组成:职工编号+XX+科室号+职称+体制+医保号+公积金号+养老金号+银行账号+有效标志关键字:职工编号相关处理:F1数据存储名称:本月工资表数据存储编号:D1简述:职工本月工资信息数据存储组成:职工号+工资日期+操作员+1{薪金科目}20+1{扣款科目}5关键字:职工编号+工资日期相关处理:F2四系统设计4.1系统处理流程和数据流程

<32__财务处数据库职工月消费与工资税汇总表银行后勤部门收费公司部门汇总信息工作考勤情况人事处税务部门ATM机住房公积金职工保险保险公司个人所得税水电费银行XX职称性别<32__财务处数据库职工月消费与工资税汇总表银行后勤部门收费公司部门汇总信息工作考勤情况人事处税务部门ATM机住房公积金职工保险保险公司个人所得税水电费银行XX职称性别职工XX工作部门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=GB2312"session="true"%><%pageimport="java.sql.*"%><jsp:useBeanid="login"scope="session"class="DataBase.DBControl"></jsp:useBean><%Stringlname=request.getParameter("UserName");Stringlpassword=request.getParameter("Password");intltype=Integer.parseInt(request.getParameter("logintype"));if(ltype==0){if(login.isManager(lname,lpassword,ltype)){session.setAttribute("MANAGERID",String.valueOf(login.getMID()));session.setAttribute("MANAGERNAME",lname);session.setAttribute("MANAGERPASSWORD",lpassword);response.sendRedirect("manageMain.jsp");}else{response.sendRedirect("error.jsp");}}elseif(ltype==1){if(login.isUser(lname,lpassword)){session.setAttribute("GUESTID",String.valueOf(login.getUID()));session.setAttribute("GUESTNAME",lname);session.setAttribute("GUESTPASSWORD",lpassword);response.sendRedirect("user.jsp");}else{response.sendRedirect("error.jsp");}}%>以与javabean文件的核心部分:publicbooleanisManager(Stringmanager,Stringpassword,inttype){this.setMname(manager);this.setMpassword(password);Stringcstr="select*frommanagerwheremanagername='"+manager+"'andmanagerpassword='"+password+"'";try{mcon=this.connection();mstmt=mcon.createStatement();mrs=mstmt.executeQuery(cstr);if(mrs.next()){setMID(mrs.getInt("MID"));

returntrue;else{returnfalse;}}catch(Exceptionex){returnfalse;}}+user+user+Stringustr="select*fromguestuserwhereusername='""'anduserpassword='"+password+"'";try{ucon=this.connection();ustmt=ucon.createStatement();urs=ustmt.executeQuery(ustr);if(urs.next()){setUID(urs.getInt("USERID"));returntrue;}else{returnfalse;}}catch(Exceptionex){System.out.println(ex.toString());returnfalse;}}5.1.2工资查询系统该子系统实现普通员工对工资的查询以与动态新闻的浏览以与密码修改核心代码:<%Connectionusercon;Statementuserstmt;ResultSetuserrs;Stringrsstr="select*fromguestuserwhereusername='"+uname+"'anduserpassword='"+upassword+"'";try{usercon=datacon.connection();userstmt=usercon.createStatement();userrs=userstmt.executeQuery(rsstr);while(userrs.next()){%><tr><tdwidth="124"align="center"><pstyle="margin-top:0;margin-bottom:0"><fontsize="2"><%=userrs.getDate("wagetime")%></font></td><tdwidth="146"align="center"><pstyle="margin-top:0;margin-bottom:0"><fontsize="2"><%=userrs.getFloat("oldmoney")%></font></td><tdalign="center"><pstyle="margin-top:0;margin-bottom:0"><fontsize="2"><%=userrs.getFloat("healthmoney")%></font></td><tdalign="center"><pstyle="margin-top:0;margin-bottom:0"><fontsize="2"><%=userrs.getFloat("wages")%></font></td><tdalign="center"><pstyle="margin-top:0;margin-bottom:0"><fontsize="2"><%=userrs.getFloat("housemoney")%></font></td><tdwidth="148"align="center"><pstyle="margin-top:0;margin-bottom:0"><fontsize="2"><%=userrs.getFloat("totalmoney")%></font></td></tr><%}userrs.close();userstmt.close();usercon.close();}catch(Exceptionex){}%>修改密码的核心代码:packageDataBase;importjava.sql.*;publicclassChangepwdextendsDataAction{privateConnectionchangepwdcon;privateStatementchangestmt;publicbooleanchange(Stringusername,Stringoldpass,Stringnewpass){changepwdcon=this.connection();Stringchangestr="updateguestusersetuserpassword='"+newpass"'whereusernamelike'"+username+"'"try{changestmt=changepwdcon.createStatement();changestmt.execute(changestr);changestmt.close();changepwdcon.close();returntrue;}catch(Exceptionex){System.out.println(ex.toString());returnfalse;}}}5.1.3工资发放系统该平台下,管理员可以为员工发放每月的工资,同时还可以修改密码以与发布动态的新闻。核心代码:<%StringmdStr="select*fromguestuser";try{Connectionmdcon=managecon.connection();Statementmdstmt=mdcon.createStatement();ResultSetmdrs=mdstmt.executeQuery(mdStr);while(mdrs.next()){%><tr><tdalign="center"><%=mdrs.getString("username")%></td><tdalign="center"><%=mdrs.getString("department")%></td><tdalign="center"><%=mdrs.getDate("wagetime")%></td><tdalign="center"><%=mdrs.getFloat("housemoney")%></td><tdalign="center"><%=mdrs.getFloat("oldmoney")%></td><tdalign="center"><%=mdrs.getFloat("healthmoney")%></td><tdalign="center"><%=mdrs.getFloat("totalmoney")%></td><tdalign="center"><inputtype="button"value="发放工资"name="Bl"></td></tr><%}mdrs.close();mdstmt.close();mdcon.close();}catch(Exceptionex){}%>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.谭浩强,软件工程系统分析与设计.,清华大学,2005•王少锋,面向对象技术UML教程,:清华大学,2004•海藩,软件工程导论(第三版)。:清华大学,1998•人杰,殷人昆,永雷,实用软件工程(第二版)。:清华大学,1997附录:编码规编码规对于程序员而言尤为重要,一个软件的生命周期中,80%的花费在于维护。几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护。编码规可以改善软件的可读性,可以让程序员尽快而彻底地理解新的代码。常见的编码规总结如下:•开头注释(BeginningComments)所有的源文件都应该在开头有一个风格一致的注释,其中列出类名、版本信息、日期和声明等,如下:/***Classname*Versioninformation*Date*Copyrightnotice*/•包和引入语句(PackageandImportStatements)在多数Java源文件中,第一个非注释行是包语句。在它之后可以跟引入语句。例如:packagejava.awt;importjava.awt.peer.CanvasPeer;•缩进排版(Indentation)4个空格常被作为缩进排版的一个单位。•行长度(LineLength)尽量避免一行的长度超过80个字符,因为很多终端和工具不能很好处理长度超过80个字符的行。•换行(WrappingLines)当一个表达式无法容纳在一行时,可以依据如下一般规则断开该行:在一个逗号后面断开。在一个操作符前面断开。宁可选择较高级别(higher-level)的断开,而非较低级别(lower-level)的断开。新的一行应该与上一行同一级别表达式的开头处对齐。如果以上规则导致你的代码混乱或者使你的代码都堆挤在右边,那就代之以缩进4个空格。6•注释(Comments)Java程序有两类注释:实现注释(implementationcomments)和文档注释(documentcomments)。实现注释是那些在C++中见过的,使用/*...*/和//界定的注释。文档注释(被称为"doccomments")是Java独有的,并由/**...*/界定。文档注释可以通过javadoc工具转换成HTML文件。为了使程序更容易阅读,程序员应适当的在代码中添加注释。7•每行声明变量的数量(NumberPerLine)推荐一行一个声明,因为这样以利于写注释,如下:intlevel;//indentationlevelintsize;//sizeoftable不要将不同类型变量的声明放在同一行,例如:intfoo,fooarray[];8•避免声明的局部变量覆盖上一级声明的变量。例如,不要在部代码块中声明一样的变量名,见下面的代码,定义了两个“count”,这种情况应避免。intcount;myMethod(){if(condition){intcount=0;・・・}・・・}•简单语句(SimpleStatements)每行至多包含一条语句,例如:argv++;//推荐使用argv++;argc--;//不推荐使用•复合语句(CompoundStatements)复合语句是包含在大括号中的语句序列,形如"{语句}"。复合语句的书写一般应遵守以下原则:被括其中的语句应该较之复合语句缩进一个层次。左大括号"{"应位于复合语句起始行的行尾;右大括号"}"应另起一行并与复合语句首行对齐。大括号可以被用于所有语句,包括单个语句,只要这些语句是诸如if-else或for控制结构的一部分。这样便于添加语句而无需担心由于忘了加括号而引入bug。•空行(BlankLines)空行将逻辑相关的代码段分隔开,以提高可读性。下列情况应该总是使用空行:一个源文件的两个片段(section)之间。类声明和接口声明之间。两个方法之间。方法的局部变量和方法的第一条语句之间。一个方法的两个逻辑段之间,用以提高可

温馨提示

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

评论

0/150

提交评论