最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

java_课程设计学生信息管理系统

来源:动视网 责编:小OO 时间:2025-09-28 12:26:53
文档

java_课程设计学生信息管理系统

1需求分析利用计算机进行学生信息管理,不仅能够保证准确、无误、快速输出,而且还可以利用计算机对有关信息进行查询,检索迅速、查找方便、可靠性高、存储量大、保密性好。要科学地实现信息化管理,开发一个适合学校的,能够进行信息存储、查询、修改等功能的信息管理系统是十分重要的。我这次的课题就是设计与实现一个学生信息管理系统。1.1设计任务要求该学生信息管理系统的设计要求主要有以下几点:(1)使用图形用户界面;(2)用数据库建立1或2个学生信息表;(不限使用哪种数据库)(3)能连接数据库并实现对学生信息查
推荐度:
导读1需求分析利用计算机进行学生信息管理,不仅能够保证准确、无误、快速输出,而且还可以利用计算机对有关信息进行查询,检索迅速、查找方便、可靠性高、存储量大、保密性好。要科学地实现信息化管理,开发一个适合学校的,能够进行信息存储、查询、修改等功能的信息管理系统是十分重要的。我这次的课题就是设计与实现一个学生信息管理系统。1.1设计任务要求该学生信息管理系统的设计要求主要有以下几点:(1)使用图形用户界面;(2)用数据库建立1或2个学生信息表;(不限使用哪种数据库)(3)能连接数据库并实现对学生信息查
1  需求分析

利用计算机进行学生信息管理,不仅能够保证准确、无误、快速输出,而且还可以利用计算机对有关信息进行查询,检索迅速、查找方便、可靠性高、存储量大、保密性好。要科学地实现信息化管理,开发一个适合学校的,能够进行信息存储、查询、修改等功能的信息管理系统是十分重要的。我这次的课题就是设计与实现一个学生信息管理系统。

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 系统功能模块关系图

根据功能的需要,我设想了主窗口界面的大体布置图,并在设计与实现的过程中尽量去按照设想图的图样去实现。设想图如下图所示,图中也大概地标明了部分标语与说明。

图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 AbstractTableModel{

    Vector 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 ActionListener{

    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);  

    }  

    public void actionPerformed(ActionEvent e)  

    {  

        //数据库  

        Connection con = null;  

        PreparedStatement ps = null;  

          

        boolean result = true; //记录添加学生是否成功  

          

        if(e.getSource() == add)  

        {  

            try  

            {  

                //加载jdbc驱动  

                Class.forName("com.mysql.jdbc.Driver");  

                //连接数据源  

                con = DriverManager.getConnection("jdbc:mysql://localhost:3306/student", "root", "root");  

                //执行sql  

                String sql = "insert into st values(?,?,?,?,?,?)";  

                ps = con.prepareStatement(sql);  

                  

                ps.setString(1, jtf1.getText());  

                ps.setString(2, jtf2.getText());  

                ps.setString(3, jtf3.getText());  

                ps.setString(4, jtf4.getText());  

                ps.setString(5, jtf5.getText());  

                ps.setString(6, jtf6.getText());  

                  

                ps.executeUpdate();  

                  

                //关闭对话框  

                this.dispose();  

            }  

            catch(ClassNotFoundException e1)  

            {  

                result = false; //添加学生记录失败  

                e1.printStackTrace();  

            }  

            catch(SQLException e1)  

            {  

                result = false;   //添加学生记录失败  

                e1.printStackTrace();  

            }  

            finally  

            {  

                //关闭资源  

                try  

                {  

                    if(null != ps)  

                    {  

                        ps.close();  

                    }  

                    if(null != con)  

                    {  

                        con.close();  

                    }  

                }  

                catch(SQLException e1)  

                {  

                    e1.printStackTrace();  

                }         

            }     

            if(false == result)  

            {  

                JOptionPane.showMessageDialog(this, "失败信息:学号不能重复,性别只能为'男'或者'女',年龄大于0");  

            }  

        }  

        else if(e.getSource() == canel)  

        {  

            //关闭对话框  

            this.dispose();  

        }  

    }  

}

(2)修改文本框功能的实现函数程序代码如下所示:

public class UpdateDatabase extends JDialog implements ActionListener{

    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);  

    }  

    //响应用户操作  

    public void actionPerformed(ActionEvent e)  

    {  

        //数据库  

        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"; //数据库的用户密码  

        boolean result = true;   //记录修改学生是否成功  

        if(e.getSource() == update)  

        {  

            try  

            {  

                //加载jdbc驱动  

                Class.forName(driver);  

                //连接数据源  

                con = DriverManager.getConnection(url,user,passWord);  

                //执行sql  

                String sql = "update st set stNname=?, stSex=?,stAge=?,stBorn=?,stDept=? where stId=? ";  

                ps = con.prepareStatement(sql);  

                //修改学生数据  

                ps.setString(1, jtf2.getText());  

                ps.setString(2, jtf3.getText());  

                ps.setString(3, jtf4.getText());  

                ps.setString(4, jtf5.getText());  

                ps.setString(5, jtf6.getText());  

                ps.setString(6, jtf1.getText());  

                ps.executeUpdate();  

                //关闭对话框  

                this.dispose();  

            }  

            catch(ClassNotFoundException e1)  

            {  

                result = false;  

                e1.printStackTrace();  

            }  

            catch(SQLException e1)  

            {  

                result = false;  

                e1.printStackTrace();  

            }  

            finally  

            {  

                //关闭资源  

                try  

                {  

                    if(null != ps)  

                    {  

                        ps.close();  

                    }  

                    if(null != con)  

                    {  

                        con.close();  

                    }  

                }  

                catch(SQLException e1)  

                {  

                    e1.printStackTrace();  

                }  

                if(false == result)  

                {  

                    JOptionPane.showMessageDialog(this, "失败信息:学号不能重复,性别只能为'男'或者'女',年龄大于0");  

                }  

            }  

        }  

        else if(e.getSource() == canel)  

        {  

            this.dispose();//关闭对话框  

        }  

    }  

}

4  调试分析

4.1 系统功能测试

功能测试主要是测试程序模块是否实现了设计中所要求的功能。功能测试中需要注意的有:

(1)查询功能中,是按学生姓名查询的,其他的输入是没有结果的。

(2)添加功能中,需要注意的是前台设置的数值长度是否大于后台数值长度,以及前台和后台的数据结构是否相符,很多时候录入功能无法实现是由于这些原因。还有就是必须录入的字段的设置时候有误。

(3)删除功能中,需要点中你要删除信息的所在行,再点删除,才能删除。

(4)修改功能中,主要是看修改确认后是否数据真正已被修改了。这是最基本的功能,需要注意的是看是否能把不应该修改的数据也修改成功了。 

4.2 系统调试常见错误

(1)SQLException异常

一般是由于SQL语句不正确引起的。为避免这种异常,最好在使用SQL语句的程序中捕获此SQL异常。

(2) ClassNotFoundException异常

这是由于没找到相关类而引起的。为了避免这种异常,最好要能清楚的知道有多少个类,都保证所有类存在且能正常使用。

4.3 实验小结

通过这次课题的设计与实现,让我获得了更多的经验、心得和锻炼。在做课题的过程中,我遇到很多难题,但最后都经过同学的帮助和从网络、书本中找到了解决方法。虽然课题的设计与实现的过程比较艰难,但我还是很满意的,因为在这过程中我得到了实验成功的快乐,也学到了许多新知识。并且经过这次课程设计,让我所学的知识得到一个好的总结,编程能力也有所提高。在本课题的设计中,会因为能力和相关专业知识的有限,难免有不足之处,我会在以后的加强学习中改进。

5  用户使用说明

1、本课题程序支持多种系统平台(HPUX、SUNOS、OSF/1、VMS、 WINDOWS、WINDOWS/NT、OS/2),运行软件为:eclipse,数据库为:mysql。

2、运行程序后,程序会生成可使用软件,可根据软件主窗口的显示界面,点击用户需要执行操作。

(1)当用户需要添加学生信息时,用户先点击主窗口界面的添加,会弹出一个添加学生信息的文本框,用户只需在文本框标题提示的位置输入要添加的学生信息,输入信息后点击添加(点击取消,就会取消本次信息添加,并推出添加文本框),用户所输入的学生信息就会被存入数据库。

(2)当用户需要查询学生信息时,只需在软件主窗口界面的标题“学生名”处,输入用户需要查询的学生姓名,然后点击查询,用户查询的学生的信息就会显示在主窗口界面的中间位置。

3)当用户需要删除学生信息时,只需找到要删除的学生信息,然后用鼠标点中要删除学生信息所在行,再点击主窗口界面上的删除,就可以将用户选中的学生信息从数据库中删除掉。

4)当用户需要修改学生信息时,用户需要先找到要修改的学生信息,然后用鼠标点中要修改的学生信息所在行,再点击主窗口界面的修改,会弹出一个修改学生信息的文本框,用户只需在文本框标题提示的位置输入要修改的学生信息,输入信息后点击确认(点击取消,就会取消本次信息修改,并推出修改文本框),用户所输入的学生信息就会被存入数据库。

6  测试数据和数据结果

程序运行后生成可用软件,软件的主窗口界面如下图所示(已预先输入部分学生信息):

(1)当在“学生名”处输入:文艺,再点击查询。输出结果如下所示:

(2)在主窗口界面处点击添加,弹出添加文本框如下:

依次输入添加信息:

200906

龙一

21

广东

电气

得结果如下图所示:

(3)在“学生名”处输入:张三,点击查询,得结果如下图所示:

然后用鼠标点击主窗口界面中间位置的学生张三的信息所在行,再点击主窗口界面上的删除,得结果如下图所示:

(4) 在“学生名”处输入:李四,点击查询,得结果如下图所示:

然后用鼠标点击主窗口界面中间位置的学生李四的信息所在行,再点击主窗口界面上的修改,弹出一个修改该学生的文本框,如下图所示:

分别在修改学生信息的文本框中的性别和地址处,依次修改信息为:男 、,修改信息后,点击文本框的确认,得结果如下图所示:

参考文献

[1] 印旻.Java与面向对象程序设计教程.北京:清华大学出版社,1999.11

[2] 宛延闿.Java程序设计实例剖析.北京:国防工业出版社,2003.03

[3] 周晓聪.面向对象程序设计与Java语言.北京:机械工业出版社,2004.03

[4] 王克宏、郝建文. Java技术教程. 北京:清华大学出版社,2002.9月

附件

学生信息管理系统源程序清单:

//StuMange.java程序清单

package keshe;

import java.awt.BorderLayout;

import java.awt.Panel;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.SQLException;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.JTextField;

public class StuMange extends JFrame implements ActionListener{

 定义用户界面用到的组件  

 要查询的学生的名字  

 用户输入的文本框  

    JButton select = null;    //查询按钮  

    JButton insert = null;    //添加按钮  

    JButton update = null;    //修改按钮  

 删除按钮  

    JTable table = null;      //用于显示数据库调出的数据的表  

    Panel panel1 = null;       

 表的模型  

 窗口显示的上部的组件  

 学生名:");  

        textField = new JTextField(10);   //用户输入文本框限定为最多输入10个字符  

 查询"查询按钮  

 添加到第一个面板中   

 窗口下部的组件  

 添加");  

 删除");  

 修改");  

 添加到第三个个面板中  

 窗口中部的组件  

 注册事件监听  

 将各个组件添加到窗体中  

 设置窗体属性  

 设置窗口大小  

 设置窗口显示的位置  

 学生信息管理系统");  //设置窗口标题  

 设置窗口关闭之后其后台程序同时关闭  

 设置窗口为可见  

 用户点击了查找按钮  

        }     

 用户点击了添加按钮  

 添加学生", true);  

 刷新窗口表的数据  

 用户点击了修改按钮  

 用户选择的行数  

 如果用户没有选中行  

 请选择一行");  

 修改学生", true, stModel, row);  

 刷新窗口表的数据  

        }     

 用户点击了删除按钮  

 数据库  

 驱动  

 数据源  

 数据库用户密码  

 数据库用户sa的密码  

 用户选择的行  

            if(-1 == row)   //用户没有选中行  

 请选择一行");  

 加载jdbc驱动  

 连接数据源  

 执行sql  

 获得用户选择的行的学生的学号  

 刷新窗口  

 关闭资源  

}

//------------------------------------------------------------------------------------------------

//StModel.java源程序清单

package keshe;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.Vector;

import javax.swing.table.AbstractTableModel;

public class StModel extends AbstractTableModel{

 表的字段名称  

 表的数据   

 数据库  

   private final static String driver = "com.mysql.jdbc.Driver";    //加载的jdbc驱动  

 数据源  

 数据库的用户名  

   private final static String passWord = "root";   //数据库的用户名的密码  

 

 对数据库进行查找  

 表的字段名称  

 表的数据   

 学号");  

 名字");  

 性别");  

 年龄");  

 籍贯");  

 系别");  

 加载jdbc驱动  

 连接数据源  

 执行sql  

           {     

 将学生的一条记录(row)添加到rowDate中  

           }         

 关闭数据库资源  

 

 返回列数  

 

 返回表的行数  

 

 得到某行某列的数据  

 设置表的字段名  

}

//---------------------------------------------------------------------------------------------------------

//Mannager.java源程序清单

package keshe;

public class Mannager {

    public static void main(String[] agrgs){

        StuMange sm = new StuMange();

    }

}

//-----------------------------------------------------------------------------------------------------------

//InsertStudent.java源程序清单

package keshe;

import java.awt.BorderLayout;

import java.awt.Frame;

import java.awt.GridLayout;

import java.awt.Panel;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.SQLException;

import javax.swing.JButton;

import javax.swing.JDialog;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JTextField;

public class InsertStudent extends JDialog implements ActionListener{

 分别代表学生的学号,名字,性别,年龄,籍贯,系别  

 用户输入的文本框,分别为学生的学号,名字,性别,年龄,籍贯,系别  

 分别为添加按钮和取消按钮  

 实现与父类窗口对话  

 我执行了");  

 窗体的西部的组件  

 学号:");  

 姓名:");  

 性别");  

 年龄");  

 籍贯");  

 系别:");  

 添加到panel1面板中  

 窗体的东部组件  

 添加到第二个面板中  

 窗体北部的控件   

 添加");  

 取消");  

 注册事件监听  

 添加到panel3面板中  

 将各个组件添加到窗体中  

 设置对话框属性  

 设置对话框为可见  

 数据库  

 记录添加学生是否成功  

 加载jdbc驱动  

 连接数据源  

 执行sql  

 关闭对话框  

 添加学生记录失败  

                result = false;   //添加学生记录失败  

 关闭资源  

                }         

            }     

 失败信息:学号不能重复,性别只能为'男'或者'女',年龄大于0");  

 关闭对话框  

}

//---------------------------------------------------------------------------------------------------------

//UpdateDatabase.java源程序清单

package keshe;

import java.awt.BorderLayout;

import java.awt.Frame;

import java.awt.GridLayout;

import java.awt.Panel;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.SQLException;

import javax.swing.JButton;

import javax.swing.JDialog;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JTextField;

public class UpdateDatabase extends JDialog implements ActionListener{

 分别为学生的学号,学生的姓名,学生的性别,学生的年龄,学生的籍贯,学生的系别的标签  

 分别为学生的学号,姓名,性别,年龄,籍贯,系列的输入文本框  

 分别为修改和取消按钮  

 实现与父类窗口对话  

 窗体西部的组件  

 学号");  

 名字");  

 性别");  

 年龄");  

 地址");  

 系别");  

 添加到panel1中  

 添加到窗体的东部的组件  

 设置学号不可修改  

 添加到第二个面板中  

 窗体南部的组件  

 确认");  

 取消");  

 注册事件监听  

 添加组件到窗体中  

  

 设置窗体属性  

 设置窗体为可见  

 响应用户操作  

 数据库  

 驱动  

 连接数据源  

 数据库的用户  

 数据库的用户密码  

        boolean result = true;   //记录修改学生是否成功  

 加载jdbc驱动  

 连接数据源  

 执行sql  

 修改学生数据  

 关闭对话框  

 关闭资源  

 失败信息:学号不能重复,性别只能为'男'或者'女',年龄大于0");  

 关闭对话框  

  

}

//-----------------------------------------------------------------------------------------------------------------------------

//建表源程序清单

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 ('男','女'))

);

文档

java_课程设计学生信息管理系统

1需求分析利用计算机进行学生信息管理,不仅能够保证准确、无误、快速输出,而且还可以利用计算机对有关信息进行查询,检索迅速、查找方便、可靠性高、存储量大、保密性好。要科学地实现信息化管理,开发一个适合学校的,能够进行信息存储、查询、修改等功能的信息管理系统是十分重要的。我这次的课题就是设计与实现一个学生信息管理系统。1.1设计任务要求该学生信息管理系统的设计要求主要有以下几点:(1)使用图形用户界面;(2)用数据库建立1或2个学生信息表;(不限使用哪种数据库)(3)能连接数据库并实现对学生信息查
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top