Ⅰ 高分求一篇关于java在虚拟中的应用的论文,质料也行阿,急。求高手。
摘 要 该文介绍了如何运用WebWork、Sitemesh、Hibernate等JAVA开源技术来设计与实现电子商务实验模拟系统,给出了系统结构、功能及实现方案。
关键词 电子商务;实验模拟系统;Java;开源技术
1 引言
目前高校电子商务专业相关课程的教学迫切需要建立电子商务实验软件平台,该平台应实现包括B2C、C2C、B2B、电子数据交换(EDI)、现代物流应用系统、电子金融、安全电子交易身份认证等实施电子商务必不可少的软件功能模块。电子商务的高速发展对软件开发技术提出了强有力的挑战,由于电子商务的内部逻辑复杂,安全性要求苛刻,商务业务规则的变化较快,这就要求电子商务实验模拟系统的开发技术能够强大、灵活以适应电子商务实验教学的需求。
在电子商务系统的设计与开发中,迫切需要解决的问题有:易维护性、易扩充性、可测试性、可靠性、高性能和安全性。目前的N-tier软件体系结构较好的解决了上述问题。通常将系统分成表现层、商务逻辑层、持久存储层。
J2EE规范针对多层应用的设计、集成、性能、安全性和可靠性等诸多方面,为应用系统的开发提供了表现层、商务逻辑框架、持久化、事务、安全和日志服务等方面的技术规范。目前符合J2EE规范的开源项目如雨后春笋般涌现,其中不乏优秀的技术。利用现有的优秀开源技术可以大大降低应用系统的开发周期和开发成本,同时也能提高整个系统的灵活性。
2 本系统所使用的开源技术
对于现有较成熟的WEB应用框架而言,其解决的主要问题无外乎下面几部分:
1)将客户端的WEB页面请求中的输入数据封装为一个(请求)数据对象。
2)对WEB请求中的数据进行合法性验证。
3)根据不同的WEB页面请求,调度相应的商务逻辑对象进行处理,并将(请求)数据对象作为参数传入。
4)商务逻辑对象完成业务规则的处理后,返回一个结果数据对象。
5)通过表现层将结果数据对象中的数据展现给用户。
6)业务实体的持久存储。
WebWork2、Sitemesh、Hibernate、Junit、XDoclet、Ant等开源项目都是很成熟的开源项目。本系统的设计与实现通过综合利用以上开源技术,非常轻松地解决了上述问题。
WebWork是由OpenSymphony开源组织开发的,致力于组件化和代码重用的J2EE Web框架。WebWork由Xwork1和WebWork2共两个项目组成。
Xwork1简洁、灵活功能强大,它是一个标准的Command模式实现,并且完全从web层脱离出来。Xwork提供了很多核心功能:前端拦截器(interceptor),运行时表单属性验证,类型转换,强大的表达式语言等。拦截器(interceptor)就好像是一张过滤网,它用来对客户端的调用进行拦截,并对其进行一些处理,比如检查客户端调用的合法性、实现安全策略、对事务进行支持等。
WebWork2建立在Xwork之上,处理HTTP的响应和请求。WebWork2使用ServletDispatcher将HTTP请求的变成Action(由Action类调用商务逻辑对象完成业务处理),实现session及application范围的映射,以及request请求参数映射。每一个Action不依赖任何层和任何容器。他们通过ActionContext来使用request和response对象,实现了WEB层和逻辑层的分离。Webwork的Action能够通过赋予一定的属性值来运行,而不必启动web容器来进行测试,增强了WEB组件的可测试性。
WebWork2支持多视图表示,视图部分可以使用jsP、Velocity、FreeMarker、JasperReports、XML等。
Web应用开发中,我们常常面临如何保证输入数据合法性的头痛问题。实现输入数据校验的方法无外乎两种:页面Java Script 校验、服务器端执行逻辑代码之前进行数据校验。前者的系统安全性难以保证,通常作为输入数据校验的辅助技术。
WebWork使用Xwork的验证框架进行验证处理,它可以通过配置interceptor(拦截器)来激活。它可以为每个需要验证的Class指定一个xml验证文件,也可以为一个Class在不同的情况下指定不同的xml验证文件。WebWork可以给每个Action类指定对应的验证文件,也可以给Action类的属性字段指定验证文件。最终通过拦截器来组装Action和其验证文件,使得逻辑层不需要考虑额外的数据验证,简化了业务处理逻辑。
Sitemesh也是opensymphony开源组织开发的j2ee应用框架之一,它主要用来对Web页面进行布局管理,并且致力于为很多页面组成的大型网站提供统一的风格、导航和布局功能。SiteMesh通过filter截取request和response,并给原始的页面加入一定的装饰(Decorator),然后把结果返回给客户端,并且被装饰的原始页面并不知道SiteMesh的装饰,避免了因页面之间互相包含造成的页面间的耦合。
本系统采用面向对象的设计与实现,而系统使用关系型数据库管理数据,因为系统中的持久对象需要借助关系型数据库存储,从而带来了对象和关系的映射问题。很难做到把关系表记录完整的映射到持久对象的关系上来,这主要体现在多表的关系映射类型多样,关联的数据表个数难以确定,可能是一个表映射多个持久对象,有可能是多个表映射一个持久对象,更有可能的是表的某些字段映射到一个持久对象,但是另外一些字段映射到别的持久对象上。对象如果使用直接的数据库操作来存取成员以实现持久对象编程的话,对存在1:N关系的持久对象的查询其实就是1+n次对数据库的SQL,势必引起数据库存取效率的大幅下降。
Hibernate则是持久层设计的最佳技术,它优雅地解决了上述各种对象和关系的映射问题。它是开源和免费的, API开放,当其本身功能不够用的时候,可以自己编码进行扩展。
Junit用于类模块的单元测试。XDoclet、Ant是支持项目自动重建和文档自动生成的优秀开源工具,它们可以大幅提高程序员的工作效率和工作质量。
3 系统总体设计
本系统的主要目标是实现模拟电子商务系统以便提供师生进行相关实验的软件平台。重点在于模拟电子商务环境中的交易与管理各方的业务流程,同时便于交易各方根据需要制定相应的业务规则,因此系统的设计应能适应商务规则的变化,对部分功能的实现没有必要真实的再现,比如安全认证子系统中认证中心的安全认证服务的实现。另外,本系统还应加强实验过程管理的功能设计,以便师生快速掌握实验的过程和进度,能够对实验的成绩进行自动处理并提供相关查询。
在一次实验中,学生通常在多个虚拟企业中扮演多种不同的业务角色,系统应提供快速的角色转换功能,从而便于学生了解不同业务流程相关操作之间的关系及相互影响。
基于以上目标,系统共分两大子系统:商务系统、实验系统。
商务系统共分五个二级子系统:电子银行系统、认证系统、交易系统、企业业务管理系统、物流系统。实验系统分为学生自助、实验管理二个子系统分别供学生、教师使用。
在每个子系统中,根据不同的操作人员角色划分子模块,例如“交易系统”(系统结构如图1),分成“交易大厅”、“会员企业后台管理”、“交易中心后台管理”三个子系统,在会员企业后台管理中,能够根据当前学生所承担的业务角色列出其涉及的多个企业供其选择。整个系统采用单点登录验证,从而减少学生在使用各模块功能时的登录操作,避免了当前一些较流行的实验模拟系统需要学生记忆多个密码,同一次实验中需要多次重复登录的问题,让学生更加关注业务流程,提高实验效率。
图1 交易系统结构图
实验系统分成学生自助、实验管理两个子系统。学生通过学生自助子系统可以查询教师布置的实验任务,已做实验的成绩,实验操作步骤的主要错误,从而了解不足之处及时加以改进。教师通过实验管理模块可以布置实验任务,查询学生实验进程和实验成绩,了解学生实验过程中普遍存在的问题以便及时加以指导。
系统的分析与设计采用面向对象的UML建模语言进行。在充分的系统需求分析后,通过UML的用例图和顺序图对系统的概念模型进行了描述,然后进行较详细的设计,描绘出系统的类图及类关系图,并建立了初步的数据模型。通过使用Borland公司的Together建模工具,我们实现了系统模型与源码、数据库的双向自动转换。
为了适应本系统开发的工程化需要,将开发人员分为如下几类:a、系统分析员;b、后台组件开发程序员(主要是Action类与业务逻辑类);c、后台组件测试人员;d、前台用户界面程序员(主要是JSP程序员+美工);e、前台测试技术人员。通过Sitemesh和WebWork的结合,实现了各模块的用户界面与后台组件的独立开发与测试,有利于人员分工,大大降低了开发人员用于信息交流的时间,提高了系统开发的效率。
4 系统实现
4.1、运行环境
为适应高校计算机系统软件环境的多样性,本系统可运行于任一种符合J2EE规范的WEB容器,大多数流行的关系型数据库。本系统开发时选择了开源项目Tomcat及Mysql。
4.2 WEB应用的配置
限于篇幅,仅列出部分关键配置信息。基于J2EE规范,本系统的目录规划如下(表1):
父目录 子目录 描述
/ src Java类源代码
/ lib 系统需要的第三方类库文件
/ docs 系统开发文档
/ ROOT WEB应用根目录
/ROOT WEB-INF WEB应用配置目录
/ROOT/
WEB-INF classes Java类字节码文件目录
/ROOT _decorators sitemesh装饰器页面
表1 系统目录结构
在/ROOT/WEB-INF中,存放web.xml、sitemesh.xml、decorators.xml等配置文件。
WEB视图层的配置:
本系统设计了多个装饰页面,下面列出主装饰页面在/WEB-INF/decorators.xml中的配置信息:
<decorators defaultdir="/_decorators">
<decorator name="main" page="main.jsp">
<pattern>*</pattern>
</decorator>
</decorators>
在主装饰页面main.jsp中进行页面的布局,形成较为流行的“上-左中右-下”的页面结构,上部显示系统标识及首页链接、各主要子系统链接,下部显示版权申明及联系方式,左部及右部显示常用模块,中部为当前页面的主功能操作区。其JSP页面主体部分列出如下:
<table width="100%" align="center">
<tr><td width="134" valign="top">
<page:applyDecorator name="simple"
page="/sitemesh/left.jsp"/></td></tr>
<tr><td width="488" valign="top">
<page:applyDecorator name="simple"
page="/sitemesh/middle_top.jsp"/><br>
<decorator:body /><br>
<page:applyDecorator name="simple"
page="/sitemesh/middle_bottom.jsp"/></td></tr>
<tr><td width="122" valign="top">
<page:applyDecorator name="simple"
page="/sitemesh/right.jsp"/></td></tr>
</table>
持久层Hibernate的配置:
首先通过classes/hibernate.cfg.xml文件配置Hibernate的数据库连接信息。然后在每个需要持久化的类二进制文件的所在目录中建立与类同名的.hbm.xml文件配置该类属性与数据表中字段的对应关系以及类之间的映射关系。以下是Customer.hbm.xml的内容。
<hibernate-mapping package="com.un.eclab">
<class name="Customer" table="CUSTOMER">
<id name="id" column="CID">
<generator class="increment" /></id>
<property name="strUserName" column="username" />
<property name="strPassword" column="password" />
</class>
</hibernate-mapping>
在需要将Customer对象持久化时,使用如下代码:
SessionFactory sf =
new Configuration().configure().buildSessionFactory();
Session session = sf.openSession();
Transaction tx = session.beginTransaction();
Customer customer = new Customer();
customer.setUsername("customername");
customer.setPassword("customerpassword");
session.save(customer);
tx.commit();
session.close();
4.3业务逻辑层的实现
以交易系统为例,该子系统实现的主要类列出如下(表2):
类名 主要功能
IProct 产品类接口,规范产品类的主要操作,适应不同企业对产品类的要求。
Proct 产品类,实现了Iproct接口。各企业可继承该类,实现对各自产品的管理
EccCart 交易中心购物车类,可管理多种交易类型。
EccCartItem 购物车子项类
EccOrder 订单类
EnpOptions 企业选项类,管理业务规则
表2 交易系统主要类列表
通过以上类的协作实现了交易系统的主要业务逻辑。
5 结束语
总体上看,采用开源技术设计电子商务实验模拟系统具有开发周期短、系统灵活性高、易于开发及维护等优点,较大程度上降低了系统开发的复杂程度和开发费用,可适应多变的用户需求,具备广阔的应用前景。
Ⅱ java学生信息管理 课设或论文
java学生信息管理
摘要
随着计算机技术日渐成熟,它已经进入人类社会的各个领域并发挥着越来越重要的作用。而在我们的生活周边,也越来越能够感受到计算机技术给我们带来的巨大冲击和快捷。作为计算机应用的一部分,学校使用计算机对学校的学生的信息进行管理,与手工管理相比拥有其无可比拟的优势。例如:检索快速、查找方便、可靠性高、存储量大、保密性好、信息保存时间长等。这些优点能够极大地提高学校学生信息管理的效率,也是学校管理科学化、正规化的重要条件和标志。
学生管理系统采用现在流行的JAVA编程语言来进行开发的。在系统界面开发中采用流行的JAVA API之一JAVA SWING来对系统的界面进行设计,布局以及开发。系统界面图形化,操作简单明了,容易上手。在数据处理方面,此系统采用JAVABEAN来封装对数据的操作,提高了安全性。同时,系统采用SQL SERVER 2000数据库系统来支持该系统的数据操作,能够更加有效地、方便地处理系统的数据。
系统的实现是多种技术的结合,图形化的操作界面使系统设计更具人性化,适合各类管理层用户使用。
关键字:学生管理系统;JAVA;JAVA SWING;JAVABEAN;图形化操作;数据处理;SQL SERVER 2000
第一章 概述
1.1系统的特点与开发的预期目标
1.1.1系统的开发背景
学生管理系统是一个学校不可或缺的一部分,它的存在无论是对学校管理者还是学生来说都是至关重要的,所以学生管理系统应该能够为管理者提供充足的信息和快捷的查询手段。然而长期以来,学校基本上都是使用传统人工的方式来管理学生课程信息。而这种传统的管理方式随着科学技术的发展也渐渐的显现出效率低下、保密性差的弊端。另外,随着时间的不断增长将会产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
随着技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对人事劳资信息进行管理,具有着手工管理所无法比拟的优点,例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高人事劳资管理的效率,也是科学化、正规化管理与世界接轨的重要条件。
因此,开发这样一套管理软件成为每个学校很有必要的事情
1.2系统的特点与开发的预期目标
在系统管理模块中,此模块提供了退出系统的功能
在学生管理模块中,此模块提供了增加学生信息,修改学生信息和删除学生信息等基本功能,除此之外,还具备学生选课功能
在课程管理模块中,此模块提供了管理员可以对课程的基本信息进行增加、修改以及删除等基本功能
在成绩管理模块中,此模块中具备对进行了选课的学生所选择的的课程的成绩进行增加和修改的功能
在信息查询模块中,此模块包含三个方面的查询功能,即学生查询、课程查询、成绩查询。其中,在学生查询模块中,可以按照学号、姓名、性别、学院、专业等条件来进行查询;在课程查询模块中则可以按照课程名和授课老师等条件来对所需的信息进行查询;在成绩查询模块中则可以查询出学生所有科目的成绩
1.3可行性研究
通过调查分析,建立新的学生信息管理信息系统有其充分的必要性和可能性。可以建立该信息系统的可能性具体包含了它具有经济可行性、技术可行性和社会可行性,新系统能达到以最小的开发成本取得最佳的经济效益,开发中所需人员、硬软件支持以及其它费用进行估算情况均满意,技术条件也能保证顺利完成开发工作。
1.3.1 经济性
通过网络化的学生信息管理,大大的提高了工作效率和人才的利用率,使之创造了更大价值;减少了工作人员,同时减少了学校开支;人才利用率的提高,适应了信息时代的网络化管理要求。
1.3.2技术可行性
本系统是采用目前比较流行的JAVA语言,用Microsoft Access 2000数据库完成。由于JAVA的与平台无关性,所以在任何有JAVA运行环境的计算机上都可以运行。
1.3.3操作可行性
对于用户来说,本系统只要求使用者掌握一般的上网经验,经过仔细设计和测试之后的系统具有操作简单,方便灵活等优点,足可以满足用户的不同需求,同时也方便了学校的内部管理。用户一定会在短时间内掌握并熟练使用。只要动一动鼠标键盘就可以达到想要的效果。1.4开发工具
1.4.1开发工具介绍
由于的ECLIPSE3.2具有操作界面方便,简单,美观的特点;并且在编码过程中如果出现语法错误,标点错误等都会有相应的提示,可以很快地发现错误,因此本系统的开发选用ECLIPSE3.2作为开发工具。
1.4.2相关技术介绍
本系统采用面向对象的软件开发办法,以Sun公司的Java语言作为主要开发语言,使用SQL 2000作为关系数据库,配合功能强大的SQL查询语言实现建立关系数据库,访问数据库,对数据库的更新,较好地实现了预定的需求功能。
(1) JAVA简介
Java是一种简单的,面象对象的,分布式的,解释的,键壮的安全的,结构的中立的,可移植的,性能很优异的多线程的,动态的语言。
Java提供了一个功能强大语言的所有功能,但几乎没有一点含混特征。C++安全性不好,但C和C++被大家接受,所以Java设计成C++形式,让大家很容易学习。
Java去掉了C++语言的许多功能,如:指针运算、结构、typedefs、#define、需要释放内存,让Java的语言功能很精炼,并增加了一些很有用的功能,如自动收集碎片。这将减少了平常出错的50%。而且,Java很小,整个解释器只需215K的RAM。
当今Internet的一大发展趋势是电子商务,而Internet的安全问题是必须解决的问题,通常大的部门应设置防火墙,阻止非法侵入。而Java以其强安全性、平台无关性、硬件结构无关性、语言简洁同时面向对象,在网络编程语言中占据无可比拟的优势,成为实现电子商务系统的首选语言。
(2) Sql 2000简介
SQL Server是由Microsoft开发和推广的关系数据库管理系统(DBMS)。特点如下:
1.真正的客户机/服务器体系结构。
2.图形化用户界面,使系统管理和数据库管理更加直观、简单。
3.丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地。
4.SQL Server与Windows NT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等。SQL Server也可以很好地与Microsoft BackOffice产品集成。
5.具有很好的伸缩性,可跨越从运行Windows 95/98的膝上型电脑到运行Windows 2000的大型多处理器等多种平台使用。
6.对Web技术的支持,使用户能够很容易地将数据库中的数据发布到Web页面上。
7.SQL Server提供数据仓库功能,这个功能只在Oracle和其他更昂贵的DBMS中才有。
1.5运行环境
运行服务器:JDK1.5版本或更高
数据库支持:SQL SERVER2000
操作系统:WINDOWS系列,LINUX系列或UNIX系列
硬件要求:内存最低为256MB,硬盘空间至少20G
1.6开发环境
开发语言:JAVA
编译程序:JDK1.5
开发工具:ECLIPSE3.2
数据库:SQL SERVER2000
操作系统:WINDOWS XP
Ⅲ java图书馆管理系统论文
1 引言
1.1 编写目的
编写本文档的目的是根据系统分析工程师和客户沟通的结果,对用户需求进行了全面细致的分析,深入描述《图书管理系统》软件的功能和性能与界面,确定该软件设计的限制和定义软件的其他有效性需求。
该需求规格说明书的读者对象是XXX图书管理系统软件小组的研发工程师、测试工程师、销售工程师,版权归XXX所有,严禁外传。
1.2 项目背景
随着社会信息量的与日俱增,作为信息存储的主要媒体之一图书,数量、规模比以往任何时候都大的多,不论个人还是图书管理部门都需要使用方便而有效的方式来管理自己的书籍。在计算机日益普及的今天,对个人而言若采用一套行之有效的图书管理系统来管理自己的书籍,会方便许多。对图书管理部门而言,以前单一的手工检索已不能满足人们的要求,为了便于图书资料的管理需要有效的图书管理软件。
图书管理系统软件LMS V1.0是一套功能比较完善的数据管理软件,具有数据操作方便高效迅速等优点。该软件采用功能强大的数据库软件开发工具进行开发,具有很好的可移植性,可在应用范围较广的DOS、WINDOWS系列等操作系统上使用。除此以外,LMS V1.0可通过访问权限控制以及数据备份功能,确保数据的安全性。
1.3 定义
文档中采用的专门术语的定义及缩略词简要如下:
LMS:Library Management System,图书管理系统。
1.4 参考资料
[1]郑人杰,殷人昆,陶永雷。《实用软件工程》(第二版)。北京:清华大学出版社,1997。
[2]金勇华,曲俊生。《JAVA网络高级编程》。北京:人民邮电出版社,2001。
[3]Borland Software Corporation。《JBUILDER培训教程》北京:机械工业出版社,
2002。
2 任务概述
2.1 目标
《图书管理系统》针对的用户是单个中小型图书室或者个人,藏书的种类和数量较少,读者的数量和来源受到一定的限制。相应的需求有:
1.能够存储一定数量的图书信息,并方便有效的进行相应的书籍数据操作和管理,这主要包括:
1) 图书信息的录入、删除及修改。
2) 图书信息的多关键字检索查询。
3) 图书的出借、返还和资料统计。
2.能够对一定数量的读者进行相应的信息存储与管理,这其中包括:
1) 读者信息的登记、删除及修改。
2) 读者资料的统计与查询。
3.能够对需要的统计结果提供列表显示输出。
4.能够提供一定的安全机制,提供数据信息授权访问,防止随意删改,同时提供信息备份的服务。
2.2 运行环境
。。。
2.3 条件与限制
一个更为完善的图书管理系统,应提供更为便捷与强大的信息查询功能,如相应的网络操作及服务,由于开发时间和计算机数量有限,该系统并未提供这一功能。对信息的保护手段仅限于设置用户级别,以及提供数据文件的备份,比较简单,不能防止恶意的破坏,安全性能有待进一步完善。
3 功能需求
3.1 功能划分
该软件具有如下主要功能:
1. 浏览功能;
2. 查询功能;
3. 插入功能;
4. 修改功能;
5. 删除功能;
6. 授权功能;
3.2 功能描述
1. 浏览功能
列出当前数据库文件中书籍和读者的所有记录;
可选定一项记录,显示所有域;
2. 查询功能
书目匹配查询;
读者匹配查询;
书目和读者相关匹配查询;
3. 插入功能
增加一个书目记录;
增加一个读者记录
4. 修改功能
修改某一已存在的记录内容,提供确认机制;
5. 删除功能
删除一个记录,提供确认机制;
6. 授权功能;
授权读者访问数据的权限;
4 数据描述
4.1 静态数据
图书管理系统的静态数据包括:
图书(book): 图书编号(BookID);
图书书名(BookName);
图书作者(Author);
图书出版社(Publisher);
图书单价(BookPrice);
图书摘要(Abstract);
图书分类(Class);
图书状态(BookStatus);
读者(reader): 读者识别号(ReaderID);
读者姓名(Name);
读者权限(Level);
读者联系方法(Address);
读者电话号码(TelephoneNumber);
读者电子邮件(Email);
图书访问记录(recorder): 借阅图书号(bookID);
借阅者证号(ReaderID);
借书日期(OutDate);
系统设置表(configuration): 记录号(id);
最多可借图书数(MaxBLNum);
最多借书天数(MaxBLDays);
系统操作员记录表(administer): 记录序号(WorkerId);
账号(Account);
口令(Password);
权限级别(Level);
4.2 数据库描述
数据库采用Microsoft Access数据库。
4.3 数据流图
《图书管理系统》的总体功能如下:
图书的出借;
图书的返回;
图书信息查询;
图书的增删改;
读者的增删改;
图书管理者查询统计图书和读者信息;
图书管理系统数据备份;
图书管理系统数据恢复;
图书管理者口令修改;
1. 读者借书过程:
2. 读者还书过程:
3. 读者查询浏览过程:
4. 图书管理员增删改图书:
5. 图书管理员增删改读者:
6. 图书管理员查询浏览过程:
7. 图书管理系统数据备份:
8. 图书管理系统数据恢复:
9. 图书管理者口令修改:
4.4 数据采集
数据采集采用键盘输入。
5 性能需求
5.1 数据精确度
查询时应保证查全率,所有在相应域中包含查询关键字的记录都应能查到,同时保证查准率。
5.2 时间特性
一般操作的响应时间应在1-2秒内。
5.3 适应性
满足运行环境在允许操作系统之间的安全转换和与其它应用软件的独立运行要求。
6 运行需求
6.1 故障处理
正常使用时不应出错,对于用户的输入错误应给出适当的改正提示。若运行时遇到不可恢复的系统错误,也必须保证数据库完好无损。
Ⅳ 求一个关于JAVA的论文
目 录
一、概要设计……………………………………………………………3
二、程序整体设计说明…………………………………………….…..4
三、程序部分源代码及注释…………………………………………….9
四、测试结果………………………………………………………….24
五、设计心得…………………………………………………………25
六、致 谢…………………………………………………………25
七、参考文献…………………………………………………………25
【摘 要】该程序是一个图形界面的java文档编辑器,其界面主要采用了awt包, 程序实现了文本编辑器的基本功能有:新建文件、打开文件、文件保存、文件另存为、剪切、复制、粘贴、删除、查找/替换、改变字体大小,另外还利用Time类的schele方法实现了文件的定时自动更新功能,并创建备份文件,由于该编辑器是用的awt包,所以在技术上没有实现将Java的关键字以不同颜色显示功能。
【关键字】java 编辑器
一、概要设计
Java程序编辑器是:图形界面、线程、流与文件等技术的综合应用。
图形界面的实现:考虑到简单、实用、高效等特点,就选择了AWT来完成实现,在选择组件上,文本编辑区就选用了TaxtArea作为主要的部件。
线程实现文件自动保存:在相关的参考书上查阅到在Time类中有一个schele方法可以在后台自动完成一定的功能,而且调用起来相当简单,于是就用了Time类中的schele方法来实现文件自动保存及备份功能。
文件操作的实现:利用了字符文件流FileReader和FileWriter类来实现。
由于Java的特性,可能用任何一个编辑器来编辑,于是就将Windows中的记事本作为模仿对象,根据实现情况删减了其中的一些功能,如自动换行,设置字体,打印等功能。
在设计类的时候,考虑到简单明了,就用了两个类,一个主类和一个默认属性类作为程序的整体框架,所有的对象和方法都是在默认属性类中创建和实现的,以及为各组件注册事件监听程序也是在默认属性类中实现的。主类完成对象的实例化及显示。这们设计的优点是:条理清晰,容易理解,容易修改。这样设计的缺点是:不利于共享类中的方法。
二、程序整体设计说明
2.1、程序框架图
2.2、程序中所用类说明
(1)用户自定义类
类名:EditInstantiation
作用:实例化对象
继承的父类:WindowAdapter
主要成员变量:
Frame myFrm // 定义主窗体
TextArea myText // 定义文本编辑区
Dialog myDlgFind,myDlgFindont //查找及设置字体对话框
TextField TFfind, TFreplace, TffontSize
//查找对话框和字体窗体中的文本行
Button BfontOK, Bfind, Breplace, Bnext, Bcancel //定义和创建各按钮
Label Lf, Lr, Ls //定义和创建各标签
MenuBar Mbbar //定义和创建主菜单
Menu Mfile,Medit,Mformation,Mhelp //定义和创建主菜单中的选项
Toolkit toolKit
Clipboard myCB //剪切板对象
FileDialog myFDlg //定义文件对话框
Choice ChfontName //定义和创建字体选择框
private int VIindex = 1; //构成文件名后缀变量
private String VSsubFixStr=".java"; //构成文件名扩展名变量
private String VSmyFileName = "Document1",VSmyBFileName;
//文件名及备份文件名变量
private File VFmyFile=new File(VSmyFileName+VIindex+".java");
//文件名变量
private int VIsearchPosition=0; //查找位置指针
private Timer VTtime; //实例化一个Time类
private int VImin=1; // schele方法中的一个时间参数
private int VItype=JOptionPane.INFORMATION_MESSAGE;
//提示对话框类型
private String VStitle; //提示对话框标题
private String VSmessage; //提示对话框信息
private boolean VBchanged = true; //改变字体的一个标识
private int VIfontSizeMin = 8, VIfontSizeMax = 40, VIfontSizeChangedStep = 2; //设置字体大小及步长
主要成员方法:
public void init() //初始化各部件菜单的定义和事件的监听
public void displayEdit ()//显示窗体及调用Time中的schele方法
public void windowClosing () //关闭窗体
public void save //保存文件方法
a.内部类类名:KeyEvents
作用:实现菜单的事件的响应功能
继承的父类:KeyAdapter
主要成员变量:无
成员方法:actionPerformed()、keyPressed()
b.内部类类名:FindKeyEvent
作用:实现查找中各部件事件的响应功能
继承的父类:无
主要成员变量:无
成员方法:actionPerformed ()
c.内部类类名:fontEvent
作用:实现字体中各部件事件的响应功能
继承的父类:无
主要成员变量:无
成员方法:ItemListener(),ActionListener()
(2)用户自定义类与Java类的继承关系图如下:
自定义类 Java 类
线程使用说明
2.3、实现接口方法
本程序用到的方法有:schele其方法描述如下:
schele(事件,启动时间,间隔时间);
2.4、线程应用
本程序为文本编辑器,为实现自动更新,应用到了线程,每隔1分钟对文件进行自动更新
2.5、异常处理说明
(1)打开文件时的异常处理
需要处理的异常:IOException
处理方法:捕获异常后,显示捕获的异常
(2)保存文件时的异常处理
需要处理的异常:IOException
处理方法:捕获异常后,显示捕获的异常
2.6、程序运行效果及存在的问题
(1)程序运行主要界面如下:
a、主界面
b、打开文件对话框
c、保存文件对话框
d、另存为文件对话框
e、查找/替换对话框
f.字体对话框
2.7.程序尚还存在的问题
我花费了近一个多星期的时间,查阅了许多相关的资料,终于把这个Java编辑器,程序基本实现了该课程设计的基本要求。但由于自己水平有限,使得程序还有不是很完善,首先,最重要的一点是该设计的最重要的功能自动改变java关键字的颜色没有实现。
三、程序部分源代码及注释
//****************************************************
// class name :Edit
// implements :none
// extends :none
// attribute :public
// founction :entrance of the class
//*****************************************************
public class Edit{ //主类
public static void main(String args[]){
EditInstantiation myEdit= new EditInstantiation();
myEdit.init(); //初始化
myEdit.displayEdit(); //显示窗体
}
//****************************************************
// class name :EditInstantiation
// implements :none
// extends :WindowAdapter
// attribute :default
// founction :EditInstantiation of the main class
//*****************************************************
class EditInstantiation extends WindowAdapter{ //默认属性类
//define sources 定义各部件
Frame myFrm=new Frame("我的编辑器"); //定义窗体
TextArea myText=new TextArea(); //定义窗体
Dialog myDlgFind=new Dialog(myFrm,"查找",true); //定义查找对话框
Dialog myDlgFindont=new Dialog(myFrm,"字体",true); //定义字体对话框
TextField TFfind=new TextField(30);//定义查找对话中的查找输入框
TextField TFreplace=new TextField(30); //定义查找对话中的替换输入框
TextField TFfontSize,TFfontDemo;//定义字体大小文本框和示例框
Choice CHfontName;//定义字体大小选择框
List LTfontSize; //定义字体大小标签
Button BfontOK,BfontCancel; //定义字体大小对话中的确定及取消按钮
Button Bfind=new Button("查找");//定义查找对话中的查找按钮
Button Breplace=new Button("替换");//定义查找对话中的替换及取消按钮
Button Bnext=new Button("下一个");//定义查找对话中的下一个及取消按钮
Button Bcancel=new Button("取消");//定义查找对话中的确定及取消按钮
Label Lf=new Label("查找内容:");
Label Lr=new Label("替换为: ");
Label Ls=new Label("字体大小:");
FileDialog myFDlg;
Clipboard myCB=Toolkit.getDefaultToolkit().getSystemClipboard(); //剪切板对象
Menu Mfile,Medit,Mformation,Mhelp;
MenuBar MBbar;
//define varities //定义各变量
private int VIindex = 1;
private String VSsubFixStr=".java";
private String VSmyFileName = "Document1",VSmyBFileName;
private File VFmyFile=new File(VSmyFileName+VIindex+".java");
private int VIsearchPosition=0;
private Timer VTtime;
private int VImin=1; // parameter in time schel
private int VItype=JOptionPane.INFORMATION_MESSAGE;
private String VStitle;
private String VSmessage;
// flag of the changeing
private boolean VBchanged = true;
// the scope of the font
private int VIfontSizeMin = 8, VIfontSizeMax = 40, VIfontSizeChangedStep = 2;
//************************************************
//founction name:init()
//parameter :none
//attribute :public
//founction :initia all compont
//************************************************
public void init(){ //初始化各部件
//------------------ set menu ------------------
MBbar=new MenuBar();
myFrm.setMenuBar(MBbar);
Mfile=new Menu("文件");
Medit=new Menu("编辑");
Mformation=new Menu("格式");
Mhelp=new Menu("帮助");
MBbar.add(Mfile);
MBbar.add(Medit);
MBbar.add(Mformation);
MBbar.add(Mhelp);
//文件菜单 add File menu
Mfile.add(new MenuItem("新建",new MenuShortcut(KeyEvent.VK_N)));
Mfile.add(new MenuItem("打开",new MenuShortcut(KeyEvent.VK_O)));
Mfile.add(new MenuItem("保存",new MenuShortcut(KeyEvent.VK_S)));
Mfile.add(new MenuItem("另存为"));
Mfile.addSeparator();//分隔线
Mfile.add(new MenuItem("退出",new MenuShortcut(KeyEvent.VK_E)));
//编辑菜单 add Edit menu
Medit.add(new MenuItem("剪切"));//,new MenuShortcut(KeyEvent.VK_X)));
Medit.add(new MenuItem("复制"));//new MenuShortcut(KeyEvent.VK_C)));
Medit.add(new MenuItem("粘贴"));//new MenuShortcut(KeyEvent.VK_V)));
Medit.add(new MenuItem("删除"));//new MenuShortcut(KeyEvent.VK_D)));
Medit.addSeparator();//分隔线
Medit.add(new MenuItem("查找/替换",new MenuShortcut(KeyEvent.VK_F)));
Medit.addSeparator();//分隔线
Medit.add(new MenuItem("全选",new MenuShortcut(KeyEvent.VK_A)));
//格式菜单 add Formation menu
Mformation.add(new MenuItem("字体",new MenuShortcut(KeyEvent.VK_U)));
//帮助菜单 add Formation menu
Mhelp.add(new MenuItem("关于作者"));
//----------------- menu add end -------------------------
//add Menu Action Listener
Mfile.addActionListener(new KeyEvents());
Medit.addActionListener(new KeyEvents());
Mformation.addActionListener(new KeyEvents());
Mhelp.addActionListener(new FindKeyEvent());
//--------------------------- Find dialog-----------------
myDlgFind.setSize(350,115);
myDlgFind.setLocation(250,150);
myDlgFind.setLayout(new FlowLayout(FlowLayout.CENTER));
myDlgFind.setBackground(Color.LIGHT_GRAY);
Bfind.setEnabled(false);
Breplace.setEnabled(false);
Bnext.setEnabled(false);
myDlgFind.add(Lf);
myDlgFind.add(TFfind);
myDlgFind.add(Lr);
myDlgFind.add(TFreplace);
myDlgFind.add(Bfind);
myDlgFind.add(Breplace);
myDlgFind.add(Bnext);
myDlgFind.add(Bcancel);
myDlgFind.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
myDlgFind.setVisible(false);
}});//为查找对话框窗体注册事件监听
TFfind.addKeyListener(new KeyEvents());//注册事件监听
Bfind.addActionListener(new FindKeyEvent());
Breplace.addActionListener(new FindKeyEvent());
Bcancel.addActionListener(new FindKeyEvent());
Bnext.addActionListener(new FindKeyEvent());
//--------------- end add action listener ------------
//================set font dialog ==============
//font size text field
TFfontSize = new TextField("8",14);
TFfontSize.selectAll();
//font size list field
LTfontSize = new java.awt.List(5, false);
LTfontSize.addItemListener(new fontEvent());
for(int i = VIfontSizeMin; i <= VIfontSizeMax; i = i + VIfontSizeChangedStep)
LTfontSize.add(i + "");//添加字体大小
LTfontSize.select(0);
//two Button Ok Cancel
BfontOK = new Button("确定");
BfontOK.addActionListener(new fontEvent());
BfontCancel = new Button("取消");
BfontCancel.addActionListener(new fontEvent());
//a TextField for demo the font
TFfontDemo = new TextField("Java awt",37);
TFfontDemo.setEditable(false);
// my font dialog设置字体对话框
myDlgFindont.setLayout(new FlowLayout(FlowLayout.LEFT));
myDlgFindont.setBackground(Color.LIGHT_GRAY);
myDlgFindont.add(Ls);
myDlgFindont.add(TFfontSize);
myDlgFindont.add(BfontOK);
myDlgFindont.add(BfontCancel);
myDlgFindont.add(LTfontSize);
myDlgFindont.add(TFfontDemo);
myDlgFindont.setSize(300,200);
myDlgFindont.setLocation(300,200);
myDlgFindont.setResizable(false);
myDlgFindont.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
myDlgFindont.show(false);
}
}); //为字体对话框窗体注册事件监听
//=============end set font dialog
// =======set Edit frame设置编辑器窗休
myFrm.add(myText,BorderLayout.CENTER);
myFrm.setSize(500,400);
myFrm.setBackground(Color.lightGray);
myFrm.addWindowListener(this);
myFrm.setSize(500,400);
myFrm.setLocation(200,100);
myFrm.setTitle("Java编辑器");
}
//************************************************
//founction name:displayEdit()
//parameter :none
//attribute :public
//founction :initial and display the frame
//************************************************
public void displayEdit(){ //显示窗体
myFrm.setVisible(true);
//---------------------- auto save ---------------------
VTtime = new Timer(true);
VTtime.schele(new java.util.TimerTask(){
public void run(){
if(VSmyFileName!=null){
save(VSmyFileName+".java");
VSmyBFileName=VSmyFileName+".bak";
} //添加自动保存功能
save(VSmyBFileName);
}
}, VImin*60*1000,VImin*60*1000);
//parament 1 the task
//parament 2 when to start the task
//parament 3 set the interval time }
//****************************************************
// class name :KeyEvents
// implements :ActionListener
// extends :KeyAdapter
// attribute :default
// founction :implement the mouse and key action
//*****************************************************
class KeyEvents extends KeyAdapter implements ActionListener{
//********************************************************
//founction name:actionPerformed()
//parameter :none
//attribute :public
//return :void
//founction :realize the key action in the menu
//*********************************************************
public void actionPerformed(ActionEvent e){
//完成菜单事件的功能
// File Menu
if (e.getActionCommand()=="新建"){
//remind you
JFrame aFrame=new JFrame();
aFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JOptionPane optionPane=new JOptionPane();
String choices[]={"是","否","取消"};
int n=optionPane.showOptionDialog(aFrame,"文件正文已更改,是否保存更改","文本编辑器",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE,null,choices,choices[0]);
//保存文件后新建
if(n==0){//若文件存在,保存在原文件中,再新建文件
try{
if(VFmyFile.exists()){
save(VSmyFileName); // call the save founction
myText.setText("");
VIindex++;
}
else{//若文件不存在,则保存后再新建
myFDlg=new FileDialog(myFrm,"保存文件",FileDialog.SAVE);
myFDlg.setFile(VSmyFileName);
myFDlg.show();
VSmyFileName=myFDlg.getDirectory()+myFDlg.getFile();
save(VSmyFileName);
myText.setText("");
VIindex++;
}
}
catch(Exception ne){}
}
//不保存文件新建
if(n==1){
myText.setText("");
VIindex++;
}
//取消新建
if(n==0){return;}
}
//打开菜单 Open Menu
if (e.getActionCommand()=="打开") {
myFDlg=new FileDialog(myFrm,"打开",FileDialog.LOAD);
myFDlg.show();
if (myFDlg.getFile()!="") {
VFmyFile=new File(myFDlg.getDirectory()+myFDlg.getFile());
VSmyFileName=myFDlg.getDirectory()+myFDlg.getFile();
if( VFmyFile.exists()){
try{
FileReader fr=new FileReader(VFmyFile);
BufferedReader br=new BufferedReader(fr);
String text;
myText.setText("");
while ((text=br.readLine())!=null)
myText.append(text+"\r\n");
br.close();
fr.close();
}
catch(IOException ioe){
VStitle="提示";
VSmessage="打开文件出错";
JOptionPane.showMessageDialog(myFrm,VSmessage,VStitle,VItype);
}
}
}
}
//保存菜单 Save Menu
if (e.getActionCommand()=="保存"){
myFDlg=new FileDialog(myFrm,"保存文件",FileDialog.SAVE);
myFDlg.setFile(VSmyFileName);
myFDlg.show();
VSmyFileName=myFDlg.getFile();
if(VSmyFileName!=null){
VSmyFileName=myFDlg.getDirectory()+myFDlg.getFile();
save(VSmyFileName);
}
}
//另存为菜单 SaveAs Menu
if (e.getActionCommand()=="另存为"){
myFDlg=new FileDialog(myFrm,"文件另存为",1);
myFDlg.setFile(VSmyFileName);
myFDlg.show();
VSmyFileName=myFDlg.getFile();
if(VSmyFileName!=null){
VSmyFileName=myFDlg.getDirectory()+myFDlg.getFile();
save(VSmyFileName);
}
}
//退出菜单 exit Menu
if (e.getActionCommand()=="退出")
System.exit(0);
//编辑 Edit Menu
if (e.getActionCommand()=="剪切"){
//Cut
String text =myText.getSelectedText();
StringSelection selection = new StringSelection(text);
myCB.setContents(selection, null);
myText.replaceRange("",myText.getSelectionStart(),myText.getSelectionEnd());
}
if (e.getActionCommand()=="复制"){
//
String text=myText.getSelectedText();
if(text!=null){
StringSelection selection=new StringSelect
Ⅳ 你好,基于java的毕业论文,有没有新颖一点,简单一点的选题推荐
你好, 计算机专业的毕设一般分为这两部分: 源码+论文
首先说选题版, 毕设课题以javaweb居多, 框架可以选用权ssm, ssh, 或者springboot, 可以选做一些管理系统, 下面是一些常见的命题
校园订餐管理系统
健身房管理系统
扶贫电子商城
等等, 这些课题可以按照你自己的实力做, 如果技术好的化, 或者有一些成品, 可以做的复杂一些, 比如前端可以layui优化一下, 权限系统采用shiro来做等等
论文方面比较简单但是比较麻烦, 各种文库都有很多javaweb的论文,但是直接拷贝的化会过不了查重系统, 需要你自己认真的重构调整一下
Ⅵ 求毕业设计及论文“基于Java的学生信息管理系统的设计与实现”
你这个需求比较艰难, 空手套白狼不太可能有人会给你
首先这个课题非常简内单
第一容: 代码层面就是用springmvc 或者springboot之类的框架, 数据层采用hibernate/myts, 不要想着自己手写servlet了, 那个工作量太大, 随便套一个主题就能用了
第二: 论文方面可以去文库里东拼西凑一番, 毕竟本科论文讲来讲去都是那些东西, 写一些每个框架的优点, 自己的业务设计, 数据库设计, 测试样例等等就能拼个一万字的论文了
Look at my name ~ you will find the code