课程设计面向对象程序设计课程设计_第1页
课程设计面向对象程序设计课程设计_第2页
课程设计面向对象程序设计课程设计_第3页
课程设计面向对象程序设计课程设计_第4页
课程设计面向对象程序设计课程设计_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象程序设计课程设计一、设计要求1、课程设计以4到5人为一组,每组一题;2、课程设计时间为1周;在处理每一个系统的时候,要从分析系统的需求入手,根据系统需求进行详细分析,明确系统功能,然后设计系统整体架构以及划分系统模块,按照模块分配小组中每个组员的具体任务,完成设计。二、系统设计规范1、命名规范(1)命名总规则 所有名称的字符范围为:a-z, a-z, 0-9 和_(下划线)。不允许使用其他字符作为名称。 采用英文单词或英文短语(包括缩写)作为名称,不使用无意义的字符或汉语拼音。 名称应该清晰明了,能够准确表达事物的含义,最好可读,遵循“见名知意”的原则。(2)表命名规范 不使用tab或

2、tbl作为表前缀(本来就是一个表,为什么还要说明) 表名以代表表的内容的一个和多个名词组成,以下划线分隔,每个名词的第一个字母大写。 使用表的内容分类作为表名的前缀:如,与用户信息相关的表使用前缀user_,与内容相关的信息使用前缀content_。 表的前缀以后,是表的具体内容的描述。如:用户信息的表名为:user_info。 一些作为多对多连接的表,可以使用两个表的前缀作为表名:如,用户信息表user_info,用户分组表group_info,这两个表建立多对多关系的表名为:user_group_relation。 当系统中有一些少量的,重复出现的值时,使用字典表来节约存储空间和优化查询。

3、如地区、系统中用户类型的代号等。这类值不会在程序的运行期变化,但是需要存储在数据库中。就地区而言,如果我们要查询某个地区的记录,则数据库需要通过字符串匹配的方式来查询;如果将地区改为一个地区的代号保存在表中,查询时通过地区的代号来查询,则查询的效率将大大提高。程序中宜大量的使用字典表来表示这类值。字典表中保存这类值的代号和实体的集合,以外键的方式关联到使用这类值的表中。然而,在编码阶段,程序员并不使用字典表,因为首先查询字典表中实体的代号,违背了提高查询效率的初衷。程序员在数据字典的帮助下,直接使用代号来代表实体,从而提高效率。 为了提高数据库的数据完整性,在开发阶段可以保留完整的字典表和普通

4、表的外键约束。但是在数据库的运行阶段,应该将普通表和字典表的外键删除,以提高运行效率,特别是某些表使用了很多字典表的情况。 字典表统一以dic_作为前缀。(3)字段命名规范 字段不使用任何前缀(表名代表了一个名称空间,字段前面再加前缀显得罗嗦) 字典名也避免采用过于普遍过于简单的名称:例如,用户表中,用户名的字段为username比name更好。 布尔型的字段,以一些助动词开头,更加直接生动:如,用户是否有留言hasmessage,用户是否通过检查ischecked等。 字段名为英文短语、形容词+名词或助动词+动词时态的形式表示,大小写混合,遵循“见名知意”的原则。2、sql语句规范 尽量不写

5、select * from ,而指明需要读取的具体字段。 尽量不在应用程序代码中直接写sql语句访问数据库。 避免在一行内写太长的sql语句,在sql关键字的地方将sql语句分成多行会更加清晰。如:select userid,username,userpwd from user_login where areaid=20修改成:select userid,username,userpwdfrom user_loginwhere areaid=20更加直观 在一些块形式的sql语句中,就算只有一行代码,也要加上beginend块。如:if exists()set nvar = 100应该写成:i

6、f exists()beginset nvar = 100end sql批处理语句的空行和缩进与一般的结构化程序语言一致,应该保持良好的代码格式。 所有的sql关键字大写3、存储过程编码规范(1)只允许应用程序通过存储过程访问数据库在应用程序中通过存储过程访问数据库,而不直接在代码中写sql语句访问数据库。在数据库开发项目中,大量使用存储过程有很多的好处,首先看微软提供信息:使用 sql server 中的存储过程而不使用存储在客户计算机本地的 transact-sql 程序的优势有: 允许模块化程序设计: 只需创建过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次。存储过程可由在

7、数据库编程方面有专长的人员创建,并可独立于程序源代码而单独修改。允许更快执行: 如果某操作需要大量 transact-sql 代码或需重复执行,存储过程将比 transact-sql 批代码的执行要快。将在创建存储过程时对其进行分析和优化,并可在首次执行该过程后使用该过程的内存中版本。每次运行 transact-sql 语句时,都要从客户端重复发送,并且在 sql server 每次执行这些语句时,都要对其进行编译和优化。 减少网络流量: 一个需要数百行 transact-sql 代码的操作由一条执行过程代码的单独语句就可实现,而不需要在网络中发送数百行代码。 可作为安全机制使用: 即使对于没

8、有直接执行存储过程中语句的权限的用户,也可授予他们执行该存储过程的权限。除此以外,使用存储过程的好处还有: 在逻辑上,存储过程将应用程序层和数据库物理结构分离开来。存储过程形成了一个应用程序和数据库之间的接口。这样的接口抽象了复杂的数据库结构,符合极限编程中“基于接口编程”的思想。 将主要的业务逻辑封装在存储过程中,能够避免在应用程序层写大量的代码(在应用程序中通过字符串插入太长的sql语句影响效率,而且维护困难)。有助于提高开发效率,并且直接在查询分析器中调试存储过程,能够更早的发现系统中的逻辑问题,从而提高代码的质量。 在网站一类的应用系统中,sql注入式漏洞一直是难以完全杜绝的漏洞。如果

9、只通过存储过程来访问数据库,能够大大减少这类安全性问题。(因此,就算是简单的只有一句的sql语句,也应该写成存储过程。) 由于采用存储过程,应用程序的层面可以不关心具体的数据库结构,而只关心存储过程的接口调用。因此,当需求变更,表的结构必须要改变时,使用存储过程,只要参数不变,我们就只需要修改相应的存储过程,而不需要修改应用程序的代码。这样的设计将减小需求变更对项目的影响。 使用存储过程,便于在项目后期或者运行中集中优化系统性能。在项目开发过程中,由于各种原因,往往无法编写高效的代码,这个问题常常在项目后期或者在运行期体现出来。通过存储过程来封装对数据库的访问,可以在项目集成以后,通过试运行观

10、察系统的运行效率,从而很容易找出系统的瓶颈,并能够通过优化存储过程的代码来提高系统的运行效率。这样的优化,比在运用程序中优化更有效,更容易。(2)命名规范 存储过程的前缀和表名的前缀类似:把一系列表看成一个对象,字段为对象的属性,存储过程则为访问对象的方法。如:添加用户的存储过程取名为:user_adduser 存储过程使用模块的前缀来命名。如,用户管理的存储过程使用前缀user_。 存储过程的前缀之后,是动词+名词形式的存储过程名(也可以是动词短语)。(3)格式约定 所有sql关键字大写 使用良好的变量命名规范 保持良好的结构,包括空行、缩进和空格等。 块状的语句,一定要写上beginend

11、 在每个存储过程的开头加上详细的注释:包括存储过程名称、参数说明、功能说明、返回数据集说明、以及作者和版权声明。 每个存储过程内的代码前后加上set nocount on 和set nocount off。 存储过程格式的示例如下:/* name: user_adduser* purpose: add a user to system* parameters: strusername the users login name* strpwd the users password, encrypted by md5* errno the error number, its a “output”

12、param* errmsg the error message, its a “output” param* returns: the users id, as a result set.* author: ahfu, ah_fu126* copyright: copyrights by synet 2005.all rights reserved.* create at: 2005-03-18 last modify: 2005-03-19*/create procedure user_adduser(strusername varchar(20),strpwd varchar(50),er

13、rno int = 0 output,errmsg varchar(255)=null output)asbeginset nocount on/*以下是存储过程的代码*/ set nocount offend(4)事物使用约定 如果对记录的更改操作不止一次,则需要把这些操作写在事务中。 事务必须显式提交或者取消。(5)游标使用约定 若无必要,尽量不要使用游标 包含游标的存储过程,必须对性能进行认真测试。4、数据库设计规范(1)数据完整性规范(编码期) 为便于在程序的编码期查错,可以在设计数据库的时候尽可能多的加上约束(check)。如,整型的字段的取值范围等,常常为field0。 同理,尽可

14、能地在开发期间使用触发器来验证数据的完整性。 如果字段之间存在冗余,应该编写触发器来管理冗余的字段 在开发阶段保存完整的主键、外键和唯一索引的约束。 原则:编码期间,数据完整性优先于性能。在保障系统正确运行的前提下尽可能的提高效率。(2)数据库运行期优化 在运行阶段删除不必要的约束(check)。 尽量不要使用触发器 尽量保留主键约束 适当删除外键,以提高性能 在运行期间,通过分析系统的访问量,创建索引来优化性能 分析每个表可能的数据增长量,定义自动拆分表规则。将大表进行拆分来提高性能。 预先考虑数据清理规则:在什么情况下删除数据库中的旧数据,以此来提高性能。 制定数据库备份和灾难恢复计划。 为效率考虑,可以在系统测试阶段适当增加冗余字段,或者冗余表。 分页的记录输出必须通过存储过程来实现,不能使用api游标来分页,这样可以提高分页的效率。三、提交相关内容要求1、源程序:按照课程设计的具体要求所开发的源程序,源程序的名字务必与所做题目相关。2、课程设计报告(具体格式见示例):(保存在word 文档中,文件名要求按照姓名-学号-设计系统名称起名,如文件名为“张三-042054101-网上书店.doc”)。四

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论