JSP课程设计个人信息管理系统.doc
1.1业务流程分析用户需要使用账号与密码通过登陆页面登陆个人信息管理系统,新用户可注册新账号登陆。登陆后进入系统主窗体,可对个人信息管理、备忘录管理、通讯录管理、日记管理、财务管理进行操作。退出系统时返回登陆页面。1.2系统功能分析个人信息管理系统主要由:个人信息管理、备忘录管理、通讯录管理、日记管理、财务管理等模块组成。进入该系统后,用户可以对系统中的信息进行添加、修改、删除和查询等操作。包括以下功能:1) 通讯录信息:包括通讯人姓名、联系方式、工作地点、城市、备注等。2) 备忘录信息:包括什么时间、事件、地点等。3) 日记信息:包括什么时间、地点、事件等。4) 个人财物管理:包括总收入,消费项目、消费金额、消费时间、余额。每个用户可以自己注册一个用户名,对自己的个人信息进行独立的管理。 1、 系统总体设计2.1个人信息管理系统业务流程图如图2.1所示用户登陆是否登陆系统主窗体个人信息备忘录通讯录日志财务管理登陆注册否是2.1系统业务流程图退出2.2个人信息管理系统功能结构图如图2.2所示个人信息管理系统个人信息备忘录通讯录日记财务管理查看个人信息写日志财务总况财务清单收人情况支出情况添加记录添加备忘查看记录添加记录查看日志个人首页修改个人信息查看备忘操作退出系统2.2系统功能结构图2、 系统数据库设计在需求分析阶段已经完成系统的所有数据分析。根据该阶段建立的概念模型,已经得出满足第三范式的几个关系描述,此阶段主要的工作就是把前一阶段的成果转化为具体的数据库。3.1系统的基本E-R图根据之前的分析规划出的个人信息管理系统实体有:个人信息实体、备忘录实体、通讯录实体、日记实体、财务管理实体。个人信息实体图如图3.1所示个人信息姓名年龄出生日期电话号码QQ工作地址3.1个人信息实体账号密码备忘录实体图如图3.2所示备忘录用户名时间记录时间地点事情3.2备忘录实体同通讯录实体如图3.3所示通讯录出生日期性别QQ姓名城市地址工作关系添加时间电话3.3通讯录实体日记实体如图3.4所示日记日记标题地点时间用户名事情3.4日记实体财务管理实体如图3.5所示财务管理用户名项目时间数额添加时间收入/支出3.5财务管理实体3.2关系描述的设计根据数据库原理,并结合以上E-R图,经转换,可以导出各个关系。其转化规则为首先每个实体应该转换成一个关系,有属性的联系也应转化为一个关系然且需要给出每个关系的关键字。根据以上规则直接给出所有关系。个人信息(用户ID号,用户密码,姓名,年龄,出生日期,电话号码,QQ,工作,地址)关键字为用户ID号。日志(标识,日期,地点,日记标题,备注)关键字为标识。通讯录(标识,名字,性别,关系,添加时间,电话, QQ,出生日期,工作,地址,城市)关键字为标识。备忘录(标识,时间,记录时间,地点,备注)关键字为标识。财务管理(标志,日期,项目,添加时间,数额,收入/支出)关键字为标识。在得出以上关系后,根据关系数据库的理论要求,需要对所有的关系进行关系规范化,至少要求各个关系达到第三范式的要求。按照第三范式的要求对比以上各个关系,在所有关系中都不存在非主属性对关键字的部分依赖,即满足第三范式。3.3数据库的逻辑设计数据库逻辑设计即把得到的满足第三范式的关系转化为特定的数据库系统下的数据表。根据前面得到的各个关系,现把它们转化为数据表。用户信息表:用户ID号,用户密码,姓名,年龄,出生日期,电话号码,QQ,工作,地址。日志表:标识,日期,地点,日记标题,备注。通讯录表:标识,姓名,性别,关系,添加时间,电话, QQ,出生日期,工作,地址,城市备忘录表:标识,日期,记录时间,地点,备注。财务管理表:标志,日期,项目,添加时间,数额,收入/支出。3.4数据库的物理设计在完成数据库的逻辑设计后,即可以开始数据库的物理设计。基于以上数据库的逻辑设计,考虑程序设计的简易性及通用性,本个人信息管理系统采用Oracle数据库,并在其下创建5个数据表,其结构分别如下:(1)个人信息表, 其字段列表如表3.1所示:表3.1 个人信息表字段名数据类型字段长度与格式主键UserIDVARCHAR20是userNameVARCHAR10否userPasswordVARCHAR20否uageNUMBER/否ubirthdayDATE/否utelephotoVARCHAR11否uQQVARCHAR15否ujobVARCHAR30否uworkingPlaceVARCHAR30否uremarksCLOB/否(2) 备忘录表, 其字段列表如表3.2所示: 表3.2 备忘录表字段名数据类型字段长度与格式主键midVARCHAR20是userIdVARCHAR20否mtimetimestamp/否maddtimetimestamp/否mplaceVARCHAR30否mthingsCLOB/否(3)通讯录表, 其字段列表如表3.3所示: 表3.3 通讯录表字段名数据类型字段长度与格式主键aidVARCHAR20是userIdVARCHAR20否nameVARCHAR10否relationVARCHAR10否sexVARCHAR2否birthdayDATE/否aaddtimeDATE/否telephoneVARCHAR11否QQVARCHAR15否jobVARCHAR30否workingPlaceVARCHAR30否cityVARCHAR15否(4) 日记表, 其字段列表如表3.4所示:表3.4 日记表字段名数据类型字段长度与格式主键didVARCHAR20是userIdVARCHAR20否atitleVARCHAR20否dtimeDATE/否dplaceVARCHAR30否dthingsCLOB/否(5) 财务管理表, 其字段列表如表3.5所示:表3.5 财务管理表字段名数据类型字段长度与格式主键fidVARCHAR20是userIdVARCHAR20否inoroutNUMBER/否projectVARCHAR30否ftimeDATE/否faddtimeDATE/否fmoneyNUMBER8,2否3、 各功能模块的设计与实现4.1登录模块<% page language="java" import="java.util.*" pageEncoding="GBK"%><% taglib uri=" prefix="c" %><%String path = request.getContextPath();String basePath = request.getScheme()+":/"+request.getServerName()+":"+request.getServerPort()+path+"/"%><!DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.01 Transitional/EN"><html> <head> <base href="<%=basePath%>"> <title>个人信息系统</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!-<link rel="stylesheet" type="text/css" href="styles.css">-><%request.setCharacterEncoding("GBK") ;%><link rel="stylesheet" href="css/login.css" type="text/css" /> </head> <body background="images20101127309.jpg"> <marquee height="100"></marquee><br /> <div align="center" > <br/><br/><br/><br/> <jsp:useBean id="login" scope="request" class="benben.check"/> <div align="center" > <br/> <br/> <center><h1>个人信息系管理统欢迎您</h1> <form action = "check.jsp" method = "post" name = "form1 "> <table width="250" border="0"><tbody><tr><td>账号:</td><td><input type = "text" name = "userId" id="userId"side="15"maxlength="15"></td></tr><tr><td>密码:</td><td><input type = "password" name = "password" id = "password"side="15"maxlength="15"></td></tr><tr><td> </td><td><input type = "submit" value = "确定" > <input type="reset" value="取消"> <input type="button" value="注册" onClick="window.open('zhuce.jsp')"><br></td></tr></tbody></table> </form> (用户名和密码请输入615位的字母或数字) </center> <div class="div1"><table border="0" width="250px"><tr><td height="23px"><%=login.getErrorMsg("erruserId")%></td></tr><tr><td height="23px"><%=login.getErrorMsg("errpassword")%></td></tr></table></div></div></div></body></html>4.2用户注册模块<% page language="java" import="java.util.*" pageEncoding="GBK"%><% page import="java.text.*" %><%String path = request.getContextPath();String basePath = request.getScheme()+":/"+request.getServerName()+":"+request.getServerPort()+path+"/"%><!DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.01 Transitional/EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>注册</title><link rel="stylesheet" type="text/css" href="./css/base.css"><script language="javascript" type="text/javascript" src="./js/base.js"></script> </head><body leftmargin="8" topmargin="8"><!- 快速转换位置按钮 -><table width="98%" border="0" cellpadding="0" cellspacing="1" bgcolor="#D1DDAA" align="center"><tr> <td height="26"> <table width="98%" border="0" cellspacing="0" cellpadding="0"> <tr> <td align="center"> </td></tr></table></td></tr></table><!- 内容列表 -><form name="form" action="add_user.jsp" method="post"><table width="98%" border="0" cellpadding="2" cellspacing="1" bgcolor="#D1DDAA" align="center" style="margin-top:8px"><tr bgcolor="#E7E7E7"><td height="24" colspan="10"> 注册 </td></tr><tr align="center" bgcolor="#FAFAF1" height="22"> <td width="20%">用户ID:</td> <td align="left"><input type="text" name="userId" />(615位字母或数字)</td></tr><tr align="center" bgcolor="#FAFAF1" height="22"> <td width="20%">用户名:</td> <td align="left"><input type="text" name="userName" /></td></tr><tr align="center" bgcolor="#FAFAF1" height="22"> <td width="20%">密 码:</td> <td align="left"><input type="text" name="password" />(615位字母或数字)</td></tr><tr align="center" bgcolor="#FAFAF1" height="22"> <td width="20%">年龄:</td> <td align="left"><input type="text" name="uage" /></td></tr><tr align="center" bgcolor="#FAFAF1" height="22"> <td width="20%">出生日期:</td> <td align="left"><input type="text" name="ubirthday" />(YYYY-MM-DD)</td></tr><tr align="center" bgcolor="#FAFAF1" height="22"> <td width="20%">电话:</td> <td align="left"><input type="text" name="utelephoto" /></td></tr><tr align="center" bgcolor="#FAFAF1" height="22"> <td width="20%">QQ:</td> <td align="left"><input type="text" name="uqq"/></td></tr><tr align="center" bgcolor="#FAFAF1" height="22"> <td width="20%">工作:</td> <td align="left"><input type="text" name="ujob"/></td></tr><tr align="center" bgcolor="#FAFAF1" height="22"> <td width="20%">工作地址:</td> <td align="left"><input type="text" name="uworkingPlace"/></td></tr><tr align="center" bgcolor="#FAFAF1" height="22"> <td colspan="2" height="280"> <textarea rows="10" cols="120" name="uremaks"></textarea> </td></tr> <tr align="left" bgcolor="#FAFAF1" height="22"> <td colspan="2" > <input type="submit" value="保存"> <input type="reset" value="重置"> </td></tr></table></form></body></html>4.3备忘录模块添加备忘录<% page language="java" import="java.util.*" pageEncoding="GBK"%><% page import="java.text.*" %><%String path = request.getContextPath();String basePath = request.getScheme()+":/"+request.getServerName()+":"+request.getServerPort()+path+"/"%><%String userId = null;%><% include file="./cookie2.html"%><!DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.01 Transitional/EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>备忘录</title><link rel="stylesheet" type="text/css" href="./css/base.css"><script language="javascript" type="text/javascript" src="./js/base.js"></script> </head><body leftmargin="8" topmargin="8"><!- 快速转换位置按钮 -><table width="98%" border="0" cellpadding="0" cellspacing="1" bgcolor="#D1DDAA" align="center"><tr> <td height="26"> <table width="98%" border="0" cellspacing="0" cellpadding="0"> <tr> <td align="center"> <% include file="top.jsp"%> </td></tr></table></td></tr></table><!- 内容列表 -><form name="form" action="add_mem.jsp" method="post"><table width="98%" border="0" cellpadding="2" cellspacing="1" bgcolor="#D1DDAA" align="center" style="margin-top:8px"><tr bgcolor="#E7E7E7"><td height="24" colspan="10"> 添加备忘录 </td></tr><tr align="center" bgcolor="#FAFAF1" height="22"> <td width="20%"> 时 间 :</td> <td align="left"><input type="text" name="mtime" value="<%=new SimpleDateFormat("yyyy-M-d HH:mm:ss").format(new Date()%>"/></td></tr><tr align="center" bgcolor="#FAFAF1" height="22"> <td width="20%">添加时间:</td> <td align="left"><input type="text" name="maddtime" value="<%=new SimpleDateFormat("yyyy-M-d HH:mm:ss").format(new Date()%>"/></td></tr><tr align="center" bgcolor="#FAFAF1" height="22"> <td width="20%"> 地 点 :</td> <td align="left"><input type="text" name="mplace"/></td></tr><tr align="center" bgcolor="#FAFAF1" height="22"> <td colspan="2" height="280"> <textarea rows="20" cols="120" name="mthings"></textarea> </td> </tr> <tr align="left" bgcolor="#FAFAF1" height="22"> <td colspan="2" > <input type="submit" class="coolbg"value="保存"> <input type="reset" class="coolbg"value="重置"> </td></tr></table></form></body></html>4.4通讯录模块添加新联系人<% page language="java" import="java.util.*" pageEncoding="GBK"%><% page import="java.text.*" %><%String path = request.getContextPath();String basePath = request.getScheme()+":/"+request.getServerName()+":"+request.getServerPort()+path+"/"%><%String userId = null;%><% include file="./cookie2.html"%><!DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.01 Transitional/EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>添加通讯录</title><link rel="stylesheet" type="text/css" href="./css/base.css"><script language="javascript" type="text/javascript" src="./js/base.js"></script> </head><body leftmargin="8" topmargin="8"><!- 快速转换位置按钮 -><table width="98%" border="0" cellpadding="0" cellspacing="1" bgcolor="#D1DDAA" align="center"><tr> <td height="26"> <table width="98%" border="0" cellspacing="0" cellpadding="0"> <tr> <td align="center"> <% include file="top.jsp"%> </td></tr></table></td></tr></table><!- 内容列表 -><form name="form" action="add_book.jsp" method="post"><table width="98%" border="0" cellpadding="2" cellspacing="1" bgcolor="#D1DDAA" align="center" style="margin-top:8px"><tr bgcolor="#E7E7E7"><td height="24" colspan="10"> 添加通讯录 </td></tr><tr align="center" bgcolor="#FAFAF1" height="22"> <td width="20%"> 姓 名 :</td> <td align="left"><input type="text" name="name" /></td> <td width="20%"> 性 别 :</td> <td align="left"><input type="radio" name="sex" value="男"checked="checked"/>男<input type="radio" name="sex" value="女"/>女</td></tr><tr align="center" bgcolor="#FAFAF1" height="22"> <td width="20%"> 关 系 :</td> <td align="left"><input type="text" name="relation"/></td> <td width="20%">添加时间:</td> <td align="left"><input type="text" name="aaddtime" value="<%=new SimpleDateFormat("yyyy-MM-dd").format(new Date()%>"/>*</td></tr><tr align="center" bgcolor="#FAFAF1" height="22"> <td width="20%"> 电 话 :</td> <td align="left"><input type="text" name="telephone" /></td> <td width="20%"> Q Q :</td> <td align="left"><input type="text" name="qq" /></td></tr><tr align="center" bgcolor="#FAFAF1" height="22"> <td width="20%">出生日期:</td> <td align="left"><input type="text" name="birthday" value="<%=new SimpleDateFormat("yyyy-MM-dd").format(new Date()%>"/>*</td> <td width="20%"> 工 作 :</td> <td align="left"><input type="text" name="job" /></td></tr><tr align="center" bgcolor="#FAFAF1" height="22"> <td width="20%">地址:</td> <td align="left"><input type="text" name="workingPlace" /></td> <td width="20%"> 城 市 :</td> <td align="left"><input type="text" name="city" /></td></tr> <tr align="left" bgcolor="#FAFAF1" height="22"> <td colspan="4" > <input type="submit" class="coolbg"value="保存"> <input type="reset" class="coolbg"value="重置"> </td></tr></table></form></body></html>4.5日记模块添加新的日记<% page language="java" import="java.util.*" pageEncoding="GBK"%><% page import="java.text.*" %><%String path = request.getContextPath();String basePath = request.getScheme()+":/"+request.getServerName()+":"+request.getServerPort()+path+"/"%><%String userId = null;%><% include file="./cookie2.html"%><!DOCTYPE HTML PUBLIC "-/W3C/DTD HTML 4.01 Transitional/EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>日记</title><link rel="stylesheet" type="text/css" href="./css/base.css"><script language="javascript" type="text/javascript" src="./js/base.js"></script> </head><body leftmargin="8" topmargin="8"><!- 快速转换位置按钮 -><table width="98%" border="0" cellpadding="0" cellspacing="1" bgcolor="#D1DDAA" align="center"><tr> <td height="26"> <table width="98%" border="0" cellspacing="0" cellpadding="0"> <tr> <td align="center"> <% include file="top.jsp"%> </td></tr></table></td></tr></table><!- 内容列表 -><form name="form" action="add_diary.jsp" method="post"><table width="98%" border="0" cellpadding="2" cellspacing="1" bgcolor