开发Java数据库应用程序

代码下载地址:https://download.csdn.net/download/zhhzhw/19991663?spm=1001.2014.3001.5501

1.项目要求:

开发Java数据库应用程序,该程序针对教材数据库ST及其三个表STUDENT、COURSE、SC进行数据的增删改查操作。程序功能具体包括(假设数据库及表都已经创建完毕):

(1)程序启动;

(2)提示输入用户名和密码;

(3)显示如下功能菜单:输入数据、删除信息、修改信息、查询信息;

(4)如果是输入信息,则显示下级菜单:输入学生档案信息、输入课程信息、输入学生修课信息;

(5)如果是删除信息,则显示下级菜单:删除学生档案信息、删除课程信息、删除学生修课信息;

(6)如果是修改信息,则显示下级菜单:修改学生档案信息、修改课程信息、修改学生修课信息;

(7)如果是查询信息,则显示下级菜单:查询学生档案信息、查询课程信息、查询学生修课信息;

(8)其中,查询信息,还要求能够:

(a)查询指定学号的学生的全部信息,包括学生表信息以及学生修课信息

(b)查询指定课程所修学生的全部信息,包括该门课程的最高成绩、最低成绩、平均成绩和及格率。

要求输入相关数据到三个表中,包括教材中三个表的数据;以表单的形式显示查询的结果。

2.项目工具:

mysql5.5,idea2018.1版,workbrench6.3

3.项目思路

使用javaSwing进行用户界面设计,设计一个登录界面,登录成功了就进入主界面进行增删改查的操作。

4.项目展示

1.数据库信息

1.course表

2.sc表

3.student表

2.登录界面

@Override
    public void actionPerformed(ActionEvent ae) {
        String user = text1.getText();
        String password = text2.getText();
        if (ae.getSource() == jbutton) {
            dbFunction db = new dbFunction();
            boolean flag = db.Login(user, password);
            if (!flag)
                JOptionPane.showMessageDialog(this, "登录失败!");
            else {
                JOptionPane.showMessageDialog(this, "登录成功!");
                this.dispose(); //登录成功关闭登录界面
                new mySystemJFrame();//打开我的主界面
            }
        }
    }

public boolean Login(String user, String password) {
        String url = "jdbc:mysql://localhost:3306/st";
        try {
            Class.forName(driver);
            conn = DriverManager.getConnection(url, user, password);
            conn.close();
            return true;
        } catch (ClassNotFoundException e) {
            return false;
        } catch (SQLException e) {
            return false;
        }
    }

这里仅展示,点击按钮的时间处理。调用login函数去连接数据库,连接成功返回true,失败返回false,登录成功弹出消息框,进入主界面

3.主程序界面

1.界面和菜单栏

关于这些图标推荐一个网站---阿里巴巴的矢量图标网站

https://www.iconfont.cn/search/index?q=%E6%95%AC%E8%AF%B7%E6%9C%9F%E5%BE%85

2.增删改的操作界面

主页面使用菜单栏,包括输入,删除,修改,查询共四个菜单。为使图形用户界面美化,加入了透明50%的背景。点击这四个按钮出现相应的二级菜单,对于相应的操作,比如输入,则是在点击输入学生档案信息之后出现一个弹出框,按照要求填写相关信息即可,操作成功会提示成功,否则提示失败.

用户填写的信息一般是类似于 1 2 3 44的样子,将用户输入的字符串使用正则表达式进行切分,把中间的空格去掉,放入一个数组中

        String[] zhw =datas.split("\\s+"); //用正则表达式对字符串切分

在后台中打印即可看到切分之后的输入语句,达到了sql语句的标准.

 

3.查询的界面

        public JTable query(int section,String datas) throws SQLException {
                String sql = "";
                if(section == 10){
                    sql = "select Sno as 学号 ,Sname as 姓名,Ssex as 性别 ,Sage as 年龄,Sdept as 所在系 from student;";
                }else if (section == 11){
                    sql = "select Cno as 课程号 ,Cname as 课程名 ,Cpno as 先行课 ,Ccredit as 学分 from course;";
                }else if(section == 12){
                    sql = "select Sno as 学号 ,Cno as 课程号 ,Grade as 成绩 from sc;";
                }else if(section == 13){
                    sql = "select distinct * from student inner join sc on sc.Sno=student.Sno where student.Sno="+datas;
                }else{
                    sql = "SELECT Course.Cno as 课程号 ,Course.Cname as 课程名 ,Course.Cpno as 先行课 ,Course.Ccredit as 学分 ,Sc.Sno as 学号 ,max(sc.Grade) as 最高分,min(sc.Grade) as 最低分,avg(sc.Grade) as 平均分,concat(count(sc.Grade>=60)/count(sc.Grade)*100,'%') as 及格率\n" +
                            " FROM course inner join sc on course.Cno=sc.Cno where course.Cno="+datas;
                }
                conn = DriverManager.getConnection(url);
                Statement stmt=conn.createStatement();
                ResultSet rset = stmt.executeQuery(sql);      //返回结果集ResultSet
                ResultSetMetaData rsmd = rset.getMetaData();  //创建结果集元数据对象
                int columns = rsmd.getColumnCount();          //获得列数
                String columntitle[] = new String[columns];   //创建列名数组
                for(int j=0;j<columns;j++){
                    columntitle[j]=rsmd.getColumnName(j+1);   //获得每列的名字
                }
                int rowCount=0;
                while(rset.next())                            //迭代遍历结果集,获得结果集总行数
                    rowCount++;
                //创建二维数组保存数据结果集
                String results[][] = new String[rowCount][columns];
                for(int i=rowCount-1;rset.previous();i--){    //刚才结果集已经到最后了,反着来
                    for(int j=0;j<columns;j++)
                        results[i][j] = rset.getString(j+1);    //获得当前行指定列的值
                }

            rset.close();
                stmt.close();
                return new JTable(results,columntitle);
        }

查询界面使用JTable表格制作,将查询的结果集ResultSet,ResultSetMetaData放入一个二维数组,传递给JTable,然后添加到面板上去。每次进行新的查询会先将旧的表格进行删除再放入新的JTable,关于查询使用的表格,这里上图贴出的是查询表格的函数,点击查询的处理如下图,这里有一个坑,如果说你再次点击查询,必须要先把之前的表格先删除,否则表格看上去没有,如果你点击一下界面还是会出现

try {
                jtable = db.query(section,datas);
                jtable.setRowHeight(30);
                jtable.setFont(x);
                if (this.getContentPane().getComponentCount() > 0)
                    this.getContentPane().remove(0);
                this.getContentPane().add(new JScrollPane(jtable));

                this.setVisible(true);
            } catch (SQLException e1) {
                e1.printStackTrace();
            }

四 .实验总结

         本次实验所用软件为mysql5.5,idea2018.1版,workbrench6.3

         通过本次MYSQL和JAVA的实验,让我更进一步了解到数据库的重要性。

    数据库是为了实现一定目的按某种规则和方法组织起来的“数据”的“集合”。数据库可以直观的理解为存放数据的仓库,只不过这个仓库是在计算机的大容量存储器上,而且数据必须按照一定的格式存放,因为它不仅需要存放,而且要便于查找。

       有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言编写一次,处处运行的优势。

       简单地说,JDBC 可做三件事:与数据库建立连接、发送 操作数据库的语句并处理结果。

    在实现这个JAVA系统中,翻阅多次JAVA实用编程一书,不仅让我学会了数据库的基本操作,也对上学期所学的JAVA程序设计有了一次较好的温习  

  • 3
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值