1、 个人信息系统 摘要 随着互联网的高速发展,人们生活水平的提高,越来越来注重个人信息的管理。以信息技术为基础,信息技术对社会进步与国民经济发展起着越来越大的促进作用,并对传统的思想观念与工作方式带来了巨大的冲击。在信息化时代,计算机已经进入了各行各业,同时也促进了各行各业的发展,因此,像以前的手工操作已经不可取了。个人管理系统的计算机软件开发是势在必行,如何利用先进的管理手段,提高人们信息管理的水平,是当今社会所面临的一个课题。提高个人管理水平,必须全方位地提高个人管理意识。只有高标准、高质量的管理才能满足企业的发展需求。面对信息时代的挑战,利用高科技手段来提高人们信息管理无疑是一条行之有效的
2、途径。在某种意义上,信息与科技在企业管理与现代化建设中显现出越来越重要的地位。个人管理方面的信息化与科学化,已成为现代化生活水平步入高台阶的重要标志。关键词:信息管理 个人信息系统 AbstractWith the high-speed development of Internet, people living standard rise, more and more to pay attention to the personal information management. On the basis of information technology, information tech
3、nology on social progress and the development of national economy is playing a more and more big, and the traditional ideas and working mode has brought the huge impact. In the information age, the computer has entered the from all walks of life, but also promote the development of all walks of life
4、, therefore, the manual operation is not desirable as they once were. Computer software development of personal management system is imperative, how to make use of advanced management methods, improve the level of peoples information management, is a subject of facing todays society. Improves the ma
5、nagement level of the individual, must improve the personal management consciousness in all aspects. Only a high standard, high quality management can meet the demand of the development of the enterprise. Faced with the challenge of the information age, the use of high-tech means to improve peoples
6、information management is undoubtedly an effective way. In a sense, information and technology in enterprise management and the modernization construction of show more and more important position. Personal information and scientific process of management, has become an important symbol of modern lif
7、e level into the high step. Keywords: information management information system 目录1 绪 论11.1 课题背景及意义12 系统分析22.1操作系统22.2软件环境22.3性能需求22.3.1数据精确度22.3.2适应性22.4运行需求22.4.1用户界面22.4.2硬件接口22.5系统功能规划22.6系统总体流程图32.7系统详细用例图42.7.1系统总体用图42.7.2用户登录用例图42.7.3个人信息用例图52.7.4通讯录用例图52.7.5备忘录用例图52.7.6日记管理用例图62.7.7财务管理用例图63
8、 系统设计83.1系统功能设计83.1.1系统功能划分83.1.2系统功能描述83.1.3系统功能结构图83.2数据库设计93.2.1数据描述93.3数据库描述113.4数据库的逻辑设计113.5数据库的物理设计123.6系统界面设计144系统实现与测试184.1核心代码184.2系统测试方案294.2.1测试原则294.2.2测试方法294.2.3测试项目说明294.3系统评价295 总结305.1发现的问题305.2设计体会30主要参考文献31致 谢321 绪 论1.1 课题背景及意义 认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机应用的一部分,使用计算机对个人信息进
9、行管理,具有着手工管理所无法比拟的优点.例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点个人信息管理系统能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件信息,这种管理方式存在着许多缺点,如:效率低、保密性差,另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻能够极大地提高个人管理的效率,也是企业的科学化、正规化管理,与世界接轨的重要条件。因此,开发这样一套管理软件是很有必要的。个人信息管理系统是典型的信息管理系统(MIS),其开发
10、主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性较好的库。而对于后者则要求应用程序功能完备,易使用等特点。经过分析,我们使用 Eclipse开发工具,利用其提供的各种面向对象的开发工具,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统。整个系统从符合操作简便、界面友好、灵活、实用、安全的要求出发。本文主要介绍了个人信息管理系统的开发背景,所要完成的功能和开发的过程。主要说明了系统设计的重点、设计思想、难点技术和解决方案。2 系统分析2.1操作系统本系统是建立在Java基础
11、上开发的,因此,对开发环境的操作系统没有特别需求,在此,本系统选择了Win7的操作系统。2.2软件环境开发中所使用到的软件环境如下所列。(1)体系结构:B/S架构(浏览器/服务器架构)。(2)操作系统:Windows系列(3)数据库管理系统:Mysql(4)开发工具: MyEclipse8.5(5)软件需求:jdk1.6以上,tomcat服务器2.3性能需求2.3.1数据精确度 考虑到本系统的用户需求在进行财务管理实体表的设计时将总收入,消费金额的数据精度是小数点后四位。2.3.2适应性该系统适合各类人群使用。2.4运行需求2.4.1用户界面采用b/s架构,界面由jsp设计实现,页面导航将各个
12、界面链接起来,简单明了。2.4.2硬件接口要将本系统发布在网上需要运行服务器的主机上装有网卡同时还要联网。2.5系统功能规划用户可以通过注册一个用户来对个人的通讯录信息,包括通讯人姓名、联系方式、工作地点、城市、备注等;备忘录信息,包括什么时间、事件、地点等;日记信息;包括时间、地点、事情、人物等;个人财物管理,包括总收入,消费项目、消费金额、消费时间、剩余资金等。个人信息进行相关的处理。本系统提供的主要功能: (1)能对通信录信息进行查看添加。 (2)能对备忘录信息进行添加查看。 (3)能对日记信息进行添加查看。(4)能对个人财务信息进行添加查看汇总收入支出的分类的查看。(5)能对个人信息进
13、行管理。2.6系统总体流程图2.7系统详细用例图2.7.1系统总体用图图2.1系统总体用图2.7.2用户登录用例图用户登录注册和用户的注销:是该系统的公共的功能部分。该部分主要负责对用户登录状态的信息的存储和传递。要实现这些功能需要借助session技术来实现。图2.2用户登录用例图2.7.3个人信息用例图个人信息管理模块:该模块主要的任务是实现对用户个人自己信息的管理,包括对个人信息的修改和查看。图2.3个人信息用例图2.7.4通讯录用例图通讯录管理模块:该模块主要的任务是实现对用户的个人通讯录的管理,包括对通信录的添加查看功能。图2.4通讯录用例图2.7.5备忘录用例图备忘录管理模块:该模
14、块主要的任务是实现对用户的备忘录的管理,包括对备忘录的添加和查看的功能。图2.5备忘录用例图2.7.6日记管理用例图日记管理模块:该模块主要的任务是实现对用户的个人日记的管理,包括对日记的添加和查看的功能。图2.6日记管理用例图2.7.7财务管理用例图财务管理模块:该模块主要的任务是实现对用户的个人财务状况的管理,包括对个人财务总况的的显示,财务状况的详细情况的查看,查看个人收入支出的详细情况,添加个人财务信息的功能。图2.7财务管理用例图3 系统设计3.1系统功能设计3.1.1系统功能划分根据用户使用用户管理系统时管理的信息的类别的不同可以分为以下几个模块分别是:个人信息,备忘录,通信录,日
15、记,财务管理。3.1.2系统功能描述 个人信息管理系统主要由:个人信息管理、备忘录管理、通讯录管理、日记管理、财务管理等模块组成。进入该系统后,用户可以对系统中的信息进行添加、修改、和查询等操作。包括以下功能:3.1.3系统功能结构图个人信息管理系统个人信息备忘录通讯录日记财务管理查看个人信息写日志财务总况财务清单收人情况支出情况添加记录添加备忘查看记录添加记录查看日志个人首页修改个人信息查看备忘操作退出系统3.1系统功能结构图3.2数据库设计3.2.1数据描述在需求分析后,就可以设计出能够满足用户需求的各类实体,以及它们之间的关系,为后面的设计打下基础。这些实体包含各种具体的信息,通过相互之
16、间的作用形成数据的流动。根据上面的分析规划出的实体有:用户信息实体、通讯录信息实体、日记信息实体、财务信息实体、备忘录信息实体。系统中的各个信息实体的e-r图如下面的图。 图3.2个人信息实体备忘录用户名时间记录时间地点事情图3.3备忘录实体体体 图3.4财务管理信息实体 图3.5通讯录信息实体 图3.6日记信息实体 3.3数据库描述根据数据库原理,并结合以上E-R图,经转换,可以导出各个关系。其转化规则为首先每个实体应该转换成一个关系,有属性的联系也应转化为一个关系然且需要给出每个关系的关键字。根据以上规则直接给出所有关系。个人信息(用户ID号,用户密码,姓名,年龄,出生日期,电话号码,QQ
17、,工作,地址)关键字为用户ID号。日志(标识,日期,地点,日记标题,备注)关键字为标识。通讯录(标识,名字,性别,关系,添加时间,电话, QQ,出生日期,工作,地址,城市)关键字为标识。备忘录(标识,时间,记录时间,地点,备注)关键字为标识。财务管理(标志,日期,项目,添加时间,数额,收入/支出)关键字为标识。在得出以上关系后,根据关系数据库的理论要求,需要对所有的关系进行关系规范化,至少要求各个关系达到第三范式的要求。按照第三范式的要求对比以上各个关系,在所有关系中都不存在非主属性对关键字的部分依赖,即满足第三范式。3.4数据库的逻辑设计数据库逻各个关系,现把它们转化为数据表。用户信息表:用
18、户ID号,用户密码,姓名,年龄,出生日期,电话号码,QQ,工作,地址。辑设计即把得到的满足第三范式的关系转化为特定的数据库系统下的数据表。根据前面得到的。日志表:标识,日期,地点,日记标题,备注。通讯录表:标识,姓名,性别,关系,添加时间,电话, QQ,出生日期,工作,地址,城市。备忘录表:标识,日期,记录时间,地点,备注。财务管理表:标志,日期,项目,添加时间,数额,收入/支出。图3.7数据库逻辑关系图3.5数据库的物理设计在完成数据库的逻辑设计后,即可以开始数据库的物理设计。基于以上数据库的逻辑设计,考虑程序设计的简易性及通用性,本个人信息管理系统采用Oracle数据库,并在其下创建5个数
19、据表,其结构分别如下:(1) 个人信息表, 其字段列表如图3.8所示:图3.8个人信息表(2) 备忘录表, 其字段列表如图3.9所示:图3.9备忘录表(3) 通讯录表, 其字段列表如图3.10所示: 图3. 10 通讯录表(4) 日记表, 其字段列表如图3.11所示:图3.11日记表(5) 财务管理表, 其字段列表如图3.12所示: 图3.12财务管理表3.6系统界面设计用户登录界面如下: 图3.13用户登录界面个人信息界面如下: 图3.14个人信息界面备忘录界面如下: 图3.15备忘录界面通信录界面如下: 图3.16通信录界面 日记界面如下: 图3.17日记界面财务总况界面如下: 图3.18
20、财务总况界面财务清单列表界面如下:图3.19财务清单列表界面收入情况界面如下:图3.20收入情况界面 支出情况界面如下:图3.21支出情况界面添加个人财务记录界面如下:图3.22添加个人财务记录界面4系统实现与测试4.1核心代码通讯录界面代码startList = function() if (document.all&document.getElementById) navRoot = document.getElementById(nav);for (i=0; inavRoot.childNodes.length; i+) node = navRoot.childNodesi;if (no
21、de.nodeName=LI) node.onmouseover=function() this.className+= over;node.onmouseout=function() this.className=this.className.replace( over, ); Listrl=CommunicationDao.getPageContent(currPage,span,loginUserId); for(Communication cr:rl) 1) % a href=showCommunication.jsp?cp=上一页 % for(int i=1;i=totalPage;
22、i+) String s=; if(i=currPage) s=selected; % if(currPage doPost(request,response);Overridepublic void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOExceptiontry request.setCharacterEncoding(utf-8); catch (UnsupportedEncodingException e) / TODO Auto-generated
23、 catch blocke.printStackTrace(); String action=request.getParameter(action); String comId=request.getParameter(comId); String userId=request.getParameter(userId);if(action.equals(addCommunication)/执行添加通信记录的业务操作/获取传过来的请求参数String comName=request.getParameter(comName);System.out.println(联系人姓名:+comName)
24、;String commuPhone=request.getParameter(commuPhone);String commuQQ=request.getParameter(commQQ);String commuJob=request.getParameter(commuJob);String commuWorkPlace=request.getParameter(commuPhone);String commuCity=request.getParameter(commuCity); /将获取的请求参数封装起来 Communication communication=new Commun
25、ication(); communication.setComId(comId); communication.setCommuCity(commuCity); communication.setCommuJob(commuJob); communication.setCommuPhone(commuPhone); communication.setCommuQQ(commuQQ); communication.setCommuWorkPlace(commuWorkPlace); communication.setComName(comName); communication.setUserI
26、d(userId);CommunicationDao.addCommunication(communication);/添加完日记后跳转到showDiary.jsp页面进行用户日记的显示response.setContentType(text/html;charset=utf8);request.getRequestDispatcher(/showCommunication.jsp).forward(request, response);else if(action.equals(communicationDetail) /执行个人通信记录的详细查看/获取传过来的请求参数 System.out
27、.println(查看详细通信录中的信息action:+action); System.out.println(查看详细通讯录中的信息的comId:+comId); System.out.println(查看详细通讯录中的信息的userID:+userId);Communication communicationDetail=CommunicationDao.findCommunicationByUserIdAndDid(userId, comId);request.setAttribute(communicationDetail, communicationDetail);response.
28、setContentType(test/html;charset=utf8);request.getRequestDispatcher(/CommunicationDetail.jsp).forward(request, response); 个人财务管理界面代码 startList = function() if (document.all&document.getElementById) navRoot = document.getElementById(nav);for (i=0; inavRoot.childNodes.length; i+) node = navRoot.childN
29、odesi;if (node.nodeName=LI) node.onmouseover=function() this.className+= over;node.onmouseout=function() this.className=this.className.replace( over, );window.onload=startList; % String sql=select fId,inOrOut,project from financial where userId=+loginUserId+ order by ftime desc; Listrl=FinancialDao.
30、getPageContent(currPage,span,loginUserId,sql); for(Financial fr:rl) % 1) % % for(int i=1;i=totalPage;i+) String s=; if(i=currPage) s=selected; 个人财务后台代码public class FinancialServlet extends HttpServlet public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,I
31、OException doPost(request,response);Overridepublic void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOExceptiontry request.setCharacterEncoding(utf-8); catch (UnsupportedEncodingException e) / TODO Auto-generated catch blocke.printStackTrace(); String actio
32、n=request.getParameter(action); String fId=request.getParameter(fId); String userId=request.getParameter(userId);if(action.equals(addFinancial)/执行添加财务记录的业务操作/获取传过来的请求参数String inOrOut =request.getParameter(inOrOut);String project=request.getParameter(project);String ftime=request.getParameter(ftime);
33、String fmoney=request.getParameter(fmoney); /先将发过来的参数做类型转换float z_fmoney=Float.parseFloat(fmoney);int z_inOrOut=Integer.parseInt(inOrOut); DateFormat format=new SimpleDateFormat(yyyy-MM-dd); format.setLenient(false);/指定日期/时间解析是否不严格。 Date ts=null;try ts=new Date(format.parse(ftime).getTime(); catch (
34、ParseException e) / TODO Auto-generated catch blockSystem.out.println(格式化ftime财务管理的日期出现错误。);e.printStackTrace(); System.out.println(FinancialServlet中将字符串转换为timestamp类型:+ts.toString(); /将当前的系统时间设置给添加时间 Date faddtime=new Date(System.currentTimeMillis(); System.out.println(FinancialServlet中创建的系统当前时间是+f
35、addtime); /将获取的请求参数封装起来Financial financial=new Financial();financial.setfId(fId);financial.setUserId(userId);financial.setInOrOut(z_inOrOut);financial.setProject(project);financial.setFtime(ts);financial.setFaddtime(faddtime);financial.setFmoney(z_fmoney);/调用相应的dao进行数据的插入nancialList.jsp).forward(req
36、uest, response);FinancialDao.addFinancial(financial);response.setContentType(test/html;charset=utf8);request.getRequestDispatcher(/financialList.jsp).forward(request, response);else if(action.equals(financialDetail) /执行个人通信记录的详细查看/获取传过来的请求参数 System.out.println(查看详细财务信息中的信息action:+action); System.out
37、.println(查看详细财务记录中的信息的fId:+fId); System.out.println(查看详细财务记录中的信息的userID:+userId);Financial financialDetail=FinancialDao.findFinancialByUserIdAndFid(userId, fId);request.setAttribute(financialDetail, financialDetail);response.setContentType(test/html;charset=utf8);request.getRequestDispatcher(/Financ
38、ialDetail.jsp).forward(request, response); 4.2系统测试方案4.2.1测试原则测试应该“尽早地和不断地进行”。测试规模由小到大。4.2.2测试方法采用边写代码边测试并进行改正。4.2.3测试项目说明以登录测试为例输入输出用户名密码123456用户名不能为空zhang123456用户名或密码错误zhang密码不能为空 zhang121212正确4.3系统评价 在测试之前先设定测试计划,然后再按照测试计划不断的进行测试,发现了问题,找出问题,对出错的地方进行分析更改代码,再进行测试,直到能够完成既定的功能。5 总结5.1发现的问题 在这次毕业设计中,遇到了许多问题,印象比较深刻的是空指针的错误,不过通过对程序的运行进行跟踪最后都找出了出现问题的地方并进行了更改。5.2设计体会 本系统内的五个模块都采用了统一的模板页,这样设计比较容易维修,也体现了设计的方便性。本系统的设计还采用了mvc的设计模式,这样设计可以充分发挥servlet的控制器。 在这次毕业设计中,遇到了很多意想不到的问题,每次通过跟踪程序的运行过程进行错误分析时都会对以前学习的知识进行巩固并加深了理解。可以说这样不仅巩固了学习的知识同时在解决问题的过程中还锻炼了自己独立解决问题的能力。主要参考文献1 明日科技.Java从入门到精通