1、JAVA程序设计报告学生信息管理系统JAVA 程序设计报告-学生信息管理系统辅导老师:*系别:计算机系专业:软件技术学号:*姓名:*日期:2008-6-13目录一 需求分析。3二 功能分析。3三 模块设计。3四 软件设计分析。3(一) 数据库设计。3(二) 模块及窗体设计。31 数据库模块设计。32 用户登录识别模块。53 用户信息管理模块。6(1) 密码修改。6(2)用户信息添加和删除。84 学生息管理模块。10(1)添加信息。10(2)信息查看。11(3)信息修改。12(4)删除信息。145 系统管理模块。156 主窗体菜单设计。15五 总结。15参考资料:一 需求分析 本系统的主要目的就
2、是实现学生信息管理,使学生信息管理工作更加容易,从而提高工作效率,降低管理成本. 系统中需要对拥护身份进行管理,采取登陆进入系统的形式.二 功能分析1 用户登录信息管理2 用户信息管理学生信息管理系统管理三 模块设计1 数据库设计模块2 用户登录识别模块3 用户信息管理模块4 学生息管理模块5 系统管理模块四 软件设计分析(一) 数据库设计数据库名称:student 表名:user,stud,grade表user:存放登陆用户的用户名和密码表stud:存放学生基本信息表grade:存放学生成绩信息(二) 模块及窗体设计1 数据库模块设计将数据库的连接包装在一个database类中,以便其他模块
3、能够轻松调用,避免每次重写数据库连接代码。下表是他的基本属性文件名成员变量成员方法database.javapublic static Connection cn;public static Statement st; public static ResultSet rs;public static boolean joinDB()public static boolean executeSQL(String sqlString)public static boolean query(String sqlString)代码如下:import java.sql.*;/引入包public clas
4、s database public static Connection cn; /定义一个连接对象 public static Statement st;/定义一个SQL语句对象 public static ResultSet rs;/定义一个数据集 public static boolean joinDB() /用来判断是否连接成功 boolean joinFlag; try joinFlag = true;/通过调用java.lang中的Class类的forName方法来实现JDBCODBC桥接器 cn = DriverManager.getConnection(jdbc:odbc:stu
5、dent,sa,);/创建一个连接对象 cn.setCatalog(student);/加载数据库 st = cn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); /返回一个可滚动的结果集,数据库变化时结果集跟着变化 ;不能用结果集更新数据库中的表 return joinFlag; catch (SQLException sqlEx) joinFlag = false; return joinFlag; catch (ClassNotFoundException notfoundEX)
6、joinFlag = false; return joinFlag; public static boolean executeSQL(String sqlString) boolean executeFlag; try st.execute(sqlString); executeFlag = true; catch (Exception e) executeFlag = false; return executeFlag; public static boolean query(String sqlString) try rs = null; rs = st.executeQuery(sql
7、String); catch (Exception Ex) return false; return true; 2用户登录识别模块代码封装在类Land里,所用到的信息保存在表user里下表是他的基本属性文件名控件成员方法Land.javaJLabel:labelname=newJLabel(用户名)labelmima=new JLabel(密码)Jbutton: btenter=new JButton(确定);btcancel=new JButton(清空);private void Judge(String sqlString)判断用户名和密码是否正确的成员方法代码:private voi
8、d Judge(String sqlString) if (database.joinDB() /如果数据库连接成功 if (database.query(sqlString) /如果SQL语句执行成功 try/如果指向记录集的在第一条记录的前面 jf.setVisible(false);/窗体不可见 /关闭数据库连接 new Main();/主窗体 else new JOptionPane().showMessageDialog(null,用户名或密码错误!,JOptionPane.ERROR_MESSAGE); catch(Exception ex) else 按钮“确定”的监听事件代码:
9、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() + and password
10、 = + textmima.getText()+ ; Judge(sql);/调用成员方法,判断是否用户名和密码正确 3用户信息管理模块(1) 密码修改用户名将自动从表user里检索出来,供用户选择以下是它的基本属性文件名控件名称xgmima.javaJlabel: lbe2、lbe3、lbe4、lbe5JcomboBox: tf JpasswordField:pas1、pas2、pas3Jbutton: b1=new JButton(确定); b2=new JButton(清空);将所有用用户名读出来 database.joinDB();/连接数据库 String sql=select *
11、from user; try if(database.query(sql) /依次将用户名读出 tf.addItem(name); catch(Exception e)确定“按钮”的监听事件代码:b1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) String name= + tf.getSelectedItem(); String sql=select * from user where user_id=+ name +; try if(database.query(sql)
12、 String ps1=pas1.getText(); if(ps1.equals(password) if(pas2.getText().equals(pas3.getText()String supdate=update user set password=+ pas3.getText()+ where user_id=+ name +; database.executeSQL(supdate); new JOptionPane().showMessageDialog(null,密码更改成功!); else new JOptionPane().showMessageDialog(null,
13、两次密码不同!); else new JOptionPane().showMessageDialog(null,旧密码不正确!); catch(Exception el) );(2)用户信息添加和删除上半部分用来添加用户,下半部分用来删除用户基本属性如下文件名控件名AddDeleteUser.javaprivate JButton butACancel,butDCancel,butDelete,butOk; private JComboBox cbUserName; private JLabel jLabel1,jLabel2,jLabel3,jLabel4,jLabel5; private
14、JPasswordField pas1,pas2,pas3; private JTextField txtname;/将所有用用户名读出来 database.joinDB(); String sql=select * from user; try if(database.query(sql) /记录集若有记录则通过循环将数据依次读出 cbUserName.addItem(name); catch(Exception e)/为添加按钮加事件- butOk.addActionListener(new ActionListener() public void actionPerformed(Acti
15、onEvent e) if(txtname.getText().equals() /判断是否为空 new 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
16、() +); try if(database.executeSQL(sql)/若SQL执行成功 new JOptionPane().showMessageDialog(null,添加成功!); cbUserName.addItem(txtname.getText(); catch(Exception ea) );删除按钮监听事件代码butDelete.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) String name= + cbUserName.getSelectedItem
17、();/得到用户名 String sql=select * from user where user_id=+ name +; try if(database.query(sql) String pas=pas3.getText(); if(pas.equals(password)/比较密码是否与记录集里对应一致 String sdelete=delete from user where user_id=+ name +; if(database.executeSQL(sdelete) new JOptionPane().showMessageDialog(null,删除成功!); pas3.
18、setText(); cbUserName.removeAllItems();/将删除的条目从JcomboBox中删除 String sql1=select * from user; if(database.query(sql1) /更新JcomboBox条目 cbUserName.addItem(name1); else new JOptionPane().showMessageDialog(null,密码不正确!); catch(Exception el) );4 学生息管理模块(1)添加信息该添加是按照先添加学生信息,再添加学生成绩的次序进行的当学生信息添加完后,添加学生成绩窗口的学号会
19、自动将学生信息里没有添加过成绩的成绩显示出来添加学生信息中的“添加“按钮代码:butOk.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) if(jtf1.getText().equals() new JOptionPane().showMessageDialog(null,学号不能为空); else if(jtf2.getText().equals() new JOptionPane().showMessageDialog(null,姓名不能为空); else if(jtf3.g
20、etText().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()+); try if(database.executeSQL(sql) new JOptionPane().showMessage
21、Dialog(null,添加成功!); catch(Exception ea) );添加学生成绩信息读取学号信息 database.joinDB(); String sql=select 学号 from stud where 学号 NOT IN(select 学号 from grade); try if(database.query(sql) jnum.addItem(name); catch(Exception ea)添加学生成绩信息“添加“按钮代码:butOk.addActionListener(new ActionListener() public void actionPerforme
22、d(ActionEvent e) String name= + jnum.getSelectedItem(); String sql=insert into grade values(+ name+,+ jtf2.getText() +,+ jtf3.getText() +,+ jtf4.getText()+,+ jtf5.getText()+,+ jtf6.getText()+,+ jtf7.getText()+); try if(database.executeSQL(sql) new JOptionPane().showMessageDialog(null,添加成功!); catch(E
23、xception ea) ); (2)信息查看分为查看学生基本信息和查看学生成绩信息,因为代码和窗体大致相识,进取其一讲述下面是他的属性文件名称控件名称v iewstud.java JtextArea:te=new JTextArea();代码为:class viewstud extends JInternalFrame viewstud() super(查看学生基本信息);/窗体显示得名称 Container con=getContentPane();/创建JinternalFrame的容器对象 con.setLayout(new BorderLayout();/设定窗体布局 JTextAr
24、ea 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) te.append(n); catch(SQLException ex) this.setClosable(true);/关闭窗口可用 setVisible(true);/窗体可见 setBounds(20,70,600,350); (3)信息修改信息修改分为学生基本信息修改,学生成绩信息修改,由于原理相似就以修改学生基本信