当前位置:编程学习 > JAVA >>

期末作业!帮忙看看不,一点思路也没有啊,大二新生

课程设计:音像俱乐部会员管理系统
1.1 使用JSP实现会员管理系统
本课程设计将使用JSP及其相关技术实现一个网上会员管理系统。
现今基于互联网的电子商务日趋流行,某音像俱乐部一直从事各类音像产品的交易,拥有一批音像会员,传统的交易方式是等待会员上门进行服务,现希望实现网络信息化服务,即会员可以通过互联网进行各类音像产品的交易,可以使用JSP及其相关技术来实现这一目的。
首先要做的,是明确系统需求,即用户期望实现什么功能、达到什么目的。
1.1.1系统需求概述
  音像俱乐部期望提供基于互联网的音像产品交易服务,会员可以互联网上浏览各类音像产品的信息,如果对某个产品感兴趣,则可以订购该产品,系统能够在线自动生成相应的订单,会员提交订单后,可以查询自己的订单。音像俱乐部的员工会根据订单情况给会员发货,完成交易服务。
  普通用户需要在会员管理系统中注册后方可成为音像俱乐部的会员,因此系统必须为所有用户提供会员注册和系统登录的功能。
  会员管理系统还需要针对音像俱乐部的员工提供管理和维护各类音像产品和会员信息的接口。
  通过以上需求分析,可以总结出系统涉及的用户类型,主要包括以下两类:
音像俱乐部会员
音像俱乐部员工
  其中,需要为俱乐部会员实现的功能主要有:
会员注册与系统登陆
音像产品浏览
订购各类产品,包括添加、删除、修改订单
提交订单
从系统中注销
修改个人注册信息
查询个人订单
俱乐部员工可以实现的功能主要有:
系统登陆与注销
处理会员订单
管理和维护各类产品信息,包括添加、修改、删除、查询各类产品信息
管理和维护会员信息
同时,通过需求分析,可以知道系统所涉及的各类业务实体,包括:
会员
员工
产品
订单
系统所要实现的功能就是围绕这个几个实体进行各类操作,下面简要说明一下这
几个实体。
1.1.2 业务实体说明
会员管理系统中的业务实体主要包括会员(Member)、员工(Staff)、产品(Product)和订单(Order),下面详细介绍一下这些业务实体:
会员(Member):代表一个音像俱乐部用户实体,主要属性包括会员号、会员姓名、性别、所在城市、家庭住址、邮编、联系电话、Email、会员帐号以及密码等。
员工(Staff):代表一个音像俱乐部员工实体,主要属性包括员工姓名、员工帐号、密码等。
产品(Product):代表一个产品实体,在会员管理系统中,产品主要是各种音像产品,其主要属性包括产品类型、产品名称、产品单价、促销价、产品产地、导演、主演、发行日期、产品说明等。
订单(Order):代表一个订单实体,主要属性包括订单编号、订单产品ID、订单所属会员ID、订单日期、单价、订货数量、发货日期、发货地址等。
  其中一个会员可以进行多次订单交易,而一个订单也可以包含多个产品。员工则可以对会员、订单和产品进行各项维护工作。会员、订单和产品实体之间的业务实体关系如图1-1所示:

图 1-1 会员管理系统业务实体关系图
1.2系统构架设计
主要功能明确之后,开始对会员管理系统进行必要的系统设计。
  整个系统采用多层的构架模式,从上到下依次为视图层、业务层、DAO层(模型层)和数据库层。如图1-2所示:

图 1-2 会员管理系统的构架
视图层负责向用户展现数据,在会员管理系统中视图层主要有JSP页面构成。设计JSP页面的原则是尽量减少JSP页面中的JSP代码量,把具体的业务逻辑放在业务层实现,JSP页面只负责显示业务层实现的结果。对于一些公用的视图资源(如JSP页面中的图片、公用文字等),应当使用“<%@include%>”的形式包含,提高代码的可重用性。
  业务层负责具体业务逻辑的实现,在会员管理系统中通过编写专门的业务类来实现。各业务类从同一个抽象业务基类继承,例如分别负责处理会员、员工、订单和产品相关业务逻辑的业务类MemberBiz、StaffBiz、OrderBiz和ProductBiz都继承自抽象业务基类BaseBiz.,如图1-3所示:
  
  图1-3 业务类的继承关系
  所有业务类都从一个抽象的业务基类继承,这种做法使得业务类更加规范、可扩展性更强。例如BaseBiz中定义一些抽象的变量和方法,其子类必须实现这些变量和方法,BaseBiz类中已经实现的一些公用的方法,其子类会自动继承。
  模型层包含了系统中所涉及的业务实体、业务规则以及对数据库层的访问方法,模型层主要由各业务实体类和DAO类构成。在会员管理系统中,业务实体主要包含会员、员工、订单和产品,每个实体都有一个相应的实体类,这些实体类本质上是JavaBean,其中封装了实体的各项属性。实体类的作用是依据面向对象的原则描述一个业务实体,DAO模式的实现必须依赖这些实体对象。和业务类类似,各实体类也由同一个抽象实体基类BaseEntity继承而来,图1-4描述了这种继承关系:
  
  图 1-4 实体类的继承关系
  DAO类负责实现各实体类的业务规则以及对数据库的访问(例如实现在数据库中添加一个会员实体对象),因而也可以称之为“实体的DAO实现类”。DAO类也是由一个抽象的基类继承而来,所有的DAO类必须实现基类所定义的抽象方法,所有的DAO类都自动继承基类已经实现的方法,如图1-5所示: 

  图 1-5 DAO类的继承关系
  本质上DAO是实现数据持久化的一种设计模式,使用DAO模式访问数据库,使得数据库层和业务层相互隔离开来,这样业务层就无须关心具体的数据库产品形式和数据库操方式。一旦数据库发生变化,只需创建新的 DAO实现类,而无需更改业务类,这就是DAO模式的优点。
  数据库层实现了业务数据的物理存储,会员管理系统采用的是MySql数据库。
图1-2中的各层次之间的依赖关系是自上向下,即上层依赖下层实现,而下层则可以基本独立于上层进行实现。例如视图层的数据显示需要依赖于业务层所提供的相关功能,但业务层所提供的功能本身并不关注视图层的特点,即便视图层完全改变(例如由BS浏览器模式改为CS客户端应用程序),业务层仍然可以沿用。
采用分层模式,各层次的责任和界限非常清晰,因而有利于日后系统的扩展与维护。层与层之间的耦合度很小,因而各层都更灵活、具有更高的可复用性。但多层模式也有明显的缺点,即提高了软件的设计复杂度,同时也降低了软件的运行效率。但是随着计算机硬件技术急速发展和计算机软件规模的不断扩大,多层模式的益处已经远远大于其弊端了,事实证明,越复杂的应用系统,越是有必要采用多层模式。多层模式已经代替传统的二层、三层模式,逐渐成为软件开发的主流。
1.3 数据库设计
  每个实体在数据库中都有对应的表,图1-6显示了会员管理系统中的数据库表的关系模型。其中,会员(Member)和订单(Order)、订单(Order)和产品(Product)都是一对多的关系,订单(Order)中包含了Order_Product_ID和Order_Member_ID字段,分别用于和会员(Member)表中的ID和产品(Product)表中的ID相关联。员工(Staff)表和其他表没有直接的联系。
  各表中的ID都设置为int自增长型字段,用作各表的主键。ID字段本身不具有任何业务上的含义,因此不会随着具体业务的变化而改变,适于作为主键。

  图 1-6 会员管理系统数据库表的关系模型
会员管理系统采用的是MySql数据库,可以根据图1-6所示模型直接在SQL Server管理工具中创建各表。
1.4 各功能模块的实现
系统构架设计和数据库设计完成之后,就可以开始立足实现系统各项功能模块。系统
是依据多层构架模式实现的,为了更好的体现这一构架,在实现时也尽量按层次进行实现。按顺序首先是实现数据库层,即在数据库中创建各物理表。
其次是实现模型层,主要工作是编写各实体类和DAO类。
模型层实现后是编写相应业务类,实现业务层。
  最后是编写视图层的JSP页面。
  但在这些工作开展之前,还需要先完成两项必要的任务,即:
系统运行环境的配置
会员管理系统采用Tomcat 7 作为Web服务器,因此需要对Tomcat进行正确的安装和配置,主要包括数据库连接池的配置、虚拟目录的创建等。
实用类的编写
除了各业务类、DAO类和实体类外,还需要编写一些实用工具类,主要包括数据库工具类、日期处理类和字符串处理类。JSP页面、业务类、DAO类和实体类都需要访问这些工具类所包含的方法。
1.4.1 系统运行环境配置
首先是正确安装Tomcat 7。
  有关Tomcat 7 数据库连接池的配置,由于同样是采用MySql数据库,因而配置方法几乎完全一致。可以参照有关数据库连接池配置的介绍。需要注意的是,如果数据库类型不相同,则数据库连接池的配置方式会略有不同。
  测试数据库连接池无误后,就可以在Tomcat安装目录的webapps目录下创建一个Member虚拟目录,会员管理系统的所有程序和资源都位于该目录下:
图1-7显示了的会员管理系统的目录结构示例:

图 1-7 会员管理系统的目录结构
其中各类JSP页面分别位于member、order、product、staff目录以及Member根目录下,css目录和images目录包含的是系统需要的样式表和图片,WEB-INF目录的classes子目录中包含了各Java类文件,例如biz子目录中包含了各业务类,model子目录中包含了业务实体类和相应的DAO类。tools目录的base子目录中包含了一些抽象的基类,database和util子目录中包含了基本的实用类。
--------------------编程问答-------------------- 内事不决问百度,外事不决问股沟 --------------------编程问答-------------------- 关注我的博客:makaidong.com 一个神奇的网站:baigoogledu17.com   json8.net weiyunidc.com  --------------------编程问答-------------------- 先建数据库,四张表:会员、员工、产品、订单,弄好主外键关系,然后搭建工程项目,数据库连接成功后,包应该有:
musicSys.bean 放实体类:Vip、Employee、Product、Order
musicSys.dao 对会员、员工、产品、订单的增删改查操作,命名可以是VipDao、EmployeeDao...他们都应该是接口,类似:
public interface OrderDao{
   public void addOrder(String sql);
   public void deleteOrder(String sql);
   ...
}
musicSys.dao.impl 实现dao中的接口
public class OrderDaoImpl implements OrderDao{
   public void addOrder(String sql){
   //1、获取数据库连接
   //2、增加订单
   }
   public void deleteOrder(String sql){
   //1、获取数据库连接
   //2、删除订单
   }
   ...
}
musicSys.service  也是接口、业务类
public interface OrderService{
   public boolean addOrder(Order order);
   public boolean deleteOrder(int orderId);
}
musicSys.service.impl 实现业务类
public class OrderServiceImpl implements OrderService{
   private OrderDao orderDao = new OrderDaoImpl();
   public boolean addOrder(Order order){
        int orderId = order.getOrderId();
        .....
        String sql = "insert into Order(......)values(orderId.....)";
        orderDao.addOrder(sql);
   }
   public boolean deleteOrder(int orderId){
        String sql = "delete from Order where orderId ="+orderId ;
        orderDao.delete(sql);
   }
}
musicSys.servlet 控制层,放servlet
,其余类的操作类似这样的结构,大概就是这样吧 --------------------编程问答-------------------- 外包   简单的小程序 --------------------编程问答-------------------- 这么点东西都还没思路 只能说平时学习没多思考 --------------------编程问答-------------------- 大学的时候这些东西确实不会考虑太多
工作后就觉得很简单了
多接触 --------------------编程问答-------------------- 这么多,给我当时看都懒得看啊 --------------------编程问答--------------------
引用 7 楼 fengspg 的回复:
这么多,给我当时看都懒得看啊

--------------------编程问答--------------------
引用 5 楼 wxdinglei 的回复:
这么点东西都还没思路 只能说平时学习没多思考

才开始学,就感觉自己笨笨的,想思考啊,就不知道往哪思考啊,大神给个思路不 --------------------编程问答--------------------
引用 2 楼 jyghktk 的回复:
关注我的博客:makaidong.com 一个神奇的网站:baigoogledu17.com   json8.net weiyunidc.com 


引用 3 楼 XiaoPoHaio 的回复:
先建数据库,四张表:会员、员工、产品、订单,弄好主外键关系,然后搭建工程项目,数据库连接成功后,包应该有:
musicSys.bean 放实体类:Vip、Employee、Product、Order
musicSys.dao 对会员、员工、产品、订单的增删改查操作,命名可以是VipDao、EmployeeDao...他们都应该是接口,类似:
public interface OrderDao{
   public void addOrder(String sql);
   public void deleteOrder(String sql);
   ...
}
musicSys.dao.impl 实现dao中的接口
public class OrderDaoImpl implements OrderDao{
   public void addOrder(String sql){
   //1、获取数据库连接
   //2、增加订单
   }
   public void deleteOrder(String sql){
   //1、获取数据库连接
   //2、删除订单
   }
   ...
}
musicSys.service  也是接口、业务类
public interface OrderService{
   public boolean addOrder(Order order);
   public boolean deleteOrder(int orderId);
}
musicSys.service.impl 实现业务类
public class OrderServiceImpl implements OrderService{
   private OrderDao orderDao = new OrderDaoImpl();
   public boolean addOrder(Order order){
        int orderId = order.getOrderId();
        .....
        String sql = "insert into Order(......)values(orderId.....)";
        orderDao.addOrder(sql);
   }
   public boolean deleteOrder(int orderId){
        String sql = "delete from Order where orderId ="+orderId ;
        orderDao.delete(sql);
   }
}
musicSys.servlet 控制层,放servlet
,其余类的操作类似这样的结构,大概就是这样吧
谢谢了我来思考思考 --------------------编程问答--------------------
引用 8 楼 hljlt77 的回复:
Quote: 引用 7 楼 fengspg 的回复:

这么多,给我当时看都懒得看啊



引用 8 楼 hljlt77 的回复:
Quote: 引用 7 楼 fengspg 的回复:

这么多,给我当时看都懒得看啊


那你那时候都干啥啊,俺们期末考试作业啊,其实我们JSP才学完SERvlet,其他的都还没学,我就想提前了解了解,以后再看说不定就容易了 --------------------编程问答-------------------- 也挺简单的小程序 --------------------编程问答-------------------- 大二就开始学Jsp了啊?我记得当时我们被骑士巡游、TSP、关键路径等等期末作业搞的晕头转向。 --------------------编程问答-------------------- 很明显订单表一张是不够的,
假如一个会员在提交订单的时候
购买了几个不同的产品,  建议多一张订单详情表
订单详情储存每个产品,   订单表直接与订单详情挂钩 --------------------编程问答-------------------- 楼主如果想做好的点话,建议把购物车等一系列人性化功能也加上~
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,