1、 攀枝花学院 学生课程设计(论文) 类QQ留言网站建设 学生姓名: 学生学号: 2 院(系): 计 算 机 学 院 年级专业: 09计算机科学与技术 指导教师: 歧 世 峰 2011年12月17日 攀枝花学院本科学生课程设计任务书 题 目 类QQ留言网站建设
2、 1、课程设计的目的 使学生掌握数据库的基本概念,结合实际的操作和设计,巩固课堂教学内容;使学生掌握数据库系统的基本概念、原理和技术,将理论与实际相结合,应用现有的数据建模工具和数据库管理系统软件,规范、科学地完成一个小型数据库的设计与实现;把理论课与实验课所学内容做一综合,并在此基础上强化学生的实践意识、提高其实际动手能力。 2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等) 1)QQ号基本信息的管理:能够向数据库中添加、删除QQ号记录,能够修改记录中的字段值。 2)能够按照条件(好友呢称、QQ号)留言或浏览。 3)能够按好友呢称、QQ号等条件对QQ号进行查询与统计
3、 3、主要参考文献 [1]张莉 《SQL SEVER数据库原理及应用 》 [2]萨师煊 王珊著.《数据库系统概论》第三版.高等教育出版社 [3] 施伯乐 丁宝康 汪卫.《数据库系统教程》 高等教育出版社2003年第2版 [4]庄成三等.《数据库系统原理及其应用》.电子工业出版社 4、课程设计工作进度计划 第1天 :选题、完成需求分析 第2天 :数据库概念结构设计 第3天:数据库逻辑结构设计及物理实现 第4天:应用程序开发 第5天: 程序调试分析和结果、编写课程设计报告 指导教师(签字) 日期 年 月 日 教研室意见:
4、年 月 日 学生(签字): 接受任务时间: 年 月 日 注:任务书由指导教师填写。 课程设计(论文)指导教师成绩评定表 题目名称 类QQ留言网站建设 评分项目 分值 得分 评价内涵 工作 表现 20% 01 学习态度 6 遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。 02 科学实践、调研 7 通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。 03 课题工作量 7 按期圆满完成规定的任务,工作量饱满。 能力 水平 35% 04 综合运用知识的能力 10
5、 能运用所学知识和技能去发现与解决实际问题,能正确处理实验数据,能对课题进行理论分析,得出有价值的结论。 05 应用文献的能力 5 能独立查阅相关文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息及获取新知识的能力。 06 设计(实验)能力,方案的设计能力 5 能正确设计实验方案,独立进行装置安装、调试、操作等实验工作,数据正确、可靠;研究思路清晰、完整。 07 计算及计算机应用能力 5 具有较强的数据运算与处理能力;能运用计算机进行资料搜集、加工、处理和辅助设计等。 08 对计算或实验结果的分析能力(综合分析能力、技术经济分析能
6、力) 10 具有较强的数据收集、分析、处理、综合的能力。 成果 质量 45% 09 插图(或图纸)质量、篇幅、设计(论文)规范化程度 5 符合本专业相关规范或规定要求;规范化符合本文件第五条要求。 10 设计说明书(论文)质量 30 综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学。 11 创新 10 对前人工作有改进或突破,或有独特见解。 成绩 指导教师评语 指导教师签名: 年 月 日
7、 摘要 摘 要 随着计算机技术的不断发展,计算机作为知识经济时代的产物,已被广泛应用于社会各个行业和领域。随着我国改革的深入和社会主义市场经济的日趋繁荣,导致竞争日益激烈,迫使我们采取先进的计算机硬件设备以及高质量的辅助软件来管理运作,以提高效率。动态网页也是一样,人们在其上面留言发表个人观点的平台, 它是一个交互式的互动平台,它是用户相互交流的重要途径,用户提出的要求、意见、看法,可以得到及时回复和解决,可以有效的解
8、决用户的需要。 目前计算机网络这么发达,我们就很有必要去开发一个这样的网站建设——类QQ留言网站建设系统。只要有一台与外界相连的计算机,你可以不用走出家门,只需进入留言系统,就可以和广大用户进行互相交流。 通过本次数据库课程设计,掌握数据库的基本概念,结合实际的操作和设计,巩固课堂教学内容;使学生掌握数据库系统的基本概念、原理和技术,将理论与实际相结合,应用现有的数据建模工具和数据库管理系统软件,规范、科学地完成一个小型数据库的设计与实现;把理论课与实验课所学内容做一综合,并在此基础上强化学生的实践意识、提高其实际动手能力。 关键词 数据库,类QQ留言网站建设,jsp
9、java,基本功能 攀枝花学院课程设计 目录 目 录 目 录 2 一、系统分析 3 1.1 概述 3 1.2 系统使用环境 3 1.3 数据库应用系统 4 1.3.1数据库连接方式 4 1.3.2 应用系统 4 1.4 可行性分析 4 二、需求分析 5 2.1 各实体集的描述(E-R图) 5 2.2 需求功能描述 10 2.3 数据流图 11 三、总体设计 14 3.1 功能描述图 14
10、 3.2 数据库逻辑结构设计 15 3.2.1 关系模型 15 3.2.2 创建视图、触发器 16 3.2.3 页面之间的跳转 19 四、详细设计 21 五、总结 32 六、结束语 32 参考文献 附录:部分源代码清单 9 攀枝花学院课程设计 系统分析 1 系统分析 1.1 概述 随着计算机技术的不断发展,计算机作为知识经济时代的产物,已被广泛应用于社会各个行业和领域。随着我国改革的深入和社会主义市场经济的日趋
11、繁荣,导致竞争日益激烈,迫使我们采取先进的计算机硬件设备以及高质量的辅助软件来管理运作,以提高效率。动态网页也是一样,人们在其上面留言发表个人观点的平台, 它是一个交互式的互动平台,它是用户相互交流的重要途径,用户提出的要求、意见、看法,可以得到及时回复和解决,可以有效的解决用户的需要。 目前计算机网络这么发达,我们就很有必要去开发一个这样的软件——动态留言系统。只要有一台与外界相连的计算机,你可以不用走出家门,只需进入留言系统,就可以和广大用户进行互相交流。 1.2 系统使用环境 开发工具:MyEclipse8.5 开发环境的选择:Navicat for Mysql
12、 在使用MyEclipse8.5作为工具的条件下,运用Java、JSP等语言,以Navicat for Mysql作为后台数据库,编写并测试运行网页。 1.3 数据库应用系统 1.3.1数据库连接方式 本系统使用的是JDBC 方式连接MySql数据库。 MySql目前提供的java驱动程序为Connection/J,可以从MySql官方网站下载,并找到mysql-connector-java-5.1.7-bin.jar.然后再加载驱动程序,若加载驱动成功,则设置连接的url(其中包括数据库名、用户名、密码等)。 1.3.2 应用系统 使用的是基于web的数据库应
13、用采用三层客户/服务器模式,也称为B/S结构。第一层为浏览器,第二层为Web服务器,第三层为数据库服务器。浏览器是用户输入数据和现实结果的交互界面,用户在浏览器表单中输入数据,然后将表单中的数据提交并发送到Web服务器,Web服务器应用程序接受并处理用户的数据,通过数据库服务器,从数据库中查询需要的数据(或把数据录入数据库)送回Web服务器,Web服务器把返回的结果插入HTML页面,传送到客户端,在浏览器中显示出来。该系统的目的在于实现对小型数据库的增、删、查、改等基本操作。 1.4 可行性分析 本系统可对QQ号记录进行查看,QQ号基本信息的管理:能够向数据库中添加、删除QQ号记录
14、能够修改记录中的字段值。能够按照条件(好友呢称、QQ号)留言或浏览。能够按好友呢称、QQ号等条件对QQ号进行查询与统计。 本系统应使用JDBC与所需的数据库进行连接并操作。同时网络学习资料、参考资料以及指导老师的帮助,因此类QQ留言网站开发系统可以实现。 攀枝花学院学生课程设计 需求分析 2 需求分析 当今社会,互联网已经逐渐融入社会生活的各个角落。人们不再只局限于面对面或通过手机来进行交谈了。留言板系统正好提供了一个这样的平台。它是一个交互式的互动平台
15、是用户相互交流的一种途径,用户提出的要求、意见、看法,可以得到及时回复和解决,可以有效的解决用户的需要。 现在就开始根据类QQ留言网站建设的功能需求讲解设计思路。在类QQ留言网站建设系统中,首先可对QQ号记录进行查看,QQ号基本信息的管理:能够向数据库中添加、删除QQ号记录,能够修改记录中的字段值。能够按照条件(好友呢称、QQ号)留言或浏览。能够按好友呢称、QQ号等条件对QQ号进行查询与统计。 2.1 各实体集的描述(E-R图) 2.1.1 用户的实体属性 留言内容 QQ QQ号 好友昵称 图1.E-R图 2.2 需求功能描述 1. QQ号基本信息
16、的管理:能够向数据库中添加、删除QQ号记录,能够修改记录中的字段值。 2. 能够按照条件(好友呢称、QQ号)留言或浏览。 3. 能够按好友呢称、QQ号等条件对QQ号进行查询与统计。 攀枝花学院学生课程设计 总体分析 3 总体设计 3.1 功能描述图 类QQ留言网站建设 按条件修改字段值 按QQ号删除字段 增加QQ号 增加好友昵称 输入留言内容 按QQ号查询 增加QQ表中记录 按条件查询 按条件删除及留言 修改好友昵称
17、修改留言内容 查询QQ号 查询好友昵称 查询留言内容 图2 功能描述图 12 攀枝花学院学生课程设计 总体分析 3.2 数据库逻辑结构设计 3.2.1 关系模型 由之前的E-R图转换为关系模型,本系统需要用到QQ表。表中有QQ号、好友昵称、留言内容等字段,其结构如表所示。 各个页面基本功能的说明如下所示: index.jsp:首页显示页面(显示跳转至增、
18、删、查、改的页面)。 asqqselect.jsp:按QQ号条件查询的页面。 addqq.jsp: 增加QQ号、好友昵称等字段记录的页面。 leavemessage:输入留言内容的页面。 selectqq.jsp:按QQ号等条件对QQ号进行查询的页面。 subselect.jsp:显示按QQ号等条件查询内容的页面。 Updateqq.jsp:能够按条件修改记录中的字段值的页面。 操作员在进行操作时,需要先进入首页的显示界面,再按条件对QQ表进行,修改,删除、添加查询等操作。 攀枝花学院学生课程设计
19、 详细分析 4 详细设计 由前面的设计可以得到数据库和各个页面的功能及页面之间的功能及页面之间相互调用的过程,因时间限制,最后功能没有一一实现,本次实验详细设计过程介绍: 4.1首页展示页面index.asp 该页面的设计比较简单,只包含一个表,用来显示并操作数据库里面增、删、查、改等操作,点击相应操作会跳转至相应操作的界面。其操作界面如下所示: 4.2添加界面addqq.jsp 该页面同样简单,设计到了一个表单,该页面是添加QQ号、好友昵称等信息,如下图所示: 想添加界面添加信息,添加
20、前如下图所示: 攀枝花学院学生课程设计 详细设计 4.3删除、和留言的页面 4.3.1删除前表中的所有信息 如下所示: 如下图所示: 点击删除按钮即可删除改行,如删除QQ号为1、好友昵称为东方红的删除后表中信息如下图所示: 4.3.2输入留言内容 点击留言按钮即可对该QQ号进行留言并进入留言页面进行留言,留言页面如下图所示: 4.4按QQ号等条件查询 按QQ号进行查询的页面selectqq.jsp: 在显示首页页面点
21、击查询,便可进入按QQ号:1205353对字段值中内容进行查询,其页面如下图所示: 输入QQ号,便可看到改QQ号的昵称及它的留言内容!如查询1205353,对字段值中内容如下图所示: 4.5按条件修改QQ信息页面 修改前表中数据为 将QQ号为1122的信息进行修改,其修改页面为: 其修改后查看表中信息,如下图所示: 31 攀枝花学院学生课程设计 总结 5 结论 我在歧世峰老师的精心指导下,完成了系统的设计。总体
22、上来说,实现了其基本功能、达到了预期的效果。在这个类QQ留言网站建设系统的开发过程中,值得注意的几点有: 1.系统前台设计,用到了jsp中的框架、servlet、JavaBean等方面的知识,更进一步学习了动态网页制作知识理论和技术,也巩固了这学期所学的数据库的SQL语句、java编程、以及用HTML、JSP等写网页。 2.系统实现了QQ表中信息的查询、添加、修改、删除等方面基本的功能。在由于编写的时间的太仓促和能力有限,系统还存在许多不完善的部分。为了使系统更加完善,有更高的使用效率和维护的方便性,请老师指教,系统还有待进一步改善。 3.在写代码实现数据库中相关基本操作中遇到很多问题.
23、其中很多都值得注意,如要在数据库建立相应的数据。约束是相当重要的,建立相应的表,录入相应的数据。 4.在运行java连接数据库的时候也有爱注意MySql数据库的加载程序等。否则无法连接数据库,还有连接驱动的重要,一定要记得引进去。 5.java连接JSP的时候注意引进自己所写的JAVA程序包和SQL的包。否则无法成功的调用里面的类方法。 6.在JSP中传送数据给JAVA程序的时候要注意传送的值的类型,传过的值是STRING,有些需要转换成INT类型。注意设置为字体为UTF-8否者会出现传值的乱码,存入数据库的时候中文字就变成乱码了。 攀枝花学院学生课程设计
24、 结束语 6 结束语 此次课程设计能够顺利完成,这与老师平时的指导是分不开的,不过经过这次课程设计,深知自己在JSP以及JAVA方面还存在很多的不足,也有很多的不懂。 通过自己的直接实践积累了项目设计的经验,而且还培养了自己运用所学知识独立完成和解决课题的能力,提高了程序设计能力,而且还达到事半功倍的效果,这是从书本上所学不到的! 感谢在此次实训期间各位同学及老师对我的帮助、指导,谢谢! 同时通过做课程设计,有几点感想,归纳如下: 1. 扎实的理论基础:如果不掌握它们,很难
25、写出高水平的程序。而这一点又是我们所缺乏的。通过此次课程设计让我们更加深刻地体会了理论与实际相结合的重要性,熟悉了科学地设计系统的流程,加深了对数据库知识的掌握。 2. 多与别人交流:在系统的制作过程中也遇到不少疑惑和诸多问题,通过查询网络资料和向同学虚心询问,加之不舍的耐心,使得一切问题迎刃而解。 3. 良好的编程风格:注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。根据事先的逻辑设计设计程序代码。 再次感谢在此次实训期间各位同学及老师对我的帮助、指导,谢谢!今后我将有针对的进行学习,争取把自己的专业技能学好、学精。
26、攀枝花学院学生课程设计 参考文献 参考文献 [1] Java入门与提高 / 徐建华,李玉林。----北京:科学出版社,2008.10 [2]萨师煊 王珊著.《数据库系统概论》第三版.高等教育出版社 [3]施伯乐 丁宝康 汪卫.《数据库系统教程》 高等教育出版社2003年第2版 [4] JSP程序设计 / 范立锋,乔世权,程文彬。----北京:人民邮电出版社。[5]萨师煊,王珊,数据库系统概论(第三版). 北京:高等教育出版社,2000 [6]齐治昌,谭庆
27、平,宁洪,软件工程(第二版).北京:高等教育出版社,2004 [7]《软件工程理论与实践》 Shari Lawrence Pfleeger编 清华大学出版社,2010-2. [8]《软件需求分析》 Swapna Kishore编 机械工业出版社,2007 [9]《数[4]据库原理及设计》 陶宏才编 清华大学出版社 2008-8-1. 攀枝花学院学生课程设计 附录 附录:部分源代码清单 1
28、数据库连接 package pzh.java; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DB { public static Connection getConn() { Connection conn = null;
29、 try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/xzl", "root" , "root"); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } return conn; } public
30、 static Statement createStmt(Connection conn) { Statement stmt = null; try { stmt = conn.createStatement(); } catch (SQLException e) { e.printStackTrace(); } return stmt; } public static ResultSet executeQuery(PreparedStatement pstmt, String sql) { ResultSet rs = nul
31、l; try { rs = pstmt.executeQuery(); } catch (SQLException e) { e.printStackTrace(); } return rs; } public static void executeUpdate(PreparedStatement pstmt) { try { pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } } public sta
32、tic PreparedStatement prepareStmt(Connection conn, String sql) { PreparedStatement pstmt = null; try { pstmt = conn.prepareStatement(sql); } catch (SQLException e) { e.printStackTrace(); } return pstmt; } public static PreparedStatement prepareStmt(Connection conn, Stri
33、ng sql, int autoGeneratedKeys) { PreparedStatement pstmt = null; try { pstmt = conn.prepareStatement(sql, autoGeneratedKeys); } catch (SQLException e) { e.printStackTrace(); } return pstmt; } public static void close(Connection conn) { if(conn != null) { try {
34、 conn.close(); } catch (SQLException e) { e.printStackTrace(); } conn = null; } } public static void close(Statement stmt) { if(stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } stmt = null; } } p
35、ublic static void close(ResultSet rs) { if(rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } rs = null; } } } 2.javabean部分java代码如下: package pzh.java; public class QQ { String QQ号; String 好友昵称; String 留言内容; public QQ(Stri
36、ng qQ号, String 好友昵称, String 留言内容) { super(); QQ号 = qQ号; this.好友昵称 = 好友昵称; this.留言内容 = 留言内容; } public String getQQ号() { return QQ号; } public void setQQ号(String qQ号) { QQ号 = qQ号; } public String get好友昵称() { return 好友昵称; } public void set好友昵称(String 好友昵称) { this.好友昵称 = 好友昵称; }
37、 public String get留言内容() { return 留言内容; } public void set留言内容(String 留言内容) { this.留言内容 = 留言内容; } } 3.增、删、查、改等java部分代码如下: 增加java部分代码如下: String QQ=request.getParameter("QQ号"); String rname=request.getParameter("好友昵称"); String sql="insert into QQ表(QQ号,好友昵称) values(?,?)";
38、 Connection conn=DB.getConn(); PreparedStatement pstmt = null; pstmt = DB.prepareStmt(conn, sql); try { pstmt.setString(1,QQ); pstmt.setString(2,rname); DB.executeUpdate(pstmt); } catch (SQLException e) { e.printStackTrace(); } request.getRequestDispatche
39、r("selectqq.jsp").forward(request, response); 删除操作的部分代码如下: String QQ号=new String(request.getParameter("QQ").getBytes("iso-8859-1"), "utf-8"); System.out.println(QQ号); String sql="delete from QQ表 where QQ号=? "; Connection conn=DB.getConn(); PreparedStatement pstmt = null; pstm
40、t = DB.prepareStmt(conn, sql); try { pstmt.setString(1,QQ号); DB.executeUpdate(pstmt); } catch (SQLException e) { e.printStackTrace(); } request.getRequestDispatcher("selectqq.jsp").forward(request, response); 修改操作的部分代码如下: package pzhu.java.servlet; import java.io
41、IOException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import pzh
42、java.DB; public class Updateqq extends HttpServlet{ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServl
43、etResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); String QQ=request.getParameter("QQ号"); System.out.println(QQ); String rname=request.getParameter("好友昵称"); System.out.println(rname); String text=request.getParameter("留言内容");
44、 System.out.println(text); String sql="update QQ表 set 好友昵称=?,留言内容=? where QQ号=?"; Connection conn=DB.getConn(); PreparedStatement psmt=DB.prepareStmt(conn, sql); try { psmt.setString(1,rname); psmt.setString(2,text); psmt.setString(3,QQ); DB.execu
45、teUpdate(psmt); } catch (SQLException e) { e.printStackTrace(); } request.getRequestDispatcher("selectqq.jsp").forward(request, response); } } 4.增删改查的部分JSP代码如下: 1.addqq.jsp代码如下: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
46、 <% String path=request.getContextPath(); %>
48、
49、nter> 2.asqqselect.jsp部分代码:
50、 charset=UTF-8" pageEncoding="UTF-8"%>