项目课程报告 课程名称:
项目名称:网站管理系统专业班级:软件学 号:姓 名:陈秋实 WEB网站项目开发 11301 1104030120
1 项目概要
1.1 引言
Internet的蓬勃发展,使新闻的传播方式发生了巨大的变化,传统的信息传播媒体电视、广播、报纸已经不再是人们茶余饭后的主要精神甜点、人们更多的开始关注网络新闻。由于互联网所容纳的信息量大、内容丰富、信息及时、准确,更有相关信息的全面介绍与比较,大大地方便了人们的阅读,因此在短短几年的时间里,互联网便跻身于众多媒体之间,并具有相当一部分媒体人群。
1.2 项目名称
《新闻管理系统》
1.3 项目背景
新闻网站内容丰富,涉及商业、工业、农业、银行、财政、教育、娱乐和信息等各个产业,信息量大,不仅有时事新闻,还有相关的行业信息,同时新闻网具有互联网所具备的一切特征,在全球网络化、信息化的今天,新闻网站有很大的发展空间。
2 可行性研究报告
2.1 概论
网站新闻管理系统运用 .NET、数据库、和C#相关技术,本案通过对其相应的研究确定开发可行性及注意事项。
2.2 可行性研究的前提
2.2.1 项目的基本功能要求
通过相关调查,要求新闻网站具有以下功能:
(1) 通过网络,浏览各行业新闻及相关信息;
(2) 新闻分类显示相关信息;
(3) 提供站内新闻全面搜索功能;
(4) 设置本站为首页和搜藏本站;
(5) 支持其他网站的友情链接;
(6) 为后台管理提供管理入口;
(7) 后台编辑各行业新闻中心并且管理新闻信息。
2.2.2 项目实现的目标
可以实现新闻的查询,新闻分类显示相关信息,支持其他网站的友情链接,后台编辑各行业新闻中心并且管理新闻信息。
2.2.3 可行性分析
新闻发布系统后台管理对新闻做了详细的分类,前台以分类形式显示新闻的详细信息,满足了人们浏览器新闻时分类查看新闻信息的要求,前台提供查询新闻信息功能,方便浏览者查找相关的新闻信息。新闻发布系统后台由管理员进行管理维护,保证了网站的安全性。
2.2.4 保证可行性的主要因素
(1)经济可行性:系统建设不需要很大的投入。
(2)运行上可行性:本系统只是网站开发的一部分,所耗费的资源非常的小。
(3)从各种社会因素可行性分析:可提高文件的利用率,提高效率更有利于网友的交流,会得到人们的一致同意的。
综上所述通过可行性分析认为新系统的开发方案切实可行,可进行开发。
2.3 程序业务流程图
图2.1程序业务流程图
2.4 技术可行性分析
2.4.1 系统的简要阐述
该系统分为网站的前台浏览和后台的新闻编辑。
2.4.2 需用技术
.NET网站开发技术,C#程序设计语言,sqlserver数据库。
2.5 结论意见
通过研究具备相关的开发条件,可以开发本项目。
开发过程中仍需进一步钻研、进取,结合所学知识综合运用,在实践中加深对知识的理解。
3 需求规格说明书
3.1概论
新闻网站管理系统功能的实现需要相应的开发和运行环境,本案介绍该项目在开发和运行过程中所需要的准备工作和相关规格需求,以规范该项目,保证功能的完整性。
3.2新闻概述
3.2.1项目目标
通过相关调查,要求新闻网站具有以下功能:
1).通过网络,浏览各行业新闻及相关信息;
2).新闻分类显示相关信息;
3).提供站内新闻全面搜索功能;
4).设置本站为首页和搜藏本站;
5).支持其他网站的友情链接;
6).为后台管理提供管理入口;
7).后台编辑各行业新闻中心并且管理新闻信息。
3.2.2开发运行环境
系统开发环境:Microsoft Visual Studio 2008
系统开发语言:ASP.net+C#
运行平台:Windows XP
数据库:SQL Server 2008
Web服务器: IIS
3.2.3系统规范要求
(1)界面设计友好、美观。
(2)数据存储安全、可靠。
(3)信息分类清晰、准确。
(4)提供灵活、方便的权限设置功能,使整个系统的管理分工明确。
(5)具有易维护性和易操作性。
(6)能够进行文件上传及下载。
4 概要设计说明书
新闻发布系统是一个功能完善的新闻类网站,由前台新闻浏览和后台新闻管理两大部分组成。
前台功能模块
该模块主要包括新闻分类、显示新闻详细信息、新闻信息查询、设置本站为首页和收藏本站、提供友情链接、提供后台登陆入口等功能。
后台功能模块
该模块主要包括后台系统管理员设置的密码修改、添加管理员、管理员信息设置、新闻类型管理、新闻详细类型管理、新闻信息管理、连接管理、后台安全退出等功能。
新闻发布系统前台功能模块图如图,如图3-1所示。
图3-1 新闻发布系统前台功能结构图
新闻发布系统后台功能结构图,如图3-2所示。
图3-2 新闻发布系统后台功能结构图 4.1 模块说明
4.1.1前台功能模块
该模块主要包括新闻分类、显示新闻详细信息、新闻信息查询、设置本站为首页和收藏本站、提供友情链接、提供后台登陆入口等功能。
4.2.2后台功能模块
该模块主要包括后台系统管理员设置的密码修改、添加管理员、管理员信息设置、新闻类型管理、新闻详细类型管理、新闻信息管理、连接管理、后台安全退出等功能。
5详细设计说明书
本案主要介绍各个页面的主要控件及功能实现,通过实例展现出项目开发的详细过程。
文件组织结构图,如图5.1所示。
图5.1,文件组织结构图
5.1数据库设计
本系统采用sqlserver 2008数据库系统,在该数据库中创建3个数据表,分别为用户信息表(tbuser)、新闻信息表(tbnews)、和网站友情连接表(tblink)。 Tbuser(用户信息表)
用户信息表主要用于保存管理员的基本信息,tbuser数据表的结构如表5.1所示。
表5-1 用户信息表(tbuser)结构
Tbnews(新闻信息表)
用户信息主要用于保存新闻的基本信息,Tbnews数据表的结构如表5-2所示。
表5-2 新闻信息表(tbnews)结构
Tblink(网站友情链接)
网站友情连接表(tblink)主要用于保存其它网站信息。该表的结构如表5-3所示。
表5-3 网站友情链接表(tblink)结构
5.2代码封装技术
在开发网站时,如果实现某个功能的代码段需要在不同的网页多次应用。可以考虑将代码写到公共类中,使用该功能时,在网页中直接调用即可,本系统中将代码封装到公共类commonclass中,代码如下。 public SqlConnection GetConnection() {
string mystr =
ConfigurationManager.ConnectionStrings["Con"].ToString(); SqlConnection myconn = new SqlConnection(mystr); return myconn; }
public DataSet GetDataSet( String sqlstr, String TableName) {
SqlConnection con = new SqlConnection(); con = GetConnection(); con.Open();
SqlDataAdapter mydapter = new SqlDataAdapter(sqlstr, con); DataSet myset = new DataSet(); mydapter.Fill(myset, TableName); con.Close(); return myset; }
public void DBlind(string str, DataList DL) {
CommonClass common = new CommonClass();
string strsql = "select top 5 * from tb_News where style ='" + str + "'";
DataSet ds = common.GetDataSet(strsql, "tb_News");
DL.DataSource = ds;
DL.DataBind();
}
}
5.3网站主页面设计
网站主页面是用户浏览各种新闻的主页面,可以方便用户的各种浏览要求,主页面如图5.3所示。
图5.3
5.4后台新闻管理模块设计
5.4.1后台登陆模块设计
网站前台任何页面底部都设置了后台登陆入口的超级链接。后台登陆页面
(login.aspx)中使用了验证技术,主要用来防止用户使用非法手段恶意登陆本站后台。后台登陆模块运行结果如图5.4所示。
图5-4 后台登陆模块
单击“登陆”按钮时,将会触发该按钮的click事件,该事件下,主要调用commanClass类的checkLogin方法,判断用户是否为合法用户,如果正确则跳转到后台页面,代码如下。
private SqlConnection LoginConn()
{
SqlConnection con = new
SqlConnection("server=localhost;uid=sa;pwd=admin123;database=db_news");
return con;
}
protected void Button1_Click(object sender, EventArgs e) {
string userName = TextBox1.Text.Trim();
string passwd = TextBox2.Text.Trim();
string code = TextBox4.Text.Trim();
SqlConnection con = LoginConn();
con.Open();
//cc.GetConnection();
try
{
string str2 = "select count(*) from tb_User where Name=@Name and PassWord=@PassWord";
SqlCommand cmd = new SqlCommand(str2, con);
cmd.Parameters.Add("@Name", SqlDbType.VarChar, 50); cmd.Parameters["@Name"].Value = userName;
cmd.Parameters.Add("@PassWord", SqlDbType
.VarChar, 50);
cmd.Parameters["@PassWord"].Value =
FormsAuthentication.HashPasswordForStoringInConfigFile(passwd, "MD5");
int count = Convert.ToInt16(cmd.ExecuteScalar());
if (count > 0 && Session["checkCode"].ToString() == code) {
this.TextBox4.Text = "";
Session["_Login"] = "true";
//string str3 = "insert into register_log values ('" + userName + "','" + System.DateTime.Now.ToString() + "')";
//cmd.Connection = con;
//cmd.CommandText = str3;
//cmd.ExecuteNonQuery();
Response.Redirect("ShowNews.aspx");
}
else
{
Response.Write("<script>alert('登录不成功,请检查输入信息!')</script>");
}
}
catch
{
Response.Write("<script>alert('登录失败')</script>"); }
finally
{
con.Close();
}
}
5.4.2新闻添加功能模块设计
用户进入图5-5所示的后台管理首页后,单击菜单栏中任一新闻类别(如:时政要闻)下的“添加”按钮,都会进入图5-6的新闻添加界面,在该界面中,用户可以添加新闻的详细信息。
图5-5后台管理界面
图5-6新闻添加界面
在page_lode事件中,调用commonclass类中的getdataset方法,获取需要编辑的新闻信息,并将其显示出来,代码如下。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//调用CommonClass类中的GetDataSet获取数据集
DataSet ds = CC.GetDataSet("select * from tb_News where id='" + Request.QueryString["id"] + "'", "tbNews");
DataRow[] row = ds.Tables["tbNews"].Select();
foreach (DataRow rs in row)
{
//显示编辑的新闻类别名
this.txtNewsTitle.Text = rs["title"].ToString(); //显示编辑的新闻内容
this.txtNewsContent.Text = rs["content"].ToString(); //显示编辑的新闻标题
this.labTitle.Text = rs["Style"].ToString();
//显示编辑的新闻类型
switch (rs["type"].ToString())
{
case "国内新闻":
this.ddlNewsType.SelectedIndex =1;
break;
case "国际新闻":
this.ddlNewsType.SelectedIndex =0;
break;
default:
break;
}
}
}
}
protected void btnSave_Click(object sender, EventArgs e)
{
CC.ExecSQL("UPDATE tb_News SET Title =
'"+this.txtNewsTitle.Text+"', Content = '"+this.txtNewsContent.Text+"', Style = '"+this.labTitle.Text.Trim()+"', Type =
'"+this.ddlNewsType.SelectedValue.ToString()+"' WHERE (ID =
'"+Request.QueryString["id"]+"')");
Response.Write(CC.MessageBox("数据修改成功!","list.aspx")); }
protected void btnReset_Click(object sender, EventArgs e) {
this.txtNewsTitle.Text = "";
this.txtNewsContent.Text = "";
}
}
5.4.3新闻类别页
在用户点击站内导航条中的任意新闻类别,都会跳转到新闻类别页(newlist.aspx),该页的运行结果如图5-7所示。
图5-7新闻类别页
在自定义bind方法中,首先使用switch语句,获取新闻类别名,其次调用commonclass类的getdatdaset方法查询新闻信息,并将其绑定到datalist空间上,让后使用pagedatasource类实现datalist空间的分页功能,其代码如下。
protected void bind()
{
int n = Convert.ToInt32(Request.QueryString["id"]); switch (n)
{
case 1: mystyle = "时政要闻";
this.LabelTitle.Text = "新闻中心->时政要闻";
this.Image2.ImageUrl = "~/Images/时政要闻图片.jpg"; this.Image1.ImageUrl="~/Images/二级页时政要闻.jpg";
break
;
case 2: mystyle = "经济动向";
this.LabelTitle.Text = "新闻中心->经济动向";
this.Image2.ImageUrl = "~/Images/经济动向图片.jpg"; this.Image1.ImageUrl = "~/Images/二级页经济动向.jpg"; break;
case 3: mystyle = "世界军事";
this.LabelTitle.Text = "新闻中心->世界军事";
this.Image2.ImageUrl = "~/Images/世界军事图片.jpg"; this.Image1.ImageUrl = "~/Images/二级页世界军事.jpg"; break;
case 4: mystyle = "科学教育";
this.LabelTitle.Text = "新闻中心->科学教育";
this.Image2.ImageUrl = "~/Images/科学教育图片.jpg"; this.Image1.ImageUrl = "~/Images/二级页科学教育.jpg"; break;
case 5: mystyle = "体育世界";
this.LabelTitle.Text = "新闻中心->体育世界";
this.Image2.ImageUrl = "~/Images/体育世界图片.jpg"; this.Image1.ImageUrl = "~/Images/二级页体育世界.jpg"; break;
case 6: mystyle = "法治道德";
this.LabelTitle.Text = "新闻中心->法制道德";
this.Image2.ImageUrl = "~/Images/法制道德图片.jpg"; this.Image1.ImageUrl = "~/Images/二级页法制道德.jpg"; break;
case 7: mystyle = "时尚娱乐";
this.LabelTitle.Text = "新闻中心->时尚娱乐";
this.Image2.ImageUrl = "~/Images/时尚娱乐图片.jpg"; this.Image1.ImageUrl = "~/Images/二级页时尚娱乐.jpg"; break;
case 8: mystyle = "社会现象";
this.LabelTitle.Text = "新闻中心->法制道德";
this.Image2.ImageUrl = "~/Images/法制道德图片.jpg"; this.Image1.ImageUrl = "~/Images/二级页法制道德.jpg"; break;
}
int curpage = Convert.ToInt32(this.LabelPage.Text);
PagedDataSource myps = new PagedDataSource();
//string str = "select * from tb_News where style='" + mystyle + "' order by issueDate Desc";
//DataSet mydset = new DataSet();
//mydset = CC.GetDataSet("select * from tb_News where style='" + mystyle + "' order by issueDate Desc", "tb_News");
DataSet mydset = CC.GetDataSet("select * from tb_News where
style='" + mystyle + "' order by issueDate Desc", "tb_News"); myps.DataSource = mydset.Tables["tb_News"].DefaultView; myps.AllowPaging = true;
myps.PageSize = 3;
myps.CurrentPageIndex = curpage - 1;
this.lnkbtnOne.Enabled = true;
this.lnkbtnUp.Enabled = true;
this.lnkbtnNext.Enabled = true;
this.lnkbnBack.Enabled = true;
if (curpage == 1)
{
this.lnkbnBack.Enabled = false;
this.lnkbtnOne.Enabled = false;
}
if (curpage == myps.DataSourceCount)
{
this.lnkbtnUp.Enabled = false;
this.lnkbtnNext.Enabled = false;
}
this.Label6.Text = Convert.ToString(myps.PageCount); this.DataList1.DataSource = myps;
this.DataList1.DataKeyField = "id";
//this.DataList1.DataBind();
CC.DBlind(mystyle, this.DataList1);
}
protected void LinkButton2_Click(object sender, EventArgs e) {
this.LabelPage.Text = "1";
CC.DBlind(mystyle, this.DataList1);
}
protected void lnkbtnUp_Click(object sender, EventArgs e) {
this.LabelPage.Text =
Convert.ToString(Convert.ToUInt32(this.LabelPage.Text) - 1); CC.DBlind(mystyle, this.DataList1);
}
protected void lnkbtnNext_Click(object sender, EventArgs e) {
this.LabelPage.Text =
Convert.ToString(Convert.ToUInt32(this.LabelPage.Text) + 1); CC.DBlind(mystyle, this.DataList1);
}
protected void lnkbnBack_Click(object sender, EventArgs e) {
this.LabelPage.Text = this.Label6.Text;
CC.DBlind(mystyle, this.DataList1);
}
protected void DataList1_ItemCommand(object source,
DataListCommandEventArgs e)
{
int id =
Convert.ToInt32(DataList1.DataKeys[e.Item.ItemIndex].ToString()); Response.Write("<script
language=javascript>window.open('ShowNews.aspx?id=" + id + "','','width=520,height=260')</script>");
}
6项目测试报告
6.1目的
为了指导软件测试人员有效地设计测试用例,对所测试软件进行全面地测试,以尽可能发现最隐藏问题。检测软件存在的bug,及时发现并改正。
6.2测试方法
黑盒测试、白盒测试。
6.3测试要求屏幕上的显示位置是否正确
6.3.1窗口
? 窗口标题是否正确
? 窗口中各对象位置是否正确、美观
? 窗口的系统菜单及按钮操作是否正常
? 窗口在各种不同分辨率下是否能全部显示
6.3.2对话框
? 对话框弹出时机及位置是否正确 ? 对话框内各对象位置是否正确
? 对话框内各对象的文字标题意义是否明确 ? 模式对话框和非模式对话框的属性是否正确
6.3.3消息框
? 弹出时机及位置是否正确
? 信息意义是否正确、意义是否明确 ? 弹出时必须锁住Mouse消息和键盘输入 ? 必须有正确的对象用于退出Message Box
6.3.4文字
? 显示位置要美观
? 文字意义要明确
? 同一界面上字体及字体大小应统一、美观 ? 显示正确且意义明确
6.3.5图像Button
? 应相应的文字说明或意义明确 ? 应有按下和抬起两种状态
? 在界面中所处位置要美观
6.3.6输入域
? 字符输入域
? 为空
? 任意字符串(中英文)
? 功能键及符号键
? 超界字符串的处理
6.3.7显示域
? 显示域中各对象显示位置正确、美观
? 显示域中文字Label信息正确
? 显示域中文字Label字体及字体大小应统一且美观
? 显示域中显示信息应与输入的信息一致
? 在屏幕显示不下时,应增加滚动条以确保信息显示的完整
6.4测试结果
经检验,可以进行网站新闻的显示与查询,进行新闻内容的写入和读出,界面布局、控件属性合格,基本符合要求。
7项目总结
经过与自己的努力以及与同学的合作,完成了新闻网站管理系统这个项目。经过测试,基本功能得到实现。在设计过程中学到了很多东西,同时也深感不足。现在此做一总结。
7.1 完成情况
(1)窗口布局美观大方,控件属性设置正确搭建较合理;
(2)代码编写严谨规范。
(3)能够进行新闻的显示与编辑。
7.2 项目收获
在本项目的实现过程中,遇到了很多困难,同时也学到了很多知识,如何编写自定义方法以及如何使用函数数组。了解了项目的组成以及结构。编写能力得到提升,先做出一些总结。
(1)将所学知识用于实践,深入理解了所学知识,运用更加熟练。
(2)自己查阅资料,扩展了知识面,对项目开发过程有了深入详细了解
(3)与他人合作,团队协作能力提升
(4)代码编写水平提高
7.3 存在不足
(1)项目开发不是一帆风顺的,开发过程中也有些不足的地方
(2)准备不充分,入手困难,导致开发周期长
(3)开发环境运用不太熟练,编代码上有一定影响
(4)代码书写格式不太规范,易出现语法错误,影响开发进度
7.4 改进意见
(1)要注意细节,掌握基本知识。
(2)进一步熟悉开发环境,提高代码编写水平,代码书写规范化
(3)在编写过程中尝试自己编写方法,改变方法,发散思维
(4)有恒心毅力,刻苦进取
(5)多向老师同学请教。
直接打印就行注意删掉这几个字摘要回想20世纪80年代当时在全球激烈竞争中存活下来的公司都是在现有已明确定义的市场中成功抢占成本和质…
读书报告研究报告考核科目项目管理与评价学生所在院系电气学院学生所在学科电气工程及其自动化学生姓名XXX学号XXXXXXXXXX学生…
工程项目工程进度报告摘要:项目进度管理是工程项目管理的一项极为重要的工作,能全面反映项目的实施状况。做好施工阶段的进度控制管理对确…
一、《项目管理总结报告》的编写要求1、项目管理工作报告是展示申请人项目管理能力的重要文件,是个人项目管理能力的集中体现,必须亲自编…
项目管理总结项目于20xx年1月15日开工到20xx年1月25日顺利竣工为了将来更好的服务于客户我们从项目管理的角度对这次项目的成…
大学生软件开发实习总结时间过得真快,转眼间,在山大实习生活就结束了四周的时间能够和山大的同学一起工作、学习、生活我感到非常的荣幸,…
一,工程概况项目主要工作是维修某主要道路下一段长约1公里的供水管道,市政局要求电力部门配合施工,同时铺设一条地下电缆,以增加该道路…
建设项目总结评价报告(自评报告)编写提纲《建设项目总结评价报告》(自评报告)编写提纲(一)项目概况1.项目情况简述:项目名称,建设…
浙江金石家居用品有限公司《年新增8000万支高档餐厨具技改项目》总结报告批准人:蔡曙春审核人:蔡曙鹤编制人:苏敏报告单位:浙江金石…
崮冬末春初,万物复苏。湖北中进建设工程有限公司又迎来了一个崭新的开始。中进公司沙洋人民医院门诊楼项目部全体职工通过一年的艰辛努力,…
首先感谢大家在我实习期间两个多月来的教导与关爱!在泉州电视台实习的两个多月时间里,无论从理论上还是实践上都有不少收获,使我更真实、…