摘要: 在数据访问层对数据库进行操作的设计上,主要有这么几种:拼接字符串,带构造参数的基本Sql语句,存储过程,视图等。因为这次做系统主要是为了促进我们学习,所以在本次机房收费系统中,我分别尝试了这几种方式。举几个例子:A、根据条件查询上下机记录时,采用带参数的Sql语句,以上下机记录表,学生信息表,上机卡信息表为基表进行联合查询。B、在添加结账信息,查询充值记录和卡内余额等时采用的是带输入参数或输出参数的存储过程。在创建存储过程时,还尝试采用了控制语句和内置函数,尤其是添加结账信息时。C、查询学生基本信息的时候,牵扯到了视图的方式,采用了拼接字符创的形式去查询由上机卡和学生信息表为基表建立的视图。下 阅读全文
posted @ 2011-11-08 18:10 spring高手 阅读(504) 评论(0) 推荐(0) 编辑
摘要: 这次机房收费系统的数据库设计与上一次有很大不同,之所以会引起不同,是因为遵循了数据库设计第三范式。什么是数据库设计第三范式在我以前的文章中有所体现,《数据库设计第三范式》我们先来看看前后的不同之处:第一次共有10张表:结账信息,基本数据,上下机记录,退卡信息,正在上机信息,正在工作老师信息,充值记录,学生信息,用户信息,工作记录。而第二次,精简到了9张表:合并正在上机信息表和上下机记录表,合并了正在值班老师信息表和工作记录表,将学生信息表分为学生基本信息表和上机卡信息表减少了冗余信息。到底怎么减少了冗余信息,举个例子:原来的上下机记录字段包括:序号,卡号,学号,学生姓名,学院,年级,性别,上机 阅读全文
posted @ 2011-11-08 16:43 spring高手 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 昨天晚上找了崔成龙帮忙把新写完的机房收费系统测试了一遍.因为有第一次的经验,这次比上次错误少多了.不过还是测出了一些问题.1、学生基本信息维护功能中,点击DataGridView列标题可以排序,导致获取行信息不对称。解决:搜索MSDN找到DataGridView,在它的事件说明中,发现列标题的单击事件,可以在这个事件中处理信息不对称的问题。2、基本数据合理性判断,例如最小充值金额不能大于最大充值金额,不能小于0,准备时间不能大于单位计费时间等等解决:根据基本常识,在相应的方法中加入判断即可。3、查询学生信息,缺少一个查不到信息的判断,否则导致相应的更新信息文本框获取出错解决:加上判断即可4、用 阅读全文
posted @ 2011-11-06 16:49 spring高手 阅读(142) 评论(0) 推荐(0) 编辑
摘要: System.Collections 命名空间包含接口和类,这些接口和类定义各种对象(如列表、队列、位数组、哈希表和字典)的集合。System.Collections.Generic 命名空间包含定义泛型集合的接口和类,泛型集合允许用户创建强类型集合,它能提供比非泛型强类型集合更好的类型安全性和性能。System.Collections.Specialized 命名空间包含专用的和强类型的集合,例如,链接的列表词典、位向量以及只包含字符串的集合。在System.Collections命名空间中提供了许多接口:IEnumerable循环集合项目ICollection可以获取集合中项目个数ILis 阅读全文
posted @ 2011-10-26 15:56 spring高手 阅读(795) 评论(0) 推荐(0) 编辑
摘要: 一、概要我们构建程序的时候,会遇到这样的状况,对象有某个行为,但是在不同的场景中,使用策略模式,可以把它们一个个封装起来,并且使它们可相互替换,而起使得算法可独立于使用它的客户而变化。二、生活举例对于一个商店来讲,对不同的客户要报不同的价格,比如:(1)对普通客户或者是新客户报的是全价(2)对老客户(会员)报的价格,要给予一定的折扣(3)对大客户(批发)报的价格,根据大客户购买量,给予一定的折扣(4)根据不同的时间段,例如工作日和节假日等,可能价格仍然不同。处理复杂的报价功能,就会用到策略模式。三、实现思路四、类图五、注意点1、策略模式的设计原则即把一个类中经常改变或者将来可能改变的部分提取出 阅读全文
posted @ 2011-10-20 11:42 spring高手 阅读(2077) 评论(0) 推荐(0) 编辑
摘要: 接上篇《机房收费系统重构(一)》二、概要设计完成了用例图,并用结合用例图完善了一下需求分析说明书,忘记是第几次修订需求分析说明书。有了用例图,很自然就进入了概要设计阶段。我认为这一阶段就是结合包图解决系统的基本架构。在这里采用了三层架构(符合高内聚,低耦合的思想),并结合了一些设计模式。下面看我的包图:可以看到,这个包图,是从最经典的三层UI-BLL-DAL加入设计模式演化而来。之所以采用抽象工厂模式是考虑到更换数据库的方便。而应用外观模式,是为了解决UI层和BLL层耦合性过高的问题,UI层不必知道BLL层的存在,Facade(外观)知道BLL层的哪些类负责处理哪些请求,它将UI的请求代理给适 阅读全文
posted @ 2011-10-15 16:17 spring高手 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 从10月1号开始重构学校机房收费系统,没想到这次重构,推翻,再重构……用了两周时间。这次整体架构采用三层,并融入了一些设计模式。下面介绍这次重构的过程:一、从UML用例图开始对于机房收费系统的需求已经很熟悉了,用例和角色都已经提取出来了,在这里遇到一个问题,就是,究竟是根据角色划分用例,还是根据功能划分用例?按角色来画:更容易下一步建模,基本上一个用例对应一个UI层的一个界面,而且一个用例对应一个业务逻辑。但在机房收费系统中,不利于对系统的宏观把控按功能模块来画:使整个系统看起来更加直观,更容易宏观把握整个系统的功能需求。但对于机房收费系统,显然不利于下一步建模,抽象类的时候很容易漏掉方法。两 阅读全文
posted @ 2011-10-15 16:16 spring高手 阅读(576) 评论(0) 推荐(0) 编辑
摘要: 忘记是第几次重构了,这次改概要设计文档的时候,接受了袁福彪师兄的指导.牵扯到一个数据建模E-R图,找资料,学习了一下.一、E-R图,实体-联系模型(简称E-R模型),它提供不受任何DBMS约束的面向用户的表达方法,在数据库设计中被广泛用作数据建模的工具。这里不再赘述什么是E-R图了,自己百度百科去吧.二、主要举两个例子:1、图书借阅管理系统1.1数据库要求提供下述服务:(1)可随时查询书库中现有书籍的品种、数量与存放位置。所有各类书籍均可由书号惟一标识。(2)可随时查询书籍借还情况,包括借书人单位、姓名、借书证号、借书日期和还书日期。约定:任何人可借多种书,任何一种书可为多个人所借,借书证号具 阅读全文
posted @ 2011-10-13 10:11 spring高手 阅读(321) 评论(0) 推荐(0) 编辑
摘要: 一、概述对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。GOF 《设计模式》这样的依赖关系过于紧密,软件不能很好地适应变化。使用面向对象技术,我们可以将这种依赖关系弱化,即降低耦合。二、生活举例1、我们每个人都有银行卡,通常会有一项业务,余额变更通知。这个便很好地体现了观察者模式。监控银行卡内余额的变化,当我们取钱,转账等原因导致余额变化时,系统会自动采用多种方式告知我们余额情况,可以是短信通知,可以是Email通知,也可以寄账单等等。2、报社、订阅系统和订报人之间的关系,订报人通过订阅系统订报,一旦报社有新的报纸,订阅系统就会派人送或者邮寄 阅读全文
posted @ 2011-10-10 14:36 spring高手 阅读(350) 评论(0) 推荐(1) 编辑
摘要: 一个成功的管理系统,是由:[50% 的业务 + 50% 的软件] 所组成,而 50% 的成功软件又有 [25% 的数据库 + 25% 的程序] 所组成,数据库设计的好坏是一个关键。如果把企业的数据比做生命所必需的血液,那么数据库的设计就是应用中最重要的一部分。有关数据库设计的材料汗牛充栋,大学学位课程里也有专门的讲述。不过,就如我们反复强调的那样,再好的老师也比不过经验的教诲。所以我归纳历年来所走的弯路及体会,并在网上找了些对数据库设计颇有造诣的专业人士给大家传授一些设计数据库的技巧和经验。精选了其中的 60 个最佳技巧,并把这些技巧编写成了本文,为了方便索引其内容划分为 5 个部分:第 1 阅读全文
posted @ 2011-10-08 19:10 spring高手 阅读(174) 评论(0) 推荐(0) 编辑