数据库课程设计报告——网上书店系统

时间:2024.3.31

网上书店网站实验报告

1、项目说明

网上书店:顾名思义,网站式的书店。是一种高质量,更快捷,更方便的购书方式。网上书店不仅可用于图书的再线销售,也有音碟、影碟的在线销售。而且网站式的书店对图书的管理更加合理化,信息化。售书的同时还具有书籍类商品管理、购物车、订单管理、会员管理等功能,非常灵活的网站内容和文章管理功能。但网上书店的真实性是消费者的最大顾虑,这也是网上书店还不被大多数消费者所接受的原因之一。

 在网上书店买书,可以查到所买图书的更多信息,因为网上书店是一个网站,它有它独特的售书方式和功能。如用户注册会员功能等,会员类型有:高级会员、金牌会员等。有的网上书店有会员积分设置,如达到一定积分时自动成为高级会员,高级会员会有优惠和特别的服务。还有就是支付方式了,一般网上书店都有三种类型的支付方式:汇款类支付、在线支付、其他支付方式,其中在线支付只要到支付平台开户后,将所获开户信息填入即可。当在网上书店购书后,用户所购图书都在网站上有记录,方便用户查询。

2、需求分析

网上书店和现实书店区别比较:

  网上书店的优势:涉及范围广,经营成本低,劣势:信用度如果低,影响生意;

  现实书店的优势:直观,信用度高。劣势:涉及范围有限,经营成本高;

现在有部分现实书店已经开始从网上书店进货了。本系统开发的目的是为

了学习这样去做一个交互式的网页以及了解这种强大的网络编程工具,方

便客户端和浏览器端之间的交流。

数据库采用实用,易学的SQL Sever 2000,以Tomcat作为JSP的WEB服务器,XP作为系统运行平台。

3、总体设计

(1) 实验目的:
1.利用本次机会来了解JSP一般的技术及使用模式,并能够使用这种技术,建立  一个简单的论坛网站。
2.通过本次学习,使自己巩固所学过的书本理论知识,加深对相关内容的理解。

(2)   实验要求:
要基本了解JSP编程技术,学会使用JSP开发一个小型网站的基本知识,巩固数据库基本理论,并用于开发一个小型的网站。
三技术简介
  JavaServer Pages(JSP)是一种实现普通静态HTML和动态HTML混合编码的技术,许多由CGI程序生成的页面大部分仍旧是静态HTML,动态内容只在页面中有限的几个部分出现。但是包括Servlet在内的大多数CGI技术及其变种,总是通过程序生成整个页面。JSP使得我们可以分别创建这两个部分。

3)系统设计特点:
    网上书店具有:

   (1)提供了全面,详细的图书购物入口,轻松实现快捷购买。

   (2)可以通过不同分类进行导航,用最方便,最快捷的方式找到你需要的图书。

   (3)提供了图书购物所需的各种工具与网站,满足你的图书购买需求。

 (4)公正性很强 (大站.专站.小站)排列顺序分明.公平公正的图书网址TOP排行

4、数据库设计

本系统使用数据库引擎为HSQLDB。数据库文件SIMS(student information management system)。该系统表:

1 图书基本信息表(book)
2 图书分类基本信息表(bookcat)
3 客户基本信息表(storeuser)
4 订单信息表(orders)
5 订单条目详细信息表(orderdetails)
==   1   ===========================================
字段名 描述                   类型
id 图书编号                   int
catid 图书分类编号 int
name 图书名称                   varchar
price 图书价格                   int
saleprice 销售价格                   int
descript 图书介绍                   varchar
author 图书作者                   varchar
contents 图书目录                   varchar
image 图书封面图片存放路径 varchar
==   2   ===========================================
字段名 描述                   类型
id 图书分类编号 int
catname 图书分类名称 varchar
==   3   ===========================================
字段名 描述                   类型
username 用户名                   varchar
password 密码                   varchar
name 客户姓名                   varchar
tel 客户电话                   varchar
address 客户地址                   varchar
email 客户电子邮件地址 varchar
==   4   ===========================================
字段名 描述                   类型
id 订单编号 int
username 订单对应用户名 varchar
time 产生订单的时间 smalldatetime
delivery 订单对应送货方式 varchar
payment 订单对应付款方式 varchar
==   5   ===========================================
字段名 描述                   类型
orderid 订单编号                   int
bookid 图书编号                   int
count 订购数量                   int
price 该条目对应价格 int

建立数据库

1、  

2、     数据库连接

package s2jsp.lg.dao.impl;

import java.sql.*;

public class BaseDao {   

    public final static String DRIVER = "com.microsoft.jdbc.sqlserver.SQLServerDriver";                 // 数据库驱动

    public final static String URL    = "jdbc:microsoft:sqlserver://localhost:1433;DataBaseName=bbs";   // url

    public final static String DBNAME = "";                                                           // 数据库用户名

    public final static String DBPASS = "sa";                                                           // 数据库密码

   

    /**

     * 得到数据库连接

     * @throws ClassNotFoundException

     * @throws SQLException

     * @return 数据库连接

     */

    public Connection getConn() throws ClassNotFoundException, SQLException{

        Class.forName(DRIVER);                                                    //注册驱动

        Connection conn = DriverManager.getConnection(URL,DBNAME,DBPASS);        //获得数据库连接

        return conn ;                                                            //返回连接

    }

   

    /**

     * 释放资源

     * @param conn 数据库连接

     * @param pstmt PreparedStatement对象

     * @param rs 结果集

     */

    public void closeAll( Connection conn, PreparedStatement pstmt, ResultSet rs ) {

        /*  如果rs不空,关闭rs  */

        if(rs != null){

            try { rs.close();} catch (SQLException e) {e.printStackTrace();}

        }

        /*  如果pstmt不空,关闭pstmt  */

        if(pstmt != null){

            try { pstmt.close();} catch (SQLException e) {e.printStackTrace();}

        }

        /*  如果conn不空,关闭conn  */

        if(conn != null){

            try { conn.close();} catch (SQLException e) {e.printStackTrace();}

        }

    }

   

    /**

     * 执行SQL语句,可以进行增、删、改的操作,不能执行查询

     * @param sql  预编译的 SQL 语句

     * @param param  预编译的 SQL 语句中的‘?’参数的字符串数组

     * @return 影响的条数

     */

    public int executeSQL(String preparedSql,String[] param) {

        Connection        conn  = null;

        PreparedStatement pstmt = null;

        int               num   = 0;

       

        /*  处理SQL,执行SQL  */

        try {

            conn = getConn();                              // 得到数据库连接

            pstmt = conn.prepareStatement(preparedSql);    // 得到PreparedStatement对象

            if( param != null ) {

                for( int i = 0; i < param.length; i++ ) {

                    pstmt.setString(i+1, param[i]);         // 为预编译sql设置参数

                }

            }

            num = pstmt.executeUpdate();                    // 执行SQL语句

        } catch (ClassNotFoundException e) {

            e.printStackTrace();                            // 处理ClassNotFoundException异常

        } catch (SQLException e) {

            e.printStackTrace();                            // 处理SQLException异常

        } finally {

            closeAll(conn,pstmt,null);                     // 释放资源

        }

        return num;

    }

}

5.详细设计                                                                                                                   (1) JSP概述                                                                                        

 网上书店系统中把数据库的连接参数写在dbconn.properties文件中,再用一个Java类来生成一个数据库连接对象以供其他程序使用。 网上书店的首页显示的内容最多,但源代码并不长,原因是:一是因为一些多个页面共用的代码被放入另一个文本文件或JSP文件中,在需要的地方包含进来,减少了代码量,提高了代码的可复用程度;二是系统较好地进行了模块化的设计与开发,在JSP页面中很少用到Java代码,所有业务逻辑都用Java类来完成,JSP页面中只是简单的展现数据。JSP是Sun公司在Java和Servlet技术基础上推出的一种新型的服务器端动态脚本技术。它已经逐渐成为架设电子商务网站的主流技术。它的以下特点决定了本系统为什么采用JSP作为Web应用程序的开发工具。

⒈JSP将内容的生成和显示进行分离

2.JSP程序运行在服务端

3.高性能的编译运行机制

4.继承了Java的跨平台特性

5.可重用组件

6.可扩展标签库

7.强大的数据库支持

      ( 2 ) 封装的操作;

           */
 public class bookTypeOPBean extends dbOpertaion{
    public ArrayList bookTypeArray=new ArrayList();
    public String bookTypeIdStr=new String("");
    /**。

   3构造函数,将所有书藉类型信息查询出来:

*/


    public bookTypeOPBean() {
        String sqlString="select * from book_type";
        ResultSet rs=this.executeQuery(sqlString);
        try{
            int i=0;
            while(rs.next()){
                bookTypeBean bookType=new bookTypeBean();
                bookType.setBookTypeId(rs.getInt("type_id"));
                bookType.setBookTypeName(rs.getString("type_name"));
                bookTypeArray.add(i,bookType);
                i++;
            }
        } catch (SQLException e) {
            e.printStackTrace();
            bookTypeArray=null;
        }
    }
    /**

(4)   通过书藉分类名称查找类型信息

*/


    public bookTypeBean selectBookTypeByName(String bookTypeName){
        if(bookTypeName==null) return null;
        bookTypeBean bookType=new bookTypeBean();
        String sqlString="select * from book_type where type_name= '"+bookTypeName+"'";
        ResultSet rs=this.executeQuery(sqlString);
        try{
            int i=0;
            if(rs.next()){
                bookType.setBookTypeId(rs.getInt("type_id"));
                bookType.setBookTypeName(rs.getString("type_name"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return bookType;
    }
    /**

(5)   根据属性bookTypeIdStr查找书藉类型信息

*/
    public bookTypeBean selectBookTypeId(){
        int bookTypeId=0;
        if(bookTypeIdStr!=null&&bookTypeIdStr.length()>1)
            try{
                bookTypeId=Integer.parseInt(bookTypeIdStr);
            }catch (Exception e) {
                e.printStackTrace();
            }
        if(bookTypeId==0) return null;
        bookTypeBean bookType=new bookTypeBean();
        String sqlString="select * from book_type where type_id="+bookTypeId;
        ResultSet rs=this.executeQuery(sqlString);
        try{
            if(rs.next()){
                bookType.setBookTypeId(rs.getInt("type_id"));
                bookType.setBookTypeName(rs.getString("type_name"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return bookType;
    }
    /**

(6) 更新书藉分类:

* @param bookTypeId:类型ID号
     * @param bookTypeName:类型名称
     * @return int:返回更新的行数
     */
    public int updateBookType(int bookTypeId,String bookTypeName){
        if(bookTypeId==0||bookTypeName==null||bookTypeName.length()<=0)
            return 0;
        //------构造SQL语句------
        String sqlString="update book_type set type_name='"+bookTypeName +
         "' where type_id="+bookTypeId;
        //------执行SQL语句------
        int i=this.executeUpdate(sqlString);
        return i;
    }
    /**

7新增一个书藉类型:

*/
    public int insertBookType(String bookTypeName){
        int i=0;
        //------构造SQL语句------
        String sqlString="insert into book_type(type_name) values('"+bookTypeName+"')";
        //------执行SQL语句------
        i=this.executeUpdate(sqlString);
        return i;
    }
    /**

8删除一个书藉类型:

* @param bookTypeId:要删除的类型ID号
     * @return int:返回删除的类型个数
     */
    public int deleteBookType(int bookTypeId){
        int i=0;
        //------构造SQL语句------
        String sqlString="delete book_type where type_id="+bookTypeId;
        //------执行SQL语句------
        i=this.executeUpdate(sqlString);
        return i;
    }
    public ArrayList getBookTypeArray() {
        return bookTypeArray;
    }
    public void setBookTypeArray(ArrayList bookTypeArray) {
        this.bookTypeArray = bookTypeArray;
    }
    public String getBookTypeIdStr() {
        return bookTypeIdStr;
    }
    public void setBookTypeIdStr(String bookTypeIdStr) {
        this.bookTypeIdStr = bookTypeIdStr;
    }
}

(9)网上书店系统中所有的报错信息都保存在一个“.properties”文件中,文件内容如下:book.bookNameNull=书藉名没有输入!
  book.typeIdNull=书藉所属类型没有选择!
  book.priceNotFloat=价格不为数字!
  book.priceRebateNotFloat=折扣输入不正确!
  book.publishDateError=出版日期输入有误!
  book.pageCountError=页数不为数字!
  addbook.insertError=插入新书时出错!
  updatebook.updateError=更新书藉信息时出错!
  bookType.bookTypeHaved=书藉类型已存在!
  bookType.insertError=插入新的书藉类型时出错!
  booktype.updateError=更新书藉类型信息时出错!
  user.userNameNull=用户名输入为空!
  user.userPasswordNull=用户密码输入为空!
  user.passwordNotEqual=两次输入的密码不一致!
  user.insertError=插入新的用户时出错!
  user.certCodeError=验证码不对!
  user.userError=用户名或密码输入有误!
  user.sessionError=用户会话已失效!
  orderform.newError=生成新的订单时出错!
  orderform.saveError=保存订单时出错!

(10):CREATE TABLE members (

       member_id            int auto_increment primary key,

       member_login         varchar(20) NOT NULL,

       member_password      varchar(20) NOT NULL,

       member_level         int NOT NULL DEFAULT 1,

       first_name           varchar(50) NOT NULL,

       last_name            varchar(50) NOT NULL,

       email                varchar(50) NOT NULL,

       phone                varchar(50) NULL,

       address              varchar(50) NULL,

       notes                text NULL,

       card_type_id         int NULL,

       card_number          varchar(50) NULL

);

(11):CREATE TABLE items (

       item_id              int auto_increment primary key,

       category_id          int NOT NULL,

       name                 varchar(255) NOT NULL,

       author               varchar(100) NULL,

       price                float NOT NULL,

       product_url          varchar(255) NULL,

       image_url            varchar(100) NULL,

       notes                text NULL,

       is_recommended       tinyint NULL DEFAULT 0,

       rating               int default 0,

       rating_count         int default 0

);

6 用户手册:

(1)   本程序运行环境为JDK1.4.2,可在windows98/windows2000/windows XP下运行。

(2)   为了发布应用程序,我把本JAVA应用程序中涉及到的类文件压缩成一个JAR文件,名为StudentManager.jar,现在只要将StudentManager.jar文件拷贝到任何一个安装了JAVA运行环境(版本应为1.4.0及以上)的计算机上,双击鼠标就可以运行JAVA应用程序了。但如果计算机上安装了中文版的WinRAR解压缩软件并将该JAR文件与压缩软件做了关联,WinRAR解压缩软件会自动运行进行解压缩操作,使的JAVA程序无法运行。因此,创建了一个StudentManager.bat的批处理文件。所以,只要双击这个批处理文件就可以直接运行本程序了,省去了每次运行程序都要运行JDK软件的麻烦。

     

7.参考书籍

1java面向对象程序设计 (清华大学出版社)

2. java课程设计 (清华大学出版社)

3. java信息系统设计与开发实例 (机械工业出版社)

8.心得体会:

      通过这次课程设计我对JAVA面向对象的编程语言有了深刻的了解,对JAVA语言的简洁性和高效性有了自己进一步的体会,同时对JAVA的一些设计模式也有了一个大致的认识与了解,这门语言对于异常的控制非常有用,写出来的程序有更高的容错能力,系统稳定性也很好。

  在整个程序的设计过程中,对软件编程的流程,包括需求分析、概要设计、详细设计等步骤又有了一个新的认识,尤其是需求分析的好坏在整个程序的设计中有着举足轻重的作用。需求分析没有做好,后面的步骤很容易受到负面的影响。

  另外,在程序设计过程中,我们加强了团队的合作,了解了团队精神对于程序设计是至关重要的,这将会对我们以后的工作有很大的启发。

八.教师评语

更多相关推荐:
网上书店管理系统-课程设计报告

课程设计课程名称数据库及其应用题目名称网上书店管理系统学生学院专业班级学号学生姓名指导教师20xx年1月10日摘要本文介绍了一个基于ClientServer模式的网上书店管理系统的设计与实现运用VisualBa...

web课程设计报告--网上书店

ASPNET课程设计题目网上书店管理系统院系计算机信息与技术系学科专业计算机科学与技术学号学生姓名指导教师20xx年06月7日目录一课程设计题目2二需求分析2三概要设计2四详细设计5五运行结果7六课程设计总结1...

课程设计报告(网上书店网站)

管理工程系信息管理与信息系统专业课程设计报告课题名称辅考网电子商城姓名管娅学号20xx123115课题组长梁杨情小组成员李康管娅李艳杨昆妍陈红梅填报日期20xx年12月15日目录1开发背景32需求分析错误未定义...

网上书店数据库课程设计报告

数据库课程设计报告题目网上书店专业班级学号姓名指导老师1前言网上售书是信息社会发展的必然要求国际互联网的开通为信息社会的飞速发展创造了条件因此网上售书成为各国发展电子商务的首选目标随着网络的发展网上售书的发展就...

网上书店课程设计

华科学院数据库课程设计目录第一章系统概述111系统开发背景112系统开发意义1第二章系统需求分析221系统功能要求222需求分析概述223系统层次划分424系统数据流程图525数据字典5第三章系统总体设计831...

网上书店C#课程设计报告

西南大学荣昌校区课程教学实习档案表系部信息管理系学生姓名罗春彬专业计算机科学与技术学号2220xx6020xx089年级20xx级计科三班指导教师肖兴江信息管理系制表二一三年五月十日课程名称C课程设计实习周数1...

课程设计试作报告(网上书店)

沈阳师范大学软件学院小学期课程设计报告课程名称Java程序设计课程设计名称在线书店动态网站设计试作教师xxx学院名称软件学院时间20xx611至20xx629沈阳师范大学软件学院制20xx年11月1日目录一课程...

网上书店课程设计任务书

数据库技术课程设计任务书一设计题目网上书店二设计目的1使学生更深入地理解和掌握该课程中的有关基本概念程序设计思想和方法2培养学生综合运用所学知识独立完成课题的能力3培养学生勇于探索严谨推理实事求是有错必改用实践...

数据库课程设计——网上书店

数据库原理与应用20xx20xx学年第1学期实验八数据库设计姓名学号班级指导教师计算机科学与工程学院一系统需求分析11系统要求1提供了全面详细的图书购物入口轻松实现快捷购买2可以通过不同分类进行导航用最方便最快...

《网页设计与网站建设课程设计》报告

湖北汽车工业学院网页设计与网站建设课程设计报告网站名称森宿天猫旗舰店班级T11531学号20xx0530130姓名lj20xx一网页设计主题电子商务类的网站如果想一眼吸引到客户首先网页打开速度不能过太慢过慢会使...

ASP课程设计报告

ASP动态网站课程设计汽车时代网姓名张唯专业电子商务班级1202班学号12433127152734指导老师谢迎辉20xx年6月19日1目录一课程设计的目的3二课程设计的要求3三系统需求分析设计31需求分析32可...

web课程设计报告

电子商务网站设计Web设计与编程导论课程设计报告学院班级姓名学号指导教师湖南农业大学电子商务系20xx年11月14日设计名称网站重构日期20xx年11月7日设计内容对中华人民共和国国家统计局首页进行一个页面的网...

网上书店课程设计报告(16篇)