企业与消费者间的电子商务,是一种网上直销方式,网上销售药品缩减了中间渠道,产品一般直接源自厂商的生产基地,不但品质有保证价格上也更优惠。同时网上销售在缩减支出方面的优势也是传统店铺无法比拟的,由于不需要实际的店面,不仅避免了店铺租金的开销,还可省去装修、管理等方面的诸多费用,所以价格成为众多网上购药用户的首选因素。另外所不同的就是网上购物可以足不出户,各地商品任选,如此方便快捷,无时间空间限制是传统经营模式无法比拟的,如今人们生活质量的提高,购物方式也变得轻松自由化、个性化,这将成为网上销售药品的一大优势。
小型药店销售管理系统可实现基本的在线注册、查找搜索产品、以及后台管理维护共分为:商品管理、定单管理、用户管理、以及相关网站管理。系统功能模块如图2-1所示。
1.商品管理:
(1)添加总分类:主要完成创建商品信息的大的分类以及修改工作,便于用户查找。
(2)添加小分类:完成具体一点的分类,将小类归类于大分类。
(3)添加新商品:完成商品信息的录入以及相关处理。
(4)查看与修改:主要完成商品信息的修改和删除功能。
2.订单管理:
(1)最新订单:主要可以查看到客户买的商品订单信息,及时进行订单的处理。
(2)已确认的订单:通过上面的“最新订单”处理,然后显示给管理员看是否已经处理订单。
(3)查询投诉订单:这里主要显示客户投诉的订单的具体信息,便于管理员及时处理订单给客户一个答复。
3.用户管理:
(1)会员用户管理:可以查看到现在的会员用户,并可以实现对会员进行删除和升级为VIP会员两个功能。
(2)添加会员:可以实现添加会员或VIP会员功能。
4.网站管理:
(1)添加新闻:实现对新闻标题、内容的添加。
(2)修改删除新闻:实现对新闻的修改和删除功能。
(3)添加测评:实现对商品信息的反馈,让客户可以了解到同类产品哪个产品比较好用。
(4)删除修改测评:主要对测评信息的改动与删除。
(5)添加医药常识:完成医药常识的添加,让客户可以了解更多的医药常识。
(6)修改删除医药常识:主要完成对医药常识信息的修改和删除功能。
用户注册和修改资料模块中的用户密码采用MD5加密机制,保证用户信息的安全性。其算法简单描述为:以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。
小型药店销售管理系统数据库采用ACCESS数据库,其中表单及作用如下:
admin-----管理员数据表 basket-------售出商品信息表
cp--------产品测评信息表 sub----------订单详细信息表
hw--------货物信息表 member-------会员信息表
news-------新闻信息表 Nsort--------产品小分类表
sort-------产品大分类表 story--------医药常识表
ts---------投诉订单表
后台管理系统主要负责管理系统的一切工作,通过它才能让客户了解到该系统用于何用,通过管理用户可以了解客户,从而改善系统,是客户与商家的联系重要渠道,其功能主要如下:
(1)商品管理:在程序设计功能完成后,需要向自己的系统添加一定的商品,才能展现出该系统用于什么方面,用这个功能就能向系统里面添加自己想要出卖的商品以及必要的信息,让客户便捷轻松地找到自己需要的产品,通过该功能管理员可以及时的进行商品信息的正确修改,给客户真实信任感。
(2)定单管理:包括查阅定单和处理定单,管理员通过查看商家购买的定单和商家的申诉定单,进行及时的处理,必要时可以通过联系方式及时找到客户,进行具体的相关处理。
(3)用户管理:对已申请注册的用户,如果用户不想再把自己的资料以及信息留给该系统,可以通过联系管理员,对客户信息进行删除,以及对长期合作的客户进行会员升级,成为VIP会员,使客户享受更实惠的服务。
(4)网站管理:主要实现对最近发生的医药行情以及医药事件的信息添加,让客户了解最近的医药发展动态;通过添加医药常识还可以让客户了解到基本的医药常识,给客户更温馨的提示;通过用户反馈信息,添加相关产品的测评信息,使产品联系到实际医药行情与疗效,让客户在同类产品中可以选择更加好用的产品。
(5)用户退出:主要实现管理员注销登陆和返回网站首页,通过注销登陆管理员可以实现退出管理或换另外的管理员用户登陆管理页面,通过返回首页可以方便的便于管理员观察网站管理的效果,及时进行相关的处理。
后台管理设计流程图:
对上面的功能图的说明:每一个管理功能模块都是一个独立的模块,只要操作完相应的管理都可以直接选用其他的功能模块,所以在选择不同功能进行处理的“是否成功”这个处理过程时,在上两图我都把这些功能融合在一个处理过程来画而已,便于直观简单
E-R(Entity-Relationship Approach)图是最常用的概念模型表示方法,也是数据库的核心和基础,它是按用户的观点来对数据和信息建模,依据概念模型设计应具的特点:真实性、易理解性、易修改性、易转换性,上面描述了该系统的会员与商品的E-R图。
对后台管理系统所要用到的表有:
admin:包含管理员的用户名和密码 basket:已售出的产品信息
cp:主要包含测评信息的标题和内容 hw:包含商品的详细信息
member:包含会员的详细信息内容 news:包含新闻信息的标题和内容
story:包含医药常识的详细内容 sub:包含定单的详细信息
nsort:产品小分类信息 sort:产品大分类信息
ts:主要包含会员投诉定单的基本信息
各表的详细描述:
表1 admin(管理员数据表)
字段名 |
数据类型 |
字段大小 |
是否允许为空 |
字段描述 |
Admin_name |
文本 |
50 |
否 |
管理员名(主键) |
Admin_pass |
文本 |
50 |
否 |
管理员密码 |
表2 basket(售出商品信息表)
字段名 |
数据类型 |
字段大小 |
是否允许为空 |
字段描述 |
basket_id |
自动编号 |
长整型 |
商品ID号 (主键) |
|
hw-id |
文本 |
50 |
是 |
货物编号 |
user_name |
文本 |
50 |
是 |
用户名 |
basket_count |
文本 |
50 |
是 |
够买商品的数量 |
basket_data |
日期/时间 |
是 |
购买商品时间 |
|
basket_check |
是/否 |
是 |
商品确认 |
|
basket_adminche |
是/否 |
是 |
管理员确认的定单 |
|
hw_name |
文本 |
50 |
是 |
商品名称 |
hw_cash |
文本 |
50 |
是 |
买家应付的价格 |
sub_number |
文本 |
50 |
是 |
定单编号 |
表3 member(会员信息表)
字段名 |
数据类型 |
字段大小 |
是否允许为空 |
字段描述 |
user_id |
自动编号 |
长整型 |
用户的ID号(主键) |
|
user_name |
文本 |
50 |
是 |
用户名 |
user_pass |
文本 |
50 |
是 |
用户密码 |
user_mail |
文本 |
50 |
是 |
用户邮件箱 |
user_adds |
文本 |
50 |
是 |
用户地址 |
user_tel |
文本 |
50 |
是 |
用户电话 |
user_regtime |
日期/时间 |
是 |
用户注册时间 |
|
user_regip |
文本 |
255 |
是 |
用户注册ip |
user_lasttime |
日期/时间 |
是 |
用户最后登陆时间 |
|
user_lastip |
文本 |
255 |
是 |
用户最后登陆的ip |
user_postcode |
文本 |
50 |
是 |
用户邮政编码 |
user_namec |
文本 |
50 |
是 |
用户的真实姓名 |
user_type |
文本 |
50 |
是 |
用户类型 |
表4 hw(货物信息表)
字段名 |
数据类型 |
字段大小 |
是否允许为空 |
字段描述 |
hw_id |
自动编号 |
长整型 |
商品ID(主键) |
|
hw_cash |
数字 |
小数 |
会员价格 |
|
hw_content |
备注 |
是 |
简单描述商品信息 |
|
hw_content2 |
备注 |
是 |
详细描述商品信息 |
|
hw_buys |
数字 |
长整型 |
出售了多少件 |
|
hw_date |
日期/时间 |
是 |
上货时间 |
|
chubsh |
文本 |
100 |
是 |
出品公司 |
daili |
数字 |
长整型 |
vip价格 |
|
pifa |
数字 |
长整型 |
市场价格 |
|
zhuang |
文本 |
50 |
是 |
包装类型 |
date |
日期/时间 |
是 |
出品日期 |
|
tuijian |
是/否 |
是否推荐 |
||
jia |
是/否 |
是否为新产品 |
||
sort_id |
数字 |
长整型 |
产品总类型ID |
|
nsort_id |
数字 |
长整型 |
产品小分类ID |
|
hw_name |
文本 |
50 |
是 |
商品名称 |
hw_pic |
文本 |
255 |
是 |
商品图片位置 |
表5 cp(产品评测信息表)
字段名 |
数据类型 |
字段大小 |
是否允许为空 |
字段描述 |
news_id |
自动编号 |
长整型 |
测评ID(主键) |
|
news_title |
文本 |
255 |
是 |
测评标题 |
news_content |
备注 |
是 |
测评内容 |
|
news_date |
日期/时间 |
是 |
测评时间 |
表6 story(医药常识表)
字段名 |
数据类型 |
字段大小 |
是否允许为空 |
字段描述 |
news_id |
自动编号 |
长整型 |
药品常识ID(主键) |
|
news_title |
文本 |
255 |
是 |
药品常识标题 |
news_content |
备注 |
300 |
是 |
药品常识内容 |
news_date |
日期/时间 |
是 |
药品常识日期 |
表7 sort(产品大分类表)
字段名 |
数据类型 |
字段大小 |
是否允许为空 |
字段描述 |
sort_id |
自动编号 |
长整型 |
分类ID号(主键) |
|
sort_name |
文本 |
50 |
是 |
分类名 |
表8 Nsort(产品小分类表)
字段名 |
数据类型 |
字段大小 |
是否允许为空 |
字段描述 |
Nsort_id |
自动编号 |
长整型 |
分类ID号(主键) |
|
Nsort_name |
文本 |
50 |
否 |
分类名 |
sort_id |
数字 |
长整型 |
是 |
分类号 |
表9 news(新闻信息表)
字段名 |
数据类型 |
字段大小 |
是否允许为空 |
字段描述 |
news_id |
自动编号 |
长整型 |
新闻ID号(主键) |
|
news_title |
文本 |
255 |
是 |
新闻标题 |
news_content |
备注 |
是 |
新闻内容 |
|
news_date |
日期/时间 |
是 |
新闻日期 |
表10 sub(定单详细信息表)
字段名 |
数据类型 |
字段大小 |
是否允许为空 |
字段描述 |
sub_id |
自动编号 |
长整型 |
定单ID(主键) |
|
basket_id |
文本 |
50 |
是 |
购买商品ID |
user_name |
文本 |
50 |
是 |
用户名 |
sub_date |
日期/时间 |
是 |
定单时间 |
|
sub_number |
文本 |
50 |
是 |
定单编号 |
sub_check |
是/否 |
是 |
定单是否处理 |
|
sub_to |
文本 |
50 |
是 |
卖给什么用户 |
sub_mail |
文本 |
50 |
是 |
买家邮件箱 |
sub_tel |
文本 |
50 |
是 |
买家电话 |
sub_adds |
文本 |
255 |
是 |
买家地址 |
sub_post |
文本 |
15 |
是 |
买家邮政编码 |
qian |
文本 |
50 |
是 |
付款方式 |
other |
文本 |
100 |
是 |
备注 |
表11 ts(投诉定单表)
字段名 |
数据类型 |
字段大小 |
是否允许为空 |
字段描述 |
ts_id |
自动编号 |
长整型 |
投诉定单ID |
|
user_name |
文本 |
50 |
是 |
用户名 |
sub_numeber |
文本 |
50 |
是 |
定单编号 |
ts_date |
日期/时间 |
是 |
定单时间 |
主要是针对用户来说的,其中主要包括实现静态网页的展现和一些基本功能。浏览器端的界面图如图4-1:
(1)时间展示功能模块的实现为:<%=year(date())%>年<%=month(date())%>月<%=day(date())%>日。
(2)搜索产品和药品查询功能:搜索产品和药品查询中的查询都是调用的同一个网页即:search1.asp,其效果展现如图4-2。设计思路采用模糊查询从数据库中查找hw-name像用户输入的字段,其主要应用到的搜索语句:sql="select * from hw where hw_name like'%"&hw_name&"%' order by hw_id DESC。首先是把搜索文本筐里面值为空,然后把浏览器端填入的字段赋给hw-name,语句为:hw_name=request("hw_name"),然后从数据库hw中查找货物名字,再打开数据库rs.open sql,conn,3,3,开始执行,如果在数据库中为空或没有找到类同与用户输入数据的字段,就返回给用户提示,其提示语为:没有你要找的商品,请先确定商品的类别,如果数据库中的字段不为最后一条文字信息,就把数据库hw中的所有类同于用户输入的字段该每一条的数据信息调出来给用户观看。
用户要查询商品信息页面图如图4-2:
(3)用户登陆处理模块
主要用sql语句:sql="select * from member where user_name='"& user _name &"'"从数据库表member中查找用户名字,如果找到用户,然后进一步从数据中调用用户密码确认用户密码是否正确,如果用户名和密码都正确将通过验证,成功登陆,如果其中一个出错了,将为用户提示“您的用户或密码不正确!!!请重新登陆”,让用户重新登陆或者没有注册的用户进行注册。代码如下面所示:
sql="select * from member where user_name='"&user_name&"'"
rs.open sql,conn,3,3
if rs.eof then
errmsg=errmsg+"
"+"
founderr=true
else if user_pass= rs("user_pass") then
session("user_name")=rs("user_name")
session("user_type")=rs("user_type")
rs("user_lasttime")=now()
rs("user_lastip")=request.servervariables("remote_addr")
rs.update
else
errmsg=errmsg+"
"+"
founderr=true
end if
rs.close
if founderr=true then
%>
<%else%>
<%
response.redirect "index.asp"
%>
<%end if
else
response.redirect "index.asp"
end if%>
(4)购物功能处理以及显示的功能实现
如果用户要购买物品,首先要判断用户是否登陆,判断语句:if session (" user _name")=""如果没有登陆,将提示用户登陆或注册用户,如果登陆成功的用户,才能执行购买商品等操作。购买商品的设计思路:一是用户在登陆后直接根据商品信息购买商品,二是根据用户查找商品购买,用其实现语句为:sql = "select * from hw where hw_id="&request("hw_id"),如果找到,就把商品信息给用观看,然后进一步确认购买当用户确认购买的时候,系统有一个判断用户成员类型,比如:判断是否为会员<%ifsession("user_type")="会员" then%>如果是会员然后就执行下面的语句<%=rs("hw_cash")%> <%else%> <%=rs("daili")%> ,<%end if%>。在这里主要实现的是把不同类的成员商品价格做一个调整,因为不同的用户,商品价格会不一样,然后用一个创建一个新的数据项目,把商品信息的基本信息和会员信息保存起来,并返回给数据库basket,添加定单。其实现语句为:
rs.addnew
rs("hw_id")=hw_id
rs("user_name")=session("user_name")
rs("basket_count")=count
rs("basket_date")=now()
rs("hw_name")=request("hw_name")
rs("hw_cash")=request("hw_cash")
rs("basket_count")=int(rs("basket_count"))+int(count)
rs.update
rs.close
在浏览器端显示给用户观看到的主要功能语句:
显示商品名称的语句:<%=rs("hw_name")%>
显示商品的价格的语句:<%=rs("hw_cash")%>元
显示购买货物数量语句:<%=rs("basket_count")%>
显示合计价格语句:<%=rs("hw_cash")*rs("basket_count")%>元
计算总的价格语句:totalcash=totalcash +(rs("hw_cash") *rs("basket _count"))
后台管理的功能实现主要针对管理员设计的,负责管理整个系统。
管理员用户界面图:
(1)商品的添加以及处理功能:首先判断是不是管理员,如果不为管理员,就要谈出管理员登陆界面,其实现语句为<%if Session("admin_name")="" then response.redirect "index.asp"%>,然后将该request的action属性值为save,然后用一系列变量存储管理员输入的商品信息,然后对这些变量执行判断,如:
if hw_name="" then
errmsg=errmsg+"
"+"
founderr=true
如果输入类型有误,就将里面的变量类型转换为数据库中相对应的类型,如转换货物名:hw_name=replace(hw_name," "," "),然后对数据库hw执行操作,将货物信息写入数据中,其语句为:
sql="select * from hw"
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,3,3
rs.addnew
(2)商品删除模块:
<%
if request("action")="del" then
sql="select * from hw where hw_id="&request("hw_id")
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,3,3
if rs.eof then
response.redirect "delhw.asp"
else
rs.delete
rs.update
end if
rs.close
response.write "货物删除成功"
response.write "
"
response.write "返回"
else
%>
(3)添加大分类模块:
先定义一个事项,访问数据库,如果数据库问空的,就提示管理管增加类别,语句为:if rs.eof and rs.bof then response.write "
主要通过管理员来处理订单,处理过的订单,用户可以查询到自己的那些订单已经处理过,管理员“已确认订单”选项,看到自己已处理的订单,其中主要处理语句为:rs("sub_check")="1"。货物送出处理的模块代码为:
<%
sub_number=request.querystring("sub_number")
sql="select * from sub where sub_number='"&sub_number&"' "
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,3,3
rs("sub_check")="1"
rs.update
%>
包括会员的删除、升级为VIP和添加会员三个功能
(1)会员删除功能的实现:首先要判断是否为管理员,如果为管理员才执行以下程序代码,先从member表中找到user-id,sql="select * from member where user_id="&request("user_id"),然后打开数据库,再判断数据库是否存在此用户信息,如果不存在将显示用户信息已删除,如果存在将执行删除语句,其为rs.delete,将用户信息删除。
(2)会员升级的实现:其主要实现语句rs("user_type")="VIP"
<%
if request("action")="up" then
sql="select user_type from member where user_id="&request("user_id")
rs.open sql,conn,3,3
if rs.eof then
response.write "没有此用户信息!"
else
rs("user_type")="VIP"
response.write "用户升级为VIP会员成功!"
rs.update
end if
end if
%>
(3)添加会员:只提供简单的添加用户名和密码
<%
if request("action")="save" then
if request("user")="" then response.end
sql="select * from member"
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,3,3
rs.addnew
rs("user_name")=request("user")
rs("user_pass")=md5(request("pass"),32)
rs("user_type")=request("type")
rs.update
rs.close
response.write request("type") &"用户添加成功"
response.write "
"
response.write "返回"
else
'response.end
%>
(1)添加新闻:该功能用于添加新闻信息,用rs.addnew,rs("news_title") =news_title,rs("news_content")=news_content,rs.updat来实现功能,设计思想首先判断输入信息的标头和内能是否为空,如果为空就返回一个信息“数据不能为空的信息提示”并不进行写入数据库中,返回重新添加,如果两个数据都不为空就写入数据库,更新数据库news表,然后返回继续添加新闻信息。
(2)修改删除新闻:该功能主要用与修该和删除新闻,其中删除用rs.delete来实现功能,设计思想是直接从数据库中读出数据,然后用删除语句,将其信息删除,然后更新数据库news表
(3)添加测评:该功能用于添加产品信息测评的,实现方式和添加新闻功能是同样的,实现语句为rs.addnew,rs("news_title")=news_title,rs (" news _ content ")=news_content,rs.update。
(4)修改删除测评:主要实现修改和删除测评信息,利用rs.delete将其信息删除,然后更新数据库表cp。
(5)添加药品常识:主要实现添加药品常识信息,实现方式和思路同添加新闻和添加测评是同样的。
(6)修改删除测评:主要实现修改和删除测评信息,实现方式同修改删除新闻一样。
该系统是一个在线销售系统,分成前台和后台两个部分,前台能完成的功能主要包括:用户注册登录,查询商品,显示日期,定单投诉更改资料等;后台部分主要完成的功能有:管理商品,定单管理,用户管理,网站管理等。由于设计是基于B/S模式,该系统具有良好的可移植性等优点,并且具有相当不错的应用前景。同时由于该系统使用的是基于VBScript和JavaScript的ASP技术,使我对该门技术又有了更加深入的了解,并且对应用Dreamweaver制作静态页面也有了相当的心得。由于ASP技术相对现在流行得JSP等技术在安全性方面存在一定得差距,所以该系统在安全性方面存在与生俱来的劣势,安全性的增强将有待于将来在页面中加入更多的安全方面的JavaScript等安全组件。由于知识的缺乏,还有很多小细节上还没有处理完善(比如说一些限制条件还没有加进去),有待功能完善。