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

功能介绍

登录界面
这是程序的入口,包括用户头像、账号、密码、记住密码、自动登录、注册账号、找回密码几大部分。
微信公众号: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 自动生成的 catche.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 自动生成的 catche.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 自动生成的 catche.printStackTrace();
        } catch (ClassNotFoundException e) {
            // TODO 自动生成的 catche.printStackTrace();
        } finally {
            JDBCTools.release(ps, null, rs);
        }
    }

    private Writer Writer() {
        return null;
    }


    public static void main(String[] args) {

        launch(args);

    }
}

其它

  • 源码下载
关注下方公众号,选择开源项目菜单

完整教程PDF版本下载

  • 2
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是一个基于 Android 平台的个人日记本程序的 SQLite 数据库代码示例: ```java public class DiaryDatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "diary.db"; private static final int DATABASE_VERSION = 1; public static final String TABLE_DIARY = "diary"; public static final String COLUMN_ID = "_id"; public static final String COLUMN_TITLE = "title"; public static final String COLUMN_CONTENT = "content"; public static final String COLUMN_DATE = "date"; private static final String CREATE_TABLE_DIARY = "CREATE TABLE " + TABLE_DIARY + "(" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + COLUMN_TITLE + " TEXT," + COLUMN_CONTENT + " TEXT," + COLUMN_DATE + " INTEGER" + ")"; public DiaryDatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_TABLE_DIARY); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + TABLE_DIARY); onCreate(db); } public long addDiary(String title, String content, long date) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(COLUMN_TITLE, title); values.put(COLUMN_CONTENT, content); values.put(COLUMN_DATE, date); long id = db.insert(TABLE_DIARY, null, values); db.close(); return id; } public List<Diary> getAllDiaries() { List<Diary> diaries = new ArrayList<>(); String selectQuery = "SELECT * FROM " + TABLE_DIARY; SQLiteDatabase db = this.getWritableDatabase(); Cursor cursor = db.rawQuery(selectQuery, null); if (cursor.moveToFirst()) { do { Diary diary = new Diary(); diary.setId(cursor.getInt(cursor.getColumnIndex(COLUMN_ID))); diary.setTitle(cursor.getString(cursor.getColumnIndex(COLUMN_TITLE))); diary.setContent(cursor.getString(cursor.getColumnIndex(COLUMN_CONTENT))); diary.setDate(cursor.getLong(cursor.getColumnIndex(COLUMN_DATE))); diaries.add(diary); } while (cursor.moveToNext()); } cursor.close(); db.close(); return diaries; } public Diary getDiary(long id) { SQLiteDatabase db = this.getReadableDatabase(); Cursor cursor = db.query(TABLE_DIARY, new String[]{COLUMN_ID, COLUMN_TITLE, COLUMN_CONTENT, COLUMN_DATE}, COLUMN_ID + "=?", new String[]{String.valueOf(id)}, null, null, null, null); if (cursor != null) cursor.moveToFirst(); Diary diary = new Diary( cursor.getInt(cursor.getColumnIndex(COLUMN_ID)), cursor.getString(cursor.getColumnIndex(COLUMN_TITLE)), cursor.getString(cursor.getColumnIndex(COLUMN_CONTENT)), cursor.getLong(cursor.getColumnIndex(COLUMN_DATE)) ); cursor.close(); db.close(); return diary; } public void updateDiary(Diary diary) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(COLUMN_TITLE, diary.getTitle()); values.put(COLUMN_CONTENT, diary.getContent()); values.put(COLUMN_DATE, diary.getDate()); db.update(TABLE_DIARY, values, COLUMN_ID + " = ?", new String[]{String.valueOf(diary.getId())}); db.close(); } public void deleteDiary(Diary diary) { SQLiteDatabase db = this.getWritableDatabase(); db.delete(TABLE_DIARY, COLUMN_ID + " = ?", new String[]{String.valueOf(diary.getId())}); db.close(); } } ``` 这段代码定义了一个名为 DiaryDatabaseHelper 的类,它继承自 SQLiteOpenHelper 类,用于创建和管理日记应用程序的 SQLite 数据库。在 onCreate() 方法中,它执行了一条 SQL 语句来创建一个名为 diary 的表,该表包含了标题、内容和日期三个字段。在 addDiary() 方法中,它向 diary 表中插入一条新的日记记录,并返回插入数据的 ID。在 getAllDiaries() 方法中,它查询 diary 表中的所有记录,并将它们转换成 Diary 对象的列表返回。在 getDiary() 方法中,它根据给定 ID 查询 diary 表中的一条记录,并将其转换为 Diary 对象返回。在 updateDiary() 和 deleteDiary() 方法中,它分别用于更新和删除给定的 Diary 对象对应的记录。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值