XX工程技术大学大型软件项目实训报告教学单位软件学院专业软件工程班级学生XX学号指导教师图1:功能模块图实体的设计:在系统功能模块设计上,按管理信息系统的设计要求,每个系统都必须有输入、输出、统计、维护、基础数据设置等功能。
网上书店系统的数据操作包括角色、用户、图书、图书种类、订单、订单子项、留言等,共同协调完成系统的运行与维护。
各实体属性:1. 角色:角色ID、角色名称2. 用户:用户ID、用户名、真实XX、密码、地址、联系、创建日期、角色ID3. 图书种类:图书种类ID、种类名称、上级种类ID4. 图书:图书ID、图书名称、所属种类ID、详细描述、供应商、数量、进货价格、销售价格、图片信息5. 订单:订单ID、所属用户ID、图书总量、订单总费用、创建日期、订单状态性能要求:页面美观大方,实现无刷新技术,操作方便直观,有安全保障机制,后台使用SQLServer2008数据库。
三层框架MVC3目前,典型的分层架构是三层架构,依次是数据访问层、业务逻辑层和表示层。
图2:订书系统功能图根据实体设定以及简要的需求分析,数据库设计如下:图3:E-R图数据库表的设计如下:1.角色表Roles表1:角色表列名数据类型Allow nulls 描述备注roleID int N 角色ID 主键roleName Varchar (50) Y 角色名称2.用户表Users表2:用户表列名数据类型Allow nulls 描述备注userID int N 用户ID 主键userName Varchar(50) N 用户名realName Varchar(50) N 真实XXpwd Varchar(50) N 密码addr Varchar(200) N 联系地址phone Varchar(20) Y 联系createDate datetime N 创建时间roleID int N 角色ID 外键remark Varchar(2000) Y 备注3.图书表Book表3:图书表7.订单子项表OrderItem表7:订单子项表列名数据类型Allow nulls 描述备注orderItemID int N 订单子项ID 主键bookID int N 图书ID 外键orderFormID int N 订单ID 外键num int N 图书数量price money N 图书单价2.功能介绍及使用。
系统主界面登录页面,管理员登录后可进入管理员页面,普通用户进入普通用户界面。
图4:用户登录界面登录输入用户名和密码点击登录按钮,确认身份后用户进入系统,若为空或者错误时会有相应的提示信息。
登录后根据用户的角色系统进入不同界面,用户可以选择进行其他操作。
点击登录按钮:普通用户登录到普通用户的界面。
代码如下:Users us = UserManager.Login(txtUsername.Text.Trim(), txtpwd.Text.Trim());Session["user"] = us;//保存用户if (us != null){if (us.Role.RoleName == "管理员"){Response.Redirect("~/Manager/UserInfo/UserManager.aspx");}else{Response.Redirect("~/Cart/BookSearch.aspx");}}else{Response.Write("<script>alert('用户名或密码错误');</script>");}用户管理主界面系统列出当前所有用户的基本信息,可以进行删除用户功能,并提供修改操作的。
管理员还可以按照角色和用户名进行分类和精确查询。
图5:用户管理注册新用户填写注册信息,提交注册为系统用户,默认用户的角色为“普通用户”。
图6:用户注册页面代码如下:if (Page.IsValid){Users us = new Users();erName = this.txtusername.Text;us.Pwd = this.txtpwd.Text;us.RealName = this.txtrealname.Text;us.Phone = this.txtphone.Text;us.Addr = this.txtaddr.Text;us.Remark = this.txtremark.Text;BookModels.Roles role = new BookModels.Roles();role.RoleID = 2;us.Role = role;us.CreateDate = System.DateTime.Now.ToString();if (UserManager.AddUser(us) != null){Response.Write("<script>alert('注册成功')</script>");}else{Response.Write("<script>alert('注册失败,请重新填写')</script>");}}修改密码用户登录系统后就能修改密码。
修改时除需要输入用户名和旧密码,另外还需要对新密码进行确认。
提交后自动保存到数据库中。
图7:密码修改代码如下:user=(Users)Session["user"];//保存用户if (user != null){this.lblUsername.Text = erName;}if (Page.IsValid)//点击修改事件{string newPwd = this.txtNewPwd.Text;string message = UserManager.ModifyPwd(newPwd,erID);Response.Write("<script>alert('" + message + "')</script>");}//密码判断string pwd = this.txtOldPwd.Text;if (pwd.Equals(user.Pwd)){args.IsValid = true;}else{args.IsValid = false;}普通用户模块用户信息中心查看(我的个人信息及更新)显示执行当前操作的普通用户的个人信息,并可以根据需要执行更新操作。
图8:普通用户信息更改图书搜索系统用户及游客可以输入图书名称进行模糊查询,结果以表格的形式显示,并可以进入相应页面查看详细信息。
图9:图书搜索代码如下:protectedvoid Page_Load(object sender, EventArgs e){if (!Page.IsPostBack){Users user = (Users)Session["user"];if (user == null){//Response.Redirect("");}else{DisplayUserInfo();}}}privatevoid DisplayUserInfo(){Users user = (Users)Session["user"];this.txtusername.Text = erName;txtrealname.Text = user.RealName;txtremark.Text = user.Remark;txtphone.Text = user.Phone;txtaddr.Text = user.Addr;lblcreatedate.Text = user.CreateDate.ToString();lblRole.Text = user.Role.RoleName;}protectedvoid btnOk_Click1(object sender, EventArgs e){Users user = (Users)Session["user"];//获取登陆用户的信息erName = this.txtusername.Text;user.RealName = txtrealname.Text;user.Remark = txtremark.Text;user.Phone = txtphone.Text;user.CreateDate = System.DateTime.Now.ToString();user.Addr = txtaddr.Text;erManager.ModifyUser(user);Response.Write("<script>alert('修改用户信息');</script>");}添加图书为管理员提供添加图书的功能,可以将本地的图书各项信息中,存入数据库。
图10:添加图书代码如下:protectedvoid btnAdd_Click(object sender, EventArgs e){Book book = new Book();book.BookName = this.txtbookname.Text;book.BuyInDate=System.DateTime.Now.ToString();=this.txtInfo.Text;book.Data = this.txtdata.Text;book.InPrice=decimal.Parse(this.txtinprice.Text);book.Quantity=int.Parse(this.txtquantity.Text);book.Discount=float.Parse(this.txtdiscount.Text);Category category = new Category();category.CategoryID = int.Parse(this.DropDownList1.SelectedValue.ToString()); book.Category = category;book.Remark=this.txtremark.Text;book.Sell=this.txtSell.Text;if (BookBLL.BookManager.AddBook(book)!= null){Response.Write("<script>alert('添加成功')</script>");}else{Response.Write("<script>alert('添加失败,请重新填写')</script>");}}图书管理主界面提供图书的按类别与书名查询的功能,结果在表格中显示。