1《JAVA程序设计》课程设计报告设计题目:物资管理系统设计与实现学院名称:信息工程学院专业班级:姓名:学号:131221022目录目录一需求分析..................................................................................................................2二概要设计..................................................................................................................22.1概要设计的原则....................................................................................................22.2将用户需求模块化........................................................................................32.3确定系统最终模块........................................................................................32.4UML用例图.....................................................................................................32.5模块设计........................................................................................................4三详细设计..................................................................................................................53.1数据库设计....................................................................................................53.2模块及窗体设计....................................................................................................63.2.1数据库模块设计.................................................................................................63一需求分析本系统的主要目的就是对物资管理的快捷管理以及对数据信息的显示,存放的日期显示所有者等。二概要设计概要设计阶段主要是粗略描述整个软件的框架,并从业务的角度描述软件的模块、工作流程等。项目的成功取决于设计的好坏,而概要设计则是整个设计的关键部分。概要设计的主要任务是将用户的需求划分为不同的功能,然后将这些功能细分成模块,并给模块一些规则约束,以达到各个模块之间可以相互交流的目的。概要设计关乎到系统的整体架构,因此想做好一个概要设计,不仅仅要熟悉用户的业务流程,还要具备相当丰富的设计经验。2.1概要设计的原则概要设计是根据系统分析的需求和工作环境的情况对整个软件的总体结构进行大致的设计。概要设计要坚持以下几个原则。(1)细分原则:软件系统都是由很多不同的模块组成,当设计一套软件时,要先将所有的功能分解。解决复杂问题的方法是将其分解成几个小问题,一个个来解决。(2)提高代码重用性:在面向对象设计中,首先考虑的就是代码的重用,一个好的设计,将来在升级换代时不需要太大的改动,节省了人力物力。(3)从上而下层层分析:概要设计要从整体出发,逐个剖析软件的功能,从上而下,先分析系统总的功能,然后一步步细分,直到最小的功能模块。(4)一致性原则:概要设计要求所有功能模块在定义时使用统一的规范。(5)提高独立性,减少耦合:各个模块与模块之间尽量减少关联,否则修改一个地方就会引起其他多处的变动,不符合面向对象的原则。一般情况下,对类封装后,只允许对类进行扩展,而不能修改,而封装的类必须具有单一职责,既理论情况下不允许两个类共同完成一个功能。(6)模块的大小要尽量适中:不是结构算法越复杂的模块越好,模块的大小要根据实际工作目标和其他类的耦合紧密程度来决定。经验表明,一个模块的规模不应过大,模块的总行数应控制在10~100行的范围内,最好为30~60行,这样理解和阅读都较方便。过长的模块往往是分解不充分的表现,会增加阅读理解的难度;但小规模太多也会使模块之间联系变得复杂,增大系统在模块调用时传递信息所花费的开销。由于概要设计是整个设计的重中之重,牵一发而动全身,所以要努力做一个好的概要设计,才能在今后软件开发过程中不再反复。现在软件行业流行模式化驱动设计,将一些市场上比较成功的模式拿来用在自己的设计中。42.2将用户需求模块化根据概要设计的原则来分析一下本项目的用户需求,并最终转化成用程序语言描述的模块。什么样的需求才是一个模块?模块应该具备如下3个特征。(1)输入和输出:模块必须能被调用并且正确的返回调用,而且调用都是相对一个对象而言,这是模块独立性的一个体现。(2)处理功能:模块必须可以对调用的输入数据进行灵活的处理,并为输出准备好处理结果。(3)程序代码:用来实现模块功能的源代码。2.3确定系统最终模块概要设计中最重要的就是确定此项目包括哪些模块。根据上两节讲述的设计原则和模块特征,将用户需求转化为下面的模块。**************************************************************************/2.4UML用例图1用户登录信息管理2用户信息管理52.5模块设计1)物资信息的添加、修改、删除;2)物资信息的查询;3)用户的添加、查询、修改;4)数据存储数据库中;三详细设计3.1数据库设计数据库名称:obj表adm:存放登陆用户的用户名和密码表wuliu:管理员(adm)字段名类型备注YidVarchar(30)员工idYnameNvarchar(50)员工姓名YsexNchar(1)性别'男'或者'女'Yageint年龄0Ymint员工密码物资信息表(wuliu)物资的名称字段名类型·备注OleiNvchar(20)OnameNvchar(20)物资的类别6BidVarchar(30)员工idDateVarchar(30)存放日期OidVarchar(30)物资的idOsVarchar(30)存放者3.2模块及窗体设计3.2.1数据库模块设计将数据库的连接包装在一个connect类中,以便其他模块能够轻松调用,避免每次重写数据库连接代码。代码如下:publicclassconnect{privateConnectionconnection;publicconnect(){}publicConnectionsql(){Stringurl=jdbc:sqlserver://127.0.0.1:1433;DatabaseName=obj;Stringusername=ma;Stringpassword=123456;//Connectionct=null;//加载驱动程序以连接数据库try{Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver);connection=DriverManager.getConnection(url,username,password);}//捕获加载驱动程序异常catch(Exceptione){System.err.println(装载JDBC/ODBC驱动程序失败。);e.printStackTrace();System.exit(1);//terminateprogram}returnconnection;}7publicvoidcloseAll(Connectionconn,Statementstat,ResultSetrs){if(rs!=null){try{rs.close();}catch(SQLExceptione){//TODO:handleexceptione.printStackTrace();}finally{if(stat!=null){try{stat.close();}catch(SQLExceptione){//TODO:handleexceptione.printStackTrace();}finally{if(conn!=null){try{conn.close();}catch(SQLExceptione){//TODO:handleexceptione.printStackTrace();}}}}}}}}3.2.2数据的查询删除功能的封装在Mode和Stable类中代码如下:publicclassMode{privateConnectionconnection;//连接信息定义privateStatementstatement;privateResultSetresultSet;publicSQLExceptionzeng(Stringa){SQLExceptions=null;Stringquery=a;try{connectt=newconnect();connection=t.sql();8statement=connection.createStatement();statement.executeUpdate(query);t.closeAll(connection,statement,resultSet);}catch(SQLExceptione){s=e;}returns;}publicSQLExceptionchange(Stringa){SQLExceptions=null;Stringquery=a;connectt=newconnect();connection=t.sql();try{statement=connection.createStatement();statement.executeUpdate(query);}catch(SQLExceptione){s=e;}returns;}publicSQLExceptiondele(Stringa){SQLExceptions=null;Stringquery=a;connectt=newconnect();connection=t.sql();try{statement=connection.createStatement();statement.executeUpdate(query);t.closeAll(connection,statement,resultSet);}catch(SQLExceptione){//TODOAuto-generatedcatchblocks=e;}returns;}}Stable类的代码如下:publicclassStable{9privateConnectionconnection;//连接信息定义privateStatementstatement;privateResultSetresultSet;privateResultSetMetaDatarsMetaData;connectt=newconnect();publicStable(){}publicVectorgeta