JavaWeb

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

2017-12-05  本文已影响7人  53b3f4658edc

功能介绍

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


微信公众号: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版本下载
上一篇下一篇

猜你喜欢

热点阅读