
《Java Web 应用开发》课程设计
课程名称:《JAVA Web应用开发》课程设计
设计题目:艾斯医药商务系统
指导教师:
班级:
学号:
学生姓名:
成绩:
评语:
计算机与数据科学学院
2016年6月12日
第一章.系统概述
1.1开发背景
随着信息技术的发展和国内外互联网技术应用水平的逐步提高,在企业管理过程中,传统的工作方式和管理模式已经难以满足现代社会的必然需求,实现企业现代化综合管理已经是提高国家机关和企事业单位各部门工作效率、规范化管理的必然发展趋势。大家只要看了新闻,就可以了解到21世纪是信息的世纪,信息化正以极快的速度取代传统的效率低下的人工作业。随着小型计算机,微型计算机的成本的不断下降,性能的不断提升,使得计算机作为当今最重要的信息产品,成为人民大众必不可缺的工具。计算机技术已经广泛应用于日常办公,企业管理,文字处理、电子报表以及进行简单的人事管理、财务管理等,大大提高了我们的工作效率,节省许多资源,使管理更加规范化,系统化,科学化。
目前随着计算机技术的发展和普及,各行各业的管理机构开始使用计算机处理大量信息。在我国药品品种繁多,规模甚大,以往的手工记载、查询操作容易出错且工作效率低,已经不能适应时代发展的要求,从管理的角度来看,对管理者会造成诸多的不便,还有可能疏忽一些细节,让不法商家逃脱罪责。所以,市场迫切需要一款简单实用的药品管理系统。药品管理系统的设计理念是,让企业能够拥有更高效的管理工具,使企业在21世纪异常激烈的竞争中脱颖而出。国外的管理系统有许多优秀的经验,但是并不完全符合我国的国情,我国的最广大药品销售的企业是分布在全国各地的中小型销售企业。所以,此次开发的药品管理系统功能乃是汲取了外国优秀管理工具的优秀功能,同时又创新了更符合我国用户需求的功能的一个综合信息管理系统。药品管理系统分为五大模块,分别为系统用户模块,职工信息管理模块,进货管理模块,销售管理模块,库存转移管理模块。该五大功能模块设计合理,功能全面,同时界面友好,非常符合我国各大小型药品销售企业的管理需求。但由于时间仓促以及笔者找工作实习的原因,系统还不是很完善,和市场上一些成熟的产品比较仍然有不足之处。
2.2开发环境
开发环境的选择会影响到数据库的设计,所以在这里给出图书管理系统开发与运行环境的选择如下:
开发环境:Window 7 旗舰版
开发工具:MyEclipse 10.0
数据库版本:MySql 5.6.24
服务器:Tomcat 6.0
第二章.可行性分析
2.1 技术可行性
本项目中使用了Servlet+JSP+JavaBean技术来实现艾斯医药商务系统的,目前该种技术已经非常成熟,很多小型的项目的可以用这种模式来实现,因为在技术可行性方面不存难以解决的问题。
2.2 操作可行性
传统的医药公司管理有两种方式:一种是通过人员手工管理,通过纸笔手写记录公司的运作信息。另一种是通过现在先进的计算机进行网上的记录管理与销售。在进行设计以前,我们通过实地考察多家医药公司,调查了解他们的工作流程,还从其他相关的了解医药公司的运作流程,完成系统开发。因此艾斯医药商务系统是具有操作可行性的。
第三章.需求分析
3.1 系统功能
艾斯医药商务系统功能包括用户登录,商品浏览,商品查询,购物管理和后台模块等模块。其中用户登陆管理负责用户注册及用户登录信息的维护.登陆成功的用户可以浏览商品。查询特定商品的信息,对于选中的商品进行购买。包括加入购物车和生成订单。后台管理处理从购物网站转过来的订单包括发送邮件,商品管理和用户管理。艾斯医药商务系统模块结构图如图3.1.1所示
图3.1项目功能模块
3.2 系统功能描述
3.2.1 用户管理
用户管理主要包括一下模块:
(1)注册用户信息。对于新用户,单击“注册”,进入注册页面,填写相关信息进行注册。有标记我“*”的为必填项。
(2)用户登陆验证。对于已经注册过的用户,进入用户登陆界面,填写账号密码进行登陆。
图3.2注册模块
3.2.2 浏览商品
网站的商品列表列出当前网站所有的商品名称,编号,类别,价格,库存图片等。
3.2.3 查询商品
用户可以再网站的商品查询页面进行查询。选择查询条件,输入查询的关键字,单击“查询”按钮可以进行查询。若商品存在则返回查询结果,若不存在则不显示。
图3.3 查询界面图
图3.4 查询结果显示
3.2.4购物管理
(1)查看购物车。用户可以查看自己的购物车,可以添加或者删除购物车中的商品,可以修改购物车中商品的数量,进行购买。
(2)生成订单。在浏览商品时,用户可以在查看商品列表或详细信息是将此产品添加到购物车,添加完毕可以选择继续购物或者是结算,若要结算这需要添加购物记录表。
图3.5 购物车管理
3.2.5后台管理
(1)订单邮件管理。设置管理员邮箱地址,包括转发邮件以及管理员接收邮件地址。
图3.6后台管理
(3)商品管理。包括商品的添加修改删除。
图3.7 添加用户
(4)用户管理。包括用户信息的修改,用户权限的管理,用户删除。
图3.8 修改用户权限
第四章.系统分析与设计
4.1 系统分析
通过UML语言的用例图,类图以及序列图来分析艾斯医药系统。
4.1.1 用例图
用例图显示了系统与系统外实体之间的交互。项目用例图如图4.1.1所示
图4.1系统用例
4.1.2 类图
类图显示了模型的静态结构,特别是模型中存在的类。类的内部结构以及类与类之间的关系。系统类图如图4.1.2所示。
图4.2 系统类图
4.1.3 序列图
序列图的主要作用之一,是把用例图表达的需求进一步,更加正式层次的精细表达。系统一些功能序列图。
图4.3 管理员登陆序列
图4.4用户管理模块修改用户信息序列
图4.5 用户管理模块修改用户角色序列
4.2 系统设计
本项目中使用了Servlet+JSP+JavaBean技术来实现艾斯医药商务系统的。在这套技术中JSP作为视图层。Servlet用于控制用户请求以及调用相应的业务组件,作为控制层。JSP将数据传送给Servlet,Servlet去调用具体的JavaBean用于处理前端页面JSP的请求,完成具体的业务逻辑过程。
Com.ascent.bean放置处理的JavaBean。
Com.ascent.servlet放置处理请求相应类。
Com.ascent.dao放置处理数据持久化类。
Com.ascent.util放置帮助类和一些其他类。
表4.1 Jsp文件实现功能。
| 文件名称 | 功能 |
| Index.jsp | 首页 |
| Error.jsp | 错误页面 |
| Add_products_admin.jsp | 添加商品页面 |
| Admin_ordershow.jsp | 管理员订单页面 |
| Admin_orderuser.jsp | 查看订单用户页面 |
| Admin_prodects_show.jsp | 管理员管理商品页面 |
| Changesupersuer.jsp | 修改用户角色页面 |
| mailmamager.jsp | 邮件管理页面 |
| Oederitem_show.jsp | 订单项查询页面 |
| Ordershow.jsp | 订单查询页面 |
| Products_show.jsp | 商品查看 |
| Products_showuser.jsp | 注册用户管理界面 |
| Update_products_admin.jsp | 修改商品信息页面 |
| Updateproductuser.jsp | 修改用户信息页面 |
| Carthow.jsp | 购物车管理页面 |
| Checkout.jsp | 结算页面 |
| Checkoutsucc.jsp | 结算成功页面 |
| contactUs.jsp | 联系我们页面 |
| Employee.jsp | 招聘信息页面 |
| Itservice.jsp | 公司介绍页面 |
| Product_search.jsp | 商品搜索页面 |
| Product_search_show.jsp | 商品搜索结果页面 |
| Product_show.jsp | 商品信息列表页面 |
| Products.jsp | 公司产品介绍页面 |
| Regist_succ.jsp | 注册成功页面 |
| Register.jsp | 注册页面 |
| 文件名称 | 功能 | 文件名称 | 功能 |
| Loginservlet.java | 用户登录 | productservlet.java | 商品管理 |
| mailservlet.java | 邮件管理 | shopcartservlet.java | 购物管理 |
| orderservlet.java | 订单管理 | usermanagerservlet.java | 用户管理 |
| 文件名称 | 功能 | 文件名称 | 功能 |
| Mailtb.java | 邮件类 | product.java | 商品类 |
| orderitem.java | 订单类 | usr.java | 用户类 |
| orders.java | 用订单类 | userproduct.java | 用户和商品类 |
| 文件名称 | 功能 |
| LoginDAO.java | 处理登录和退出 |
| mailDAO.java | 处理邮件管理 |
| orderDAO.java | 处理订单管理 |
| productDAO.java | 处理商品的管理 |
| usermanagerDAO.java | 处理用户管理 |
| 文件名称 | 功能 |
| Authitem.java | 验证码生成类 |
| cartitem.java | 封装商品及购买数量类 |
| DataAccess.java | 数据库连接类 |
| DatabaseConfigparser.java | 解析数据库配置文件类 |
| Jmyz.java | 发送邮件时进行权限控制类 |
| pageBean.java | 分页封装 |
| sendmail.java | 发送邮件类 |
| SetcharacterEncodingFilter.java | 乱码问题处理过滤器 |
| shopcart.java | 购物车类 |
| signonFliter.java | 是否具有登陆权限的过滤器 |
| XMLConfigParser.java | 解析XML类 |
5.1 数据库概念设计
5.1.1 整体E-R图
1.E-R图设计方法
1).属性必须是不可分的数据项。
2).属性不能与其他实体具有联系,联系只能发生在实体之间。
图5.1 整体E-R
5.1.2局部E-R图
(1)管理员与用户
图5.2 管理员与用户关系
(2)用户与商品
图5.3用户与商品关系
(3)管理员与商品
图5.4管理员与商品关系
5.2 数据表关系设计
表5.1 mailtb(邮件)表
| 列名 | 类型 | 说明 |
| mid | Int | 表示邮件id自增主键 |
| fromaddress | Varchar(35) | 发邮件地址 |
| frompassword | Varchar(20) | 发邮件密码 |
| toaddress | Varchar(35) | 收邮件地址 |
| 列名 | 类型 | 说明 |
| id | Int | 订单项ID,主键自增 |
| orderid | Int | 订单ID外键 |
| pid | Int | 商品ID外键 |
| quantity | Varchar(50) | 商品购买数量 |
| 列名 | 类型 | 说明 |
| orderid | Int | 订单ID,主键自增 |
| uid | Int | 客户ID外键 |
| datetime | Varchar(45) | 订单创建时间 |
| delsoft | Varchar(2) | 软删除标志1删除,0正常 |
| 列名 | 类型 | 说明 |
| 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 | 软删除标志位 |
| 列名 | 类型 | 说明 |
| 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) | 表示zip |
| companyaddress | Varchar(32) | 公司地址 |
| superuser | Varchar(32) | 权限 |
| note | Varchar(32) | 备注 |
| fullname | Varchar(32) | 全名 |
| title | Varchar(32) | 职称级别 |
| del_flag | Int | 软删除标志 |
| 列名 | 类别 | 说明 |
| user_product_id | Int | 订单ID主键自增 |
| uid | Int | 用户ID外键 |
| pid | Int | 商品ID外键 |
6.1 登陆注册功能
6.1.1 登陆功能
登陆的用户可以分成两类:用户和管理员。登录时并不区分登陆的用户,登录时系统自动匹配是管理员还是普通用户,然后进行权限设置。登录时当用户输入错误时会进行提醒,是账号不存在,密码错误或是没有输入,登陆后会用session保存用户名,当退出登录时,调用session的session.invalidate();方法清除session里面的内容。
publicvoiduserLogin(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException
{
String name= request.getParameter("username");
String password=request.getParameter("password");
LoginDAOLd = newLoginDAO();
Productuserpuser= Ld.logIn(name, password);
if(puser==null)
{
this.doError(request, response,"productuserL_tip.login.fail");
}
else
{
String superuser = puser.getSuperuser();
HttpSessionmysession = request.getSession(false);
mysession.setAttribute("productuser", puser);
if(superuser.equals("1")){ this.doBrowse(request, response,"/product/products.jsp");
}elseif(superuser.equals("2")){ this.doBrowse(request, response,"/product/products.jsp");
}elseif(superuser.equals("3")){ ListallProductList = Ld.getAllUser();
mysession.setAttribute("allproductlist", allProductList);
this.doBrowse(request, response,"/product/products_showusers.jsp");
}
}
}
publicvoidloginOut(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException
{
HttpSession session = request.getSession(false);
session.invalidate();
this.doBrowse(request, response,"/index.jsp");
}
图6.1 登录模块
6.1.2 注册功能
注册功能运用了正则表达式,会对用户输入的信息进行检测,而且带“*”的为必填项。
functioncheck(){
if(form.username.value == "")
{
alert("用户名不能为空!");
form.username.focus();
return false;
}
if(form.password.value == "")
{
alert("请输入密码!");
form.password.focus();
return false;
}
if(form.password2.value == "")
{
alert("请再次输入密码!");
form.password2.focus();
return false;
}
if(form.password.value!=form.password2.value){
alert("两次输入的密码不一致!");
form.password2.focus();
return false;
}
if(form.email.value == "")
{
alert("请输入邮件!");
form.email.focus();
return false;
}
varregm = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$/;//验证Mail的正则表达式,^[a-zA-Z0-9_-]:开头必须为字母,下划线,数字,
if(form.email.value!=""&& !form.email.value.match(regm) )
{
alert("邮件格式不对,检查后重新输入!");
form.email.focus();
return false;
}
if(form.code.value==""){
alert("请输入验证码!");
form.code.focus();
return false;
}
else
return true;
}
图6.2 添加用户
6.2 购物车功能
购物车功能,可以加入购物车,结算下订单。
6.3 购买物品
图6.4 购物车管理
图6.5 订单查询
6.3商品查询功能
商品查询功能:可以通过商品分类,商品名称,商品简介,商品MDL编号等查询。
图6.5 商品查询功能 图6.6 商品查询结果 6.4 后台管理功能 6.4.1 用户管理 用户管理功能可以对用户进行添加修改和删除,设置用户的权限。当删除角色时候可以进行软删除,删除后可以进行恢复。 图6.7 用户管理 6.4.2 商品管理 商品管理:可以进行商品的添加修改和删除,添加商品时可以选择商品是新进商品还是以前已有的商品。 图6.8添加商品功能 6.4.3 邮件管理 邮件管理:管理客户发来的订单请求邮件,然后发送邮件,告知用户货物应经运送。 图6.9发送邮件功能 第七章.心得体会 课程设计是培养学生综合运用所学知识,发现提出分析和解决实际问题,锻炼实践能力的重要环节是对学生实际工作能力的具体训练和考察过程本次课程设计虽然很辛苦,实在是受益匪浅。本来这门课的知识学的就不够扎实,本次课程设计,在设计过程中碰到了很多问题,刚开始要设计的时候,还真不知道从哪里下手但最终在图书、同学和老师的帮助下都得到了解决,让我学会了好多书本上没有的东西,通过本次课程设计我也能将课本上的知识融会贯通,起到了很好的辅助学习的效果,但是我发现我学到的知识比整整一个学期学到的都多。理论和实践的相结合是学习最有效的方法。在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计之后,一定把以前所学过的知识重新温故回顾起此次课程设计,至今我仍感慨颇多,的确,从拿到老师给我们的题目,然后老师简单的阐述我们该做些什么,该完成些什么的时候,我就觉得这个课程设计是很有挑战的,因为我知道平时自己学的知识不是很牢固,这些做起来肯定很棘手。事实验证了我的想法。在整整一星期的日子里,可以说得是苦多于甜,由于对相关知识所学甚少,可以说做起设计来是一片茫然。在设计的过程中遇到问题,可以说得是困难重重,遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。在课程设计中,我真正的清楚了自己的不足,由于自己并没多少知识,别人可以说是通过此次课程设计巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识,而我呢,只能说是从这次课程设计中重新审视了自己,终于发现自己对所学知识的严重不足,这也给我提了个醒,没知识终究将是一事无成。 第八章.参考文献 [1]刘洋.精通Hibernate[M].北京:电子工业出版社.2005 [2] 张秋余,杨玥. 基于用例的需求建模方法[J]. 计算机工程与设计,2006.19 [3]张桂元.贾燕枫.Eclipse开发入门与项目实践[M].北京:人民邮电出版.2006 [4]张桂元.Struts开发入门与项目实践[M].北京:人民邮电出版社.2005 [5]梁玉环,李村合,索红光.基于JSP的网站访问统计系统的设计与实现[J].计算机应用研究,2006 [6]Solid Quality Learning. Microsoft SQL Server 2005:Database Essentials Step by Step. Microsoft Press. 2007 [7]陆荣,幸郁洲. J2EE平台上MVC设计模式的研究与实现[J]. 计算机应用研究,2007.03
