一、实验名称
网站详细设计
二、实验目的
根据需求分析、概要设计,完成系统的详细设计
三、实验主要内容
详细设计的主要任务是设计每个模块的实现算法、所需的局部数据结构。详细设计的目标有两个:实现模块功能的算法要逻辑上正确和算法描述要简明易懂。
四、实验原理
1、模块说明。说明该模块需要实现什么功能,还有设计要点。
2、流程逻辑。用流程图说明该模块的处理过程。
3、算法。不一定有,如果涉及一些比较特殊的算法或关键模块,就写一下算法的伪代码或用流程图说明。
4、限制条件。该模块的功能有哪些限制,比如用户ID不能重复,只能查询自己权限范围内的用户。
5、输入项。每个子模块可以看做一个”方法“,我传给你什么,你给我输出什么。比如删除用户,输入项就是用户ID。
6、输出项。删除用户的输出项,就是不能在查询模块里查询到已删除的用户
7、界面设计。用visio或者其他工具画一些界面图
8、需要操作的数据表。
五、实验结果
详细设计
目录
一、数据库设计
二、网站界面设计
三、网站实现.
1.1通用功能类的实现
一、 数据库设计
二、网站界面设计
本网站的设计思路主要是实用、简便、灵活、稳定。整个网站有完整的组织框架和模块分工。对于界面设计我们遵循以下几个原则:
一、控件的位置拖放安排
在绝大多数的程序界面设计中,并不是所有的元素都具有相同的重要性,所以应抓住重点,将较重要的元素定位在对用户来说处在一目了然的位置是非常重要 的,可以尝试根据“功能”和“关系”来组成一个逻辑信息组。按照控件在功能上的联系,将它们放在一起,在视觉效果上也要比将它们分散在屏幕的各处要好得 多。
二、合理利用空间,保持界面的简洁
界面设计最重要的原则就是简洁与明了。对于应用程序而言,如果界面看上去很难,则可能程序使用本身也比较复杂,而在设计时稍稍深入考虑一下,便有助于创建看上去和用起来都很简单的界面。
三、合理利用颜色、图像和显示效果来达成内容与形式的统一
依据许多程序设计人员的经验,应当尽量限制应用程序所用颜色的种类,而且色调也应该保持一致。
三、网站实现
1.1、通用功能类的实现
1、sqlHelper类
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Configuration; using System.Data.SqlClient; using System.Data;
namespace NEWSSite.DAL { public class SqlHelper { public static readonly string connstr = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;
public static int ExecuteNonQuery(string cmdText, params SqlParameter[] parameters) { using (SqlConnection conn = new SqlConnection(connstr)) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = cmdText; cmd.Parameters.AddRange(parameters); return cmd.ExecuteNonQuery(); } } }
public static object ExecuteScalar(string cmdText, params SqlParameter[] parameters) { using (SqlConnection conn = new SqlConnection(connstr)) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = cmdText; cmd.Parameters.AddRange(parameters); return cmd.ExecuteScalar(); } } }
public static DataTable ExecuteDataTable(string cmdText, params SqlParameter[] parameters) { using (SqlConnection conn = new SqlConnection(connstr)) { conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = cmdText; cmd.Parameters.AddRange(parameters); using (SqlDataAdapter adapter = new SqlDataAdapter(cmd)) { DataTable dt = new DataTable(); adapter.Fill(dt); return dt; } } } }
public static SqlDataReader ExecuteDataReader(string cmdText, params SqlParameter[] parameters) { SqlConnection conn = new SqlConnection(connstr); conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = cmdText; cmd.Parameters.AddRange(parameters); return cmd.ExecuteReader(CommandBehavior.CloseConnection); } }
public static int ExecuteStoredProcedure(string procName, params SqlParameter[] parameters) { SqlConnection conn = new SqlConnection(connstr); conn.Open(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = procName; cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddRange(parameters); return cmd.ExecuteNonQuery(); } } } }
|
2、对新闻类别的增删改查
using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.SqlClient; using NEWSSite.Model;
namespace NEWSSite.DAL { public partial class NewsClassDAL { public NewsClass Add (NewsClass newsClass) { string sql ="INSERT INTO NewsClass (Class) output inserted.Id VALUES (@Class)"; SqlParameter[] para = new SqlParameter[] { new SqlParameter("@Class", ToDBValue(newsClass.Class)), };
int newId = (int)SqlHelper.ExecuteScalar(sql, para); return GetById(newId); }
public int DeleteById(int id) { string sql = "DELETE NewsClass WHERE Id = @Id";
SqlParameter[] para = new SqlParameter[] { new SqlParameter("@Id", id) };
return SqlHelper.ExecuteNonQuery(sql, para); }
public int Update(NewsClass newsClass) { string sql = "UPDATE NewsClass " + "SET " + " Class = @Class"
+" WHERE Id = @Id";
SqlParameter[] para = new SqlParameter[] { new SqlParameter("@Id", newsClass.Id) ,new SqlParameter("@Class", ToDBValue(newsClass.Class)) };
return SqlHelper.ExecuteNonQuery(sql, para); }
public NewsClass GetById(int id) { string sql = "SELECT * FROM NewsClass WHERE Id = @Id"; using(SqlDataReader reader = SqlHelper.ExecuteDataReader(sql, new SqlParameter("@Id", id))) { if (reader.Read()) { return ToModel(reader); } else { return null; } } }
public NewsClass ToModel(SqlDataReader reader) { NewsClass newsClass = new NewsClass();
newsClass.Id = (int)ToModelValue(reader,"Id"); newsClass.Class = (string)ToModelValue(reader,"Class"); return newsClass; }
public int GetTotalCount() { string sql = "SELECT count(*) FROM NewsClass"; return (int)SqlHelper.ExecuteScalar(sql); }
public IEnumerable<NewsClass> GetPagedData(int minrownum,int maxrownum) { string sql = "SELECT * from(SELECT *,(row_number() over(order by Id))-1 rownum FROM NewsClass) t where rownum>=@minrownum and rownum<=@maxrownum"; using(SqlDataReader reader = SqlHelper.ExecuteDataReader(sql, new SqlParameter("@minrownum",minrownum), new SqlParameter("@maxrownum",maxrownum))) { return ToModels(reader); } }
public IEnumerable<NewsClass> GetAll() { string sql = "SELECT * FROM NewsClass"; using(SqlDataReader reader = SqlHelper.ExecuteDataReader(sql)) { return ToModels(reader); } }
protected IEnumerable<NewsClass> ToModels(SqlDataReader reader) { var list = new List<NewsClass>(); while(reader.Read()) { list.Add(ToModel(reader)); } return list; }
protected object ToDBValue(object value) { if(value==null) { return DBNull.Value; } else { return value; } }
protected object ToModelValue(SqlDataReader reader,string columnName) { if(reader.IsDBNull(reader.GetOrdinal(columnName))) { return null; } else { return reader[columnName]; } } } }
|
3、对新闻评论操作
using System; using System.Collections.Generic; using System.Linq; using System.Web; using NEWSSite.Model; using System.Data.SqlClient;
namespace NEWSSite.DAL { public partial class NEWS_CommentDAL { public IEnumerable<NEWS_Comment> GetByNewsId(int newsId) { var list = new List<NEWS_Comment>(); string sql = "SELECT * FROM NEWS_Comments where NewsId=@newsId"; using (SqlDataReader reader = SqlHelper.ExecuteDataReader(sql, new SqlParameter("@newsId", newsId))) { while (reader.Read()) { list.Add(ToModel(reader)); } } return list; } ///<summary> ///得到评论 ///</summary> ///<returns></returns> public IEnumerable<NEWS_Comment> GetComment() { var list = new List<NEWS_Comment>(); string sql = "select * from NEWS a,NEWS_Comments b where a.id=b.NewsId order by b.ComId desc"; using (SqlDataReader reader = SqlHelper.ExecuteDataReader(sql)) { while (reader.Read()) { list.Add(ToModel(reader)); } } return list; }
} } |