【精品课程设计】网上书城模块开发卷宗(系统源代码).doc
模块开发卷宗V1.0December 32010网上书城 目录一、登陆注册模块开发卷宗31标题32模块开发情况表33功能说明34设计说明45原代码清单66测试说明237复审的结论25二、订单查询模块开发卷宗251标题252模块开发情况表253功能说明254设计说明265原代码清266测试说明297复审的结论30三、购物车模块开发卷宗301标题302模块开发情况表303功能说明304设计说明315原代码清单315.1购物车确认模块代码:316测试说明407复审的结论41四、图书分类模块开发卷宗411标题412模块开发情况表413功能说明414设计说明415原代码清单426测试说明457复审的结论45五、图书推荐模块开发卷宗451标题452模块开发情况.453功能说明454设计说明465原代码清单466测试说明487复审的结论48六、图书管理模块开发卷宗481标题482模块开发情况表493功能说明494设计说明495原代码清单496测试说明517复审的结论51七、搜索模块开发卷宗511标题512模块开发情况表523功能说明524设计说明525原代码清单526测试说明537复审的结论55八、会员管理模块开发卷宗561标题562模块开发情况表563功能说明564设计说明565原代码清单566测试说明587复审的结论59九、订单管理模块开发卷宗591标题592模块开发情况表593功能说明594设计说明605原代码清单606测试说明627复审的结论62一、登陆注册模块开发卷宗1标题软件系统名称和标识符:网上书城模块名称和标识符:登录注册模块程序编制员签名:*卷宗的修改文本序号修改完成日期 :2010-11-29卷宗序号:1编排日期:2010-11-252模块开发情况表由于是课程设计项目,暂不考虑。3功能说明扼要说明本模块(或本组模块)的功能,主要是输入、要求的处理、输出。可以从系统设计说明书中摘录。同时列出在软件需求说明书中对这些功能的说明的章、条、款。(1)用户注册功能:用户输入姓名,用户名,密码,性别,邮箱, 真实姓名,邮编,详细住址。姓名栏以及用户名栏添加了空验证控件,如果用户未填入任何信息则给出提示提示用户填入信息。邮箱栏设置了格式验证要求用户输入的信息必须符合%.com的格式。网页整体设置了错误信息收集控件能够显示所有用户输入信息的错误提示给出提示。当用户输入的信息全部符合规则后才可进行注册操作。把用户输入的信息全部装到一个实体类中,然后调用业务逻辑层的插入操作执行注册,注册会先判断是否已经存在该用户,如果存在则插入失败,如果不存在该用户才会注册成功。输入项:邮箱,用户名,密码 输出项:成功则更新数据库,跳转主页面;失败则输出错误提示的信息。(2)会员登录功能:会员登录时,需要填写会员名,密码,和随机动态生成的验证码,其是为了防止恶意攻击而设置。会员登录后才可以实现购物车,以及查看订单等功能。 管理员登录功能:管理员登录时,需要填写会员名,密码,和随机动态生成的验证码,其是为了防止恶意攻击而设置。登陆后的管理员对网站进行管理。输入项:姓名,密码,验证码 输出项:成功则管理员跳转到管理中心页面,普通会员跳转到主页面;失败则输出错误提示的信息。4设计说明说明本模块(或本组模块)的设计考虑,包括:a 在系统设计说明书中有关对本模块(或本组模块)设计考虑的叙述,包括本模块在软件系统中所处的层次,它同其他模块的接口;b 在程序设计说明书中有关对本模块(或本组模块)的设计考虑,包括本模块的算法、处理流程、牵涉到的数据文卷设计限制、驱动方式和出错信息等;c 在编制目前已通过全部测试的源代码时实际使用设的计考虑。 a. 本模块属于系统模块层次中第一层,订单模块、购物车模块等模块调用。b. 本模的注册时处理流程如下:先接收用户输入的注册数据,成功则更新数据库中的Users表,同时跳转到网站主页,否则出错则输出出错信息。登录时的处理流程如下:接受用户输入的用户名、密码、随机验证码,与数据库中Users表取出数据进行比较,出错则输出出错信息提示,若成功则判断Users表中IsAdmin字段的值,如果值为0,则为普通会员,跳转到系统主页,如果值为1,则为管理员,跳转到管理中心页面。 5原代码清单要给出所产生的本模块(或本组模块)的第一份无语法错的源代码清单以及已通过全部测试的当前有效的源代码清单。(1)主页Default.aspx部分中的HTML源码如下(登录的窗体设计代码):<table style="width: 708px"> <tr> <td align="center" style="width: 91px"> 会员: <asp:TextBox ID="tbx_user" runat="server" Width="105px"></asp:TextBox> <asp:Label ID="lbl_msg1" runat="server" ForeColor="Red" Visible="False"></asp:Label></td> <td align="left" style="width: 100px"> 验证码: <asp:TextBox ID="Validator" runat="server" Width="68px"></asp:TextBox> <asp:Image ID="ValidateImage" runat="server" Height="25px" ImageAlign="AbsBottom" Width="94px" /> <asp:RequiredFieldValidator ID="rfv" runat="server" ControlToValidate="Validator" CssClass="GbText" Display="Dynamic" ErrorMessage="验证码不能为空"></asp:RequiredFieldValidator></td> </tr> <tr> <td align="center" style="width: 91px; height: 28px"> 密码:<asp:TextBox ID="tbx_pwd" runat="server" TextMode="Password" Width="105px" ></asp:TextBox> <asp:Label ID="lbl_msg2" runat="server" ForeColor="Red" Visible="False"></asp:Label></td> <td align="left" style="width: 100px; height: 28px"> <asp:Button ID="btn_login" runat="server" Text="登 录" OnClick="btn_login_Click" /> <asp:Button ID="CancelBtn" runat="server" CausesValidation="False" CssClass="ButtonCss" OnClick="CancelBtn_Click" Text="取消" Width="56px" /> <a href="reg.aspx">新用户注册</a> </td> </tr> </table>(2)主页Default.aspx.cs中的源码如下(登录的窗体实现代码):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;using System.Data.SqlClient;using System.Text;public partial class _Default : System.Web.UI.Page /private static string sValidator = "" /private Brush BrushList = new Brush32; /private readonly string ImagePath = "" private static string sValidator = "" private StringBuilder LetterList = new StringBuilder(); private readonly string sValidatorImageUrl = "ValidateImage.aspx?Validator=" protected void Page_Load(object sender, EventArgs e) if (!IsPostBack) sValidator = CreateValidateString(6); ValidateImage.ImageUrl = sValidatorImageUrl + sValidator; tbx_user.Text = "" tbx_pwd.Text = "" /读取数据库连接字符串 string settings = Convert.ToString(ConfigurationManager.ConnectionStrings"SqlServices"); /创建数据库连接 SqlConnection myconn = new SqlConnection(settings); /打开数据库连接 myconn.Open(); SqlCommand mycmd = new SqlCommand("MostSoldBooks", myconn); SqlDataReader result = mycmd.ExecuteReader(); dl_mostsold.DataSource = result; dl_mostsold.DataBind(); lbl_msg1.Visible = false; lbl_msg2.Visible = false; if (Session"UserName" = null | Session"UserName".ToString() = "") P_Login.Visible = true; P_SuccessLogin.Visible = false; else P_Login.Visible = false; P_SuccessLogin.Visible = true; lbl_user.Text = Session"UserName".ToString(); lbl_rank.Text = Session"Level".ToString(); protected void btn_login_Click(object sender, EventArgs e) string username = tbx_user.Text; string password = tbx_pwd.Text; if (username = "") lbl_msg1.Visible = true; lbl_msg1.Text = "请输入用户名" else if (password = "") lbl_msg2.Visible = true; lbl_msg2.Text = "请输入密码" else if (Validator.Text != sValidator) /Message.Text = "验证码输入错误,请重新输入验证码!" sValidator = CreateValidateString(6); ValidateImage.ImageUrl = sValidatorImageUrl + sValidator; return; else /读取数据库连接字符串 string settings = Convert.ToString(ConfigurationManager.ConnectionStrings"SqlServices"); /创建数据库连接对象 SqlConnection myconn = new SqlConnection(settings); /打开数据库连接 myconn.Open(); /读取用户信息 string mysql = "select * from users Where UserName=" + "'" + username + "'" + "And Password=" + "'" + password + "'"+"And IsAdmin=0" string mysql1 = "select * from users Where UserName=" + "'" + username + "'" + "And Password=" + "'" + password + "'" + "And IsAdmin=1" /Response.Write(mysql); /Response.End(); /创建命令对象 SqlCommand mycmd = new SqlCommand(mysql, myconn); SqlCommand mycmd1 = new SqlCommand(mysql1, myconn); /创建适配器并执行命令 SqlDataReader mydr = mycmd.ExecuteReader(); try if (mydr.Read() /把用户名写入session对象 Session"UserName" = mydr1; /把权限编号写入session对象 Session"Level" = mydr"Level".ToString(); /隐藏登录信息 P_Login.Visible = false; /显示用户信息 P_SuccessLogin.Visible = true; lbl_user.Text = Session"UserName".ToString(); lbl_rank.Text = Session"Level".ToString(); string userid = mydr"UserID".ToString(); Session"UserID" = userid; /把用户名称添加到身份认证凭据中 /FormsAuthentication.RedirectFromLoginPage(userid, true); /FormsAuthentication. BookStore LoginDB = new BookStore(); string tempCartID = LoginDB.GetShoppingCartId(); LoginDB.TransplantShoppingCart(tempCartID, userid); else /显示错误信息 lbl_msg2.Visible = true; lbl_msg2.Text = "用户名或密码错误" finally /关闭操作 mydr.Close(); SqlDataReader mydr1 = mycmd1.ExecuteReader(); try if (mydr1.Read() /把用户名写入session对象 Session"UserName" = mydr11; /把权限编号写入session对象 Session"Level" = mydr1"Level".ToString(); /隐藏登录信息 P_Login.Visible = false; /显示用户信息 P_SuccessLogin.Visible = true; lbl_user.Text = Session"UserName".ToString(); lbl_rank.Text = Session"Level".ToString(); string userid = mydr1"UserID".ToString(); Session"UserID" = userid; /把用户名称添加到身份认证凭据中 /FormsAuthentication.RedirectFromLoginPage(userid, true); /FormsAuthentication. BookStore LoginDB = new BookStore(); string tempCartID = LoginDB.GetShoppingCartId(); LoginDB.TransplantShoppingCart(tempCartID, userid); Response.Redirect("/Default.aspx"); else /显示错误信息 lbl_msg2.Visible = true; lbl_msg2.Text = "用户名或密码错误" finally /关闭操作 mydr1.Close(); myconn.Close(); protected void CancelBtn_Click(object sender, EventArgs e) /清空用户名称和密码输入框以及验证码输入框 tbx_user.Text = tbx_pwd.Text = Validator.Text ="" /创建验证字符串 sValidator = CreateValidateString(6); ValidateImage.ImageUrl = sValidatorImageUrl + sValidator; private int GetRandomint(int min, int max) Random random = new Random(); return (random.Next(min, max); / <summary> / 创建验证字符串 / </summary> / <param name="nLen"></param> / <returns></returns> private string CreateValidateString(int nLen) /初始化 InitLetterList(); /创建一个StringBuilder对象 StringBuilder sb = new StringBuilder(nLen); for (int i = 0; i < nLen; i+) int index = GetRandomint(0, LetterList.Length - 1); sb.Append(LetterListindex.ToString(); LetterList.Remove(index, 1); return (sb.ToString(); / <summary> / 创建所有字符,为创建验证字符串做准备 / </summary> private void InitLetterList() for (int i = 0; i < 10; i+) LetterList.Append(i.ToString(); for (int i = 0; i < 26; i+) LetterList.Append(char)(int)'a' + i).ToString(); for (int i = 0; i < 26; i+) LetterList.Append(char)(int)'A' + i).ToString(); (3)页面ValidateImage.aspx用来创建显示验证字符串的图片,并在该图片上添加验证码字符串。该页面的HTML源码如下:<% Page Language="C#" AutoEventWireup="true" CodeFile="ValidateImage.aspx.cs" Inherits="ValidateImage" %><!DOCTYPE html PUBLIC "-/W3C/DTD XHTML 1.1/EN" "http:/www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xmlns="http:/www.w3.org/1999/xhtml" ><head runat="server"> <title>Untitled Page</title></head><body topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0"> <form id="form1" runat="server"> </form></body></html>(4)页面ValidateImage.aspx.cs中的源码如下: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;using System.Drawing.Drawing2D;using System.Drawing.Imaging;using System.Drawing.Text;using System.Drawing;using System.Text;public partial class ValidateImage : System.Web.UI.Page private readonly string ImagePath = "Images/validator.jpg" private string sValidator = ""private Brush BrushList = new Brush32; private void Page_Load(object sender, System.EventArgs e) /初始化InitBrushList();if(Request.Params"Validator" != null)/获取验证字符串sValidator = Request.Params"Validator".ToString(); /创建Bmp位图 Bitmap bitMapImage = new System.Drawing.Bitmap(Server.MapPath(ImagePath); Graphics graphicImage = Graphics.FromImage(bitMapImage); /设置画笔的输出模式 graphicImage.SmoothingMode = SmoothingMode.AntiAlias; /添加文本字符串for(int i = 0; i < sValidator.Length; i+)graphicImage.DrawString(sValidatori.ToString(),new Font("Arial",20,(FontStyle)CreateRandomFontStyle(GetRandomint(0,1000),BrushListGetRandomint(0,BrushList.Length - 1),new PointF(i * 15,GetRandomint(-5,5);/graphicImage.DrawString(sValidator, new Font("Arial", 20, (FontStyle)GetRandomint(0,4),SystemBrushes.WindowText, new Point(0, 0);