当前位置:文档之家› JavaEE编程规范(中级)

JavaEE编程规范(中级)

JavaEE编程规范(中级)
JavaEE编程规范(中级)

开发编程规范

J2ee项目一般是大型项目,大型项目都需要团队协作开发。团队协作开发的成功需要一致的开发规范。对软件进行后续的维护成本远远要大于它最初的开发成本,保证开发的系统是可持续工作易于维护就至关重要了。可靠的OO设计原理实践及一个良好的JAVA编程规范在整个J2EE项目生命周期中变得十分重要。在团队开发中,应该保持所有的代码上都乎合- 1 -一个相同的标准,并且代码在风格上应该保持一致。

JAVA编程标准为什么会显得这么重要呢?我们经常会发生这样的情况:太注重于j2ee 的某方面的技术细节,而乎略了良好的程序设计和编程习惯。太多的J2EE项目的失败就是因为在项目中含有太多草率的代码,使得整个系统变得脆弱、不可维护,最终只得放弃整个项目。

关于编程规范,它是一个巨大的领域。在这里不作详细的阐述。这里只列出了在实际J2EE开发中十分重要的问题进行讨论,同时对这些问题有不同的见解和解决方法。一切都应该以实践为主。

一、不要去发明自己的标准

几乎每一门编程语言都有自己的一套编程标准,但是千万不要去发明自己的编程标准。Java是一门简单的语言,我们应该以sun的java编程标准作为准则。在它的基础上进行扩充。比如C++语言使用的匈牙利命名法,并不适合用于在JAVA。也千万不要在一种开发语言中使用另外一种开发语言的编程标准。

二、java类中代码的组织结构

1.按照方法的功能,而不是按照方法的可访问性来组织方法。

比如:不是把所有的public方法放在private方法的前面,而是把一个private方法放成使用它的那些public方法的附近。

2.类的组织约定

静态变量和方法。

成员变量。

构造函数。

接口的实现方法,连同支持它们的私用方法

该类独有的公有方法(不包括已实现接口的公用方法)。

抽像保护方法

提供给子类使用的保护方法

与前面任何一组都无关的实现方法。

三、按职责进行分类,做你该做的事情!

每一个类应该具有一个明确的职责,不要把它相干和不相干的代码都填进来。那些不相干的代码应该重构为另一个单独的类或者是助手类。如果一个不同概念级别上的代码对相同的对象重复调用,那么它可能需提升为一个父类。而其它对象通过继承这个父类。

通过把相干的重复代码提取到父类和把不相干的代码重构为一个助手类是解决代码重复的常用方法。

这样可以阻止一个类的爆炸式增长,变成一个臃肿的类。一个类,包括Javadoc和内部

注释,如果超过了500行代码,它都是需要重构的候选者。因为它可能已经承担了太多的职责。可以运用策略模式来用一个接口把原类与助手类分开,实现助手类在不同的情况可以有不同的实现。来提高系统的灵活性。

每一个方法都应该具有一个单一而清晰明确的职责。否则这个方法应该进行重构。

同时这也可以防止方法变得很长。

public String addCounter(CounterDTO counter) throws BusinessException {

String buffer = "00000000";

// 读取seqence

String sequenceStr = (String) this.getSqlMapClientTemplate()

.queryForObject(SqlID.GET_COUNTER_PK, null);

int seqLength;

seqLength = sequenceStr.length();

String counterNo = "";

String regionCode = counter.getRegionCode();

if (regionCode.length() > 2) {

regionCode = regionCode.substring(0, 2);

}

counterNo = regionCode

+ buffer.substring(0, buffer.length() - seqLength)

+ sequenceStr;

counter.setCounterNo(counterNo);// 设置主键

sqlMap.insert(SqlID.ADD_COUNTER, counter);// 插入柜面数据

return pk;

}

上面的方法是新增一个柜面信息,它有三个步聚:

1. 读取指定的sequence,获得一个唯一柜面流水号

2. 根据柜面的机构代码和流水号产生一个唯一8位的柜面号,柜面号由两位的机构代码+6位的流水号组成。流水号不足6位,在前面以0补充。

3. 设置柜面信息的柜面号为新产生的柜面号,并插入数据库,成功则返回新的柜面号。

重构后的代码:

// 读取sequence,获得流水号

private String getCounterSequenceNo() throws BusinessException {

return (String) this.getSqlMapClientTemplate().queryForObject(

SqlID.GET_COUNTER_PK, null);

}

// 根据机构代码来生成柜面号

private String generateCounterNo(String regionCode)

throws BusinessException {

String buffer = "00000000";

String sequenceStr = this.getCounterSequenceNo();

int seqLength;

seqLength = sequenceStr.length();

String counterNo = "";

if (regionCode.length() > 2) {

regionCode = regionCode.substring(0, 2);

}

counterNo = regionCode

+ buffer.substring(0, buffer.length() - seqLength)

+ sequenceStr;

return counterNo;

}

// 新增柜面

public String addCounter(CounterDTO counter) throws BusinessException {

String pk = null;

pk = this.generateCounterNo(counter.getRegionCode());// 产生主键

counter.setCounterNo(pk);// 设置主键

sqlMap.insert(SqlID.ADD_COUNTER, counter);// 插入柜面数据

return pk;

}

重构后的代码大大的便于阅读和维护。使方法具有明确的责任。

注意在重构的时候,通过我们把那些相对独立的任务变成一个私有的方法。

关于一个方法应该限制为多长,没有明确的规定。它应该以人的舒服度为主。一个方法包括注释(不含javadoc)的实现代码能够在一屏中可以进行阅读。否则它就应该需要进行重构。一般来说,一个方法的代码控制在30-40行是最佳的。

四、避免重复的代码

在一个类中,可能在各个方法中产生了相同的代码块。这就是重复的代码。重复的代码是难以维护和难以理解的。

有一个类其中有两个方法如下:

// 发送一个包裹

public String deliveryWarePack(WarePackDTO warePack)

throws BusinessException {

CommonDAOFactory factory = (CommonDAOFactory) this.context

.getBean(https://www.doczj.com/doc/0c17283117.html,MON_DAO_FACTORY_BEAN_NAME);

WarePackDAO warePackDAO = (WarePackDAO) factory.getDAOByRegionCode(

this.WARE_PACK_DAO_NAME, "00");

// …………

}

// 根据包号得到包信息

public WarePackDTO getWarePackByPackNum(String packNum)

throws BusinessException {

CommonDAOFactory factory = (CommonDAOFactory) this.context

.getBean(https://www.doczj.com/doc/0c17283117.html,MON_DAO_FACTORY_BEAN_NAME);

WarePackDAO warePackDAO = (WarePackDAO) factory.getDAOByRegionCode(

this.WARE_PACK_DAO_NAME, "00");

// ………

}

这似乎没有任何问题,但是这样的代码重复可能会导致严重的问题。

1. 太多的代码:如果重构后只用两行就可以了

2. 令阅读者迷惑不解,阅读者可能会对开发人员产生怀疑,认为这两处是两个不相同的代码,从而去进行比较,花费更多的时间和精力。

3. 造成修改的不一致,经常可能发现对一个方法进行了修改,而忘记也应该对另一个方法也进行相同的修改。增加代码的维护量。

修改后的代码:

private WarePackDAO warePackDAO= getWarePackDAO();

private CommonDAOFactory getFactory() {

CommonDAOFactory factory = (CommonDAOFactory) this.context

.getBean(https://www.doczj.com/doc/0c17283117.html,MON_DAO_FACTORY_BEAN_NAME);

return factory;

}

private WarePackDAO getWarePackDAO(){

WarePackDAO dao = (WarePackDAO)this. getFactory(). getDAOByRegionCode(

this.WARE_DAO_NAME, "00");

return dao;

}

// 发送一个包裹

public String deliveryWarePack(WarePackDTO warePack)

throws BusinessException {

String packNumber = this.warePackDAO.insertWarePack(warePack);

}

// 根据包号得到包信息

public WarePackDTO getWarePackByPackNum(String packNum)

throws BusinessException {

WarePackDTO warePack = this.warePackDAO.getWarePack(packNum);

// ………………..

}

五、最小的作用范围和权利

成员变量和方法通常应该拥有尽可能小的可见度(包括private ,protected,public和缺省的变量和方法)。变量应该尽可能局部地进行声明。

1. 绝不使用public成员变量

2. 成员变量首先考虑为private。避免使用protected的成员变量,唯一的例外可能是声明为final protected的成员变量。

成员变量声明为protected final 是可能需要提供给子类使用,但是这样同样也破坏了类的封装性。更好一点的做法是把成员变量声明为private final的。并提供一个protected 的方法供子类调用,在这个方法中返回private final 的成员变量。

3. 一个类只应该有它所实现接口的公有方法和必要的成员变量的getter和setter方法以及这个类提供给外部访问的方法声明为public。其它的统统为protected 或private

4. 一个类的方法需要提供给子类有不同的实现而进行重写,或者需要把实现交给子类去完成应该声明为protected。其它的统统声明为private 尽可能的把方法隐藏起来,public ,protected ,默认的方法,private; public方法越少这个类就越简洁。就更便于使用,测试和重构。

虽然方法的调用不像对成员变量的直接访问那样危险。但是尽可能的降低方法的可见度在于:降低了类之间的耦合度。把一个类的外在需求与一个类的实现逻辑分开来是十分有必要的。这既可防止这个类的内部状态遭到意外的破坏,同时也简化开发人员处理这个类的任务。通常只提供他们所需要的方法。

5. 变量应该尽可能的在使用它的地方声明。

作用范围内的变量越少,可阅读性就越高,也更加便于调试。杜绝使用C语言或delphi的变量声明方式(变量在方法的开始处声明)

六、this关键字的使用

this是一个java中经常使用的关键字,但是我们也经常忘记使用this而使得在访问两个变量时造成意外的错误。

下面的方法将会被编译通过,而并没有给成员变量name赋值

private String name;

public void setName(String name) {

name = name;

}

// 还有另外的一种形式也会被编译通过(在录入方法参数时候可能输错某个字母)

public void setName(String nme) {

name = name;

}

在上面的两种情况中,假如没有什么方法对name进行初始化,那么在运行的时候出现莫名其妙的空指针异常。

在第一个方法中把方法参数赋给方法参数自身,在第二方法中把成员变量赋给成员变量自身。除了没有达到预期的效果外都还会造成空指针异常。并且这种错误在编译时都能正常通过。

建议:采用下面良好的习惯来避免上面出现的错误:

1. 访问成员变量总是使用this关键字。这样使得我们总是给期望的成员变量进行访问。而解决变量的多议性。

public void setName(String name) {

https://www.doczj.com/doc/0c17283117.html, = name;

}

2. 给方法参数赋予一个有意义或有区别的名字(不要使用_下划线来命名变量,只有常量才使用下划线.正确的反映参数的用途或代表的意义,并且避免了我们刚才见过的问题public void setName(String newName) {

https://www.doczj.com/doc/0c17283117.html, = newName;

}

3. 局部变量名变该相对短而成员变量名应该相对冗长。例如,I应该是一个变部变量, userInfo应该是一个成员变量。

通常,成员变量名以一个小写字母开头的接口或类名,而局部变量名应在当前的上下文环境中代表它的含议。

private SystemUserInfo systemUserInfo;

public void methodXX() {

SystemUserInfo newUser = new SystemUserInfo();

}

七、不要使用字面常量

除了一些大家都明白的如0值,空值null,和空串””外,不要在java代码中使用字面常量public void methodXX() {

if (ware.getWareDetailList() != null

&& ware.getWareDetailList().size() > 100) {

request.setAttribute(super.SERVICE_BUSINESS_INFO,

"物品数量超过了上限,请您将物品数量控制在100件以内");

}

}

看上面的例子。无耐的是,我们经常在j2ee项目中大量出现这样的代码。

1.这样的代码没有明确的意义。必须被迫阅读代码来猜测100的含义。

2.代码容易出错,我们必须被迫比较不同的字面值来确信它们是相同的,而且我们很容易错误的输入。

3.修改100这个常数时,可能需要修改多处。

比较好的做法是使用一个常数,在JA V A中意味作使用static final的变量.

private static final int WARE_COUNT_LIMIT = 100;

if (ware.getWareDetailList() != null

&& ware.getWareDetailList().size() > WARE_COUNT_LIMIT) {

request.setAttribute(super.SERVICE_BUSINESS_INFO,

"物品数量超过了上限,请您将物品数量控制在100件以内");

}

一般情况下,这已经OK了。但是在有些情况下它仍然不够好,假如对于每次发送的物品数量限制并不是总是相同的,今天的常量,在明天可能就是一个经常变化的变量。

可能下面的版本会更灵活一些:

private static final int DEFAULT_WARE_COUNT_LIMIT = 100;

protected int wareCountLimit() {

return DEFAULT_WARE_COUNT_LIMIT;

}

if (ware.getWareDetailList() != null

&& ware.getWareDetailList().size() > wareCountLimit()) {

request.setAttribute(super.SERVICE_BUSINESS_INFO,

"物品数量超过了上限,请您将物品数量控制在”+DEFAULT_WARE_COUNT_LIMIT+”件以内");

}

这样我们可以把对物品数量的控制延迟到子类进行,子类可以通过重写wareCountLimit()方法来灵活控制。

如何设计一个常量,可以有下面的标准来进行参照:

1.如果字面常量应该是代码中的一部分,不应该使用常量变量或方法。

比如:SQL语句。SQL语句本身就应该是代码的一部分,所以不应该再它们声明一个常量。

2. 永远都不会变化的常量或者变化的可能性相当少的常量,声明为static final的常量。例如:在所有应用服务器都相同的JNDI名。

3.在编译时可能会发生改变的常量,声明子类可以重写的protected的方法。

例如:在应用服务器中可能需要变化的JNDI名,如TransactionManager的名称

4.在运行时可能会发生改变的常量,声明一个protected方法.

例如:物品数量限制

5.受国际化影响的常量,声明一个proteced的方法。

例如:根据不同的Local信息,需要显示不同的错误信息或语言

这个protected方法返回一个从ResourceBundle中查找的值。

八、内部类和接口

在JA V A中使用内部类和接口可以避免命名空间污染,内部类通常用来帮助外部类有一个一致的责任。除非进行Swing编程,尽可能的少用匿名内部类。而使用一个有类名的内部类会带来更多的好处。比如可以使用构造函数。

使用内部类不能够实现代码重用。会导致重复代码的产生。在使用的时候要进行权衡。

九、Final 关键字

1. 方法重写与final方法。

方法重写可能违反“理氏代换原则”和“开闭原则”。使用final方法有助于保证类的完整性。确保一些关键性的方法不让子类去重写。保证系统的安全性。

比如:DispatchServlet 需要调用一系列的init()方法。而这些方法都是十分重要的。

任何重写都可能会导致破坏系统的行为

通常的做法声明一个protected onInit()的空方法。没有任何代码。

在final init()方法的最后调用onInit()这个空方法。

而子类可以去重写onInit()这个方法来扩展功能,而又不破坏父类

2. final 类

只有能够保证永远不变的对象才使用final类。

3. final成员变量

一个final的成员变量只可以被初始化一次,只能在两个地方进行初始化(声明时,或构造函数),此后就将不能改变。

只有常量才使用final

十、实现有用的toString方法。

实现一个有用的toString方法对于我们调试是十分重要的。实现toString方法在java中有专门的规范。在这不作讨论,简单一点说,是应该能够显示一个类的成员变量等关键信息。可以考虑使用辅助类,来实现toString方法。

使用ToStringBuilder辅助类的reflectionToString方法,来实现toString方法

十一、使用StringBuffer而不是String

当需要进行多次字符串操作时优先考虑使用StringBuffer。而不是使用String

String 是一个final类。

使用StringBuffer进行字符串操作,会带来更大的性能提升。

十二、可恶的空指针异常

NullPointException是一个常见的错误,由于NullPointException是non-checked Exception 所以它总是隐式的出错,无需要我们人为的去捕获。产生NullPointException,它又没有相关的有用的帮助信息,所以很难以跟踪。我们只能通过一些编程标准来减少它在运行时出现的次数。

1. 处理空值的原则:

a. 没有充分的依据,永远都不要假设对象在某一时刻不可能为空。

b. 假如认为空值是一个错误的代码调用,则应该以文字说明。不要让它简单的抛出NullPointException;而是要记录为业务异常,并有直接的异常说明。

c. 通常对方法参数进行空值检查。

2. 在页面参数传递中正确的对待空值和空串

Web编程是无状态编程,web页面只能传递字符串给后台。通常后台程序在获取页面参数的时候要进行特殊字符处理,去掉字符串两端的空格,制表格等特殊字符。

从页面获取的参数如果是空串应该认为它是空值。

典型的处理如下:

String s = (String) request.getParameter(name);

if (s != null) {

s = s.trim();

}

if ("".equals(s)) {

s = null;

}

3. 正确处理从页面参数传递后把字符串转换为非字符串类型

我们通常需要获取页面参数并转换为非字符串类型。一般是数值或日期类型。

这需要有两个步骤:

第一步是从页面获取字符串参数,如果是空串则要变为空值

第二步是把字符串转为相应的类型。

例如:从页面获取一个年龄的参数。

Stirng ageStr = request.getParameter(“age”);

if(ageStr != null){

ageStr = ageStr.trim();

}

if(“”.equals(ageStr)){

ageStr = null;

}

Int age = Integer. parseInt(ageStr);

在太多的项目中有这样的代码出现,能够正常编译通过。

但如果页面的age参数是一个录入域,可以由用户随便录入。并且在页面可能没有做相应完整的javascript控制的时候,很容易就输入了一些不能进行转换为整数的非法字符串。Integer.parseInt()就会抛出NumberFormaterException.

同样的情况也会出现在日期转换中。

SimpleDateFormat format = new SimpleDateFormat(“yyyy-MM-dd”);

format. Parse(dateStr);

这也有可能抛出ParseException

NumberFormaterException和parseException都是non-checked Exception。都不需强迫用户去处理。不知不觉就会让系统报异常,使得系统十分脆弱。

像这种异常我们应该手动去处理,处理方法有两种:

1. 把异常当空值处理,凡是报这种异常我都把它处理为空值。

Date birthday;

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

try {

birthday = format.parse(dateStr);

} catch (ParseException e) {

birthday = null;

}

// 2. 把异常当输入错误处理,应该把相应的提示信息返回输入页面,要求用户重新输入合法的数据

Date birthday;

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

String errorMessage = null;

try {

birthday = format.parse(dateStr);

} catch (ParseException e) {

errorMessage = "日期必须为yyyy-MM-dd格式";

}

ModelAndView mav = null;

if (errorMessage != null) {

mav = new ModelAndView("inputView");

mav.addObject("error", errorMessage);

}

3. 编写辅助类来处理页面参数

public class ServletRequestUtils {

public static final String DEFAULT_DATE_FORMAT = "MM/dd/yyyy";

public static String getStringParameter(HttpServletRequest request,

String name) {

String s = (String) request.getParameter(name);

if (s != null) {

s = s.trim();

}

if (s == null || "".equals(s)) {

return null;

}

{

return s;

}

}

public static String getStringParameter(HttpServletRequest request,

String name, String defaultValue) {

String s = (String) request.getParameter(name);

if (s != null) {

s = s.trim();

}

if (s == null || "".equals(s)) {

return defaultValue;

}

{

return s;

}

}

public static Date getDateParameter(HttpServletRequest request, String name) throws BusinessException {

String dateString = getStringParameter(request, name);

SimpleDateFormat format = new SimpleDateFormat(DEFAULT_DATE_FORMAT);

try {

if (dateString != null && !"".equals(dateString)) {

return format.parse(dateString);

} else {

return null;

}

} catch (ParseException e) {

throw new BusinessException("无效的日期输入:格式错误:" + dateString);

}

}

public static Date getDateParameter(HttpServletRequest request,

String name, String dateFormat) throws BusinessException { String dateString = getStringParameter(request, name);

SimpleDateFormat format = new SimpleDateFormat(dateFormat);

try {

if (dateString != null && !"".equals(dateString)) {

return format.parse(dateString);

} else {

return null;

}

} catch (ParseException e) {

throw new BusinessException("无效的日期输入:格式错误:" + dateString);

}

}

public static Date getDateParameter(String dateStr)

throws BusinessException {

SimpleDateFormat format = new SimpleDateFormat(DEFAULT_DATE_FORMAT);

try {

if (dateStr != null && !"".equals(dateStr)) {

return format.parse(dateStr);

} else {

return null;

}

} catch (ParseException e) {

throw new BusinessException("无效的日期输入:格式错误:" + dateStr);

}

}

public static Date getDateParameter(String dateStr, String dateFmt)

throws BusinessException {

SimpleDateFormat format = new SimpleDateFormat(dateFmt);

try {

if (dateStr != null && !"".equals(dateStr)) {

return format.parse(dateStr);

} else {

return null;

}

} catch (ParseException e) {

throw new BusinessException("无效的日期输入:格式错误:" + dateStr);

}

}

}

十三、正确的进行对象比较

1.总是把不为空的对象放在比较的前面。

String name = request.getParameter("name");

if (name.equals("")) {

}

在j2ee项目中,这样的代码并不少见.name很容易是一个空值。那么在运行时就很容易抛出NullPointException.

换成第二种形式

if ("".equals(name)) {

}

这样当name为空值时条件为false,与我们期望相符。而第一种形式则是一种隐患。说不准它什么时候就抛出了空指针异常。

if (name == null || "".equals(name)) {

}

这样的写法也可以,但是没有必要。第二种写法更简单也同样安全

2.使用短路计算

public void doXX(User user) {

if (user.getAge() > 10) {

}

}

在j2ee项目中,这样的代码也是频繁出象,没有做任何判断就调用对象的方法。谁又能保证调用者一定不会传一个空值对象进来呢?

public void doXX(User user) {

if ((user != null) && (user.getAge() > 10)) {

}

}

当user为空时,第二个测试条件不被执行,这样才是安全的代码!在&&布尔表达式,当前面的有一个条件为false时,那么结果为假,后面的条件不再进行测试。

同样在||布尔表达式中,当前面的有一个条件为true时,结果为真,后面的条件不再进行测试

if ((user == null) || (user.getAge() > 10)) {

}

当user 为null时,结果为真,那么后面的条件将不进行测试

十四、小心遍历集合对象

在对集合进行遍历时,经常是下面的代码

List serviceDepartList = counter.getServiceDepartList();

for (int i = 0; i < serviceDepartList.size(); i++) {

ServiceDepartmentDTO serviceDepart = (ServiceDepartmentDTO) serviceDepartList

.get(i);

}

// 当serviceDepartList 为null时,那么它后面的遍历代码就抛出NullPointException.所以

//在遍历集合时应该总是小心一些。

for (int i = 0; serviceDepartList != null

&& i < serviceDepartList.size(); i++) {

ServiceDepartmentDTO serviceDepart = (ServiceDepartmentDTO) serviceDepartList

.get(i);

}

这样的代码是安全的。我们时刻要防止可恶的nullPoint产生。

可能有些代码是这样的,

if (serviceDepartList != null) {

for (int i = 0; i < serviceDepartList.size(); i++) {

ServiceDepartmentDTO serviceDepart = (ServiceDepartmentDTO) serviceDepartList.get(i);

}

}

但我觉得上面的方法更简洁一些,特别是没有理由进行太多的if语句嵌套。嵌套增加了代码的复杂性,更难以阅读和理解。

十五、对象创建是要付出代价的

重复的使用一个对象,而不是在每次需要的时候都去创建一个等价的新对象。对象创建是要付出内存消耗和时间代价。特别是当一个对象创建需要初始化外部环境时,比如数据库连接,ejb查找等。

String s = new String("hello");// 千万别要这样做比

String s = "hello";

要付出更多的开销。如果第一种形式频繁的使用,那么会创建出成千上万个String变量. 而第二种形式则不会,String s = "hello";只使用一个String实例。

1. 应当重用一个已有的对象时,就不要试着去创建新的对象

看看下面的方法:

public CounterDAO getCounterDao() {

CounterDAO counterDao = (CounterDAO) this.getDaoFactory()

.getDAOByRegionCode(COUNTER_DAO_BEAN_NAME, "00");// 读中心数据库return counterDao;

}

这是要根据不同的机构代码去访问不同的数据库,再获得一个DAO对象,每次都会创建一个新的CounterDAO对象

下面的方法会多次调用CounterDAO的方法

public void updateCounterRelation(CounterDTO counter)

throws BusinessException {

this.getCounterDao().removeCounterRelation(counter);// 删除此柜面所有子柜面信息

List subCounterList = counter.getSubCounterList(); // 本柜面的子柜面列表

for (int i = 0; subCounterList != null && i < subCounterList.size(); i++) { CounterDTO subCounter = (CounterDTO) subCounterList.get(i);

subCounter.setSuperCounterNo(counter.getCounterNo());

this.getCounterDao().updateCounterRelation(subCounter);

}

}

特别是在this.getCounterDao().updateCounterRelation(subCounter)这个语句,需要去更新每一个柜员的关系,那么这样就会创建很多个CounterDao对象,而创建CounterDao对象又会每次都去连接数据库,花费大量的内存空间和连接时间。

重构后的代码

private CounterDAO counterDao;

public CounterDAO getCounterDao() {

if (counterDao == null)

counterDao = (CounterDAO) this.getDaoFactory().getDAOByRegionCode(

COUNTER_DAO_BEAN_NAME, "00");// 读中心数据库

return counterDao;

}

这样不管以后调用这个方法多少次,而只去设置数据库一次,不管使用多少次都只有一个CounterDAO对象创建,更节省内存开销和时间。提升系统性能。

2. 在真实需要的时候才去创建对象

List list = new ArrayList();

if (relationCounterNoString != null) {

// …….

List.add();

}

上面的例子是从页面读取一个带逗号分隔符的字符串,然后把字符串分切为一个list.上面的例子不管要分隔的字符串是否为空,真是返回一个不为空的List,里面没有包括任何数据项的。白白的浪费空间

List list = null;

if (relationCounterNoString != null) {

list = new ArrayList();

// ………..

list.add();

}

这样的代码会更好一些,总之记住,对象创建是有代价的,只有在真正的需要它的时候才去创建它。

十八、使用日志系统

日志系统提供帮助我们跟踪系统执行情况的功能。日志最重要的是能够帮助我们进行系统调试。在实际的项目中我们不得不考虑下面的问题:

1. 调试是经常的,而且是可变的。调试会话是短暂的,没有任何系统能够记下我们的调试内容,今天的问题,在明天可能还是问题。

2. 调试是十分烦琐和费时的,通常搜索一个日志记录要比去遍历代码来得容易。

3. 记录日志可以让我们在一开始就要思考程序的运行情况,可以管控程序的一些隐患错误。

4. 没有任何调试工具可以帮我们良好的解决调试的问题,特别是在分布式系统中。

下面是一些记录日志规范:

1. 绝不要使用System.out.print()语句来记录日志,控制台的输出无法灵活配置。比如说我们想关闭某个类的日志输出。在一些应用程序器中,控制台大量的输出是严重影响性能的。

2. 单元测试能够指出一个类出现了什么问题,但是不一定能详细的指出问题出在哪里。日志可以给我们提供更详细的信息,获得更有用的帮助。

3. 代码生成的日志一定是要可以配置的,否则不能使用于生产环境。

4. 为不同的日志消息选择不同的级别。

5. 在输出日志时先进行级别判断

例如:

if (logger.isDebugable()) {

logger.debug("");

}

数据库设计的基本步骤

数据库设计的基本步骤 一、数据库设计的生存期 按照规范设计的方法,考虑到数据库及其应用系统开发的全过程,将数据库 设计分为六个阶段。如下图。 ① 需求分析 需求收集和分析, 需求。 ② 概念结构设计 对需求进行综合、归纳与抽象,形成一个独立于具体 DBMS 的概念模型(用 E-R 图表示)。 ③ 逻辑结构设计 将概念结构转换为某个DBMS 所支持的数据模型(例如关系模型),并对其 进行优化。 ④ 物理结构设计 为逻辑数据模型选取一个最适合应用环境的物理结构 (包括存储结构和存取 方法)。 ⑤ 数据库实施 需求A 祈断段 T 1 概念设计阶段 i 逻辑 q 丰计阶段 1 物理. 1 殳计阶段 j 数据E L 支实施阶段 数据库运荷? 维护阶段 得到用数据字典描述的数据需求,用数据流图描述的处理

运用DBMS 提供的数据语言(例如 SQL )及其宿主语言(例如C),根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。 ⑥数据库运行和维护 数据库应用系统经过试运行后即可投入正式运行。在数据库系统运行过程中必须不断地对其进行评价、调整与修改。 说明:设计一个完善的数据库应用系统是不可能一蹴而就的,它往往是上述 六个阶段的不断反复。 二、数据库设计阶段的内容 设计步骤既是数据库设计的过程,也包括了数据库应用系统的设计过程。下面针对各阶段的设计内容给出各阶段的设计描述。如下图。 阶段 濮块结构) 三、数据库设计阶段的模式 数据库结构设计的不同阶段形成数据库的各级模式,如下图 需求数据字睦、全系统中数据项、 分析數据證、数据存储的描述 数1E流图和判定我(利宦 闕)、数据字典中处理过程的 描述 设计 概念模型〔E?兄图) 模块设计 IPO表 编写模武装入 数JE 实施数揭库试 运行阶段 Create … L o豆恋■?. 程序编码 编译联结 测试 Tlain () * ■ A if???then ■■ i HUl 数据宇典 系窥说朋书包括: ①新系统要求、 方案和概图 ②反映新系统信息 流的数据流图 方法选择物理 存取路径建立设计

毕业设计说明范文(艺术类)

XXX 大 学 (空一格,行距:单倍行距) (空四格,行距:单倍行距) 题 目: 女性时尚高跟鞋系列设计 学 院: 美术学院 专业、年级: 艺术设计专业2007级 3 班(产品造型方向) 姓 名: 学 号: 指 导 教师: 职称: 完 成 时间: 年 月 日

声明 本人声明所呈交的设计作品及论文是本人在指导教师指导下进行的研究工作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得成都大学或其他教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确说明并表示谢意。 本设计及论文成果是本人在成都大学读书期间在指导教师指导下取得的,设计及论文成果归成都大学所有,特此声明。 学生签名: 指导教师签名:

具、装饰物品或日常生活用品都带有色彩。因此要对他们进行统一,使他们能在同一色调上进行细微的变化,达到和谐的效果。色彩的运用会受到人的年龄、性别等各种因素的影响,而人的心理感受及联想与色彩的关系问题也是息息相关的。色彩还能造成不同的空间感,每个房间都不可能单独存在一种色调,不同的区域对色彩的要求也不一样。房间布置时应选择适合的“快乐”色彩,会有助于下班回到家里后松弛紧张的神经,觉客厅、卧室,有时也会因居住者秉性不同而有差异。 (空一格) :色彩;空间;心理;关系

utilization (空一行) room places the furniture, the decoration goods or the daily life thing all have the color. Therefore must carry on the unification to them, enables them to carry on the slight change in the identical tone, achieves the harmonious effect. The color utilization can receive human's age, the sex and so on each kind of factor influence, but human's psychological feeling and the association and the color relational question also is closely linked.The color also can create the different sense of space, each room is all impossible alone to have one kind of tone, the different region is dissimilar to the color request. When room arrangement should choose suitably “joyful” the color, can be helpful after gets off work gets in the home to relax the tense nerve, thought the relaxation is comfortable.The different room function is different, the color should not be same; Is the same function room, like is similarly the living difference differently. (空一格) Color ;Space ;

毕业设计设计说明书范文

第一章塑件分析 1.1塑件结构分析 图1-1 塑件结构图 此制品是消声器上盖,现实生活中经常看到用到,是一个非常实际的产品。且生产纲领为:中批量生产,所以我们采用注射模具注射成型。 1.2 成型工艺性分析[1] 塑件材料为尼龙,因塑件用在空压机内,表面无光洁度要求。具有良好的力学性能,其抗冲击强度比一般的塑料有显著的提高,具有良好的消音效果和自润滑性能。密度1.15 g/cm3, 成型收缩率:0.4~0.7%,平均收缩率为0.55%。 第二章确定模具结构

2.1模具结构的确定 塑料模具的种类很多,大体上分为:二板模,三板模,热流道模。 二板模缺点是浇口痕迹明显,产生相应的流道废料,不适合高效生产。本模具选择二板模其优点是二板模结构简单,制作容易,成本低,成型周期短。 支撑板 分型面 定模侧 动模侧 图2.1 典型的二板模结构 模架为非标准件 定模座板: 400*200*25mm 定模板: 315*200*40mm 动模板: 315*200*32mm 支承板: 315*200*25mm 推秆固定板:205*200*15mm 推板: 205*200*20mm 模脚: 50*200*60mm 动模座板 400*200*25mm 2.2确定型腔数目 2.2.1塑件体积的计算 a. 塑件体积的计算 体积为:

V a = S a ×L a =(37×35-8×25)×10-(33×36-10.5×25) ×8 =12.60cm 3 b.计算塑件的重量 根据《塑料模具设计手册》查得密度ρ取1.12g/cm 3 所以,塑件单件的重量为:m=ρV =12.60?1.12 =14.11g 浇注系统的体积为:主流道+分流道+浇口=(6280+376.8*2+12*2)/1000 ≈7.05 cm 3 粗略计算浇注系统的重量:7.05*1.12=7.90g ≈8.0g(含有冷料穴料重) 总重量:14.11*2+8.0=36.22g 2.2.2 模具型腔数目的确定 模具型腔的数目决定了塑件的生产效率和模具的成本,确定模具型腔的方法也有许多种,大多数公司采用“按经济性确定型腔的数目”。根据总成型加工费用最小的原则,并忽略准备时间和试生产原料的费用,仅考虑模具费用和成型加工费,则模具费用为 21C nC Xm += 式中Xm ——模具费用,元; 1C ——每一个型腔的模具费用,元 2C ——与型腔数无关的费用,元。 成型加工费用为 n Y N X t j 60= 式中j X ——成型加工费用,元 N ——需要生产塑件的总数; t Y ——每小时注射成型的加工费,元/h ;n ——成型周期,min 。 总的成型加工费用为n Y N C nC X X X t j m 6021++=+= 为了使成型加工费用最小,令 0=dn dX ,则 n=2 上式为按经济性确定型腔数目为2。考虑到模具成型零件和抽芯结构的设计,模具

(完整版)华北理工大学本科毕业设计说明书格式示例

学号:[单击此处键入] 毕业设计说明书 G RADUATE D ESIGN 设计题目:[单击此处键入设计中文题名] —[单击此处继续键入副题名或删除此提示]学生姓名:[单击此处键入] 专业班级:[单击此处键入] 学院:[单击此处键入] 指导教师:[导师姓名][职称]

[副导师姓名][职称]XXXX年XX月XX日

摘要 随着互联网在国际上迅猛的发展,基于互联网的各种应用也日益受到人们的重视,特别是现代远程教育得到了巨大的发展。基于Web的考试系统正是在这种形势下应运而生的。尽管传统的考试形式应用还非常普遍,但伴随着远程教学的推广普及,作为远程教学系统子系统的在线考试系统呼之欲出。 …… (中文摘要约300汉字) 关键词考试系统;自动组卷;题库;遗传算法

Abstract With the rapid development of Internet in the international, more and more web-based applications were increasingly subject to people's attention in recent years, and the modern distance education tremendous development. The web-based examination system is emerged in such a situation. Although the traditional form of examination is also very common, with the expansion and universality of distance learning, the online examination system come into being as a subsystem of distance learning system. Automatic Test Paper is a crucial part in the examination system. With the rapid development of artificial intelligence, this issue a growing number of scientists concerned. Automatic Test Paper is the real follow a strategy of topics, and select a group of questions from the questions, makes them all the properties are within a certain range by volume to meet the expectations index. The core of the problem is multi-target strategy of choice. The design of database is also a very important part in the examination system, and the design of database is good or bad will directly affect the effectiveness of automatic Test Paper. This paper designs and implements an on-line examination system, and its functions include on-line examinations, test management and maintenance, automatic Test Paper, Grade examination papers and grade point, seeing results and information management features such as students etc. It focuses on the automatic Test Paper algorithm and the

数据库基础与应用试题与答案(1)

第1题: 委托开发的一个关键问题是要解决技术人员与企业的业务人员之间的沟通问题。对 第2题: 以信息资源的开发与利用为中心的信息管理强调以计算机技术为核心,以管理信息系统为主要阵地,以解决大量数据处理和检索问题为主要任务。不对 第3题: 根据信息技术扩散模型,在集成阶段,企业通过总结经验教训,开始认识到运用系统的方法,从总体出发,全面规划,进行信息系统的建设与改造。不对 第4题: 对于企业信息化的发展阶段,不同的学者有不同的论述,建立了不同的模型。比较著名的模型有两个,一个是世界银行报告中提出的信息技术的扩散模型,另一个是诺兰模型。对 第5题: 战略目标集转化法虽然也首先强调目标,但它没有明显的目标导引过程。它通过识别企业“过程”引出了系统目标,企业目标到系统目标的转换是通过企业过程/数据类矩阵的分析得到的。不对第6题: 生命周期法按用户至上的原则,严格区分工作阶段,整个开发过程工程化。对 第7题: 原型法充分利用最新的软件工具很快形成原型。一方面,将系统调查、系统分析、系统设计三个阶段融为一体,缩短了开发周期。对 第8题: 在管理信息系统的分析过程中,通过制作业务过程和数据的U/C矩阵可以帮助我们合理划分系统逻辑功能(即:系统功能模块的划分)。对 第9题: 对于企业来说管理信息系统只存在有无的问题,并无优劣之分。不对 第10题: 管理信息系统纯粹是一个技术系统,人的作用只是微乎其微。不对 第11题: 管理信息系统由信息的采集、信息的传递、信息的储存、信息的加工、信息的维护和信息的使用五个方面组成。对 第12题: 管理信息系统从概念上看由四大部件组成:信息源、信息处理器、信息用户和信息管理者。对 第13题: 管理信息系统能提供信息,具有支持企业或组织的运行、管理和记录功能。对 第14题: 管理信息系统很难实测企业的各种运行情况。不对 第15题: 管理信息系统的特点是必须通过传统物流服务方式才能实现信息传递。不对 第16题: 在信息管理中, 信息和数据是两个在概念上有所区别的术语,所以任何时候针对任何对象,信息和数据都是绝对而言的,不能混淆。不对 第17题: 在对这些信息的加工中,按处理功能的高低可把加工分为预加工、综合分析和决策处理。对 第18题: 许多企业都能从记录到的客户销售数据中经过仔细分析得到潜在的客户需求并极力追求进一步的市场份额,这说明了信息系统可以改进企业的生产销售方式。对 第19题: 管理信息系统是仅仅服务于管理控制层的信息系统,所以从广义上,MIS对各个子系统具有管理、控制、计划的功能。不对 第20题: 根据诺兰模型,在信息管理阶段,信息系统面向企业整个管理层次,从低层的事务处理到高层的预测与决策都能提供信息支持。对 第21题: 划分时应同时遵循两点原则:沿对角线一个接一个地画小方块,即不能重叠,又不能漏掉任何一个数据和过程;小方块的划分是任意的,但必须将所有的“C”元素都包含在小方块内。对 第22题: 对于有关产品和服务的活动在定义企业过程时应收集有关资料,和有经验的管理人员讨论、分析、研究,确定企业战略规划和管理控制方面的过程。不对 第23题: 由E-R图导出关系数据模型时,如两实体间是1:n联系,应把一方实体的关键字纳入另一方实体的关系中,同时把联系的属性也一并纳入另一方的关系中。不对 第24题: 项目质量管理是指为使项目能达到用户满意的预先规定的质量要求和标准所进行的一系列管理与控制工作。包括进行质量规划,安排质量保证措施,设定质量控制点,对每项活动进行质量检查和控制等。对 第25题: CIO是从企业的全局和整体需要出发,直接领导与主持全企业的信息资源管理工作的企业高层管理人员。CIO产生于信息管理发展的竞争情报阶段。对 第26题: 对信息资源进行有效管理,不仅要考虑信息系统的输入部分和输出部分,更应该重视将输入数据转换成输出信息的信息处理部分。对

毕业设计任务书及范本

2008级毕业设计任务书 专业名称:模具设计与制造 指导老师: 班级名称: 教研室:模具教研室 系(部):机械制造工程系 二O 一O 年十月日

一、目的与要求: 毕业设计是在模具设计与制造专业理论教学之后进行的实践性教学环节。是对所学知识的综合应用能力检验: 1.培养学生认真负责、实事求是的科学态度和严谨求实作风。 2.培养学生综合运用所学职业基础知识、职业专业知识和职业技能,提高解决实际问题的能力,从而达到巩固、深化所学的知识与技能。 3.培养学生调查研究,收集资料,熟悉有关技术文件,运用国家标准、手册、资料等工具书进行模具相关设计计算的能力、编写技术文件等独立工作能力。 4.培养学生熟悉工厂设计流程,为从事相关工作奠定基础。 二、选题: 1.选题要求 设计题目一般由指导老师根据教学计划、教学大纲和专业培养目标确定。机械制造与自动化专业选题原则: (1)课题要具有真实性; (2)围绕模具设计与制造的培养,可以选择典型零件模具设计。 (3)对已从事专业相关岗位的学生,设计的题目可结合从事的工作考虑。 (4)每1-2人为一课题组,每人课题设计的内容不允许雷同。允许一大课题下分若干小课题,但必须说明每人所承担的部分。多人合写一份论文应为不合格; (8)毕业设计课题一经确认,不得更改。 2.自主选题 根据学生本人实践实习所在单位的具体情况,尽可能结合生产实际,学生可自主选题,自主选题必须通过指导教师审查认可。 3、参考选题 根据企业生产实际情况、专业培养目标和专业教学计划特点,拟定以下课题作为毕业设计参考课题: 冲压模具设计课题如下: (1)压线卡冲压模具设计(2)保护罩冲压模具设计 (3)支架冲压模具设计(4)电极板冲压模具设计 (5)托架冲压模具设计(6)靠板冲压模具设计

山东建筑大学本科毕业设计说明书(论文)的撰写格式模版

附件2: 本科毕业设计说明书 (本科毕业论文) 题 目:空腹桁架钢框架结构 受力性能分析及试验研究 院 (部)专 班 级: 土木013 姓 名: 张三 学 号: 2001888888 指导教师: 张九光 完成日期: 2005年6月30日

目 · ················ ····························Ⅲ ABSTRACT ·······································Ⅳ 1 前 言 1.1 空腹桁架钢框架的特点及研究意义....................1 1.2 空腹桁架钢框架的研究现状..............................................3 1.3 现有研究的不足及本文的研究内容. (5) 2 空腹桁架钢框架有限元建模及验证 2.1 引言..................................................................8 2.2 弹塑性分析方法简介...................................................12 2.3 ANSYS 在空腹桁架钢框架弹塑性分析中的应用............................18 2.4 ANSYS 分析模型正确性检验............................................20 2.4.1 ANSYS 分析模型概述.........21 2.4.1.1 ANSYS ........21 2.5 小结. (21) 3 3.1 引言.................................................................23 3.2 空腹桁架钢框架与普通钢框架力学性能对比...............................26 3.3 影响空腹桁架钢框架力学性能的因素. (29) 4 空腹桁架钢框架极限承载力试验研究 4.1 试验目的·····························································30 4.2 模型设计依据·························································32 4.3 试验概况·····························································35 4.4 试验过程描述·························································38 4.5 试验结果·························

数据库基础与应用层次实训习题

《数据库基础与应用》 第1题: 委托开发的一个关键问题是要解决技术人员与企业的业务人员之间的沟通问题。对 第2题: 以信息资源的开发与利用为中心的信息管理强调以计算机技术为核心,以管理信息系统为主要阵地,以解决大量数据处理和检索问题为主要任务。不对 第3题: 根据信息技术扩散模型,在集成阶段,企业通过总结经验教训,开始认识到运用系统的方法,从总体出发,全面规划,进行信息系统的建设与改造。不对 第4题: 对于企业信息化的发展阶段,不同的学者有不同的论述,建立了不同的模型。比较著名的模型有两个,一个是世界银行报告中提出的信息技术的扩散模型,另一个是诺兰模型。对 第5题: 战略目标集转化法虽然也首先强调目标,但它没有明显的目标导引过程。它通过识别企业“过程”引出了系统目标,企业目标到系统目标的转换是通过企业过程/数据类矩阵的分析得到的。不对 第6题: 生命周期法按用户至上的原则,严格区分工作阶段,整个开发过程工程化。对 第7题: 原型法充分利用最新的软件工具很快形成原型。一方面,将系统调查、系统分析、系统设计三个阶段融为一体,缩短了开发周期。对 第8题: 在管理信息系统的分析过程中,通过制作业务过程和数据的U/C矩阵可以帮助我们合理划分系统逻辑功能(即:系统功能模块的划分)。对 第9题: 对于企业来说管理信息系统只存在有无的问题,并无优劣之分。不对 第10题: 管理信息系统纯粹是一个技术系统,人的作用只是微乎其微。不对 第11题: 管理信息系统由信息的采集、信息的传递、信息的储存、信息的加工、信息的维护和信息的使用五个方面组成。对 第12题: 管理信息系统从概念上看由四大部件组成:信息源、信息处理器、信息用户和信息管理者。对第13题: 管理信息系统能提供信息,具有支持企业或组织的运行、管理和记录功能。对 第14题: 管理信息系统很难实测企业的各种运行情况。不对 第15题: 管理信息系统的特点是必须通过传统物流服务方式才能实现信息传递。不对 第16题: 在信息管理中, 信息和数据是两个在概念上有所区别的术语,所以任何时候针对任何对象,信息和数据都是绝对而言的,不能混淆。不对 第17题: 在对这些信息的加工中,按处理功能的高低可把加工分为预加工、综合分析和决策处理。对 第18题: 许多企业都能从记录到的客户销售数据中经过仔细分析得到潜在的客户需求并极力追求进一步的市场份额,这说明了信息系统可以改进企业的生产销售方式。对 第19题: 管理信息系统是仅仅服务于管理控制层的信息系统,所以从广义上,MIS对各个子系统具有管理、控制、计划的功能。不对 第20题: 根据诺兰模型,在信息管理阶段,信息系统面向企业整个管理层次,从低层的事务处理到高层的预测与决策都能提供信息支持。对 第21题: 划分时应同时遵循两点原则:沿对角线一个接一个地画小方块,即不能重叠,又不能漏掉任何一个数据和过程;小方块的划分是任意的,但必须将所有的“C”元素都包含在小方块内。对 第22题: 对于有关产品和服务的活动在定义企业过程时应收集有关资料,和有经验的管理人员讨论、分析、研究,确定企业战略规划和管理控制方面的过程。不对 第23题: 由E-R图导出关系数据模型时,如两实体间是1:n联系,应把一方实体的关键字纳入另一方实体的关系中,同时把联系的属性也一并纳入另一方的关系中。不对 第24题: 项目质量管理是指为使项目能达到用户满意的预先规定的质量要求和标准所进行的一系列管理与控制工作。包括进行质量规划,安排质量保证措施,设定质量控制点,对每项活动进行质量检查和控制等。对 第25题: CIO是从企业的全局和整体需要出发,直接领导与主持全企业的信息资源管理工作的企业高层管理人员。CIO产生于信息管理发展的竞争情报阶段。对 第26题: 对信息资源进行有效管理,不仅要考虑信息系统的输入部分和输出部分,更应该重视将输入数据转

毕业设计说明范文(艺术类).

毕业设计说明范文(艺术类). 案场各岗位服务流程 销售大厅服务岗: 1、销售大厅服务岗岗位职责: 1)为来访客户提供全程的休息区域及饮品; 2)保持销售区域台面整洁; 3)及时补足销售大厅物资,如糖果或杂志等; 4)收集客户意见、建议及现场问题点; 2、销售大厅服务岗工作及服务流程 阶段工作及服务流程 班前阶段1)自检仪容仪表以饱满的精神面貌进入工作区域 2)检查使用工具及销售大厅物资情况,异常情况及时登记并报告上级。 班中工作程序服务 流程 行为 规范 迎接 指引 递阅 资料 上饮品 (糕点) 添加茶水工作1)眼神关注客人,当客人距3米距离侯客迎询问客户送客户

注意事项 15度鞠躬微笑问候:“您好!欢迎光临!”2)在客人前方1-2米距离领位,指引请客人向休息区,在客人入座后问客人对座位是否满意:“您好!请问坐这儿可以吗?”得到同意后为客人拉椅入座“好的,请入座!” 3)若客人无置业顾问陪同,可询问:请问您有专属的置业顾问吗?,为客人取阅项目资料,并礼貌的告知请客人稍等,置业顾问会很快过来介绍,同时请置业顾问关注该客人; 4)问候的起始语应为“先生-小姐-女士早上好,这里是XX销售中心,这边请”5)问候时间段为8:30-11:30 早上好11:30-14:30 中午好 14:30-18:00下午好 6)关注客人物品,如物品较多,则主动询问是否需要帮助(如拾到物品须两名人员在场方能打开,提示客人注意贵重物品); 7)在满座位的情况下,须先向客人致

待; 阶段工作及服务流程 班中工作程序工作 要求 注意 事项 饮料(糕点服务) 1)在所有饮料(糕点)服务中必须使用 托盘; 2)所有饮料服务均已“对不起,打扰一 下,请问您需要什么饮品”为起始; 3)服务方向:从客人的右面服务; 4)当客人的饮料杯中只剩三分之一时, 必须询问客人是否需要再添一杯,在二 次服务中特别注意瓶口绝对不可以与 客人使用的杯子接触; 5)在客人再次需要饮料时必须更换杯 子; 下班程 序1)检查使用的工具及销售案场物资情况,异常情况及时记录并报告上级领导; 2)填写物资领用申请表并整理客户意见;3)参加班后总结会; 4)积极配合销售人员的接待工作,如果下班

湘潭大学毕业设计说明书模板 (1)

湘潭大学 毕业设计说明书题目: 学院: 专业: 学号: 姓名: 指导教师: 完成日期:

此处装订三个表,依次是: 2.毕业论文(设计)任务书 3.毕业论文(设计)评阅表 4.毕业论文(设计)鉴定意见

目录 一、引言(不另外写综述,综述放在引言部分) (1) (一) 引言应包括的基本内容 (1) 二、文章层次关系 (1) 三、论文(设计说明书)编排顺序及字体 (1) 四、图表公式 (2) 五、要求 (2) 六、参考文献格式 (2) 图目录 图1自适应的视频流传输模型(五号宋体,居中) (2) 表目录 表1表格题目(5号宋体,居中排) (2)

中文题目 摘要:中文摘要内容,主要由3部分组成:待解决的问题、过程及方法、结论。一般为200字左右为宜。中文摘要编写要求:①摘要中应排除本学科领域已成为常识的内容;②切忌将应在引言中出现的内容写入摘要,一般不要对论文内容作诠释和评论(尤其是自我评价);③用第三人称,不必使用“本文、作者”、“我们、笔者等字样作为主语,以方便编辑刊用;④缩略语代号,除了相邻专业读者也能清楚理解的以外,在首次出现时必须加以说明。 关键词:关键词1; 关键词2; 关键词3(各词间用分号“;”隔开) Title 英文题目 Abstract:Abstract,与中文摘要对应 Keywords:Keyword;与中文关键词对应,“;”隔开

一、引言(不另外写综述,综述放在引言部分) (一) 引言应包括的基本内容 1.叙述撰写该论文的目的和现实意义 2.叙述该选题的国内外研究现状,有何代表性的研究成果或研究进展情况等 3.叙述选题的主要观点、研究方法(技术路线)、创新之处等 二、文章层次关系 文章层次关系按如下方式: 一、 (一) 1. 1) 二、 1. 等 按照上面的层次关系写,所有标题行前面空两格,标题尾不加标点符号,一级标题(宋体、3号字、加粗);二级标题(宋体、4号字、加粗)。 三、论文(设计说明书)编排顺序及字体 1.封面 (1)湘潭大学、毕业论文(或毕业设计说明书)(隶书、小初号字、加粗) (2)题目、学院、专业、学号、姓名、指导教师、完成日期(宋体、3号字、加粗) 2.毕业论文(设计)任务书 3.毕业论文(设计)评阅表 4.毕业论文(设计)鉴定意见(以上参见教务处网页) 5.目录 各章节标题(宋体、4号),其余(宋体、小4号)。 6.中文题目、摘要、关键词;英文题目、摘要、关键词 中文题目(宋体、3号字、加粗),中文摘要、关键词(宋体、5号字,“摘要”、“关键词”五个字用宋体、小4号字、加粗);英文题目(Times New Noman, 3号字),Abstract、Keywords(Times New Noman, 小4号字)。 7.正文(含引言) 宋体、小4号字 8.注释、参考文献 宋体、5号字,注释一般用①,②,…表示,参考文献一般用[1],[2],….表示。

毕业设计说明范文艺术类

纸页,上、下、左、右距为A4使用1.5cm ,页眉、页脚为2.5cm 右斜页眉字小五,齐 华文新魏字体:学XXX 大初号,居中,加粗(空一格,行距:单倍行距) 毕业设计说明 书字体:隶书,小初号,居中,加粗字体:宋体,四号,【艺术类】居中,加粗(空四格,行距:单倍行距) 题目:女性时尚高跟鞋系列设计 学院:美术学院 专业、年级:艺术设计专业2007级3 班(产品造型方向)

姓名: 学号: 指导教师:职称: 完成时间:年月日 要求:1、填写题目、学院等信息时,字体:隶书,小二号;2、填写信息内容必须靠中排放; 3、完成时间为交稿时间; 4、专业年级中,班级的填写严格按照教务系统上显示为准. 声明 本人声明所呈交的设计作品及论文是本人在指导教师指导下进行的研究工作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得成都大学或其他教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确说明并表示谢意。

本设计及论文成果是本人在成都大学读书期间在指导教师指导下取得的,设计及论文成果归成都大学所有,特此声明。 学生签名: 指导教师签名:

家 因此要对他们进行统一,使他们能在同一色调上进行细微的变化,达到和谐的效果。色彩的运用会受到人的年龄、性别等各种因素的影响,而人的心理感受及联想与色彩的关系问题也是息息相关的。色彩还能造成不同的空间感,每个房间都不可能单独存在一种色调,不同的区域对色彩的要求也不一样。房间布置时应选择适合的“快乐”色彩,会有助于下班回到家里后松弛紧张的神经,觉得放松舒适。不同的房间功用不同,颜色也不该一样;就是相同功能的房间,如同样是 客厅、卧室,有时也会因居住者秉性不同而有差异。 (空一格) 摘要要求:摘要内容即内容提要,浓缩色彩;空间;心理;关系【关键词】:概括论文 报告内容、方法和观点以及成

计算机专业毕业设计说明书模版

目录 摘要 (1) Abstract (2) 第1章章标题 (3) 1.1 节标题 ............................................................................................................... u 第2章章标题. (v) 2.1 节标题 .............................................................................................................. w 参考文献. (x) 附录............................................................................................................. y 设计说明书编页码的约定: 1、目录本身用罗马数字编页码 2、目录内容和正文从摘要开始用阿拉伯数字编页码 正文中的程序代码用Times New Roman和宋体5号字

中文题目 摘要:本毕业设计说明书…… …… 关键词:关键词1;关键词2;关键词3;……

English Title Abstract: This paper …… …… Key words: key word1; key word2;……

第1章章标题 1.1 节标题 正文正文正文正文正文正文正文正文正文正文正文正文正文正文正文…… …… 1.1.1 小节标题(如果没有则不要) 本小节内容 ………… ………… ………… 图1-1 椭圆形

数据库基础与应用试题答案

委托开发的一个关键问题是要解决技术人员与企业的业务人员之间的沟通问题。√ 以信息资源的开发与利用为中心的信息管理强调以计算机技术为核心,以管理信息系统为主要阵地,以解决大量数据处理和检索问题为主要任务。× 根据信息技术扩散模型,在集成阶段,企业通过总结经验教训,开始认识到运用系统的方法,从总体出发,全面规划,进行信息系统的建设与改造。× 对于企业信息化的发展阶段,不同的学者有不同的论述,建立了不同的模型。比较著名的模型有两个,一个是世界银行报告中提出的信息技术的扩散模型,另一个是诺兰模型。√ 战略目标集转化法虽然也首先强调目标,但它没有明显的目标导引过程。它通过识别企业“过程”引出了系统目标,企业目标到系统目标的转换是通过企业过程/数据类矩阵的分析得到的。× 生命周期法按用户至上的原则,严格区分工作阶段,整个开发过程工程化。√ 原型法充分利用最新的软件工具很快形成原型。一方面,将系统调查、系统分析、系统设计三个阶段融为一体,缩短了开发周期。√ 在管理信息系统的分析过程中,通过制作业务过程和数据的U/C矩阵可以帮助我们合理划分系统逻辑功能(即:系统功能模块的划分)。√ 对于企业来说管理信息系统只存在有无的问题,并无优劣之分。× 管理信息系统纯粹是一个技术系统,人的作用只是微乎其微。× 管理信息系统由信息的采集、信息的传递、信息的储存、信息的加工、信息的维护和信息的使用五个方面组成。√ 管理信息系统从概念上看由四大部件组成:信息源、信息处理器、信息用户和信息管理者。√ 管理信息系统能提供信息,具有支持企业或组织的运行、管理和记录功能。√ 管理信息系统很难实测企业的各种运行情况。× 管理信息系统的特点是必须通过传统物流服务方式才能实现信息传递。× 在信息管理中, 信息和数据是两个在概念上有所区别的术语,所以任何时候针对任何对象,信息和数据都是绝对而言的,不能混淆。× 在对这些信息的加工中,按处理功能的高低可把加工分为预加工、综合分析和决策处理。√ 许多企业都能从记录到的客户销售数据中经过仔细分析得到潜在的客户需求并极力追求进一步的市场份额,这说明了信息系统可以改进企业的生产销售方式。√ 管理信息系统是仅仅服务于管理控制层的信息系统,所以从广义上,MIS对各个子系统具有管理、控制、计划的功能。× 根据诺兰模型,在信息管理阶段,信息系统面向企业整个管理层次,从低层的事务处理到高层的预测与决策都能提供信息支持。√ 划分时应同时遵循两点原则:沿对角线一个接一个地画小方块,即不能重叠,又不能漏掉任何一个数据和过程;小方块的划分是任意的,但必须将所有的“C”元素都包含在小方块内。√

大连民族大学毕业设计模版

大连民族大学本科毕业设计(论文) 业: 学生姓名: 学号: 指导教师: 评阅教师: 完成日期: 大连民族大学

摘要 “摘要”是摘要部分的标题,不可省略。 标题“摘要”选用模板中的样式所定义的“标题1”,再居中;或者手动设置成字体:黑体,居中,字号:小三,1.5倍行距,段后11磅,段前为0。 摘要是毕业设计(论文)的缩影,文字要简练、明确。内容要包括目的、方法、结果和结论。单位制一律换算成国际标准计量单位制,除特别情况外,数字一律用阿拉伯数码。文中不允许出现插图。重要的表格可以写入。 摘要正文选用模板中的样式所定义的“正文”,每段落首行缩进2个汉字;或者手动设置成每段落首行缩进2个汉字,字体:宋体,字号:小四,行距:固定值22磅,间距:前段、后段均为0行,取消网格对齐选项。 篇幅以一页为限,字数为300字左右。 摘要正文后,列出3-8个关键词。“关键词:”是关键词部分的引导,不可省略。关键词请尽量用《汉语主题词表》等词表提供的规范词。 关键词与摘要之间空一行。关键词词间用分号间隔,末尾不加标点,3-5个,黑体,小四,加粗。 关键词:写作规范;排版格式;毕业设计(论文)

The Subject of Undergraduate Graduation Project (Thesis) of Dalian Minzu University Abstract 外文摘要要求用英文书写,内容应与“中文摘要”对应。使用第三人称,最好采用现在时态编写。 “Abstract”不可省略。标题“Abstract”选用模板中的样式所定义的“标题1”,再居中;或者手动设置成字体:黑体,居中,字号:小三,多倍行距1.5倍行距,段后11磅,段前为0。 标题“Abstract”上方是论文的英文题目,字体:Times New Roman,居中,字号:小三,行距:1.5倍行距,间距:前段、后段均为0行,取消网格对齐选项。 Abstract正文选用设置成每段落首行缩进2字,字体:Times New Roman,字号:小四,行距:固定值22磅,间距:前段、后段均为0行,取消网格对齐选项。 Key words与Abstract之间空一行。Key words与中文“关键词”一致。词间用分号间隔,末尾不加标点,3-8个,Times New Roman,小四,加粗。 Key Words:Write Criterion;Typeset Format;Graduation Project (Thesis)

VBNET数据库编程基础教程

VBNET数据库编程基础教程 众所周知,https://www.doczj.com/doc/0c17283117.html,自身并不具备对数据库进行操作的功能,它对数据库的处理是通过.NET FrameWork SDK中面向数据库编程的类库和微软的MDAC来实现的。其中,https://www.doczj.com/doc/0c17283117.html,又是.NET FrameWork SDK中重要的组成部分。要了解https://www.doczj.com/doc/0c17283117.html,的数据库编程,首先要明白https://www.doczj.com/doc/0c17283117.html,的工作原理以及相关的对象、方法、属性。本文将结合具体实例为你简单介绍https://www.doczj.com/doc/0c17283117.html,数据库访问对象以及https://www.doczj.com/doc/0c17283117.html,数据库编程基本方法。 一、https://www.doczj.com/doc/0c17283117.html,数据库访问对象 (一)https://www.doczj.com/doc/0c17283117.html,简介 https://www.doczj.com/doc/0c17283117.html,是由微软Microsoft ActiveX Data Object(ADO)升级发展而来的。是在.NET中创建分布式数据共享程序的开发接口。https://www.doczj.com/doc/0c17283117.html,的数据存取API提供两种数据访问方式,分别用来识别并处理两种类型的数据源,即SQL Server 7.0(及更高的版本)和可以通过OLE DB进行访问的其他数据源。为此ADO.NE T中包含了两个类库,System.Data.SQL库可以直接连接到SQL Server的数据,System.Data.ADO库可以用于其他通过OLE DB进行访问的数据源。如Acces s数据。 (二)https://www.doczj.com/doc/0c17283117.html,的名称空间 https://www.doczj.com/doc/0c17283117.html,是围绕System.Data基本名称空间设计,其他名称空间都是从Syste m.Data派生而来。它们使得https://www.doczj.com/doc/0c17283117.html,不仅访问DataBase中的数据,而且可以访问支持OLE DB的数据源。 当我们讨论https://www.doczj.com/doc/0c17283117.html,时,实际讨论的是System.Data和System.Data.OleDb 名称空间。这两个空间的所有类几乎都可以支持所有类型的数据源中的数据。这里我们讨论与后文实例有关的类。即OleDbconnection、OleDbDataAdapter、D ataSet和DataView。 上面列举的类中没有OleDb前缀的,派生自System.Data空间,有此前缀的派生自System.Data.OleDb空间。在使用中,如果要引用OleDb前缀的类,必须导入System.Data.OleDb名称空间。语法如下: Imports System.Data.OleDb 使用没有此前缀的类必须导入System.Data名称空间。语法如下: Imports System.Data

(完整版)毕业设计说明书范文

目录 第一章前言..............................................................................................................................................第二章工程概述..................................................................................................................................... 2.1 设计概述............................................................................................................................................ 2.2 沈阳万科柏翠园2#楼电气系统设计 ........................................................................................ 2.2.1 380220V低压供配电系统 ........................................................................................................ 2.2.2 照明系统 ....................................................................................................................................... 2.2.3 防雷与接地系统 ......................................................................................................................... 2.2.4 等电位连接................................................................................................................................... 2.2.5 电话系统 ....................................................................................................................................... 2.2.6 有线电视系统.............................................................................................................................. 2.2.7 火灾自动报警系统.....................................................................................................................第三章照明、插座系统设计.............................................................................................................. 3.1 照明系统概述................................................................................................................................... 3.1.1 照明方式 ....................................................................................................................................... 3.1.2 照明种类 ....................................................................................................................................... 3.1.3 照度计算 ....................................................................................................................................... 3.1.4 导线的选择................................................................................................................................... 3.2 照明和插座的设计 ......................................................................................................................... 3.2.1 照明设计的原则及要求............................................................................................................ 3.2.2 插座设计的原则及要求............................................................................................................ 3.3 万科柏翠园2#楼插座系统设计 ................................................................................................. 3.4 万科柏翠园2#楼照明系统设计 ................................................................................................. 3.4.1 照明设计概述.............................................................................................................................. 3.4.2 照明平面设计..............................................................................................................................

相关主题
文本预览
相关文档 最新文档