1、DONGFANG COLLEGE,FUJIAN AGRICULTURE AND FORESTRY UNIVERSITY详细设计说明书课程名称: 软件工程与实践电脑书店管理系统系 别: 计算机系年级专业:学 号: 姓 名: 任课教师: 成绩:2015 年 6 月 15 日电脑书店信息管理系统目 录1 系统概述 11.1 课题研究的背景 11.2 课题研究的目的 11.3 课题研究的意义 11.4 参考资料 21.5 定义 22 功能需求分析 22.1 功能介绍 22.2 性能需求 32.3 功能需求 33 数据库设计 .43.1 E-R 图 .43.2 系统流程图 53.3 数据库关系模式 63
2、.4 逻辑结构设计 63.5 数据库表的设计 74 程序设计 .94.1 系统的具体实现 .91 系统概述本课程设计主要设计并实现电脑书店的管理系统,随着互联网带给我们的不仅是无穷的信息,更是商业模式和消费观念的变迁,电子商务业已成为时尚。因图书信息易于判断和选择而独具优势,最适合于网上交易,所以电脑书店成了电子商务的先锋。1.1 课题研究的背景传统书店分布广泛,在市场有很多传统书店。这类书店占据了 87以上的图书市场;由于电子商务的迅速发展,电脑书店国内目前并不少见,在 google搜索引擎中输入“电脑书店”搜索就有 8970000 项结果。但是因为信誉度的问题,只有当当、卓越少数几家电脑书
3、店真正实现全国范围的网上售书。因此,如果顾客想通过网络购书通常只有两种选择,当当、卓越或者是本地的网上书店;而其他购书方式,这类购书方式主要以出版社和书友会邮购为主,大约占据市场份额的 7 1。邮购通常是向出版社或者书友会,优点是图书种类齐全,缺点是速度慢,而且提高了购书成本。学校团购优点是因为集体购买可能图书的价格会较低,缺点是缺少自主性。传统书店分布广泛,符合顾客传统的消费习惯,信任度较高。但是对购买者来说需要花费很多交通以及挑选的时间,加上需要固定店铺,成本高,图书价格较高,另外如果店铺规模较小,书籍种类不能保证。这样就促使电脑书店越来越成为可能。1.2 课题研究的目的网上购书,具有价格
4、低廉、高效、方便、种类齐全的特点,同时对于经营企业来说,由于不需要店铺,从而把成本降到了最低。但是传统的电脑购书网站,使用的是快递和邮递相结合的方式送书,当顾客距离不在同一城市时,不可避免地继承了传统邮购方式的种种缺点。1.3 课题研究的意义电脑书店使用独创的网上购书模式,是一个生活类、外语类、文学类、科技类、法律类还有配套光碟等集一体的电脑书店,主要是为了满足各方面读者的精神需求,因为目标顾客针对青少年还有在企管理人员等,很好的避免了传统网上购书网站的问题。在保证价格低廉的情况下,具有购书便捷,送书快速的优势,非常具有竞争力。1.4 参考资料软件工程课程设计指导书需求规格说明书概要设计说明书
5、软件工程概论 ,郑人杰、马素霞、殷人昆,机械工业出版社1.5 定义 前台模块设计(包括:登录、注册、搜索、订单)后台模块设计(包括:用户管理、书籍管理、订单管理、公告管理)各模块数据库接口2 功能需求分析2.1 功能介绍系统的主要功能有添加图书记录,删除图书记录,修改图书记录,查看图书,查看订单模块,更新订单模块,删除订单模块等。将每个功能细分模块化,实现单个的功能独立,总体得出系统的功能模块图如图 2.1 所示:网上书店管理系统书店管理系统在线购买系统修改模块添加模块删除模块删除模块查看模块查看模块更新模块图 2.1 系统功能模块图2.2 性能需求此系统是一个电脑书店管理系统,所以该系统在时
6、间方面和安全性方面性能要求还是比较的高。而且此系统涉及到很多的书籍,则数据库的要求比较高。而且由于系统涉及到了商业的隐私,所以在登录那里的密码验证要求比较高 3。2.3 功能需求添加图书:管理员和添加人员可以通过这个功能向书店录入新的图书。修改书籍:管理员和添加人员可以进行图书的查看、编辑、修改。查看图书信息:用户还可以进行浏览,在页面上,应向用户显示书籍类别,应能显示该类别下的实际书籍(如果有)的信息。查看订单详细信息:生成一个订单的详细信息页面,包括:订单号、收货人、联系电话、送货地址、用户订购的书籍列表(序号、书籍编号、原价、订购数量、折扣、销售价)、金额总计、订购日期。在页面上提供直接
7、打印的功能;修改订单:只允许对未审核的订单进行修改(包括修改收货人、联系电话、送货地址、用户订购的书籍列表);删除订单:只允许对未审核的订单进行删除。3 数据库设计3.1 E-R 图在数据库中只设计了一张表,也就只有消费记录这样一个实体,它有很多的属性,将表转化为实体 E-R 图如下图所示:图书信息表图书编号出版时间价格作者类别出版社图书信息表的 E-R 图用户信息姓名住址性别年龄注册号用户信息的 E-R 图订单信息表图书编号价格订单日期订单目的地注册号订单信息表的 E-R 图3.2 系统流程图本系统主要有添加记录,删除记录,查看记录,修改记录,更新记录等等一些功能,通过对这些功能的分析和要使
8、用的数据存储形式,整合后,系统的流程图如图所示。图书信息订购信息书店管理系统在线购买系统记录磁盘磁盘订单程序发货系统流程图3.3 数据库关系模式程序的操作流程有登陆,添加删除记录,查看更新记录等一些,在这些操作中,设计都很多控制,比如说登录的时候要验证密码,如果密码不正确就会重新登录,在删除的时候如果没有记录,那么就会无法删除,弹出错误的对话框。具体的控制结构如下图 3.1 所示。3.4 逻辑结构设计根据整个系统的程序结构确定,相应的逻辑数据结构也确定了,在系统中主要用到顺序结构和选择结构。顺序结构主要是记录输入后会自动的保存到数据库,这些都是顺序执行的,要先输入记录,后两者才会进行。选择结构
9、主要是在控制输入,登录,删除等方面,登录的时候如果密码不对,就会进如选择返回到登陆框,并提示密码错误,控制输入那里,如果输入框没得记录,就不能进行其他操作,必须进行添加,查看或者修改操作,如果输入框中有记录,那么就可以直接进行操作。3.5 数据库表的设计系统整个数据库相对来说还算是简单,在数据库中就三张表,分别是图书信息表,订单信息表,用户信息表。在表中关键码设置为编号,还有一些其他的属性,比如说作者,出版社,性别,价格等。由于考虑到数据库比较大,处理的记录也比较多,故用 server 实现即可 4。数据库的主要属性如表 3-1,表3-2,表 3-3,表 3-4 所示。登录验证商家密码验证读者
10、密码进入商家页面进入读者页面是否有记录删除记录添加记录查看记录修改记录修改订单查看订单删除订单记录是否有记录图 3.1 系统控制结构表 3-1 图书信息表字段名称 字段类型 字段大小 字段说明 备注Id int 4 ID 序列号 自动增长(主键)BookName Varchar 40 书名 Not nullBookClass int 4 图书类别Author varchar 25 作者Publish varchar 150 出版社Prince Float 4 书价Amount int 4 总数量表 3-2 登录信息表字段名称 字段类型 字段大小 字段说明 备注AdminUser varchar
11、 20 管理员用户名 (主键)AdminPass varchar 50 管理员密码 Not null表 3-3 用户信息表字段名称 字段类型 字段大小 字段说明 备注Id int 4 ID 序列号 自动增长(主键)UserName varchar 20 购物用户名 Not nullPassWord varchar 50 用户密码 Not nullNames varchar 20 用户联系用姓名Sex varchar 2 用户性别Address varchar 150 用户联系地址Phone varchar 25 用户联系电话Post varchar 8 用户联系邮编Age varchar 2R
12、egTime dateTime 用户注册时间表 3-4 订单信息表字段名称 字段类型 字段大小 字段说明 备注Id int 4 ID 序列号 自动增长(主键)IndentNo varchar 20 订单编号 Not nullSubmitTime datetime 8 提交订单时间 Not nullConsignmentTime varchar 20 交货时间TotalPrice float 8 总金额content varchar 400 用户备注IPAddress varchar 20 下单时 IPIsPayoff int 4 用户是否已付款IsSales int 4 是否已发货4 程序设计
13、4.1 系统的具体实现系统首页如图 4.1 所示,用户可以在页面内浏览到图书分类、书库、最新排行榜,可以用户登录。图 4.1 系统首页管理员登录以便管理后台如图 4.2 所示:图 4.2 订单信息表管理后台可以对订单信息进行修改、查询、删除、添加操作,主要实现代码如下:private void DataGrid1_EditCommand_1(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)this.DataGrid1.EditItemIndex=e.Item.ItemIndex;this.BindingDa
14、ta();private void DataGrid1_DeleteCommand_1(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)string orderid=this.DataGrid1.DataKeyse.Item.ItemIndex.ToString();/将获取到的数据转换成字符串SqlConnection conn=DB.CreateConnection();/数据库连接conn.Open();/打开数据库SqlCommand cmd=new SqlCommand(“delete from
15、ordergoods where orderId=“+orderid+“,conn) ;/ 数据库的删除语句cmd.ExecuteNonQuery();/执行删除语句this.DataGrid1.DataBind();private void DataGrid1_UpdateCommand_1(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)Stringorderid=this.DataGrid1.DataKeyse.Item.ItemIndex.ToString().Trim();/获取书籍的名字和编号,
16、转换为没有空格的字符串string bookname=(TextBox)(e.Item.Cells1.Controls0).Text.Trim();string booknum=(TextBox)(e.Item.Cells2.Controls0).Text.Trim();string bookmoney=(TextBox)(e.Item.Cells3.Controls0).Text.Trim();/ string Caddress=(TextBox)(e.Item.Cells4.Controls0).Text.Trim();SqlConnection conn=DB.CreateConnect
17、ion();conn.Open();SqlCommand cmd=new SqlCommand(“update ordergoods set orderbookname=“+bookname+“,orderbooknum=“+booknum+“,totalbookmoney=“+bookmoney+“ where orderid=“+orderid+“,conn);/ 订单的更新SQL 语句cmd.ExecuteNonQuery();/执行订单的更新SQL 语句conn.Close();this.DataGrid1.EditItemIndex=-1;this.BindingData();用户管
18、理界面如图 4.3 所示:图 4.3 用户管理界面/用户管理界面主要实现代码如下:private void DataGrid1_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)/删除用户string userid=this.DataGrid1.DataKeyse.Item.ItemIndex.ToString();SqlConnection conn=DB.CreateConnection();conn.Open();SqlCommand cmd=new SqlCommand(“
19、delete from users where userId=“+userid+“,conn);/删除用户的SQL语句cmd.ExecuteNonQuery();/执行删除用户语句this.DataGrid1.DataBind();private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)this.DataGrid1.EditItemIndex=e.Item.ItemIndex;this.BindingData();private void Dat
20、aGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)/更新用户信息/获取从TextBox里面输入的用户信息,并去除空格string userid=this.DataGrid1.DataKeyse.Item.ItemIndex.ToString().Trim();string Cusername=(TextBox)(e.Item.Cells1.Controls0).Text.Trim();string Crealname=(TextBox)(e.Item.Cells2.C
21、ontrols0).Text.Trim();string Cmail=(TextBox)(e.Item.Cells3.Controls0).Text.Trim();string Caddress=(TextBox)(e.Item.Cells4.Controls0).Text.Trim();SqlConnection conn=DB.CreateConnection();conn.Open();/打开数据库SqlCommand cmd=new SqlCommand(“update users set name=“+Cusername+“,realname=“+Crealname+“,mail=“
22、+Cmail+“,address=“+Caddress+“where userId=“+userid+“,conn);/更新用户信息的SQL语句cmd.ExecuteNonQuery();/执行SQL语句conn.Close();this.DataGrid1.EditItemIndex=-1;this.BindingData();用户注册界面如图 4.4 所示:图 4.4 用户注册界面/用户注册界面主要代码如下:private void Button2_Click(object sender, System.EventArgs e)if(this.tbEvidence.Text=this.lb
23、evidence.Text)/核对验证码,防止恶意注册SqlConnection conn=DB.CreateConnection();conn.Open();string mima=System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(this.tbpwd.Text.Trim(),“md5“);/将用户输入的密码使用MD5函数转换为密文string a=this.DropDownList1.SelectedItem.Text;string b=this.DropDownList2.Selected
24、Item.Text;string c=this.DropDownList3.SelectedItem.Text;SqlCommand cmd=new SqlCommand(“insert into users(name,pwd,realname,sex,mail,address,message,question1,question2,question3)values(“+this.tbname.Text.Trim()+“,“+mima.Trim()+“,“+this.tbrealname.Text.Trim()+“,“+aa.Trim()+“,“+this.tbmail.Text.Trim()
25、+“,“+this.tbaddress.Text.Trim()+“,“+this.tbmessage.Text.Trim()+“,“+a+“,“+b+“,“+c+“)“,conn);/将用户的注册信息转换为SQL语句cmd.ExecuteNonQuery();/执行SQL语句,将用户的信息插入到数据库conn.Close();this.lbevidence.Text=BytesToHex(GetRandomBytes(2);System.Random r=new Random(100);this.Panel2.Visible=false;this.Panel3.Visible=true;els
26、eResponse.Write(“alert(验证码错误,请重新输入);“);/使用JavaScript提示用户输入的验证码和系统生产的验证码不一致/将变量清除为空字符串this.tbname.Text=“;this.tbpwd.Text=“;this.retbpwd.Text=“;this.tbEvidence.Text=“;this.lbevidence.Text=BytesToHex(GetRandomBytes(2);/重新获取验证码System.Random r=new Random(100);留言板界面图如图 4.5 所示:图 4.5 留言板界面/留言板界面主要代码如下:priva
27、te void Button1_Click(object sender, System.EventArgs e)OleDbConnection conn=new OleDbConnection();conn.ConnectionString=connstr;/将用户的留言信息插入到数据库中string sqlinsert=“insert into guest (title,body,name,email,submit_date) values (“+title.Text+“,“+body.Text+“,“+name.Text+“,“+email.Text+“,“+System.DateTime
28、.Now.ToString()+“)“;OleDbCommand cmd=new OleDbCommand();cmd.Connection=conn;cmd.CommandText=sqlinsert;conn.Open();int m = cmd.ExecuteNonQuery();conn.Close();if(m = 1 )/反馈信息给用户是否留言成功Label1.Text=“提交成功!“;elseLabel1.Text=“提交不成功!“;图 4.6 为购物车界面:图 4.6 购物车界面/购物车界面主要代码如下:private void btToOrder_Click(object s
29、ender, System.EventArgs e)string flag=Session“username“.ToString().Trim();SqlConnection conn=DB.CreateConnection();conn.Open();SqlCommand cmd=new SqlCommand(“select userId from users where name=“+flag+“,conn);/string userid=cmd.ExecuteScalar().ToString();foreach(System.Web.UI.WebControls.DataListIte
30、m dl in this.DataList1.Items)LinkButton name = (LinkButton)dl.FindControl(“BookName“);string bookname = name.Text.ToString();cmd.CommandText=“select bookId from Books where bookname=“+bookname+“;string bookid=cmd.ExecuteScalar().ToString();TextBox tbnum=(TextBox)dl.FindControl(“tbNumber“);string tbb
31、ooknum=tbnum.Text.ToString();LinkButton money=(LinkButton)dl.FindControl(“lkmoney“);string lksalemoney=money.Text.ToString();SqlCommand cmd2=new SqlCommand(“select orderbookname from ordergoods where orderbookname=“+bookname+“,conn );if(cmd2.ExecuteScalar()=null)cmd.CommandText=“insert into ordergoo
32、ds values(“+userid+“,“+flag+“,“+bookid+“,“+bookname+“,“+tbbooknum+“,“+lksalemoney+“)“;cmd.ExecuteNonQuery();elsecmd2.CommandText=“select orderbooknum from ordergoods where orderId=“+userid+“and orderbookname=“+bookname+“;int num=Convert.ToInt32(cmd2.ExecuteScalar();int aa=int.Parse(tbbooknum);int zo
33、ngnum=Convert.ToInt32(num)+aa;cmd2.CommandText=“select totalbookmoney from ordergoods where orderId=“+userid+“and orderbookname=“+bookname+“;int bookmoney=Convert.ToInt32(cmd2.ExecuteScalar();int bb=int.Parse(lksalemoney);int zongmoney=bookmoney+bb; cmd.CommandText=“update ordergoods set orderbooknu
34、m=“+zongnum+“,totalbookmoney=“+zongmoney+“where orderId=“+userid+“and orderbookname=“+bookname+“;cmd.ExecuteNonQuery();conn.Close();if(this.DataList1.Items.Count != 0)string strUrl;strUrl = “orderbook.aspx?userID=“+userid;Response.Redirect(strUrl);图 4.7 图书信息修改界面:图 4.7 图书信息修改界面可以对图书信息进行编辑、删除、查询、添加操作,
35、主要实现代码如下:private void DataGrid1_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)/删除图书信息string bookid=this.DataGrid1.DataKeyse.Item.ItemIndex.ToString();SqlConnection conn=DB.CreateConnection();conn.Open();SqlCommand cmd=new SqlCommand(“delete from Books where bookId
36、=“+bookid+“,conn);/删除图书的SQL语句cmd.ExecuteNonQuery();/执行删除语句this.DataGrid1.DataBind();private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)this.DataGrid1.EditItemIndex=e.Item.ItemIndex;this.BindingData();private void DataGrid1_UpdateCommand(object sour
37、ce, System.Web.UI.WebControls.DataGridCommandEventArgs e)/修改图书信息string bookid=this.DataGrid1.DataKeyse.Item.ItemIndex.ToString().Trim();string Cbookname=(TextBox)(e.Item.Cells1.Controls0).Text.Trim();string Czuozhe=(TextBox)(e.Item.Cells2.Controls0).Text.Trim();string Cpublish=(TextBox)(e.Item.Cells
38、3.Controls0).Text.Trim();string Cdianji=(TextBox)(e.Item.Cells4.Controls0).Text.Trim();string CMarketprice=(TextBox)(e.Item.Cells5.Controls0).Text.Trim();string Csaleprice=(TextBox)(e.Item.Cells6.Controls0).Text.Trim();SqlConnection conn=DB.CreateConnection();conn.Open();SqlCommand cmd=new SqlCommand(“update Books set bookname=“+Cbookname+“,zuozhe=“+Czuozhe+“,publish=“+Cpublish+“,dianji=“+Cdianji+“,Marketprice=“+CMarketprice+“,saleprice=“+Csaleprice+“where bookId=“+bookid+“,conn);/更新图书信息的SQL语句cmd.ExecuteNonQuery();/执行更新语句conn.Close();this.DataGrid1.EditItemIndex=-1;this.BindingData();