1、 . B2C电子商务平台分析与设计报告2005年10月guanzewen163. 关泽文19 / 22一、项目定义2二、需求分析32.1 B2C市场存在的意义32.2 现存B2C市场的缺陷32.3 本系统B2C网上交易平台概述4三、系统分析53.1 业务流程分析53.2信用体制6四、系统设计74.1系统运行基础环境74.2 数据库设计84.3系统设计94.4系统核心代码10五、系统总结13一、项目定义伴随着信息化时代的到来,人类的生产方式、思维方式、生活方式与其它活动方式发生了深刻的变化。消费方式既受到技术进步、电子网络普与、数字化变革的直接影响,同时也受到由此而引起的人们观念、思维模式变化所
2、带来的深层次的作用。信息经济对消费的影响是巨大的.消费者选择网上购物的心理因素有多种,如非网络购物无法满足个人欲望、购物经验很少或不习惯上街购买、商店人员态度不佳、对商店购物有强烈的排斥、所购买的东西不想让人知道或者想拥有别人所没有的商品等等因素。网络购物的隐蔽性和产品独特性,恰可满足这些需求。利用家中电脑连上网络,消费者足不出户,就可到世界各地采购。针对这些特点,此项目在重点放在开发一个强大的电子商务,以满足广大消费者的网上购物需求。二、需求分析2.1 B2C市场存在的意义随着人们消费水平的提高,个人消费品市场空前发展,我们发现,越来越多的人拥有大量的闲置商品。这些商品有新有旧,但都具有完整
3、的使用价值。拥有者们也许现在不需要它们,便想到把它们出售。可是如何找到买主,却成为一个令人头疼的问题。以学生为例。由于学生爱追赶时尚潮流,而且购买行为往往缺乏计划性,使得他们常常因一时冲动买下某物,之后又发现并没有用。学生对于电脑、手机、MP3等电子产品需求较多,而这些东西更新又很快,需求的不同使他们希望能互通有无。一些旧书籍、杂志、音像制品、生活用品等,也是留之无用、弃之可惜,若能卖给需要的人不是皆大欢喜?与此同时,随着学生们的商品意识的加强,有很多同学以代理商品销售为兼职,有开设个人店铺的需求。但由于资金方面的限制,不可能开设真正的店铺。可是由于供需双方市场的不对称性,卖主很难找到合适的买
4、主,有这些需求的人更是不知道有谁要出售,造成这种B2C交易很难达成。目前普遍的办法是卖者在校摆个地摊。做代销的同学到处帖广告或者直接上门推销,展示并出售自己的商品,可是时间、地点、规模都受到限制,而且要耗费大量的时间和体力,还未必有好的效果。要是有一个平台,让供需双方集中地发布交易信息,并提供双方的联系方式,促成其交易的达成,将为买卖双方带来极大的便利。2.2 现存B2C市场的缺陷面对如此商机,精明的商家不会无动于衷,现在B2C网上交易市场已经发展壮大起来。但是我们分析后发现,现存B2C市场存在着一些缺陷,尤其不能适应校园市场的需求。我们调查发现,目前B2C部分都是拍卖。当然,拍卖作为B2C的
5、主导交易模式,其优点是存在的,但它的缺陷也是明显的:交易时间长,买卖双方要耗费大量的时间和精力。这种模式适合于价值较高的商品,而学生的闲置商品往往是耐用消费品,价值较低,拥有者希望尽快出手,而并不想耗费太多精力计较一点价格差异,因此拍卖模式对校园市场尤其不适合。现存的另一种B2C网上交易市场就是类似于小百合bbs的fleamarket。这是以bbs为平台,供交易双方发布信息,并提供站联系。但这种方式是很初级的,它只是以交易信息作为bbs的一项容,而不是专业的交易平台。它没有按商品分类,用户查找起来很不方便,只能“误打误撞”;由于它是非正式的,缺乏交易规则约束,尤其是它没有保证交易者的信用保障,
6、也没有信用评估体系,交易者要承担一定的风险,使它的可信度下降。鉴于以上分析,我们的系统为买卖双方提供一个集中的B2C信息交易平台,促进买卖双方的信息沟通,较完善的信用机制提供一定程度上的信用保证,为同学们提供方便的同时保证同学们交易的安全性。2.3 本系统B2C网上交易平台概述系统采取虚拟货币进行交易和流通,用户通过汇款或银行划账等方式用真实货币换取虚拟货币,卖方按其类型收取不同的费用,费用通过本站系统的虚拟货币扣除,用户在本站通过搜索或分类查找,寻求交易伙伴。用户可以查询卖方的相关信息和信用评价等指标,决定是否购买。交易中,按卖方的类型(一般的零散用户或店铺用户)分成两种不同的模型:系统为有
7、较大商品销售需求的卖方提供的店铺空间,集中展示个人商品,并为卖家提供一定的优惠和折扣。用户通过分类搜索,查询到满意的商品。同时可以查看到卖方的上站时间、上架商品次数以与是否有在本站交易违约行为的记录等历史信息,如果是店铺卖方,买家还可以查询店铺的相关历史信息。决定购买后用户可通过站或其他联系方式联系。双方成交后,在网下自行交易,本站不监控交易过程。在交易过程中如有哪一方出现欺骗行为,可以进行投诉,经系统管理员确认后,对欺骗方进行惩罚。本系统对个人店铺的卖方用户实行会员制,收取会员费用;对一般的零散型卖方按所发布的商品信息收取费用,费用通过虚拟货币扣除。本系统对买方不收取费用。在商店运行的初期,
8、为了提高的知名度和扩大的影响力,本系统在1年不收取费用。本系统保证了买卖双方的交易的安全性。使用了CA认证的方法,数字安全证书利用一对互相匹配的密钥进行加密、解密。每个用户自己设定一把特定的仅为本人所知的私有密钥(私钥),用它进行解密和签名;同时设定一把公共密钥(公钥)并由本人公开,为一组用户所共享,用于加密和验证签名。商户可以公开其公开密钥,而保留其私有密钥。购物者可以用人人皆知的公开密钥对发送的信息进行加密,安全地传送以商户,然后由商户用自己的私有密钥进行解密。伴随着信息化时代的到来,人类的生产方式、思维方式、生活方式与其它活动方式发生了深刻的变化。消费方式既受到技术进步、电子网络普与、数
9、字化变革的直接影响,同时也受到由此而引起的人们观念、思维模式变化所带来的深层次的作用。信息经济对消费的影响是巨大的,主要表现在:1消费领域拓宽、新消费方式层出不穷2消费结构趋于合理、消费阶段向上更替3消费满足感更高、消费个性更强4消费者价值观转变、消费观提升三、系统分析3.1 业务流程分析用户进入本须注册并取得账号后方能进行交易。若没有注册,也可以浏览商品信息,但不能获得卖方或买方的联系方式,也不能对商品留言或在论坛发表观点。用户登录后,可以发布商品信息,买方浏览所需商品,双方供需匹配后联系,进行实际交易。由此得出本系统的业务流程分为三部分:用户注册登陆、交易过程、CA认证。下面分别予以说明:
10、3.1.1 用户注册登陆 业务流程图如下所示:用户注册登录的过程分为散户注册和个人店铺用户注册。系统要求用户注册真实信息。如果因用户注册为非真实信息而造成的任何损失本系统不予以负责。对于零散用户,我们采用email地址作为个人身份的验证标识。用户注册时,输入个人的email地址,本将其密码发送至其中,用户用该密码登录本,成为正式用户。此举在一定程度上保证了注册者的身份可靠,防止恶意注册。若为店铺用户,需要进行实地验证。店铺用户需向系统出具保证个人真实身份的证件。比如件、学生证等。经本系统管理人员确认后予以通过。以此最大限度的保证店铺用户的身份真实性,为买方提供信用保障。散户用户在注册后可以申请
11、升级为店铺用户。已登录用户可随时修改密码。3.1.2卖方发布商品信息系统的卖家可以是一般的零散用户也可以是店铺用户。卖家发布所要出售的商品信息,可配以文字描述和图片,商品信息在本按类别显示。若卖方为一般的零散用户,按发布的商品信息收取少量的费用,按卖方所需,每个商品设置不同的保留时间,按不同时间收取费用,在规定的时间如卖方未将商品下架,系统自行删除商品。若为个人店铺用户,可以申请不同的空间集中展示自己的商品。按不同的空间收取不同的会员费用。个人店铺提供了更为详尽的商品信息。除了一般的商品信息外,还有商品的数量以与已定购的数量,供买方作为购买参考。3.1.3买方查询卖方和商品信息,进行交易对于买
12、家,可以在分类区查找商品信息;也可以用站搜索器按商品名称、类别、卖家、价格等关键字搜索;还可以去个人店铺中寻找。一旦找到与自己需求匹配的商品,可以通过查看卖家的评价信息借以判断卖家的信用。买方可以与卖家在站联系,也可以通过卖方公布的其他联系方式联系(卖方可选择公布其站外联系方式)。此后双方的交易过程为本系统的外部行为,交易在网下进行。买卖行为为买卖双方的个人行为,买卖双方在交易前要确认对方身份的真实性。若因个人行为不慎造成的损失不在本系统负责的围之。对于零散卖方,在商品卖出后卖方可自行将其下架;如若在一定期限商品未下架,系统将予以下架。对于店铺卖方,由用户自行管理商品。根据用户的会员等级予以不
13、同数量的商品货架,本鼓励用户尽快将已出售商品下架,若买方用户投诉店铺卖方长期空货架行为,系统对卖方的信用进行惩罚。本系统提供一定的信用评价机制,为交易双方提供一定程度上的信用参考价值,最大限度的保证交易双方交易的安全性。对零散拥护和店铺用户,提供不同的信用评价。卖方用户必须留存一定金额的货币,如有需要(如取消店铺权限、取消账号等)可以在规定时间将站的虚拟货币进行结算。3.1.4买方使用CA中心提供的私钥签名信息。买家需要购买商品,必须使用自己的私钥对自己的信息进行加密,以肯定其身份和不要否认地提交信息。3.2信用体制本系统与相似的B2C网上商店相比,利用本系统部的CA认证中心,监控买卖双方的交
14、易行为,提供一个较为有效信用保障体制。数字安全证书利用一对互相匹配的密钥进行加密、解密。每个用户自己设定一把特定的仅为本人所知的私有密钥(私钥),用它进行解密和签名;同时设定一把公共密钥(公钥)并由本人公开,为一组用户所共享,用于加密和验证签名。商户可以公开其公开密钥,而保留其私有密钥。购物者可以用人人皆知的公开密钥对发送的信息进行加密,安全地传送以商户,然后由商户用自己的私有密钥进行解密。用户要进行网卡交易,必须提供自己的认证信息,所以要在CA认证中心取得电子认证证书,认证中心的基本流程是注册个人资料申请个人PIN(个人识别码),管理员审批个人信息并给合格用户发布系统PIN,这个系统PIN是
15、申请电子认证证书必备的,用户可以在查询个人认证资料中查询自己的系统PIN,根据系统PIN,用户可以申请电子认证证书,经过管理员的审批,可以得到电子认证证书。并由个人认证资料查询处查到个人证书号。四、系统设计4.1系统运行基础环境CPU:1.0G Hz 以上(推荐)存:128M 以上(推荐)操作系统:Windows 2000技术选择:Jsp+javabeanDBMS选择:MSSQL Server第三方厂家插件:BouncyCastleJCE运行技术平台硬件系统架构,采用目前IT业界流行和普遍采用的先进技术 WIN2000+JSP+MSSQLServer来构建。 开发的技术平台服务器环境客户端环境
16、windows2000 serverJsp/xmlms sql 2000ie 4.x 以上netscape 4.x以上4.2 数据库设计4.2.1 数据库分析与数据库规根据数据流程分析和ER分析,实体以与实体间的关系可以讲数据库分成:users, products, orders, assess, requires, categories, mailbox, message个表。强关联关系要求一个商品必须对应一个用户,一个定单必须对于一个用户,一个ordr_items必须对应一个orders表,一个shop必须对应一个用户,products_categorites必须同时对应一个product
17、s和一个categories表单,一个massage必须对应一个users表。图中表示出了各表之间的主键和外键。4.3系统设计4.3.1 设计模式简介模块各自的职责:Model 的作用主要是封装数据与系统的状态,另外太还要处理商业逻辑,但是在目前的设计常是把商业逻辑同表现层分开View 是用来显示和发送request的一个UI,在View通常没有商业处理,只是将要处理的数据格式化(HTML)Controller 它只要负责接受request,选择相应的response视图,并传递模型数据4.3.2为什么选用MSSQL ServerMSSQLServer是一个强大的的DBMS强大:它的功能和效率
18、绝对比许多DBMS要强, 在Windows平台上,Jsp+Mssqlserver是运行效率相当高的。数据:在RSA非对称加密中,二进制流是用Bytes定义的,用Access无法达到那个效果。4.3.3系统整体设计系统为了以后的扩展应该支持模块的动态插入,也就是真个系统应该是类似一个CMS系统4.4系统核心代码4.4.1数据库服务层作用:作为一个javabean,连接数据库,每一页jsp只要引用些javabean容就可以连接数据库主要容:faq.javapublic class faq2 protected Connection conn = null;/Connection接口protecte
19、d Statement stmt = null;/Statement接口protected ResultSet rs = null;/记录结果集protected PreparedStatement prepstmt = null;/PreparedStatement接口protected boolean isConnect=true;/与数据库连接标识protected String sDBDriver=sun.jdbc.odbc.JdbcOdbcDriver;protected String sConnStr=jdbc:odbc:jspshop;public faq2() tryClass
20、.forName(sDBDriver);conn=DriverManager.getConnection(sConnStr,);stmt= conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);catch (Exception e)System.out.println(e);isConnect=false;public Statement getStatement() return stmt;public Connection getConnection() return conn;
21、public PreparedStatement getPreparedStatement(String str) try prepstmt = conn.prepareStatement(str);return prepstmt; catch (SQLException ex) ex.printStackTrace();return null;public ResultSet executeQuery(String str) try /为了形成多个数据集,使用到这方法。Statementstmt1;stmt1 = conn.createStatement(ResultSet.TYPE_SCR
22、OLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);rs = stmt1.executeQuery(str);return rs; catch (SQLException ex) return null;public void executeInsert(String str) throws Exception stmt.executeUpdate(str);public int executeUpdate(String str) throws Exception return stmt.executeUpdate(str);public void exec
23、uteDelete(String str) throws Exception stmt.execute(str);public void Close() throws SQLException if ( stmt != null )stmt.close();stmt = null;conn.close();conn = null;public void close() throws SQLException if ( stmt != null )stmt.close();stmt = null;conn.close(); conn = null; 4.4.2 rsa非对称加密代码作用:实现RS
24、A非对称加密,在中使用公私钥加密,解密。主要容:rsa.javaimport java.security.*;import java.security.interfaces.*;import org.bouncycastle.jce.provider.*;import java.security.spec.PKCS8EncodedKeySpec;import java.security.spec.X509EncodedKeySpec;public class rsa private byte publickey_byte;private byte privatekey_byte;private
25、 javax.crypto.Cipher rsaCipher;public rsa()KeyPair keys=null;RSAPublicKey key1;RSAPrivateKey key2;Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider();tryKeyPairGenerator kpg=KeyPairGenerator.getInstance(RSA);/指定算法kpg.initialize(1024); /指定长度keys=kpg.genKeyPair();key1 = (RSAP
26、ublicKey)keys.getPublic();/公钥key2 = (RSAPrivateKey)keys.getPrivate();/私钥publickey_byte=key1.getEncoded();privatekey_byte=key2.getEncoded();rsaCipher=javax.crypto.Cipher.getInstance(RSA,BC);catch(NoSuchAlgorithmException e1)catch(NoSuchProviderException e2)catch(javax.crypto.NoSuchPaddingException e3
27、)/输出密钥对的byte数据/public byte getPublicKey()return publickey_byte;public byte getPrivateKey()return privatekey_byte;/根据byte数据产生密钥对/public PublicKey createPublicKey(byte publicKeyBytes)throws ExceptionX509EncodedKeySpec keySpec=new X509EncodedKeySpec(publicKeyBytes); /产生RSA公钥KeyFactory keyFactory=KeyFac
28、tory.getInstance(RSA);return keyFactory.generatePublic(keySpec);public PrivateKey createPrivateKey(byte privateKeyBytes)throws Exception/产生RSA私钥 PKCS8EncodedKeySpec keySpec=new PKCS8EncodedKeySpec(privateKeyBytes);KeyFactory keyFactory=KeyFactory.getInstance(RSA);return keyFactory.generatePrivate(ke
29、ySpec);/RSA公钥加密/public byte publicKeyEncrypt(byte publicKeyBytes,String originalStrings)throws ExceptionPublicKey publicKey=createPublicKey(publicKeyBytes); /产生RSA公钥rsaCipher.init(javax.crypto.Cipher.ENCRYPT_MODE,publicKey); /加密byte bytes1 = rsaCipher.doFinal(originalStrings.getBytes();return bytes1
30、; /返回被加密的二进制数据/RSA私钥解密/public String privateKeyDecrypt(byte privateKeyBytes,byte encryptedBytes)throws ExceptionPrivateKey privateKey=createPrivateKey(privateKeyBytes); /产生RSA私钥rsaCipher.init(javax.crypto.Cipher.DECRYPT_MODE,privateKey); /解密byte bytes1 = rsaCipher.doFinal(encryptedBytes);return new
31、String(bytes1); /返回原String./RSA私钥加密/public byte privateKeyEncrypt(byte privateKeyBytes,String originalStrings)throws ExceptionPrivateKey privateKey=createPrivateKey(privateKeyBytes); /产生RSA私钥加密rsaCipher.init(javax.crypto.Cipher.ENCRYPT_MODE,privateKey); /加密byte bytes1 = rsaCipher.doFinal(originalStr
32、ings.getBytes();return bytes1; /返回被加密的二进制数据/RSA公钥解密/public String publicKeyDecrypt(byte publicKeyBytes,byte encryptedBytes)throws ExceptionPublicKey publicKey=createPublicKey(publicKeyBytes); /产生RSA公钥rsaCipher.init(javax.crypto.Cipher.DECRYPT_MODE,publicKey); /解密byte bytes1 = rsaCipher.doFinal(encry
33、ptedBytes);return new String(bytes1); /返回原String.五、系统总结现代化的生活节奏已使消费者用于外出在商店购物的时间越来越少,拥挤的交通和日益扩大的店面延长了购物花费的时间和精力,商品的多样化使得消费者难以辨别自己所需的商品,消费者迫切需要新的快速方便的购物方式和服务。消费者通过电子商务网络,足不出户即可货比三家,节省时间、费用,提高采购效率,真正实现商品消费的Just In Time。消费者选择网上购物的心理因素有多种,如非网络购物无法满足个人欲望、购物经验很少或不习惯上街购买、商店人员态度不佳、对商店购物有强烈的排斥、所购买的东西不想让人知道或者
34、想拥有别人所没有的商品等等因素。网络购物的隐蔽性和产品独特性,恰可满足这些需求。利用家中电脑连上网络,消费者足不出户,就可到世界各地采购。电子商务的开发也成了热门和重要的部分,这直接关系到网上营销能否有效地进行,用Jsp+javabean+Mssqlserver开发电子商务,是程序员常常的选择。因为网上交易的身份认证直接关系到营销的安全,数字安全证书恰好能很好的解决这一问题。数字安全证书利用一对互相匹配的密钥进行加密、解密。每个用户自己设定一把特定的仅为本人所知的私有密钥(私钥),用它进行解密和签名;同时设定一把公共密钥(公钥)并由本人公开,为一组用户所共享,用于加密和验证签名。商户可以公开其公开密钥,而保留其私有密钥。购物者可以用人人皆知的公开密钥对发送的信息进行加密,安全地传送以商户,然后由商户用自己的私有密钥进行解密。经过了j2ee强大的处理,电子商务的进行应该有了很大的安全保证,这种新生的商务形式也会飞速发展。