毕业论文
题目:艾斯医药商务管理系统
姓 名: 文成
专业班级:
学 号:
指导老师:
时间:2011-05-03
目录
摘要 1
关键字 1
第一章 选题背景 2
1.1课题的来源 2
1.2目的和意义 2
1.3应解决的主要问题 2
1.4应达到的技术要求 2
1.4.1对功能的规定 2
1.4.2系统管理 3
第二章 方案论证 4
2.1采用MVC设计模式 4
2.1.1MVC简介 4
2.1.2MVC优点 4
2.2 Servlet技术 5
第三章 过程论述 6
3.1系统总体设计 6
3.1.1软件结构如下图: 6
3.1.2程序系统结构 6
3.2组织结构介绍。 8
3.2.1JSP文件 8
3.2.2. servlet中包括的控制器 9
3.2.3 po包括4个逻辑类 10
3.2.4 Util类,如表3-4所示。 10
3.2.5 dao数据层方法类如图3-5所示 10
3.3 逻辑图如下图3-4 11
3.4物理图如下图3-5 12
3.5 表结构描述 12
3.6用户界面设置 15
3.6.1登录页面login.jsp 15
3.6.2管理员登录 16
3.6.3普通用户登陆 17
第四章 致谢 18
第五章 参考文献 19
第六章 附录 20
6.1登陆判断: 20
6.2商品操作判断: 20
摘要
随着互联网的发展,其信息传播效率逐步为人们所关注。越来越多的企业开始走向网络。以通过网络加大对自己的宣传力度,从而扩展销售渠道,增加销售量。现在互联网已成为报纸、广播、电视相比肩的第四媒体,正以其便捷的信息形式改变着人们传统的消费模式,更多的人开始青睐于这种简单、快捷、低成本的电子通讯方式。因此网站建设在Internet应用上的地位显而易见,它已成为、企事业单位信息化建设中的一个重要组成部分,从而倍受人们的重视。
艾斯医药系统是基于互联网的应用软件,通过它能了解到已公开发布的商品,对自己需要的商品进行采购。包括查询商品,购买商品,下订单等流程,方便快捷实现购物过程。本软件的最终用户为组织内的日常使用者,操作人员和维护人员有较高的教育水平和技术专长,同时使用的用户数量初步估计为几百人。
本项目中使用了基于Servlet/jsp/javabean的 MVC(Model-View- Controller)框架开发电子商务系统。其中jsp进行页面数据显示, Servlet用于接收请求,进行流程控制,而javabean主要处理业务逻辑,对数据进行处理。
关键字
数据库,SQL语言、Mvc、servlet、mysql、JDBC、JSP
第一章 选题背景
1.1课题的来源
艾斯医药系统是基于网上购物的应用软件,是北京亚思晟商务科技有限公司用来培训学员的项目。
1.2目的和意义
锻炼自己的编程能力,了解WEB项目的流程。
1.3应解决的主要问题
系统包括前台功能和后台维护功能两部分:
系统前台用户主要功能包括对药品的查看、查询及购买,还包括提交订单的功能。
后台系统维护包括系统用户管理、商品管理、订单管理、邮件管理以及留言板回复功能。
1.4应达到的技术要求
1.4.1对功能的规定
整体功能用例图(Use-Case Diagram)如下:
图1-1 整体功能用例图
1.4.2系统管理
系统管理是给系统管理人员使用的,主要包括以下功能模块:登录,用户管理:,商品管理,订单管理,邮件管理,购物,商品查询,商品浏览和购物。
第二章 方案论证
2.1采用MVC设计模式
2.1.1MVC简介
MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层。
2.1.2MVC优点
低耦合性:
视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。
高重用性和可适用性:
随着技术的不断进步,现在需要用越来越多的方式来访问应用程序。MVC模式允许你使用各种不同样式的视图来访问同一个服务器端的代码。它包括任何WEB(HTTP)浏览器或者无线浏览器(wap),比如,用户可以通过电脑也可通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产品的方式是一样的。由于模型返回的数据没有进行格式化,所以同样的构件能被不同的界面使用。例如,很多数据可能用HTML来表示,但是也有可能用WAP来表示,而这些表示所需要的仅令是改变视图层的实现方式,而控制层和模型层无需做任何改变。
较低的生命周期成本:
MVC使降低开发和维护用户接口的技术含量成为可能。
快速的部署:
使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上。
可维护性:
分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。
有利于软件工程化管理:
由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化管理程序代码。
2.2 Servlet技术
Servlet是使用Java Servlet 应用程序设计接口(API)及相关类和方法的 Java 程序。除了 Java Servlet API,Servlet 还可以使用用以扩展和添加到 API 的 Java 类软件包。Servlet 在启用 Java 的 Web 服务器上或应用服务器上运行并扩展了该服务器的能力。Java servlet对于Web服务器就好象Java applet对于Web浏览器。Servlet装入Web服务器并在Web服务器内执行,而applet装入Web浏览器并在Web浏览器内执行。Java Servlet API 定义了一个servlet 和Java使能的服务器之间的一个标准接口,这使得Servlets具有跨服务器平台的特性。
第三章 过程论述
3.1系统总体设计
3.1.1软件结构如下图:
图3-1 软件结构图
3.1.2程序系统结构
本项目中使用了基于Servlet/jsp/javabean的 MVC(Model-View -Controller)框架开发电子商务系统。其中jsp进行页面数据显示, Servlet用于接收请求,进行流程控制,而javabean主要处理业务逻辑,对数据进行处理。
系统类图如下3-2图:
图3-2 系统类图
系统用例图如下3-3图:
图3-3 系统用例图
3.2组织结构介绍。
3.2.1JSP文件
表3-1列出了每个JSP文件实现的功能:
表3-1 JSP文件列表
文件名称 | 功 能 |
index.jsp | 首页 |
add_products_admin.jsp | 添加商品页面 |
admin_ordarshow.jsp | 管理员订单页面 |
admin_orderuser.jsp | 查看订单用户页面 |
admin_products_show.jsp | 管理员管理商品页面 |
carthow.jsp | 购物车管理页面 |
changesuperuser.jsp | 修改用户角色页面 |
checkout.jsp | 结算页面 |
checkoutsucc.jsp | 结算成功面 |
ContactUs.jsp | 管联系我们页面 |
employee.jsp | 管理员添加用户页面 |
itservice.jsp | 修改项目类别页面 |
mailmamager.jsp | 邮件管理页面 |
orderitem_show.jsp | 修订单项查询页面 |
ordershow.jsp | 注册用户订单查看页面 |
product_search.jsp | 商品搜索页面 |
products_search_show.jsp | 商品搜索结果页面 |
products_showusers.jsp | 注册用户管理页面 |
products.jsp | 电子政务介绍页面 |
register.jsp | 注册页面 |
regist_succ.jsp | 注册成功页面 |
update_products_admin.jsp | 修改商品信息页面 |
updateproductuser.jsp | 修改用户信息页面 |
error.jsp | 错误页面 |
如表3-2所示:
表3-2 action列表
文件名称 | 功 能 |
LoginServlet.java | 用户登陆控制器 |
MailServlet.java | 邮件管理控制器 |
OrderServlet.java | 订单管理控制器 |
ProductServlet.java | 商品管理控制器 |
ShopCartServlet.java | 购物管理控制器 |
UserManagerServlet.java | 用户管理控制器 |
如表3-3所示:
表3-3 JavaBean列表
文件名称 | 功 能 |
Mailtb.java | 邮件类 |
Orderitem.java | 订单项类 |
Orders.java | 用订单类 |
Product.java | 商品类 |
Productuser.java | 用户类 |
UserProduct.java | 用户和商品类 |
表3-4 util列表
文件名称 | 功 能 |
SetCharacterEncodingFilter.java | 将提交过来的信息里的特殊字符进行处理 |
dataAccess.java | 数据库连接类 |
DatabaseConfigParser.java | 解析数据库配置文件类 |
XMLConfigParser.java | 解析XML类 |
SendMail.java | 发送邮件类 |
ShopCart.java | 购物车类 |
AuthImg.java | 验证码生成类 |
表3-5 dao列表
文件名称 | 功 能 |
LoginDAO.java | 处理登录和登出业务的类 |
MailDAO.java | 处理邮件管理相关功能的类 |
OrderDAO.java | 处理订单管理相关的类(删除、修改和询等) |
ProductDAO.java | 处理商品管理相关功能的类 |
UserManagerDAO.java | 处理用户管理相关功能的类 |
图3-4 逻辑图
3.4物理图如下图3-5
图3-5 物理图
3.5 表结构描述
表3-6 mailtb(邮件表)表结构
列 名 | 类 型 | 描 述 |
mid | int | 表示邮件ID,是自动递增的主键 |
fromaddress | varchar (35) | 表示发邮件地址 |
frompassword | varchar (20) | 表示发邮件密码 |
foaddress | varchar (35) | 表示收邮件地址 |
temp1 | varchar (100) | 表示备用字段1 |
temp2 | varchar (100) | 表示备用字段2 |
temp3 | varchar (100) | 表示备用字段3 |
temp4 | varchar (100) | 表示备用字段4 |
列 名 | 类 型 | 描 述 |
id | int | 表示订单项ID,是自动递增的主键 |
orderid | int | 表示订单ID |
pid | int | 表示商品ID |
quantity | varchar(50) | 表示商品质量 |
temp1 | varchar (100) | 表示备用字段1 |
temp2 | varchar (100) | 表示备用字段2 |
temp3 | varchar (100) | 表示备用字段3 |
temp4 | varchar (100) | 表示备用字段4 |
列 名 | 类 型 | 描 述 |
orderid | int | 表示订单ID,是自动递增的主键 |
uid | int | 表示客户标识号 |
datetime | Varchar(45) | 表示生成订单的时间 |
delsoft | Varchar(2) | 软删除(0为删除1为存在) |
temp1 | varchar (100) | 表示备用字段1 |
temp2 | varchar (100) | 表示备用字段2 |
temp3 | varchar (100) | 表示备用字段3 |
temp4 | varchar (100) | 表示备用字段4 |
列 名 | 类 型 | 描 述 |
pid | int | 表示商品ID标识号,是自动递增的主键 |
product_id | varchar(32) | 表示商品编号 |
catalogno | varchar(32) | 表示药品分类 |
cas | varchar(32) | 表示化学文摘登记号 |
productname | varchar() | 表示药品名称 |
structure | varchar() | 表示分子结构图片路径名称 |
mdlnumber | varchar() | 表示MDL编号 |
formula | varchar(32) | 表示化学方程式 |
mw | varchar(32) | 表示总重量 |
price1 | varchar(32) | 表示普通用户价格 |
price2 | varchar(32) | 表示会员优惠价格 |
stock | varchar(32) | 表示库存 |
realstock | varchar(32) | 表示实际库存 |
newproduct | varchar(32) | 表示是否是新产品 |
category | varchar(32) | 表示药品类别 |
note | varchar(32) | 表示备注 |
del_flag | int | 表示删除标志位 |
temp1 | varchar(100) | 表示临时字段1 |
temp2 | varchar(100) | 表示临时字段2 |
temp3 | varchar(100) | 表示临时字段3 |
temp4 | varchar(100) | 表示临时字段4 |
列 名 | 类 型 | 描 述 |
uid | int | 表示用户ID标识号,是自动递增的主键 |
username | varchar(32) | 表示用户名称 |
password | varchar(32) | 表示用户密码 |
companyname | varchar(32) | 表示用户公司名称 |
city | varchar(32) | 表示用户生活城市 |
job | varchar(32) | 表示用户工作 |
tel | varchar(32) | 表示用户电话 |
varchar(32) | 表示用户电子邮件地址 | |
country | varchar(32) | 表示用户国家 |
zip | varchar(32) | 表示地区邮政编码 |
companyaddress | varchar(32) | 表示用户公司地址 |
superuser | varchar(16) | 表示用户权限标志1.普通注册用户2.高权限用户3.管理员 |
note | varchar(32) | 表示备注 |
fullname | varchar(32) | 表示全名 |
title | varchar(32) | 表示称呼 |
del_flag | Int | 表示删除标志位 |
temp1 | varchar(100) | 表示临时字段1 |
temp2 | varchar(100) | 表示临时字段2 |
temp3 | varchar(100) | 表示临时字段3 |
temp4 | varchar(100) | 表示临时字段4 |
列 名 | 类 型 | 描 述 |
user_product_id | Int | 表示ID编号,是自动递增的主键 |
uid | Int | 表示客户标识号 |
pid | Int | 表示产品标识号 |
3.6.1登录页面login.jsp
图3-6 登陆页面图
3.6.2管理员登录
管理员登录后页面如下图3-7所示:
图3-7 管理员登陆后页面
3.6.3普通用户登陆
普通用户登录后进入电子商务信息介绍页面如下图所示:
图3-8 普通用户登陆后页面
致谢
在校的三年里,我非常感谢各位老师在我的学习生活中给予的教导和帮助!使我在各方面都不会感到无助、迷茫,我的成绩离不开各位老师的精心教导。
本课题在设计和论文的写作过程中,都得到了邢煜老师的悉心指导。邢老师多次询问开发进程,帮助我开拓开发思路,并给予热忱鼓励。邢老师独特的治学,乐观随和的处事态度,不仅教育我如何设计和写作,更重要的是教我如何做人,让我终生受益。
参考文献
艾斯医药需求规格说明书。
艾斯医药概要设计说明书。
《servlet/jsp深入详解》:电子工业出版社,孙鑫编著。
《jsp应用教程》:清华大学出版社,北京交通大学出版社,陈旭东,刘迪仁编著。
第六章 附录
6.1登陆判断:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username=request.getParameter("username");
String password=request.getParameter("password");
Productuser user = new Productuserbo().login(username, password);
if(user==null){
request.setAttribute("log", "你输入的用户名或密码错误请您重新登录!");
request.getRequestDispatcher("/index.jsp").forward(request, response);
}else{
HttpSession session=request.getSession();
session.setAttribute("user", user);
if(user.getSuperuser().equals("3")){
request.getRequestDispatcher("showusers?method=user").forward(request, response);
}else{
request.getRequestDispatcher("/product/products.jsp").forward(request, response);
}
}
}
6.2商品操作判断:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
String method=request.getParameter("method");
if(method.equals("findall")){
List HttpSession session=request.getSession(); request.setAttribute("all", pb); request.getRequestDispatcher("/product/products_show.jsp").forward(request,response); } else if(method.equals("admin_all")){ List HttpSession session=request.getSession(); request.setAttribute("all", pb); request.getRequestDispatcher("/admin/admin_products_show.jsp").forward(request,response); }else if(method.equals("search")){ String searchName=request.getParameter("searchName"); String searchValue=request.getParameter("searchValue"); Product p=new Productbo().Search(searchName, searchValue); HttpSession session=request.getSession(); request.setAttribute("se",p); request.getRequestDispatcher("/product/search_show.jsp").forward(request, response); } }