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

资源下载
下载价格30
  • 作业要求:

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

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

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

    下载

    • 作业要求:

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

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

      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)使用包图把该程序的体系结构表达出来。

0
觉得这篇文章对你有用的话,就打赏一下支持文章作者
课程作业辅导,点击图片加微信,有偿服务

评论0

站点公告

开放大学课程作业代写,有需要扫码加微信

显示验证码

社交账号快速登录