软件工程综合设计报告
新闻发布系统
班 级: 学 号: 姓 名: 成 绩: * * *
2010 年 11月 28日
摘 要
信息技术的发展使得整个世界越来越小,这也意味着企业的竞争环境由区域化向全球化发展,尤其是随着中国加入WTO的日期日益临近,经济全球化是大趋势,企业所处的宏观环境实际上已经不仅仅是通过信息技术员连接起来狭义的网络,而应该将技术环境与经济环境结合在一起考虑,形成一种大网络的概念。企业对信息的掌握程度、信息获取是否及时、信息能否得到充分利用、对信息的反应是否敏感准确,已越来越成为衡量一个企业市场竞争能力的重要因素。所以建立动态的新闻发布系统适应企业发展的要求,其意义是具大的。新闻系统是一个比较典型的文档系统,掌握了新闻系统的开发,对于开发其它的文档系统都有很大的帮助。新闻发布系统,在国内外早已有着成熟的研究成果和广泛的社会应用.国内众多大型门户网站,如网易,新浪,搜狐,首都在线,人民日报网,中国新闻网等,每天甚至时刻进行海量信息的维护,以保持网站内容及时更新,内容管理系统,起着绝对重要的作用,也是当今动态网站内容更新的主要手段。
目 录
第1章 选题及本次课程设计的任务 ···················································· 1 1.1查找资料 ················································································ 1 1.2选题 ······················································································ 1 1.3总结数据、明确任务 ································································ 1 1.4本次设计的重大意义 ································································ 1 1.5本章小结 ················································································ 1 第2章 设计实现的详细步骤 ····························································· 2 2.1系统的基本结构 ······································································ 2 2.2管理员登录页面 ······································································ 2 2.3后台管理主页面 ······································································ 3 2.4新闻管理 ················································································ 4 2.4.1显示新闻 ············································································· 4 2.4.2添加新闻 ············································································· 5 2.4.3修改新闻 ············································································· 6 2.4.4删除新闻 ············································································· 7 2.4.5发布新闻 ············································································· 7 2.5 密码修改 ··············································································· 8 2.6 Access数据库 ········································································· 8 2.7本章小结 ················································································ 9 第3章 设计中遇到的重点及难点 ······················································ 10 3.1重点及难点 ············································································ 10 3.2本章小结 ··············································································· 10 第4章 本次设计中存在不足与改良方案 ············································· 11 4.1不足与改良方案 ····································································· 11 4.2本章小结 ··············································································· 11 结 论 ······················································································ 12 参考文献 ······················································································ 13
第1章 选题及本次课程设计的任务
1.1查找资料
《JSP应用教程》 《JSP程序设计基础》 《JSP程序设计教程与实训》 《管理信息系统》
1.2选题
新闻发布系统
1.3总结数据、明确任务
该系统必须具备的数据库:
新闻信息数据库、管理员信息数据库、留言板信息数据库
该系统必须具备以下功能:1、添加新闻;2、删除新闻;3、修改新闻;4、发布新闻;5、访问者留言;6、管理员对留言的删除管理;7、管理员对密码的修改。
1.4本次设计的重大意义
在此次课程设计中,主要设计的是新闻管理员对新闻的管理。新闻管理员有修改管理员密码的权限,新闻管理员功能的信息量大,数据安全性和保密性要求最高。新闻管理员可以浏览、添加、删除、修改、发布新闻;删除留言者的留言信息。
1.5本章小节
本章主要通过查找资料明确了此次课程设计的题目,并确定了此次课程设计的主要任务和此次课程设计的重要意义。
第2章 设计实现的详细步骤
2.1系统的基本结构
主页 管理员登录 访问者浏览
2.2管理员登录页面
本页面是为了让新闻管理员按照账号和密码进行登录,如账号和密码输入正确,即可进入管理员页面。如果输入错误,则转到错误提示页面。并且为了网站的安全,考虑到访问者通过在地址栏直接输入管理员管理新闻页面的地址,跳过登录页面直接非法进入,在管理员管理信息的每个页面都设计了session判断,如果是通过输入账号密码进入页面的则在登录是将session中的access变量设为Y,在每个管理页面先对access的值进行判断,如果是y则进入,如果不是y则表示是通过直接输入地址而非法进入的,则提示“非法进入本页面”。
浏览新闻 添加新闻 修改新闻 发布新闻 删除新闻 删除留言 修改密码 访问者留言
图2-1管理员登录页面
在输入管理员的登录信息时,通过连接数据库来判断信息是否正确。功能主要代码如下:
<%
Object obj=session.getAttribute(\"access\") ; if (obj==null)
session.setAttribute(\"access\
if(request.getParameter(\"adminid\")!=null&&request.getParameter(\"adminpwd\") != null)
{Class.forName(\"sun.jdbc.odbc.JdbcOdbcDriver\"); Connection con =
DriverManager.getConnection(\"jdbc:odbc:database\"); Statement smt= con.createStatement
(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
String getpaperdata =
\"SELECT * FROM admin WHERE
adminid='\" +request.getParameter(\"adminid\") + \"' AND adminpwd='\" +request.getParameter(\"adminpwd\") + \"'\" ;
ResultSet paperrs =smt.executeQuery(getpaperdata) ; if(paperrs.next()){
session.setAttribute(\"access\
session.setMaxInactiveInterval(1800) ; response.sendRedirect(\"adminlist.jsp\") ; }else
response.sendRedirect(\"wrong.jsp\") ; }
2.3后台管理主页面
后台管理主页面是当管理员输入账号和密码正确后进入的页面,该页面主
要包括管理员可以对新闻进行管理的一些操作,包括修改密码,浏览新闻,添加新闻,删除新闻,发布新闻和对留言者的留言删除等操作。
在此页面上,主要是添加了进入各个管理页面的链接,分别包括密码修改(updateadminpwd_ok.jsp)、公告管理(placardupdate.jsp)、新闻管理(newslist.jsp)、留言管理(messagelist.jsp)和注销(adminlogout.jsp)。
2.4新闻管理
新闻管理页面主要包括对新闻的浏览显示,新闻的修改、发布、删除、以及添加新闻的功能。此页面和首页的新闻显示是一个页面,在此页面中加了对管理员身份的识别,通过登
录页面的session的保存值来判断是普通用户浏览还是管理员浏览,如果是管理
员浏览,则显示管理员可对新闻进行管理的功能,如修改、删除、发布、添加等。通过这写链接进入到各个对新闻管理的页面。在此次课程设计中,把添加、修改、删除、发布的执行语句都放在了一个页面newsedit.jsp,此页面不显示。
图2-2 面向管理员的新闻显示页面
图2-3 面向普通浏览者的新闻显示页面
2.4.1显示新闻
通过session判断浏览者的权限,session为n则只显示发布过的新闻,为y则显示所有新闻,包括未发布的。功能实现主要代码如下:
<%
Object obj=session.getAttribute(\"access\") ; if (obj==null)
session.setAttribute(\"access\ Class.forName(\"sun.jdbc.odbc.JdbcOdbcDriver\");
Connection con = DriverManager.getConnection(\"jdbc:odbc:database\"); Statement smt =con.createStatement
(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
String getnewsdata = \"\" ;
if(session.getAttribute(\"access\").equals(\"y\")) getnewsdata = \"SELECT * FROM news \" ; else
getnewsdata = \"SELECT * FROM news WHERE published = true \" ;
ResultSet newsrs =smt.executeQuery(getnewsdata) ; %>
通过session判断浏览者的权限,session为n则只显示发布过的新闻,为y则把可以对新闻进行管理的链接显示出来,阅读,修改,添加,删除,发布,功能实现主要代码如下:
<%while(newsrs.next()){
String newsid =newsrs.getString(\"newsid\") ; String newstitle =newsrs.getString(\"newstitle\") ; %>
\"><%=newstitle%> [<%=newsrs.getString(\"publishdate\")%>]
<% if(session.getAttribute(\"access\").equals(\"y\")){ %>
2.4.2添加新闻
添加新闻是新闻发布网站最重要的部分,主要实现思路是:在此页面head部分,加了session判断部分,如果是管理员通过输入正确的账号密码进入,则可以正确进入添加新闻页面,如果是通过输入网址非法进入此页,则链接到“非法进入页面”。当管理员正确进入之后,可以通过添加新闻表单提交要添加的新闻。当添加完点提交的时候,新闻并为发布,也就是说新闻在首页还不能被普通浏览者看见,只是保存在了数据库里,如果想让浏览者看到,还得通过下面的发布模块发布了才可以显示在首页即新闻显示页面。
图2-4 添加新闻
功能实现主要代码如下:
if(editType.equals(\"new\")){
editSQL = \"INSERT INTO news\" +
\"(newstitle,newscontent)VALUES\" + \"('\"+title+\"','\"+content+\"')\" ; smt.execute(editSQL) ;
out.println(\"添加新闻完成 !!\") ; }
2.4.3修改新闻
修改新闻虽然不是新闻发布网站最重要的部分,但为了防止管理员对发布后的新闻不满意或有新闻错误,所以设计修改新闻页面也是必不可少的。主要实现思路是:在此页面head部分,也加了session判断部分,如果是直接通过输入网址非法进入此页,则链接到“非法进入页面”。当管理员正确进入之后,点击要修改的某条新闻。则进入修改新闻页面,修改新闻页面通过连接数据库在表单中显示修改新闻的内容。管理员可以直接通过修改新闻表单。如果原来新闻是已经发布的。则提交修改后的新闻为发布的。如果原来的新闻是未发布的。则修改后提交的新闻也是未发布的。
功能实现主要代码如下: if(editType.equals(\"update\")){
String newsid = request.getParameter(\"newsid\") ; editSQL = \"UPDATE news SET \" +
\"newstitle='\"+title+\"',\" + \"newscontent='\"+content+\"' \" +
“WHERE “ + “newsid=” + newsid ; smt.execute(editSQL) ;
out.println(“新闻修改完成 !!”) ; }
2.4.4删除新闻
删除新闻是对过期新闻进行删除。此页面和添加新闻一样重要。主要实现思路是:为了防止非法进入删除新闻,在此页面head部分,也加了session判断部分,如果是直接通过输入网址非法进入此页,则链接到“非法进入页面”。
当管理员正确进入之后,点击要删除的某条新闻。则进入删除新闻页面,修改新闻页面通过连接数据库在表单中显示修改新闻的内容,待管理员确定为要删除的新闻,点击确定删除按钮,将新闻删除,被删除的新闻将无法恢复。
功能实现主要代码如下: if(editType.equals(\"del\")){
String newsid = request.getParameter(\"newsid\") ;
editSQL = \"DELETE FROM news WHERE \" + \"newsid=\" + newsid ;
smt.execute(editSQL) ;
out.println(\"新闻已删除!\") ; }
2.4.5发布新闻
在管理员添加新闻之后,新闻并为在首页即新闻显示页显示,只是被保存在数据库中。数据库中设计了发布published字段。Published字段为true的为发布过的新闻,为false则为未发布的新闻,发布新闻页面主要就是修改数据库中的published字段值,点击“发布”链接,将published的值改为true,首页和新闻显示页就能看到该条新闻了。
功能实现主要代码如下:
if(editType.equals(\"published\")){
String newsid = request.getParameter(\"newsid\") ; editSQL = \"UPDATE news SET \" + \"published=true \" + \"WHERE \" +
\"newsid=\" + newsid ; smt.execute(editSQL) ;
out.println(\"新闻已发布 !\") ; }
2.5 密码修改
为了方便管理员对密码的修改,本网站设计了密码修改功能。在此页面通过管理员正确输入管理员的登录账号和登录密码还有新密码进行密码的修改。主要功能实现思路是:跟管理员登录一样,先验证管理员输入的账号和密码是否正确,如果正确则连接admin数据库,将管理员输入的账号和数据库中所对应的账号的密码更新为管理员提交的新密码:
图2-5修改密码
功能实现主要代码如下:
String getadmin =\"SELECT * FROM admin WHERE adminid='\" +
request.getParameter(\"adminid\") + \"' AND adminpwd='\" + request.getParameter(\"adminpwd\") + \"'\" ; ResultSet rs =smt.executeQuery(getadmin) ; if(rs.next()){String editSQL = \"UPDATE admin SET \"+\"adminpwd='\"+request.getParameter(\"newadminpwd\")+\"' \" +
\"WHERE adminid='\" + request.getParameter(\"adminid\")+ \"'\" ;
smt.execute(editSQL) ;
response.sendRedirect(\"updateadminpwd_ok.jsp\") ;
2.6 Access数据库
基本的界面和JAVA程序都设计好了,数据库的设计也是必不可少的。在此次课程设计中,根据老师的要求还有自己所学的知识,本人采用的是Access数据库管理。Access使用标准的SQL(Structured Query Language,结构化查询语言)作为它的数据库语言,从而提供了强大的数据处理能力和通用性,使其成为一个功能强大而且易于使用的桌面关系型数据库管理系统和应用程序生成器。
一个Access数据库中可以包含表、查询、页面、模块以及数据访问页。Access数据库使用单一的*.mdb文件管理所有的信息,这种针对数据库集成的最优化文件结构不仅包括数据本身,也包括了它的支持对象。
关于Access数据库的具体操作过程,在此就不具体一一列出了。在此次的新闻管理系统中,需要建立三个表,分别是新闻信息表、读者信息表和管理员信息表。其中管理员信息表中只列了账号和密码两个字段,而新闻信息和读者信息表中,分别列出了关于新闻和读者的详细信息。
图2-6 Access数据库
2.7本章小节
本章为最主要的一章,介绍了此次课程设计实现的详细步骤,通过对新闻管理系统的分析以及设计前的模块设计,从而更具体的逐步完善各个模块,基本完成了新闻管理系统的管理员管理发布新闻部分。
第3章 设计中遇到的重点及难点
3.1重点及难点
设计中的重点
数据库与网页的链接是本次设计中的重点, 用户查看的消息要想提取出来,必须先进行数据库的链接与打开,要链接数据库我们必须创建数据源,其次,加载JDBC-ODBC驱动程序,最后,建立一个到数据库的连接即创建一个连接对象。 设计中的难点
后台设计是本次设计的难点内容,后台的管理系统是网站的核心内容,通过管理员的登录可以对网站进行更新,管理员如何向数据库中添加、修改内容以及留言板板块是难点中的难点,也是本网站功能实现的关键部分。
3.2本章小节
本章介绍了我认为在网站建设中所遇到的重点和难点,主要有:网页与数据库的链接方法、网站管理员是如何向数据库中添加内容的、留言板板块的功能实现。
第4章 本次设计中存在不足与改良方案
4.1不足与改良方案
由于时间关系,本次所设计的新闻管理系统只实现了管理员管理新闻的功能,而新闻评论和公告功能还未完成,还有新闻、留言的分页显示没有实现,这些功能将在以后的毕业设计中逐步实现。
改良方案:
在新闻显示页面加上分页脚本,使新闻在显示的时候可以按设定的值每页显示固定的新闻条数。
完成公告页面,使管理员在后台页面可以对首页的公告进行及时修改。 完成留言页面,普通浏览者可以在主页面对新闻进行评论;管理员可以登录后台进行对前台的不合理评论进行删除。
4.2本章小节
本章为此次课程设计最后一章,简短的说明此次课程设计中存在的不足以及改良方案。相信在以后的学习和实践中会得到更好的完善。
结 论
本课程设计完成的是一个新闻管理系统,包括管理员发布新闻信息和管理留言信息,分别有添加、删除、修改、发布等功能。
在本次课程设计的过程中,详细阐述了整个网站的设计思路,并对各部分设计周期进行了详尽的分析,最终达成了一个完整的设计方案;在文章的最后,还根据数据库系统的调试结果,提出了可以进一步改进的部分,以便在以后的学习工作中得到更好的完善。以及在投入实际应用后网站可以更加稳定可靠的工作。
通过一个月的课程设计,完成了“新闻管理系统”的设计,更重要的是又复习了一遍JSP知识,看了许多关于JSP的书,不仅丰富了知识,而且从中学到了编程思想,相信通过这次课程设计,对以后的学习和程序设计会有很大的帮助。
参考文献
[1] 荣钦科技,《JSP动态网站开发与实例》,清华大学出版社.2006.6 [2] 陈益材,《企业网站完美设计与制作》,人民邮电出版社. 2006.1 [3] 黄梯云,《管理信息系统》,高等教育出版社. 2005.6
因篇幅问题不能全部显示,请点此查看更多更全内容