目录
1 概述
idea或eclipse开发,mysql数据库
本设计是一个家庭理财管理系统,运用了Web应用解决方案并加以实现理财功能。此次要做到安全和高效地设计出一套功能比较完善的家庭理财系统,这是一个基于B/S模式的家庭理财管理系统,功能主要包括家庭的日常消费、收入记录以及统计管理部分。该系统使用计算机进行信息管理,界面简洁清晰,实际实用方便灵活,不仅能提高平常工作效率,而且简便的操作能够很好的满足家庭从事财务管理方面的需要。
本系统前台设计使用了JSP作为开发语言,后台数据库的管理使用了SQL来实现,开发环境使用了MyEclipse,服务器采用tomcat,综合以上信息开发出一套基于Web技术的B/S结构的家庭理财管理系统。
这套管理系统主要实现了对家庭收支情况的管理。主要分为管理员工和普通用户两个权限。
普通用户实现的功能有收支管理、收支项目管理、报表统计。
收支管理:主要是对家庭收支情况进行查看、编辑、删除,如收入支出、收支日期、收支家庭成员、收支金额等。
收支项目管理:主要是收支项目的管理和添加等。
报表统计:主要是对家庭收入支出的统计
2 数据库表
1 收支表
名称 | 类型 | 说明 |
accountId | int | 编号 |
accountMoney | money | 金额 |
accountDetails | varchar(200) | 说明 |
accountDate | datetime | 日期 |
itemsId | int | 收支项目 |
userId | int | 用户 |
2 收支项目表
名称 | 类型 | 说明 |
itemsId | int | 编号 |
itemsType | nvarchar(50) | 类型 |
itemsDetails | nvarchar(200) | 说明 |
3用户表
名称 | 类型 | 说明 |
userId | int | 编号 |
userName | nvarchar(50) | 名称 |
userTrueName | nvarchar(8) | 姓名 |
userPassword | nvarchar(50) | 密码 |
userRights | int | 权限 |
3 关键代码
登录界面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>家庭理财管理系统</title>
<style type="text/css">
<!--
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
overflow: hidden;
}
.STYLE1 {
font-size: 16px;
font-weight: bold;
color: #666;
}
.TITLE {
font-size: 24px;
font-weight: bold;
color: #333
}
.input {
height: 30px;
border: solid 1px #bbbbbb
}
.login-btn {
background: url(images/login-btn.jpg) no-repeat;
width: 84px;
height: 28px;
line-height: 28px;
text-align: center;
font-size: 14px;
font-weight: bold;
color: #fff;
border: none;
margin-top: 5px;
cursor: pointer;
}
.tip {
color: #999;
font-size: 10px;
}
-->
</style>
<script language="JavaScript" type="text/JavaScript" src="js/common.js"></script>
<script language="JavaScript" type="text/JavaScript" src="js/jeson.js"></script>
<style type="text/css">
<!--
body {
background-color: #c4c3c3;
}
-->
</style>
<%
String errorMsg = (String) request.getAttribute("errorMsg");
if (errorMsg == null) {
errorMsg = "";
}
if (!errorMsg.trim().equals("")) {
out.println("<script language='javascript'>");
out.println("alert('" + errorMsg + "');");
out.println("</script>");
}
request.removeAttribute("errorMsg");
%>
<script type="text/javascript">
function verify() {
var error = "";
var flag = true;
var inputs = document.getElementsByTagName("input");
for (var i = 0; i < inputs.length; i++) {
if (inputs[i].value == "") {
error += (i + 1) + ": " + inputs[i].title + "不能为空 \n";
if (flag) {
flag = false;
}
} else {
if (BeNumOrChar(inputs[i].value) == false) {
alert(inputs[i].title + "只能输入数字或字符");
flag = false;
return flag;
}
}
}
if(error!='')alert(error);
if (flag) {
frm1.submit();
}
return flag;
}
</script>
</head>
<body>
<table width="100%" height="100%" border="0" cellpadding="0"
cellspacing="0">
<tr>
<td bgcolor="9fc967"> </td>
</tr>
<tr>
<td height="604"><table width="100%" border="0" cellspacing="0"
cellpadding="0">
<tr>
<td height="604" background="images/login_02.gif"> </td>
<td width="989" background="images/login_02.gif"><table
width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="345" background="images/login_1.jpg">
<form action="<%=path%>/action/loginAction.jsp" id="frm1">
<table width="311" height="272" border="0" align="center"
cellpadding="0" cellspacing="2">
<tr>
<td height="40" align="center" valign="bottom"><span
class="TITLE">家庭理财管理系统</span></td>
</tr>
<tr>
<td height="127" align="right" valign="middle"><table
width="250" border="0" align="center" cellpadding="2"
cellspacing="2">
<tr>
<td align="right"><span class="STYLE1">用户名</span></td>
<td><input name="userName" type="text"
class="input" title="用户名"
value="admin"></td>
</tr>
<tr>
<td align="right"><span class="STYLE1">密 码</span></td>
<td><input type="password" name="userPass"
class="input" title="密码" value="111111"></td>
</tr>
</table></td>
</tr>
<tr>
<td height="30" align="center">
<button type="buttom" name="sm1" class="login-btn"
onClick="verify()">登 录</button>
</td>
</tr>
<tr>
<td height="30" align="right"><span class="tip">请正确输入用户名和密码</span> </td>
</tr>
</table>
</form>
</td>
</tr>
<tr>
<td height="47"><table width="100%" border="0"
cellspacing="0" cellpadding="0">
<tr>
<td height="47" nowrap="nowrap"> </td>
<td width="244" background="images/login_07.gif"
nowrap="nowrap"> </td>
</tr>
</table></td>
</tr>
<tr>
<td height="212" background="images/login_08.gif"> </td>
</tr>
</table></td>
<td background="images/login_04.gif"> </td>
</tr>
</table></td>
</tr>
<tr>
<td bgcolor="70ad21"> </td>
</tr>
</table>
</body>
</html>
成员列表界面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%String path = request.getContextPath(); %>
<%
PagerController ctrl = new PagerController();
String tableName ="User";
Pager pager = request.getAttribute("pager")==null?ctrl.getPageController(tableName,"1","first"):(Pager)request.getAttribute("pager");
List userList = pager.getList();
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%@page import="user.action.UserAction"%>
<%@page import="java.util.List"%>
<%@page import="pojo.UserBean"%>
<%@page import="common.pager.Pager"%>
<%@page import="common.pager.PagerController"%><html>
<head>
<title>家庭成员管理</title>
<link href="<%=path %>/css/tab.css" rel="stylesheet" type="text/css">
<script language="JavaScript" type="text/JavaScript" src="<%=path %>/js/common.js"></script>
<script type="text/javascript">
function frmAccountSub()
{
var count = 0;
var cks = document.all.checkbox;
for(var i=0;i<cks.length;i++)
{
if(cks[i].checked)count++;
}
if(count==0)
{
alert("至少选择一项删除");
return
}
else
{
var flag = window.confirm("确定要删除这些内容 ");
if(flag)
{
document.getElementById("frmUser").submit()
}
else
{
return;
}
}
}
</script>
</head>
<body topmargin="0" leftmargin="0">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="32" align="left" valign="top" class="toptable"><table width="98%" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td>【 家庭成员管理 】</td>
<td align="right">
<a href="#" target="main" onclick="frmAccountSub()" >删除</a>
</td>
</tr>
</table></td>
</tr>
<tr>
<td height="215" valign="top">
<form action="<%=path %>/action/userAction.jsp" method="post" id="frmUser">
<table width="98%" align="center" cellpadding="0" cellspacing="1" bgcolor="#CECECE" >
<tr align="center" class="trtitle">
<td width="13%" height="29">
<input type="checkbox" onclick="selAll()">
<span class="text007">全选</span></td>
<td width="20%" class="text007">真实姓名</td>
<td width="15%" class="text007">用户名</td>
<td width="30%" class="text007">操作</td>
</tr>
<%
for(int i=0;i<userList.size();i++)
{
UserBean bean = (UserBean)userList.get(i);
%>
<tr align="center" class="trbody">
<td height="35"><input type="checkbox" name="checkbox" value="<%=bean.getUserId() %>"></td>
<td><%=bean.getUserTrueName() %></td>
<td><%=bean.getUserName() %></td>
<td><a href="<%=path %>/jsps/user/userShow.jsp?userId=<%=bean.getUserId() %>">查看</a>
<a href="<%=path %>/jsps/user/userEdit.jsp?userId=<%=bean.getUserId() %>">编辑</a>
<a href="<%=path %>/action/userAction.jsp?cmd=delete&userId=<%=bean.getUserId() %>">删除</a></td>
</tr>
<%
}
%>
</table><input type="hidden" name="cmd" value="deleteMore">
</form>
<table width="98%" border="0" cellpadding="0" cellspacing="0" class="bor001">
<tr>
<td height="40" align="left" > </td>
<td align="right"><%=pager.getCurrentPage() %>/<%=pager.getTotalPages() %>页 <a href="<%=path %>/action/pagerAction.jsp?method=first&t=User¤tPage=<%=pager.getCurrentPage() %>" class="tex04">首页 </a>| <a href="<%=path %>/action/pagerAction.jsp?method=previous&t=User¤tPage=<%=pager.getCurrentPage() %>" class="tex04">上一页</a> | <a href="<%=path %>/action/pagerAction.jsp?method=next&t=User¤tPage=<%=pager.getCurrentPage() %>" class="tex04">下一页</a> | <a href="<%=path %>/action/pagerAction.jsp?method=last&t=User¤tPage=<%=pager.getCurrentPage() %>" class="tex04">末页</a>
</td>
</tr>
</table></td>
</tr>
</table>
</body>
</html>
4 效果演示