安装
互连网点播系统主要实现的功能:
1、视频文件的添加、删除和修改
      视频文件信息主要包括标题,描述,分类,视频的路径,视频所对应的图片路径。
2、系统用户的添加、删除和修改。
      用户信息包括用户名称、用户编号、密码和激活状态等。
3、视频分类的添加、删除和修改,并且指定哪些类的内容能被搜索到。
4、视频分类必须支持无限级分类
5、可以配置一些系统信息,如每页显示的新闻条数,流媒体播放的格式和地址。
6、按指定的分类进行搜索。
7、可以指定是显示当前分类的直属新闻还是显示当前分类下的所有新闻。

数据结构

接口设计
业务层:

数据层
数据层采用了工厂模式设计,以便适应使用sql语句和存储过程两种方式来对数据库进行操作。

重要的具体接口如下:
IDALNews:
/// <summary>
        /// 插入一条新闻
        /// </summary>
        /// <param name="model">要插入的新闻</param>
        int Insert(News model);

        /// <summary>
        /// 更新一条新闻
        /// </summary>
        /// <param name="model">要更新的新闻</param>
        int Update(News model);

        /// <summary>
        /// 通过新闻ID获取一条新闻
        /// </summary>
        /// <param name="newsId">需要获取的新闻的编号</param>
        News GetNewsById(int newsId);

        /// <summary>
        /// 删除一条新闻
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        int Delete(News model);

        /// <summary>
        /// 删除多条新闻
        /// </summary>
        /// <param name="idList">新闻编号字符串,如1,2,3,4</param>
        /// <returns></returns>
        int DeleteList(string idList);

        /// <summary>
        /// 通过新闻分类获取该分类下直接新闻列表
        /// </summary>
        /// <param name="newsClass">指定的新闻分类编号</param>
        /// <param name="pageSize">每页的新闻条数</param>
        /// <param name="currentPage">当前页码数</param>
        NewsList GetNewsListByNewsClass(string newsClass, Query query);

        /// <summary>
        /// 动态获取新闻分类的信息,该方法主要用在搜索场合
        /// </summary>
        /// <param name="query">排序以及分页条件</param>
        /// <param name="where">选择条件</param>
        NewsList GetNewsListByWhere(Query query, string where);

        /// <summary>
        /// 根据分类获取当前分类下的所有新闻,包括子分类下的新闻
        /// </summary>
        /// <param name="newsClass">指定的分类</param>
        /// <param name="query">排序以及分页条件</param>
        NewsList GetAllNewsListByNewsClass(NewsClass newsClass, Query query);
IDALNewsClass
       /// <summary>
        /// 插入新闻分类
        /// </summary>
        /// <param name="newsClass">需要插入的分类</param>
        int InsertNewsClass(NewsClass newsClass);

        /// <summary>
        /// 更新新闻分类
        /// </summary>
        /// <param name="newsClass">需要更新的新闻分类</param>
        int UpdateNewsClass(NewsClass newsClass);

        /// <summary>
        /// 删除新闻分类
        /// </summary>
        /// <param name="newsClass">需要删除的新闻分类</param>
        int DeleteNewsClass(NewsClass newsClass);

        /// <summary>
        /// 强制删除新闻分类
        /// 强制删除新闻分类时将先删除改分类下的所有新闻,然后删除该分类下的所有的子类,最后删除该分类。
        /// 此方法请慎重使用
        /// </summary>
        /// <param name="newsClass">指定的分类</param>
        /// <returns></returns>
        void EnforceDeleteNewsClass(NewsClass newsClass);

        /// <summary>
        /// 通过新闻编号获取新闻分类,获取该分类下的所有的子类
        /// </summary>
        /// <param name="newsClassId">新闻编号</param>
        NewsClass GetNewsClassById(string newsClassId);

        /// <summary>
        /// 获取所有的分类
        /// </summary>
        NewsClassList GetAllNewsClass();

        /// <summary>
        /// 获取所有的父类
        /// </summary>
        /// <returns></returns>
        NewsClassList GetParentNewsClass();

        /// <summary>
        /// 通过某个分类获取该分类下的所有子类以及子类下的子类,包括该分类
        /// 获取的分类列表中不进行嵌套包含。
        /// </summary>
        NewsClassList GetNewsClassListByNewsClass(NewsClass newsClass);

        /// <summary>
        /// 通过某个分类获取该分类下的子类
        /// </summary>
        NewsClassList GetChildNewsClassList(NewsClass newsClass);

        /// <summary>
        /// 更新分类的排序
        /// </summary>
        /// <param name="newsClassId">需要排序的分类编号</param>
        /// <param name="sort">排序的序号</param>
        int UpdateSort(string newsClassId, int sort);
        /// <summary>
        /// 是否存在指定的分类
        /// </summary>
        /// <param name="newsClassId">指定的分类编号</param>
        /// <returns>返回true或者false,true表示存在指定的分类,false表示不存在指定的分类</returns>
        bool IsExistNewsClass(string newsClassId);

        /// <summary>
        /// 动态删除分类
        /// </summary>
        /// <param name="where"></param>
        /// <returns></returns>
        int DeleteNewsClassDynamic(string where);
        /// <summary>
        /// 删除指定父类的下的子类,如果该父类下在有子类则一并删除,此方法不适用
        /// </summary>
        /// <param name="parentNewsClass"></param>
        /// <returns></returns>
        int DeleteNewsClassByParent(NewsClass parentNewsClass);

        /// <summary>
        /// 获取某个分类下的子类中最大的排序序号,
        /// 如果不指定父类,则表示顶级分类中最大的排序序号。
        /// </summary>
        /// <param name="parentNewsClass"></param>
        /// <returns></returns>
        int GetMaxSortID(NewsClass parentNewsClass);
其他接口可以参照需求和功能来设计,当然这些接口并不能满足所有的要求,只是一些基本接口。

模型接口
这些接口主要是把数据库的表进行实体化,再此不赘述了。

接口设计好之后就可以开始写代码了,这里出于某些原因将不提供详细代码。
需要提醒的是:在接口设计之前,最好是先做了静态页面模型或者编写好测试用例以及测试计划,然后根据静态页面模型或测试的要求来写接口,这样的话接口设计可能比较全面。

Posted on 2008-03-05 10:56  Chio  阅读(271)  评论(0编辑  收藏  举报
©2008 Suprasoft Component Intelligence Inc., All right reserved.