XML论文个人日程提醒管理系统.docx
- 文档编号:25817256
- 上传时间:2023-06-15
- 格式:DOCX
- 页数:72
- 大小:437.98KB
XML论文个人日程提醒管理系统.docx
《XML论文个人日程提醒管理系统.docx》由会员分享,可在线阅读,更多相关《XML论文个人日程提醒管理系统.docx(72页珍藏版)》请在冰豆网上搜索。
XML论文个人日程提醒管理系统
个人日程提醒管理系统
使用XML保存的数据,具有良好的跨平台性能。
XML文件的应用越来越广泛,如数据交换、内容管理、Web集成和配置等方面。
为了使大家能够尽快的掌握XML学习的知识点,融会贯通整个XML,创建个人日程提醒管理系统仅供大家学习使用。
1系统概述
一个系统从无到有,从开始开发到完成,需要分析许多问题,遵循许多的步骤和原则,创建多个文档,以确保系统的进度的可控性和质量的预估性。
软件开发经历的过程有需求分析,功能设计,数据库设计等。
每个过程完成不同的任务,每一个过程都是后一个过程的基础,每个过程都要创建相应的文档作为基础。
1.1需求分析
开发一个软件首先要进行系统分析,其主要工作是确定系统的规模和范围,确定软件的总体要求以及所需要的硬件环境和支撑软件,确定待开发软件与外界的接口,根据用户的情况确定软件对操作的要求,以及待开发软件总体上的约束和限制。
系统分析有助于弄清对需开发的软件、支撑软件、硬件环境以及操作人员的要求。
需求分析所要做的工作是深入描述软件的功能和性能,确定软件设计的限制和软件同其它系统元素的接口细节,定义软件的其他有效性需求。
分析员通过需求分析,逐步细化对软件的要求,描述软件要处理的数据域,并给软件开发提供一种可转化为数据设计、结构设计和过程设计的数据和功能表示。
在软件完成后,制定的软件规格说明还要为评价软件质量提供依据。
一个系统从开始至开发到完成,需要分析许多问题,遵循许多原则和步骤,以确保系统进度的可控性和质量的预估性。
本章中创建的是一个人日程提醒管理系统,同样地要考虑许多问题,首先要对系统有一个明确的需求和分析,确定在该系统中要实现哪些功能,并为这些功能定制页面。
个人日程提醒管理系统主要实现如下几个功能模块。
加载模块
该模块主要实现的系统加载,通过系统的加载,减少系统的缓冲时间,使系统有更的时间读取和加载数据。
新建日程提醒模块
该模块主要实现对个人日程提醒信息的添加,包括提醒的名称、内容、提醒方式和提醒类型等操作。
今日日程提醒查看模块
该模块主要实现当天日程提醒信息的查看,包括提醒的编号、标题、内容、类型和提醒时间等操作。
所有日程提醒信息查看模块
该模块主要实现对所有日程提醒信息的查看,该模块是以日程提醒的类型的方式来对日程信息进行查看的,包括普通提醒、生日聚会、重要提醒、约会提醒、日程计划和其他提醒六种类型。
日程信息的修改模块
该模块主要实现对个人日程信息的修改,包括提醒的名称、内容、提醒方式和提醒类型等内容。
日程信息的删除模块
该模块主要实现对个人日程信息的删除功能。
日程信息的过滤模块
该模块主要实现对个人日程信息的过滤功能。
1.2系统流程图
通过需求分析的一些介绍,已经大致了解该系统的主要作用,以及该系统展示方式、功能分类等等。
下面再来使用流程图描述各程序模块的作用,因为图形表示算法的思路是一种极好的方法,总得来说通过千言万语叙述不如一张流程图。
在个人日程提醒管理系统中,用户需要先通过系统的缓冲页面。
在页面中加载系统数据,加载完成后,进入到个人日程提醒的管理页面。
在管理界面中,通过界面工具栏中不同的按钮选项,来完成不同操作。
其流程如图12-1所示。
图12-1系统流程图
2系统的数据存储
在实现本系统过程中,不可避免的要生成或存储一些持久性数据,如日程信息和日程的类别信息等。
这些数据按传统方式一般是存储到数据库表中,而在本章中,会将所有的数据信息存储到XML文件中。
大家知道XML文件其首要目标实现了数据的存储,然后才是数据的无格式交换。
XML使用的是非专有的格式,不受版权、专利、商业秘密或是其他种类的知识产权的限制。
XML的功能是非常强大的,同时对于人类或是计算机程序来说,都容易阅读和编写。
因而成为交换语言的首选。
XML使用户不必因为数据已经用专有格式编写好了或是接受数据的人只接受专有格式而限制在一个特定的程序上。
使用XML文件存储数据不但可以存储各种类型数据,还可以利用数据的转化和交换。
在本系统中,只有两个XML数据文件,即个人日程提醒管理系统的类别文件和日程信息提醒文件。
1.类别文件(Class_Name.xml)
类别文件主要保存个人日程提醒管理系统中类别信息,包括普通提醒、生日聚会、重要提醒、约会提醒、日程计划和其中提醒等六个类别,详细信息如下所示。
xmlversion="1.0"encoding="gb2312"?
>
2.日程提醒信息文件(Not_Forget.xml)
该文件主要用来保存用户添加的日程提醒信息,主要包括日程提醒的编号、标题、提醒的内容、提醒类别、提醒时间和提醒的模式等信息。
详细信息如下:
xmlversion="1.0"encoding="GB2312"standalone="no"?
>
10:
23CST2011
09:
17CST2011
07:
00CST2011
50:
38CST2011
04:
00CST2011
3xml文件操作类
在个人日程提醒管理系统中,是以XML文件的形式代替数据库来存储系统的信息文件。
所以在对日程提醒管理系统进行操作时,与XML文件的交互会非常多,例如信息的添加、删除和更新等操作。
在本系统中,编写了四个Java文件以实现对xml文件的操作,包括XML操作类(xmlOperate.xml)、XML连接类(xmlConn.xml)、xml写入类(writexml.xml)和xml更新类(XmlUpdate.xml)。
3.1xml操作类
Dboperate类文件夹中,创建了xmlOperate.java类文件,用于实现对XML文件操作,如建立XML连接并初始化、获取XML数据、插入xml数据、删除xml数据和更新xml数据等功能。
代码内容如下:
packagedboperate;
/**
*该文件将所有的操作集合到一起.
*分别使用了,XmlUpdate.java,xmlConn.java,writexml.java
*/
importjavax.xml.parsers.*;
publicclassxmlOperate{
publicObject[][]mimoireData;
publicintMaxID;
publicintrowCount;
publicObject[][]tableData;
/**
*建立连接.初始化.
*@paramfileNameString
*@paramcolumnNumint
*/
publicxmlOperate(StringfileName,intcolumnNum){
xmlConnconn=newxmlConn(fileName,columnNum);
this.mimoireData=conn.getData();
this.MaxID=conn.getMaxID();
this.rowCount=conn.getRowCount();
this.tableData=conn.getAllList(this.mimoireData);
}
/**
*获取数据.
*/
publicObject[][]getMemoireData(){
returnthis.mimoireData;
}
publicintgetMaxID(){
returnthis.MaxID;
}
publicintgetRowCount(){
returnthis.rowCount;
}
publicObject[][]getTableData(){
returnthis.tableData;
}
/**
*插入xml将所有的数据与要插入的数据合并传给它.
*@paraminsertAllDataObject[][]
*@returnboolean
*/
publicbooleaninsertXml(Object[][]insertAllData){
try{
writexmlinsert=newwritexml();
insert.toWrite(insertAllData);
insert.toSave();
returntrue;
}catch(ParserConfigurationExceptionex){
returnfalse;
}
}
/**
*删除xml,将当前所有的数据给它,并告知要删除的行对应的id.
*@paramallDataObject[][]//所有数据.
*@paramidString,要删除的id.
*@returnboolean
*/
publicbooleandelXml(Object[][]allData,Stringid){
XmlUpdatedeldate=newXmlUpdate();
if(deldate.delData(allData,id)){
returntrue;
}else{
returnfalse;
}
}
/**
*更新xml数据,
*@paramreplaceDataObject[],要更新的数据.
*@paramallDataObject[][],所有的数据.
*@paramidString,要更新的数据对应的id.
*@returnboolean
*/
publicbooleanupdateXml(Object[]replaceData,Object[][]allData,Stringid){
XmlUpdateupdate=newXmlUpdate();
if(update.updateData(replaceData,allData,id)){
returntrue;
}else{
returnfalse;
}
}
publicstaticvoidmain(Stringargs[]){
xmlOperatexml=newxmlOperate("Not_Forget",9);
}
}
3.2xml连接类
在dboperate类文件夹下,创建了xmlConn文件,用于实现连接XML文件并实现数据的各种读取功能,如读取xml文档,以二维数组返回所有数据、取得最终显示在jtable中的数据、分类读取xml文档、返回xml文档中最大的id值和返回节点个数等功能。
代码如下所示:
packagedboperate;
importjava.io.*;
importjavax.xml.parsers.*;
importorg.w3c.dom.*;
importorg.xml.sax.*;
importjavax.xml.transform.*;
importjavax.xml.transform.dom.DOMSource;
importjavax.xml.transform.stream.StreamResult;
publicclassxmlConn{
privateDocumentBuilderFactorydomfac;
privateDocumentBuilderdombuilder;
publicDocumentdoc;
publicElementroot;
privateNodeListnotForget;
privateintnodeNumber;//当前共有多少节点.
privateintcolumnNum;
privateObject[][]data;
privateintrowCount;
/**
*构造函数:
*@paramfileNamexml文件名
*@paramcolumnNum文件字段的个数.
*/
publicxmlConn(StringfileName,intcolumnNum){
this.domfac=DocumentBuilderFactory.newInstance();
this.columnNum=columnNum;
try{
this.dombuilder=domfac.newDocumentBuilder();
InputStreamis=null;
//FileInputStream从文件系统中的某个文件中获取输入字节
if(fileName.equals("Not_Forget")){
is=newFileInputStream("data/Not_Forget.xml");
}elseif(fileName.equals("Class_Name")){
is=newFileInputStream("data/Class_Name.xml");
}
this.doc=dombuilder.parse(is);
this.root=doc.getDocumentElement();
this.notForget=root.getChildNodes();
this.nodeNumber=notForget.getLength();
}catch(ParserConfigurationExceptionex){
}catch(FileNotFoundExceptionex1){
}catch(IOExceptionex2){
}catch(SAXExceptionex2){
}
}
/**
*读取xml文档,以二维数组返回所有数据.
*/
publicObject[][]getData(){
introw=notForget.getLength();
intarryRow=(int)(row/2);//总记录条数.
this.rowCount=arryRow;
intarryColumn=this.columnNum;
intm=0,k=0;
//根据文件类型确定行数.
//定义object类型二维数组Data.
Object[][]Data=newObject[arryRow][arryColumn];
if(this.notForget!
=null){
for(inti=0;i NodenotForgetMemoire=notForget.item(i); for(Nodenode=notForgetMemoire.getFirstChild();node! =null; node=node.getNextSibling()){ if(node.getNodeType()==Node.ELEMENT_NODE){ Data[m][k]=node.getFirstChild().getNodeValue(); k++; if(k/arryColumn==1){ m++; k=0; } } } } } this.data=Data; returnData; } /** *取得最终显示在jtable中的数据. *@paramdataObject: xml中所有的数据. *@returnObject[][]: 数组返回. */ publicObject[][]getAllList(Objectdata){ Object[][]tableData=newObject[this.rowCount][5]; for(inti=0;i for(intj=0;j<5;j++){ tableData[i][j]=this.data[i][j]; } returntableData; } /** *分类读取xml文档. */ publicObject[][]getData(intclassID){ returnnull; } /** *返回xml文档中最大的id值. */ publicintgetMaxID(){ Object[][]arry=this.data; intMaxID=1; for(inta=0;a intthisId=Integer.parseInt(arry[a][0].toString()); if(thisId>MaxID){ MaxID=thisId; } } returnMaxID; } /** *返回节点个数. *@returnint */ publicintgetRowCount(){ returnthis.rowCount; } publicbooleanwritXml(Object[][]data){ try{ writexmlinsert=newwritexml(); insert.toWrite(data); insert.toSave(); returntrue; }catch(ParserConfigurationExceptionex){ returnfalse; } } publicstaticvoidmain(Stringargs[]){ xmlConnxml=newxmlConn("Not_Forget",9); xml.getData(); } } 3.3xml写入类 在dboperate类文件夹下,创建了writexml.java类文件,用于实现表格中写入数据的功能,例如,向Jtable中写入数据。 代码如下所示: packagedboperate; importorg.w3c.dom.*; importjavax.xml.parsers.*; importjavax.xml.transform.*; importjavax.xml.transform.dom.DOMSource; importjavax.xml.transform.stream.StreamResult; importjava.io.*; publicclasswritexml{ privateDocumentdocument; privateStringfilename; privateElementroot; publicwritexml()throwsParserConfigurationException{ filename="data/Not_Forget.xml"; DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance(); DocumentBuilderbuilder=factory.newDocumentBuilder(); docume
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- XML论文 个人日程提醒管理系统 XML 论文 个人 日程 提醒 管理 系统