基于C#和SQL SERVER的校园知识问答论坛网站的设计与实现

sohot

发布日期: 2018-10-01 22:13:12 浏览量: 312
评分:
star star star star star star star star star_border star_border
*转载请注明来自write-bug.com

摘 要

本文使用Asp.Net Core 和MsSqlServer技术,详细说明开发校园知识论坛系统的开发。校园知识论坛系统是基本B/S模式的一种交互性极强的电子信息服务系统。它为使用者提供一个交流的平台,每一个用户都可以在上面问答知识,获取信息,发布观点和评论,极大地促进了信息的共享。

关键词:Asp.Net Core;MsSqlServer;知识论坛;B/S

Abtract

This article uses Asp.Net Core and MsSqlServer technology to explain in detail the development of the campus knowledge forum system. The campus knowledge forum system is a highly interactive electronic information service system based on the basic B/S model. It provides users with a platform for communication. Each user can ask questions, obtain information, publish opinions and comments, and greatly promote the sharing of information.

Keywords:Asp.Net Core; MsSqlServer; Knowledge Forum; B/S

1 绪论

1.1 开发背景及意义

论坛又名网络论坛BBS,它是一种电子信息服务系统,为使用者提供一个平台,用户可以在上面撰写、发布信息或者是提出意见看法[3]。它是一种交互极强,知识高度共享的电子信息服务系统,使用者可以在平台上获取各种信息服务,问题、聊天等。

论坛随着网络的发展,迅速发展壮大。现在的论坛涵盖我们生活的各个方面,而校园知识论坛是面向在校学生的信息共享和交流的平台,可以促进在校学生的学术交流、增强互动性。它可以为在校学生提供一个解决方法的途径,一个共享知识的平台,一个展示才华的舞台。

在本文中,主要介绍使用Asp.Net Core技术来实现校园知识论坛建设。通过基本Internet和Web数据库技术,解决用户间的数据共享,用户可以通过浏览器来获取想要的数据,同时可以向服务器存储自己的数据。服务端把用户授权的信息展示出来,构建出一个小型的数据中心,方便用户查阅信息,获取解决方案,兴趣交流。

目前,可以通过校园知识论坛系统,向广大的同学提问自己的疑问,同时可以回答别人提出的疑问,阅读分享的知识。而志同道合的人可以关注同一个话题进行交流、阐述观点。

1.2 课题目标

本课题主旨在于阐述如何使用Asp.Net Core为基础开发校园知识论坛系统。根据软件的开发流程,在开发前需要对需求和功能进行分析和深入的了解,然后根据需求和功能模拟出流程,最后利用Asp.Net Core平台构建项目架构和功能的开发。在开发的过程中,将会使用到很多技术,本课题会阐述开发的技巧以及功能实现的思路。

2 开发技术介绍

2.1 服务器

由于开发使用的C#语言,基于Asp.Net Core2.0.5运行环境,在服务器上选择Windows Service 2016数据中心版的IIS10(Internet Information Services)进行部署和托管。基于IIS的托管及其方便维护和调试。

2.2 数据库

Microsoft SQL Server是Microsoft 公司推出的关系型数据库管理系统,具有使用方便可伸缩性好与相关软件集成程度高等优点,被企业广泛使用[4]。Microsoft SQL Server 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,可以构建和管理用于业务的高可用和高性能的数据应用程序[4]。对Asp.Net Core2.0有着良好的支持,可以高效处理大量数据和并发操作,事务机制可以保证数据的一致性,同时可以构建集群用于大数据的处理,所以采用Microsoft SQL Server作为数据服务。

Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库[5]。对网站中重复读取的数据,如果采用Redis进行缓存可以减轻数据库服务器的负担,同时能够提高访问速度[5]。

2.3 Asp.Net Core

.Net是Microsoft针对Windows开发而编写的集成框架。.Net 允许开发者使用C#,VB,F#语言开发能够在Windows设备上运行的程序。Asp.Net Core是.Net跨平台的产品,它允许程序能够在不同的操作系统上运行。Asp.Net Core基于.Net Core环境,无托管模式,MVC结构使得代码结构清晰,同时包含Css,JavaScript自压缩功能,使得开发的东西更健壮。

3 系统分析

3.1 系统功能分析

用例图是指项目的蓝图,通过用例图明确项目的功能[6]。以下是用户和管理员的用例图。

在此校园知识论坛系统内,用户将可以写文章、提问、评论、管理个人信息和关注他人的社交。如下图3-1所示:

管理员拥拥有着用户管理、运维管理、数据统计、内容管理和权限管理等功能。如下图3-2所示:

3.2 系统数据分析

在知识论坛中的问答模块,用户可以提问多个问题,我们通过标签来区分每个问题涉及的领域,所以,1个问题可以对应n个标签。

每一的问题可以由多个人进行回答,因此,问题好和回答之间是1:n的关系。专栏是是给用户写文章的地方,同样,一篇专栏对应多个标签,一个用户可以发表多篇专栏文章,专栏和标签的关系时1:n,用户和专栏之间的也是1:n。具体如下图3-3所示:

3.3 系统流程分析

用户在没有登录的状态下,只能查看问题、文章和、评论。用户需要登录后提问、评论、写文章。如果用户没有登录账户则需要进行注册。一般流程是用户进行登录,没有账户进行注册,注册成功返回登录,登录成功后提问、回答问题、写文章。

登录模块。具体操作流程如下图3-4所示:

问答模块。其具体的流程图如下图3-5所示:

文章发布流程图如图3-6所示:

3.4 功能模块设计

在此次研究中,使用Asp.NetCore 开发高可用的站点是本次研究的重点。知识论坛由于其言论的自由性,我们需要对网站的内容进行严格的管理,因此,知识论坛有多个模块组成,由管理后台对全站的内容进行管理。各个模块相应结构图如下图3-7所示:

Web站点是对用户提供的可视化交流平台,后台管理系统是对网站运维提供的操作平台。

Web站点主要包含用户的注册、登录、找回密码、完善个人信息、提问、回答、评论、写文章、申请话题、关注其他用户等。Web站点是用户的操作平台,为用户提供良好的用户体验和高效的问题解决途径,同时为用户提供良好的沟通平台。她作为重要的一个大模块连接的是用户。

后台管理系统是管理人员对网站的运行提供支持,净化网络环境,为用户提供良好的上网环境,也是服务于用户。它主要包含内容管理(包含提问、回答、写专栏、用户资料的管理)、基础数据管理(包含敏感词库、网站运行参数等的管理)、角色和权限管理(管理人员之间的角色和权限,能够访问到的和可操作的权限管理)。

3.5 系统架构设计

在系统的架构方面上,我采用微软提供的“简介架构”。采用仓储-服务模型。在项目的基础设施中包含仓库服务,其他公共的类库,项目核心中包含实体类,服务,接口,主要用于处理业务核心。Web站点和后台都使用的一套核心代码,这样处理能后减轻代码量,同时能够让项目更容易管理和扩展。具体的系统架构如图3-8所示:

4 数据库分析与设计

数据库在整个系统中起着重要的所有,它存储着整站的基本数据。再设计数据库的时候要哦根据业务需求,把数据拆分为多个表,通过各表之间的逻辑关系,构建表与表之间的关系模型。同时,数据库在网站的并发中是重要的一环,在保证数据库能够支持高并发的同时,数据的安全性、稳定性、一致性都是需要进行考虑。

数据库设计包括数据库系统的需求分析、概念设计、逻辑设计、物理设计阶段[1]。

4.1 数据项说明

  • 用户信息表:Id、UId、用户名、邮箱、密码、图像、电话、QQ、微信、邮箱是否被验证、注册时间
  • 问题表:Id、标题、问题描述、提问者Id、是否匿名、提问时间
  • 回答表:Id、回答内容、是否采用、问题Id,回答者Id、回答时间
  • 标签表:Id、标签名、标签描述、父级Id、是否可用、创建时间
  • 专栏表:Id、标题、内容、是否匿名、创建时间
  • 问题和标签中间表:问题Id、标签Id
  • 专栏和标签中间表:专栏Id、标签Id
  • 管理员信息表:Id、管理员用户名、密码、手机号、创建时间

4.2 数据表说明

校园知识论坛共包含8张表,系统数据表如下所示:

表名 说明 功能
UserInfo 用户信息表 存储用户个人信息
Question 问题表 存储用户提问的问题
Answer 回答表 存放问题的回答
Tag 标签表 存放标签信息
Blog 专栏表 存放用户撰写的文章
QuestionTags 问题和标签中间表 存放问题和标签的关系
BlogTags 专栏和标签的中间表 存放专栏和标签的关系
Admin 管理员信息表 存放管理员信息表

4.3 表结构设计

根据系统的需求,创建不同的表用来存储用户的信息,根据不同表之间的关系,构建一对一、一对多、多对多的关系。用户产生的数据大多都是文本数据,很少涉及图片,视频等数据资料,MsSQLServer这种关系型数据库完全满足系统的使用。具体的表信息如下所示:

4.3.1 用户信息表

此表用于记录所有用户的个人资料,包括Id、UId、用户名、邮箱、密码、图像、电话、QQ、微信、邮箱是否被验证、注册时间。

字段名 说明 类型 长度 是否为空 主键或外键
Id 自动编号 Int - 主键
UId 用户唯一Id Nvarchar 32 -
UserName 用户名 Nvarchar 32 -
Email 邮箱 Nvarchar 128 -
Password 密码 Nvarchar 32 -
Icon 用户图标 Url Nvarchar 128 -
TelNumber 图手机号 Nvarchar 11 -
QQ QQ Nvarchar 18 -
WeChat 微信号 Nvarchar 18 -
IsEmailValidate 邮箱被验证 Bit - -
SubTime 创建时间 datetime2(7) - -

4.3.2 问题表

此表用于记录问题信息,包括Id、标题、问题描述、自定义标签、所属话题、提问者Id、是否匿名、提问时间。

字段名 说明 类型 长度 是否为空 主键或外键
Id 自动编号 int - 主键
Title 标题 nvarchar 64 -
Description 问题描述 nvarchar Max -
Tag 自定义标签 nvarchar 32 -
UserInfoId 提问者Id int - 外键
Anonymous 是否匿名 bit - -
SubTime 提问时间 datetime2(7) - -

4.3.3 回答表

此表用于用户的回答,其包含Id、回答内容、是否匿名、是否采用、问题Id,回答者Id、回答时间。

字段名 说明 类型 长度 是否为空 主键或外键
Id 自动编号 int - 主键
Content 回答内容 nvarchar Max
Adoption 是否采用 bit -
QuestionId 问题Id int - 外键
UserInfoId 回答者Id int - 外键
SubTime 回答时间 datetime2(7) -

4.3.4 话题表

此表用于记录话题信息,包括Id、话题、话题描述、父级Id、是否可用、创建时间。

字段名 说明 类型 长度 是否为空 主键或外键
Id 自动编号 int - 主键
TagName 话题名称 nvarchar 32 -
Description 描述 nvarchar Max -
PerId 父级Id int - -
Enable 是否可用 bit - -
SubTime 创建时间 datetime2(7) - -

4.3.5 专栏表

此表用于记录系统用户撰写的文章信息,包括Id、标题、内容、所属话题、是否匿名、创建时间。

字段名 说明 类型 长度 是否为空 主键或外键
Id 自动编号 int - 主键
Title 话题名称 nvarchar 1238 -
Content 描述 nvarchar Max -
Anonymous 是否可用 bit - -
SubTime 创建时间 datetime2(7) - -

4.3.6 问题和标签中间表

记录问题和标签之间的关系。

字段名 说明 类型 长度 是否为空 主键或外键
TagId 标签Id int - 外键
QuestionId 问题Id int - 外键

4.3.7 专栏和标签中间表

记录专栏个标签之间的关系。

字段名 说明 类型 长度 是否为空 主键或外键
TagId 标签Id int - 外键
BlogId 专栏Id int - 外键

4.3.8 管理员信息表

此表用于记录系统中网站管理员的信息,包括Id、用户名、密码、手机号、创建时间。

字段名 说明 类型 长度 是否为空 主键或外键
Id 自动编号 int - 主键
UserName 话题名称 nvarchar 32 -
Password 描述 nvarchar 32 -
TelNumber 所属话题 nvarchar 11 -
SubTime 创建时间 datetime2(7) - -

5 详细设计

每一个站点,用户看到的是界面,而界面的配色,排版会给用户很深的印象。因此网站的界面需要设计的简洁,美观,以此来提高用户的体验度。

5.1 问题列表页

主页主要展示用户的提问和回答详情。

5.2 提问界面

5.3 回答界面

5.4 标签界面

5.5 专栏页面

5.6 个人中心

6 系统运行与测试

6.1 测试目的

软件测试是对全部或部分的功能、模块的计算机程序在正式使用前的检测,以确保该程序能够按照预定的方式运行。在软件投入生产性运行之前,尽可能多地发现软件中的错误。测试是对软件规格说明、设计和编码的最后复审,所以软件测试贯穿在整个软件开发期的全过程[2]。

6.2 测试环境

  • Windows
  • MsSQLServer
  • .Net Core2.0.5集成环境

6.3 测试方法

6.3.1 单元测试

单元测试时在开发的过程中,对最小单元代码的测试。通过单元测试能够及时发现系统存在的语法、逻辑等问题。在开发的过程中,我们会对每一部分的功能代码进行单元测试,以期达到预期目标。

6.3.2 集成测试

集成测试是在单元测试的基础上,把所有的模块进行组装,整体测试,以发现模块与模块之间是否存在问题。在集成测试中,通过走业务流程,逐步查看程序是否达到预期目标

结束语

本次毕设耗时近两个月的时间,数据库迁移8次,SVN代码提交52次。在这次的制作中,因为使用Asp.Net Core 2.0.5,在国内并没有大规模应用,解决方法不够,遇到很多的问题,同时也踩了很多坑,但是学习到很多东西。在实践中学会了Entity Freamword Core First一对多,多对多的关系模型设计,使用Asp.NetCore,了解并应用了IOC这种优雅的设计模式。这促使着我不断的学习新的知识,技术在不断的更新我们需要不断的学习来充实自己。

参考文献

[1] 段有志. 浅谈关系数据库的系统设计[J].中国科技纵横,2011,(09)

[2] 刘欣怡, 周跃东, 田秀丽. 软件工程[M].清华大学出版社,北京交通大学出版社,2007

[3] 赵晓军.基于ASP.NET的在线教学论坛设计[D].河北大学,硕士论文,2016

[4] 朱丹.关于教务管理系统的设计与实现[J].卷宗,2015,(10)

[5] 李会娟.缓存技术研究及其在电子政务平台中的应用[D]. 北京工业大学, 硕士论文,2009

[6] 钟珞 袁景凌 魏志华汤练兵.软件工程[M]. 清华大学出版社,2005

[7] SteveSmith.Architecting Modern Web Applications with Asp.Net Core and MicrosoftAzure[M], DevDiv, .NET and Visual Studio product teams,2017

[8] 严文涛,张明.MSSQL SERVER数据库服务器的安全问题和安全配置[J].山东电子,2002

[9] 超宇,李金香.Redis在高速缓存系统中的应用[J].微型机与应用,2013,(06)

[10] 徐鹏民.用MSSQL Serve 建立Internet上的全文检索系统[J].计算机世界,2000,(08)

[11] 叶红卫.基于ASP.NET MVC框架的Web设计[J].河北北方学院学报(自然科学版),2009,(12)

[12] Nagel.C,李铭(译),黄静(审).C#高级编程[M],清华大学出版社,2017(10)

上传的附件 cloud_download 校园知识问答论坛.7z ( 1.98mb, 10次下载 )
error_outline 下载需要10点积分

发送私信

我想要你幸福,但我希望我是你幸福的原因

14
文章数
11
评论数
最近文章
eject