网络程序设计实训报告.docx
- 文档编号:23411423
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:22
- 大小:388.46KB
网络程序设计实训报告.docx
《网络程序设计实训报告.docx》由会员分享,可在线阅读,更多相关《网络程序设计实训报告.docx(22页珍藏版)》请在冰豆网上搜索。
网络程序设计实训报告
软件职业技术学院
CCUTSOFT
网络程序设计
实训报告
姓名:
吕辽平
专业:
计算机科学与技术软件工程方向
学院:
软件学院
指导教师:
王国春
实训时间:
2010年7月
一.实训目的
本次实训旨在通过一个基于B/S模式的管理系统的开发使学生能够熟练应用web框架进行编程,要求学生初步了解软件工程的基本流程,在知道需求、看懂设计情况下构造系统,巩固所学的知识,培养学生的动手实践能力,为就业打下良好的基础。
二.实训要求
(1)界面友好,代码规范。
(2)完成系统的要求,实现全部功能。
(3)使用MySQL或SQLServer为后台数据库,以MyEclipse为开发环境进行CRUD操作。
三.进度计划
时间
任务
备注
周四
老师开动员大会并介绍课题,做题目简介
组长给讲解各关键技术和各模块的功能讲解
小组内选题、分工,制定初步进度计划
比较选题
周五
分析各个选题要领技术,选择课题校园BBS,做需求分析,系统的总体设计及人员详细分工,进度计划表。
明确个人分工,收集信息资源,预备代码实现部分。
选题
周六
确定技术JSP+JAVABEAN编写,按功能划分模块
BBS会员注册和登陆以及会员注册信息查询前台功能实现
并根据数据库信息做会员注册和登陆测试,通过
会员注册
周日
会员发表文章前台功能实现
测试前台页面,发表文章成功记入数据库
发表文章
周一
会员,游客查询文章和留言模块前台页面设计
查询文章
留言
周二
开始后台会员管理模块,页面设计和方法编写,对数据库的操作和测试
会员查询删除
文章查询删除
周三
论坛分类管理模块前台实现,包括会员注册信息和文章类别,置顶删除
版块的设计
测试留言功能
版块分类查询
增加版块
修改版块
删除版块
周四
撰写实训报告
预答辩
周五
撰写实训报告
答辩
提交实训报告
四.实训项目
1.项目需求描述
BBS是BulletinBoardSystem的英文缩写,即电子公告版,是一种在Internet上常见的用于信息服务的WEB系统,它主要给浏览者提供相互沟通的平台,以此来吸引客户,服务客户。
BBS起源于20世纪80年代初。
最初论坛只用于发布公告信息,讨论问题。
后来,随着网络的普及,论坛的功能越来越丰富,受到广大网民的喜欢。
因此,商业网站对论坛重视起来,纷纷在自己的网站上开辟论坛,作为与网民交流的园地。
同时在线支持和在线服务也在论坛中开展起来。
2.项目需求分析
2.1功能分析
(1)前台会员管理:
用户登录、会员注册、修改密码、注销、管理员查询会员、删除会员
(2)文章管理:
发表文章、查询文章、留言回复
(3)版块管理:
版块分类查询、版块添加、版块修改、版块删除
图2-1系统功能用例图
数据分析
图2-2论坛功能模块类图
3.项目设计
图3-1论坛系统层次图
本系统分为前台和后台两大模块。
用户在前台的注册、登录,以及修改个人的注册信息组合成注册登录模块。
注册用户浏览板块、浏览主题帖列表、查看帖子组成浏览模块。
用户发帖、回帖组成发帖回帖模块。
管理员删除帖子、转移帖子,置顶帖子(选作)和指定精华帖(选作)组成管理帖子模块。
以上4部分是前台模块。
后台模块都是与管理员相关的,设置论坛板块数、创建板块、删除板块为论坛设置模块。
修改板块为管理板块模块。
添加、删除、修改权限为管理用户模块。
图3-1校园BBS前台活动图
图1.3论坛管理系统后台活动图
图1.4为校园BBS的前台活动图。
图3-2论坛管理系统后台活动
数据结构设计
由数据库表间关系,对memberinfo表、boardinfo表,tieziinfo表和replyinfo表作如下设计。
(1)论坛会员基本信息表(memberinfo)。
会员基本信息表主要包含了论坛中注册会员的基本信息,如注册会员的姓名、E—mail、生日等信息,是维护会员的重要依据。
表1.1中列出了论坛会员信息表所包含的字段描述信息。
表1.1会员基本信息描述表
字段名
类型
长度
是否允许为空
是否主键
描述
userid
int
否
是
会员编号
username
varchar
50
否
否
会员姓名
userpassword
varchar
50
否
否
会员密码
useremail
varchar
50
否
否
会员E—mail
userhomepage
varchar
50
是
否
会员主页
hpname
varchar
50
是
否
会员主页名称
usersex
varchar
50
否
否
会员性别
comefrom
varchar
50
否
否
会员籍贯
usersign
varchar
255
否
否
会员签名
dateandtime
datetime
8
否
否
会员注册时间
usertype
varchar
20
否
否
用户类型
userbirthdat
datetime
8
否
否
会员生日
(2)论坛板块基本信息表(boardinfo)。
论坛板块基本信息表用于不同板块的分类信息。
如版名、点击率等信息。
在表1.2中列出了论坛板块基本信息表所包含的字段描述信息。
表1.2论坛板块基本信息描述表
字段名
类型
长度
是否允许为空
是否主键
描述
boardid
int
4
否
是
板块自动编号
boardname
varchar
16
否
否
板块名称
boardtopics
int
4
否
否
板块主题数
(3)论坛帖子基本信息表(tieziinfo)。
论坛帖子基本信息表用于存放所有文章的基本信息。
如文章的发表人、发表于哪个板块、主题是什么等。
在表1.4中列出了论坛帖子基本信息表所包含的字段描述信息。
表1.4帖子基本信息描述表
字段名
类型
长度
是否允许为空
是否主键
描述
bbsid
int
4
否
是
帖子自动编号
boardid
int
4
否
否
所属板块
username
varchar
16
否
否
发表人姓名
bbstopic
varchar
64
否
否
文章的主题
bbscontent
varchar
1024
否
否
文章的内容
dateanditime
datetime
8
否
否
文章发表时间
(4)论坛贴子回复信息描述表(replyinfo)。
用于存放所有的文章回复的基本信息。
如回复文章的人、回复回复帖子基本信息表所包含的字段描述信息。
表1.5帖子回复信息描述表(replytable)
字段名
类型
长度
是否允许为空
是否主键
描述
replyid
int
4
否
是
回复自动编号
bbsid
int
4
否
否
所属帖子
username
varchar
16
否
否
回复人姓名
bbscontent
varchar
1024
否
否
回复内容
dateanditime
datetime
8
否
否
回复时间
4.系统功能实现
(1)系统主页
图4-1论坛主页界面
说明:
用户通过音乐CD管理系统的登录页面完成登录操作。
若用户名和密码正确可进入系统主页。
用户单击“注册”按钮可以进入新用户注册页面。
(2)用户登陆
图4-2用户登陆界面
说明:
登录成功后,进入在线CD销售系统主页,显示管理控制台。
(3)注册新会员
图4-3会员注册界面
说明:
用户通过该页面可以进行新用户注册操作。
(4)发表文章页面
图4-4发表文章界面
说明:
用户单击“修改密码”链接,在输入了原始密码、新密码以及确认密码后可以进行修改密码的操作。
4.2后台管理
(1)后台主页
图4-5后台主页界面
说明:
用户单击“添加”链接,可以进行添加CD信息的操作。
(2)查询文章分类
图4-6查询文章界面
说明:
用户单击“查询/编辑”超链接,可以通过输入的关键字进行模糊查询CD的操作。
(3)删除文章页面
图4-7删除文章界面
说明:
用户单击“删除”超链接,可以进行删除CD信息的操作。
5.调试分析
(1)乱码问题的解决
a)<%@pagecontentType="text/html;Charset=GB2312"%>
b)Stringkeyname=request.getParameter("textname");
if(keyname!
=null)
{
tes("ISO-8859-1");
keyname=newString(b);
}
else
{
keyname="";
}
说明:
程序运行中出现乱码问题,方案一可以在导入page指令的属性Charset首写字母“C”大写。
方案二获取文本字段并转码。
6.关键代码
(1)使用JavaScript进行表单验证
functionsubmitForm()
{
if(document.form1.userName.value=="")
{
alert("请输入用户名");
document.form1.userName.focus();
returnfalse;
}elseif(document.form1.userPwd.value=="")
{
alert("请输入密码");
document.form1.userPwd.focus();
returnfalse;
}else
{
returntrue;
}
}
(2)会员登录
publicStringlogin(Stringsql)//登陆
{
Stringstr="";
Connectioncon;
Statementstm;
ResultSetrs;
try{
Stringuri="jdbc:
sqlserver:
//127.0.0.1:
1433;DatabaseName=BBS";
Stringuser="sa";
Stringpassword="sa";
con=DriverManager.getConnection(uri,user,password);
stm=con.createStatement();
rs=stm.executeQuery(sql);
if(rs.next())
{
str="success";
}
else
{
str="faith";
}
con.close();
returnstr;
}
catch(Exceptione)
{
System.out.println(e.getMessage());
returnnull;
}
}//登陆
(4)修改个人信息
publicintupdatepersoninfo(Stringnewname,Stringnewpass,Stringnewemail,Stringnewpage,Stringnewtell,Stringname)//修改信息
{
Connectioncon;
Statementstm;
ResultSetrs;
intn=-1;
try{
Stringuri="jdbc:
sqlserver:
//127.0.0.1:
1433;DatabaseName=BBS";
Stringuser="sa";
Stringpassword="sa";
con=DriverManager.getConnection(uri,user,password);
stm=con.createStatement();
Stringsql="updatememberinfosetusername='"+newname+"',userpassword='"+newpass+"',useremail='"+newemail+"',userhomepage='"+newpage+"',tell='"+newtell+"'whereusername='"+name+"'";
System.out.print(sql);
n=stm.executeUpdate(sql);
}
catch(SQLExceptione1)
{
System.out.print(e1);
return-8;
}
returnn;
}
(6)删除文章
publicStringdeleteinfo(intn,Stringkey)//删除信息
{
Connectioncon;
Statementstm;
ResultSetrs;
Stringstr="";
Stringsql="";
try
{
Stringuri="jdbc:
sqlserver:
//127.0.0.1:
1433;DatabaseName=BBS";
Stringuser="sa";
Stringpassword="sa";
con=DriverManager.getConnection(uri,user,password);
stm=con.createStatement();
if(n==1)
sql="deletefrommemberinfowhereusername='"+key+"'";
elseif(n==2)
sql="deletefromboardinfowhereboardname='"+key+"'";
else
sql="deletefromtieziinfowherebbstopic='"+key+"'";
if(sql.length()>0)
{
intk=stm.executeUpdate(sql);
if(k!
=0)
{
str="对表中删除"+k+"条记录成功";
}
else
{
str="删除记录失败";
}
}
else
{
str="必须制定要删除的记录";
}
con.close();
}
catch(SQLExceptionex)
{
ex.getMessage();
ex.printStackTrace();
}
returnstr;
}
(8)添加版块
publicbooleaninsertinfo(Stringsql)//添加信息
{
Connectioncon;
Statementstm;
ResultSetrs;
try
{
Stringuri="jdbc:
sqlserver:
//127.0.0.1:
1433;DatabaseName=BBS";
Stringuser="sa";
Stringpassword="sa";
con=DriverManager.getConnection(uri,user,password);
stm=con.createStatement();
intn=stm.executeUpdate(sql);
con.close();
if(n>0)
{
returntrue;
}
else
{
returnfalse;
}
}
catch(SQLExceptionex)
{
ex.getMessage();
ex.printStackTrace();
}
五.实训总结
对于软件的开发过程中需求分析占据着举足轻重作用,通过需求分析才能整体把握系统的基本功能,划分各功能模块,制定项目计划,让整个软件开发清晰化,系统化,根据系统的每一个模块细化出类,根据要实现的功能定义方法和变量,利用Struts+Hibernate开发软件。
代码部分自然而然就从分析中得到,每一天都按计划正常进展。
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
Struts跟Tomcat、Turbine等诸多Apache项目一样,是开源软件,这是它的一大优点,使开发者能更深入的了解其内部实现机制 除此之外,Struts的优点主要集中体现在两个方面:
Taglib和页面导航。
Taglib是Struts的标记库,灵活运用,能大大提高开发效率。
另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。
关于页面导航,我认为那将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。
通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。
尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。
MVC即Model-View-Controller的缩写,是一种常用的设计模式。
MVC减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。
Struts是MVC的一种实现,它将Servlet和JSP标记(属于J2EE规范)用作实现的一部分。
Struts继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发。
让得上课的时候老师曾经说过软件开发过程中时间安排分析:
编码=200:
1当然只觉得意外还有些不以为然,然而真正在实践的时候才真正有所体会,而且在无形之中,平日里很多觉得关系不大的课程在实训中也各显其能,比如软件工程,需求分析,UML制图等平日里觉得枯燥无味的课程无形之中就渗透到了实训当中,也渗透了到我的大脑之中。
任何一门技术或课程都不是单独存在的而是相互融合,相辅相成的。
Struts+Hibernate框架对我而言都不算太陌生了,尤其是已经有过一轮学习经历,但记忆已所剩无,加上当时自己半壶水的学习心态,很多知识点似懂非懂,现在第二轮虽然已经过去,但通过老师的讲解能唤醒一些记忆细胞,另外站在一个全新的角度也能深入理解,在实训中实现一个功能连贯的系统,也复习和融合了来日所学。
实训期间过得紧张而愉快,而且在最后有幸目睹了百年难遇的日食奇观。
除了感谢王国春老师和彭馨仪老师的细心指导外,还要谢谢我的组长和搭档们,虽然系统完成的不完美,但组长给讲解新闻发布系统的需求和关键技术,并担当了系统实现的证要部分,我们在一起讨论解决问题,真正感受到了什么是团队的力量和合作的愉快。
学生签字:
吕辽平
日期:
2010-7-23
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络程序设计 报告