一步一步打造3层架构在线电影网站!(4)系统设计

原创 2004年12月28日 23:29:00

1、          数据层

   数据层由四个类组成,其中两个位信息承载类,MovieDetails and CategoryDetails,只有属性,无任何方法,分别代表表moviescategories中某行。另外两个为基本数据操作类,提供相应的具体数据操作,分别为:Movies and Categories<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

    以下分别用类图表示四个类的具体情况:

MovieDetails

+ movie_idint

+ category_id:int

+ level:string

+ title:string

+ intro:string

+ uptime: DateTime

+ showtime: DateTime

+ viewcount:int

+ image:string

+ address:string

 

CategoryDetails

+ category_id:int

+ name:string

+ category_intro:string

 

 

Movie

 

+Movies(in connectionString:string)

+GetMovies():<unspecified>

+GetAllMovies():<unspecified>

+GetMoviesByCount():<unspecified>

+GetHeadlines():<unspecified>

+GetGetMovieDetails():<unspecified>

+GetDetailsRow():<unspecified>

+Add():int

+Update():bool

+Delete():bool

+AddViewcount():bool

 

Categories

 

+Categories(in connectionString:string)

+GetCategories():<unspecified>

+GetCategoryName():<unspecified>

+GetCategoryDetails():<unspecified>

+GetDetailsRow():<unspecified>

+Add():int

+Update():bool

+Delete():bool

    以下详细描述两个基本数据操作类的方法:

Movies

方法详情

描述

public Movies( string newConnectiionString)

类构造函数,以连接字符串作为参数

public DataSet GetMovies(int category_id)

返回指定类型的所有电影条目

public DataSet GetHeadines(int category_id)

返回指定类型条目的所有电影条目的movie_idtitleuptimeviewcountimage

public DataSet GetAllMovies()

以上传时间为顺序返回所有电影信息

public DataSet GetMoviesByCount()

以点击率为顺序返回所有电影信息

public DataSet GetHeadlines(int category_id)

返回某一分类的电影头信息

public MoviesDetails GetMovieDetails(int movie_id)

返回一个由movie_id指定的电影条目的具体内容

public DataRow GetDetailsRow(int movie_id)

返回电影详细信息的DataRow

public int Add(int category_id,string level,string title,string intro,datetime uptime,datetime showtime,string image,string address)

添加新的电影条目,如果成功则返回新的movie_id,如果有重复记录,则返回-1

public bool Update(int movie_id,int category_id,string level,string title,string intro,datetime showtime, string image,string address)

更新指定电影条目的相关信息

public bool Delete(int movie_id)

删除指定的电影条目

public bool AddViewcount(int movie_id)

给指定的电影条目增加1单位访问量

Categories

方法详情

描述

public Categories( string newConnectiionString)

类构造函数,以连接字符串作为参数

public DataSet GetCategories()

返回包含所有分类的DataSet

public DataSet GetCategoryName()

返回所有分类的名称和编号

public CategoryDetails  GetCategoryDetails(int category_id)

返回描述指定分类的CategoryDetails实例

public DataRow GetDetailsRow(int category_id)

返回指定ID分类条目的DataRow

public int Add(string name,string category_intro)

添加新的分类条目,如果成功则返回新的category_id,如果有重复记录,则返回-1

public bool Update(int category_id,string name,string category_intro)

更新指定分类条目的详细信息

public bool Delete(int category_id)

删除指定分类条目


Movies:
using System;
using System.Data;
using System.Data.SqlClient;

namespace Coofucoo.Data
{
 public class MovieDetails
 {
  public int movie_id;
  public int category_id;
  public string level;
  public string title;
  public string intro;
  public DateTime uptime;
  public DateTime showtime;
  public int viewcount;
  public string image;
  public string address;
 }

 public class Movies : Coofucoo.Core.DbObject
 {
  public Movies(string newConnectionString) : base(newConnectionString)
  { }

  // return all the Movie of the specified category
  public DataSet GetMovies(int category_id)
  {
   // create the parameters
   SqlParameter[] parameters = {
           new SqlParameter("@category_id", SqlDbType.Int, 4)
          };
   
   // set the values
   parameters[0].Value = category_id;
   
   return RunProcedure("GetMovies", parameters, "movies");
  }

  // return all the Movie order by upload time
  public DataSet GetAllMovies()
  {   
   return RunProcedure("GetAllMovies",new IDataParameter[]{},"movies");
  }

  public DataSet GetMoviesByCount()
  {
   return RunProcedure("GetMoviesByCount",new IDataParameter[]{},"MoviesByCount");
  }

  // return the headlines for the current and approved Movie
  public DataSet GetHeadlines(int category_id)
  {
   // create the parameter
   SqlParameter[] parameters = { new SqlParameter("@category_id", SqlDbType.Int, 4) };
   parameters[0].Value = category_id;
   
   return RunProcedure("GetHeadines", parameters, "Headlines");
  }


  // return only the record with the specified ID
  public MovieDetails GetMovieDetails(int movie_id)
  {
   // create the parameter
   SqlParameter[] parameters = { new SqlParameter("@movie_id", SqlDbType.Int, 4) };
   parameters[0].Value = movie_id;
   
   using(DataSet Movie = RunProcedure("GetMovieDetails", parameters, "MovieDetails"))
   {
    MovieDetails details = new MovieDetails();
    // if the record was found, set the properties of the class instance
    if (Movie.Tables[0].Rows.Count > 0)
    {
     DataRow rowMovie = Movie.Tables[0].Rows[0];
     details.movie_id = Convert.ToInt32(rowMovie["movie_id"]);
     details.category_id = Convert.ToInt32(rowMovie["category_id"]);
     details.level = rowMovie["levell"].ToString();
     details.title = rowMovie["title"].ToString();
     details.intro = rowMovie["intro"].ToString();
     details.uptime = Convert.ToDateTime(rowMovie["uptime"]);
     details.showtime = Convert.ToDateTime(rowMovie["showtime"]);
     details.viewcount = Convert.ToInt32(rowMovie["viewcount"]);
     details.image = rowMovie["image"].ToString();
     details.address = rowMovie["address"].ToString();
    }
    else
     details.movie_id = -1;

    return details;
   }
  }

  // return only the record with the specified ID
  public DataRow GetDetailsRow(int movie_id)
  {
   // create the parameter
   SqlParameter[] parameters = { new SqlParameter("@movie_id", SqlDbType.Int, 4) };
   parameters[0].Value = movie_id;
   
   using(DataSet Movie = RunProcedure("GetMovieDetails", parameters, "MovieDetailsRow"))
   {
    return Movie.Tables[0].Rows[0];
   }
  }


  // delete the record identified by the specified ID
  public bool Delete(int movie_id)
  {
   int numAffected;
  
   // create the parameter
   SqlParameter[] parameters = { new SqlParameter("@movie_id", SqlDbType.Int, 4) };
   parameters[0].Value = movie_id;
   
   RunProcedure("DeleteMovie", parameters, out numAffected);

   return (numAffected == 1);
  }


  // update the Movie identified by the specified ID
  public bool Update(int movie_id, int category_id, string level, string title, string intro,
   DateTime showtime, string image, string address)
  {
   int numAffected;
  
   // create the parameters
   SqlParameter[] parameters = {
           new SqlParameter("@movie_id", SqlDbType.Int, 4),
           new SqlParameter("@category_id", SqlDbType.Int, 4),
           new SqlParameter("@levell", SqlDbType.NVarChar, 50),
           new SqlParameter("@title", SqlDbType.NVarChar, 50),
           new SqlParameter("@intro", SqlDbType.Text),
           new SqlParameter("@showtime", SqlDbType.DateTime),
           new SqlParameter("@image", SqlDbType.NVarChar, 100),
           new SqlParameter("@address", SqlDbType.NVarChar, 100),
          };
   
   // set the values
   parameters[0].Value = movie_id;
   parameters[1].Value = category_id;
   parameters[2].Value = level.Trim();
   parameters[3].Value = title.Trim();
   parameters[4].Value = intro.Trim();
   parameters[5].Value = showtime;
   parameters[6].Value = image.Trim();
   parameters[7].Value = address.Trim();

   RunProcedure("UpdateMovie", parameters, out numAffected);

   return (numAffected == 1);
  }

  
  // add a Movie
  public int Add(int category_id, string level, string title, string intro,
   DateTime uptime, DateTime showtime, string image, string address)
  {
   int numAffected;
  
   // create the parameters
   SqlParameter[] parameters = {
           new SqlParameter("@category_id", SqlDbType.Int, 4),
           new SqlParameter("@level", SqlDbType.NVarChar, 50),
           new SqlParameter("@title", SqlDbType.NVarChar, 50),
           new SqlParameter("@intro", SqlDbType.Text),
           new SqlParameter("@uptime", SqlDbType.DateTime),
           new SqlParameter("@showtime", SqlDbType.DateTime),
           new SqlParameter("@image", SqlDbType.NVarChar, 100),
           new SqlParameter("@address", SqlDbType.NVarChar, 100),
           new SqlParameter("@movie_id", SqlDbType.Int, 4)
          };
   
   // set the values
   parameters[0].Value = category_id;
   parameters[1].Value = level.Trim();
   parameters[2].Value = title.Trim();
   parameters[3].Value = intro.Trim();
   parameters[4].Value = uptime;
   parameters[5].Value = showtime;
   parameters[6].Value = image.Trim();
   parameters[7].Value = address.Trim();
   parameters[8].Direction = ParameterDirection.Output;

   RunProcedure("InsertMovie", parameters, out numAffected);

   return (int)parameters[8].Value;
  }

  
  // set the Viewcount++
  public bool AddViewcount(int movie_id)
  {
   int numAffected;
  
   // create the parameters
   SqlParameter[] parameters = {
           new SqlParameter("@movie_id", SqlDbType.Int, 4)
          };

   // set the values
   parameters[0].Value = movie_id;

   RunProcedure("AddViewcount", parameters, out numAffected);

   return (numAffected == 1);
  }

 }
}

Categories:
using System;
using System.Data;
using System.Data.SqlClient;

namespace Coofucoo.Data
{
 public class CategoryDetails
 {
  public int category_id;
  public string name;
  public string category_intro;
 }

 public class Categories : Coofucoo.Core.DbObject
 {
  public Categories(string newConnectionString) : base(newConnectionString)
  { }

  // return all the Categories
  public DataSet GetCategories()
  {
   return RunProcedure("GetCategories", new IDataParameter[]{}, "Categories");
  }

  // return all name of the Categories
  public DataSet GetCategoryName()
  {
   return RunProcedure("GetCategoryName", new IDataParameter[]{}, "CategoryName");
  }


  // return only the record with the specified ID
  public CategoryDetails GetCategoryDetails(int category_id)
  {
   // create the parameter
   SqlParameter[] parameters = { new SqlParameter("@category_id", SqlDbType.Int, 4) };
   parameters[0].Value = category_id;

   using(DataSet categories = RunProcedure("GetCategoryDetails", parameters, "CategoryDetails"))
   {
    CategoryDetails details = new CategoryDetails();
    // if the record was found, set the properties of the class instance
    if (categories.Tables[0].Rows.Count > 0)
    {
     DataRow rowCategory = categories.Tables[0].Rows[0];
     details.category_id = (int)rowCategory["category_id"];
     details.name = rowCategory["name"].ToString();
     details.category_intro = rowCategory["category_intro"].ToString();
    }
    else
     details.category_id = -1;

    return details;
   }
  }

  // return only the record with the specified ID
  public DataRow GetDetailsRow(int category_id)
  {
   // create the parameter
   SqlParameter[] parameters = { new SqlParameter("@category_id", SqlDbType.Int, 4) };
   parameters[0].Value = category_id;

   using(DataSet categories = RunProcedure("GetCategoryDetails", parameters, "CategoryDetails"))
   {
    return categories.Tables[0].Rows[0];
   }
  }


  // delete the record identified by the specified ID
  public bool Delete(int category_id)
  {
   int numAffected;
  
   // create the parameter
   SqlParameter[] parameters = { new SqlParameter("@category_id", SqlDbType.Int, 4) };
   parameters[0].Value = category_id;
   
   RunProcedure("DeleteCategory", parameters, out numAffected);

   return (numAffected == 1);
  }


  // update Name, Description and ImageUrl of the record identified by the specified ID
  public bool Update(int category_id, string name, string category_intro)
  {
   int numAffected;
  
   // create the parameters
   SqlParameter[] parameters = {
           new SqlParameter("@category_id", SqlDbType.Int, 4),
           new SqlParameter("@name", SqlDbType.NVarChar, 50),
           new SqlParameter("@category_intro", SqlDbType.NVarChar, 100),
          };
   // set the values
   parameters[0].Value = category_id;
   parameters[1].Value = name.Trim();
   parameters[2].Value = category_intro.Trim();

   RunProcedure("UpdateCategory", parameters, out numAffected);

   return (numAffected == 1);
  }

  
  // add a new category
  public int Add(string name, string category_intro)
  {
   int numAffected;
 
   // create the parameters
   SqlParameter[] parameters = {
           new SqlParameter("@name", SqlDbType.VarChar, 50),
           new SqlParameter("@category_intro", SqlDbType.VarChar, 100),
           new SqlParameter("@category_id", SqlDbType.Int, 4),
   }; 
   
   // set the values
   parameters[0].Value = name.Trim();
   parameters[1].Value = category_intro.Trim();
   parameters[2].Direction = ParameterDirection.Output;
   
   // run the procedure
   RunProcedure("InsertCategory", parameters, out numAffected);

   return (int)parameters[2].Value;
  }

 }
}

基于Java技术的大型网站架构设计方案

基于Java技术的大型网站架构设计方案 笑游江湖 发表于 2014-03-16 16:56:00 | 分类标签: 网站架构 JAVA 高并发 1、Web层 主体架构可以基于 Struts 1...
  • JackieLiuLixi
  • JackieLiuLixi
  • 2014年05月23日 17:24
  • 15344

一步一步打造自己的VIM

一开始用vim的时候发现各种配置很繁琐,就静不下心去看,后来直接用别人写的“史上最强的vim配置”,虽然挺好用的,但是毕竟不是自己的,用着挺不舒服的。现在(可能突然脑抽了)打算开始根据自己需要的东西,...
  • Jacketinsysu
  • Jacketinsysu
  • 2016年03月09日 12:36
  • 879

.Net网站架构设计(一)架构概念内容

一、什么是互联网架构 二、互联网架构的目标     架构的核心目标:高可用,易扩展,高性能,安全性      涉及到内容:研发、测试、实施、监控 三、一个网站的架构演变。     Wind...
  • liming850628
  • liming850628
  • 2016年02月23日 14:56
  • 956

1千用户与1千万用户的网站系统架构区别?

转自:http://www.zhongkerd.com/news/content-1209.html 软件外包需求洽谈的过程中,往往需要根据客户期望的网站并发量来评估工作量,客户往往...
  • zqftisson
  • zqftisson
  • 2016年06月28日 16:40
  • 1785

关键词下降应该怎么办?

我们经常会遇到关键词下降的事情,那如果关键词下降我们应该怎么去处理这件事情呢?今天阿里猫给你介绍一下这个问题. 网站改版的原因 网站改版也会导致网站关键词排名下降,特别是哪种url有变化的改版,那...
  • qq_35353168
  • qq_35353168
  • 2016年06月18日 17:19
  • 196

一步一步教你用PHP+MySql搭建网站 No.6 文章的publish

一步一步教你用PHP+MySql搭建网站 No.6 文章的publish
  • u011156012
  • u011156012
  • 2015年05月26日 11:00
  • 1596

大型网站技术架构(八)--网站的安全架构

大型网站技术架构(一)--大型网站架构演化 大型网站技术架构(二)--架构模式 大型网站技术架构(三)--架构核心要素 大型网站技术架构(四)--网站的高性能架构 大型网站技术架构(五)--网站...
  • MINEZHANGHAO
  • MINEZHANGHAO
  • 2014年06月16日 08:35
  • 5409

浅谈Web网站架构演变过程及各阶段所用的技术和架构设计

前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变。 该系统具备的功能: 用户模块:用户注册和管理商品模块:商品展示和管理交易模块:创建交易和管理 阶段一...
  • he90227
  • he90227
  • 2016年03月04日 10:12
  • 3649

各种大型网站技术架构

引言近段时间以来,通过接触有关海量数据处理和搜索引擎的诸多技术,常常见识到不少精妙绝伦的架构图。除了每每感叹于每幅图表面上的绘制的精细之外,更为架构图背后所隐藏的设计思想所叹服。个人这两天一直在搜集各...
  • qw1w1w
  • qw1w1w
  • 2014年10月26日 22:37
  • 2627

高并发高流量的大型网站架构设计(一)

摘要:Web2.0的兴起,掀起了互联网新一轮的网络创业大潮。以用户为导向的新网站建设概念,细分了网站功能和用户群,不仅成功的造就了一大批新生的网站,也极大的方便了上网的人们。   W...
  • zliu19880518
  • zliu19880518
  • 2014年01月27日 14:57
  • 1237
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一步一步打造3层架构在线电影网站!(4)系统设计
举报原因:
原因补充:

(最多只允许输入30个字)