《JAVA-课程设计报告.docx》由会员分享,可在线阅读,更多相关《JAVA-课程设计报告.docx(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、JAVA-课程设计报告 JA V A程序设计 课程设计报告 设计题目:学生信息管理系统学院名称:信息工程学院 专业班级:13计本1 姓名: 学号: 目录 一需求分析。3 二概要设计。3 三详细设计。3 3.1 数据库设计。3 3.2 模块及窗体设计。3 3.2.1 数据库模块设计。3 3.2.2 用户登录识别模块。5 3.2.3用户信息管理模块。6 (1)密码修改。6 (2)用户信息添加和删除。8 3.2.4 学生息管理模块。10 (1)添加信息。10 (2)信息查看。11 (3)信息修改。12 (4)删除信息。14 3.2.5 系统管理模块。15 3.2.6 主窗体菜单设计。15 四软件测试
2、。15 五总结。15 参考资料:17 一需求分析 本系统的主要目的就是实现学生信息管理,使学生信息管理工作更加容易,从而提高工作效率,降低管理成本. 系统中需要对拥护身份进行管理,采取登陆进入系统的形式. 二概要设计 /* 概要设计阶段主要是粗略描述整个软件的框架,并从业务的角度描述软件的模块、工作流程等。项目的成功取决于设计的好坏,而概要设计则是整个设计的关键部分。概要设计的主要任务是将用户的需求划分为不同的功能,然后将这些功能细分成模块,并给模块一些规则约束,以达到各个模块之间可以相互交流的目的。概要设计关乎到系统的整体架构,因此想做好一个概要设计,不仅仅要熟悉用户的业务流程,还要具备相当
3、丰富的设计经验。 2.1 概要设计的原则 概要设计是根据系统分析的需求和工作环境的情况对整个软件的总体结构进行大致的设计。概要设计要坚持以下几个原则。 (1)细分原则:软件系统都是由很多不同的模块组成,当设计一套软件时,要先将所有的功能分解。解决复杂问题的方法是将其分解成几个小问题,一个个来解决。 (2)提高代码重用性:在面向对象设计中,首先考虑的就是代码的重用,一个好的设计,将来在升级换代时不需要太大的改动,节省了人力物力。 (3)从上而下层层分析:概要设计要从整体出发,逐个剖析软件的功能,从上而下,先分析系统总的功能,然后一步步细分,直到最小的功能模块。 (4)一致性原则:概要设计要求所有
4、功能模块在定义时使用统一的规范。 (5)提高独立性,减少耦合:各个模块与模块之间尽量减少关联,否则修改一个地方就会引起其他多处的变动,不符合面向对象的原则。一般情况下,对类封装后,只允许对类进行扩展,而不能修改,而封装的类必须具有单一职责,既理论情况下不允许两个类共同完成一个功能。 (6)模块的大小要尽量适中:不是结构算法越复杂的模块越好,模块的大小要根据实际工作目标和其他类的耦合紧密程度来决定。经验表明,一个模块的规模不应过大,模块的总行数应控制在10100行的范围内,最好为3060行,这样理解和阅读都较方便。过长的模块往往是分解不充分的表现,会增加阅读理解的难度;但小规模太多也会使模块之间
5、联系变得复杂,增大系统在模块调用时传递信息所花费的开销。 由于概要设计是整个设计的重中之重,牵一发而动全身,所以要努力做一个好的概要设计,才能在今后软件开发过程中不再反复。现在软件行业流行模式化驱动设计,将一些市场上比较成功的模式拿来用在自己的设计中。 2.2 将用户需求模块化 根据概要设计的原则来分析一下本项目的用户需求,并最终转化成用程序语言描述的模块。什么样的需求才是一个模块?模块应该具备如下3个特征。 (1)输入和输出:模块必须能被调用并且正确的返回调用,而且调用都是相对一个对象而言,这是模块独立性的一个体现。 (2)处理功能:模块必须可以对调用的输入数据进行灵活的处理,并为输出准备好
6、处理结果。 (3)程序代码:用来实现模块功能的源代码。 3.3 确定系统最终模块 概要设计中最重要的就是确定此项目包括哪些模块。根据上两节讲述的设计原则和模块特征,将用户需求转化为下面的模块。 */ 2.1 UML用例图 1 用户登录信息管理 2 用户信息管理 学生信息管理 系统管理 2.2 模块设计 1 数据库设计模块 2 用户登录识别模块 3 用户信息管理模块 4 学生信息管理模块 5 系统管理模块 三详细设计 3.1 数据库设计 数据库名称:student 表名:user, stud 表user:存放登陆用户的用户名和密码 表stud:存放学生基本信息 3.2 模块及窗体设计 3.2.1
7、 数据库模块设计 将数据库的连接包装在一个database类中,以便其他模块能够轻松调用,避免每次重写数据库连接代码。 代码如下: import java.sql.*;/引入包 public class database public static Connection cn; /定义一个连接对象 public static Statement st;/定义一个SQL语句对象 public static ResultSet rs;/定义一个数据集 public static boolean joinDB() /用来判断是否连接成功 boolean joinFlag; try joinFlag
8、= true; Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);/通过调用 ng中的Class 类的forName方法来实现JDBCODBC桥接器 cn = DriverManager.getConnection(jdbc:odbc:student,sa,);创建一个连接对象 cn.setCatalog(student);/加载数据库 System.out.println(数据库连接成功); st = cn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONL
9、 Y); /返回一个可滚动的结果集,数据库变化时结果集跟着变化;不能用结果集更新数据库中的表 return joinFlag; catch (SQLException sqlEx) System.out.println(sqlEx.getMessage(); joinFlag = false; return joinFlag; catch (ClassNotFoundException notfoundEX) System.out.println(notfoundEX.getMessage(); joinFlag = false; return joinFlag; public static
10、boolean executeSQL(String sqlString) boolean executeFlag; try st.execute(sqlString); executeFlag = true; catch (Exception e) executeFlag = false; System.out.println(sql exception: + e.getMessage(); return executeFlag; public static boolean query(String sqlString) try rs = null; rs = st.executeQuery(
11、sqlString); catch (Exception Ex) System.out.println(sql exception: + Ex); return false; return true; 3.2.2 用户登录识别模块 代码封装在类Land里,所用到的信息保存在表user里 private void Judge(String sqlString) if (database.joinDB() /如果数据库连接成功 if (database.query(sqlString) /如果SQL语句执行成功 try if(database.rs.isBeforeFirst() /如果指向记录集
12、的在第一条记录的前面 System.out.println(密码正确); jf.setVisible(false);/窗体不可见 .close();/关闭数据库连接 new Main();/主窗体 else System.out.println(错误); new JOptionPane().showMessageDialog(null,用户名或密码错误!,JOptionPane.ERROR_MESSAGE); catch(Exception ex) System.out.println(ex.getMessage(); else System.out.println(连接数据库不成功!); 按
13、钮“确定”的监听事件代码: public void actionPerformed (ActionEvent e) if(textname.getText().equals() new JOptionPane().showMessageDialog(null,用户名不能为空!); else if(textmima.getText().equals() new JOptionPane().showMessageDialog(null,密码不能为空!); else String sql=select * from user where user_id = + textname.getText()
14、+ and password = + textmima.getText()+ ; System.out.println(sql); Judge(sql);/调用成员方法,判断是否用户名和密码正确 3.2.3 用户信息管理模块 (1)密码修改 用户名将自动从表user里检索出来,供用户选择 以下是它的基本属性 将所有用用户名读出来 database.joinDB();/连接数据库 String sql=select * from user; try if(database.query(sql) while(database.rs.next()/依次将用户名读出 String name=datab
15、ase.rs.getString(user_id); tf.addItem(name); catch(Exception e) 确定“按钮”的监听事件代码: b1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) String name= + tf.getSelectedItem(); System.out.println(name); String sql=select * from user where user_id=+ name +; System.out.println(
16、sql); try if(database.query(sql) database.rs.next(); String ps1=pas1.getText(); String password=database.rs.getString(Password); if(ps1.equals(password) if(pas2.getText().equals(pas3.getText() String supdate=update user set password=+ pas3.getText()+ where user_id=+ name +; database.executeSQL(supda
17、te); new JOptionPane().showMessageDialog(null,密码更改成功!); else new JOptionPane().showMessageDialog(null,两次密码不同!); else new JOptionPane().showMessageDialog(null,旧密码不正确!); catch(Exception el) System.out.println(el); ); (2)用户信息添加和删除 上半部分用来添加用户,下半部分用来删除用户 database.joinDB(); String sql=select * from user;
18、try if(database.query(sql) while(database.rs.next()/记录集若有记录则通过循环将数据依次读出 String name=database.rs.getString(user_id); cbUserName.addItem(name); catch(Exception e) /为添加按钮加事件- butOk.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) if(txtname.getText().equals() /判断是否为空 ne
19、w JOptionPane().showMessageDialog(null,用户名不能为空!); else if(pas1.getText().equals() new JOptionPane().showMessageDialog(null,密码不能为空!); else if(pas1.getText().equals(pas2.getText() String sql=insert into user values(+ txtname.getText() +,+ pas1.getText() +); try if(database.executeSQL(sql)/若SQL执行成功 new
20、 JOptionPane().showMessageDialog(null,添加成功!); cbUserName.addItem(txtname.getText(); catch(Exception ea) ); 删除按钮监听事件代码 butDelete.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) String name= + cbUserName.getSelectedItem();/得到用户名 String sql=select * from user where use
21、r_id=+ name +; try if(database.query(sql) database.rs.next(); String pas=pas3.getText(); String password=database.rs.getString(Password); System.out.println(password); if(pas.equals(password)/比较密码是否与记录集里对应一致 String sdelete=delete from user where user_id=+ name +; if(database.executeSQL(sdelete) new
22、JOptionPane().showMessageDialog(null,删除成功!); pas3.setText(); cbUserName.removeAllItems();/将删除的条目从JcomboBox中删除 String sql1=select * from user; if(database.query(sql1) while(database.rs.next()/更新JcomboBox条目 String name1=database.rs.getString(user_id); cbUserName.addItem(name1); else new JOptionPane().showMessageDialog(null,密码不正确!); catch(Exception el) System.out.println(el);