JAVAWEB课程设计实验报告

时间:2024.4.20

JAVAWEB课程设计实验报告

目录

第一章  概述.......................................... 3

【实验目的】....................................... 3

【需求分析】....................................... 3

第二章 网上商店结构分析与设计.......................... 3

【前言】........................................... 3

2.1 系统结构图..................................... 4

2.2系统功能分析.................................... 4

第三章 详细设计....................................... 5

3.1数据库设计...................................... 5

3.2  商品模块实现.................................. 6

3.2.1  模块功能实现和关键代码说明................ 6

3.3 用户注册/登录模块实现.......................... 10

3.3.1  模块功能实现和关键代码说明............... 10

3.4  购物车模块实现................................ 13

3.4.1  模块功能实现和关键代码说明............... 13

3.5 结算功能模块.................................. 16

第四章 总结.......................................... 18

【技术总结】...................................... 18

【心得体会】...................................... 18

第一章  概述

【实验目的】

1.掌握java-web网站设计的全过程;

2.进一步熟练Servlet技术、数据库、标签等一般java-web应用技术;

3.掌握整个java-web应用架构、目录结构以及服务器使用。

【需求分析】

1.设计一个较完善的网上军靴商店;

2.账户模块:提供用户注册、登录,考虑用户数量增减,需要用数据库技术;

3.商品显示模块:出于增加销售量考虑,需要有简单广告功能,并提供商品详细参数;推广商品,网站需要对热销商品展示以及商品分类显示、商品查询;

4.订单管理模块、订单详细信息模块:显示已保存的订单的详细信息;

5.购物车模块:添加/删除商品,结帐,显示订单信息。

第二章 网上商店结构分析与设计

【前言】

随着信息化技术在生活中的应用越来越广泛,网上购物也逐渐成为人们的一种生活方式。本系统正是基于这样一种环境下应运而生。本电子商城为前台部分,前台主要实现会员的网上购物业务流程、用户注册、用户资料修改。

本商城主要利用javaservlet技术进行开发,有很强的逻辑性、可扩展性,便于维护。商城界面设计主要实用了CSS,美化了店面。其次本商城设计还使用了JSP技术、JDBC技术、JavaBean技术、css。

2.1 系统结构图

JAVAWEB课程设计实验报告

图2.1  系统整体框图

2.2系统功能分析

  新品上市模块:在首页框架中显示新品列表

  畅销商品模块:在首页框架中显示畅销列表

  购物车模块:显示已点击购买但没结账的商品

  结账模块:直接显示当前订单

  查看商品信息模块:显示当前商品详细信息

商品分类模块:分类显示商品

全部商品模块:显示商品列表

  查询商品模块:搜寻商品,显示商品信息

  用户注册模块:实现用户注册统功能分析

第三章 详细设计

3.1数据库设计

商品表(shoe)

用户表(user)

用户订单表(orderinfo)

3.2  商品模块实现

    3.2.1  模块功能实现和关键代码说明

先由JSP页面发出请求调用mypack包下GetshoeServlet,调用里面的 doGet方法,然后调用db.executeQuery(sql)方法,查询数据库,查到热销商品的列表,保存进requeset对象的resault变量里,然后通过调用取出其中的值,显示到主页面。商品查询模块按商品ID、关键词查询,商品显示模块使用同样方法根据不同条件查询数据库。

 主要代码如下:

 

   protected void doGet(HttpServletRequest req, HttpServletResponse resp)

           throws ServletException, IOException {

       req.setCharacterEncoding("utf-8");

       String typeId = req.getParameter("typeId");

       String shoeId = req.getParameter("shoeId");

       String keyword = req.getParameter("keyword");

       String sql = "select * from shoe";

       String sql1 = "select * from shoe where typeId = ?";

       String sql2 = "select * from shoe where shoeId = ?";

      

       List shoelist = new ArrayList();

       HttpSession session = req.getSession();

       BookDB db = null;

       CachedRowSet result = null;

       try {

           db = new BookDB();

           if(typeId != null){

               if(typeId.equals("0")){

                   result = db.executeQuery(sql);

               }else{

                   result = db.executeQuery(sql1, typeId);

               }

               while(result.next()){

                   Shoe shoe = new Shoe();

                   shoe.setType(result.getString(1));

                   shoe.setShoeId(result.getInt(2));

                   shoe.setName(result.getString(3));

                   shoe.setPrice(result.getFloat(4));

                   shoelist.add(shoe);

               }

               session.setAttribute("shoelist", shoelist);

               resp.sendRedirect(req.getContextPath()+"/catalog.jsp");

           }

           if(shoeId != null){

               result = db.executeQuery(sql2, Integer.parseInt(shoeId));

               if(result.next()){

                   Shoe shoeDetail = new Shoe();

                   shoeDetail.setType(result.getString(1));

                   shoeDetail.setShoeId(result.getInt(2));

                   shoeDetail.setName(result.getString(3));

                   shoeDetail.setPrice(result.getFloat(4));

                   shoeDetail.setSale_amount(result.getInt(5));

                   session.setAttribute("shoedetail", shoeDetail);

               }

               resp.sendRedirect(req.getContextPath()+"/shoedetail.jsp");

           }

           if(keyword != null){

               result = db.executeQuery(sql);

               while(result.next()){

                   if(result.getString(3).contains(keyword)){

                       Shoe shoe = new Shoe();

                       shoe.setType(result.getString(1));

                       shoe.setShoeId(result.getInt(2));

                       shoe.setName(result.getString(3));

                       shoe.setPrice(result.getFloat(4));

                       shoelist.add(shoe);

                   }

               }

               session.setAttribute("shoelist", shoelist);

               resp.sendRedirect(req.getContextPath()+"/catalog.jsp");

           }

       } catch (Exception e) {

           // TODO Auto-generated catch block

           e.printStackTrace();

       }

      

   }

3.3 用户注册/登录模块实现

3.3.1  模块功能实现和关键代码说明

  

先由JSP页面发出请求调用mypack包下UserRegistServlet/UserLoginServlet,调用里面的 doGet方法,然后调用db.executeQuery(sql1, username, password)方法,更新数据库。

 主要代码如下:

登录(UserLoginServlet):

HttpSession session = req.getSession();

       try {

           db = new BookDB();

           result = db.executeQuery(sql1, username, password);

           if (result.next()) {

               user = new User();

               user.setUsername(result.getString(1));

               user.setPassword(result.getString(2));

               user.setMail(result.getString(3));

               user.setTel(result.getString(4));

               session.setAttribute("user", user);

               resp.sendRedirect(req.getContextPath() + "/index.jsp");

           } else {

               resp.sendRedirect(req.getContextPath() + "/login.jsp?statu=no");

           }

注册(UserRegistServlet):

       String username = req.getParameter("username");

       String password = req.getParameter("password");

       String mail = req.getParameter("mail");

       String tel = req.getParameter("tel");

       String sql1 = "select * from user where username = ?";

       String sql2 = "insert into user values(?, ?, ?, ?)";

       BookDB db;

       CachedRowSet result = null;

       try {

           db = new BookDB();

           result = db.executeQuery(sql1, username);

           if(result.next()){

               resp.sendRedirect(req.getContextPath()+"/regist.jsp?statu=no");

           }else{

               db.executeUpdata(sql2, username, password, mail, tel);

               resp.sendRedirect(req.getContextPath()+"/regist.jsp?statu=ok");

           }

3.4  购物车模块实现

    3.4.1  模块功能实现和关键代码说明

                                                             

                                                    

  先由JSP页面发出请求调用org.action包下的findId方法,findId调用DaoImpl包里的findOrderById,把得到的结果,保存到session里取名order1通过orderdetail里取变量得到这个值,显示到主页面。

主要代码如下:

Add()方法:

 public synchronized void add(String shoeId, Shoe shoe) {

    if(items.containsKey(shoeId)) {

        ShoppingCartItem scitem = (ShoppingCartItem) items.get(shoeId);

        scitem.incrementQuantity();

    } else {

        ShoppingCartItem newItem = new ShoppingCartItem(shoe);

        items.put(shoeId, newItem);

    }

    numberOfItems++;

  }

Remove()方法:

 public synchronized void remove(String shoeId) {

    if(items.containsKey(shoeId)) {

        ShoppingCartItem scitem = (ShoppingCartItem) items.get(shoeId);

        scitem.decrementQuantity();

        if(scitem.getQuantity() <= 0)

            items.remove(shoeId);

        numberOfItems--;

    }

  }

Gettotal()方法:

public synchronized double getTotal() {

    double amount = 0.0;

    for(Iterator i = getItems().iterator(); i.hasNext(); ) {

        ShoppingCartItem item = (ShoppingCartItem) i.next();

        Shoe shoe = (Shoe) item.getItem();

        amount += item.getQuantity() * shoe.getPrice();

    }

    return roundOff(amount);

  }

  private double roundOff(double x) {

      long val = Math.round(x*100); // cents

      return val/100.0;

  }

  public synchronized void clear() {

      items.clear();

      numberOfItems = 0;

  }

}

3.5 结算功能模块

从showcart.jsp转到cashier.jsp,调用HandleOrderServlet的db.buyBooks(cart)方法和db.executeUpdata( )方法更新数据库。

主要代码如下:

String sql = "insert into orderinfo values(?, ?, ?, ?, ?)";

        BookDB db;

        try {

            db = new BookDB();

            db.buyBooks(cart);

            db.executeUpdata(sql, orderId,username, cardname, cardnum, payment);

            resp.sendRedirect(req.getContextPath()+"/cashier.jsp?makeorder=ok");

        } catch (Exception e) {

.printStackTrace();

        }

第四章 总结

【技术总结】

1.一个Servlet往往对应了不同的操作,一个对象的增删改查,都放在了一个Servlet里面实现,这样设计可有效减少Servlet数量;

2.对于网页页面效果要求较高的时候,多采用JSP来编写,对于后台处理要求较高时,多采用Servlet。

3.尽量使用和数据库版本一致的驱动,否则jdbc连接可能不正常;

4. 在编写样式表之前一定要注意CSS文档的编码类型一定要和HTML文档的字符集类型一致。

【心得体会】

通过这次课程设计,使我加深了对javaweb应用结构的理解,掌握了javaweb应用设计的流程及各个模块间协同关系,学会了使用css美化个人设计。

更多相关推荐:
课程设计实验报告

C程序设计课程设计说明题目名称学生成绩管理系统学生学号120xx3503037学生姓名张金宝指导老师张玉军马驰20xx年3月书目录第一部分第1题第14题程序代码第二部分学生成绩管理系统题目一需求分析错误未定义书...

课程设计实验报告-模板

成都理工大学课程设计实验报告课程名称程序设计院系信科院数字媒体技术系班级所属小组姓名学号指导教师何建军20xx年月日课程设计要求课程设计的目的检验学生对相应知识体系掌握程度对学生来说是全面展示自己的理论知识掌握...

软件课程设计实验报告个人报告

软件课程设计实验报告个人报告课班成员学一需求分析1引言32预期功能33设计目标4二界面方案设计说明1拟选用的开发平台和工具介绍42系统框图53软件各功能模块划分64模块间的相互关系85开发计划8三详细设计说明1...

课程设计实验报告(史上最全面最详细)

信息科学与技术学院课班设计报告课程名称面向对象程序设计姓名XXXXXXXXXX级126班学号12263716指导教师钱苏斌XXXXXX信息科学与技术学院20xx12程书123456781012131415

课程设计实验报告

XXXXXXXX课程设计报告课题名称带式输送机传动装置设计学院机电工程系专业班级机械设计制造及其自动化学号学生指导老师XXXXXXXXXXXXXXXXXXXXXXXX教务处20xx年7月4日

Java课程设计实验报告

河南机电高等专科学校学生课程设计报告实验课程名称Java程序设计开课实验室实验楼308机房系、部计科系年级11专业班软件技术学生姓名学号开课时间20##至20##学年第一学期《Java程序设计》课程设计报告20…

应用软件课程设计实验报告

《应用软件课程设计》实验报告学院:信息学院专业:计算机科学与技术组长:组员:时间:20##年6月28日《应用软件课程设计》实验报告

ASP课程设计实验报告

目录一课设目的错误未定义书签二设计内容错误未定义书签三具体要求四设计环境错误未定义书签五课程设计时间安排错误未定义书签六设计过程详细设计错误未定义书签1制作过程流程图展示2数据库设计错误未定义书签3留言本界面设...

微机原理课设实验报告最终修订版

河北科技大学课程设计报告学生姓名张德正学号120xx1233专业班级电子信息122班课程名称微型计算机原理及应用技术学年学期20142015学年第1学期同组人员薛小禹应佳捷张念琦张美萍指导教师2014年12月课...

小日历-JAVA课程设计实验报告

JAVA2程序设计课程设计报告设计题目JAVA小日历组件设计专业计算机科学与技术班级09计本班姓名文肇星学号20xx年12月21日目录1设计目标32设计思想33类及对象设计34程序源代码45调试记录146总结1...

课程设计实验报告new

数字信号处理课程设计报告课设题目语音信号变声处理系统院系计算机科学系专业通信工程小组成员郑昌栋杭嘉琪杜天送刘洋周俊颜全稳指导教师方荟闽江学院20xx年12月26日摘要我们每个人的声音不同源于我们的每个人的音色和...

EDA课程设计实验报告

课程设计报告课程名称数字系统与逻辑设计课题名称16*16点阵显示专业通信工程班级1181学号姓名指导教师20##年7月2日《数字系统与逻辑设计》课程设计任务书一、设计目的全面熟悉、掌握VHDL语言基本知识,掌握…

课程设计实验报告(40篇)