java-课程设计学生信息管理系统_第1页
java-课程设计学生信息管理系统_第2页
java-课程设计学生信息管理系统_第3页
java-课程设计学生信息管理系统_第4页
java-课程设计学生信息管理系统_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学生信息管理系统目录1 需求分析21.1 设计任务要求21.2 系统功能需求分析22 概要设计22.1 图形用户界面的设计22.2 用数据库建立学生信息表32.3 数据库的连接32.4 模块功能的实现33 详细设计33.1 图形用户界面的设计33.2 用数据库建立学生信息表33.3 数据库的连接33.4 模块功能的实现34 调试分析34.1 系统功能测试34.2 系统调试常见错误34.3 实验小结35 用户使用说明36 测试数据和数据结果3参考文献3附件31 需求分析利用计算机进行学生信息管理,不仅能够保证准确、无误、快速输出,而且还可以利用计算机对有关信息进行查询,检索迅速、查找方便、可靠性高、存储量大、保密性好。要科学地实现信息化管理,开发一个适合学校的,能够进行信息存储、查询、修改等功能的信息管理系统是十分重要的。我这次的课题就是设计与实现一个学生信息管理系统。1.1 设计任务要求该学生信息管理系统的设计要求主要有以下几点:(1)使用图形用户界面;(2)用数据库建立1或2个学生信息表;(不限使用哪种数据库)(3)能连接数据库并实现对学生信息查询、增、删、改等功能。1.2 系统功能需求分析系统主要包括以下几项功能:(1)添加学生信息;(2)查询学生信息;(3)删除学生信息;(4)修改学生信息。2 概要设计2.1 图形用户界面的设计图形用户界面中,设置窗口大小、显示位置和窗口标题,设置窗口关闭之后其后台程序同时关闭,设置窗口可拉伸且为可见的。同时设置了用户输入文本框,文本框的窗口大小等属性也进行设置,文本框中可输入用户需要输入的学生信息。2.2 用数据库建立学生信息表在这里我用的是数据库mysql,建立的数据库名字为student,而且程序使用的是单表形式,表名为 st ,st表的字段,各个字段分别对应学生的学号,名字,性别,年龄,籍贯,系别。2.3 数据库的连接数据库的连接只需通过jdbc驱动,即可实现用户操作与数据资源的连接,并可对相关的数据库信息进行操作。 2.4 模块功能的实现以下是学生信息管理系统功能模块关系图,主要包含查询、添加、修改、删除学生信息等功能。学生信息管理系统查询学生信息添加学生信息修改学生信息删除学生信息图2.1 系统功能模块关系图根据功能的需要,我设想了主窗口界面的大体布置图,并在设计与实现的过程中尽量去按照设想图的图样去实现。设想图如下图所示,图中也大概地标明了部分标语与说明。主模块外出容器:Panel3:用来显示 按钮(添加) 按钮(修改) 按钮(删除)jscrollPane:用来显示数据库调出的数据表Panel1:标签(学生姓名) 输入框(学生姓名) 按钮(查询)图2.2 设想的主界面图2.2中组件功能的实现: (1)当用户点击查询按钮时,系统创建一个数据库连接,从数据库调出用户所输入要查询学生的信息,并显示到jscrollPane中,即主模块的中部;(2)当用户点击添加按钮时,系统创建一个数据连接,弹出一个添加学生的信息的文本框,文本框可输入要添加的学生信息,并可存入数据库。(3)当用户点击修改按钮时,系统创建一个数据连接,从数据库中调出你所选行的学生信息,并弹出修改该学生的信息文本框,文本框可进行学生信息修改,修改完确认后,该学生的信息会重新存入数据库。(4)当用户点击删除按钮时,系统创建一个数据连接,根据你所选行的学生学号,在数据库中找到该学生信息,并删除。3 详细设计3.1 图形用户界面的设计(1)主界面窗口设计函数代码程序如下:/定义用户界面用到的组件 JLabel userName = null; /要查询的学生的名字 JTextField textField = null; /用户输入的文本框 JButton select = null; /查询按钮 JButton insert = null; /添加按钮 JButton update = null; /修改按钮 JButton delete = null; /删除按钮 JTable table = null; /用于显示数据库调出的数据的表 Panel panel1 = null; Panel panel2 = null; Panel panel3 = null; JScrollPane jscrollPane = null; StModel stModel = null; /st表的模型 private Object PreparedStatement; public StuMange() /窗口显示的上部的组件 userName = new JLabel(学生名:); textField = new JTextField(10); /用户输入文本框限定为最多输入10个字符 select = new JButton(查询); /查询按钮 /添加到第一个面板中 panel1 = new Panel(); panel1.add(userName); panel1.add(textField); panel1.add(select); /窗口下部的组件 insert = new JButton(添加); delete = new JButton(删除); update = new JButton(修改); /添加到第三个个面板中 panel3 = new Panel(); panel3.add(insert); panel3.add(delete); panel3.add(update); /窗口中部的组件 stModel = new StModel(); stModel.insertDatabase(select * from st); table = new JTable(stModel); jscrollPane = new JScrollPane(table); /注册事件监听 select.addActionListener(this); insert.addActionListener(this); update.addActionListener(this); delete.addActionListener(this); /将各个组件添加到窗体中 this.add(panel1, BorderLayout.NORTH); this.add(jscrollPane, BorderLayout.CENTER); this.add(panel3, BorderLayout.SOUTH); /设置窗体属性 this.setSize(400, 300); /设置窗口大小 this.setLocation(200, 200); /设置窗口显示的位置 this.setTitle(学生信息管理系统); /设置窗口标题 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); /设置窗口关闭之后其后台程序同时关闭 /设置窗口为可见 this.setVisible(true); (2)添加学生的界面文本框设计函数程序代码如下所示:private JLabel id, name, sex, age, address, dep; /分别代表学生的学号,名字,性别,年龄,籍贯,系别 private JTextField jtf1, jtf2, jtf3, jtf4, jtf5, jtf6; /用户输入的文本框,分别为学生的学号,名字,性别,年龄,籍贯,系别 private JButton add, canel; /分别为添加按钮和取消按钮 private Panel panel1, panel2, panel3; public InsertStudent(Frame owner, String title, boolean model) super(owner, title, model); /实现与父类窗口对话 System.out.println(我执行了); /窗体的西部的组件 id = new JLabel(学号:); name = new JLabel(姓名:); sex = new JLabel(性别); age = new JLabel(年龄); address = new JLabel(籍贯); dep = new JLabel(系别:); /添加到panel1面板中 panel1 = new Panel(new GridLayout(6, 1); panel1.add(id); panel1.add(name); panel1.add(sex); panel1.add(age); panel1.add(address); panel1.add(dep); /窗体的东部组件 jtf1 = new JTextField(10); jtf2 = new JTextField(10); jtf3 = new JTextField(10); jtf4 = new JTextField(10); jtf5 = new JTextField(10); jtf6 = new JTextField(10); /添加到第二个面板中 panel2 = new Panel(new GridLayout(6, 1); panel2.add(jtf1); panel2.add(jtf2); panel2.add(jtf3); panel2.add(jtf4); panel2.add(jtf5); panel2.add(jtf6); /窗体北部的控件 add = new JButton(添加); canel = new JButton(取消); /注册事件监听 add.addActionListener(this); canel.addActionListener(this); /添加到panel3面板中 panel3 = new Panel(); panel3.add(add); panel3.add(canel); /将各个组件添加到窗体中 this.add(panel1, BorderLayout.WEST); this.add(panel2, BorderLayout.CENTER); this.add(panel3, BorderLayout.SOUTH); /设置对话框属性 this.setSize(300, 200); /设置对话框为可见 this.setVisible(true); (3)修改学生的界面文本框的设计JLabel id,name,sex,age,address,dep; /分别为学生的学号,学生的姓名,学生的性别,学生的年龄,学生的籍贯,学生的系别的标签 JTextField jtf1, jtf2, jtf3, jtf4,jtf5, jtf6; /分别为学生的学号,姓名,性别,年龄,籍贯,系列的输入文本框 JButton update,canel; /分别为修改和取消按钮 Panel panel1 ,panel2, panel3; public UpdateDatabase(Frame own, String title, boolean model, StModel stModel, int row) super(own, title, model); /实现与父类窗口对话 /窗体西部的组件 id = new JLabel(学号); name = new JLabel(名字); sex = new JLabel(性别); age = new JLabel(年龄); address = new JLabel(地址); dep = new JLabel(系别); /添加到panel1中 panel1 = new Panel(new GridLayout(6, 1); panel1.add(id); panel1.add(name); panel1.add(sex); panel1.add(age); panel1.add(address); panel1.add(dep); /添加到窗体的东部的组件 jtf1 = new JTextField(10); jtf1.setText(String)(stModel.getValueAt(row, 0); jtf1.setEditable(false);/设置学号不可修改 jtf2 = new JTextField(10); jtf2.setText(String)(stModel.getValueAt(row, 1); jtf3 = new JTextField(10); jtf3.setText(String)(stModel.getValueAt(row, 2); jtf4 = new JTextField(10); jtf4.setText(String)(stModel.getValueAt(row, 3); jtf5 = new JTextField(10); jtf5.setText(String)(stModel.getValueAt(row, 4); jtf6 = new JTextField(10); jtf6.setText(String)(stModel.getValueAt(row, 5); /添加到第二个面板中 panel2 = new Panel(new GridLayout(6, 1); panel2.add(jtf1); panel2.add(jtf2); panel2.add(jtf3); panel2.add(jtf4); panel2.add(jtf5); panel2.add(jtf6); /窗体南部的组件 update = new JButton(确认); canel = new JButton(取消); panel3 = new Panel(); panel3.add(update); panel3.add(canel); /注册事件监听 update.addActionListener(this); canel.addActionListener(this); /添加组件到窗体中 this.add(panel1, BorderLayout.WEST); this.add(panel2, BorderLayout.CENTER); this.add(panel3, BorderLayout.SOUTH); /设置窗体属性 this.setSize(300, 200); /设置窗体为可见 this.setVisible(true); 3.2 用数据库建立学生信息表(1)数据库建立学生表的函数程序代码如下所示:create table st ( stId varchar(30) primary key, stNname varchar(50) not null, stSex varchar(2) default男, stAge int, stBorn varchar(30), stDept varchar(30), constraint stS check (stSex in (男,女);(2)st表的模型实现的函数程序代码如下所示:public class StModel extends AbstractTableModelVector columNames = null; /表的字段名称 Vector rowDate = null; /表的数据 /数据库 private Connection con = null; private PreparedStatement ps = null; private ResultSet rs = null; private final static String driver = com.mysql.jdbc.Driver; /加载的jdbc驱动 private final static String url = jdbc:mysql:/localhost:3306/student; /数据源 private final static String user = root; /数据库的用户名 private final static String passWord = root; /数据库的用户名的密码 /对数据库进行查找 public void insertDatabase(String sql) columNames = new Vector(); /表的字段名称 rowDate = new Vector(); /表的数据 columNames.add(学号); columNames.add(名字); columNames.add(性别); columNames.add(年龄); columNames.add(籍贯); columNames.add(系别); try /加载jdbc驱动 Class.forName(driver); /连接数据源 con = DriverManager.getConnection(url,user,passWord); /执行sql ps = con.prepareStatement(sql); rs = ps.executeQuery(); while(rs.next() Vector row = new Vector(); row.add(rs.getString(1); row.add(rs.getString(2); row.add(rs.getString(3); row.add(rs.getString(4); row.add(rs.getString(5); row.add(rs.getString(6); rowDate.add(row); /将学生的一条记录(row)添加到rowDate中 catch(ClassNotFoundException e) e.printStackTrace(); catch(SQLException e) e.printStackTrace(); finally /关闭数据库资源 try if(null != rs) rs.close(); if(null != ps) ps.close(); if(null != con) con.close(); catch(SQLException e) e.printStackTrace(); /返回列数 public int getColumnCount() return this.columNames.size(); /返回表的行数 public int getRowCount() return this.rowDate.size(); /得到某行某列的数据 public Object getValueAt(int rowIndex, int columnIndex) return (Vector)this.rowDate.get(rowIndex).get(columnIndex); /设置表的字段名 public String getColumnName(int column) return (String)this.columNames.get(column); 3.3 数据库的连接private final static String driver = com.mysql.jdbc.Driver; /加载的jdbc驱动 private final static String url = jdbc:mysql:/localhost:3306/student; /数据源 3.4 模块功能的实现主模块功能的实现函数程序代码如下所示:public void actionPerformed(ActionEvent e) /用户点击了查找按钮 if(e.getSource() = select) String paras = textField.getText().trim(); stModel = new StModel(); stModel.insertDatabase(select * from st where stNname=+paras+); table.setModel(stModel); /用户点击了添加按钮 else if(e.getSource() = insert) InsertStudent insertStudent = new InsertStudent(this, 添加学生, true); /刷新窗口表的数据 stModel = new StModel(); stModel.insertDatabase(select * from st); table.setModel(stModel); /用户点击了修改按钮 else if(e.getSource() = update) int row = this.table.getSelectedRow(); /用户选择的行数 if(-1 = row) /如果用户没有选中行 JOptionPane.showMessageDialog(this, 请选择一行); else UpdateDatabase updateDatabase = new UpdateDatabase(this, 修改学生, true, stModel, row); /刷新窗口表的数据 stModel =new StModel(); stModel.insertDatabase(select * from st); table.setModel(stModel); /用户点击了删除按钮 else if(e.getSource() = delete) /数据库 Connection con = null; PreparedStatement ps = null; String driver = com.mysql.jdbc.Driver; /jdbc驱动 String url = jdbc:mysql:/localhost:3306/student; /数据源 String user = root; /数据库用户密码 String passWord = root; /数据库用户sa的密码 int row = this.table.getSelectedRow(); /用户选择的行 if(-1 = row) /用户没有选中行 JOptionPane.showMessageDialog(this, 请选择一行); else try /加载jdbc驱动 Class.forName(driver); /连接数据源 con = DriverManager.getConnection(url, user, passWord); /执行sql String sql = delete from st where stId=?; String id = (String)(stModel.getValueAt(row, 0); /获得用户选择的行的学生的学号 ps = con.prepareStatement(sql); ps.setString(1, id); ps.executeUpdate(); /刷新窗口 stModel = new StModel(); stModel.insertDatabase(select * from st); table.setModel(stModel); catch(ClassNotFoundException e1) e1.printStackTrace(); catch(SQLException e1) e1.printStackTrace(); finally /关闭资源 try if(null != ps) ps.close(); if(null != con) con.close(); catch(SQLException e1) e1.printStackTrace(); 子模块功能的实现:(1)添加文本框功能的实现函数程序代码如下:public class InsertStudent extends JDialog implements ActionListenerprivate JLabel id, name, sex, age, address, dep; /分别代表学生的学号,名字,性别,年龄,籍贯,系别 private JTextField jtf1, jtf2, jtf3, jtf4, jtf5, jtf6; /用户输入的文本框,分别为学生的学号,名字,性别,年龄,籍贯,系别 private JButton add, canel; /分别为添加按钮和取消按钮 private Panel panel1, panel2, panel3; public InsertStudent(Frame owner, String title, boolean model) super(owner, title, model); /实现与父类窗口对话 System.out.println(我执行了); /窗体的西部的组件 id = new JLabel(学号:); name = new JLabel(姓名:); sex = new JLabel(性别); age = new JLabel(年龄); address = new JLabel(籍贯); dep = new JLabel(系别:); /添加到panel1面板中 panel1 = new Panel(new GridLayout(6, 1); panel1.add(id); panel1.add(name); panel1.add(sex); panel1.add(age); panel1.add(address); panel1.add(dep); /窗体的东部组件 jtf1 = new JTextField(10); jtf2 = new JTextField(10); jtf3 = new JTextField(10); jtf4 = new JTextField(10); jtf5 = new JTextField(10); jtf6 = new JTextField(10); /添加到第二个面板中 panel2 = new Panel(new GridLayout(6, 1); panel2.add(jtf1); panel2.add(jtf2); panel2.add(jtf3); panel2.add(jtf4); panel2.add(jtf5); panel2.add(jtf6); /窗体北部的控件 add = new JButton(添加); canel = new JButton(取消); /注册事件监听 add.addActionListener(this); canel.addActionListen

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论