-
作业要求:
请下载附件文档,根据作业要求完成项目的设计、实现及调试,并提交作业报告。
【注意】请务必先下载附件中的实验报告模板文档,填写作业答案,否则无效!!!
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)使用包图把该程序的体系结构表达出来。
-
江开江苏开放大学软件设计模式与体系结构综合大作业最新答案
江开江苏开放大学软件设计模式与体系结构【BBS2】MVC架构风格的框架理解与讨论最新答案江开江苏开放大学软件设计模式与体系结构【BBS1】你是如何理解面向过程和面向对象的设计思想的?最新答案江开江苏开放大学软件设计模式与体系结构综合大作业最新答案江开江苏开放大学软件设计模式与体系结构过程性考核作业四_实践题部分最新答案江开江苏开放大学软件设计模式与体系结构过程性考核作业四_客观题部分最新答案江开江苏开放大学软件设计模式与体系结构过程性考核作业三最新答案江开江苏开放大学软件设计模式与体系结构过程性考核作业二_实践题部分最新答案江开江苏开放大学软件设计模式与体系结构过程性考核作业二_客观题部分最新答案江开江苏开放大学软件设计模式与体系结构过程性考核作业一最新答案
-
作业要求:
请下载附件文档,根据作业要求完成项目的设计、实现及调试,并提交作业报告。
【注意】请务必先下载附件中的实验报告模板文档,填写作业答案,否则无效!!!
下载
觉得这篇文章对你有用的话,就打赏一下支持文章作者
评论0