西京学院经济系
《动态网站(ASP)建设》
实 训 报 告
专业 及 班级:_电子商务<专>0902_
姓 名: 周 建 珍______
学 号: 0911160252
指 导 老 师: 杜 永 红
报告完成时间:_ 20##-06-26 _
一、 实训课题标题;
通讯录
二、 网站整体构架
三、 数据库设计具体实现;
创建数据库文件52.mdb,包含gly表和zjz表
四、网站制作过程和网站首页的附图
(1)、连接数据库文件conn.asp
由于很多文件都要用到连接数据库的语句,所以把这部分,然后在其他文件中用“<!--#include file=”conn.asp”-->”将其包含过来,这就相当于将这些语句直接写在别的
图3:conn.asp
(3)首页index.asp
这是本通讯录的首页,其中有排序显示数据技术,还增加了“添加记录、查找记录”的超链接,
图4:首页index.asp
(4)详细信息页面xiangxi.asp
在首页中单击“详细”超链接,就会打开详细页面,在其中就可以根据传递过来的信息显示相应记录的详细信息,下面为详细信息页面重要代码:
<!--#include file="conn.asp"-->
<%dim rs,id,sql
id=request.QueryString("id")
sql="select * from zjz where id="&id
set rs=zjz.execute(sql)%>
(5)、查找用户页面
其中包括chaxun.asp、select.asp两个页面,其中chaxun.asp是静态网页,而处理页面是select.asp,下面为查找用户处理页面重要代码:
<%dim chaxun,lb
chaxun=request.Form("chaxun")
lb=request.Form("lb")
if chaxun="" then
response.Redirect "select.asp"
end if
dim sql,rs
if lb="username" then
sql="select * from zjz where username like '%"&chaxun&"%'"
elseif lb="email" then
sql="select * from zjz where email='"&chaxun&"'"
elseif lb="intro" then
sql="select * from zjz where intro like '%"&chaxun&"%'"
end if
set rs=zjz.execute(sql)%>
(6)、添加用户页面
其中包括form.htm、add.asp两个页面,其中form.htm是htm页面并没有VBSCRIPT,而处理页面是add.asp,下面为添加用户处理页面代码:
<%dim username,pwd,email,sex,age,tel,intro
username=request.Form("username")
pwd=request.Form("pwd")
email=request.Form("email")
sex=request.Form("sex")
age=request.Form("age")
tel=request.Form("tel")
intro=request.Form("intro")
if username="" or pwd="" or email="" then
response.Write "请您填写完整的信息!请<a href='form.htm'>返回</a>"
response.End
end if
if instr(email,"@")=0 then
response.Write "请您填写正确的邮箱格式!请<a href='form.htm'>返回</a>"
response.End
end if
if age<>"" then
if isnumeric(age)=false then
response.Write "请您填写正确的年龄!请<a href='form.htm'>返回</a>"
response.End
end if
dim sql
sql="insert into zjz(username,pwd,sex,age,tel,email,intro,submitdate) values('"&username&"','"&pwd&"','"&sex&"',"&age&",'"&tel&"','"&email&"','"&intro&"',#"&now()&"#)"
zjz.execute(sql)
response.Redirect("index.asp")
end if%>
(7)、删除用户页面
del.asp一个页面,这个页面非常简单,只需要根据传递过来的ID将记录伤处就可以,其中代码为:
<!--#include file="conn.asp"-->
<%
dim id,sql
id=request.QueryString("id")
sql="delete from zjz where id="&id
zjz.Execute(sql)
response.Redirect "index.asp"
%>
(8)、更新用户页面
其中包括gxform.htm、update.asp两个页面,其中gxform.htm是静态页面,而处理页面是update.asp,下面为更新用户处理页面代码:
<!--#include file="conn.asp"-->
<%dim username,pwd,email,sex,age,tel,intro,id
id=request.Form("id")
username=request.Form("username")
pwd=request.Form("pwd")
email=request.Form("email")
sex=request.Form("sex")
age=request.Form("age")
tel=request.Form("tel")
intro=request.Form("intro")
if username="" or pwd="" or email="" then
response.Write "请您填写完整的信息!请点击后退"
response.End
end if
if instr(email,"@")=0 then
response.Write "请您填写正确的邮箱格式!请请点击后退"
response.End
end if
if age<>"" then
if isnumeric(age)=false then
response.Write "请您填写正确的年龄!请请点击后退"
response.End
end if
dim sql
sql="update zjz set username='"&username&"',sex='"&sex&"',age="&age&",tel='"&tel&"',email='"&email&"',intro='"&intro&"'where id="&id
zjz.execute(sql)
response.Redirect "index.asp"
end if%>
(9)管理员页面
当管理员在gly.asp这个页面登陆后,就可以打开gly_cl.asp、glyindex.asp这两个文件修改和删除所有人的信息了。
五、网站实现的关键技术
(1)、数据库设计
其中不只用到一个数据表,有管理员和普通用户两个表;
(2)、数据库的添加、更新、查询、删除
(3)、session对象的运用等;
六、网站功能说明
方便记录同学的信息,随时更新和查询。用户可以注册、登陆、修改个人信息。
七、附录或参考资料
《网络程序设计—ASP》教材、通讯录网站
第二篇:网上书店 ASP.NET实训报告
目 录
实习目的 .................................................................................................. - 1 - 实习任务 .................................................................................................. - 1 - 网络书店系统项目设计书 ........................................................................ - 1 -
1.公共模块设计 ........................................................................................ - 1 -
1.1.文件夹及文件架构 ...........................................................................- 1 -
1.2.Web.Config文件配置 ......................................................................- 2 -
1.3.公共类设计 ......................................................................................- 3 - 数据操作类 ......................................................................................... - 4 - 用户操作类 ......................................................................................... - 6 - 产品操作类 ....................................................................................... - 12 -
2.网站前台功能模块设计 ....................................................................... - 20 -
2.1.母版页设计 .................................................................................... - 20 -
2.2.用户注册及信息修改模块设计 ...................................................... - 22 - 页面设计 ........................................................................................... - 22 - 页面后台代码 ......................................................... 错误!未定义书签。
3.网站后台功能模块设计 ....................................................................... - 25 -
3.1.后台登录 ........................................................................................ - 28 -
3.2.产品管理模块设计 ............................................... 错误!未定义书签。
4.难点尚未解决问题..................................................... 错误!未定义书签。 实习总结 ................................................................................................ - 29 -
II
实习目的
加强ASP设计及操作方面的技能,体会面向对象的思想开发软件,使大家能够初步体验到在将来实际工作中,作为一个软件开发人员所应做的工作和应该掌握的基本技能。
实习任务
完成对于网络书店系统相关的设计,并从中进一步学习课程相关的内容,达到学以致用的效果。 网络书店项目设计书
1.公共模块设计
1.1.文件夹及文件架构
1.文件夹架构
说明:列出整个网络书店web项目的文件夹架构体系,如下图所示
2.程序文件架构
说明:列出网络书店项目文件构成的基本架构,如下图所示
- 1 -
1.2.所需Web.Config文件配置如下
<?xml version="1.0"?>
<!--
注意: 除了手动编辑此文件以外,您还可以使用
Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
“网站”->“Asp.Net 配置”选项。
设置和注释的完整列表在
ments 中,该文件通常位于
\Windows\Microsoft.Net\Framework\v2.x\Config 中
-->
<configuration>
<appSettings>
<add key="ConnectionString" value="Data Source=LENOVO-92318959\SQLEXPRESS;Initial Catalog=DB-NetShops;Integrated Security=True"/>
</appSettings>
<connectionStrings>
<add name="DB-NetShopsConnectionString" connectionString="Data
Source=LENOVO-92318959\SQLEXPRESS;Initial Catalog=DB-NetShops;Integrated Security=True" providerName="System.Data.SqlClient" />
<add name="DB-NetShopsConnectionString2" connectionString="Data
Source=LENOVO-92318959\SQLEXPRESS;Initial Catalog=DB-NetShops;Integrated Security=True" providerName="System.Data.SqlClient" />
<add name="DB-NetShopsConnectionString3" connectionString="Data
- 2 -
Source=LENOVO-92318959\SQLEXPRESS;Initial Catalog=DB-NetShops;Integrated Security=True" providerName="System.Data.SqlClient" />
<add name="DB-NetShopsConnectionString4" connectionString="Data
Source=LENOVO-92318959\SQLEXPRESS;Initial Catalog=DB-NetShops;Integrated Security=True" providerName="System.Data.SqlClient" />
<add name="DB-NetShopsConnectionString5" connectionString="Data
Source=LENOVO-92318959\SQLEXPRESS;Initial Catalog=DB-NetShops;Integrated Security=True" providerName="System.Data.SqlClient" />
<add name="DB-NetShopsConnectionString6" connectionString="Data
Source=64F3F49861404AF;Initial Catalog=DB-NetShops;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<!--
设置 compilation debug="true" 可将调试符号插入
已编译的页面中。但由于这会
影响性能,因此只在开发过程中将此值
设置为 true。
-->
<compilation debug="true"> </compilation> <!--
通过 <authentication> 节可以配置 ASP.NET 用来
识别进入用户的
安全身份验证模式。
-->
<authentication mode="Windows"/>
<!--
如果在执行请求的过程中出现未处理的错误,
则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
开发人员通过该节可以配置
要显示的 html 错误页
以代替错误堆栈跟踪。
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
-->
</system.web>
</configuration>
1.3.公共类设计
说明:在网站开发项目中以类的形式来组织、封装一些常用的方法和事件,可以提高代码的重用率,方便代码的管理。以企业信息网站为例,设计了以下公共类,如
- 3 -
数据操作类
包含的方法:
? 打开数据库连接
- 4 -
? 关闭连接
? 释放数据库资源
? 传入参数并且转换为SqlParameter类型
? 执行参数命名文本(无数据库中数据返回)
? 将命令文本添加到SqlDataAdapter
? 将命令文本添加到SqlCommand
UML类
相关代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
/// <summary>
/// dataoperate 的摘要说明
/// </summary>
public class dataoperate
{
public dataoperate()
{ //
//TODO: 在此处添加构造函数逻辑
//
}
/// <summary>
/// 用来截取小数点后nleng位
/// </summary>
/// <param name="sString">sString原字符串。</param>
/// <param name="nLeng">nLeng长度。</param>
/// <returns>处理后的字符串。</returns>
public string VarStr(string sString, int nLeng)
{
- 5 -
int index = sString.IndexOf(".");
if (index == -1 || index + 2 >= sString.Length) return sString;
else
return sString.Substring(0, (index + nLeng + 1)); }
}
用户信息类
属性:
? 定义用户信息——数据结构(实体)
包含的方法:
? 添加用户信息
? 修改用户信息
? 查询用户信息
? 用户登录
UML
相关代码如下:
using System;
using System.Data;
- 6 -
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Data.SqlClient;
/// <summary>
/// user 的摘要说明
/// </summary>
public class userinfo
{
DataBase data=new DataBase (); public userinfo()
{
//
// TODO: 在此处添加构造函数逻辑 //
}
#region 基本数据类型
private string memberID = "";
public string MemberID
{
get { return memberID; } set { memberID = value; } }
private string name = "";
public string Name
{
get { return name; }
set { name = value; }
}
private string sex = "";
public string Sex
{
get { return sex; }
set { sex = value; }
}
private string password = "";
public string Password
{
- 7 -
get { return password; } set { password = value; } }
private string phone = "";
public string Phone
{
get { return phone; } set { phone = value; } }
private string emails = "";
public string Emails
{
get { return emails; } set { emails = value; } }
private string city = "";
public string City
{
get { return city; } set { city = value; } }
private string address = "";
public string Address
{
get { return address; } set { address = value; } }
private string post = "";
public string Post
{
get { return post; } set { post = value; } }
private string tconsumption = "";
public string TConsumption {
get { return tconsumption; } set { tconsumption = value; } }
- 8 -
private string marker = "用户";
public string Marker
{
get { return marker; }
set { marker = value; }
}
#endregion
#region 用户登录
/// <summary>
/// 用户登录
/// </summary>
/// <returns></returns>
public DataSet UserLogin()
{
SqlParameter[] prams = {
data.MakeInParam("@name", SqlDbType.VarChar, 100,Name),
data.MakeInParam("@pwd", SqlDbType.VarChar, 50, Password),
};
return (data.RunProcReturn("SELECT * FROM tb_Member WHERE (Name = @name) AND (Password = @pwd) AND (Marker='用户')", prams, "tb_Member"));
}
/// <summary>
/// 管理员登录
/// </summary>
/// <returns></returns>
public DataSet AdminLogin()
{
SqlParameter[] prams = {
data.MakeInParam("@name", SqlDbType.VarChar, 100,Name),
data.MakeInParam("@pwd", SqlDbType.VarChar, 50, Password ),
};
return (data.RunProcReturn("SELECT * FROM tb_user WHERE (Name = @name) AND (Pwd = @pwd) AND (Marker='管理员')", prams, "tb_User"));
}
#endregion
#region 添加--用户信息
/// <summary>
/// 添加--用户--信息
/// </summary>
/// <returns></returns>
public int AddUser()
{
SqlParameter[] prams = {
data.MakeInParam("@Name", SqlDbType.VarChar,
- 9 -
100,Name ),
data.MakeInParam("@Password", SqlDbType.VarChar, 50,Password),
data.MakeInParam("@Sex", SqlDbType.Char, 4, Sex ), data.MakeInParam("@Phone", SqlDbType.VarChar, 20, Phone ),
data.MakeInParam("@Post", SqlDbType.VarChar, 20, Post ),
data.MakeInParam("@Emails", SqlDbType.VarChar,50, Emails),
data.MakeInParam("@City", SqlDbType.VarChar,50, City ),
data.MakeInParam("@Address", SqlDbType.VarChar, 100, Address ),
};
return (data.RunProc("INSERT INTO tb_Member
(Name,Sex,Password,Phone,Emails,City,Address,Post)"
+ " VALUES (@Name,@Sex,@Password,@Phone,@City,@Emails,@Address,@Post)", prams)); }
#endregion
#region 查询--用户信息
/// <summary>
/// 根据--姓名--得到用户信息
/// </summary>
/// <param name="tbName"></param>
/// <returns></returns>
public DataSet FindUserByName(string tbName)
{
SqlParameter[] prams = {
//data.MakeInParam("@marker", SqlDbType.Char,10, Marker ),
data.MakeInParam("@name", SqlDbType.VarChar, 100,Name+"%"),
};
//return (data.RunProcReturn("select * from tb_User where Name like @name AND (Marker=@marker)", prams, tbName));
return (data.RunProcReturn("select * from tb_Member where Name like @name", prams, tbName));
}
public DataSet FindUserByMarker(string tbName)
{
SqlParameter[] prams = {
data.MakeInParam("@marker", SqlDbType.Char,10,
- 10 -
Marker ),
};
return (data.RunProcReturn("select * from tb_Member where Marker=@marker", prams, tbName));
}
/// <summary>
/// 得到所有--用户信息
/// </summary>
/// <param name="tbName"></param>
/// <returns></returns>
public DataSet GetAllUser(string tbName)
{
return (data.RunProcReturn("select * from tb_Member ORDER BY MemberID", tbName)); }
#endregion
#region 修改--用户--信息
/// <summary>
/// 修改--用户--信息
/// </summary>
/// <returns></returns>
public int UpdateUser()
{
SqlParameter[] prams = {
data.MakeInParam("@Name", SqlDbType.VarChar, 100,Name ),
data.MakeInParam("@Password", SqlDbType.VarChar, 50,Password),
data.MakeInParam("@Sex", SqlDbType.Char, 4, Sex ), data.MakeInParam("@Phone", SqlDbType.VarChar, 20, Phone ),
data.MakeInParam("@Post", SqlDbType.VarChar, 20, Post ),
data.MakeInParam("@Emails", SqlDbType.VarChar,50, Emails),
data.MakeInParam("@City", SqlDbType.VarChar,50, City ),
data.MakeInParam("@Address", SqlDbType.VarChar, 100, Address ),
};
return (data.RunProc("update tb_Member set
Password=@Password,Sex=@sex,Phone=@Phone,Post=@Post"
+ "City=@City,Email=@emailAddress=@Address where Name=@name", prams));
}
- 11 -
#endregion
#region 获取会员信息
/// <summary>
/// 获取会员信息
/// </summary>
/// <param name="P_Str_Name">会员登录名</param>
/// <param name="P_Str_Password">会员登录密码</param>
/// <param name="P_Str_srcTable">查询表信息</param>
/// <returns></returns>
public DataSet ReturnUIDs(string P_Str_srcTable)
{
SqlParameter[] prams = {
//data.MakeInParam("@Name", SqlDbType.VarChar, 50,P_Str_Name),
//data.MakeInParam("@Password", SqlDbType.VarChar, 50,P_Str_Password),
data.MakeInParam("@Name", SqlDbType.VarChar, 50,Name),
data.MakeInParam("@Password", SqlDbType.VarChar, 50,Password),
};
return (data.RunProcReturn("Proc_GetUserInfo", prams, P_Str_srcTable));
}
#endregion
}
商品信息类
? 定义产品信息——数据结构(实体)
包含的方法:
? 添加产品信息
? 修改产品信息
? 删除产品信息
? 查询产品信息
UML类图
- 12 -
相关代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls;
/// <summary>
/// book 的摘要说明
/// </summary>
public class GoodsInfoClass
{
public GoodsInfoClass()
{
//
// TODO: 在此处添加构造函数逻辑 //
}
DataBase data = new DataBase();
private int booksID; //商品编号
public int BooksID
{
get { return booksID; }
- 13 -
set { booksID = value; }
}
private float memberPrice;//会员价格
public float MemberPrice
{
get { return memberPrice; }
set { memberPrice = value; } }
private float marketPrice;//会员价格
public float MarketPrice
{
get { return marketPrice; }
set { marketPrice = value; } }
private int num;//商品数量
public int Num
{
get { return num; }
set { num = value; }
}
private float sumPrice;//小计
public float SumPrice
{
get { return sumPrice; }
set { sumPrice = value; }
}
}
购物车信息类
·定义产品信息——数据结构(实体)
包含的方法:
·想购物车中添加信息
·显示购物车中的信息
·删除购物车中的信息
··返回合计总数的DS
·删除指定购物车中的信息
·当购物车中商品数量改变时,修改购物车中的信息
- 14 -
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Data.SqlClient;
/// <summary>
/// shopcart 的摘要说明
/// </summary>
public class ShopCartClass
{
public ShopCartClass()
{
//
// TODO: 在此处添加构造函数逻辑 //
}
DataBase data = new DataBase();
private int booksID; //商品编号
public int BoodsID
{
get { return booksID; }
set { booksID = value; } }
private int bookName; //商品编号
- 15 -
public int BookName
{
get { return bookName; }
set { bookName = value; }
}
private float memberPrice;//会员价格
public float MemberPrice
{
get { return memberPrice; }
set { memberPrice = value; }
}
private float marketPrice;//会员价格
public float MarketPrice
{
get { return marketPrice; }
set { marketPrice = value; }
}
private int num;//商品数量
public int Num
{
get { return num; }
set { num = value; }
}
private float sumPrice;//小计
public float SumPrice
{
get { return sumPrice; }
set { sumPrice = value; }
}
#region 向购物车中添加信息
/// <summary>
/// 向购物车中添加信息
/// </summary>
/// <param name="P_Int_GoodsID">商品编号</param>
/// <param name="P_Flt_MemberPrice">会员价格</param>
/// <param name="P_Int_MemberID">会员编号</param>
public int AddShopCart(int P_Int_BooksID,float P_Flt_MarketPrice,float P_Flt_MemberPrice, int P_Int_MemberID,String P_Int_BookName)
{
int P_Int_num = 1;
SqlParameter[] prams = {
- 16 -
8,P_Int_BooksID), data.MakeInParam("@BooksID", SqlDbType.BigInt,
data.MakeInParam("@BookName", SqlDbType.NVarChar , 50,P_Int_BookName),
8,P_Flt_MemberPrice), data.MakeInParam("@MemberPrice", SqlDbType.Float,
data.MakeInParam("@MarketPrice", SqlDbType.Float, 8,P_Flt_MarketPrice),
data.MakeInParam("@MemberID", SqlDbType.BigInt, 8,P_Int_MemberID),
data.MakeInParam("@num", SqlDbType.Int, 8,P_Int_num),
};
return (data.RunProc("INSERT tb_ShopCart
(BooksID,MarketPrice,MemberPrice,MemberID,BookName,Num)"
+ " VALUES (@BooksID,@MemberPrice,
@MarketPrice,@MemberID,@BookName,@num)",prams));
}
#endregion
#region 显示购物车中的信息
/// <summary>
/// 显示购物车中的信息
/// </summary>
/// <param name="P_Str_srcTable">信息表名</param>
/// <param name="gvName">控件名</param>
/// <param name="P_Int_MemberID">会员编号</param>
public void SCIBind(string P_Str_srcTable, GridView gvName, int P_Int_MemberID) {
SqlParameter[] prams = {
data.MakeInParam("@MemberID",
SqlDbType.BigInt,8,P_Int_MemberID),
};
DataSet ds = data.RunProcReturn("select * from tb_ShopCart where MemberID=@MemberID", prams, P_Str_srcTable);
gvName.DataSource = ds.Tables[P_Str_srcTable].DefaultView;
gvName.DataBind();
}
#endregion
- 17 -
#region 返回合计总数的Ds
/// <summary>
/// 返回合计总数的Ds
/// </summary>
/// <param name="P_Str_srcTable">信息表名</param>
/// <param name="P_Int_MemberID">员工编号</param>
/// <returns>返回合计总数的Ds</returns>
public DataSet ReturnTotalDs(int P_Int_MemberID, string P_Str_srcTable)
{
SqlParameter[] prams = {
data.MakeInParam("@MemberID",
SqlDbType.BigInt,8,P_Int_MemberID),
};
return (data.RunProcReturn("select sum(Num),sum(MemberPrice*Num) from tb_ShopCart where MemberID=@MemberID", prams, P_Str_srcTable));
}
#endregion
#region 删除购物车中的信息
/// <summary>
/// 删除购物车中的信息
/// </summary>
/// <param name="P_Int_MemberID">会员编号</param>
public int DeleteShopCart(int P_Int_MemberID)
{
SqlParameter[] prams = {
8,P_Int_MemberID),
};
return (data.RunProc("delete from tb_ShopCart where MemberID=@MemberID", prams)); }
#endregion
#region 删除指定购物车中的信息
/// <summary>
/// 删除指定购物车中的信息
/// </summary>
- 18 - data.MakeInParam("@MemberID", SqlDbType.BigInt,
/// <param name="P_Int_MemberID">会员编号</param>
/// <param name="P_Int_CartID">商品编号</param>
public int DeleteShopCartByID(int P_Int_MemberID, int P_Int_CarID)
{
SqlParameter[] prams = {
data.MakeInParam("@MemberID", SqlDbType.BigInt, 8,P_Int_MemberID),
data.MakeInParam("@CarID", SqlDbType.BigInt, 8,P_Int_CarID),
};
return (data.RunProc("delete from tb_ShopCart where CarID=@CarID", prams)); }
#endregion
#region 当购物车中商品数量改变时,修改购物车中的信息
/// <summary>
/// 当购物车中商品数量改变时,修改购物车中的信息
/// </summary>
/// <param name="P_Int_MemberID">会员ID号</param>
/// <param name="P_Int_CartID">商品编号</param>
/// <param name="P_Int_Num">商品数量</param>
public int UpdateSCI(int P_Int_MemberID, int P_Int_CarID, int P_Int_Num)
{
SqlParameter[] prams = {
8,P_Int_MemberID), // data.MakeInParam("@MemberID", SqlDbType.BigInt,
data.MakeInParam("@CarID", SqlDbType.BigInt, 8,P_Int_CarID),
data.MakeInParam("@Num", SqlDbType.BigInt, 8,P_Int_Num),
};
return (data.RunProc("update tb_ShopCart set Num=@Num where CarID=@CarID", prams)); }
#endregion
}
- 19 -
2.网站前台功能模块设计
2.1.主页面设计
通过主页面得的设计可以让用户在登录以后清晰地观察到各模块的相关功能
页面设计如下:
按
类
别
修按
改查作
个看搜者
人购索
图按修改个人信息
信物出
息 车 书 版
社
按
书
名
查看购物车 搜索图书
- 20 - 按类别 按作者 按出版社按书名
作者:
出版社:
类别:
市场价格:
会员价格:
人气度:
简洁:
作者:
出版社:
类别:
市场价格:
会员价格:
人气度:
简洁:
主页面的设计可以在user文件夹设计main.aspx页面来实现:
- 21 -
2.2.用户注册及信息修改模块设计
页面设计
说明:列出页面设计图及该页面用到的主要控件(目的:规范控件命名),如用户注册页面Register.aspx设计效果图如下图,主要控件如下表格
用户名
密码:
确认密码
电话
家庭地址:
邮编
城市
邮箱:
性别:
两次输入的密码不正确 无效的邮箱 无效的邮编
- 22 -
相应的注册代码实现如下: using System;
using System.Data;
using System.Configuration; using System.Collections; using System.Web;
using System.Web.Security; using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class common_register : System.Web.UI.Page {
userinfo us = new userinfo();
protected void Page_Load(object sender, EventArgs e) {
if (!IsPostBack) {
if (Request["mark"] == null)//首先会判断改页面是为注册用户的注册操作,还是已登录用户的修改操作(已注册用户会从登录页面传值过来作为判断条件),从而控制注册和修改按钮是否可用 {
Button1.Enabled = true;
Button2.Visible = false; }
if (Convert.ToInt32(Request["mark"]) == 1)//如果是需要修改用户信息,则会显示用户信息
{
txtName.Visible = false;
- 23 -
Label1.Text = Session["Name"].ToString();
Button1.Visible = false;
Button2.Enabled = true;
txtName.ReadOnly = true;
DataSet ds = null;
us.Name = Session["Name"].ToString();//从Session中获取用户名
ds = us.FindUserByName("tb_Member");//获取用户信息
txtName.Text = Session["Name"].ToString();
txtSex.Text = ds.Tables[0].Rows[0][2].ToString();
txtPassword.Text = ds.Tables[0].Rows[0][3].ToString();
txtPhone.Text = ds.Tables[0].Rows[0][4].ToString();
txtEmail.Text = ds.Tables[0].Rows[0][6].ToString();
txtCity.Text = ds.Tables[0].Rows[0][5].ToString();
txtAddress.Text = ds.Tables[0].Rows[0][7].ToString();
txtPost.Text = ds.Tables[0].Rows[0][8].ToString ();
}
}
}
protected void Button1_Click(object sender, EventArgs e)
{
if (txtName.Text == string.Empty || txtPassword.Text == string.Empty ||
txtPassword2.Text == string.Empty || txtCity.Text == string.Empty || txtPhone.Text ==
string.Empty || txtAddress.Text == string.Empty || txtPost.Text == string.Empty || txtSex.Text == string.Empty || txtEmail.Text == string.Empty)
{
Response.Write("<script>alert('用户名不能为空!')</script>");
txtName.Focus();
}
else
{
us.Name = txtName.Text;
DataSet ds = us.FindUserByName("tb_User");//获取用户信息
if (ds.Tables[0].Rows.Count > 0)//判断返回的datatable中的行数是否为0
{
Response.Write("<script>alert('该用户已经存在!')</script>");
txtName.Text = string.Empty;
txtName.Focus();
}
else
{
ds = null;
- 24 -
ds = us.GetAllUser("tb_User");
us.Name = txtName.Text;
us.Password = txtPassword.Text;
us.Sex = txtSex.Text;
us.Phone = txtPhone.Text;
us.Post = txtPost.Text;
us.City = txtCity.Text;
us.Emails = txtEmail.Text;
us.Address = txtAddress.Text;
us.AddUser();//调用添加用户信息的方法
Response.Write("<script>alert('用户注册成功!')</script>");
}
}
}
protected void Button2_Click(object sender, EventArgs e)
{
us.Password = txtPassword.Text;
us.Sex = txtSex.Text;
us.Phone = txtPhone.Text;
us.Post = txtPost.Text;
us.City = txtCity.Text;
us.Emails = txtEmail.Text;
us.Address = txtAddress.Text;
us.UpdateUser();//调用修改用户信息的方法
Response.Write("<script>alert('用户信息修改成功!')</script>");
}
}
2.3 购物车设计模块(包括购物车页面设计及代码设计)
2.4 用户查询设计模块
3.网站后台功能模块设计
说明:同上面的网站前台设计它包括管理员对图书的操作、多用户的操作、以及对订购信息的增删改等操作。具体设计界面几台吗如下:
管理员对图书的操作界面及后台代码
所有图书信息:
编BooksBooksNamID 1 e Author Publisher ClaMarketPrMemberPPopularIsDiscoBerifIntrodBooksUss ice 30.04
- 25 - rice 28.9 ity 0.1 unt 否 uce rl VisualBasi李永平 希望电计计算机专cover01
辑 删除 编辑 删除
c6.0
子出版算社 机 业书籍偏.gif
向技术的图书
清华大计
2
Asp.NET
李永平 学出版算25
社 机
22.4
0.3
否
cover04.gif
编
辑
3 删除 编辑
8 删除 编辑
13 删除
Thanking in Java
人民教计
JodnSm
育出版算50
ith
社 机
48 0.5 否
cover05
.gif
武
科学教
侠
雪山飞狐 金庸 育出版40
小
社
说
科学教
武
38 0.4 否
cover02.gif
连城诀
侠
金庸 育出版40
小
社
说
38 0.4 否
cover03.gif
插入最新图书信息: BooksID BooksName Author Publisher Class MarketPrice MemberPrice Popularity 插入 取消
管理员对用户的操作
所有用户信息记录:
- 26 -
添加新用户信息:
原订购信息登记:
PaReceiReceiReceReceivReceiIsCIsPaIsConIsPigyT dembokuerDodspFalPpTyverNverPhiverPerAddverEonfymsigneonyprID erID sID m ate Fee ee rice pe ame one ost ress mails irm ent ment holee OrMeBonOrdGoShiTotShi
编
辑
2 2 删
除
2008-12-5 57.77.1 2 20 1 0:08 8 0:00 东岳1234123413341 taian 大街@126是 是 是 2424 3 13号 .com 是
最新订购信息更新:
OrderID
MemberID
BooksID
num
OrderDate
GoodsFee
ShipFee
TotalPrice
ShipType
PayType 2 2 1 2 2008-12-5 0:00:00 57.8 20 77.8 1 1
ReceiverName taian
- 27 -
ReceiverPhone 12342424
ReceiverPost 13343
ReceiverAddress
东岳大街13号
ReceiverEmails 1234@126.com
IsConfirm
IsPayment 是 是
IsConsignment 是
IsPigeonhole
新建
是
3.1.后台登录
通过登录界面的设计连接数据库来显示用户登录信息:
界面如下
会员名
密码
设计代吗实现如下:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class common_login : System.Web.UI.Page {
userinfo userbj = new userinfo();
protected void Page_Load(object sender, EventArgs e) {
}
protected void Button1_Click(object sender, EventArgs e)
- 28 -
{
Session["Name"] = null;
Session["Password"] = null;
if (txtName.Text.Trim() == "" || txtPassword.Text.Trim() == "")
{
Response.Write("<script>alert('登录名或密码不能为空!');</script>");
}
else
{
DataSet ds = null;
userbj.Name = txtName.Text;
userbj.Password = txtPassword.Text;
ds = userbj.UserLogin();
if (ds.Tables[0].Rows.Count > 0)
{
Session["MemberID"] = ds.Tables[0].Rows[0][0].ToString();
Session["Name"] = txtName.Text;
Response.Redirect("main.aspx");
}
else
{
Response.Write("<script>alert('您的登录有误,请核对后再登录');</script>"); }
}
}
protected void Button2_Click(object sender, EventArgs e)
{
Response.Redirect("register.aspx");
}
}
实习总结
通过这次实习我熟料掌握了ASP的基本操作,包括具体个界面的设计、类代码的设计、数据库与ASP.NET相连接方面的技能,体会面向对象的思想开发软件,使我初步体验到在将来实际工作中,作为一个软件开发人员所应做的工作和应该掌握的基本技能。同时我感到好的代码可以做到易读(见名知意),可以尽量少的使用注释,对于必要的注释,要遵循以下格式:
注释文字要和“ // ”空一个格。
要这样:// 注释内容
不要这样://注释内容
- 29 -
模块或类文件的注释,采用如下格式:
/// <summary>
/// Module Name:<模块名称>
/// Description:<对此类的描述,可以引用系统设计中的描述> /// Author:<作者>
/// Create Date:<模块创建日期,格式:YYYY-MM-DD>
/// </summary>
方法的注释加到方法定义的前面,采用如下格式:
/// <summary>
/// <对该方法的说明>
/// </summary>
/// <param name="<参数名称>"><参数说明></param>
/// <returns>
/// <对方法返回值的说明,该说明必须明确说明返回的值代表什么含义> /// </returns>
/// Author:作者中文名
/// Create Date:<方法创建日期,格式:YYYY-MM-DD
- 30 -