课程设计报告——网上购书系统学院:XXXX专业:XXXX班级:XXX姓名:XXX一、项目背景从第一台电脑的诞生就注定要改变整个人类的生活方式。
Internet在全球的普及使得改变人类生活成为现实。
我们传统的生活方式大多都是身体力行的,无论是买东西,和人打交道等等。
在取得同样目标的前提下,我们或许早就厌烦了每件事情都必需要自己亲力亲为的方式。
互联网,让我们有了第二种选择。
从前我们读书看书都必须要有书本才行,而且是要纸质书本。
这就给我们带来了很多问题了。
纸质书无论是数量上还是质量上有可能都无法完全满足所有人的需要。
另一方面,纸质书是一种实物,因此,纸质书容易破损、丢失,而且购物、转借都必须像其他事情一样亲力亲为,这对于现在高节奏的生活方式无疑是一个累赘。
那么是否有种更简便的方式呢?现在我们知道那就是网上书店了。
自从internet在世界上开始流行,其后,又随着通信技术,网络技术,安全技术等新技术的不断出现,使得我们生活在网上都成了可能。
书籍永远是人类进步的阶梯。
在各种各样的购物网站的不断涌现,网上购书网站也如雨后春笋般出现了。
因为网上书店有着与传统购书很大的优势。
网上书店最大的功能就是方便了读者更好的购书。
由于互联网的存在,使得网上的信息的全面性,因此读者可以在网上书店中快速准确的找到自己所需要的书籍,而非在传统购书中要到处跑书店所带来的繁琐。
网上书店中读者可以很容易的找到自己所需要的书籍,同样这相对于自己跑大书店然后慢慢找要省时间的多。
另一方面就是网上书店可以在线购买,这同样比传统购书的现金支付要方便的多。
从这么多方面来看,我们认识到了网上书店最大的优势就是便利。
确定系统目标本系统需要实现的目标简要概括如下:(1)用户管理功能。
提供基本的用户注册和登录功能。
对于非注册用户,只能浏览、搜索书籍,不能查看用户信息,使用购物车等功能;对于注册用户,除了非注册用户功能外,还可以使用购物车,订单管理,用户信息修改,发表评论等。
(2)书籍管理功能。
所有人员可以浏览书籍,搜索书籍。
注册用户可以在购物车中增删书籍;管理员可以增加、更新、删除书籍信息。
(3)购物车功能。
购物车方便了用户的购买行为。
可以一次添加多种商品,统一结算等。
(4)订单处理。
注册用户确认购物后的一种凭证。
用户可以查看所有的订单情况。
(5)管理员功能。
这里管理员也充当了商家的功能。
可以查看、修改图书信息,删除图书。
对书籍的全部操作,对评论,订单,库存等的操作等。
二、系统可行性研究(1)技术可行性网上购书系统已得到了大量应用,有许多可供参考的成功系统。
从技术角度考虑,此信息系统开发可行。
本系统的界面操作都较为简洁、方便,完全可以满足一般人群的操作需求。
不用太多的计算机知识,友好的图形和提示可以上新手尽快上手。
(2)经济可行性从绪论中的可以看到,网上书店与传统书店相比具有十分明显的优势,从计划到系统实现,我们所使用的所有技术都是免费开源的。
从硬件角度来看,一个小型的网上书店只需要一台较好的windows作为服务器就可以满足要求,可以说运行的成本是十分低廉的;但同时带来的效益完全可以有利可图。
因此经济上也是可行的。
(3)操作可行性本系统的界面操作都较为简洁、方便,完全可以满足一般人群的操作需求。
不用太多的计算机知识,友好的图形和提示可以上新手尽快上手。
(4)其他方面在其他方面,如是否符合当地法律法规,利益冲突等方面都是可行的。
综上所述,本购书系统中技术上、经济上、操作上和其他方面都是可行的,因此,继续本系统的分析论述。
三、系统业务流程的调查和分析业务流程图是一种描述系统内各单位、人员之间业务关系、作业顺序和管理信息流向的图表,利用它可以帮助分析人员找出业务流程中的不合理流向。
业务流程图表示业务的流向。
图1 系统业务流程图数据流程图(DFD)是一种能全面地描述信息系统逻辑模型的主要工具,它可以用少数几种符号综合的反映出信息在系统中的流动、处理和存储情况。
数据流程图是表示操作或数据的方向。
数据流分析是从现在业务中抽取由计算机自动或半自动完成的那一部分活动的过程。
顶层数据流程图主要介绍了整个系统的运行边界,如图3-9所示,展现了在线购书系统的数据数据需求和生成数据的功能。
四、系统设计系统总体结构设计系统总体结构设计是根据信息分析数据流程图的结果,按照结构化的系统设计方法而进行的。
结构化设计的基础是模块化。
在线购书系统的功能结构图如图4-1所示:图10 系统功能结构图对该功能结构图的具体论述如下:(1)用户管理模块1 用户注册,登录:用户需输入基本的用户名和密码,还可再完善输入其他电话,电子邮件,住址等信息2 用户信息修改:用户可以修改自己的个人信息和密码及其他相关信息;3 用户信息查看:会员可以查看自己的个人信息。
4 用户查看订单:用户可以查看已经生成的订单信息,并进行一些操作5 发表评论:用户可以对书籍发表评论信息。
(2)书籍管理模块①书籍浏览:用户可以对所有书籍进行浏览②书籍更新:只有管理员可以对所有书籍进行添加、删除、更新等操作③书籍搜索:可以输入查询条件退书籍进行搜索(3)购物车模块①更新购物车:用户可以查看购物车中的书籍信息,并可以添加和删除购物车中书籍。
②查看购物车:用户可以随时查看购物车中的信息,包括书籍信息,价格信息等③生成订单:用户可以确定购物中需购物的书籍,然后下订单,生成订单信息。
(4)管理员模块①用户管理:对用户的信息进行审核,对不符合者进行删除,也可以根据客户的需要对它的基本信息进行修改;②库存管理:可以查看各书籍的库存量,并可以随时更新库存信息。
③订单处理:对用户的订单进行处理。
④评论管理:对用户的评论信息的一些操作五、系统实现下面将按不同的模块功能来具体展示系统的实现与调试。
主页面设计本页面主要通过Gridview控件和热区实现了用户的可以直接进行的一些基本操作,如可以通过设计的热区直接跳转到登录页面、购物车页面、订单提交页面、留言页面等,而且管理员也可直接登录,对数据库进行操作等。
主页面后台模块主要页面:管理员登录页面如图所示:管理员登录若登录成功,直接跳转到图书管理页面,可以对图书进行增、删、改等操作:登录成功通过对书号检索,判断添加图书或增加图书数量增加图书数量增加图书此功能的主要代码实现为:protected void btnSeek_Click(object sender, EventArgs e){ string cmdtext = "select * from v_book where BookISBN='" + txbISBN.Text + "'";DataTable dt = DataConn.ReturnTable(cmdtext); ;if (dt.Rows.Count > 0){Panel3.Visible = true;Panel2.Visible = false;lblBookName.Text = dt.Rows[0]["BookName"].ToString();lblPublisher.Text = dt.Rows[0]["PublisherName"].ToString();lblAuthor.Text = dt.Rows[0]["BookAuthor"].ToString();}}protected void btnAddQuantity_Click(object sender, EventArgs e){string cmdtext = "update t_book set quantity=quantity+" + txbBookAmount.Text + "where BookISBN='" + txbISBN.Text + "'";if (DataConn.ExectuteNonQuery(cmdtext).ToString() == "1"){Response.Write("<script>alert('库存增加成功!')</script>");}}protected void btnUploadImage_Click(object sender, EventArgs e){if (FileUploadImage.HasFile){if (ViewState["filename"] != null){System.IO.File.Delete(Server.MapPath(ViewState["filename"].ToString()));}Random r = new Random(lisecond);string filename = @"~\bookimage\" + DateTime.Now.ToString("yyyyMMddhhmmss") + r.Next(1000, 10000).ToString() + ".jpg";ViewState["filename"] = filename;FileUploadImage.SaveAs(Server.MapPath(filename));bookImage.ImageUrl = filename;}}protected void btnAddBook_Click(object sender, EventArgs e){string cmdtext = "insert into t_book (bookName,publisherID,CategoryID,BookImage,Quantity,AddDate,Commend,bookIS BN) values (@bookName,@publisherID,@CategoryID,@BookImage,@Quantity,@AddDate,@Commend,@bookISBN)";SqlParameter p1 = new SqlParameter("@bookName", txbBookName.Text);SqlParameter p2 = new SqlParameter("@publisherID", ddlPublisher.SelectedValue);SqlParameter p3 = new SqlParameter("@CategoryID", ddlBOokType.SelectedValue);SqlParameter p4 = new SqlParameter("@BookImage", ViewState["filename"].ToString().Remove(0, 12));SqlParameter p5 = new SqlParameter("@Quantity", int.Parse(txbQuantity.Text));SqlParameter p6 = new SqlParameter("@AddDate", DateTime.Now);SqlParameter p7 = new SqlParameter("@Commend", RadioButtonList1.SelectedValue);SqlParameter p8 = new SqlParameter("@bookISBN", txbISBN.Text);if (DataConn.ExectuteNonQuery(cmdtext, p1, p2, p3, p4, p5, p6, p7, p8).ToString() == "1"){Response.Write("<script>alert('添加成功!')</script>");}}}普通用户登录模块:登录不成功时提示信息:未注册时点击“注册”按钮进行注册:跳转到注册新用户页面:书籍模块:书籍浏览点击各个书籍类目可以进入到各自的书籍详情,例如:书籍浏览购物车模块:用户浏览书籍,并选择想要购买的书籍添加到购物车中,在购物车中,用户可以随时查看自己购物车的最新购物情况,包括书籍,价格,数量,总价等基本信息;并且用户可以动态更新购物数量;对于不需要的书籍可以直接在购物车中清空;同时在购物车中提供返回购物和结算的功能:浏览购物车购物车主要代码实现:private void AddBook(string BookID){string cmdtext = "select * from v_book where BookID=" + BookID;if (FindProfileByBookID(BookID.ToString())){for (int i = 0; i < Profile.ShopCart.BookID.Count; i++)if (Profile.ShopCart.BookID[i].ToString() == BookID)Profile.ShopCart.BookAmout[i] = (int)(Profile.ShopCart.BookAmout[i]) + 1;}else{DataTable dt = DataConn.ReturnTable(cmdtext);DataRow dr = dt.Rows[0];Profile.ShopCart.BookID.Add(dr["BookID"]);Profile.ShopCart.BookName.Add(dr["BookName"]);Profile.ShopCart.ListPrice.Add(dr["ListPrice"]);Profile.ShopCart.UnitPrice.Add(dr["UnitPrice"]);Profile.ShopCart.BookAmout.Add(1);}}private void BindShopCart(){DataTable dt1 = CreateShopTable();gvShopCart.DataSource = dt1;gvShopCart.DataBind();}private DataTable CreateShopTable(){DataTable dt1 = new DataTable();DataColumn dc1 = new DataColumn("BookID");dt1.Columns.Add(dc1);dc1 = new DataColumn("BookName");dt1.Columns.Add(dc1);dc1 = new DataColumn("ListPrice");dt1.Columns.Add(dc1);dc1 = new DataColumn("UnitPrice");dt1.Columns.Add(dc1);dc1 = new DataColumn("BookAmout");dt1.Columns.Add(dc1);double totleprice1 = 0, totleprice2 = 0, PremiumP rice = 0;for (int i = 0; i < Profile.ShopCart.BookID.Count; i++){DataRow row = dt1.NewRow();row["BookID"] = Profile.ShopCart.BookID[i];row["BookName"] = Profile.ShopCart.BookName[i];row["ListPrice"] = Profile.ShopCart.ListPrice[i];row["UnitPrice"] = Profile.ShopCart.UnitPrice[i];row["BookAmout"] = Profile.ShopCart.BookAmout[i];totleprice1 = totleprice1 + double.Parse(Profile.ShopCart.ListPrice[i].ToString()) * int.Parse(Profile.ShopCart.BookAmout[i].ToString());totleprice2 = totleprice2 + double.Parse(Profile.ShopCart.UnitPrice[i].ToString()) * int.Parse(Profile.ShopCart.BookAmout[i].ToString());dt1.Rows.Add(row);}PremiumPrice = totleprice1 - totleprice2;Profile.ShopCart.TotlePrice = totleprice2.ToString();Profile.ShopCart.PremiumPrice = PremiumPrice.ToString();lbltotleprice.Text = "商品的总价为" + totleprice2 + ",比市场价优惠了" + PremiumPrice + "元";return dt1;}bool FindProfileByBookID(string BookID){for (int i = 0; i < Profile.ShopCart.BookID.Count; i++)if (Profile.ShopCart.BookID[i].ToString() == BookID)return true;return false;}protected void btnClearBook_Click(object sender, EventArgs e){for (int i = 0; i < gvShopCart.Rows.Count; i++){CheckBox cboxselect = gvShopCart.Rows[i].FindControl("cboxSelectd") as CheckBox;if (cboxselect.Checked == true){string bookID = gvShopCart.Rows[i].Cells[1].Text;DeleteBookByID(bookID);}}BindShopCart();}private void DeleteBookByID(string bookID){for (int i = 0; i < Profile.ShopCart.BookID.Count; i++)if (Profile.ShopCart.BookID[i].ToString() == bookID){Profile.ShopCart.BookID.RemoveAt(i);Profile.ShopCart.BookName.RemoveAt(i);Profile.ShopCart.BookAmout.RemoveAt(i);Profile.ShopCart.ListPrice.RemoveAt(i);Profile.ShopCart.UnitPrice.RemoveAt(i);break;}}protected void btnShopcart_Click(object sender, EventArgs e){Profile.ShopCart.BookID.Clear();Profile.ShopCart.BookName.Clear();Profile.ShopCart.BookAmout.Clear();Profile.ShopCart.ListPrice.Clear();Profile.ShopCart.UnitPrice.Clear();BindShopCart();Response.Redirect(@"~\Default2.aspx");}protected void btnCal_Click(object sender, EventArgs e){for (int i = gvShopCart.Rows.Count-1; i >= 0; i--){TextBox tbxBookAmout = gvShopCart.Rows[i].FindControl("txbBookAmout") as TextBox;if (Profile.ShopCart.BookAmout[i].ToString() != tbxBookAmout.Text){Profile.ShopCart.BookAmout[i] = int.Parse (tbxBookAmout.Text);if (tbxBookAmout.Text == "0"){Profile.ShopCart.BookID.RemoveAt(i);Profile.ShopCart.BookName.RemoveAt(i);Profile.ShopCart.BookAmout.RemoveAt(i);Profile.ShopCart.ListPrice.RemoveAt(i);Profile.ShopCart.UnitPrice.RemoveAt(i);}}}BindShopCart();}protected void btnContinue_Click(object sender, EventArgs e){Response.Redirect(@"~\Default2.aspx");}protected void btnSubmit_Click(object sender, EventArgs e){Response.Redirect(@"~\Submit.aspx");}}用户点击“结算”按钮,即对该购物车中的书籍进行整批或单个下单,进入确认订单环节:结算用户填写完订单信息后,点击“确认购买”填写个人信息:确认购买点击“确认地址”进入提交订单页面:提交订单点击提交订单进入订单生成页面:生成定单评论模块:登录用户可以对某一购买过的书籍进行评论,且只能评论一次:对所买书籍评论不允许多次评论没买图书的用户不允许评论留言模块:点击留言按钮即可进行留言:留言查看新闻模块:可以通过左侧连接点击查看新闻消息、通知及优惠:查看新闻查看通知查看优惠六、心得体会:课程设计是培养学生综合运用所学知识、发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程,随着科学技术发展的日新月异,应用平台开发已经成为当今计算机应用中空前活跃的领域,在生活中可以说是无处不在。