数据库课程设计报告毕业设计

上传人:1888****888 文档编号:37601205 上传时间:2021-11-03 格式:DOC 页数:17 大小:1,019.50KB
收藏 版权申诉 举报 下载
数据库课程设计报告毕业设计_第1页
第1页 / 共17页
数据库课程设计报告毕业设计_第2页
第2页 / 共17页
数据库课程设计报告毕业设计_第3页
第3页 / 共17页
资源描述:

《数据库课程设计报告毕业设计》由会员分享,可在线阅读,更多相关《数据库课程设计报告毕业设计(17页珍藏版)》请在装配图网上搜索。

1、 数据库课程设计设计报告起止日期: 2015 年 10月 26日 至 2015 年 11月 5 日专业计算机信息管理准考证号0545152250341学生姓名吴恒知目 录一、背景1二、系统分析11. 需求分析12开发及运行环境1三、数据库设计11功能模块设计(增加三行说明,效果如图1所示)12数据库设计23主要模块功能实现33.1 数据库连接33.2 登陆功能43.3 首页显示73.4发帖功能11四、课程设计中遇到的问题、解决方法、收获和总结13校园网一、背景在信息化时代,通过网络信息交流沟通非常快捷;同时,网站作为网络资源的重要形式是备受学生欢迎的获取信息的渠道。因此可以通过建立大学生活网,

2、来解决困扰大学生的问题。通过本网站,学生可以转让闲置物品或作为微商在网站上创业;可以获取学校周边的旅游景点、美食小吃的信息以及同学的评论;可以发表在学习上遇到的问题寻求解决办法或是分享自己的学习经验。二、系统分析1. 需求分析网络交流成为当下交际的重要方式;用户可以在网站发布学习、生活的状态与同学进行交流。在校学生离校时有很多闲置物品,扔了可惜;本网站提供了二手转卖功能模块,为转让闲置物品提供方便。同时也为在校创业的微商们提供方便的校内销售、推广平台。2开发及运行环境本系统采用SQLsever+Javaweb联合编程,具体开发环境如下数据库环境:Sql2012Javaweb开发环境:my ec

3、lipse10Web应用服务器:Tomcat 6.0运行环境如下:Jdk版本7.0以上、tomcat6.0以上三、数据库设计校园网用户管理员注册、登录发帖、回帖查找、删除删帖加精1功能模块设计本网站角色分为用户和管理员,用户有登录、注册、发帖、回帖等主要功能,还有查找和删除等辅助功能。而管理员有权利删除不符合规定的帖子、回帖,也可以对比较好的帖子进行加精处理。图1功能模块设计2数据库设计根据需求分析,设计User_info、topic_info、Relation_info、Followup_info表表1 User_info字段名称数据类型长度约束含义IdInt32主键IdNamenchar(

4、10)10姓名PassWordnchar(10)10密码Portraitvarchar(50)50头像RegistTimetime(7)7时间statusint32状态mottonvarchar(MAX)Max座右铭表2 topic_info字段名称数据类型长度约束含义TopicIdInt32主键帖子IdAuthorIdInt32外键IdTitlevarchar(50)10标题Contentnvarchar(MAX)10内容PublishTimedate50发表时间Themenchar(10)7主题statusint32状态表3 Relation_info字段名称数据类型长度约束含义Relat

5、ionIdInt32主键关系IdUserIdInt32外键主用户oUserIdInt32外键次用户RelationTypeInt 32关系类别CreatTimetime(7)7时间表4 Followup_info字段名称数据类型长度约束含义 followIdInt32主键回帖IdtopicIdint32外键帖子idFollowContentnvarchar(MAX)max回帖内容FollowTimetime(7)7时间statusint32状态3主要模块功能实现3.1 数据库连接本网站采用sqlsever数据库,数据库连接核心代码如下package com.collegelife.connec

6、tion;import java.sql.*;public class ConnectionManager private static final String driver=com.microsoft.sqlserver.jdbc.SQLServerDriver; private static final String url=jdbc:sqlserver:/localhost:1433;DatabaseName=collegelife_DB;private static final String userName = sa;private static final String pwd

7、= 123;private static Connection con;/public ConnectionManager() try Class.forName(driver); catch (ClassNotFoundException e) e.printStackTrace();public static Connection getConnection()try con = DriverManager.getConnection(url,userName,pwd); catch (SQLException e) e.printStackTrace();return con;publi

8、c void close()try con.close(); catch (SQLException e) e.printStackTrace();public static void main(String args) ConnectionManager cm = new ConnectionManager();System.out.println(cm.getConnection()+数据库连接正常!);3.2 登陆功能用户将登录请求发给服务器,loginservlet接收请求后,现使用setCharacterEncoding()方法将页面发送过来的参数改成utf-8编码格式,然后使用ge

9、tParameter()方法获取页面传过来的用户名和密码,然后创建UserOpr的对象uo,然后调用UserOpr里的verify(String id,String pwd)方法,最后进入数据库查询用户名若不存在则返回flag=1,用户界面显示不存在该用户;若存在该用户,则比对密码是否正确,若不正确则返回flag=2,用户界面显示密码错误;若密码正确则成功登录,并跳转到主页上。登陆界面如图所示: 关键代码如下:Servlet:package com.collegelife.servlet;import java.io.IOException;import javax.servlet.Servl

10、etException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import com.collegelife.opr.UserOpr;public class LoginServlet extends HttpServlet public void doGet(HttpServletRequest req

11、uest, HttpServletResponse response)throws ServletException, IOException doPost( request, response);public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException /1.接收表单参数 2.登录验证 3.保存结果(session) 4.返回页面HttpSession session=request.getSession(); /创建Sess

12、ionrequest.setCharacterEncoding(utf-8);String userid=request.getParameter(userid); String pwd= request.getParameter(password); String result=; /创建UserOpr的对象 UserOpr uo=new UserOpr(); int flag=uo.verify(userid, pwd); if( flag=1)result=用户名不存在;session.setAttribute(ResultInfo,result );/将数据保存到Sessionresp

13、onse.sendRedirect(MyJsp.jsp);/页面重定向else if(flag=2)result=密码错误;session.setAttribute(ResultInfo,result );/将数据保存到Sessionresponse.sendRedirect(MyJsp.jsp);/页面重定向else if(flag=3)session.setAttribute(ResultInfo,result );/将数据保存到Sessionresponse.sendRedirect(index.jsp);/页面重定向 UserOpr * 用户名不存在:flag=1; * 密码错误: f

14、lag=2; * 验证通过: flag=3.public int verify(String id,String pwd)int flag=-1;sql = select * from user_info where id=? ; try psmt = con.prepareStatement(sql);psmt.setString(1,id);/执行SQLResultSet rs= psmt.executeQuery();/查询/判断if(rs.next()if(rs.getString(password).trim().equals(pwd) flag=3;elseflag=2;else

15、flag=1; catch (SQLException e) e.printStackTrace(); return flag;3.3 首页显示用户成功跳转到主界面后,将用户id保存到session,然后到数据库中查找该id的好友,SQL语句如下:select * from dbo.user_info ,(select ouserid from dbo.user_info join dbo.relation_info on dbo.user_info.Id=dbo.relation_info.userId where id=?)as a where dbo.user_info.Id = a.o

16、userid在页面里新建UserOpr对象uo,调用UserOpr里的List()方法,新建ArrayList来承载从数据库中查询到的用户列表,通过循环将每一用户数据转储到ArrayList中,在页面里先判断list是否为空,若为空则不进入下一步的循环,若list不为空,则进入循环,通过for循环遍历整个好友列表,为每个好友分配一个div同时设置id,针对不同位置的div添加不同的样式,然后获取好友的头像作为div的背景图片,获取座右铭的值并赋给div的title。当用户数遍滑过该div时,触发jQuery hover事件,在该div旁边生成另一个div,同时获取title值,并入显示在div

17、中。关键代码如下:UserOpr:public ArrayList list() /获取所有的好友sql = select * from dbo.user_info ,;sql+= (select ouserid from dbo.user_info join dbo.relation_info on dbo.user_info.Id=dbo.relation_info.userId where Name=iven);sql+= as a where dbo.user_info.Id = a.ouserid;ArrayList list = new ArrayList();try psmt =

18、 con.prepareStatement(sql);ResultSet rs = psmt.executeQuery();while(rs.next()User u = new User();u.setName(rs.getString(name);u.setPortrait(rs.getString(portrait);String m;if(rs.getString(motto)=null) m=这个人很懒什么都没写;elsem=rs.getString(motto);u.setMotto(m);/u.setMotto(rs.getString(motto);list.add(u); c

19、atch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();return list;Index.jsp %/调用UseOpr方法list(),获取数据表数据UserOpr uo=new UserOpr();ArrayList list=uo.list();/通过循环显示好友if(list!=null)int i=1;for(User u:list) % div id=facewall a href=# title= img src=images/ 在页面里新建TopicOpr对象to,调用TopicOpr

20、里的List()方法,新建ArrayList来承载从数据库中查询到的帖子列表,通过循环将每一帖子数据转储到ArrayList中,然后释放ResultSet对象rs,在页面里先判断list是否为空,若为空则不进入下一步的循环,若list不为空,则进入循环,通过for循环遍历整个帖子列表,再在页面里通过循环显示, 关键代码如下:topicOpr:public class TopicOpr public ArrayList list()Connection con=null;PreparedStatement stmt=null;ResultSet rs =null;ArrayList list =

21、 new ArrayList();trycon=ConnectionManager.getConnection();String sql = select top 8 Title,Name,portrait,Content,PublishTime,Theme from topic_info,user_info ;sql+=where topic_info.AuthorId=user_info.id order by topic_info.publishtime desc;stmt =con.prepareStatement(sql);rs=stmt.executeQuery();while(r

22、s.next()Topic t = new Topic();t.setTitle(rs.getString(Title);t.setUserName(rs.getString(Name);t.setPortrait(rs.getString(portrait);t.setcontent(rs.getString(Content);t.setPublishTime(rs.getString(PublishTime);t.setTheme(rs.getString(Theme);list.add(t);catch(Exception ex)ex.printStackTrace();return n

23、ull;finallyif (rs!=null)tryrs.close();rs=null;catch (Exception ex) ex.printStackTrace();return list; Index.jsp %/调用TopicOpr方法list(),获取数据表数据TopicOpr to=new TopicOpr();ArrayList list2=to.list();/通过循环显示帖子if(list2!=null)for(Topic t:list2) % img src=images/ 3.4发帖功能用户进入发帖界面后页面显示一个表单,由用户填写标题和内容,用户点击发表后,页面将

24、表单内容以post的方式发送给服务器,Topicservlrt继承HttpServlet类,重写dopost()方法,通过setContentType()和request.setCharacterEncoding();将表单里的参数规范为utf-8编码格式,新建Data对象data和SimpleDateFormat对象sdf,最后获取系统时间并用对象sdf里的format()的方法将其规范为yyyy-MM-dd格式。接收表单参数txt和tit,将接收到的表单参数和获取到的并规范过的系统时间封装为一个Topic对象,调用TopicOpr里的publish(Topic topic)方法,将topi

25、c对象里的数据写入SQL语句,再在数据库里执行,将数据插入。若插入成功则方法返回true,若插入异常,则返回falseTopicservlet:package com.collegelife.servlet;import java.io.IOException;import java.io.PrintWriter;import java.text.SimpleDateFormat;import java.util.Date;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import jav

26、ax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.collegelife.model.Topic;import com.collegelife.opr.TopicOpr;public class TopicServlet extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IO

27、Exception doPost(request, response);public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException response.setContentType(text/html;charset=UTF-8);request.setCharacterEncoding(utf-8);Date date = new Date();SimpleDateFormat sdf = new SimpleDateFormat

28、(yyyy-MM-dd);String strCurrentTime=sdf.format(date);/接收表单参数PrintWriter out = response.getWriter();String txt=request.getParameter(txt);String tit=request.getParameter(tit);/3.将接收到的表单参数封装为一个Topic对象Topic topic=new Topic();topic.setcontent(txt);topic.setTitle(tit);topic.setPublishTime(strCurrentTime);T

29、opicOpr to=new TopicOpr();if(to.publish(topic)out.print(alert(发表成功!);elseout.print(alert(发表失败!);response.setHeader(refresh, 2;URL=index.jsp);/延迟两秒跳转TopicOprpublic boolean publish(Topic topic)Connection con=null;PreparedStatement stmt=null; int row = 0; try con=ConnectionManager.getConnection();Strin

30、g sql = insert into topic_info(AuthorId,Title,Content,PublishTime,Theme,status) values(11,?,?,?,我在校园,1); stmt = con.prepareStatement(sql); stmt.setString(1, topic.getTitle(); stmt.setString(2, topic.getcontent(); stmt.setString(3, topic.getPublishTime();/执行SQLrow = stmt.executeUpdate(); catch (SQLEx

31、ception e) e.printStackTrace(); return row0?true:false;四、课程设计中遇到的问题、解决方法、收获和总结通过这一阶段的数据库课程设计锻炼,我遇到的问题与排、查解决过程如下:用户登录时浏览器报500错误,同时my eclipse 的console界面显示SQL用户”sa”登录失败。经检查,SQLsever数据库正常,将useropr里的SQL语句复制到SQLsever查询分析器里,运行正常。数据库驱动ConnectionManager里,用户名和密码全部正确。最后在my eclipse里运行了ConnectionManager,console报

32、错说缺少包库。在libraries里发现原来的jdbc包的路径是u盘的,由于我当时没有插优盘,导致找不到该jdbc,我将jdbc复制到工程文件夹 里重新添加。用户登录成功,问题解决。在开发的过程中我发现如果使用get方式提交中文,接受参数的页面也会出现乱码,这个乱码的原因也是tomcat的内部编码格式iso8859-1导致。Tomcat会以get的缺省编码方式iso8859-1对汉字进行编码,编码后追加到url,导致接受页面得到的参数为乱码。解决办法:1)使用上例中的第一种方式,对接受到的字符进行解码,再转码。2)Get走的是url提交,而在进入url之前已经进行了iso8859-1的编码处理

33、。要想影响这个编码则需要在server.xml的Connector节点增加useBodyEncodingForURI=true。属性配置,即可控制tomcat对get方式的汉字编码方式,上面这个属性控制get提交也是用request.setCharacterEncoding(UTF-8)所设置的编码格式进行编码。所以自动编码为utf-8,接受页面正常接受就可以了。但我认为真正的编码过程是,tomcat又要根据里面所设置的URIEncoding=”UTF-8”再进行一次编码,但是由于已经编码为utf-8,再编码也不会有变化了。如果是从url获取编码,接受页面则是根据URIEncoding=”UT

34、F-8”来进行解码的。我在机房导入的新工程时发现,名字上出现感叹号。在网上搜索后发现是工程的jar包libraries需要重新加载。 只需要在工程右键-properties-Java Build Path-Libraries,remove以前的jar包,点选“Add JRES”,从工程中的web_root-lib文件夹中选择jar包,并导入即可。最后总结这次开发过程遇到的问题的解决办法,如果程序出错了,而且是要几个文件来回传参的,就独立每一个文件,使用固定的参数来运行,看是否出错。还可以在程序适当的地方设置断点,一步一步跟踪程序运行。解决乱码问题就要将每个文件以及程序的编码方式修改为utf-8,若实在不能解决,就将程序里的代码完全复制到文本文档中保存为utf-8编码模式,并修改为对应的扩展名。15

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!