河北机电职业技术学院
实训报告
实训课程: 网站应用开发实训
系 别:
班 级:
学 号:
姓 名:
指导教师:
实训时间:
实训目的:
·学习:进一步熟练掌握.NET基础知识,学习WinForms和WebForms编程中常用控件的使用,深入理解集成开发模式的内涵。
·培养:培养和提高独立分析问题和解决问题的能力,由小型单窗体应用程序提升到中型Web综合程序开发层次。
·训练:着重训练WebForms编程中常用控件的使用,数据库设计与访问,网站目录结构的设计、代码调试能力等。
实训要求:
·结合项目实际常见问题,给出解决方案
·熟练掌握Web页面界面设计的各种技巧和常规应用
·能够独立解决程序调试中出现的错误或异常
·具有精巧构思
·具有较强的实用性
实训内容:
1、、邮件发送
1.1主要功能:
(1)通过填写邮箱和密码,用户可以用邮件发布系统来发送邮件或者阅读邮件。
(2)通过收发邮件用户可以在短时间内实现文件、新闻等资源的共享。
(3)使用轰炸指令,可以收件人的邮箱接收到大量的无用信息,来达到恶作剧的目的。
1.2实训过程:
(1)设计一个简单的邮件发送界面,通过Visual Studio 2005来完成。
(2)新建项目,选择Windows 应用程序,设计界面,添加按钮、文本框等。
(3)编辑代码,使之与所设计界面想匹配,同时检查是否有错误。
(4)设计的过程中填写正确的邮箱、密码、收件地址。
(5)填写需要发送的内容,如标题、内容、附件等。
(6)点击运行,看填写没有错误,点击发送,当页面提示发送成功就可以了,在收件人得信箱中可以找到自己所发送的邮件。
(7)编辑轰炸按钮,添加一个Timer1控件,编辑相应代码,填写好各项内容,点击轰炸,可以实现连续的向收件人邮箱发送大量无用邮件。
(8)过程中遇到的诸多小问题,可能是代码编写错误等,通过报错检查可以一一修改,最终使邮件成功发送。
(9)成功完成邮件发送系统,保存退出。
(10)附图。
2、“新闻发布系统”网站的实现
2.1主要功能:
(1) 管理员输入用户名和密码,登陆成功后可以进入网站后台对新闻进行管理。
(2) 管理员能发布新闻,发布的新闻包括标题、内容、提交时间、新闻图片、附件。
(3) 管理员能够根据新闻的标题或者新闻的发布时间查找新闻,并能对查找到的新闻进行修改或者删除等操作。
(4) 管理员可以修改密码。
(5) 用户访问网站首页,可以浏览网站上的所有新闻。
(6) 网站要求有较为统一的风格.
2.2实训过程:
(1)课前思考
A如何合理的设计网站目录结构,使得信息能够被有效的分类,同时访问控制又比较方便。由于需要保存新闻的图片和附件因此需要在网站的根目录下分别创建文件夹来保存着两类文件。另外由于本系统存在“管理员”和“用户”两种角色,因此需要把只有管理员才能访问的页面放到同一文件夹中,同意进行权限设置。
B 如何合理的设计数据库字段,使的信息维护和检索都较为方便。由于新闻发布系统涉及到的信息项比较少,因此只需要建一张表来保存新闻的标题、新闻内容、附件、图片,另外为了保证每条记录的唯一性,需要在表中建立自动编号字段。
C 采用怎样的导航方式,使得操作界面清晰,便于用户操作。由于本系统设计页面较少、目录结构比较简单,因此次采用导航控件中的Menu控件、SiteMapPath控件、TreeView控件都可以轻松地实现导航功能,其中Menu控件使用较为方便。
D 采用怎样的设计方法,使得页面风格统一。要是页面风格统一,ASP.NET提供了多种方法如用户控件、母版页、主题、皮肤。在本案例中,为了统一后台界面的风格,采用母版页技术,为了让控件有统一的风格采用主题技术。
E 采用怎样的开发方法,开发效率高,程序又不失灵活性。逻辑较为简单的显示部分采用数据访问控件SqlDataSouuce结合具有内置分页功能的GridView控件,新闻发布和修改等逻辑较为复杂的部分采用代码实现。
F 提前思考网站大概结构,图:
(2)网站操作流程:
A、用户可以而访问网站的首页。
B、单击【更多】链接,会出现可以出现大量其他新闻。
C、用户可单击任意条新闻来查看内容。
D、管理员通过登录页面来登录,输入正确的用户名和密码,进入后台管理界面,默认显示的是新闻发布页面。
E、选择【新闻查询】选项,可以通过关键字来查询新闻。
F、单击【修改】链接,可以修改新闻的错误或给已有新闻添加新的元素。
G、选择【修改密码】选项,管理员可以修改密码。
(3)操作:
1 设计一个数据库,用来储存用户可以浏览的新闻,可以用SQL Server企业管理器新建一个aspnetdb数据库新建news表来完成,其中必须设置字段及数据类型等。
2 网站目录的建立,需要打开Visual Studio.NET 2005的开发环境,新建一个网站,输入确定的保存路径。之后再【解决方案资源管理器】中右击,新建三个文件夹,文件名依次为picture,attachment,admin。
3 创建一个母版页,同样在【解决方案资源管理器】中,右击admin文件夹来新建母版页,设置好相应内容之后,点击添加,同时母版页中要创建四个根目录。
A 在MasterPage.master里建立一个 2 行1列的表格。
B 在工具箱中托出ContentPlaceHolder1控件,拖出Menu控件,并从右上方的箭头中设置各种属性添加根项。
C 母版页中创建新闻发布、新闻查询、修改密码和首页四个根目录。
4 发布新闻,首先建立一个添加新闻的界面,包括标题、内容、图片、附件和按钮等,必须使用Label、文本框、FileUpload、Button等必须控件。
5 在这之前必须连接数据库,数据库很重要,如果不连接数据库那么很多内容会无法设置,就会出现很多错误。数据库的连接需要在Web.config中进行连接数据库的代码如下:
<configuration>
<connectionStrings>
<add name="aspnetdbConnectionString" connectionString="Data
Source=.;Initial Catalog=aspnetdb;User ID=sa;Password="
providerName="System.Data.SqlClient" />
<add name="aspnetdbConnectionString2" connectionString="Data
Source=.;Initial Catalog=aspnetdb;User ID=sa"
providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<pages theme="news">
</system.web>
</configuration>
6 显示新闻,要添加一个新项,需要一个sqlDataSource控件,点击右上角的箭头点击配置数据源命令,需要一个GridView控件,在之后的HyperLinkFied、BoundField中设置各种属性,需要一个HyperLink的超链接控件,用来连接更多的新闻。
7 显示更多的新闻,同样需要添加一个新项,拖动sqlDataSource、GridView两个控件,同样需要设置各种属性。
8 查询新闻,同上添加一个新项,拖出SqlDataSource设置属性,拖出Label设置属性,拖出DropDownList设置属性,更多的还有Button、TextBox、GridView控件同样在右下角设置成正确的属性。
9 新闻明细,需要添加新项,拖出SqlDataSource、FornView、Label、文本框、Image、HyperLink等控件设置属性。
10 修改新闻,在admin中添加新项同时选择添加母版页,需要Label、文本框、FileUpload、Button、等控件。
11 建立登录页面,需要Login控件,设置属性。
12 建立修改密码页面,添加一个新项,从工具箱中拖出ChangePassword控件,设置属性。
13 权限设计,就是设个管理员,需要在ASP.NET2.0中设置管理员的权限,通过管理员可以对新闻进行修改、删除、添加等操作,但首先管理员必须要注册一个新的账户,填写管理员的用户名和密码等,管理员可以登录到admin文件夹中,设置匿名用户,匿名用户只可以浏览新闻,不可以对新闻有所改动。
14 最后可以添加一个自己认为好看的主题,来作为每个页面的外观,是人看起来舒服、美观。(最后自己辛苦的设计当然要保存)
心得体会:
通过一个星期来的实训,发现了很多以前在学习上的不足之处,包括各个方面,各种问题,比较典型的如我发现代码很可能对打错从而带来很多小问题,但又不是很容易解决,还有就是因为数据库的链接,数据库需要每天链接,否则会丢失数据,从而在运行的页面中没有新闻的显示,还有很多在实训过程中遇到的小问题,这些问题充分的说明了自己在编程序、写代码、修改错误、分析问题、解决问题等方面的经验不足,这就需要自己不断的练习,不断的努力,坚持不懈的在这一工作中加倍努力来完善自己,改进自己的不足。
第二篇:新闻发布管理系统实训报告
九江学院
信息科学与技术学院
《新闻发布系统开发》课程设计(实训)报告书
题 目:
专 业:
班 级:
姓 名:
学 号:
同组人员:
指导老师:
设计时间: 年 月 日 ~ 年 月 日
目 录
《新闻发布系统开发》课程设计(实训)报告书. 1
1.课程设计(实训)计划. 3
2.系统需求分析与功能设计. 3
3. 总体设计. 4
4. 数据库设计. 5
5. 程序模块设计. 6
6. 技术难点与分析. 7
7. 系统测试. 8
8. 心得体会. 9
9. 参考文献. 10
1.系统分析
1.1新闻添加模块
新闻添加模块功能如下:
对新闻的添加直接在管理页面点击添加新闻这个链接,这时我们可以转到另外一个新的页面:新闻添加页面。我们可以在这里要填写新闻的作者、新闻标题、新闻类型、新闻内容、新闻发布时间,填写完毕了,我们可以直接返回到新闻管理页面看到我们添加的新闻,点击新闻标题,我们就可以进入新闻的预览了。
1.2新闻修改模块
新闻修改模块功能如下:
如果我们想对我们不满意的新闻重新进行编辑,那么我们就可以在管理页面点击编辑,在这个系统里面我们设计管理员可以对新闻的标题和内容进行编辑,其它的就不可以编辑了,编辑后的新闻可以在管理页面里显示出来。
1.3新闻删除模块
新闻删除模块功能如下:
新闻的删除相对来说是比较简单的,我们只需要在管理页面对于那些我们不满意的新闻选中,然后点击删除就可以直接把新闻删除了。
1.4新闻浏览模块
新闻浏览模块功能如下:
想对新闻进行详细的浏览,我们可以点击新闻的标题直接进入网页阅读模式,在这个新的页面当中,我们不能在这里进行任何的编辑。
1.5管理员登陆模块
管理员登陆模块功能如下:
当用户需要使用新闻管理功能时,需要先以管理员身份登录系统。当未登录用户单击系统导航栏上的“新闻管理”超镕接时,进入管理员登录页面。用户可以在登录页面输入用户名和密码,若登录失败,则重定向到管理员登录页面等待下一次登录。
2新闻发布管理系统功能结构图
新闻发布系统功能结构图,如图1所示:
图 1 新闻发布管理系统流程图
3.数据库设计
3.1 数据库的创建
我们使用的是SQL Server 2005数据库,要使得新闻发布系统和数据库链接,我们必须要创建一个ODBC数据源,我们现在创建的数据源名字叫做:newsAccess.下面我们创建的是数据库、用户表和新闻信息表。
create database newsAccess;
use newsAccess;
create table UserInfo
(
UserId int primary key identity,
UserName nvarchar(10) not null,
UserPwd nvarchar(16) not null
);
insert into UserInfo values('admin','admin');
create table NewsInfo
(
NewsId int primary key identity,
NewsUserName nvarchar(10) not null,
NewsTitle nvarchar(100) not null,
NewsType nvarchar(10) not null,
Newscontent ntext not null,
NewsUpTime datetime not null
);
表1 新闻信息表newsinfo
表2 管理员信息表users
使用数据表users来储存管理员的信息,表的结构如下表
表3 新闻评论comment
使用数据表comment来储存新闻评论信息,表的结构如下表
表4 新闻类别信息名称classes
使用数据表classes来储存新闻类别信息,表的结构如下表
3.2 数据库连接
我们在新闻管理页面中对新闻的管理,首先我们必须链接数据库,下面的语句是用来链接的关键语句:
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); conn=DriverManager.getConnection("jdbc:odbc:newsAccess");
stmt=conn.createStatement();
我们还提供了添加、删除、修改、浏览的关键语句:
添加新闻
String sql="Insert into NewsInfo values('"+ username+"','"+title+"','"+type+"','"+content+"',getdate())";
stmt.executeUpdate(sql); response.sendRedirect("newsManage.jsp");
修改新闻
stmt=conn.createStatement();
sql="select * from NewsInfo where NewsId='"+NewsId+"'";
rs=stmt.executeQuery(sql);
if(rs.next())
String username=rs.getString("NewsUserName");
删除新闻
conn=DriverManager.getConnection("jdbc:odbc:newsAccess");
Statement stmt=conn.createStatement();
String sql= "DELETE FROM NewsInfo WHERE NewsId="+NewsId;
浏览新闻
sql="select * from NewsInfo where NewsId="+newsID;
rs=stmt.executeQuery(sql);
if(rs.next())
{
NewsTitle=rs.getString("NewsTitle");
Type=rs.getString("NewsType"); Content=rs.getString("Newscontent");
Uptime=rs.getString("NewsUpTime");
}
编码的转换(以添加新闻的标题和内容为例)
String title=(String)request.getParameter("newstitle");
if(title==null)
{title="";}
byte c[]=title.getBytes("ISO-8859-1");
title=new String(c);
String content=(String)request.getParameter("NewsContent1");
if(content==null)
{content="";}
byte d[]=content.getBytes("ISO-8859-1");
content=new String(d);
7 系统功能实现
登录页面
我们登录进去需要输入管理员的用户名和密码,系统默认的是admin和admin,如果我们输入的用户名和密码有错,又或者是他们其中至少一个没有填写,则会出现错误,如图所示:
图2 登录界面
图3 登录出错
图4 新闻管理页面
新闻添加
在管理页面我们可以进行新闻的添加,我们点击就可以进行新闻的添加了,添加完成了我们可以进入浏览,在这里我们添加了三条VOA的新闻,然后我们在进行浏览,如下图所示:
图5 添加页面
图6 增加新闻
图7 浏览新闻
新闻修改
在管理页面可以直接点击修改链接来进行修改,我们将第二和第三条新闻修改为中文新闻。
图8 新闻修改页面
图9 修改新闻
4.4删除新闻
直接在管理页面中删除新闻,我们删除中间三条新闻有:
图10 删除新闻
程序源代码
<%
request.setCharacterEncoding("gbk");
SearchNews sh = new SearchNews();
News n=sh.getNews(1);
if(n != null)
{
%>
<% out.println(n.getBiaoti()); %>
<% out.print(n.getFabushijian()); %></td>
<% out.println(n.getLaiyuan()); %>
<% out.println(n.getZhaiyao()); %></td>
<% out.println(n.getTupian()); %>
<% out.println(StringToHtml.toHtml(n.getZhengwen())); %>
<% out.println(n.getGuanjianzi()); %>
<% out.println(n.getFabiaozhe()); %>
<% out.println(n.getClassid()); %>
<% out.println(n.getDianjilv()); %>
<% } %>
<%out.println(n.getBanquanxinxi()); %>
<% if(n.getComcount()!=0) { %>
<a href="commentofnew.jsp?newid=<% out.print(n.getNewsid()); %>"> <em>评论
<% out.print(n.getComcount()); %> 条>></em> </a>
<% } else { %> <em>评论
<% out.print(n.getComcount()); %> 条>></em> <% } %></td>
</tr>
<p><hr>我要留言:</hr>
<form action="AddCommentOfNews" method="post" enctype="multipart/form-data" name="form1" id="form1">
<textarea name="commenttext" rows="15" cols="61"></textarea>
<input name="newsid" type="hidden" value="<% out.print(n.getNewsid()); %>"/>
<input name="Submit" type="submit" value="提交" />
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
// TODO Auto-generated method stub
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("gbk");
response.setCharacterEncoding("gbk");
int newsid = Integer.parseInt(request.getParameter("newsid"));
String comment = request.getParameter("commenttext");
String comperson = request.getParameter("person");
String type = request.getParameter("type");
PrintWriter pw = response.getWriter();
pw.println(newsid);
pw.println(comment);
Comment comm = new Comment();
comm.setContext(comment);
comm.setNewid(newsid);
comm.setComPerson(comperson);
int result = ModifComment.insert(comm);
if(type.equals("new"))
{
response.sendRedirect("oneofnews.jsp?newid="+newsid);
}
else if(type.equals("comment"))
{
response.sendRedirect("commentofnew.jsp?newid="+newsid);
}
else if(type.equals("admincomment"))
{
response.sendRedirect("admin\\admin_commentview.jsp?newid="+newsid);
}
}
添加一条评论的代码为:
public class InsertComment{
public static void insert(Comment comment)
{
DBConnectPool dbp=DBConnectPool.getInstance();
Connection conn=dbp.getConnection();
PreparedStatement pstmt=null;
try {
pstmt=conn.prepareStatement("inser into comment values(?,?,?,?)");
pstmt.setInt(1, comment.getNewid());
pstmt.setDate(2, (java.sql.Date)(new Date()));
pstmt.setString(3,comment.getComPerson());
pstmt.setString(4, comment.getContext());
pstmt.executeUpdate();
}
catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}finally
{
try
{
if(pstmt!=null)
pstmt.close();
}
catch(SQLException el)
{
el.printStackTrace();
}
}
}
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("gbk");
response.setCharacterEncoding("gbk");
String username = request.getParameter("name");
String passwd = request.getParameter("pass");
boolean flag = false;
User user = (new SearchUsers()).getUser(username);
if(user!=null)
{
if(passwd.equals(user.getPassWord()))
实训心得
几个星期的课程设计,新闻发布系统开发基本完成,新闻发布的基本功能这个系统都已经具备了。在这个过程中我也碰见了许多的困难,但是通过老师的教导,同学们的帮助以及自己不断的翻阅资料,分析和改正错误,不断的调试系统,终于我们可以完成了,很是欣慰。
新闻发布系统的成功制作更是激发了我对学习网页语言的语言的热情,网页语言是我们必须要学的,这是一个好的开始,我对这些语言也越来越感兴趣了。
参考文献
[1] 耿祥义.Java大学实用教程.电子工业出版社,2005/03
[2] 耿祥义.Java大学实用教程实验指导.电子工业出版社,2005/03
[3]张登辉.ASP编程基础及应用.机械工业出版社, 2003/03
[4] 王珊、陈红等.数据库和数据库管理系统.电子工业出版社,2008/12
[5] 孙一林.Java语言程序设计.北京:清华大学出版社,2001
[6] 殷兆麟..Java网络编程基础.北京大学出版社,2004
[7] 教育部考试中心.全国计算机等级考试大纲.北京:高等教育出版社,2004
[8] 孙燕.Java程序设计培训教程.北京:清华大学出版社,2002
[9] 林建铭.精通Java2.北京科学出版社,2001
[10] 温平进、张威等.Instant Java2 实例解析.北京:北京希望电子出版社,2002