家庭记账本的记账功能实现

此处只放相关部分,如有需要,请参考同名下本人的其他博客

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<style type="text/css">
        *{margin: 0;padding: 0}
        html,body{height: 100%}     /*这里很关键*/

        .outer-wrap{
            /*只有同时为html和body设置height: 100%时,这里的height才生效,
            并且随浏览器窗口变化始终保持和浏览器视窗等高*/
            height: 100%;
            position: relative;
            background-image: url(‘images/01.jpg‘);
        }
        .index-panel{
            width: 400px;
            height: 300px;
            background-image: url(‘images/04.jpg‘);
            position: absolute;
            top: 50%;
            left: 50%;
            margin-top: -150px;
            margin-left: -200px;
        }
    </style>
<body>
<%
         request.setCharacterEncoding("utf-8");
         String message=(String)request.getAttribute("message");
         if(message!=null){
         if(message.equals("error")){
             %>
             <script type="text/javascript">
              alert("用户名或密码错误");
         </script>
         <%
      }else if(message.equals("noerror")){
          %>
          <script type="text/javascript">
              alert("登录成功");
         </script>
         <%
      }else{
      }
      }
      %>
      <div class="outer-wrap">
      <div style="font-size:160px;text-align:center">家庭记账本</div>
      <div class="index-panel">
           <div  style="font-size:40px;text-align:center">欢迎您的使用</div>
           <div style="font-size:30px;text-align:center">  <a href="add.jsp">记账</a><br/> </div>
           <div style="font-size:30px;text-align:center"> <a href="show.jsp">查看账目</a> </div>

      </div>
      </div>
</body>
</html>

add.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>记账</title>
</head>
 <style type="text/css">
        *{margin: 0;padding: 0}
        html,body{height: 100%}     /*这里很关键*/

        .outer-wrap{
            /*只有同时为html和body设置height: 100%时,这里的height才生效,
            并且随浏览器窗口变化始终保持和浏览器视窗等高*/
            height: 100%;
            position: relative;
            background-image: url(‘images/01.jpg‘);
        }
        .add-panel{
            width: 400px;
            height: 300px;
            background-image: url(‘images/06.jpg‘);
            position: absolute;
            top: 50%;
            left: 50%;
            margin-top: -150px;
            margin-left: -200px;
        }
    </style>
<body>
<%
         request.setCharacterEncoding("utf-8");
         String message=(String)request.getAttribute("message");
         if(message!=null){
         if(message.equals("error")){
             %>
             <script type="text/javascript">
              alert("添加失败");
         </script>
         <%
      }else if(message.equals("noerror")){
          %>
          <script type="text/javascript">
              alert("添加成功");
         </script>
         <%
      }else{
      }
      }

      %>

<div class="outer-wrap">
      <div style="font-size:160px;text-align:center">家庭记账本</div>
      <div class="add-panel">
      <div style="text-align:center;color:yellow">请输入要添加的账目信息:</div><br/>
      <form action="AddBillServlet" method="post">

    <div style="text-align:center;color:yellow">
             账目类型<select id="btype" name="btype">
            <option value="饮食">饮食</option>
            <option value="教育">教育</option>
            <option value="购物">购物</option>
            <option value="医疗">医疗</option>
            <option value="收入">收入</option>
            <option value="借贷">借贷</option>
            <option value="其它">其它</option>
        </select>
    </div>
    <div style="text-align:center;color:red">注:借贷和其它类型的账目不计入收支</div>
    <div style="text-align:center;color:yellow">
     金额<input type="text"  name="bmoney"><br/>
    </div>
    <div style="text-align:center;color:yellow">
     日期<input type="date"  name="bdate"><br/>
    </div>
    <div style="text-align:center;color:yellow">
     备注<input type="text"  name="bremark"><br/>
    </div>
    <div style="text-align:center;color:yellow">
     <input type="submit"  value="添加"><br/>
    </div>
    </form>
      </div>
      </div>
</body>
</html>

AddBillServlet.java

package com.zzw.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.zzw.entity.Bill;
import com.zzw.service.IUserService;
import com.zzw.service.Impl.UserServiceImpl;

public class AddBillServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html; charset=utf-8");
        String type= request.getParameter("btype");
        int money=Integer.parseInt(request.getParameter("bmoney"));
        String date= request.getParameter("bdate");
        String remark= request.getParameter("bremark");
        Bill bill =new Bill(type,money,date,remark);
        //接口 x=new 实现类()
        IUserService userservice = new UserServiceImpl();
        boolean result=userservice.AddBill(bill);

        if(!result) {
            request.setAttribute("message","error");
        }else {
            request.setAttribute("message","noerror");
        }
        request.getRequestDispatcher("add.jsp").forward(request, response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doGet(request, response);
    }

}

UserServiceImpl.java

package com.zzw.service.Impl;

import com.zzw.dao.IUserDao;
import com.zzw.dao.Impl.UserDaoImpl;
import com.zzw.entity.Bill;
import com.zzw.entity.User;
import com.zzw.service.IUserService;

public class UserServiceImpl implements IUserService{
    IUserDao userdao= new UserDaoImpl();
    //登录
     public boolean Login(User user) {
            boolean flag=false;
          if(userdao.Login(user.getUname(),user.getUpwd())) {
                flag=true;
          }
          return flag;
     }
    //注册
    public boolean Register(User user) {
        boolean flag=false;
        if(!userdao.isExist(user.getUname())) {
            userdao.Register(user);
            flag=true;
        }else {
            System.out.println("此人已存在");
        }
       return flag;
    }
  //根据账号查询用户
    public User Query(String uname) {
        return userdao.Query(uname);
    }
    //记账
    public boolean  AddBill(Bill bill) {
        boolean flag=false;
        if(userdao.AddBill(bill)) {
           flag=true;
        }
        return flag;
    }
}

IUserService.java

package com.zzw.service;

import com.zzw.entity.Bill;
import com.zzw.entity.User;

public interface IUserService {
    //登录
         public boolean Login(User user);
    //注册
         public boolean Register(User user) ;
    //根据账号查询用户
         public User Query(String uname) ;
    //记账
         public boolean  AddBill(Bill bill) ;
}

Bill.java

package com.zzw.entity;

public class Bill {
      private int bid;
      private String btype;
      private int bmoney;
      private String bdate;
      private String bremark;

    public Bill() {
    }
    public Bill(String btype, int bmoney, String bdate, String bremark) {
        this.btype = btype;
        this.bmoney = bmoney;
        this.bdate = bdate;
        this.bremark = bremark;
    }
    public Bill(int bid, String btype, int bmoney, String bdate, String bremark) {
        this.bid = bid;
        this.btype = btype;
        this.bmoney = bmoney;
        this.bdate = bdate;
        this.bremark = bremark;
    }
    @Override
    public String toString() {
        return "Bill [bid=" + bid + ", btype=" + btype + ", bmoney=" + bmoney + ", bdate=" + bdate + ", bremark="
                + bremark + "]";
    }
    public int getBid() {
        return bid;
    }
    public void setBid(int bid) {
        this.bid = bid;
    }
    public String getBtype() {
        return btype;
    }
    public void setBtype(String btype) {
        this.btype = btype;
    }
    public int getBmoney() {
        return bmoney;
    }
    public void setBmoney(int bmoney) {
        this.bmoney = bmoney;
    }
    public String getBdate() {
        return bdate;
    }
    public void setBdate(String bdate) {
        this.bdate = bdate;
    }
    public String getBremark() {
        return bremark;
    }
    public void setBremark(String bremark) {
        this.bremark = bremark;
    }

}

UserDaoImpl.java

package com.zzw.dao.Impl;

import java.sql.ResultSet;
import java.sql.SQLException;

import com.zzw.dao.IUserDao;
import com.zzw.entity.Bill;
import com.zzw.entity.User;
import com.zzw.utils.DBUtil;

public class UserDaoImpl implements IUserDao{
    //注册
            public  boolean Register(User user) {
                 String sql="insert into user(uname,upwd,usex) values(?,?,?)" ;
                 Object [] params= {user.getUname(),user.getUpwd(),user.getUsex()};
                 return  DBUtil.executeUpdate(sql, params);
            }
            //查询账户是否存在
            public  boolean isExist(String uname) {
                return Query(uname)==null? false:true;
            }
    //登录
           public boolean Login(String uname,String upwd) {
               return Query(uname,upwd)==null? false:true;
           }
    //根据账号查询用户全部信息
    public   User Query(String uname) {
         User user= null;
         ResultSet rs = null;
         try {
             String sql="select * from user where uname =?" ;
             Object [] params= {uname};
             rs=DBUtil.executeQuery(sql, params);
             if(rs.next()) {
                 String name=rs.getString("uname");
                 String pwd=rs.getString("upwd");
                 String sex=rs.getString("usex");
                 user= new User(name,pwd,sex);
             }
         }catch(SQLException e) {
             e.printStackTrace();
         }catch(Exception e) {
             e.printStackTrace();
         }finally {
             try {
                    //先开的后关,后开的先关
                if(rs!=null)rs.close();
                if(DBUtil.pstmt!=null)DBUtil.pstmt.close();
                if(DBUtil.connection !=null)DBUtil.connection.close();
                }catch(SQLException e) {
                    e.printStackTrace();
                }finally {

                }
         }
         return user;
    }
    //根据账户密码确定是否存在
    public   User Query(String uname,String upwd) {
         User user= null;
         ResultSet rs = null;
         try {
             String sql="select * from user where uname =? and upwd=?" ;
             Object [] params= {uname,upwd};
             rs=DBUtil.executeQuery(sql, params);
             if(rs.next()) {
                 String name=rs.getString("uname");
                 String pwd=rs.getString("upwd");
                 String sex=rs.getString("usex");
                 user= new User(name,pwd,sex);
             }
         }catch(SQLException e) {
             e.printStackTrace();
         }catch(Exception e) {
             e.printStackTrace();
         }finally {
             try {
                   //先开的后关,后开的先关
               if(rs!=null)rs.close();
               if(DBUtil.pstmt!=null)DBUtil.pstmt.close();
               if(DBUtil.connection !=null)DBUtil.connection.close();
               }catch(SQLException e) {
                   e.printStackTrace();
               }finally {

               }
         }
         return user;
    }
    //记账
    public  boolean AddBill(Bill bill) {
        String sql="insert into bill(btype,bmoney,bdate,bremark) values(?,?,?,?)" ;
         Object [] params= {bill.getBtype(),bill.getBmoney(),bill.getBdate(),bill.getBremark()};
         return  DBUtil.executeUpdate(sql, params);
    }
}

IUserDao.java

package com.zzw.dao;

import com.zzw.entity.Bill;
import com.zzw.entity.User;

public interface IUserDao {
    //注册
    public  boolean Register(User user) ;
    //查询账户是否存在
    public  boolean isExist(String uname) ;
    //登录
    public  boolean Login(String uname,String upwd) ;
    //根据帐号查询用户全部信息
    public   User Query(String uname) ;
    //记账
    public  boolean AddBill(Bill bill);
}

下图为数据库中bill表

登录成功后进入首页

原文地址:https://www.cnblogs.com/yeyueweiliang/p/12234769.html

时间: 2024-10-08 03:09:00

家庭记账本的记账功能实现的相关文章

从单式记账到复式记账

近日被老婆问及,为什么放着大把的记账 app 不用,要用 Ledger CLI 这么奇葩的东西来记账?其实,这个问题从本质上可以变成:为什么要用复式记账?于是,我用了几个简单的例子向老婆做了解释,顺道在此记录一下. 本文不从专业的会计角度,而是通过生活中记账的实际需求出发,来阐明复式记账的含义及优点.不求全面专业,但求简明易懂. 从单式记账开始 我们记账的目的之一是追踪资产的变动.所以一般的流水账(单式记账)都是从资产的角度出发的.比如,11 月 18 日我在超市买了一盒巧克力,花了 30 元,

about家庭智能设备部分硬件模块功能共享【协同工作】solution

本人设备列表: Onda tablet {Android} wifi Desktop computer {win7.centos7} 外接蓝牙adapter PS interface 键盘.鼠标{与同局域网laptop通过synergy软件共享,使其成为共享的输入设备} 3.5mm interface低音炮{通过Bluetooth连接laptop,从而让laptop也可以使用该声音输出设备} 250G硬盘,通过在linuxcentos上搭建NFSNetwork File System,使其硬盘资

个人记账软件 共享及有条件开源

哎,看到这个就感叹我一天天的钱都花哪了,咋就剩不下钱呢.2015年刚开始,老婆就说要记账,这一天天的不知道钱都花哪去了,好吧.我就加班加点,通过2个星期终于搞了一套出来,虽不近完善,但基本能用了. 共享他是让他变的更好,非常希望有需要的朋友可以抽时间用用,再抽时间给补充补充建议; 个人记账系统 开发工具:vs2010 + dotnet2.0 + sqlite 本软件仅为个人免费软件且有条件开源 索取源码需求:   对本软件提出合理化建议或发现bug;   本系统使用了自己的ORM框架和部分控件的

Android平台的手机记账应用开发全程实录

目前Android平台的移动应用软件开发十分普遍,各行各业就需要在移动互联网时代发挥各自的行业优势,在人们生活中也离不开移动应用软件的帮助.本课程介绍的是基于移动平台的手机记账软件的开发,由于智能手机都是随身携带,智能手机用户之中有很大一部分人都有用手机记账的需求,可以能过此应用分门别类记录下在生活中的各项开支,有助于了解自己的消费习惯和特点.本课程以此项目为开发为讲解内容,以目前应用市场上比较成熟的产品为依据,由浅入深循序渐进进行介绍,绝大部分的代码的编写都有相应的介绍,力求做到详细具体,让学

智点财务软件记账凭证的录入

目前的财务软件市场中,有大家熟知的大众会计软件,像智点等,也有新兴起的小众软件.越来越多的会计软件在充斥着这个市场,所以,难免企业在选择记账软件的时候,就显得非常的谨慎而又困难,因为有些软件的稳定性和性能,在企业没有充分了解的前提下,是没有一个判定的,我们来看下在智点财务软件中,记账凭证的录入功能是怎样的呢?来体验下软件的性能究竟如何? 打开智点财务软件,进入软件的主界面,选择"凭证-录入新凭证",即可进行记账凭证的录入. 1.凭证的日期是指在本期内,经济业务发生的日期,它的范围不能超

金蝶kis记账王录入凭证的几个技巧

凭证又称会计凭证,是指能够用来证明经济业务事项发生.明确经济责任并据以登记账簿.具有法律效力的书面证明.它可以分为两大类:即原始凭证和记账凭证.记账凭证又称记账凭单,是会计人员根据审核无误的原始凭证按照经济业务事项的内容加以分类,并据以确定会计分录后所填制的会计凭证.它是登记账簿的直接依据.因此,凭证对会计来说非常的重要,下面我们来给大家介绍一下金蝶记账王录入凭证要注意的几个问题? 金蝶kis记账王在录入凭证的过程中首先要打开凭证录入界面 在这个界面 有几个重点需要强调一下, 1).顺序号是按年

Android手机记账应用开发视频教程

基于Android平台的手机记账应用开发全程实录(Activity间数据传递.SQLiteDatabase.AsyncTask)课程分类:Android适合人群:中级课时数量:26课时用到技术:AsyncTask.drawable.SQLite.selector.layout涉及项目:基于Android平台的手机记账应用咨询QQ:18402155921.课程研发环境开发工具:Eclipse 4.22.内容简介本课程内容详细介绍了手机记账软件的开发过程,从应用的需求出发,以目前应用市场上比较成熟的

第三次团队作业:记账软件软件设计

第一部分数据库设计 部分功能数据流图(Gane-Sarson) 记账软件顶层数据流图 1.1.2 细化记账功能数据流图 1.1.3 再次细化该数据流图 1.1.4 数据流图说明 该记账软件的功能主要分为记收入账和记支出账,记录相应的账单信息后,可以生成账单图表,表格可以在一张表中同时给出收入和支出的账单报告,也可根据用户需求将它们分开展示. 1.2 用户登录数据流图 1.3 查询功能数据流图 1.4 概念数据模型 1.5 物理数据模型 1.6 数据字典                      

Java课程寒假之开发记账本软件(网页版)之一

一.制定网页版记账本的基础功能 首先是下载了几个记账本APP,大致地看了一下记账本的功能:添加记录(支出,收入,自定义模板),查询流水(分类查询),账户. 二.开始做出框架 鉴于记账本有上面的功能,所以在网页的界面上选择了左侧导航栏的界面模板,这样功能会显得更加的简洁明了. 此模板来源于网络,此处对模板进行了相应的修改,以符合记账本要求. 原文地址:https://www.cnblogs.com/heiyang/p/10357239.html