1.1系统功能分析 物品基本信息,包括的数据项:物品ID,名称,类型,添加时间,拥有者等。 物品类别基本信息,包括的数据项:类别ID,名称,描述等。 拍卖物品信息,包括的数据项:拍卖ID,竞争时间,拍卖物品ID,价格,时间等。 用户基本信息,包括的数据项:用户ID,用户名,密码,权限等。 物品状态表,包括的数据项:ID,名称等。 用户必须先登录才能查看和添加物品竞拍信息等操作。 对于物品管理,本系统可以查询拍卖物品,添加物品,增加物品种类,竞价处理,以及发送邮件通知用户所参与的竞价。 添加物品种类系统根据有用户权限的才能操作此操作。 其具体关系和实现参考系统的实现。 1.2系统功能模块分析 对上述各项功能进行集中、分块,按照结构化程序设计的要求,得到如图1所示的系统功能模块图。 系统前台显示的Use Case图: 2.软件系统设计 2.1开发环境 本系统表现层(JSP+ SiteMesh)和中间层(Struts2+Spring+Hibernate)采用MyEclipse7.1为开发平台,后台采用MySQL数据库。开发语言:Java、JavaScript、JSP、Html、HSQL、PL/SQL等。运用的框架技术:Strtus2、Spring、Hibernate、SiteMesh(页面装饰器)、本系统模式采用B/S模式进行开发。硬件环境:本系统适用于CUP主频2.0G以上,内存256M以上。软件系统环境:适用Windows NT/Linux/Unix。 2.2数据库系统设计
2.21需求分析(持久层设计) 因为所有的用户必须先登录系统才可以使用该系统功能,而且系统中所有功能就是用户驱动的,因此本系统必须有一个实体:拍卖用户。 当用户登陆系统后,用户可以添加自己的拍卖物品,也可以浏览其他人正在拍卖的物品,还可以浏览自己已经赢取的物品。用户与物品用例如图1.0所示:
图1.0
从上图可以看出系统必然包括一个物品实体,该物品实体就代表了系统中正在拍卖的物品。用户可以添加物品,此用户和物品之间存在所属关系,用户也可以赢取物品,当用户赢取物品时,用户和物品之间存在赢取关系。得出用户和物品之间存在两种一对多的关联关系。 用户还可以对物品竞价,每个物品的历史竞价记录也应该被保存下来,这就意味着系统中包含了一个竞价实体,登陆用户可以添加竞价,也可以浏览自己的竞价记录。用户和竞价实体之间有图1.1所示的用例图: 从上图可知,系统中必须有竞价记录实体;用户可以添加竞价记录,可以添加多条竞价记录,可见用户和竞价记录实体之间存在一对多的关联关系。除此之外,用户添加竞价记录时,必须对指定物品添加竞价记录,同一物品可以有多个用户参与竞价,所以物品和竞价记录之间存在一对多的关联关系。 拍卖系统中物品是关键,但物品必须提供一个简单的分类,要对物品进行有效的分类管理,则系统还可以增加一个物品种类的实体;当物品进入拍卖系统后,可能存在拍卖中,流拍,被成功赢取3中状态,但考虑到系统的开放性,故把物品状态也保存在系统中,这就意味着系统应该有增加物品状态的实体。 综上所述,本系统包含5个实体:物品,用户,竞价记,录物品状态和物品种类。
通过对这些问题的综合分析就需要以下数据项和数据结构: 物品基本信息,包括的数据项:物品ID,名称,类型,添加时间,拥有者等。 物品类别基本信息,包括的数据项:类别ID,名称,描述等。 拍卖物品信息,包括的数据项:拍卖ID,竞争时间,拍卖物品ID,价格,时间等。 用户基本信息,包括的数据项:用户ID,用户名,密码,权限等。 物品状态表,包括的数据项:ID,名称等。 2.22概念设计(E-R图) 根据以上的分析,E-R图的设计包括:实体型、属性和联系的方法: 实体型:用长方形表示。 属性:用椭圆表示,用实体无向边与对应的实体连接。 联系:用菱形表示,用实体无向边与对应的实体连接,实体无向边上标上联系的类型(1:1,1:n或n:m)。
2.23逻辑设计 将上面的数据库概念结构(E-R图)转化为MySQL数据库系统所支持的数据模型,也就是数据库的逻辑结构。 根据实际的需求分析和概念设计,设计了名为:电子拍卖系统数据库。数据库由以下几个表组成,其详细信息如下表:
心得体会 本系统的使用了更为严格的MVC模式开发流行的轻量级开源框架开发,大大的降低了系统各个模块之间的耦合度,开发大的应用服务时,使开发更加简便,因为各个模块组件之间都是面向接口编程,高层和底层之间的依赖关系很小,表现层(JSP+ SiteMesh)和中间层(Struts2+Spring+Hibernate),后台数据服务运用开源数据库MySQL,IoC容器使用Spring框架,Spring容器负责管理系统中所有组件,是系统最大的工厂。数据的持久化使用Hibernate完成,对象和关系之间映射,使系统对数据的操作转变为对对象的操作,从而简化了开发难度。表现层的MVC框架使用Struts2,页面装饰使用SiteMesh框架,增加了代码复用性。这些框架都是目前最流行的轻量级java EE,其中Struts2与SiteMesh的无缝整合,为本系统的大规模应用场景提供了保证。 通过三个星期的设计,天天都在思考系统遇到的每一个环节的问题,错误,都认真的思考,和同学探讨;由于Struts2+Spring+Hibernate的整合开发,虽然系统自己定义了异常处理机制,但Struts2对底层(Hibernate)封装太严,对错误的提示信息很少,使系统调试错误的难度大大增加了;特别是逻辑组件(Spring)返回的错误信息,有时根本找不到错误的头绪,后来慢慢的和同学一起讨论问题的错误和思路和上Interent网查找程序中从来没有遇见过的错误,一个个问题也被顺利的解决了。 此次设计,我对WEB开发有了很高层次的提高。特别是自己自学了一些J2EE方面的新的流行技术(Struts2,Spring,Hibernate,SiteMesh)在此次课程设计的运用,发现不管什么新技术,只要我们我们去实践了,去认真的做了,都是有很大的收获。 |