信工学院毕业论文设计--中小型企业网站建设
时间:2023-08-26 23:06:01 | 来源:网站运营
时间:2023-08-26 23:06:01 来源:网站运营
信工学院毕业论文设计--中小型企业网站建设:
目录
绪论 1
第一章可行性分析 2
1.1 目标可行性 21.2 经济可行性 21.3 操作可行性 21.4 法律可行性 2第二章 系统设计 3
2.1 系统功能分析 3"https://zhuanlan.zhihu.com/write#__RefHeading___Toc297396721">2.2 用例描述 4第三章 概要设计 8
3.1 数据库设计 8"https://zhuanlan.zhihu.com/write#__RefHeading___Toc297396724">3.2 静态模型 113.3企业网站状态图 12第四章 详细设计 14
"https://zhuanlan.zhihu.com/write#__RefHeading___Toc297396727">4.1 三层架构 144.2 Web层下窗体 23总 结 25
参考文献 26
绪论
对于很多中小型企业来说,都希望通过最便捷的方式来达到扩大宣传自身的目的。而网路则是花费成本比较少的一种方式。网络不受地域限制,只要将企业的信息放在网路上,瞬间就可以传遍大江南北。企业需要做的是首先建立一个网站,然后把它放在网络上,最后定期修改信息对网站进行必要的维护即可。如果企业的规模不是很大,就应该把网站建设的主要精力放在有关企业自身组织结构、企业文化以及企业的产品介绍上面,企业网站的网页也不用太花哨,以简洁、明快为主。中小型企业的网站的基本功能是在用户和企业之间接起一座桥梁,以便扩大知名度。
在网络高度普及的现在,网络已经走进千家万户,网上浏览信息,网上购物等等,已经开始逐步流行,通过网络来宣传公司和产品,已经成为每个企业必不可少的方法。在节省资金的基础上,最大限度的宣传对企业效益有很大的提高。
在当今社会,网络购物越来越成为当代年轻人的主流购物方式。网上购物为消费者提供了方便快捷的卖货方式,消费者可以通过网络平台就可以购买到自己想要购买的东西,真正可以做到足不出户,就能购买货物的快感。所以,制作一个关于网上购物的中小型网站,对于我们对当代主流元素更加的了解,以及更好的抓住时代的主题。
第一章可行性分析
1.1 目标可行性
中小型企业网站在实现了基本的分类浏览产品或者企业信息的功能之后,还应该为用户建立快速浏览产品或者企业信息的途径,比如建立搜素机制、菜单机制,使得用户轻轻一击就可以在众多的信息中找到自己需要的。
另外还可以为用户提供产品订购和邮购业务,这样用户就可以足不出户的购买自己所喜欢的商品,于此同时也节省了企业存放产品的用地租金。为了更好的管理产品的订单,还可以为用户提供用户信息管理的窗口,这些信息包括用户个人的联系信息以及用户订购产品的订单信息。
为了可以让用户在购订商品时不与其他用户产生冲突,我们专门建立了用户登录和注册两个模块,对用户的信息进行统一并且对外保密用户的隐私资料。
1.2 经济可行性
1.中小型企业由于资金不是很雄厚,所以不会投入大量的资金来进行宣传企业以及企业产品,随着网络的普及化。企业可以通过网络平台来进行宣传,并且资金投入量小。
2.一个中小型的企业网站建设也不需要过高的资金投入,却可以收到丰厚的回报。
1.3 操作可行性
1. 中小型企业网站建设采用B/S结构,只要电脑上有浏览器能上网,便可以运行系统。
2.用户通过链接输入用户名和密码登录到后台管理,通过提示简单的操作,实现产品动态显示。
3.浏览搜索产品不需要登录,在需要购物时,登录后即可进行购买。
1.4 法律可行性
1.对购物功能,当用户登录后才能对自己的信息进行相应操作,对用户信息进行了有效的保护。
第二章 系统设计
2.1 系统功能分析
中小型企业网站的建设主要包含以下几个部分:
- 企业信息的浏览包括:创建主页包括企业简介、发展、企业最新消息、部门组成、最新产品信息、热销产品信息等等。一方面介绍企业、另一方面推销产品。
- 产品信息浏览包括:浏览企业生产的所有产品分类、产品信息(分为最新产品和热销产品两类)。
- 产品搜索模块包括:能够通过产品名称搜索单一产品还可以通过厂商名称搜索所有属于该厂商的所有产品。
- 购物车模块:在浏览产品信息后,可以添加到购物车并设定购买数量,计算总数再进入结算中心进行购买,并可以查看产品信息。
- 用户登录和注册模块:在购买产品时,需要注册用户并登录才能进行购买操作,购买的订单与用户名绑定以区分。
- 用户信息管理包括:管理用户信息包括用户个人资料的修改,删除,查询,和用户订单的查询、修改、删除。
企业网站功能模块图如下:
中小型企业网站
企业信息浏览
产品信息管理
产品搜索
购物车管理
订单管理
用户管理
数据库管理
图2-1中小型企业功能模块图
2.2 用例描述
2.2.1功能需求用例图
本企业网站有2个角色:普通用户以及系统管理员。普通用户在不登陆的情况下进行浏览时,可以浏览企业信息和产品信息,当需要购买商品时只有登陆后才可对购物车进行操作,登陆后用户可以对自己的信息进行修改。系统管理员对用户信息进行管理,可以查询注册过的用户、删除用户的权限。同时系统管理需要对数据库进行备份和还原操作,以避免因为故障或其他原因导致数据丢失,通过数据库管理可以有效的保护数据。系统管理员可以对已经发布的产品信息进行实时动态修改,可以新增、删除、查询产品企业网站用例图如下:
图2-2功能需求用例图
2.2.2日程安排用例图
普通用户对产品信息按不同的条件进行搜索,产品搜索用例图如下:
图2-3产品搜索用例图
2.2.3订单管理用例图
普通用户对订单进行购买时需要的信息进行新增、修改、删除、查询等操作,订单管理用例图如下:
图2-4订单管理用例图
2.2.4购物车管理用例图
普通用户把要购买的产品添加到购物车,同时可以设置该产品的购买数量或者添加购物车后不想购买该产品可以实现删除操作,同时可以查询购物车中产品的信息。购物车管理用例图如下:
图2-5购物车管理用例图
2.2.5用户管理用例图
普通用户可以注册和修改自己的信息,管理员可以查询和删除用户,用例图如下:
图2-6用户管理用例图
2.2.6产品信息管理用例图
系统管理员可以添加产品信息、对已发布的产品信息进行修改、可以删除已发布的产品,可以对产品进行分类管理、能查询所有产品信息。产品信息管理用例图如下:
图2-7产品信息管理用例图
2.2.7数据库管理用例图
系统管理员对数据库进行备份、还原、设置是否自动备份。数据库管理用例图如下:
图2-8数据库管理用例图
第三章 概要设计
3.1 数据库设计
中小型企业网站数据库中各个表格的设计结果如下面的几个表所示。数据库中的数据表如下:
表T_corpcart(购物车信息表)表T_corpkind(产品类别表)表T_corpuser(用户表)表T_corporder(产品订单表)表T_cropproduct(产品信息表)表T_corpresource(产品图片信息表)表T_corpsupplier(厂商信息表)以下为关系图:
图3-1数据库关系图
3.2 静态模型
3.2.1类图
图3-2中小型企业类图
本系统采用三层架构分为CRMMODEL层、CRMDAL层、CRMBLL层、WEB层,在CRMDAL层中添加SqlHelp基类,CRMDAL层中其他类都调用SqlHelp类的方法实现增加删除、修改、查询等操作。
3.3企业网站状态图
3.3.1管理员状态图
主屏
Do/显示主页面Do/Do/显示Do/备份
还原
管理员登录
DO/显示管理员登录界面
Do/验证用户
Do/显示管理员主页面
增、改、删
Do/Do/显示Do/备份
还原
败
输入密码
密码错误
Do/关闭
成功
Do/点击注销
数据库管理
DO/显示数据库管理页面
用户管理
DO/显示管理页面
产品管理
DO/显示管理页面
注销
Do/备份
Do/还原
Do/显示备份失败
成功
Do/显示还原失败
Do/查询
输入查询条件
Do/增、删
Do/信息失败
Do/查询
输入查询条件
Do/增、改、删
成功
Do/信息失败
Do/注册
Do/注册失败
输入注册信息
成功
图3-3管理员状态图
3.3.1管理员状态图
主屏
Do/显示主页面Do/Do/显示Do/备份
还原
用户登录
DO/显示用户登录页面
Do/验证用户
Do/显示用户主页面
增、改、删
Do/Do/显示Do/备份
还原
败
输入密码
密码错误
Do/关闭
成功
Do/点击注销
用户信息管理
DO/显示管理页面
购物车管理
DO/显示列表页面
订单管理
DO/显示订单页面
注销
Do/修改
Do/修改失败
成功
Do/查询
输入查询条件
Do/增、改、删
Do/信息失败
Do/查询
输入查询条件
Do/增、改、删
成功
或取消
Do/信息失败
Do/注册
Do/注册失败
输入注册信息
成功
成功或取消
成功
或取消
图3-4普通用户状态图
第四章 详细设计
4.1 三层架构
通过vs2008创建
http://ASP.NET网站,生成解决方案,在解决方案下创建CRMMODEL类库、CRMDAL类库、CRMBLL类库。在CRMDAL类库中创建SqlHelp帮助类。
各个类库代码示例如下:
- corpdal类库下SqlHelp类代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace corpdal
{
public class SqlHelp
{
SqlConnection conn = null;
SqlCommand cmd = null;
SqlDataAdapter da = null;
DataSet ds = null;
SqlDataReader dr = null;
/// <summary>
/// 构造函数
/// </summary>
public SqlHelp()
{
conn = new SqlConnection("server=.//SQLEXPRESS;Database=corp;trusted_connection=yes;");
}
/// <summary>
/// 获得数据集
/// </summary>
/// <param name="sql">传入的SQL语句</param>
/// <returns>返回数据集</returns>
public DataSet sell(string sql)
{
ds = new DataSet();
da = new SqlDataAdapter(sql, conn);
da.Fill(ds);
return ds;
}
/// <summary>
/// 获得数据集
/// </summary>
/// <param name="sql">传入的SQL语句</param>
/// <param name="para">参数</param>
/// <returns>返回查询的记录</returns>
public DataSet sellsingle(string sql, SqlParameter[] para)
{
ds = new DataSet();
da = new SqlDataAdapter(sql, conn);
da.SelectCommand.Parameters.AddRange(para);
da.Fill(ds);
return ds;
}
/// <summary>
/// 执行传入的insert,delete,update语句
/// </summary>
/// <param name="sql">insert,delete,update语句</param>
/// <param name="para">参数</param>
/// <returns>受影响的行数</returns>
public int ExecuteNonQuery(string sql, SqlParameter[] para)
{
try
{
conn.Open();
cmd = new SqlCommand(sql, conn);
cmd.Parameters.AddRange(para);
return (cmd.ExecuteNonQuery());
}
catch (Exception e)
{
throw e;
}
finally
{
conn.Close();
}
}
public SqlDataReader ExcuteReader(string sql, SqlParameter[] para)
{
try
{
conn.Open();
cmd = new SqlCommand(sql, conn);
cmd.Parameters.AddRange(para);
dr = cmd.ExecuteReader();
return dr;
}
catch (SqlException ee)
{
conn.Close();
throw ee;
}
}
}
}
- corpmodel类库下的product类下代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace corpmodel
{
public class product
{
private int proId;
private string proName;
private string proDesc;
private int resId;
private int supId;
private int kindId;
private int stock;
private float uniprice;
private float outletsprice;
private DateTime pubdate;
private string detail;
public string Detail
{
get { return detail; }
set { detail = value; }
}
public DateTime Pubdate
{
get { return pubdate; }
set { pubdate = value; }
}
public float Outletsprice
{
get { return outletsprice; }
set { outletsprice = value; }
}
public float Uniprice
{
get { return uniprice; }
set { uniprice = value; }
}
public int Stock
{
get { return stock; }
set { stock = value; }
}
public int KindId
{
get { return kindId; }
set { kindId = value; }
}
public int SupId
{
get { return supId; }
set { supId = value; }
}
public int ResId
{
get { return resId; }
set { resId = value; }
}
public string ProDesc
{
get { return proDesc; }
set { proDesc = value; }
}
public string ProName
{
get { return proName; }
set { proName = value; }
}
public int ProId
{
get { return proId; }
set { proId = value; }
}
}
}
- corpdal类库下dalproduct类代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using corpmodel;
namespace corpdal
{
public class dalproduct
{ SqlHelp SqlHelp = null;
DataSet ds = null;
public dalproduct()
{
SqlHelp = new SqlHelp();
}
public DataSet SellAll()
{
string sql = "select *from T_cropproduct";
DataSet ds = new DataSet();
using (ds = SqlHelp.sell(sql))
{
return ds;
}
}
public DataSet SellAllTime()
{
string sql = "select *from T_cropproduct order by Pubdate";
DataSet ds = new DataSet();
using (ds = SqlHelp.sell(sql))
{
return ds;
}
}
public DataSet SellAllStock()
{
string sql = "select *from T_cropproduct order by Stock";
DataSet ds = new DataSet();
using (ds = SqlHelp.sell(sql))
{
return ds;
}
}
public DataSet Single(product product1)
{
string sql = "select *from T_cropproduct where KindId=@KindId";
SqlParameter[] para = {
new SqlParameter ("@KindId",product1 .KindId )
};
DataSet ds = new DataSet();
using (ds = SqlHelp.sellsingle(sql, para))
{
return ds;
}
}
public DataSet Single_proname(product product1)
{
string sql = "select * from T_cropproduct where ProName=@ProName";
SqlParameter[] para = {
new SqlParameter ("@ProName",product1.ProName )
};
DataSet ds = new DataSet();
using (ds = SqlHelp.sellsingle(sql, para))
{
return ds;
}
}
public DataSet Single_SupId(product product1)
{
string sql = "select * from T_cropproduct where SupId=@SupId";
SqlParameter[] para = {
new SqlParameter ("@SupId",product1.SupId )
};
DataSet ds = new DataSet();
using (ds = SqlHelp.sellsingle(sql, para))
{
return ds;
}
}
public DataSet Single_KindIdTime(product product1)
{
string sql = "select * from T_cropproduct where KindId=@KindId order by Pubdate DESC";
SqlParameter[] para = {
new SqlParameter ("@KindId",product1.KindId )
};
DataSet ds = new DataSet();
using (ds = SqlHelp.sellsingle(sql, para))
{
return ds;
}
}
public DataSet Single_KindIdStock(product product1)
{
string sql = "select * from T_cropproduct where KindId=@KindId order by Stock";
SqlParameter[] para = {
new SqlParameter ("@KindId",product1.KindId )
};
DataSet ds = new DataSet();
using (ds = SqlHelp.sellsingle(sql, para))
{
return ds;
}
}
public bool insert(product product1)
{
string sql = "insert into T_cropproduct values(@ProName,@ProDesc,@ResId,@SupId,@KindId,@Stock,@Uniprice,@Outletsprice,@Pubdate,@Detail)";
SqlParameter[] para = {
new SqlParameter ("@ProName",product1.ProName ),
new SqlParameter("@ProDesc",product1.ProDesc ),
new SqlParameter ("@ResId",product1.ResId ),
new SqlParameter ("@SupId",product1.SupId ),
new SqlParameter ("@KindId",product1.KindId ),
new SqlParameter("@Stock",product1.Stock ),
new SqlParameter ("@Uniprice",product1.Uniprice ),
new SqlParameter ("@Outletsprice",product1.Outletsprice ),
new SqlParameter ("@Pubdate",product1.Pubdate ),
new SqlParameter ("@Detail",product1.Detail)
};
if (SqlHelp.ExecuteNonQuery(sql, para) > 0)
{
return true;
}
else
{
return false;
}
}
public bool update(product product1)
{
string sql = "update T_cropproduct set ProName=@ProName,ProDesc=@ProDesc,ResId=@ResId,SupId=@SupId,KindId=@KindId,Stock=@Stock,Uniprice=@Uniprice,Outletsprice=@Outletsprice,Pubdate=@Pubdate,Detail=@Detail where ProId=@ProId";
SqlParameter[] para = {
new SqlParameter ("@ProId",product1.ProId ),
new SqlParameter ("@ProName",product1.ProName ),
new SqlParameter("@ProDesc",product1.ProDesc ),
new SqlParameter ("@ResId",product1.ResId ),
new SqlParameter ("@SupId",product1.SupId ),
new SqlParameter ("@KindId",product1.KindId ),
new SqlParameter("@Stock",product1.Stock ),
new SqlParameter ("@Uniprice",product1.Uniprice ),
new SqlParameter ("@Outletsprice",product1.Outletsprice ),
new SqlParameter ("@Pubdate",product1.Pubdate ),
new SqlParameter ("@Detail",product1.Detail)
};
if (SqlHelp.ExecuteNonQuery(sql, para) > 0)
{
return true;
}
else
{
return false;
}
}
public bool delete(product product1)
{
string sql = "delete from T_cropproduct where ProId=@ProId";
SqlParameter[] para = {
new SqlParameter ("@ProId",product1.ProId )
};
if (SqlHelp.ExecuteNonQuery(sql, para) > 0)
{
return true;
}
else
{
return false;
}
}
}
}
- corpbll类库下bllproduct类代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using corpmodel;
using corpdal;
namespace corpbll
{
public class bllproduct
{
dalproduct dalproduct1 = new dalproduct();
public DataSet SellAll()
{
return dalproduct1.SellAll();
}
public DataSet SellAllTime()
{
return dalproduct1.SellAllTime();
}
public DataSet SellAllStock()
{
return dalproduct1.SellAllStock();
}
public DataSet Single(product product1)
{
return dalproduct1.Single(product1);
}
public DataSet Single_proname(product product1)
{
return dalproduct1.Single_proname(product1);
}
public DataSet Single_SupId(product product1)
{
return dalproduct1.Single_SupId(product1);
}
public DataSet Single_KindIdTime(product product1)
{
return dalproduct1.Single_KindIdTime(product1);
}
public DataSet Single_KindIdStock(product product1)
{
return dalproduct1.Single_KindIdStock(product1);
}
public bool insert(product product1)
{
return dalproduct1.insert(product1);
}
public bool update(product product1)
{
return dalproduct1.update(product1);
}
public bool delete(product product1)
{
return dalproduct1.delete(product1);
}
}
}
4.2 Web层下窗体
4.2.1普通用户登录界面
Web层下普通用户登录页面:
图4-1 普通用户登录页面图
只需要用户名密码便可以登录,若还没有注册的用户可以点击注册进入Register.aspx注册页面进行注册。
4.2.2订单页面
Web层下order.aspx订单页面如下:
图4-2订单页面
订单页面包括购物基本情况(订单号、数量、总的金额,订货人基本情况(姓名、地址、邮编)以及收货人的基本情况(姓名、地址、邮编)。
4.2.3购物车页面
Web层下购物车页面如下:
图4-3 购物车页面
购物车读取选择的产品的基本信息,并把产品购买数量默认设置为1,在购物车里允许修改,可以删除暂时不够的产品。点击进入结算中心进行结算。
总 结
通过一个多月的课程设计,终于大体上完成了此次的课程设计,在制作这次设计期间收获颇多,大致有以下几点供大家相互,如下:
1.此次课程设计是借用Visual Studio 2008、SQL Server 2005以及UML等工具完成了本次课程设计,经过这些天的熟练掌握、对这几个工具的熟练程度也是提高了许多。在设计课程设计代码期间,要注意很多的细节,一个细节的错误,有可能导致很多功能无法应用的情况。
2.刚接手做的时候,由于知识储备不够,导致有点不知道从何做起的感觉。最后是不断的查阅相关资料,以及在网上和相关领域的人进行交流,才不断将系统完善的展现给大家。由于时间的问题,有很多功能上还具有缺陷不是很完善。
3.做系统时,我们要严格的按着软件工程的开发思路,按照UML统一建模,不能想到什么就写什么,这样在后面的制作过程中,也许会出现不可弥补的错误。我们应该在前期多做分析和研究,理清整个网站的思路。这样在制作过程中,就不会迷失方向。
经过此次,我想以后在制作相关类似的东西,我有信心做出比现在更加完善,更加具有逻辑性的系统。而且更加快捷的完成系统。
参考文献
[1] 张海藩.软件工程导论. [M].杭州:清华大学出版社, 2010
[2] 张海藩.软件工程.[M].杭州:清华大学出版社,2009.7
[3] 《uml基础与rose建模案例》,吴建 郑潮等,人民邮电出版社,2009
[4] 陈志泊.数据库原理及应用教程(第二版)[M].人民邮电出版社.2010.4
[5] 王晟.《Visual C#.NET数据库开发经典案例解析》[M]. 杭州:清华大学出版社.2005