学号:课程设计题目客户订购登记数据库设计学院计算机学院专业物联网工程专业班级姓名指导教师2013年1月7日2课程设计任务书学生姓名:专业班级:指导教师:工作单位:计算机学院题目:客户订购登记数据库设计初始条件:一个公司希望为其客户订购行为建立一个数据库。一个消费者可以有一个或多个订单,每个订单可以有一种或多种商品。每个订单有一张发票,可以通过多种方式来支付,例如支票、信用卡或现金。要求完成的主要任务:1.根据上述的初始条件,进行调查分析并设计适当的属性。设计一个客户订购数据库,DBMS可选MsSQLServer、Access、VFP等。2.完成课程设计说明书,其格式遵守学校今年的新规定。主要内容包括:需求分析,概念设计,逻辑设计,物理实现等。3.基于该数据库,最好实现一个或多个应用程序(自己确定功能),程序设计语言(工具)任选。这一项是选作,不作硬性要求。时间安排:本学期第18周:1.消化资料、系统调查1天2.系统分析1天3.总体设计,实施计划2天4.撰写报告1天指导教师签名:年月日系主任(或责任教师)签名:年月日3一.需求分析.................................................................................31.初始条件…………………………………………………….32.设计目标…………………………………………………….33.功能析……………………………………………………….3二.概念设计……………………………………………………….31.总体功能图………………………………………………….32.E-R图………………………………………………………..4三.逻辑结构设计…………………………………………….…...5四.物理结构设计…………………………………………………61.存取方法的选择……………………………………………..62.数据库的存储结构…………………………………………..7五.程序代码………………………………………………………71.基本表的定义………………………………………………..72.数据的插入…………………………………………………..83.查询功能……………………………………………………..84.数据的更新…………………………………………………..9六.系统运行,调试与维护……………………………………..91.基本表输入数据后结果……………………………………..92.查询功能结果……………………………………………….103.数据的更新………………………………………………...104.数据库的维护……………………………………………...11七.小结…………………………………………………………..114客户订购登记系统软件设计一.需求分析1.初始条件一个公司希望为其客户订购行为建立一个数据库。一个消费者可以有一个或多个订单,每个订单可以有一种或多种商品。每个订单有一张发票,可以通过多种方式来支付,例如支票、信用卡或现金。2.设计目标根据上述的初始条件,进行调查分析并设计适当的属性。设计一个客户订购数据库,DBMS。基于该数据库,实现一个或多个应用程序(自己确定功能)。3.功能分析通过对设计目的的分析,可以确定该系统需要完成几个基本功能的实现:①客户信息的查询:通过输入客户号对客户的基本信息进行查询,客户的基本信息包括姓名,电话,地址,公司,所拥有的订单;②订单的查询:通过输入订单号对订单的基本信息进行查询,订单的基本信息包括持有该订单的客户,该订单对应的发票号,该订单的支付方式以及该订单中所包含的商品号及其数量;③发票的查询:通过输入发票号对发票的基本信息进行查询,发票的基本信息包括该发票对应的客户号,订单号,该发票上的总额以及支付方式;④客户的新建:能够对数据库中所没有的新客户进行创建并将新客户的信息保存到数据库中;⑤订单的新建(发票的新建):能够建立新的订单,同时建立与订单对应的发票,并将新建订单保存到数据库中;⑥商品的查看:通过输入商品号对商品进行查看,能查询到商品的名字,单价及其库存数量;4.基本表根据该系统的功能,该系统应该包括以下几个基本表:Customer表(保存客户相关信息数据)List表(保存订单的相关信息数据)Goods表(保存商品的相关信息数据)Bill表(保存发票的相关信息数据)二.概念设计1.总体功能图根据系统需要实现的功能,可以确定客户模块、订单模块、发票模块和商品模块,另外为了软件的使用和管理方便,设计了管理模块和退出模块,各模块下面建立各自的窗口系统,模块图如下:5图1:系统功能模块图2.E-R图通过对设计目的的分析,可以确定各个数据模型的E-R图。图2客户实体及属性图3:订单实体及属性客户订购登记系统客户模块订单模块发票模块管理模块商品模块发票查询新建客户订单查询新建订单客户查询商品查询新建账户删除账户修改密码数据库模块客户姓名电话公司订单订单客户发票支付方式商品及数量6图4:发票实体及属性图5:商品实体及属性n111n11n图7:实体及其联系图三.逻辑结构设计E-R图是由实体型,实体型的属性和实体之间的联系3个要素组成的。将E-R图转换为关系模型就是要将实体型,实体型的属性和实体之间的联系转换为一组关系模式。根据本系统的E_R图,将其转换为关系模式如下:Customer表:Cnum是主码名称单价库存商品发票总额客户发票支付方式客户订单发票商品属于属于属于关联7字段名称数据类型Cnum(客户号)自动编号Cname(姓名)文本Ctel(电话)文本Caddr(地址)文本Ccom(公司)文本Listnum(订单1)Int…List表:Listnum主码字段名称数据类型Listnum(订单号)自动编号Cnum(客户号)IntBillnum(发票号)IntPayMethod(支付方式)文本Good1(商品号1)文本Num1(商品数量)文本Good2(商品号2)文本…Bill表:Bill主码字段名称数据类型Billnum(发票号)自动编号Listnum(订单号)IntCnum(客户号)IntPay(支付金额)文本PayMethod(支付方式)文本Goods表:Goodnum主码字段名称数据类型Goodnum(商品号)文本Goodsname(商品名)文本Gprice(价格)文本Gstore(库存量)文本四.物理结构设计1.存取方法的选择8①索引方法索引方法有很多中,常用的有B+树索引,基于函数的索引,反响索引,位映射索引。如果一个属性经常在查询条件中出现,或者经常作为最大值和最小值等聚集函数的参数。②Hash方法Hash方法是用Hash函数来存储和存取关系记录的方法。指定某个关系上的一个(组)属性A作为Hash码,然后对该Hash码定义一个函数,关系记录的存储地址由Hash(a)来决定,a是记录在A上的值。如果一个关系的属性主要出现在等连接条件中或主要出现在相等比较选择条件中,而且一个关系的大小可以预知且变化不大,则此关系可以选择Hash存取方法。③聚簇方法为了提高某个属性(或属性组)的查询速度,把这个或这些属性上具有相同值的元组集中存放在连续的物理块中称为聚簇。聚簇方法可以大大提高按聚簇码进行查询的效率。聚簇方法不打不适用于单个关系,也适用于经常进行连接操作的多个关系。一个数据库可以建立多个聚簇,一个关系只能加入一个聚簇。2.数据库的存储结构确定数据库存储结构主要指确定关系,索引,聚簇,日志,备份等的存储安排和存储结构,确定系统配置参数等。不同的DBMS产品提供的磁盘空间管理策略差别很大,在磁盘上存储关系,索引和聚簇的方法也不同,很难拿给出一个通用的数据库存储结构选择方法。五.程序代码1.基本表的定义Customer表创建:CreatetableCustomer(Cnumsmallintprimarykey,Cnamechar(7),Ctelchar(10),Caddrchar(20),Ccomchar(20),Listnumchar(10));List表创建:CreatetableList(Listnumsmallintprimarykey,9Cnumsmallint,Billnumsmallint,PayMethodchar(5),Goodnumchar(10),Numchar(2),ForeignkeyCnumreferencesCustomer(Cnum),ForeignkeyBillnumreferencesBill(Billnum),ForeignkeyGoodnumreferencesGoods(Goodnum));Bill表创建:CreatetableBill(Billnumsmallintprimarykey,Listnumsmallint,Cnumsmallint,Paychar(10),PayMethodchar(5),ForeignkeyListnumreferencesList(Listnum),ForeignkeyCnumreferencesCustomer(Cnum));Goods表创建:CreatetableGoods(Goodnumchar(10)primarykey,Goodnamechanr(10),Gpricechar(10),Gstorechar(5)):2.数据的插入由于数据插入方法相似,在此,只写Goods表的插入代码InsertintoGoodsvalues(‘000001’,’苹果’,’1.5元/公斤’,’100’);InsertintoGoodsvalues(‘000002’,’梨’,’0.5元/公斤’,’50’);InsertintoGoodsvalues(‘000003’,’橘子’,’0.75元/公斤’,’150’);InsertintoGoodsvalues(‘000001’,’香蕉’,’0.8元/公斤’,’100’);3.查询功能①查询Bill表中,支付方式为“支票”的所有发票数据。SelectBillnum,Listnum,Cnum,PayFromBillWherePayMethod=“支票”;10②查询“武汉1号”购买的物品的名称,价格SELECTCname,Goodname,GpricefromCustomer,GoodswhereGoods.Goodnum=List.GoodnumandList.Cnum=Customer.CnumandCname='武汉1号';③查询“武汉1号”,购买物品的话费SelectCname,PayFormCustomer,BillWhereCustomer.Cnum=List.CnumandBill.Billnum=List.List.billnumandCname=’武汉1号;’4.数据的更新①插入客户“武汉5号”InsertIntoCustomerValues(‘5’,’武汉5号’,’000005’,’武汉五路’,’武汉公司5’,’555555’);②删除数据删除Customer中用户‘武汉5号’的数据DeleteFromCustomerWhereCname=’武汉5号’;③更新数据更新Customer表中’武汉2号’中电话号码为‘000000’UpdateCustomerSetCtel=’000000’WhereCname=’武汉2号’;六.系统运行,调试与维护1.基本表创建和数据输入后的结果如下:Customer表List表11Bill表Goods表2.查询功能结果①查询Bill表中,支付方式为“支票”的所有发票数据。②查询“武汉1号”购买的物品的名称,价格③查询“武汉1号”,购买物品的话费3..数据的更新①插入客户“武汉5号”②删除Customer中用户‘武汉5号’的数据12③更新Customer表中’武汉2号’中电话号码为‘000000’4.数据库的维护①数据库的转储和恢复②数据库的安全性,完整性控制③数据库性能的监督,分析和改造④数据库的重组织与重构造七.小结本次的数据库课程设计,花费了了将近一