web开发课程设计报告
《Web开发技术》
课程设计报告
题目:博客设计
学生姓名:学号:
学生姓名: 学号:
学生姓名:学号:
系别班级:
专业(方向):
指导教师:
/
目录
1 任务与要求 (2)
2 系统总体设计 (3)
2.1 系统设计目标及完成功能 (3)
2.2 系统结构设计 (4)
3 系统详细设计 (6)
4 测试 (20)
5 课程设计与总结 (28)
参考文献 (28)
1 任务与要求
要求:
(1)根据题目进行需求分析,写出需求分析报告。
(2)根据需求分析,进行模块化分,画出模块之间的关系图,以及每个模块的数据流图(也可以使用uml建模实现分析数据关系)。
(3)前台页面设计布局要合理,页面要美观,大方。
(4)代码设计实现要求:
A.使用模型1:Jsp+JavaBean或模型2:Jsp+Servlet+JavaBean都可以。
B.代码书写要规范,要求有注释(包括代码注释和文档注释),并且代码注释达到85%以上。对于Java类的定义要求书写文档注释。
C.项目运行出现异常,要求跳到错误界面进行友好提示。
(5)项目设计完成要求运行过程没有错误。
(6)书写课程设计报告,报告格式按《***课程设计报告》要求规范书写。(7)项目完成,参与答辩,并填写答辩记录单。
(8)要查找参考文献,至少查阅5篇参考文献。
任务:
本课程设计的任务是通过学生用Jsp及相关web技术设计一个完整、可用的动态网站,使学生综合应用所学知识完成项目的分析、设计、调试和总结,可加深和巩固对理论教学和实验教学内容的掌握,培养学生进一步掌握web开发技术进行动态网站开发的方法。培养其灵活运用所掌握的web开发技术的综合应用能力解决实际问题的能力以及创新能力等。
2 系统总体设计
博客设计的首页分为经典文章、生活、时尚、行者等板块。系统角色分为普通用户user和超级管理员admin。普通用户需要注册才可以进入个人博客进行添加、修改、删除和评论等操作。用户若不登录,只能看到还有的博文内容不能对其进行评论。超级管理员可以直接登录博客,可对普通用户进行删除、修改等操作。此外我们还为博客添加了填写个人资料和上传图片的功能。
2.1 系统设计目标及完成功能
设计目标:
在首页添加可更新的文章、图片、新闻等。普通用户注册登录后进入个人主页可上传自己的资料和头像,也可以查看、添加好友、删除等操作。超级管理员可以公布消息、新闻等功能。
完成功能:
普通用户可以对博客进行增删查改。可以更改自己的个人资料和上传自己喜欢的照片。但是头像由于一些问题没有解决暂时没有实现。
超级管理员可以管理用户信息和博客信息及查看用户资料。
首页由于时间不够没有实现各个版块的动态更新。但是可以各个版块的详细信息。
2.2 系统结构设计
(1)数据库设计
建立数据库message,包含三张表分别为Msguser、message和userdata。
表message用于储存博文,表msguser用于储存注册用户的用户名、密码和头像。表userdata用于储存和更新个人资料。表的设计如下:
(2)系统结构设计
系统结构图:
3 系统详细设计
主要代码:
注册登录模块:
Add_user.jsp
<%
String username=request.getParameter("username");
String password=request.getParameter("password");
String headimg=request.getParameter("headimg"); UserCtrl uc=new UserCtrl();
Msguser user=new Msguser();
user.setUsername(username.trim());
user.setPassword(password.trim());
user.setHeadimg(headimg.trim());
user.setPower(2);
int flag=uc.addUser(user);
if(flag==1){
response.sendRedirect("success.jsp");
}else{
response.sendRedirect("error.jsp");
}
%>
Login_user.jsp
<%
String username=request.getParameter("username");
String password=request.getParameter("password");
//String power=request.getParameter("power");
UserCtrl uc=new UserCtrl();
Msguser user=new Msguser();
user.setUsername(username.trim());
user.setPassword(password.trim());
//user.setPower(power);
String flag=uc.checkUser(user).trim();
if("2".equals(flag)){
session.setAttribute("username",username);
response.sendRedirect("usermain.html");
}else if("1".equals(flag)){
session.setAttribute("username",username);
response.sendRedirect("adminmain.jsp");
}else{
response.sendRedirect("login.jsp");
}
%>
发表博客模块:
Add_msg.jsp
<%
request.setCharacterEncoding("GBK");
String m_subject =request.getParameter("m_subject");
String m_content=request.getParameter("m_content");
String m_time=new MsgDate().getDate();
String m_author=(String)session.getAttribute("username"); Message msg=new Message();
msg.setM_author(m_author);
//msg.setM_content(new Encode().encode(m_content));
//msg.setM_subject(new Encode().encode(m_subject));
msg.setM_content(m_content);
msg.setM_subject(m_subject);
msg.setM_time(m_time);
msg.setM_replyid(0);
MsgCtrl msgctrl=new MsgCtrl();
int flag=msgctrl.addMsg(msg);
if(flag==1){
response.sendRedirect("selfmain.jsp");
}else{
response.sendRedirect("addmsg.jsp");
}
%>
博客管理模块
Adminmsglist.jsp
<%
String username=(String)session.getAttribute("username");
if(username==null){
%>
window.parent.location.href="login.jsp"
<%
}
%>
欢迎<%=username %>登陆博客 发表博客 |
<%
MsgCtrl mc=new MsgCtrl();//实例化msgctrl类对象
List
if(username.equals("admin")){
msglist=mc.queryAll();//调用mc的查询所有留言的方法,并返回集合类对象
}else {
msglist=mc.queryAllByUser(username);
}
//分页基本信息
String
cpage=request.getParameter("currentpage");
int recordcounts=0; //当前所有记录个数
int currentpage=1;
if(cpage!=null){
currentpage=Integer.parseInt(cpage);
}
int pages=1;
int page_recorde_count=4;
//
if(msglist!=null){
recordcounts=msglist.size();//计算博客的个数
pages=(recordcounts%page_recorde_count==0)?(recordcounts/page_rec orde_count):(recordcounts/page_recorde_count)+1;
int i=(currentpage-1)*page_recorde_count;
int count=0;
while(count if(i msg=msglist.get(i);//得到下表索引表示的对象 %> class="style1"><%=msg.getM_author() %> 标题:<%=msg.getM_subject()%> 内容:<%=msg.getM_content()%> 评论:<%=msg.getM_reply() %> <% count++; i++; }else{ break; } } } %> 总共<%=pages %>页,当前第<%=currentpage %>页 <%if(currentpage==1) {%> 首页 <%}else{ %> <%} %> |<%if(currentpage-1>=1) {%> <%}else{ %> 上一页 <%} %> | <%if(currentpage+1<=pages) {%> <%}else{ %> 下一页 <%} %> | <%if(currentpage==pages) {%> 尾页 <%}else{ %> <%} %>
用户管理模块:
Adminuser.jsp
<%
UserCtrl uc=new UserCtrl();//实例化userctrl类对象
List
userlist=uc.queryAllUser();//调用uc的查询所有用户的方法,并返回集合类对象
DataCtrl dc=new DataCtrl();//实例化DataCtrl 类对象
List
datalist=dc.queryAllUser();//调用dc的查询所有用户的方法,并返回集合类对象
//分页基本信息
String
cpage=request.getParameter("currentpage");
int recordcounts=0; //当前所有记录个数
int currentpage=1;
if(cpage!=null){
currentpage=Integer.parseInt(cpage);
}
int pages=1;
int page_recorde_count=8;
//
if(userlist!=null){
recordcounts=userlist.size();//计算留言的个数
pages=(recordcounts%page_recorde_count==0)?(recordcounts/page_rec orde_count):(recordcounts/page_recorde_count)+1;
int i=(currentpage-1)*page_recorde_count;
int count=0;%>
用户名 | 密码 | 用户管理 | 用户信息 |
---|---|---|---|
class="style1"><%=msguser.getUsername() %> | class="style1"><%=msguser.getPassword() %> |
| |
class="style1"><%=msguser.getUsername() %> | class="style1"><%=msguser.getPassword() %> |
总共<%=pages %>页,当前第<%=currentpage %>页
<%if(currentpage==1) {%>
首页
<%}else{ %>
<%} %>
|<%if(currentpage-1>=1) {%>
<%}else{ %>
上一页
<%} %>
|
<%if(currentpage+1<=pages) {%>
<%}else{ %>
下一页
<%} %>
| <%if(currentpage==pages) {%>
尾页
<%}else{ %>
<%} %>
个人资料模块
Message_user.jsp
<%
String netname=request.getParameter("netname");
String sex=request.getParameter("sex");
String address=request.getParameter("address");
String sign=request.getParameter("sign");
String age=request.getParameter("age");
DataCtrl dc=new DataCtrl();
Userdata data=new Userdata();
data.setNetname(netname.trim());
data.setSex(sex.trim());
data.setAddress(address.trim());
data.setSign(sign.trim());
data.setAge(age.trim());
int flag=dc.addUser(data);
if(flag==1){
response.sendRedirect("adminmain.jsp");
}else{
response.sendRedirect("error.jsp");
}
%>