Java 写的日记系统-窗体程序 完整代码 界面漂亮

开发环境

开发语言为Java,开发环境Eclipse或者IDEA都可以。数据库采用:MySQL。运行主程序,或者执行打开JAR文件即可以运行本程序。

系统框架

利用JDK自带的SWING框架开发,不需要安装第三方JAR包。MySQL数据库,纯窗体模式,直接运行Main文件即可以。同时带有详细得设计文档

系统主要功能

基于C/S日记本用Java语言编写,是一个简单的窗体程序,采用swing框架编写,系统涉及到文件、UI、数据库操作、事件等操作。系统的主要功能包括:

日记功能

1 写日记:运行Main.java文件后,进入程序的主界面。

2 设置日志的分类:对日志分类进行增删改操作

3 根据关键字搜索匹配的日记信息

4 按开始日期---截止日期模式搜索覆盖条件的日志信息

5 日记信息批量导出成EXCEL格式,和文本形式

6 日记修改:选中一条日记,对日记信息进行更新

7 日记删除:选中一条日记信息,进行日记的删除。删除前提醒用户是否确认要删除

提醒功能

8 指定时间的闹钟提醒

实现效果

关键代码

package com.dao;

import java.io.File;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JOptionPane;

import com.information.Information;
import com.windows.SearchFrame;



public class Dao {
    
    //数据库驱动路径
    private static final String driver="org.apache.derby.jdbc.EmbeddedDriver";
    private static String url="jdbc:derby:db_Remember";
    private static Dao dao=null;
    private static java.sql.Connection conn=null;
    private Statement stm;
    private ResultSet rs;
    PreparedStatement pst;
    
    private List<Information> informations=new ArrayList<Information>();
    private Information information=new Information();
    
    //获取Dao实例
    public static Dao getDao(){
        if(dao==null)
            dao=new Dao();
        return dao;
        
    }
    
    //设置数据库文件夹生成的位置
    private void setDBSystemDir(){
        //用System类获取程序的根目录
        String userHomeDir=System.getProperty("user.dir",".");
        String systemDir=userHomeDir+"/DATA";
        //设置javaDB的derby.system.home属性,也就是数据库文件夹存放的位置。
        System.setProperty("derby.system.home",systemDir);
    }
    
    //判断数据库是否已存在
    private boolean db_Exists(){
        boolean bExists=false;
        String userHomeDir=System.getProperty("user.dir",".");
        String systemDir=userHomeDir+"/DATA";
        File dbFileDir=new File(systemDir);
        String[] list=dbFileDir.list();
        if(list.length>1){
            bExists=true;
            System.out.println("数据库已经建立");
        }
        dbFileDir=null;
        list=null;
        return bExists;    
    }
    
    //用于创建数据库表
    public void createTable(){
        //创建remember表
        String createRemember="create table tb_Remember(title varchar(200) primary key,content varchar(8000),time timestamp,tipsdate timestamp,type int)";
        
        try{//用于向数据库发送sql语句的statement对象。
            stm=conn.createStatement();
            stm.execute(createRemember);
            stm.close();//释放数据库资源
            
        }catch(SQLException e){
            e.printStackTrace();
        }
    }
    
    //添加单条信息
    public void addInformation(Information information){
        String sql="insert into tb_Remember values(?,?,?,?,?)";
        try{//创建预编译的sql语句
            pst=conn.prepareStatement(sql);
            pst.setString(1, information.getTitle());
            pst.setString(2, information.getContent());
            pst.setTimestamp(3, information.getTime());
            pst.setTimestamp(4, information.getTipsdate());
            pst.setInt(5, information.getType());
            pst.executeUpdate();
            System.out.println("插入单条数据成功..........................................");
            //JOptionPane.showMessageDialog(SearchFrame.searchframe, "插入信息成功");
            pst.close();
            
            
        }catch(SQLException e){
            System.out.println("插入单条数据失败????????????????????????");
            JOptionPane.showMessageDialog(SearchFrame.searchframe, "插入信息[ "+information.getTitle()+" ]失败");
            e.printStackTrace();
        }
    }
    
    //更新单条信息
    public void updateInformation(Information informationparameter){
        String sql="update tb_Remember set content=?,tipsdate=?,type=? where title=?";
        try{//创建预编译的sql语句
            pst=conn.prepareStatement(sql);
            pst.setString(1, informationparameter.getContent());
            pst.setTimestamp(2, informationparameter.getTipsdate());
            pst.setInt(3, informationparameter.getType());
            pst.setString(4, informationparameter.getTitle());
            
            
            pst.executeUpdate();
            System.out.println("更新单条数据成功..........................................");
            JOptionPane.showMessageDialog(SearchFrame.searchframe, "更新信息成功");
            pst.close();
        }catch(SQLException e){
            System.out.println("更新单条数据失败????????????????????????");
            JOptionPane.showMessageDialog(SearchFrame.searchframe, "更新信息[ "+informationparameter.getTitle()+" ]失败");
            e.printStackTrace();
        }
    }
    
    //删除单条信息
    public void deleteInformation(String title){
        String sql="delete from tb_Remember where title=?";
        try{//创建预编译的sql语句
            pst=conn.prepareStatement(sql);
            pst.setString(1, title);
            pst.executeUpdate();
            System.out.println("删除单条数据成功..........................................");
            JOptionPane.showMessageDialog(SearchFrame.searchframe, "删除信息成功");
            pst.close();
        }catch(SQLException e){
            System.out.println("删除单条数据失败????????????????????????");
            JOptionPane.showMessageDialog(SearchFrame.searchframe, "删除信息[ "+title+" ]失败");
            e.printStackTrace();
        }
    }
    
    //批量删除信息
    public void deleteInformationLike(List<Information> list){
        String sql="delete from tb_Remember where title=?";
        int i=0;
        try{//创建预编译的sql语句
            pst=conn.prepareStatement(sql);
            
            for(;i<list.size();i++){
            
            pst.setString(1, list.get(i).getTitle());
            pst.executeUpdate();
            
            }
            System.out.println("批量删除信息成功..........................................");
            JOptionPane.showMessageDialog(SearchFrame.searchframe, "批量删除信息成功");
            pst.close();
        }catch(SQLException e){
            System.out.println("批量删除信息失败????????????????????????");
            JOptionPane.showMessageDialog(SearchFrame.searchframe, "批量删除信息[ "+list.get(i).getTitle()+" ]失败");
            e.printStackTrace();
        }
    }
    
    //查询所有数据
    public List<Information> getInformations(){
        informations.clear();
        try{
            String sql="select * from tb_Remember order by type desc";
            stm=conn.createStatement();
            rs=stm.executeQuery(sql);
            
            while(rs.next()){
                
                Information i = new Information();
                i.setTitle(rs.getString(1));
                i.setContent(rs.getString(2));
                i.setTime(rs.getTimestamp(3));
                i.setTipsdate(rs.getTimestamp(4));
                i.setType(rs.getInt(5));
                informations.add(i);
                
            }
            System.out.println("查询所有数据成功..........................................");
            rs.close();
            stm.close();
        }catch(SQLException e){
            System.out.println("查询所有数据失败????????????????????????");
            e.printStackTrace();
        }
        return informations;
    }
    
    //查询到期提示数据
    public List<Information> getTipsInformations(Timestamp tipsdate){
        informations.clear();
        try{
            String sql="select * from tb_Remember";
            stm=conn.createStatement();
            rs=stm.executeQuery(sql);
            
            while(rs.next()){
                if(rs.getTimestamp(4)==null || rs.getTimestamp(4).compareTo(tipsdate)>0)
                    continue;
                Information i = new Information();
                i.setTitle(rs.getString(1));
                i.setContent(rs.getString(2));
                i.setTime(rs.getTimestamp(3));
                i.setTipsdate(rs.getTimestamp(4));
                i.setType(rs.getInt(5));
                informations.add(i);
                
            }
            System.out.println("查询所有数据成功..........................................");
            rs.close();
            stm.close();
        }catch(SQLException e){
            System.out.println("查询所有数据失败????????????????????????");
            e.printStackTrace();
        }
        return informations;
    }
    
    //模糊查询
    public List<Information> getInformationsLike(String title,Timestamp datefrom,Timestamp dateto,int type){
        informations.clear();
        try{
            String sql = "select * from tb_Remember";
            if(!title.trim().equals("") && type!=0)
                sql = sql + " where title like '%"+title+"%' and type = " + type;
            if(!title.trim().equals("") && type==0)//0为默认的【未定义】
                sql = sql + " where title like '%"+title+"%'";
            if(title.trim().equals("") && type!=0)
                sql = sql + " where type = " + type;
            //if(title.trim().equals("") && type==0)
                sql = sql + " order by time desc";
               
            stm=conn.createStatement();
            rs=stm.executeQuery(sql);
            
            while(rs.next()){
                //数据库中的时间在参数时间1以前或参数时间2以后则跳过
                if(datefrom != null &&  rs.getTimestamp(3).compareTo(datefrom)<0){
                    continue;
                }
                if(dateto != null && rs.getTimestamp(3).compareTo(dateto)>0){
                    continue;
                }
                Information i = new Information();
                i.setTitle(rs.getString(1));
                i.setContent(rs.getString(2));
                i.setTime(rs.getTimestamp(3));
                i.setTipsdate(rs.getTimestamp(4));
                i.setType(rs.getInt(5));
                informations.add(i);
                
            }
            System.out.println("条件查询成功..........................................");
            rs.close();
            stm.close();
        }catch(SQLException e){
            System.out.println("条件查询失败????????????????????????");
            
            e.printStackTrace();
        }
        return informations;
    }
    
    //查询单条数据
    public Information getInformation(String title){
        information.clear();
        try{
            String sql="select * from tb_Remember where title=?";
            pst=conn.prepareStatement(sql);
            pst.setString(1, title);
            rs=pst.executeQuery();
            if(rs.next()){
                information.setTitle(rs.getString(1));
                information.setContent(rs.getString(2));
                information.setTime(rs.getTimestamp(3));
                information.setTipsdate(rs.getTimestamp(4));
                information.setType(rs.getInt(5));
                System.out.println("查询单条数据成功..........................................");
            }
            
            rs.close();
            pst.close();
        }catch(SQLException e){
            System.out.println("查询单条数据失败????????????????????????");
            e.printStackTrace();
        }
        
        return information;
    }
    
    
    
    private Dao(){
        try{
            //显式地加载 JDBC 驱动程序
            //设置数据库文件夹生成的位置
            setDBSystemDir();
            Class.forName(driver);
            if(!db_Exists()){//如果不存在
                //DriverManager 试图从已注册的 JDBC 驱动程序集中选择一个适当的驱动程序。
                //create=true会创建新的数据库
                //如果javaDB数据库已经运行,那么在执行此句时会抛出异常。
                conn=DriverManager.getConnection(url + ";create=true");
                createTable();//创建数据库表。
            }else
                //如果javaDB数据库已经运行,那么在执行此句时会抛出异常。
                conn=DriverManager.getConnection(url);
            
        }catch(Exception e){
            e.printStackTrace();
            //null指定所属窗口为默认窗口
            JOptionPane.showMessageDialog(null,"数据库已经启动,请检查本软件是否已经运行");
            System.exit(0);
        }
        
    }
    
    public static void main(String [] args){
            Dao dao=new Dao();
            Information information = new Information();
            
            
            /*测试插入单条数据
            information.setTitle("testtitle2");
            information.setContent("testcontent");
            Timestamp time = new Timestamp(System.currentTimeMillis());
            information.setTime(time);
            information.setTipsdate(time);
            information.setType(1);
            dao.addInformation(information);*/
            
            
            /*测试查询所有数据
            List<Information> informations=new ArrayList<Information>();
            informations=dao.getInformations();
            for(Information i : informations){
          
                System.out.println("title="+i.getTitle());
                System.out.println("content="+i.getContent());
                System.out.println("time="+i.getTime());
                System.out.println("tipsdate="+i.getTipsdate());
                System.out.println("type="+i.getType());
            }
            System.out.println("size="+informations.size());*/
            
            /*测试到期提示数据
            List<Information> informations=new ArrayList<Information>();
            Timestamp time = new Timestamp(System.currentTimeMillis());
            information.setTime(time);
            informations=dao.getTipsInformations(time);
            for(Information i : informations){
          
                System.out.println("title="+i.getTitle());
                System.out.println("content="+i.getContent());
                System.out.println("time="+i.getTime());
                System.out.println("tipsdate="+i.getTipsdate());
                System.out.println("type="+i.getType());
            }
            System.out.println("size="+informations.size());*/
            
            /*测试查询单条数据
            String title="testtitle2";
            information = dao.getInformation(title);
            System.out.println("title="+information.getTitle());
            System.out.println("content="+information.getContent());
            System.out.println("time="+information.getTime());
            System.out.println("tipsdate="+information.getTipsdate());
            System.out.println("type="+information.getType());*/
            
            /*测试更新单条数据
            information = dao.getInformation("1");
            information.setContent("更新");
            information.setType(2);
            dao.updateInformation(information);
            System.out.println("title="+information.getTitle());
            System.out.println("content="+information.getContent());
            System.out.println("time="+information.getTime());
            System.out.println("tipsdate="+information.getTipsdate());
            System.out.println("type="+information.getType());*/
            
            /*测试批量添加数据*/
            for(int i=1000;i<50000;i++){
                information.setTitle("测试数据"+i);
                information.setContent("testcontent");
                Timestamp time = new Timestamp(System.currentTimeMillis());
                information.setTime(time);
                information.setTipsdate(time);
                information.setType(i%4);
                dao.addInformation(information);
            }
            
            /*测试删除单条数据
            dao.deleteInformation("测试数据2");*/
            
            /*测试条件查询
            List<Information> informations=new ArrayList<Information>();
            informations=dao.getInformationsLike("1",java.sql.Timestamp.valueOf("2010-11-10 00:00:00.0"),java.sql.Timestamp.valueOf("2010-11-13 00:00:00.0"),0);
            for(Information i : informations){
          
                System.out.println("title="+i.getTitle());
                System.out.println("content="+i.getContent());
                System.out.println("time="+i.getTime());
                System.out.println("tipsdate="+i.getTipsdate());
                System.out.println("type="+i.getType());
            }
            System.out.println("size="+informations.size());*/
            
            /*批量删除信息
            dao.deleteInformationLike(informations);*/
            
            
    }

}

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计算机程序

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值