软件工程实验三

一、实验名称

网站详细设计

二、实验目的

根据需求分析、概要设计,完成系统的详细设计

三、实验主要内容

详细设计的主要任务是设计每个模块的实现算法、所需的局部数据结构。详细设计的目标有两个:实现模块功能的算法要逻辑上正确和算法描述要简明易懂。

四、实验原理

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;

        }

 

    }

}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值