Java项目开发实践课程设计

1.GUI的介绍

1.1GUI概述
  早期,电脑向用户提供的是单调、枯燥、纯字符状态的“命令行界面(CLI)”。就是到现在,我们还可以依稀看到它们的身影:在Windows中开个DOS窗口,就可看到历史的足迹。后来,Apple公司率先在电脑的操作系统中实现了图形化的用户界面(Graphical User Interface,简称GUI),但由于Apple公司封闭的市场策略,自己完成电脑硬件、操作系统、应用软件一条龙的产品,与其它PC不兼容。这使得Apple公司错过了一次一统全球PC的好机会。
  后来,Microsoft公司推出了风靡全球的Windows操作系统,它凭借着优秀的图形化用户界面,一举奠定了操作系统标准的地位。这也造就了世界首富---比尔.盖茨和IT业的泰山北斗微软公司。
  在这图形用户界面风行于世的今天,一个应用软件没有良好的GUI是无法让用户接受的。而Java语言也深知这一点的重要性,它提供了一套可以轻松构建GUI的工具。在本章和下一章中,我们将向你充分证明这一点。

1.2Java提供了三个主要包做GUI开发:

java.awt 包 – 主要提供字体/布局管理器

javax.swing 包[商业开发常用] – 主要提供各种组件(窗口/按钮/文本框)

java.awt.event 包 – 事件处理,后台功能的实现。

2.Swing组件

swing组件主要可分为三个部分

(1)顶层容器::常用有JFrame,JDialog

(2)中间容器:JPanel,JOptionPane,JScrollPane,JLayeredPane 等,主要以panel结尾。

(3)基本组件:JLabel,JButton,JTextField,JPasswordField,JRadioButton 等。
3.项目实现

 3.1操作数据库的工具类

        通过利用操作数据库的工具类DBUtils来实现对于数据表的读写操作,它的内部封装了JDBC的代码,简化Dao层的操作并且可以把结果转换成List,Array,Set等java集合,便于操作。还可以使用数据源,使用JNDI数据库连接池等技术来优化性能——重用已经构建好的数据库连接对象。

 部分代码:

复制代码
 //通过连接池获取connection对象
    public Connection getConnection() {
        Connection connection = null;
        ComboPooledDataSource cpds = new ComboPooledDataSource();
        try {
            cpds.setDriverClass(driver);
            cpds.setJdbcUrl(url);
            cpds.setUser(user);
            cpds.setPassword(psw);
            //最大线程池中连接对象10
            cpds.setMaxPoolSize(10);
            cpds.setMinPoolSize(1);
            connection = cpds.getConnection();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return connection;
    }

    public int executeUpdate(String sql) {
        int result = 0;
        try {
            Class.forName(driver);//加载驱动
            connection = DriverManager.getConnection(url, user, psw);//打开数据库,返回连接数据库对象
            statement = connection.createStatement();//获取执行sql命令的对象
            result = statement.executeUpdate(sql);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            close();
        }
        return result;
    }
复制代码

3.2封装数据模型类

       通过把类中的某些信息进行包装,从而使外部程序不能直接对这些信息进行直接的访问,只能通过类中定义的方法对这些隐藏的信息进行操作和访问。从而使得其他类只能通过操控类中的对象来直接达到目的,不能看到具体的实现和属性,提高了程序的安全性和便利性。

 部分代码:

复制代码
//管理员类的封装
package models;

public class Admin {
    String adminname;
    String password;

    public Admin() {

    }

    public String getAdminname() {
        return adminname;
    }

    public void setAdminname(String adminname) {
        this.adminname = adminname;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String toString() {
        return "Admin{" +
                "adminname='" + this.adminname + '\'' +
                ", password='" + this.password + '\'' + '}';
    }
}

//用户类的封装
package models;

public class Users {
    String username;    //用户名
    String password;    //密码

    public Users() {

    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "Users{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' + '}';
    }
}
复制代码

3.3用户注册功能

       在主页面中单击注册按钮,直接跳转到注册页面,根据文本框中的提示信息填写用户名、密码以及确认密码的加以验证,同时还需要同意注册的相关协议才可提交注册。如果和数据库中的已存在用户名相同,则弹出对话框,提示用户用户名已存在;如果两次密码输入不一致则会自动清除文本框,通过利用正则表达式设定了用户名和密码的注册规则,在数据表中设置用户名为唯一主键,保证用户名和密码的安全性和可靠性。另外设计了重置和返回按钮,方便用户进行文本框内容的清除以及各个页面的跳转。

 效果图:

 

 

3.4登录功能

       通过在主页面填写用户名、密码以及选择用户类型,单击登录按钮获得用户或管理员的信息与数据库中的数据对比。分为三种情况,如果用户名、密码匹配以及用户类型匹配,则登录成功;如果没找到用户名、密码,则弹出对话框,提示用户用户名或密码错误;如果用户名跟密码不匹配,则弹出对话框,提示用户用户名或密码错误。

效果图: 

 

 

3.5用户下单功能

       订单功能是客户关系管理的有效延伸,能更好的把个性化、差异化服务有机的融合到客户管理中去,可推动经济效益和客户满意度的提升。通过在此界面填写自己需要代取的快递编号、用户名、收件人、电话号码以及需要送达的地址,点击下单后,生成的订单会在管理员界面生成,管理员通过查看订单界面从而实现代取操作。

效果图:

 

3.6快递管理功能

       快递管理功能主要实现了对快递的增删查改操作。在添加快递中,管理员可以把送达的快递信息录入到系统中;在删除快递中,管理员可以根据快递编号进行精确删除;在查询快递中,管理员可以查看所有的快递信息以及可以按收件人进行精确查询;在修改快递中,管理员可以输入需要被修改快递的快递编号实现对其他信息的修改操作。

效果图:

 

 

 

3.7最终效果

另外还有许多功能这里就不一一介绍了,如果需要源码请点上方联系进行私信!

所有需要的jar包以及分类好的代码:

 

posted @   cszcoder  阅读(178)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示