江苏开放大学软件设计模式与体系结构综合大作业

微信小程序
资源下载
下载价格10
  • 作业要求:

    请下载附件文档,根据作业要求完成项目的设计、实现及调试,并提交作业报告。

    【注意】请务必先下载附件中的实验报告模板文档,填写作业答案,否则无效!!!

    9-3-2 综合大作业(报告模板).doc

    下载

    综合大作业

    结合第八单元的材料二:DAO设计模式和之前的体系结构知识,本综合作业具体要求如下:

    1、根据实验操作指引,完成程序的正确运行。

    1.1 安装MySQL数据库

    具体教程请参考:https://blog.csdn.net/bobo553443/article/details/81383194。这里不再详述。安装过程中需要设置数据库密码,请牢记。

    1.2 打开安装的MySQLworkbench

    看到如下界面,点击菜单项Database:

    在弹出菜单中,选择“Connect to Database”,打开如下界面,填入安装时设置的密码,进行数据库连接:

    如果连接成功,会出现如下界面:

    此时请将如下数据库脚本代码,拷贝至查询区域,并点击运行:

    /*=============删除数据库=============*/

    DROP DATABASE IF EXISTS sms;

    /*=============创建数据库=============*/

    CREATE DATABASE sms;

    /*=============使用数据库=============*/

    USE sms;

    /*=============删除数据库表===========*/

    DROP TABLE IF EXISTS user;

    /*=============创建数据库表===========*/

    CREATE TABLE login(

    id int NOT NULL primary key auto_increment,

    username VARCHAR(30) NOT NULL,

    password VARCHAR(32) NOT NULL

    );

     

    INSERT INTO login( username, password)VALUES(‘admin’, ‘123456’);

    如下图所示:

    此时,刷新左侧下方SCHEMAS区域,会看到刚建立的数据库sms。

    展开sms数据库,就会看到我们刚建立的数据表user,里面有我们刚添加的数据。

    2. 下载MySQL驱动Jar包。

    打开网页https://downloads.mysql.com/archives/c-j/。Operating System 选择“Platform Independent”,然后点击第二个进行下载,如下图所示。

    下载后,解压缩,里面的“mysql-connector-java-8.0.25.jar”,就是我们需要的MySQL数据库驱动。

    3. 导入Jar包(IDEA或者Eclipse皆可,这里以IDEA编程环境为例)。

    首先,打开IDEA编辑环境,创建一个Java项目,名为Login,如下图:

    新建一个文件夹,名为“lib”,然后将我们刚下载的jar包拷贝到lib文件夹中,如下图:

    点击上方菜单“File”,里面选择“Project Structure”,如下图所示:

    得到界面如下:

    在弹出的界面中,选择第一个选项:

    然后找到jar包,点击“OK”,就可以使用该Jar包了,如下图:

    4. 运行程序。

    首先右键点击src,创建一个package,名为“project”,然后创建一个类,名为“LoginDialog”,如下图:

    将上面的代码全部删除,然后将下面的代码拷贝进来。

    package project;

    import javax.swing.*;

    import java.awt.event.*;

    import java.sql.*;

    public class LoginDialog extends JDialog{

    private JPanel contentPane;

    private JButton buttonOK;

    private JButton buttonCancel;

    private JLabel lblUserName;

    private JLabel lblPassword;

    private JTextField tfPassword;

    private JTextField tfUserName;

    public LoginDialog() {

    this.setSize(500, 450);

    contentPane = new JPanel();

    contentPane.setLayout(null);

    lblUserName = new JLabel(“用户名:”);

    lblUserName.setSize(50, 40);

    lblUserName.setLocation(50, 50);

    tfUserName = new JTextField();

    tfUserName.setSize(250, 40);

    tfUserName.setLocation(150, 50);

    lblPassword = new JLabel(“密码:”);

    lblPassword.setSize(50, 40);

    lblPassword.setLocation(50, 150);

    tfPassword = new JPasswordField();

    tfPassword.setSize(250, 40);

    tfPassword.setLocation(150, 150);

    buttonOK = new JButton(“登录”);

    buttonOK.setSize(80, 40);

    buttonOK.setLocation(130, 250);

    buttonCancel = new JButton(“取消”);

    buttonCancel.setSize(80, 40);

    buttonCancel.setLocation(280, 250);

    contentPane.add(lblUserName);

    contentPane.add(tfUserName);

    contentPane.add(lblPassword);

    contentPane.add(tfPassword);

    contentPane.add(buttonOK);

    contentPane.add(buttonCancel);

    setContentPane(contentPane);

    setModal(true);

    getRootPane().setDefaultButton(buttonOK);

    buttonOK.addActionListener(new ActionListener() {

    @Override

    public void actionPerformed(ActionEvent e) {

    onOK();

    }

    });

    buttonCancel.addActionListener(new ActionListener() {

    @Override

    public void actionPerformed(ActionEvent e) {

    onCancel();

    }

    });

    // call onCancel() when cross is clicked

    setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);

    addWindowListener(new WindowAdapter() {

    @Override

    public void windowClosing(WindowEvent e) {

    onCancel();

    }

    });

    }

    private void onOK() {

    Connection conn = getConnection();

    String username = tfUserName.getText();

    String password = tfPassword.getText();

    String result = login(conn, username, password);

    JOptionPane.showMessageDialog(null, result);

    }

    private void onCancel() {

    dispose();

    }

    private Connection getConnection() {

    Connection connection = null;

    try {

    Class.forName(“com.mysql.cj.jdbc.Driver”); // 加载驱动程序

    connection = DriverManager.getConnection(

    “jdbc:mysql://localhost:3306/sms”,

    “root”, “Succld3388”); // 取得数据库连接

    } catch (SQLException | ClassNotFoundException e) {

    e.printStackTrace();

    }

    return connection;

    }

    /**

    * 具体操作方法:查询

    */

    public String login(Connection conn, String userName, String password){

    String result = null;

    try{

    String sql = “SELECT username, password FROM login WHERE username = ?”;

    PreparedStatement pstmt = null; //定义数据库操作对象

    pstmt = conn.prepareStatement(sql); // 实例化操作

    pstmt.setString(1, userName); // 设置用户名称

    ResultSet rs = pstmt.executeQuery(); // 取得查询结果

    if(rs.next()){

    String pass = rs.getString(2);

    if (pass.equals(password)){

    result = “登录成功”;

    }else{

    result = “密码错误”;

    }

    }else{

    result = “用户名不正确”;

    }

    }catch(Exception e){

    result = “数据库错误”;

    }

    return result;

    }

    public static void main(String[] args) {

    LoginDialog dialog = new LoginDialog();

    dialog.setLocationRelativeTo(null);

    dialog.setVisible(true);

    System.exit(0);

    }

    }

    运行程序,会看到如下登录界面:

    接着,就可以使用各种用户名和密码进行测试,只有输入正确的用户名和密码,才会显示“登录成功”,如下图:

    5. 运行成功后,请完成以下要求:

    (1)所有的工作都在LoginDialog类中进行,请分析是否符合我们的设计原则。

    (2)结合第八单元的DAO设计模式材料,请重新使用DAO设计模式重构上面的代码,完成同样的功能。其中,可以创建必要的包,并必须包含如下类:

    数据库连接: xxx.dbc.DatabaseConnection

    DAO接口: xxx.dao.IXxxDAO

    DAO接口真实实现类:xxx.dao.impl.XxxDAOImpl

    DAO接口代理实现类:xxx.dao.proxy.XxxDAOProxy(使用代理模式)

    VO类: xxx.vo.Xxx, VO命名要与表的命名一致

    工厂类:xxx.factory.DAOFactory(必须使用工厂方法模式和单例模式)

    (3)使用包图把该程序的体系结构表达出来。

点点赞赏,手留余香 给TA打赏

AI创作

评论0

请先

BIM有哪些主要的特征?
BIM有哪些主要的特征?
1分钟前 有人购买 去瞅瞅看
2023年秋江苏开放大学工程制图与CAD△综合性大作业(30%)(含实训)
2023年秋江苏开放大学工程制图与CAD△综合性大作业(30%)(含实训)
10分钟前 有人购买 去瞅瞅看
江苏开放大学楷书060915临摹《智永千字文》一张
江苏开放大学楷书060915临摹《智永千字文》一张
4分钟前 有人购买 去瞅瞅看
支持多种货币
支持多种货币付款,满足您的付款需求
7天无忧退换
安心无忧购物,售后有保障
专业客服服务
百名资深客服7*24h在线服务
发货超时赔付
交易成功极速发货,专业水准保证时效性

站点公告

课程作业辅导,有需要加下方微信

显示验证码

社交账号快速登录