1、JAVA程序设计课程设计汇报 设计题目: 学生信息管理系统 学院名称: 信息工程学院 专业班级: 13计本1 姓 名: 学 号: 目录一 需求分析。3二 概要设计。3三 具体设计。3 3.1 数据库设计。3 3.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参考资料:17一 需
2、求分析 本系统关键目标就是实现学生信息管理,使学生信息管理工作愈加轻易,从而提升工作效率,降低管理成本. 系统中需要对拥护身份进行管理,采取登陆进入系统形式.二 概要设计/*概要设计阶段关键是粗略描述整个软件框架,并从业务角度描述软件模块、工作步骤等。项目标成功取决于设计好坏,而概要设计则是整个设计关键部分。概要设计关键任务是将用户需求划分为不一样功效,然后将这些功效细分成模块,并给模块部分规则约束,以达成各个模块之间能够相互交流目标。概要设计关乎到系统整体架构,所以想做好一个概要设计,不仅仅要熟悉用户业务步骤,还要含有相当丰富设计经验。2.1 概要设计标准概要设计是依据系统分析需求和工作环境
3、情况对整个软件总体结构进行大致设计。概要设计要坚持以下多个标准。(1)细分标准:软件系统全部是由很多不一样模块组成,当设计一套软件时,要先将全部功效分解。处理复杂问题方法是将其分解成多个小问题,一个个来处理。(2)提升代码重用性:在面向对象设计中,首先考虑就是代码重用,一个好设计,未来在升级换代时不需要太大改动,节省了人力物力。(3)从上而下层层分析:概要设计要从整体出发,逐一剖析软件功效,从上而下,先分析系统总功效,然后一步步细分,直到最小功效模块。(4)一致性标准:概要设计要求全部功效模块在定义时使用统一规范。(5)提升独立性,降低耦合:各个模块和模块之间尽可能降低关联,不然修改一个地方就
4、会引发其它多处变动,不符合面向对象标准。通常情况下,对类封装后,只许可对类进行扩展,而不能修改,而封装类必需含有单一职责,既理论情况下不许可两个类共同完成一个功效。(6)模块大小要尽可能适中:不是结构算法越复杂模块越好,模块大小要依据实际工作目标和其它类耦合紧密程度来决定。经验表明,一个模块规模不应过大,模块总行数应控制在10100行范围内,最好为3060行,这么了解和阅读全部较方便。过长模块往往是分解不充足表现,会增加阅读了解难度;但小规模太多也会使模块之间联络变得复杂,增大系统在模块调用时传输信息所花费开销。因为概要设计是整个设计重中之重,牵一发而动全身,所以要努力做一个好概要设计,才能在
5、以后软件开发过程中不再反复。现在软件行业流行模式化驱动设计,将部分市场上比较成功模式拿来用在自己设计中。2.2 将用户需求模块化依据概要设计标准来分析一下本项目标用户需求,并最终转化成用程序语言描述模块。什么样需求才是一个模块?模块应该含有以下3个特征。(1)输入和输出:模块必需能被调用而且正确返回调用,而且调用全部是相对一个对象而言,这是模块独立性一个表现。(2)处理功效:模块必需能够对调用输入数据进行灵活处理,并为输出准备好处理结果。(3)程序代码:用来实现模块功效源代码。3.3 确定系统最终模块概要设计中最关键就是确定此项目包含哪些模块。依据上两节讲述设计标准和模块特征,将用户需求转化为
6、下面模块。*/2.1 UML用例图1 用户登录信息管理2 用户信息管理学生信息管理系统管理系统首页用户登陆信息管理用户信息管理学生信息管理经过身份请求添加删除用户修改密码添加查看修改删除系统管理重新登陆退出登陆2.2 模块设计1 数据库设计模块2 用户登录识别模块3 用户信息管理模块4 学生信息管理模块5 系统管理模块三 具体设计3.1 数据库设计数据库名称:student 表名:user, stud表user:存放登陆用户用户名和密码表stud:存放学生基础信息学生表(stus)字段名类型备注stusIDVarchar(30)学生idstuNameNvarchar(50)Not nullst
7、uSexNchar(1)性别男 或女stuAgeint年纪0stuDeptNvarchar(30)所在系3.2 模块及窗体设计3.2.1 数据库模块设计将数据库连接包装在一个database类中,方便其它模块能够轻松调用,避免每次重写数据库连接代码。下表是她基础属性文件名组员变量组员方法database.javapublic static Connection cn;public static Statement st; public static ResultSet rs;public static boolean joinDB()public static boolean executeS
8、QL(String sqlString)public static boolean query(String sqlString)代码以下: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 joinFl
9、ag = true; Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);/经过调用java.lang中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_RE
10、AD_ONLY); /返回一个可滚动结果集,数据库改变时结果集跟着改变 ;不能用结果集更新数据库中表 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 sta
11、tic 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.executeQu
12、ery(sqlString); catch (Exception Ex) System.out.println(sql exception: + Ex); return false; return true; 3.2.2 用户登录识别模块代码封装在类Land里,所用到信息保留在表user里下表是她基础属性文件名控件组员方法Land.javaJLabel:labelname=newJLabel(用户名)labelmima=new JLabel(密码)Jbutton: btenter=new JButton(确定);btcancel=new JButton(清空);private void Jud
13、ge(String sqlString)判定用户名和密码是否正确组员方法代码:private void Judge(String sqlString) if (database.joinDB() /假如数据库连接成功 if (database.query(sqlString) /假如SQL语句实施成功 try if(database.rs.isBeforeFirst() /假如指向统计集在第一条统计前面 System.out.println(密码正确); jf.setVisible(false);/窗体不可见 .close();/关闭数据库连接 new Main();/主窗体 else Sys
14、tem.out.println(错误); new JOptionPane().showMessageDialog(null,用户名或密码错误!,JOptionPane.ERROR_MESSAGE); catch(Exception ex) System.out.println(ex.getMessage(); else System.out.println(连接数据库不成功!); 按钮“确定”监听事件代码:public void actionPerformed (ActionEvent e) if(textname.getText().equals()new JOptionPane().sho
15、wMessageDialog(null,用户名不能为空!);else if(textmima.getText().equals()new JOptionPane().showMessageDialog(null,密码不能为空!);elseString sql=select * from user where user_id = + textname.getText() + and password = + textmima.getText()+ ;System.out.println(sql);Judge(sql);/调用组员方法,判定是否用户名和密码正确3.2.3 用户信息管理模块(1) 密
16、码修改用户名将自动从表user里检索出来,供用户选择以下是它基础属性文件名控件名称xgmima.javaJlabel: lbe2、lbe3、lbe4、lbe5jTextField: tf JpasswordField:pas1、pas2、pas3Jbutton: b1=new JButton(提交); b2=new JButton(退出);将全部用用户名读出来 database.joinDB();/连接数据库 String sql=select * from user; try if(database.query(sql) while(database.rs.next()/依次将用户名读出 S
17、tring name=database.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
18、.out.println(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.exec
19、uteSQL(supdate); new JOptionPane().showMessageDialog(null,密码更改成功!); else new JOptionPane().showMessageDialog(null,两次密码不一样!); else new JOptionPane().showMessageDialog(null,旧密码不正确!); catch(Exception el) System.out.println(el); );(2)用户信息添加和删除上半部分用来添加用户,下半部分用来删除用户基础属性以下文件名控件名AddDeleteUser.javaprivate JB
20、utton butACancel,butDCancel,butDelete,butOk; private JComboBox cbUserName; private JLabel jLabel1,jLabel2,jLabel3,jLabel4,jLabel5; private JPasswordField pas1,pas2,pas3; private JTextField txtname;/将全部用用户名读出来 database.joinDB(); String sql=select * from user; try if(database.query(sql) while(database
21、.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() /判定是否为空new JOptionPane().showMessageDialog(null,用户名不能
22、为空!);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() +);tryif(database.executeSQL(sql)/若SQL实施成功 new JOptionPane().showMessageDialog(null,添加成功!); cbUs
23、erName.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 user_id=+ name +; try if(database.query(sql) database.r
24、s.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 JOptionPane().showMessageDialog(null,删除成功!); pas3.se
25、tText(); 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) S
26、ystem.out.println(el); );3.2.4 学生信息管理模块(1)添加信息 该添加是根据先添加学生信息,添加学生信息中“添加“按钮代码:butOk.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e)if(jtf1.getText().equals()new JOptionPane().showMessageDialog(null,学号不能为空);else if(jtf2.getText().equals()new JOptionPane().showMessageD
27、ialog(null,姓名不能为空);else if(jtf3.getText().equals()new JOptionPane().showMessageDialog(null,性别不能为空);else String sql=insert into stud values(+ jtf1.getText() +,+ jtf2.getText() +,+ jtf3.getText() +,+ jtf4.getText()+,+ jtf5.getText()+,+ jtf6.getText()+,+ jtf7.getText()+);tryif(database.executeSQL(sql)
28、new JOptionPane().showMessageDialog(null,添加成功!); catch(Exception ea) );(2)信息查看分为查看学生基础信息和查看学生成绩信息,因为代码和窗体大致相识,进取其一讲述下面是她属性文件名称控件名称viewstud.java JtextArea:te=new JTextArea();代码为:class viewstud extends JInternalFrame viewstud()super(查看学生基础信息);/窗体显示得名称Container con=getContentPane();/创建JinternalFrame容器对
29、象con.setLayout(new BorderLayout();/设定窗体布局JTextArea te=new JTextArea();JScrollPane croll=new JScrollPane(te); /加载垂直水平滚动条con.add(croll,BorderLayout.CENTER);database.joinDB(); /连接数据库 String sql=SELECT * FROM stud; try if(database.query(sql) while(database.rs.next() te.append(学号: +database.rs.getString(
30、1)+ ); te.append(姓名: +database.rs.getString(2)+ ); te.append(性别: +database.rs.getString(3)+ ); te.append(年纪: +database.rs.getString(4)+ ); te.append(政治面貌:+database.rs.getString(5)+ ); te.append(系别: +database.rs.getString(6)+ ); te.append(班级: +database.rs.getString(7)+ );te.append(n); catch(SQLExcept
31、ion ex) System.out.println(ex); this.setClosable(true);/关闭窗口可用setVisible(true);/窗体可见setBounds(20,70,600,350);(3)信息修改信息修改分为学生基础信息修改,学生成绩信息修改,因为原理相同就以修改学生基础信息作为例子进行介绍下面是她属性信息文件名称控件名称xiugai.java private JButton butCancel,butOk,butShow;private JLabel jLabel1,jLabel2,jLabel3,jLabel4,jLabel5,jLabel6,jLabe
32、l7; private JTextField jtf1,jtf2,jtf3,jtf4,jtf5,jtf6,jtf7;显示信息按钮监听事件代码以下:database.joinDB(); butShow.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e)if(jtf1.getText().equals()new JOptionPane().showMessageDialog(null,请输入学号);else String sql=select * from grade where 学号=
33、 + +jtf1.getText() +;tryif(database.query(sql)/此处用了个database.executeSQL(sql)提醒resultset 关闭 if(!database.rs.first()JOptionPane.showMessageDialog(null,没有该学生信息.); /下面是用来显示其它文本框里内容else database.rs.first(); jtf2.setText(database.rs.getString(VBA开发); jtf3.setText(database.rs.getString(大学英语); jtf4.setText(data