面向对象程序设计课程设计。
一、设计要求。
1、课程设计以3-4人为一组,每人一个模块;2、课程设计时间为1周;
在处理系统的时候,要从分析系统的需求入手,根据系统需求进行详细分析,明确系统功能,然后设计系统整体架构以及划分系统模块,按照模块分配小组中每个组员的具体任务,完成设计。
二、系统设计规范。
1、命名规范。
1)命名总规则。
所有名称的字符范围为:a-z, a-z, 0-9和_(下划线)。不允许使用其他字符作为。
名称。采用英文单词或英文短语(包括缩写)作为名称,不使用无意义的字符或汉语拼音。名称应该清晰明了,能够准确表达事物的含义,最好可读,遵循“见名知意”的原。
则。2)表命名规范。
不使用tab或tbl作为表前缀(本来就是一个表,为什么还要说明)表名以代表表的内容的一个和多个名词组成,以下划线分隔,每个名词的第一个字。
母大写。使用表的内容分类作为表名的前缀:如,与用户信息相关的表使用前缀user_,与。
内容相关的信息使用前缀content_。
表的前缀以后,是表的具体内容的描述。如:用户信息的表名为:user_info。一些作为多对多连接的表,可以使用两个表的前缀作为表名:如,用户信息表。
user_info,用户分组表group_info,这两个表建立多对多关系的表名为:user_group_relation。当系统中有一些少量的,重复出现的值时,使用字典表来节约存储空间和优化查询。
如地区、系统中用户类型的代号等。这类值不会在程序的运行期变化,但是需要存储在数据库中。就地区而言,如果我们要查询某个地区的记录,则数据库需要通过字符串匹配的方式来查询;如果将地区改为一个地区的代号保存在表中,查询时通过地区的代号来查询,则查询的效率将大大提高。
程序中宜大量的使用字典表来表示这类值。字典表中保存这类值的代号和实体的集合,以外键的方式关联到使用这类值的表中。然而,在编码阶段,程序员并不使用字典表,因为首先查询字典表中实体的代号,违背了提高查询效率的初衷。
程序员在数据字典的帮助下,直接使用代号来代表实体,从而提高效率。为了提高数据库的数据完整性,在开发阶段可以保留完整的字典表和普通表的外键。
约束。但是在数据库的运行阶段,应该将普通表和字典表的外键删除,以提高运行效率,特别是某些表使用了很多字典表的情况。字典表统一以dic_作为前缀。(3)字段命名规范。
字段不使用任何前缀(表名代表了一个名称空间,字段前面再加前缀显得罗嗦)字典名也避免采用过于普遍过于简单的名称:例如,用户表中,用户名的字段为。
username比name更好。布尔型的字段,以一些助动词开头,更加直接生动:如,用户是否有留言hasmessage,用户是否通过检查ischecked等。
字段名为英文短语、形容词+名词或助动词+动词时态的形式表示,大小写混合,遵。
循“见名知意”的原则。2、sql语句规范。
尽量不写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应该写成:
if exists()begin
set @nvar = 100end
sql批处理语句的空行和缩进与一般的结构化程序语言一致,应该保持良好的**。
格式。所有的sql关键字大写3、存储过程编码规范。
1)只允许应用程序通过存储过程访问数据库。
在应用程序中通过存储过程访问数据库,而不直接在**中写sql语句访问数据库。在数据库开发项目中,大量使用存储过程有很多的好处,首先看微软提供信息:
使用sql server中的存储过程而不使用存储在客户计算机本地的transact-sql程序的优势有:
允许模块化程序设计:
只需创建过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次。存储过程可由在数据库编程方面有专长的人员创建,并可独立于程序源**而单独修改。
允许更快执行:
如果某操作需要大量transact-sql**或需重复执行,存储过程将比transact-sql批**的执行要快。将在创建存储过程时对其进行分析和优化,并可在首次执行该过程后使用该过程的内存中版本。每次运行transact-sql语句时,都要从客户端重**送,并且在sql server每次执行这些语句时,都要对其进行编译和优化。
减少网络流量:
一个需要数百行transact-sql**的操作由一条执行过程**的单独语句就可实现,而不需要在网络中发送数百行**。
可作为安全机制使用:
即使对于没有直接执行存储过程中语句的权限的用户,也可授予他们执行该存储过程的权限。
除此以外,使用存储过程的好处还有:在逻辑上,存储过程将应用程序层和数据库物理结构分离开来。存储过程形成了一。
个应用程序和数据库之间的接口。这样的接口抽象了复杂的数据库结构,符合极限编程中“基于接口编程”的思想。将主要的业务逻辑封装在存储过程中,能够避免在应用程序层写大量的**(在应。
用程序中通过字符串插入太长的sql语句影响效率,而且维护困难)。有助于提高开发效率,并且直接在查询分析器中调试存储过程,能够更早的发现系统中的逻辑问题,从而提高**的质量。
在**一类的应用系统中,sql注入式漏洞一直是难以完全杜绝的漏洞。如果只通。
过存储过程来访问数据库,能够大大减少这类安全性问题。(因此,就算是简单的只有一句的sql语句,也应该写成存储过程。)由于采用存储过程,应用程序的层面可以不关心具体的数据库结构,而只关心存储。
过程的接口调用。因此,当需求变更,表的结构必须要改变时,使用存储过程,只要参数不变,我们就只需要修改相应的存储过程,而不需要修改应用程序的**。这样的设计将减小需求变更对项目的影响。
使用存储过程,便于在项目后期或者运行中集中优化系统性能。在项目开发过程中,由于各种原因,往往无法编写高效的**,这个问题常常在项目后期或者在运行期体现出来。通过存储过程来封装对数据库的访问,可以在项目集成以后,通过试运行观察系统的运行效率,从而很容易找出系统的瓶颈,并能够通过优化存储过程的**来提高系统的运行效率。
这样的优化,比在运用程序中优化更有效,更容易。(2)命名规范。
存储过程的前缀和表名的前缀类似:把一系列表看成一个对象,字段为对象的属性,存储过程则为访问对象的方法。如:
添加用户的存储过程取名为:user_adduser存储过程使用模块的前缀来命名。如,用户管理的存储过程使用前缀user_。
存储过程的前缀之后,是动词+名词形式的存储过程名(也可以是动词短语)。(3)格式约定。
所有sql关键字大写。
使用良好的变量命名规范。
保持良好的结构,包括空行、缩进和空格等。块状的语句,一定要写上beginend在每个存储过程的开头加上详细的注释:包括存储过程名称、参数说明、功能说明、
返回数据集说明、以及作者和版权声明。
每个存储过程内的**前后加上set nocount on和set nocount off。存储过程格式的示例如下:
name: user_adduser
purpose: add a user to system
parameters: @strusername the user’s login name
@strpwd the user’s password, encrypted by md5*@errno the error number, it’s a “output” param*@errmsg the error message, it’s a “output” param* returns: the user’s id, as a result set.
author: ahfu, ah_
copyright: copyrights by synet rights reserved.* create at:
2005-03-18last modify: 2005-03-19
create procedure user_adduser(
strusername varchar(20),@strpwd varchar(50),@errno int = 0 output,errmsg varchar(255)=null output)asbegin
set nocount on
*以下是存储过程的***/
set nocount offend
4)事物使用约定。
如果对记录的更改操作不止一次,则需要把这些操作写在事务中。事务必须显式提交或者取消。(5)游标使用约定。
若无必要,尽量不要使用游标。
包含游标的存储过程,必须对性能进行认真测试。4、数据库设计规范。
1)数据完整性规范(编码期)
为便于在程序的编码期查错,可以在设计数据库的时候尽可能多的加上约束。
check)。如,整型的字段的取值范围等,常常为field>0。同理,尽可能地在开发期间使用触发器来验证数据的完整性。
如果字段之间存在冗余,应该编写触发器来管理冗余的字段在开发阶段保存完整的主键、外键和唯一索引的约束。
原则:编码期间,数据完整性优先于性能。在保障系统正确运行的前提下尽可能的。
提高效率。2)数据库运行期优化。
在运行阶段删除不必要的约束(check)。尽量不要使用触发器尽量保留主键约束。
适当删除外键,以提高性能。
在运行期间,通过分析系统的访问量,创建索引来优化性能分析每个表可能的数据增长量,定义自动拆分表规则。将大表进行拆分来提高性能。预先考虑数据清理规则:
在什么情况下删除数据库中的旧数据,以此来提高性能。制定数据库备份和灾难恢复计划。
为效率考虑,可以在系统测试阶段适当增加冗余字段,或者冗余表。
分页的记录输出必须通过存储过程来实现,不能使用api游标来分页,这样可以提。
高分页的效率。
三、提交相关内容要求。
1、源程序:
按照课程设计的具体要求所开发的源程序,源程序的名字务必与所做题目相关。2、课程设计报告(具体格式见示例):(保存在word文档中,文件名要求按照"姓名-学号-设计系统名称"起名,如文件名为“张三-112054101-学生成绩管理系统。
doc”)。四、成绩评定。
学生课程设计的成绩根据程序检查情况以及上交情况来判定,成绩占课程总成绩的40%。
面向对象课程设计报告。
—学生成绩管理系统。
班级:1120541学号:01姓名:张三。
一、课程设计题目。
学生成绩管理系统。
二、需求分析。
需求分析正文。
三、概要设计。
概要设计正文。
四、详细设计。
详细设计正文。
五、程序使用说明、测试分析及结果。
正文。六、课程设计总结。
课程设计总结,包括设计过程中遇到的问题、心得体会以及建议。
七、参考文献。
C 课程设计
自动走迷宫小游戏。根据课堂讲授内容,做相应的自主练习,消化课堂所讲解的内容 通过调试典型例题或习题积累调试c 程序的经验 通过完成辅导教材中的编程题,逐渐培养学生的编程能力 用计算机解决实际问题的能力。同时在设计的过程中发现自己的不足之处,对以前所学过的知识理解的更加深刻,掌握得更加牢固。迷宫生成。...
c 课程设计
哈尔滨 课程设计报告。课程 c 学号 姓名 班级 教师 1.管理系统的功能说明。课程信息管理 能够增加数据,删除数据,显示数据,修改数据,按姓名和首字母查询数据和一些基本的程序功能。2.存储数据的描述。coursenumber 课程号coursename 课程名subject 所属专业xingzhi...
c 课程设计
目录。一。顺序结构。第1题1二。选择结构。第2题2三 循环结构。第3题3第4题4第5题6第6题7四。数组。第7题8第8题9第9题10五。函数第10题11六。结束语12 第1题。1.题目 编程序求半径为r,高为h的圆柱体的体积。2.问题描述 编程求圆柱体体积。3.问题分析 这道题基本处理步骤是输入,计...