1.设计(论文)进展状况
(1)系统采用B/S结构,用户界面通过www浏览器来实现,主要的业务逻辑在Web服务器和应用服务器端实现,数据存储在数据库服务器,形成常见的应用三层结构。
系统采用MVC(Modle-View-Controller)框架,模型(Modle)提供数据的内部表示,试图(View)负责显示数据,控制器(Controller)负责对用户的输入或内部时间进行解释,决定要做的处理步骤和处理内容,控制模型和视图做相应的改变。
部署图如下所示,前台采用Web浏览器显示页面,后台包括Web服务器、应用服务器和数据库服务器,主要处理业务逻辑。
(2)系统的实体类图,系统中主要有个实体类:超级管理员类(SuperAdmin),管理员(Admin),信息类(Information),发布时间类(Date)。下面给出每个类的描述。
类(SuperAdmin)为教师类,SuperAdmin id属性表示系统管理员的序号,name属性表示系统管理员的用户名,password属性为密码。对整个系统进行管理。包括对信息的发布、增加、修改和查询,管理普通的管理员及其相应的权限。具体属性类型与需求中的数据字典相似。对应的set*()功能是为了给私有属性*赋值以及修改。对应的get*()属性是为了获得相应的属性。
类(Admin)为管理员类,Admin-id属性表示排课人员的序号,name表示管理员的用户名,password属性为密码,具体属性与数据字典相似。对应的set*()方法的功能是为了给这些私有属性赋值以及修改。对应的get*()方法的功能是为了取得相应的私有属性的值。
类(Webcolumn)为栏目类,Webcolumn-id属性Webcolumn的编号。Wtitle属性是栏目名,Wup指上该节点的父节点是谁。对应的set*()功能是为了给私有属性设定值以及修改值。对应的get*()功能是为了取得私有属性值。
类(Information)为信息类,Info-id属性是Information的编号。Ititle属性是标题,content属性是内容,time属性是信息发布时间。对应的set*()功能是为了给私有属性设定值以及修改值。对应的get*()功能是为了取得私有属性值。
对应的类图如下:
(3)系统用例图:下面采用用例图来表示各对象之间或参与者之间如何通过交互来实现需求中的功能。其中 ,超级管理员对普通管理员进行管理,并为其赋予权限,即那个管理员对那个模块的信信息具有增加、修改、查询和删除的权限,另外,超级管理员对每个模块均有增删改差的权限;当管理员获得相应的权限之后,便可以对相应的模块进行管理,发布信息;而公众用户可以对信息进行查询。
(4)完成了该设计最主要模块信息发布,删除,修改和查询功能,具体进展如下:
①数据库方面,完成了信息发布,修改,删除,查询功能所需要的数据库的设计。建立了数据库information,其中包括十一个个数据表和五个视图: News:存放发布的新闻,;Newstype存放新闻类型,例如今日要闻、通知通告等;Special:存放专题专栏信息,SpecialType存放专题专栏的信息,包括创卫专栏、全民创业、法制宣传等相关内容;Enterprise:企业服务数据表,用于企业向公众发布的事物,EnterpriseType包括企业服务的类型:业务受理、招商引资和在线办事等;Policy:政务公开数据表,PolicyType存放政务公开中的领导、政府机构的介绍,以及政府的财政、活动、人事、采购等情况。Scene:定期的景区介绍、住宿、交通等情况。Resident:包括相关部门发布的信息,ResidentType包括就业培训、医疗卫生、文体娱乐等信息。在这是一个表中,建立了五个视图:VNews、VSpecial,VEnterprise、VPolicy、以及VResident,这五个视图实现十个表中的两两连接,以方便查询信息及其所对应的信息类型,这样简化了sql的查询语句,直接对视图尽心增删改查操作。数据库设计的E-R图如下所示:
(2)后台方面,按照后台信息发布功能以及需求进行详细设计和编写代码,对以上设计的六个数据表实现了增加、修改、查询、删除的功能。由于主要负责后台的设计,所以在asp.net环境下,制作出了简单的页面,管理员可以通过此对已发布的信息表进行删除、修改和查询,也可以对待发布信息进行发布。
流程图如下:
查询部分主要代码:
namespace DAL
{
public class NewsDAL
{
public List <News> showNews()
{
List <News> lst = new List<News> ();
using(SqlConnection conn = new SqlConnection ("Data Source=.\\sqlexpress;Database=article;Persist Security Info=True;User ID=sa;Password=sasasa"))
{
string sql="select * from News";
conn .Open ();
SqlCommand comm = new SqlCommand (sql,conn);
SqlDataReader reader =comm.ExecuteReader();
while(reader.Read ())
{
News newing = new News ();
newing .Nid = reader["Nid"].ToString ();
newing .Nsubject = reader["Nsubject"].ToString ();
newing.Nabstract = reader ["Nabstract"].ToString ();
newing .Ncontent = reader ["Ncontent"].ToString ();
lst .Add (newing);
}
conn .Close();
}
return lst ;
} } }
插入部分主要代码:
namespace DAL
{
public class NewsDAL
{
public int addNews(NewsInfo info)
{
int r = 0;
using(SqlConnection conn = new SqlConnection ("Data Source=.\\sqlexpress;Database=article;Persist Security Info=True;User ID=sa;Password=sasasa"))
{
String sql = "insert into firstLevelTitle values('"+
info.Tname+"','"+
info.Tcreator+"','"+
info.TcreateTime+"')";
conn.Open();
SqlCommand comm = new SqlCommand(sql,conn);
r = comm.ExecuteNonQuery();
conn.Close();
}
return r;
} } }
删除部分主要代码:
public int delNews(int nid)
{
int r = 0;
using (SqlConnection conn = new SqlConnection(@"server=.;database=swq;uid=sa"))
{
string sql = "delete from newsInfo where nid="+nid;
conn.Open();
SqlCommand com = new SqlCommand(sql,conn);
r = com.ExecuteNonQuery();
}
return r;
}
修改部分主要代码:
public int updNews(NewsInfo info)
{
int r = 0;
using (SqlConnection conn = new SqlConnection(@"server=.;database=swq;uid=sa"))
{
string sql = "update newsInfo set ntitle='"+
info.Ntitle+"',ncontent='"+
info.Ncontent+"',ntime='"+
info.Ntime+"' where nid=" + info.Nid;
conn.Open();
SqlCommand com = new SqlCommand(sql, conn);
r = com.ExecuteNonQuery();
}
return r;
}
(3)前台页面显示,利用表格和CSS样式按照系统功能划分区域以及设计相应的显示和操作区域,整个HTML静态页面采用ASP.NET相对应的模板技术进行各个页面的设计,此阶段贯穿整个系统的设计,紧密连接项目进度。
2.存在问题及解决措施
(1)数据库方面,自己建立数据库information后,在操作数据库时,发
此方法过于繁琐,并且有时候忘记数据库关闭儿导致数据库异常。
解决:采用每个功能都用using(){}方法来连接数据库,这样在using的最后一个大括号执行前,系统自动关闭数据库连接以及所对应的Read方法的销毁,这样就能很好的解决以上的问题。
(2) 后台方面,一开始连数据库总是连接不上。
解决:最后发现asp.net中自带数据库,而自己有安装了SQL Server,导致连接数据库时服务器名字不知道,开始用“server=.;database=articles;uid=sa”;最后用 “DataSource=.\\sqlexpress;Database=article;PersistSecurityInfo=True;UserID=sa;Password=sasasa"才得以连上。并执行了后续的增删改查操作。
(3)前台方面,由于对html比较熟悉,勇气编写的页面也比较清晰、漂亮,但不知如何嵌入asp.net中,而在ASP。Net中设计的页面又不美观。
解决:了解相关教材后发现,在asp.net中页面设计中,只需将相对应得代码删除再嵌入做好的html代码即可,但一定要做到对应标签的成对出现,否则会报错。
2.后期工作安排
第11周:完成数据库的建立:建立数据库manager,其中包括两种表:superm:超级管理员,这部分管理员可以对系统进行维护,可对任何一个模块发布信息,并管理注册用户对信息发布、增加、修改和删除的权限。Normalm:存放管理员的信息以及对各个模块的防卫权限。
第12周:搜集素材,制作前台方面:包括登陆页面、注册页面及权限授予界面。
第13——15周:搭建后台,连接数据库与相关页面,稿件完整系统,实现其功能。在登陆后台时,通过检验登录人员输入的用户名和密码,进而确定是否合法管理员及其送拥有的权限。
第16——18周:完成相关文档的编写工作。