1《JAVA程序设计》课程设计报告设计题目:学生信息管理系统学院名称:信息工程学院专业班级:13计本1姓名:学号:2目录一需求分析。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。3二概要设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。3三详细设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。33.1数据库设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。33.2模块及窗体设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。33.2.1数据库模块设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。33.2.2用户登录识别模块。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。53.2.3用户信息管理模块。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。6(1)密码修改。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。6(2)用户信息添加和删除。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。83.2.4学生息管理模块。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。10(1)添加信息。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。10(2)信息查看。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。11(3)信息修改。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。12(4)删除信息。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。143.2.5系统管理模块。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。153.2.6主窗体菜单设计。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。15四软件测试。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。15五总结。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。15参考资料:.......................................................173一需求分析本系统的主要目的就是实现学生信息管理,使学生信息管理工作更加容易,从而提高工作效率,降低管理成本.系统中需要对拥护身份进行管理,采取登陆进入系统的形式.二概要设计/************************************************************************概要设计阶段主要是粗略描述整个软件的框架,并从业务的角度描述软件的模块、工作流程等。项目的成功取决于设计的好坏,而概要设计则是整个设计的关键部分。概要设计的主要任务是将用户的需求划分为不同的功能,然后将这些功能细分成模块,并给模块一些规则约束,以达到各个模块之间可以相互交流的目的。概要设计关乎到系统的整体架构,因此想做好一个概要设计,不仅仅要熟悉用户的业务流程,还要具备相当丰富的设计经验。2.1概要设计的原则概要设计是根据系统分析的需求和工作环境的情况对整个软件的总体结构进行大致的设计。概要设计要坚持以下几个原则。(1)细分原则:软件系统都是由很多不同的模块组成,当设计一套软件时,要先将所有的功能分解。解决复杂问题的方法是将其分解成几个小问题,一个个来解决。(2)提高代码重用性:在面向对象设计中,首先考虑的就是代码的重用,一个好的设计,将来在升级换代时不需要太大的改动,节省了人力物力。(3)从上而下层层分析:概要设计要从整体出发,逐个剖析软件的功能,从上而下,先分析系统总的功能,然后一步步细分,直到最小的功能模块。(4)一致性原则:概要设计要求所有功能模块在定义时使用统一的规范。(5)提高独立性,减少耦合:各个模块与模块之间尽量减少关联,否则修改一个地方就会引起其他多处的变动,不符合面向对象的原则。一般情况下,对类封装后,只允许对类进行扩展,而不能修改,而封装的类必须具有单一职责,既理论情况下不允许两个类共同完成一个功能。(6)模块的大小要尽量适中:不是结构算法越复杂的模块越好,模块的大小要根据实际工作目标和其他类的耦合紧密程度来决定。经验表明,一个模块的规模不应过大,模块的总行数应控制在10~100行的范围内,最好为30~60行,这样理解和阅读都较方便。过长的模块往往是分解不充分的表现,会增加阅读理解的难度;但小规模太多也会使模块之间联系变得复杂,增大系统在模块调用时传递信息所花费的开销。由于概要设计是整个设计的重中之重,牵一发而动全身,所以要努力做一个好的概要设计,才能在今后软件开发过程中不再反复。现在软件行业流行模式化驱动设计,将一些市场上比较成功的模式拿来用在自己的设计中。2.2将用户需求模块化根据概要设计的原则来分析一下本项目的用户需求,并最终转化成用程序语言描述的模块。什么样的需求才是一个模块?模块应该具备如下3个特征。(1)输入和输出:模块必须能被调用并且正确的返回调用,而且调用都是相对一个对象而言,这是模块独立性的一个体现。(2)处理功能:模块必须可以对调用的输入数据进行灵活的处理,并为输出准备好处理结果。(3)程序代码:用来实现模块功能的源代码。3.3确定系统最终模块4概要设计中最重要的就是确定此项目包括哪些模块。根据上两节讲述的设计原则和模块特征,将用户需求转化为下面的模块。**************************************************************************/2.1UML用例图1用户登录信息管理2用户信息管理3学生信息管理4系统管理2.2模块设计系统首页用户登陆信息管理用户信息管理学生信息管理通过身份请求添加删除用户修改密码添加查看修改删除系统管理重新登陆退出登陆51数据库设计模块2用户登录识别模块3用户信息管理模块4学生信息管理模块5系统管理模块三详细设计3.1数据库设计数据库名称:student表名:user,stud表user:存放登陆用户的用户名和密码表stud:存放学生基本信息学生表(stus)字段名类型备注stusIDVarchar(30)学生idstuNameNvarchar(50)NotnullstuSexNchar(1)性别'男'或者'女'stuAgeint年龄0stuDeptNvarchar(30)所在系……3.2模块及窗体设计3.2.1数据库模块设计将数据库的连接包装在一个database类中,以便其他模块能够轻松调用,避免每次重写数据库连接代码。下表是他的基本属性文件名成员变量成员方法database.javapublicstaticConnectioncn;publicstaticStatementst;publicstaticResultSetrs;publicstaticbooleanjoinDB()publicstaticbooleanexecuteSQL(StringsqlString)publicstaticbooleanquery(StringsqlString)代码如下:importjava.sql.*;//引入包publicclassdatabase{publicstaticConnectioncn;//定义一个连接对象publicstaticStatementst;//定义一个SQL语句对象publicstaticResultSetrs;//定义一个数据集publicstaticbooleanjoinDB(){//用来判断是否连接成功booleanjoinFlag;try{joinFlag=true;Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);//通过调用java.lang中的Class类的forName方法来实现JDBC—ODBC桥接器cn=DriverManager.getConnection(jdbc:odbc:student,sa,);创建一个连接对象cn.setCatalog(student);//加载数据库System.out.println(数据库连接成功);6st=cn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);//返回一个可滚动的结果集,数据库变化时结果集跟着变化;不能用结果集更新数据库中的表returnjoinFlag;}catch(SQLExceptionsqlEx){System.out.println(sqlEx.getMessage());joinFlag=false;returnjoinFlag;}catch(ClassNotFoundExceptionnotfoundEX){System.out.println(notfoundEX.getMessage());joinFlag=false;returnjoinFlag;}}publicstaticbooleanexecuteSQL(StringsqlString){booleanexecuteFlag;try{st.execute(sqlString);executeFlag=true;}catch(Exceptione){executeFlag=false;System.out.println(sqlexception:+e.getMessage());}returnexecuteFlag;}publicstaticbooleanquery(StringsqlString){try{rs=null;rs=st.executeQuery(sqlString);}catch(ExceptionEx){System.out.println(sqlexception:+Ex);returnfalse;}returntrue;}}3.2.2用户登录识别模块7代码封装在类Land里,所用到的信息保存在表user里下表是他的基本属性文件名控件成员方法Land.javaJLabel:labelname=newJLabel(用户名)labelmima=newJLabel(密码)Jbutton:btenter=newJButton(确定);btcancel=newJButton(清空);privatevoidJudge(StringsqlString)判断用户名和密码是否正确的成员方法代码:privatevoidJudge(StringsqlString){if(database.joinDB()){//如果数据库连接成功if(database.query(sqlString))//如果SQL语句执行成功try{if(database.rs.isBeforeFirst()){//如果指向记录集的在第一条记录的前面System.out.println(密码正确);jf.setVisible(false);//窗体不可见database.cn.close();//关闭数据库连接newMain();//主窗体}else{System.out.println(错误);newJOptionPane().showMessageDialog(null,用户名或密码错误!,,JOptionPane.ERROR_MESSAGE