竹笋

注册

 

发新话题 回复该主题

网上图书管理系统数据库课设报告 [复制链接]

1#
北京中科白癜风医院 http://pf.39.net/bdfyy/jdsb/180323/6122185.html

课程设计报告

课程名称数据库原理与应用课程设计

选题名称网上书店管理系统

班级xxxxxxxx姓名xxxxx学号xxxxxxxxxxxx

实验组别同组实验者

完成时间年12月19日至年12月26日

指导教师xxxxxx

网上书店管理系统

1系统概述

本题的开发背景:利用网上管理实现虚拟书店的销售、进货、和邮寄操作。如今随着网络的发展,越来越少的人会去实体书店购书,而想要开书店的商家,如果开设一个线下的书店,即将面临的不仅仅是高昂的租房和装修费用,有可能还不赚钱。于是我们想到开发一个网上书店,更方便和我们一样想开书店的人群,也更方便喜欢网购的买家。

2数据库设计

2.1概念结构设计

图2-1E-R图

2.2逻辑结构设计

将E-R图转换后的关系模型应具有4个关系模式:

book(bid,bclass,bname,price,binf,bType)

consumer(cid,cname,password,sex,age,phone)

book_order(oid,cid,bid,num,address,payType,deliver,orderType)

书籍表(书编号,书类别,书名,书价格,书介绍,书类型)

顾客表(顾客编号,顾客名,密码,顾客性别,顾客电话)

订单表(订单编号,书编号,顾客编号,订单数量,订单地址,支付方式,运输方式,订单状态)

2.3物理结构设计

本系统拟采用sqlserver数据库管理系统,在word中将逻辑模型用如下表来实现:

表2-1书籍表(book)2

表2-2顾客表(consumer)

表2-3订单表(book_order)

3实现

3.1建立BookServer数据库及数据表:

createdatabaseBookServer

useBookServer

go

createtablebook

(

bidintnotnullprimarykeyidentity(1,1),

bclassvarchar(50)notnull,

bnamevarchar(50)notnull,

pricefloatnotnull,

binfvarchar(),

bTypeintnotnulldefault1

)

useBookServer

go

createtableconsumer

(

cidintnotnullprimarykeyidentity(1,1),

cnamevarchar(10)notnull,

passwordvarchar(10)notnull,

sexchar(2)notnulldefault男,

ageintnotnull,

phonevarchar(11)notnull,

)

useBookServer

go

createtablebook_order

(

oidintnotnullprimarykeyidentity(1,1),

cidintnotnullforeignkeyreferencesconsumer(cid),

bidintnotnullforeignkeyreferencesbook(bid),

numintnotnull,

addressvarchar()notnull,

payTypevarchar(20)notnull,

delivervarchar(20)default自取,

orderTypevarchar(10)default未发货

)

3.1.1数据库增加原始数据的语句:

INSERTintobook(bclass,bname,price,binf,bType)VALUES(计算机,C语言设计,49.5,学习C语言的程序设计,0)

INSERTintobook(bclass,bname,price,binf,bType)VALUES(计算机,Java程序设计,35.5,java程序设计的学习,1)

INSERTintobook(bclass,bname,price,binf,bType)VALUES(公共知识,大学英语,32.9,学习英语,1)

INSERTintobook(bclass,bname,price,binf,bType)VALUES(公共知识,高等数学,32,学习高等数学的知识,1)

INSERTintobook(bclass,bname,price,binf,bType)VALUES(文学小说,将进酒,,朝堂谋略,1)

INSERTintobook(bclass,bname,price,binf,bType)VALUES(文学小说,伪装学渣,98,校园青春,1)

INSERTintobook(bclass,bname,price,binf,bType)VALUES(文学小说,撒野,86,青春爱情,1)

INSERTintoconsumer(cname,password,sex,age,phone)VALUES(laoban,laoban,女,28,18851120)

INSERTintoconsumer(cname,password,sex,age,phone)VALUES(liuxin,liuxin,女,21,18851133)

INSERTintoconsumer(cname,password,sex,age,phone)VALUES(huangxin,huangxin,女,21,18851)

INSERTintoconsumer(cname,password,sex,age,phone)VALUES(wangjia,wangjia,女,21,18851124)

INSERTintoconsumer(cname,password,sex,age,phone)VALUES(wuxiaolei,wuxiaolei,女,21,18851125)

INSERTintobook_order(cid,bid,num,address,payType,deliver)VALUES(2,3,2,江苏南通,支付宝,自取)

3.2Java语句:

3.2.1建立bookdao

packagecn.dao;

publicclassBookDao{

  privateintbid;

  privateStringbclass;

  privateStringbname;

  privatefloatprice;

  privateStringbinf;

  privateintbOrder;

  publicBookDao(){

  }

  publicintgetbOrder(){

    returnbOrder;

  }

  publicvoidsetbOrder(intbOrder){

    this.bOrder=bOrder;

  }

  publicintgetBid(){

    returnbid;

  }

  publicvoidsetBid(intbid){

    this.bid=bid;

  }

  publicStringgetBclass(){

    returnbclass;

  }

  publicvoidsetBclass(Stringbclass){

    this.bclass=bclass;

  }

  publicStringgetBname(){

    returnbname;

  }

  publicvoidsetBname(Stringbname){

    this.bname=bname;

  }

  publicfloatgetPrice(){

    returnprice;

  }

  publicvoidsetPrice(floatprice){

    this.price=price;

  }

  publicStringgetBinf(){

    returnbinf;

  }

  publicvoidsetBinf(Stringbinf){

    this.binf=binf;

  }

  publicvoidprint(){

    System.out.println(bid+"《"+bname+"》"+bclass+""+binf+"单价:"+price);

  }

}

3.2.2建立orderdao

packagecn.dao;

publicclassOrderDao{

  privateintoid;

  privateintcid;//用户编号

  privateintbid;//书籍编号

  privateStringphone;//收货手机

  privateintnum;//数量

  privateStringaddress;//地址

  privateStringpayType;//付款方式

  privateStringdeliver;//送货方式

  privateStringorderType;//是否已发货

  publicOrderDao(){

  }

  publicOrderDao(intoid,intcid,intbid,Stringphone,Stringaddress,StringpayType,Stringdeliver,StringorderType){

    this.cid=cid;

    this.bid=bid;

    this.phone=phone;

    this.address=address;

    this.payType=payType;

    this.deliver=deliver;

    this.orderType=orderType;

  }

  publicintgetNum(){

    returnnum;

  }

  publicvoidsetNum(intnum){

    this.num=num;

  }

  publicintgetOid(){

    returnoid;

  }

  publicvoidsetOid(intoid){

    this.oid=oid;

  }

  publicStringgetPhone(){

    returnphone;

  }

  publicvoidsetPhone(Stringphone){

    this.phone=phone;

  }

  publicStringgetAddress(){

    returnaddress;

  }

  publicvoidsetAddress(Stringaddress){

    this.address=address;

  }

  publicintgetCid(){

    returncid;

  }

  publicvoidsetCid(intcid){

    this.cid=cid;

  }

  publicintgetBid(){

    returnbid;

  }

  publicvoidsetBid(intbid){

    this.bid=bid;

  }

  publicStringgetPayType(){

    returnpayType;

  }

  publicvoidsetPayType(StringpayType){

    this.payType=payType;

  }

  publicStringgetDeliver(){

    returndeliver;

  }

  publicvoidsetDeliver(Stringdeliver){

    this.deliver=deliver;

  }

  publicStringgetOrderType(){

    returnorderType;

  }

  publicvoidsetOrderType(StringorderType){

    this.orderType=orderType;

  }

  publicvoidprint(){

    System.out.println("订单编号:"+oid+"用户id:"+cid+"书籍id:"+bid+"联系"+phone+"送货  }

}

3.2.3建立userdao

packagecn.dao;

publicclassUserDao{

  privateintcid;//用户编号

  privateStringcname;//用户名

  privateStringpassword;//密码

  privateStringsex;//性别

  privateintage;//年龄

  privateStringphone;//手机

  publicUserDao(){

  }

  publicUserDao(intcid,Stringcname,Stringsex,intage,Stringphone,Stringpassword){

    this.age=age;

    this.cid=cid;

    this.password=password;

    this.cname=cname;

    this.phone=phone;

    this.sex=sex;

  }

  publicStringgetPassword(){

    returnpassword;

  }

  publicvoidsetPassword(Stringpassword){

    this.password=password;

  }

  publicintgetCid(){

    returncid;

  }

  publicvoidsetCid(intcid){

    this.cid=cid;

  }

  publicStringgetCname(){

    returncname;

  }

  publicvoidsetCname(Stringcname){

    this.cname=cname;

  }

  publicStringgetSex(){

    returnsex;

  }

  publicvoidsetSex(Stringsex){

    this.sex=sex;

  }

  publicintgetAge(){

    returnage;

  }

  publicvoidsetAge(intage){

    this.age=age;

  }

  publicStringgetPhone(){

    returnphone;

  }

  publicvoidsetPhone(Stringphone){

    this.phone=phone;

  }

}

3.3增删改查

3.3.1book表的增删改查

packagecn.server;

importjava.sql.Connection;

importjava.sql.ResultSet;

importjava.sql.SQLException;

importjava.sql.Statement;

importjava.util.*;

importcn.dao.BookDao;

publicclassBookServer{

  ConnectiondbConn=null;

  Scannerin=newScanner(System.in);

  Statementstate=null;

  publicBookServer(ConnectiondbConn){

    this.dbConn=dbConn;

    try{

      state=dbConn.createStatement();

    }catch(SQLExceptione){

      //TODOAuto-generatedcatchblock

      e.printStackTrace();

    }

  }

  publicBookDaosetBook(ResultSetres){

    BookDaobook=null;

    try{

      book=newBookDao();

      book.setBid(res.getInt("bid"));

      book.setBname(res.getString("bname"));

      book.setBclass(res.getString("bclass"));

      book.setBinf(res.getString("binf"));

      book.setPrice(res.getFloat("price"));

    }catch(SQLExceptione){

      //TODOAuto-generatedcatchblock

      e.printStackTrace();

    }

    returnbook;

  }

  publicintselectAll(){

    ArrayListBookDaobooks=null;

    try{

      books=newArrayList();

      Stringsql="select*frombookwherebType=1";

      ResultSetres=state.executeQuery(sql);

      while(res.next()){

        BookDaobook=setBook(res);

        books.add(book);

        book.print();

      }

    }catch(SQLExceptione){

      //TODOAuto-generatedcatchblock

      e.printStackTrace();

    }

    returnbooks.size();

  }

  publicvoidaddBook(){

    Stringbname,bclass,binf;

    floatprice;

    System.out.print("请输入书名:");

    bname=in.next();

    System.out.print("请输入书籍分类:");

    bclass=in.next();

    System.out.print("请输入书籍介绍:");

    binf=in.next();

    System.out.print("请输入书籍价格:");

    price=in.nextFloat();

    Stringsql="insertintobook(bclass,bname,price,binf)values("+bclass+","+bname+","+price+","+binf+")";

    try{

      state.executeUpdate(sql);

      System.out.println("增加成功!");

    }catch(SQLExceptione){

      //TODOAuto-generatedcatchblock

      e.printStackTrace();

      System.out.println("增加失败!");

    }

  }

  publicvoidupdateBook(){

    while(true){

      System.out.print("输入要修改单价的书名:");

      Stringbname=in.next();

      intl=selectBookByName(bname);

      if(l1){

        System.out.println("您输入的书籍名称过于模糊,请重新输入!");

      }elseif(l==0){

        System.out.println("查不到这本书,请检查是否输错!");

      }else{

        System.out.print("请输入要修改的单价:");

        floatprice=in.nextFloat();

        Stringsql="updatebooksetprice="+price+"wherebnamelike%"+bname+"%";

        try{

          state.executeUpdate(sql);

          System.out.println("更新成功!");

        }catch(SQLExceptione){

          //TODOAuto-generatedcatchblock

          e.printStackTrace();

          System.out.println("更新失败!");

        }

      }

      System.out.println("是否还需更改,继续更改选择1,否则选择2:");

      intn=in.nextInt();

      if(n==2)

        break;

    }

  }

  publicintselectBookByName(Stringname){

    Stringsql="select*frombookwherebType=1andbnamelike%"+name+"%";

    ArrayListBookDaobooks=null;

    try{

      ResultSetbooksql=state.executeQuery(sql);

      books=newArrayList();

      while(booksql.next()){

        BookDaobook=setBook(booksql);

        books.add(book);

        book.print();

      }

    }catch(SQLExceptione){

      //TODOAuto-generatedcatchblock

      e.printStackTrace();

    }

    returnbooks.size();

  }

  publicvoiddeleteBook(){

    while(true){

      System.out.print("请输入需要删除的书名:");

      Stringbname=in.next();

      inti=selectBookByName(bname);

      if(i1){

        System.out.println("书名较为模糊,请继续输入!");

      }elseif(i==0){

        System.out.println("查无此书!");

      }else{

        Stringsql="updatebooksetbType=0wherebnamelike%"+bname+"%";

        try{

          state.executeUpdate(sql);

          System.out.println("删除成功!");

        }catch(SQLExceptione){

          //TODOAuto-generatedcatchblock

          e.printStackTrace();

          System.out.println("删除失败!");

        }

      }

      System.out.println("是否还需删除,继续删除选择1,否则选择2:");

      intn=in.nextInt();

      if(n==2)

        break;

    }

  }

  publicintselectBuyBooks(){

    Stringsql="selectbname,sum(num)asnumfrombook,book_orderwherebook.bid=book_order.bidgroupbybnameorderbynumdesc";

    intsum=0;

    try{

      ResultSetres=state.executeQuery(sql);

      while(res.next()){

        Stringbname=res.getString("bname");

        intnum=res.getInt("num");

        System.out.println("《"+bname+"》卖出:"+num);

        sum+=num;

      }

    }catch(SQLExceptione){

      //TODOAuto-generatedcatchblock

      e.printStackTrace();

    }

    returnsum;

  }

  publicintseachBook(){

    ArrayListBookDaobooks=null;

    Stringsql="select*frombookwherebType=1and";

    System.out.print("是否按照类别查找(1-yes,2-no):");

    Stringbclass=null;

    if(in.nextInt()==1){

      System.out.print("书籍的类别:");

      bclass=in.next();

      sql+="bclass="+bclass+"and";

    }

    System.out.print("输入要查找的书名:");

    Stringbname=in.next();

    sql+="bnamelike%"+bname+"%";

    try{

      books=newArrayList();

      ResultSetres=state.executeQuery(sql);

      System.out.println("类别:"+bclass+"书名:"+bname+"的查询结果");;

      while(res.next()){

        BookDaobook=setBook(res);

        books.add(book);

        book.print();

      }

    }catch(SQLExceptione){

      //TODOAuto-generatedcatchblock

      e.printStackTrace();

    }

    returnbooks.size();

  }

}

3.3.2order表的增删改查

packagecn.server;

importjava.sql.Connection;

importjava.sql.ResultSet;

importjava.sql.SQLException;

importjava.sql.Statement;

importjava.util.ArrayList;

importjava.util.Scanner;

importcn.dao.OrderDao;

publicclassOrderServer{

  ConnectiondbConn;

  Scannerin=newScanner(System.in);

  Statementstate=null;

  publicOrderServer(ConnectiondbConn){

    this.dbConn=dbConn;

    try{

      state=dbConn.createStatement();

    }catch(SQLExceptione){

      //TODOAuto-generatedcatchblock

      e.printStackTrace();

    }

  }

  publicOrderDaosetOrder(ResultSetres){

    OrderDaoorder=newOrderDao();

    try{

      order.setOid(res.getInt("oid"));

      order.setAddress(res.getString("address"));

      order.setPhone(res.getString("phone"));

      order.setCid(res.getInt("cid"));

      order.setBid(res.getInt("bid"));

      order.setPayType(res.getString("payType"));

      order.setDeliver(res.getString("deliver"));

      order.setOrderType(res.getString("orderType"));

      order.setNum(res.getInt("num"));

    }catch(SQLExceptione){

      //TODOAuto-generatedcatchblock

      e.printStackTrace();

    }

    returnorder;

  }

  publicintselectAllOrder(Integercid){

    Stringsql=

"selectnum,oid,bid,book_order.cid,phone,payType,deliver,orderType,address

frombook_order,consumerwherebook_order.cid=consumer.cid";

    if(cid!=null){

      sql+="andbook_order.cid="+cid;

    }

    ArrayListOrderDaoorders=newArrayList();

    try{

      ResultSetres=state.executeQuery(sql);

      while(res.next()){

        OrderDaoorder=setOrder(res);

        orders.add(order);

        order.print();

      }

    }catch(SQLExceptione){

      //TODOAuto-generatedcatchblock

      e.printStackTrace();

    }

    returnorders.size();

  }

  publicvoidupdateOrder(){

    while(true){

      System.out.print("输入要修改的订单号:");

      intoid=in.nextInt();

      if(selectByOid(oid)==0){

        System.out.println("输入的订单号错误,请重新输入!");

      }else{

        System.out.print("请输入该订单现在的状态:");

        StringorderType=in.next();

        Stringsql="updatebook_ordersetorderType="+orderType+"whereoid="+oid;

        try{

          state.executeUpdate(sql);

          System.out.println("订单状态更新成功!");

        }catch(SQLExceptione){

          //TODOAuto-generatedcatchblock

          e.printStackTrace();

          System.out.println("订单状态更新失败!");

        }

      }

      System.out.println("是否还需修改,继续修改选择1,否则选择2:");

      intn=in.nextInt();

      if(n==2)

        break;

    }

  }

  publicintselectByOid(intoid){

    Stringsql="selectoidfrombook_orderwhereoid="+oid;

    inti=0;

    try{

      ResultSetres=state.executeQuery(sql);

      while(res.next())

        i=res.getInt("oid");

    }catch(SQLExceptione){

      //TODOAuto-generatedcatchblock

      e.printStackTrace();

    }

    returni;

  }

  publicintselectByOrderType(StringorderType){

    ArrayListOrderDaoorders=newArrayList();

    Stringsql=

"selectnum,oid,bid,book_order.cid,phone,payType,deliver,orderType,address

frombook_order,consumer

wherebook_order.cid=consumer.cidandorderType="+orderType+"";

    try{

      ResultSetres=state.executeQuery(sql);

      while(res.next()){

        OrderDaoorder=setOrder(res);

        orders.add(order);

        order.print();

      }

    }catch(SQLExceptione){

      //TODOAuto-generatedcatchblock

      e.printStackTrace();

    }

    returnorders.size();

  }

  publicvoiddeleteOrder(){

    while(true){

      System.out.print("输入需要删除的订单编号:");

      intoid=in.nextInt();

      if(selectByOid(oid)==0){

        System.out.println("查不到此订单号!");

      }else{

        Stringsql="deletefrombook_orderwhereoid="+oid;

        try{

          state.executeUpdate(sql);

          System.out.println("订单信息删除成功!");

        }catch(SQLExceptione){

          //TODOAuto-generatedcatchblock

          e.printStackTrace();

          System.out.println("订单信息删除失败!");

        }

      }

      System.out.println("是否还需删除,继续删除选择1,否则选择2:");

      intn=in.nextInt();

      if(n==2)

        break;

    }

  }

  publicvoidaddOrder(intcid){

    System.out.println("创建订单需要您提供相关信息:");

    System.out.print("购买书籍的编号:");

    intbid=in.nextInt();

    floatprice=-1;

    Stringsql="selectpricefrombookwherebid="+bid;

    try{

      ResultSetres=state.executeQuery(sql);

      while(res.next())

        price=res.getFloat("price");

    }catch(SQLExceptione){

      //TODOAuto-generatedcatchblock

      e.printStackTrace();

    }

    if(price==0){

      System.out.print("书籍编号输入错误,找不到该编号的书籍!");

      return;

    }

    System.out.print("输入购买的数量:");

    intnum=in.nextInt();

    System.out.print("请选择取货形式(自取,邮寄):");

    Stringdeliver=in.next();

    System.out.print("请选择付款方式(支付宝,

分享 转发
TOP
发新话题 回复该主题