1、基于MVC网上书店管理系统的设计与实现毕业设计论文 基于MVC网上书店管理系统的设计与实现绪论随着社会的不断发展,网络技术的不断进步,网络逐渐的融入了人们的生活之中。网络的方便、快捷、便宜、全面等优点也逐渐的在各个领域中所体现出现。因而越来越多的人利用网络的资源来推销自己的产品或者购买自己喜欢的商品。科技的快速发展,导致了人们知识的匮乏,想要增长自己的知识,必不可少的一个途径,就是多看书 ,看好书。但书籍有好有坏有贵有便宜,怎样才能快速了解它的详细信息呢?因而我开发了一个网上书店系统。本系统既能提供卖家在网上销售图书,也支持买家在网上快速浏览图书信息,并购买自己喜欢的图书,从而形成买卖双方互赢
2、的局面。1 平台简介1.1 开发平台本系统主要是使用JSP+CSS+HTML开发系统界面,并且结合JavaServlet实现局部刷新以及使用JDBC和Oracle数据库进行数据交互。1.1.1 服务器端Windows Server/XP/WIN 7 Oracle 10g或以上版本1.1.2 客户端 Windows 98/Server/XP/WIN 7 Internet Explore 8.0以上。1.1.3系统开发工具Eclipse、Dreamweaver、Tomcat1.2制作工具及系统相关技术介绍用Dreamweaver作为系统开发的辅助工具,运用JSP+HTML+CSS设计系统的表现层。
3、使用JS实现动态部分,Oracle提供的数据层。1.2.1 JSP简介JSP将网页逻辑层与表现层分离,降低各个模块间的耦合度,利用系统开发。JSP页面由HTML代码和Java脚本所组成。用户第一次访问JSP页面时,Web服务器会将其编译成Javaservlet,以后用户如果再次访问此页面时,就会直接访问编译后的Javaservlet文件而无需再次编译。服务器会将响应的信息,即HTML页面返回到客户端的浏览器上,直观的显示给用户。1.2.2使用JSP作为开发工具的原因(1)将逻辑层和表现层进行分离。(2)它强调组件的可重用性。2 系统分析2.1 系统的需求分析开发本系统目的是为了方便用户购书图书
4、以及管理员管理图书。开发的系统应该操作简单,如果系统过于复杂,就降低了用户的可使用价值。2.2 系统的可行性分析2.2.1 技术可行性只要能够上网,就可以使用本系统。该系统是使用JSP+CSS+HTML开发的系统界面和Oracle 10g创建的数据库,。2.2.2 经济可行性此系统可以运行在能够上网的电脑上。并且使用的开发工具都是免费的,所以在经济上是完全可行的。2.2.3 操作可行性系统界面的设计模式符合人们的习惯,系统操作比较方便易学。而且所有网页的设计都比较清新、简洁、合理,不会让用户感到任何的视觉疲劳。系统可操作性比较高。3 网上书店总体设计3.1 系统的总体设计网上书店系统由注册登录
5、模块、用户模块、管理员模块和退出系统模块四大模块组成,并且各个大模块下又包含一些小模块。下面介绍各个功能模块:(1) 注册登录模块用户首次使用本系统时,必须先注册一个新的账户,用户注册成功后才能登录本系统并进行购买图书的操作,管理员亦之。(2) 用户模块 图书模块用户可以通过首页的分类导航菜单查看书籍信息,也可以通过搜索的方式:按图书的书名、类型、价格、出版社、作者、数量、简介、销售量等任一种或者多种条件进行模糊查询,还可以点击书名或者书的图片快速浏览此书的详细信息。 购物车模块用户购书时,点击“加入购物车”按钮,系统会将此图书放入购物车中。在购物车中,用户还可以对其进行查看、删除的操作。 收
6、藏夹模块用户浏览书籍时,按下“收藏宝贝”,就可以将书籍放入自己的收藏夹,便于购买。在收藏夹中,用户还可以对其进行查看、删除、购买操作。 地址管理模块用户购买书籍时,需要填写邮寄地址,同时也可以对其进行修改和删除的操作。(3)管理员模块登录本系统时选择管理员登录后,才能对菜单管理、交易管理、宝贝管理和订单管理进行相关的操作。 交易管理交易管理包括已卖宝贝管理和评价管理两部分。a、已卖宝贝管理 管理员可以查看已经卖出的宝贝信息,从而总结出消费者更喜欢哪类书籍。b、评价管理管理员可以查看用户对书籍的评价情况。 宝贝管理宝贝管理包括发布宝贝、宝贝修改、宝贝下架、热销宝贝、新到宝贝和所有宝贝。a、发布宝
7、贝管理管理员可以添加新书,包括书籍的书名、类别、单价、出版社、作者、库存、简介和图片等信息。b、宝贝修改管理管理员可根据ISBN、图书的名称、类型、出版社、作者等任一种或多种条件进行模糊查询。在查询的结果中,可以对图书进行修改操作。c、宝贝下架管理管理员可根据ISBN、是否为新书、是否为热书、图书的名称、类型、价格、销量、库存、出版社、作者等任一种或多种条件进行模糊查询。在查询的结果中,对图书进行删除操作。d、热销宝贝管理管理员可以快速查看图书的销售信息,从而了解用户对各类书籍的喜爱程度。e、新到宝贝管理管理员可以查看新到的书籍情况。f、所有宝贝管理管理员可根据图书的销量、库存、出版社、作者等
8、任一种或多种条件进行模糊查询,从而更加快速的了解图书的情况。 订单管理订单管理包括发货管理和所有订单管理两部分。a、发货管理管理员通过订单的信息进行发货,如果订单数量较多也可以进行批量发货。b、所有订单管理管理员可以根据宝贝名称、成交时间、买家昵称、订单状态、订单编号和评价状态任一种和多个条件作为查询条件进行查询,了解订单的详细信息。(4)退出系统模块系统不使用时,直接退出本系统。3.2系统的功能结构3.2.1系统功能模块图网上书店系统主要包括注册登录模块、用户模块、退出系统模块和管理员模块;其中用户模块又包括图书模块、购物车模块、收藏夹模块和地址管理模块;管理员模块包括菜单管理、交易管理、宝
9、贝管理和订单管理,如图3-1所示。退出系统模块图3-1系统功能模块图3.2.2 系统流程图登录系统时,如果用户没有账号,需要先注册一个新的账号,登录时,会进行验证,验证失败会给予提示,成功后进入系统主页面,然后用户就可以查看图书信息,购买图书和修改用户信息的操作。查看图书信息时,可以直接在主页面进行查看,也可以在购物车或者收藏夹中进行查看;购买图书时,可以将图书加入购物车或者收藏夹进行购买。如图3-2所示图3-2系统流程图3.2.3 购书流程图用户登录网上书店系统后,可以通过首页的图书分类导航、热销排行、新书到店或查询的方式找到想购买的图书,然后将想要购买的图书加入到购物车或者收藏夹中,点击购
10、买按钮,生成订单后,并付款。当管理员登录本系统后,通过查看已经付款的订单,从而进行发货(或批量发货),最后用户通过查看已买的宝贝,状态为已发货的,对其进行确认收货,这样购书的流程就算完成了,如图3-3所示 图3-3购书流程图4网上书店详细设计4.1 数据库设计 (1)用户信息表user如表4-1所示:字段类型是否为空默认字段含义IDnumber否用户ID(主键),自增Usernamevarchar2(30)是用户名PWDvarchar2(30)是用户密码PhoneVarchar2(30)是null用户电话EmailVarchar2(30)是null用户邮箱SexVarchar2(100)是nu
11、ll用户性别Agenumber(10)是用户年龄JobVarchar2(20)是用户职业UserImageVarchar2(100)是用户头像表4-1 用户信息表user(2)管理员信息表admin的定义如表4-2所示:字段类型是否为空默认字段含义IDnumber否管理员ID(主键),自增AdminNamevarchar2(30)是admin管理员姓名PWDvarchar2(20)是admin管理员密码表4-2 管理员信息表admin(3)收藏夹信息表favorite的定义如表4-3所示:字段类型是否为空默认字段含义IDnumber否收藏ID(主键),自增UserNamevarchar2(20
12、)是用户名称ISBNvarchar2(30)是国际标准书号BookNamevarchar2(30)是图书名称BookImagevarchar2(100)是null图书图片表4-3 收藏夹信息表favorite(4)书籍信息表book的定义如表4-4所示:字段类型是否为空默认字段含义ISBNvarchar2(30)否图书编号(主键),自增BookNamevarchar2(30)是图书名称BookImagevarchar2(20)是null图书图片BookTypevarchar2(30)是图书类型Pricenumber是图书单价Publishvarchar2(30)是出版社Authorvarcha
13、r2(30)是作者Amountnumber是库存Introdctionvarchar2(500)是null图书简介IsNewnumber是是否为新书IsHotnumber是是否为热书Salesnumber是销量表4-4 书籍信息表book(5)购物车信息表cart的定义如表4-5所示:字段类型是否为空默认字段含义IDnumber否购物车ID(主键),自增UserNamevarchar2(20)是用户名称ISBNvarchar2(30)是国标标准书号Numnumber是购书数量BookNamevarchar2(30)是图书名称BookImagevarchar2(100)是null图书图片Pric
14、enumber是图书单价表4-5 购物车信息表cart(6)订单表orders的定义如表4-6所示:字段类型是否为空默认字段含义OrderIDvarchar2(30)否订单编号(主键),自增ISBNvarchar2(50)是图书编号Pricenumber是null图书单价Numnumber是购书数量Totalnumber是总价UserNamevarchar2(30)是用户名Receivervarchar2(30)是收件人名称Addressinfovarchar2(30)是地址PostCodevarchar2(20)是邮编Phonenumber是电话号码TimeDate是时间IsSendnumb
15、er是是否发货IsReceivenumber是是否收货IsPaynumber是是否付款IsAssessnumber是是否评价BookNamevarchar2(50)是图书名称表4-6 订单表orders(7)收藏夹信息表favorite的定义如表4-7所示:字段类型是否为空默认字段含义IDnumber否评价ID(主键),自增Contentvarchar2(200)是null评价内容Scorenumber是宝贝打分UserNamevarchar2(20)是用户名称ISBNvarchar2(20)是评价的图书ISBNOrderIDvarchar2(20)是订单编号Timedate是订单时间表4-7
16、 收藏夹信息表favorite(8)地址信息表address的定义如表4-8所示:字段类型是否为空默认字段含义IDnumber否地址ID(主键),自增Receivervarchar2(20)是收货人名称AddressInfovarchar2(20)是地址信息Phonevarchar2(20)是联系方式PostCodevarchar2(100)是邮编UserNamevarchar2(20)是用户名称Provincevarchar2(20)是省Cityvarchar2(20)是市Areavarchar2(20)是区Streetvarchar2(20)是null街道表4-8 地址信息表address
17、4.2数据库连接设计本系统分为登录与注册模块、用户模块、管理员模块和系统退出模块四部分。其中用户模块主要包括用户信息的修改、图书管理、地址管理、购物车和收藏夹;管理员模块包括菜单管理、交易管理、宝贝管理和订单管理。网上书店采用Oracle作为后台的数据库。我们建立了一个名为xe的数据库用于存放数据,主要代码如下:public class DBUtils public static Connection conn = null; public static PreparedStatement pstmt = null; public static ResultSet rs = null; pub
18、lic static String username; public static String password; public static String driver; public static String url; public static void init() InputStream fis = null; try fis = DBUtils.class.getClassLoader().getResourceAsStream(dbconn.properties); Properties pp = new Properties(); pp.load(fis); usernam
19、e = pp.getProperty(username); password = pp.getProperty(password); driver = pp.getProperty(driver); url = pp.getProperty(url); Class.forName(driver); conn = DriverManager.getConnection(url,username,password); catch (Exception e) e.printStackTrace(); 在src下创建dbconn.properties文件:内容如下:username=systempas
20、sword=rootdriver=oracle.jdbc.driver.OracleDriverurl=jdbc:oracle:thin:localhost:1521:xe4.3登录模块设计4.3.1 用户登录用户登录时,如果用户输入的内容不符合要求时或者不输入任何内容时都会给予相应的提示信息,如图4-1所示图4-1用户登录图主要代码如下:protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException String path
21、= request.getContextPath(); String username = request.getParameter(username); String pwd = request.getParameter(pwd); UserService userService = new UserServiceImpl(); AdminService adminService=new AdminServiceImpl(); String role=request.getParameter(role);/获取角色 0普通用户 1管理员 if(role.equals(0)/普通用户 User
22、 user = userService.findByUserName_pwd(username, pwd);/根据用户名和密码匹配用户 User user1=userService.findByUserName(username);/根据用户名匹配用户 if(user!=null) request.getSession().setAttribute(user, user); String value = user.getUserName()+:+MD5.calcMD5(user.getPwd();/ Cookie cookie = new Cookie(path, value); cookie
23、.setMaxAge(10*60); cookie.setPath(request.getContextPath(); response.addCookie(cookie); request.setAttribute(errorstyle, none); request.getRequestDispatcher(/HomePage.html).forward(request, response); else if(user1!=null) request.setAttribute(errorstyle, block); request.setAttribute(error, 用户密码错误);
24、request.getRequestDispatcher(/login.jsp).forward(request, response); else request.setAttribute(errorstyle, block); request.setAttribute(error, 不存在此用户); request.getRequestDispatcher(/login.jsp).forward(request, response); else if(role.equals(1)/管理员 Admin admin=adminService.loginAdmin(username,pwd); A
25、dmin admin1=adminService.findAdminByAdminName(username); if(admin!=null) request.getSession().setAttribute(admin, admin); String value=admin.getAdminName()+:+MD5.calcMD5(admin.getPwd(); request.setAttribute(errorstyle, none); request.getRequestDispatcher(/admin.jsp).forward(request, response); else
26、if(admin1!=null) request.setAttribute(errorstyle, block); request.setAttribute(error, 管理员密码错误); request.getRequestDispatcher(/login.jsp).forward(request, response); else request.setAttribute(errorstyle, block); request.setAttribute(error, 不存在此管理员); request.getRequestDispatcher(/login.jsp).forward(request, response); $error 登录名:登录密码: 忘记登录密码? 普通用户 input type=radio
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1