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

综合大作业

结合第八单元的材料二: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)使用包图把该程序的体系结构表达出来。

资源下载
下载价格10
客服QQ:1668639739
点点赞赏,手留余香 给TA打赏

评论0

请先
  • 游客 下载了资源 2010年广东公务员考试《申论》真题卷及答案(两套答案)
  • 游客 下载了资源 2018年北京市公务员录用考试《行测》真题答案及解析
  • 游客 下载了资源 2008年贵州省公务员考试《申论》真题及参考答案
  • 游客 下载了资源 2004年广东公务员考试《行测》真题(下半年)答案及解析
  • 游客 下载了资源 2017年上半年教师资格证考试《高中生物》题(解析)
  • 游客 下载了资源 爱普生Epson Stylus Photo R2400 打印机驱动
  • 游客 下载了资源 2019年420联考《申论》真题(黑龙江县乡卷)及答案
  • 游客 下载了资源 2017年上半年教师资格证考试《综合素质》(中学)真题(解析)
  • 游客 下载了资源 2022年上半年教师资格证考试《高中历史》题解(精选)
  • 游客 下载了资源 2018年北京市公务员录用考试《行测》真题答案及解析
  • 游客 下载了资源 爱普生Epson Stylus Pro 9800 驱动
  • d******* 下载了资源 江苏开放大学风景园林规划设计(2)综合性大作业:城市生态景观调研与分析
  • 游客 下载了资源 2009年国家公务员考试《行测》真题卷答案及解析
  • 游客 下载了资源 2005年广东公务员考试《申论》真题卷及答案(上半年)
  • 游客 下载了资源 2005年广东公务员考试《申论》真题卷及答案(上半年)
  • 1******* 登录了本站
点击浏览器地址栏的⭐图标收藏本页
需要托管,代写作业,论文扫码加微信
显示验证码

社交账号快速登录

微信扫一扫关注
扫码关注后会自动登录