数据库的设计图:
总共是四个表:Login(登录表),Fruit(水果表,货物表),Orderdetails(购物车表),Orders(购物单表)。
表以及字段名称
OrderDetails
Ids
OrderCode
FruitCode
Count
Orders
Code
UserName
OrderTime
Fruit
Ids
Name
Price
Source
Stack
Numbers
Image
Login
UserName
Name
Password Account
{dy}个界面:Index.aspx
用户名:XXX
密码:XXX
Index.aspx.cs
验证用户登录是否成功,在创建的LoginTableAdapter中写一个方法验证用户登录是否合法。
如果登录成功把用户名保存在Session对象(可以把它理解为我的一块内存)里面,并且跳转到Main.aspx页面(我的下一个页面)上。
第二个页面:Main.aspx
在这一个页面中,如果用到Datalist控件,{dy}步的操作时先把Fruit表的数据绑定到Datalist控件中,在DataList控件的事件:SelectedIndexChanged
双击进去写下面的一系列的方法。
{dy}步:获取我鼠标点击按钮的那一行数据的(相当于Fruit表中的某一行字段的ID值)ID值。
第二步:判断是否有购物车(判断OrderDetails表中是否存在数据):
如果有购物车,则创建一个Session对象,把这一行数据保存到我的Session对象里面。
如果没有购物车: if(Session["cart"]
== null)==>cart为Ssession对象
在这个Session中放一个OrderDetailsDataTable对象,这好比是创建了一个购物车。
那么下面总算有购物车了,
第三步:
判断我点击按钮的这种水果在购物车中是否存在?
如果存在,则在原来数量上累加。如果不存在,则在购物车中放入此水果,并且数量加变为1.
具体代码略。
在Main.aspx中所要实现的功能大体上就是以上三步,另外可以在Main.aspx页面中加上一个LinkButton(查看购物车的功能)转到下一个页面上去。
第三个页面:查看购物车以及实现下订单操作的页面:
把Session['cart']中的数据加载到这一个页面中来。可以用一个Datalist进行加载,道理和加载水果表的数据一样。
具体实现的功能:可以有删除我要购买的水果,这个功能就是把购买这种水果的数量减去1即可。
另外:作为一个完整的购物车,应该再加一个按钮才可。(这一步所带来的一系列操作被我理解为购物车的一个核心)
这个按钮的功能就是提交数据,我买东西得交钱。提交数据到Orders、OrderDetails表中。
OrderTableAdapter中写入一个方法,首先来检测我是否进行登录了,如果进行登录了,可以进行下面的操作,如果没有进行登录,则返回登录页面。
下面就是登录成功的情况下,我们要进行的操作:
下订单(付款):
我们看到在Orders(下订单)的这张表中有三个字段Code是编号(可以由Guid来生成,或其它方法都可以。例如:
New
DateTime().toString("yyyyMMddhhmmssms")-->把当前的时间(xx到毫秒,作为Code字段的值插入到数据库中。)),UserName结账人的姓名(此字段可以通过登录时候保存的Session对象进行获取),OrderTime(结账时间)。
三步操作:
{dy}步:把买的商品数量去除掉,这步操作在Fruit表中进行。
FruitTableAdapter 中可以写入一个方法来实现这个功能。代码略。
第二步:把数据插入到Orders(下订单的表)中。
可以在OrderTableAdapter中写一个插入的方法,三个字段上面说了。
第三步:把数据插入到OrderDetails表中。
在OrderDetailsTableAdapter中写入一个方法来插入数据,我创建的表有四个字段:
以上的操作都是在点击下订单(付款)这个按钮时候进行的一系列操作。
在界面一和界面二当中,只是把数据展现出来,并没有把数据写入到数据库当中,第三个页面才是真正把数据写入到数据库中的。
以上为本人分析的购物车程序,又不完善的地方,我日后会更多的学习的。