美文网首页JavaWeb
Java日记本(包含数据库操作)

Java日记本(包含数据库操作)

作者: 53b3f4658edc | 来源:发表于2017-12-05 17:24 被阅读7次

    功能介绍

    登录界面
    这是程序的入口,包括用户头像、账号、密码、记住密码、自动登录、注册账号、找回密码几大部分。


    微信公众号:JavaWeb架构师

    1.1头像
    1.这是用户登录之后显示头像的区域。
    2.当用户在输入账户的过程中,会动态的进行匹配(注册了的账号,显示对应的头像;否则显示为空白)。
    3.无论用户是否点击记住密码,登录界面都会自动的记录头像与账号,在打开软件的时候进行显示。
    4.信息本身记录在user表中。
    5.下次登录的信息记录在password.properties文件中。

    1.2账号
    此区域是用户账号的输入区域。
    无论用户是否点击记住密码,登录界面都会自动的记录头像与账号,在打开软件的时候进行显示。
    账号长度会进行限制,在8-11位之间。
    4.账号的输入是动态的,包括动态的检测合法性、匹配头像。
    5.信息本身记录在user表中。
    6.下次登录的信息记录在password.properties文件中。

    1.3密码
    这是用户输入密码的区域,将与账号进行匹配。
    如果用户点击了记住密码,登录界面会记住密码,,在打开软件的时候进行显示。
    3.信息本身记录在user表中。
    4.下次登录的信息记录在password.properties文件中。

    1.4记住密码
    是否记住密码的选项,决定下一次登录是否自动的显示密码。
    2.信息本身记录在password.properties文件中。

    1.5自动登录
    1.是否自动登录的选项,决定下一次是否自动登录。
    2.信息本身记录在password.properties文件中。
    3.用户通过返回的形式,进行账号的切换。

    1.6注册账号
    用户进行注册账号的入口。

    1.7忘记密码
    用户找回密码的选项。

    注册账号界面
    用户在这个界面完成新用户的注册。


    微信公众号:JavaWeb架构师

    2.1账号
    用户注册的账号,只能是8-11位的数字。

    2.2密码
    用户设置的密码8-11位。

    2.3头像
    用户设置的头像。

    2.4注册按钮
    进行注册,这里会进行输入不完整的检测、账号已存在的检测、账号不符合要求的检测。

    2.5关闭按钮
    退出注册页面。

    找回密码
    用户用户的密码找回,因为涉及到短信下发,需要钱,所以就是这样的一个方式进行找回。

    选择页面
    当登录成功之后,会进入到这个页面,进行写或者查的选择。


    微信公众号:JavaWeb架构师

    4.1写
    进入到写的界面。
    4.2查
    进入到查的页面。
    4.3返回
    返回到登录页面,进行重新的登录。
    4.4退出
    退出本软件。


    该页面是进行写日记的主界面。


    微信公众号:JavaWeb架构师

    5.1提示栏
    事件
    提示内容
    进入到写界面
    欢迎使用写日记系统!
    保存时未输入文章内容
    您尚未输入文章内容
    编号不是整数
    编号应该为整数
    成功保存
    保存成功!

    5.2编号
    日记的编号,作为文章的主键。
    5.3标题
    日记的标题。
    5.4天气
    进行天气选择。


    微信公众号:JavaWeb架构师

    5.5心情
    用户进行心情的选择。


    微信公众号:JavaWeb架构师

    5.6日期
    用户进行日期的选择,默认为当前时间。


    微信公众号:JavaWeb架构师

    5.7返回
    返回到上一级。
    5.8保存
    进行文章保存。
    5.9插入图片
    进行图片的插入。


    微信公众号:JavaWeb架构师

    5.10日记编辑区域
    有丰富的日记编辑功能,比如复制、粘贴、剪切、对齐方式、标号、字体颜色、字体背景颜色、段落、字体、字体大小、加粗、斜体、下划线、中划线、分割线等等。


    微信公众号:JavaWeb架构师

    5.11头像更换
    单击头像可以进行头像的更换。


    微信公众号:JavaWeb架构师

    5.12头像栏
    进行用户头像的显示。

    5.13用户信息栏
    显示用户的信息。

    6、查
    有对日记进行过滤的条件,包括全文、心情、天气、日期。


    微信公众号:JavaWeb架构师

    6.1编号
    对用户查阅的日记的标号进行显示。

    6.2标题
    对用户查阅的日记的标题进行显示。
    6.3天气
    对用户查阅的日记的天气进行显示。

    6.4心情
    对用户查阅的日记的心情进行显示。

    6.5日期
    对用户查阅的日记的日期进行显示。

    6.6返回
    返回上一级菜单。

    6.7查找结果
    对查找结果进行显示。

    6.8全文查找
    根据关键字搜索库中文章。
    6.9心情查找
    根据心情进行查找。
    6.10天气查找
    根据天气进行查找。
    6.11时间查找
    根据时间段进行查找。

    注:全文查找与心情、天气、日期是独立开来的。
    心情、天气、日期是求交集的。

    交互系统
    7.1抖动交互
    进行用户反馈时,会有窗口抖动进行提示。
    7.2提示栏
    进行用户反馈时,会有提示栏
    进行提示。

    部分源码

    package application;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.net.MalformedURLException;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.Properties;
    
    import application.choice.Choice;
    import application.forget.Forget;
    import application.register.Register;
    import application.tool.FileTools;
    import application.tool.JDBCTools;
    import application.tool.StringTools;
    import application.write.Writer;
    import javafx.application.Application;
    import javafx.beans.value.ChangeListener;
    import javafx.beans.value.ObservableValue;
    import javafx.fxml.FXMLLoader;
    import javafx.scene.Node;
    import javafx.scene.Parent;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.control.CheckBox;
    import javafx.scene.control.Label;
    import javafx.scene.control.PasswordField;
    import javafx.scene.control.TextField;
    import javafx.scene.image.Image;
    import javafx.scene.image.ImageView;
    import javafx.scene.input.MouseEvent;
    import javafx.scene.web.WebEngine;
    import javafx.scene.web.WebView;
    import javafx.stage.Stage;
    import javafx.stage.StageStyle;
    
    public class Main extends Application {
        private String tempPath = ".//temp//";
        private ImageView logoImage;
        private CheckBox checkPassword;
        private TextField accountField;
        private TextField passwordField;
        private double xOffset = 0;
        private double yOffset = 0;
        private Properties pass = new Properties(); 
        private FileInputStream passwordFile;
        private Connection con = null;
        private PreparedStatement ps = null;
        private ResultSet rs = null;
        private Button login;
        private boolean isAutoLog = false;
        double startX ;
        double startY ;
        private CheckBox autoLog;
        private Stage primaryStage;
        private Label hint;
        
        @Override
        public void start(Stage primaryStage) {
    
            
            try {
    
                // 加载fxml
                Parent root = FXMLLoader.load(getClass().getResource("/application/LoginUI.fxml"));
    
                hint = (Label) root.lookup("#hint");
    
                passwordField = (PasswordField) root.lookup("#passwordField");
                accountField = (TextField) root.lookup("#accountField");
                logoImage = (ImageView) root.lookup("#logoImage");
                login = (Button) root.lookup("#login");
                autoLog = (CheckBox)root.lookup("#autoLog");
                this.primaryStage = primaryStage;
                WebView log = (WebView) root.lookup("#log");
                if (log != null) {
                    File file = new File("edulion//edulion.html");
                    if (file.exists()) {
                        WebEngine webEngine = log.getEngine();
                        try {
                            webEngine.load(file.toURL().toString());
                        } catch (MalformedURLException e) {
                            e.printStackTrace();
                        }
                    }
                }
    
                //读取本地信息
                try {
                    passwordFile = new FileInputStream("password.properties");
                    pass.load(passwordFile);
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
                
                
    
                
                // 记住密码
                checkPassword = (CheckBox) root.lookup("#checkPassword");
    
                //显示历史信息
                setUsername();
                setInofor();
                
                
                // 加载css
                Scene scene = new Scene(root);
                scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
    
                primaryStage.setTitle("YiMi日记本");
                primaryStage.setScene(scene);
    
                primaryStage.initStyle(StageStyle.UNDECORATED);// 设定窗口无边框
    
                // 可拖动
                root.setOnMousePressed((MouseEvent event) -> {
                    event.consume();
                    xOffset = event.getScreenX();
                    startX = primaryStage.getX();
                    startY = primaryStage.getY();
                    yOffset = event.getScreenY();
                    //System.out.println(xOffset + ":" + yOffset);
                });
    
                //root.setOnMouseDragEntered
                root.setOnMouseDragged((MouseEvent event) -> {
                    //System.out.println(event.getSceneX() + "-" + event.getSceneY());
                    
                    double xx = event.getScreenX();
                    double yy = event.getScreenY();
                    double x = xx - xOffset + startX;
                    double y = yy - yOffset + startY;
                    primaryStage.setX(x);
                    primaryStage.setY(y);
                });
    
                // 关闭窗口
                ImageView iv = (ImageView) root.lookup("#closeWindow");
    
                if (iv != null) {
    
                    iv.setOnMouseClicked((MouseEvent event) -> {
                        System.out.println("12121");
                        primaryStage.close();
                    });
                }
    
                // 关闭窗口
                Label find = (Label) root.lookup("#find");
    
                if (find != null) {
    
                    find.setOnMouseClicked((MouseEvent event) -> {
                        new Forget().start(new Stage());
                    });
                }
                
                //设置头像
                if(  !accountField.getText().equals("") ) {
                    setLogo();
    
                }
                
    
                // 账号改事件            
                if( accountField != null ) {
                    accountField.textProperty().addListener(new ChangeListener<String>() {
    
                        @Override
                        public void changed(ObservableValue<? extends String> observable, String oldValue,
                                String newValue) {
                            if( !newValue .equals("") && StringTools.matchs(newValue, "\\d{8,11}")) {
                                System.out.println("444444444444");
                                setLogo();
                                setInofor();    
                            }
                        }
                    });
                }
                
    
                //登录
                if (login != null) {
                    login.setOnMouseClicked((MouseEvent event) -> {
                        logIn();
                    });
                }
                Label register = (Label) root.lookup("#register");
    
                if (register != null) {
    
                    register.setOnMouseClicked((MouseEvent event) -> {
                        Register r = new Register();
                        r.start(new Stage());
                    });
                }
            
                passwordFile.close();
                primaryStage.setResizable(false);
                if(isAutoLog == false) primaryStage.show();
    
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        
        public void logIn() {
            
            String sql = "select * from user where username = ? and password = ?";
            try {
                con = JDBCTools.getConnection("jdbc.properties");
                ps = con.prepareStatement(sql);
                ps.setString(1, accountField.getText() == null ? "" : accountField.getText());
                ps.setString(2, passwordField.getText() == null ? "" : passwordField.getText());
    
                rs = ps.executeQuery();
    
                if (rs.next()) {
                    hint.setOpacity(0);
                    User user = new User();
                    user.setUser(rs.getString(1));
                    System.out.println(user.getUser());
                    user.setPassword(rs.getString(2));
                    
                    Choice c = new Choice(user,primaryStage);
                    c.show();
                    primaryStage.close();
                } else {
                    Shake.warn(primaryStage);
                    hint.setText("账号错误或者密码错误!请重试!");
                    hint.setOpacity(1);
                }
                saveInfor();
            } catch (SQLException | ClassNotFoundException | IOException e) {
                // TODO 自动生成的 catch 块
                e.printStackTrace();
            }  finally {
    
                JDBCTools.release(ps, null, rs);
            }
        }
        
        public void setUsername() {
            if( !pass.getProperty("username").equals("") ) {
                accountField.setText(pass.getProperty("username"));
            }
        }
        
        public void setInofor() {       
            
            try {
                passwordFile = new FileInputStream("password.properties");
                pass.load(passwordFile);
                System.out.println("888"  + pass.getProperty("isSave"));
                
                if( pass.getProperty("isSave").equals("1") ) {
                    if( !pass.getProperty("password").equals("") ) {
                        passwordField.setText(pass.getProperty("password"));
                        //自动登录
                        if( pass.getProperty("autoLog").equals("1")) {
                            autoLog.setSelected(true);
                            logIn();
                        } else {
                            autoLog.setSelected(false);
                        }
                    }
                    checkPassword.setSelected(true);
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    passwordFile.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            
    
            
        }
    
        public void saveInfor() {
    
            try {
                FileOutputStream passwordFile = new FileOutputStream("password.properties");
    
                pass.setProperty("username", accountField.getText());
                
                if(autoLog.isSelected() ) {
                    pass.setProperty("autoLog","1");
                    isAutoLog = true;
                } else {
                    pass.setProperty("autoLog","0");
                }
                
                if( checkPassword.isSelected() ) {
                    
                    pass.setProperty("password", passwordField.getText());
                    
                } else {
                    
                }
                
                if( checkPassword.isSelected() ) {
                    pass.setProperty("isSave","1");
                } else {
                    pass.setProperty("isSave","0");
                }
                
                pass.store(passwordFile, null);
            } catch (IOException e1) {
                e1.printStackTrace();
            } finally {
                try {
                    passwordFile.close();
                } catch (IOException e) {
                    // TODO 自动生成的 catch 块
                    e.printStackTrace();
                }
            }
        }
        
        public void setLogo() {
    
            String sql = "select count(*) from user where username = ?";
            try {
                con = JDBCTools.getConnection("jdbc.properties");
                ps = con.prepareStatement(sql);
                ps.setString(1, accountField.getText() == null ? "" : accountField.getText());
                
                rs = ps.executeQuery();
                rs.next();
                int i = rs.getInt(1);
                if (i == 1 ) {
                    
                    sql = "select img from user where username = ?";
                    JDBCTools.release(ps, null, rs);
                    ps = con.prepareStatement(sql);
                    ps.setString(1, accountField.getText());
                    FileTools.readDB2Image(con, tempPath + accountField.getText() + ".jpg", ps);
                    FileInputStream f = new FileInputStream(tempPath+ accountField.getText() + ".jpg");
                    logoImage.setImage(new Image(f));
                    f.close();
                } else {
                    logoImage.setImage(null);
                }
                saveInfor();
            } catch (IOException e) {
    
            } catch (SQLException e) {
                // TODO 自动生成的 catch 块
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
                // TODO 自动生成的 catch 块
                e.printStackTrace();
            } finally {
                JDBCTools.release(ps, null, rs);
            }
        }
        
        private Writer Writer() {
            return null;
        }
    
    
        public static void main(String[] args) {
    
            launch(args);
    
        }
    }
    

    其它

    • 源码下载
    关注下方公众号,选择开源项目菜单
    
    完整教程PDF版本下载

    相关文章

      网友评论

        本文标题:Java日记本(包含数据库操作)

        本文链接:https://www.haomeiwen.com/subject/gmbcixtx.html