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

1、 数据层

**** 数据层由四个类组成,其中两个位信息承载类, MovieDetails and CategoryDetails ,只有属性,无任何方法,分别代表表 movies 和 categories 中某行。另外两个为基本数据操作类,提供相应的具体数据操作,分别为 :Movies and Categories 。

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

MovieDetails


+ movie_id : int

+ 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():

  1<unspecified>
  2
  3\+  GetAllMovies():  <unspecified>
  4
  5\+  GetMoviesByCount():  <unspecified>
  6
  7+GetHeadlines():<unspecified>
  8
  9+Get  GetMovieDetails  ():<unspecified>
 10
 11+GetDetailsRow():<unspecified>
 12
 13+Add():int 
 14
 15+Update():bool 
 16
 17+Delete():bool 
 18
 19+AddViewcount():bool   
 20  
 21Categories   
 22  
 23---  
 24  
 25+Categories(in connectionString:string) 
 26
 27+GetCategories():<unspecified>
 28
 29\+  GetCategoryName():  <unspecified>
 30
 31\+  GetCategoryDetails  ():<unspecified>
 32
 33+GetDetailsRow():<unspecified>
 34
 35+Add():int 
 36
 37+Update():bool 
 38
 39+Delete():bool   
 40  
 41以下详细描述两个基本数据操作类的方法: 
 42
 43Movies  : 
 44
 45方法详情 
 46
 47| 
 48
 49描述   
 50  
 51---|---  
 52  
 53public Movies( string newConnectiionString) 
 54
 55| 
 56
 57类构造函数,以连接字符串作为参数   
 58  
 59public DataSet GetMovies(int category_id) 
 60
 61| 
 62
 63返回指定类型的所有电影条目   
 64  
 65public DataSet GetHeadines(int category_id) 
 66
 67| 
 68
 69返回指定类型条目的所有电影条目的  movie_id  、  title  、  uptime  、  viewcount  、  image   
 70  
 71public DataSet GetAllMovies() 
 72
 73| 
 74
 75以上传时间为顺序返回所有电影信息   
 76  
 77public DataSet GetMoviesByCount() 
 78
 79| 
 80
 81以点击率为顺序返回所有电影信息   
 82  
 83public DataSet GetHeadlines(int category_id) 
 84
 85| 
 86
 87返回某一分类的电影头信息   
 88  
 89public MoviesDetails GetMovieDetails(int movie_id) 
 90
 91| 
 92
 93返回一个由  movie_id  指定的电影条目的具体内容   
 94  
 95public DataRow GetDetailsRow(int movie_id) 
 96
 97| 
 98
 99返回电影详细信息的  DataRow   
100  
101public int Add(int category_id,string level,string title,string intro,datetime uptime,datetime showtime,string image,string address) 
102
103| 
104
105添加新的电影条目,如果成功则返回新的  movie_id  ,如果有重复记录,则返回  -1   
106  
107public bool Update(int movie_id,int category_id,string level,string title,string intro,datetime showtime, string image,string address) 
108
109| 
110
111更新指定电影条目的相关信息   
112  
113public bool Delete(int movie_id) 
114
115| 
116
117删除指定的电影条目   
118  
119public bool AddViewcount(int movie_id) 
120
121| 
122
123给指定的电影条目增加1单位访问量   
124  
125Categories  : 
126
127方法详情 
128
129| 
130
131描述   
132  
133---|---  
134  
135public Categories( string newConnectiionString) 
136
137| 
138
139类构造函数,以连接字符串作为参数   
140  
141public DataSet GetCategories() 
142
143| 
144
145返回包含所有分类的  DataSet   
146  
147public DataSet GetCategoryName() 
148
149| 
150
151返回所有分类的名称和编号   
152  
153public CategoryDetails  GetCategoryDetails(int category_id) 
154
155| 
156
157返回描述指定分类的  CategoryDetails  实例   
158  
159public DataRow GetDetailsRow(int category_id) 
160
161| 
162
163返回指定ID分类条目的  DataRow   
164  
165public int Add(string name,string category_intro) 
166
167| 
168
169添加新的分类条目,如果成功则返回新的  category_id  ,如果有重复记录,则返回  -1   
170  
171public bool Update(int category_id,string name,string category_intro) 
172
173| 
174
175更新指定分类条目的详细信息   
176  
177public bool Delete(int category_id) 
178
179| 
180
181删除指定分类条目   
182  
183  
184** Movies:  **   
185using System;   
186using System.Data;   
187using System.Data.SqlClient; 
188
189namespace Coofucoo.Data   
190{   
191public class MovieDetails   
192{   
193public int movie_id;   
194public int category_id;   
195public string level;   
196public string title;   
197public string intro;   
198public DateTime uptime;   
199public DateTime showtime;   
200public int viewcount;   
201public string image;   
202public string address;   
203} 
204
205public class Movies : Coofucoo.Core.DbObject   
206{   
207public Movies(string newConnectionString) : base(newConnectionString)   
208{ } 
209
210// return all the Movie of the specified category   
211public DataSet GetMovies(int category_id)   
212{   
213// create the parameters   
214SqlParameter[] parameters = {   
215new SqlParameter("@category_id", SqlDbType.Int, 4)   
216};   
217  
218// set the values   
219parameters[0].Value = category_id;   
220  
221return RunProcedure("GetMovies", parameters, "movies");   
222} 
223
224// return all the Movie order by upload time   
225public DataSet GetAllMovies()   
226{   
227return RunProcedure("GetAllMovies",new IDataParameter[]{},"movies");   
228} 
229
230public DataSet GetMoviesByCount()   
231{   
232return RunProcedure("GetMoviesByCount",new IDataParameter[]{},"MoviesByCount");   
233} 
234
235// return the headlines for the current and approved Movie   
236public DataSet GetHeadlines(int category_id)   
237{   
238// create the parameter   
239SqlParameter[] parameters = { new SqlParameter("@category_id", SqlDbType.Int, 4) };   
240parameters[0].Value = category_id;   
241  
242return RunProcedure("GetHeadines", parameters, "Headlines");   
243} 
244
245  
246// return only the record with the specified ID   
247public MovieDetails GetMovieDetails(int movie_id)   
248{   
249// create the parameter   
250SqlParameter[] parameters = { new SqlParameter("@movie_id", SqlDbType.Int, 4) };   
251parameters[0].Value = movie_id;   
252  
253using(DataSet Movie = RunProcedure("GetMovieDetails", parameters, "MovieDetails"))   
254{   
255MovieDetails details = new MovieDetails();   
256// if the record was found, set the properties of the class instance   
257if (Movie.Tables[0].Rows.Count &gt; 0)   
258{   
259DataRow rowMovie = Movie.Tables[0].Rows[0];   
260details.movie_id = Convert.ToInt32(rowMovie["movie_id"]);   
261details.category_id = Convert.ToInt32(rowMovie["category_id"]);   
262details.level = rowMovie["levell"].ToString();   
263details.title = rowMovie["title"].ToString();   
264details.intro = rowMovie["intro"].ToString();   
265details.uptime = Convert.ToDateTime(rowMovie["uptime"]);   
266details.showtime = Convert.ToDateTime(rowMovie["showtime"]);   
267details.viewcount = Convert.ToInt32(rowMovie["viewcount"]);   
268details.image = rowMovie["image"].ToString();   
269details.address = rowMovie["address"].ToString();   
270}   
271else   
272details.movie_id = -1; 
273
274return details;   
275}   
276} 
277
278// return only the record with the specified ID   
279public DataRow GetDetailsRow(int movie_id)   
280{   
281// create the parameter   
282SqlParameter[] parameters = { new SqlParameter("@movie_id", SqlDbType.Int, 4) };   
283parameters[0].Value = movie_id;   
284  
285using(DataSet Movie = RunProcedure("GetMovieDetails", parameters, "MovieDetailsRow"))   
286{   
287return Movie.Tables[0].Rows[0];   
288}   
289} 
290
291  
292// delete the record identified by the specified ID   
293public bool Delete(int movie_id)   
294{   
295int numAffected;   
296  
297// create the parameter   
298SqlParameter[] parameters = { new SqlParameter("@movie_id", SqlDbType.Int, 4) };   
299parameters[0].Value = movie_id;   
300  
301RunProcedure("DeleteMovie", parameters, out numAffected); 
302
303return (numAffected == 1);   
304} 
305
306  
307// update the Movie identified by the specified ID   
308public bool Update(int movie_id, int category_id, string level, string title, string intro,   
309DateTime showtime, string image, string address)   
310{   
311int numAffected;   
312  
313// create the parameters   
314SqlParameter[] parameters = {   
315new SqlParameter("@movie_id", SqlDbType.Int, 4),   
316new SqlParameter("@category_id", SqlDbType.Int, 4),   
317new SqlParameter("@levell", SqlDbType.NVarChar, 50),   
318new SqlParameter("@title", SqlDbType.NVarChar, 50),   
319new SqlParameter("@intro", SqlDbType.Text),   
320new SqlParameter("@showtime", SqlDbType.DateTime),   
321new SqlParameter("@image", SqlDbType.NVarChar, 100),   
322new SqlParameter("@address", SqlDbType.NVarChar, 100),   
323};   
324  
325// set the values   
326parameters[0].Value = movie_id;   
327parameters[1].Value = category_id;   
328parameters[2].Value = level.Trim();   
329parameters[3].Value = title.Trim();   
330parameters[4].Value = intro.Trim();   
331parameters[5].Value = showtime;   
332parameters[6].Value = image.Trim();   
333parameters[7].Value = address.Trim(); 
334
335RunProcedure("UpdateMovie", parameters, out numAffected); 
336
337return (numAffected == 1);   
338} 
339
340  
341// add a Movie   
342public int Add(int category_id, string level, string title, string intro,   
343DateTime uptime, DateTime showtime, string image, string address)   
344{   
345int numAffected;   
346  
347// create the parameters   
348SqlParameter[] parameters = {   
349new SqlParameter("@category_id", SqlDbType.Int, 4),   
350new SqlParameter("@level", SqlDbType.NVarChar, 50),   
351new SqlParameter("@title", SqlDbType.NVarChar, 50),   
352new SqlParameter("@intro", SqlDbType.Text),   
353new SqlParameter("@uptime", SqlDbType.DateTime),   
354new SqlParameter("@showtime", SqlDbType.DateTime),   
355new SqlParameter("@image", SqlDbType.NVarChar, 100),   
356new SqlParameter("@address", SqlDbType.NVarChar, 100),   
357new SqlParameter("@movie_id", SqlDbType.Int, 4)   
358};   
359  
360// set the values   
361parameters[0].Value = category_id;   
362parameters[1].Value = level.Trim();   
363parameters[2].Value = title.Trim();   
364parameters[3].Value = intro.Trim();   
365parameters[4].Value = uptime;   
366parameters[5].Value = showtime;   
367parameters[6].Value = image.Trim();   
368parameters[7].Value = address.Trim();   
369parameters[8].Direction = ParameterDirection.Output; 
370
371RunProcedure("InsertMovie", parameters, out numAffected); 
372
373return (int)parameters[8].Value;   
374} 
375
376  
377// set the Viewcount++   
378public bool AddViewcount(int movie_id)   
379{   
380int numAffected;   
381  
382// create the parameters   
383SqlParameter[] parameters = {   
384new SqlParameter("@movie_id", SqlDbType.Int, 4)   
385}; 
386
387// set the values   
388parameters[0].Value = movie_id; 
389
390RunProcedure("AddViewcount", parameters, out numAffected); 
391
392return (numAffected == 1);   
393} 
394
395}   
396}   
397  
398**Categories:  
399** using System;   
400using System.Data;   
401using System.Data.SqlClient;    
402namespace Coofucoo.Data   
403{   
404public class CategoryDetails   
405{   
406public int category_id;   
407public string name;   
408public string category_intro;   
409} 
410
411public class Categories : Coofucoo.Core.DbObject   
412{   
413public Categories(string newConnectionString) : base(newConnectionString)   
414{ } 
415
416// return all the Categories   
417public DataSet GetCategories()   
418{   
419return RunProcedure("GetCategories", new IDataParameter[]{}, "Categories");   
420} 
421
422// return all name of the Categories   
423public DataSet GetCategoryName()   
424{   
425return RunProcedure("GetCategoryName", new IDataParameter[]{}, "CategoryName");   
426} 
427
428  
429// return only the record with the specified ID   
430public CategoryDetails GetCategoryDetails(int category_id)   
431{   
432// create the parameter   
433SqlParameter[] parameters = { new SqlParameter("@category_id", SqlDbType.Int, 4) };   
434parameters[0].Value = category_id; 
435
436using(DataSet categories = RunProcedure("GetCategoryDetails", parameters, "CategoryDetails"))   
437{   
438CategoryDetails details = new CategoryDetails();   
439// if the record was found, set the properties of the class instance   
440if (categories.Tables[0].Rows.Count &gt; 0)   
441{   
442DataRow rowCategory = categories.Tables[0].Rows[0];   
443details.category_id = (int)rowCategory["category_id"];   
444details.name = rowCategory["name"].ToString();   
445details.category_intro = rowCategory["category_intro"].ToString();   
446}   
447else   
448details.category_id = -1; 
449
450return details;   
451}   
452} 
453
454// return only the record with the specified ID   
455public DataRow GetDetailsRow(int category_id)   
456{   
457// create the parameter   
458SqlParameter[] parameters = { new SqlParameter("@category_id", SqlDbType.Int, 4) };   
459parameters[0].Value = category_id; 
460
461using(DataSet categories = RunProcedure("GetCategoryDetails", parameters, "CategoryDetails"))   
462{   
463return categories.Tables[0].Rows[0];   
464}   
465} 
466
467  
468// delete the record identified by the specified ID   
469public bool Delete(int category_id)   
470{   
471int numAffected;   
472  
473// create the parameter   
474SqlParameter[] parameters = { new SqlParameter("@category_id", SqlDbType.Int, 4) };   
475parameters[0].Value = category_id;   
476  
477RunProcedure("DeleteCategory", parameters, out numAffected); 
478
479return (numAffected == 1);   
480} 
481
482  
483// update Name, Description and ImageUrl of the record identified by the specified ID   
484public bool Update(int category_id, string name, string category_intro)   
485{   
486int numAffected;   
487  
488// create the parameters   
489SqlParameter[] parameters = {   
490new SqlParameter("@category_id", SqlDbType.Int, 4),   
491new SqlParameter("@name", SqlDbType.NVarChar, 50),   
492new SqlParameter("@category_intro", SqlDbType.NVarChar, 100),   
493};   
494// set the values   
495parameters[0].Value = category_id;   
496parameters[1].Value = name.Trim();   
497parameters[2].Value = category_intro.Trim(); 
498
499RunProcedure("UpdateCategory", parameters, out numAffected); 
500
501return (numAffected == 1);   
502} 
503
504  
505// add a new category   
506public int Add(string name, string category_intro)   
507{   
508int numAffected;   
509  
510// create the parameters   
511SqlParameter[] parameters = {   
512new SqlParameter("@name", SqlDbType.VarChar, 50),   
513new SqlParameter("@category_intro", SqlDbType.VarChar, 100),   
514new SqlParameter("@category_id", SqlDbType.Int, 4),   
515};   
516  
517// set the values   
518parameters[0].Value = name.Trim();   
519parameters[1].Value = category_intro.Trim();   
520parameters[2].Direction = ParameterDirection.Output;   
521  
522// run the procedure   
523RunProcedure("InsertCategory", parameters, out numAffected); 
524
525return (int)parameters[2].Value;   
526} 
527
528}   
529}</unspecified></unspecified></unspecified></unspecified></unspecified></unspecified></unspecified></unspecified></unspecified></unspecified>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus