‘壹’ 求一篇基于web的数据库设计社会实践调查报告
《基于web的数据库设计实践》
The Database Design Based On WEB Used In Remote Concurrent Design
Abstract: the paper analyses the database characteristics used in the remote concurrent proct design system based on Internet, deeply researches the database structure, interface and the method of the data safety.
Keywords: Internet, remote concurrent design, database based on Web
近年来,随着Web技术的蓬勃发展,人们已不满足于只在浏览器上获取静态的信息,想要通过它发表意见、查询数据。随着电子商务的普及人们开始参与一些网络商务活动,这就迫切需要实现Web与数据库的互连[1]。产品异地并行设计对数据的要求有一定的特殊性,主要有(1)产品数据多种多样。产品设计,特别是机械产品设计常常是大型而又复杂,在异地通过不同的设计小组,按不同的分工设计同一产品,所要管理和通讯的数据类型随着分工的不同而有不同的表现形式,如常规的数字组成的数据集,以图形、图象形式表达的产品模型数据,以文字形式描述设计的文档,还有图表、公式等形式,复杂多样。(2)产品数据交换频繁,流量大。产品设计是一个协同工作的创造性集体智慧凝聚的过程,要使设计顺利进行,分布在异地的不同设计小组之间就要经常性地进行数据交换,并且有些形式表达的产品数据是较大的文件。(3)产品数据的一致性要求高。分工合作的不同设计小组之间的设计任务是彼此关联,互相依赖的。如果其中一个数据改变了,相关联的数据必须跟着改变,在Web数据库设计时必须考虑数据的一致性问题。(4)产品数据的并发性访问频繁。由于异地产品设计的特殊属性,数据的并发性访问非常频繁。所以,进行基于Internet的产品异地并行设计的Web数据库设计与一般的电子商务不同,要充分考虑以上属性。本文结合我们近期开发的机械产品异地并行设计系统(RCDS, Remote Concurrent Design System),综合比较了多种当今流行的网络数据存取技术,设计出可靠安全的数据库系统。
1 Web数据库连接方案
1.1数据库连接方案选择
RDO、DAO和ADO是比较常见的Web数据库访问技术。
DAO (Data Access Objects) 数据访问对象是第一个面向对象的接口,它含有 Microsoft Jet 数据库引擎(由 Microsoft Access 所使用),并允许 Visual Basic 开发者通过 ODBC 象连接到其他数据库一样,直接访问到 Access 表。DAO 最适用于单系统应用程序或小范围本地分布使用,对大范围的异地并行设计显得功能不够强大。
RDO (Remote Data Objects) 远程数据对象是一个到 ODBC 的、面向对象的数据访问接口,它同易于使用的 DAO style组合在一起,提供了一个接口,形式上展示出所有 ODBC 的底层功能和灵活性。RDO 在访问 Jet 或 ISAM 数据库方面有一定的限制,而且它只能通过现存的 ODBC 驱动程序来访问关系数据库。但是,RDO 已被证明是许多 sql Server、Oracle
以及其他大型关系数据库开发者经常选用的最佳接口。RDO 提供了用来访问存储过程和复杂结果集的更多和更复杂的对象、属性,以及方法。对异地并行设计Web数据库来说也不是十分理想。
ADO(ActiveX Data Objects)为ActiveX组件中数据库访问组件,ASP就是通过它实现对数据库的访问。ADO 是 DAO、RDO 的后继产物。ADO 2.0在功能上与 RDO 更相似,而且一般来说,在这两种模型之间有一种相似的映射关系。ADO “扩展”了 DAO 和 RDO 所使用的对象模型,这意味着它包含较少的对象、更多的属性、方法(和参数),以及事件。例如,ADO 没有与 rdoEngine 和 rdoEnvironment 对象相等同的对象,可以包含 ODBC 驱动程序管理器和 hEnv 接口。尽管事实上接口可能是通过 ODBC OLE DB 服务提供程序实现的,但目前也不能从 ADO 中创建 ODBC 数据源。ADO 是为 Microsoft最新和最强大的数据访问范例 OLE DB 而设计的,是一个便于使用的应用程序层接口。OLE DB 为任何数据源提供了高性能的访问,这些数据源包括关系和非关系数据库、电子邮件和文件系统、文本和图形、自定义业务对象等等。ADO 在关键的 Internet 方案中使用最少的网络流量,并且在前端和数据源之间使用最少的层数,所有这些都是为了提供轻量、高性能的接口。同时 ADO 使用了与 DAO和 RDO相似的约定和特性,简化的语义使它更易于学习。
ADO最早是在IIS中引入的,主要用于ASP,用ADO可以使服务器端的脚本通过ODBC存取和操纵数据库服务器的数据。使用ADO的对象可以建立和管理数据库的连接,从数据库服务器请求和获取数据,执行更新、删除、添加数据、获取ODBC的错误信息等。ADO是ASP方案中最具吸引力的数据库连接控件,它为用户提供了连接任何兼容ODBC的数据库以及创建全功能数据库应用程序的能力。
ADO具有简单易用、高速、占用资源少等的优点。不同于DAO和RDO,ADO有着更高的执行效率。ADO 对象模型如图1a所示。每个 Connection、Command、Recordset 和 Field 对象都有 Properties 集合,如图1b所示。
a) b)
图1 ADO对象模型及属性
应该说,ADO是微软的下一代数据库连接技术,用来全面取代RDO和DAO的数据访问工具。从发展趋势来看,ADO今后将逐步替代老的DAO特别是RDO数据访问接口,成为新的远程数据访问方法。所以,选择ADO作为产品异地并行设计的Web数据库接口技术是合适的。
1.2 ADO应用分析
ADO 并不是自动和现存的数据访问应用程序代码兼容的。当 ADO 封装 DAO 和 RDO 的功能性的时候,必须将许多语言要素转换为 ADO 语法。在某些情况下,这将意味着要对现存代码的某些功能做一个简单转换。在其他情况下,最佳的做法可能是用 ADO 的新功能重写该应用程序。
包含在 DAO 和 RDO 模型中的许多功能被合并为单个对象,这样就生成了一个简单得多的对象模型。然而,由于这个原因,起初可能会觉得找到合适的 ADO 对象、集合、属性、方法,或事件非常困难。与 DAO 和 RDO不同的是,尽管 ADO 对象是分层结构的,但在分层结构范围之外也是可以创建的。同时,也应当注意,ADO 当前并不支持 DAO 的所有功能。ADO 主要包括 RDO 风格的功能性,以便和 OLE DB 数据源交互,另外还包括远程和 DHTML 技术。
一般说来,在 ADO 的演化过程中,马上把大多数 DAO 应用程序(except possibly是那些使用 ODBCDirect 的应用程序)移植到 ADO 上为时太早,因为当前的 ADO 并不支持数据定义 (DDL)、用户、组等等。不过,如果只将 DAO 用于客户—服务器应用程序,并不依赖于 Jet 数据库引擎或不使用 DDL,那么就可能移植到 ADO。最终,Microsoft 将提供一个 ADO DDL 组件来帮助进行 DAO 到 ADO 的移植,并为 OLE DB 供应商提供一般的 DDL 支持。
在ASP中使用ADO技术来访问Web数据库,其应用前景是无可估量的。原理图如下:
图2 ADO在ASP程序中的应用
2 Web数据库管理系统
常见的数据库类型有面向对象的数据库(OODB)和关系型数据库。OODB对主流数据库应用开发来说是相当新颖的,使用OODB使应用程序中的数据对象与现实世界中的对象一一对应,面向对象数据库扩充了对象模型。一个常用的对象模型是由对象数据库管理组(ODMG)开发出来,具有比传统的关系数据库更优越的性能,但毕竟在目前还是一种探索阶段,暂时还未有相应的技术普及。
关系数据库已经是数据库体系的世界标准。当开发一个数据驱动应用程序时,大多数情况下用户需要访问网络(如Internet、Intranet等)上的数据信息,就RCDS就是建立在网络的信息通讯之上,是完全的客户机/服务器应用程序。
SQL Server是一个可缩放、高性能的关系型数据库管理系统(RDBMS),它的设计是为了满足分布式客户/服务器计算的需要,允许客户应用程序使用几个特定的工具和技术控制从服务器检索的数据。这些包括触发器、存储过程和规则的选项。因此,系统采用MS SQL Server7.0作为后台数据库。
3 Web数据库结构
数据模型通常有层次模型、网状模型、关系模型及OO(面向对象)模型等。其中关系模型是建立在数学概念基础之上的一种模型,由若干个关系框架组成的集合,它也是到目前为止最为成熟的一种数据库类型。本文RCDS采用MS SQL Server作为后台数据库,根据数据库工具和数据库特点,开发出一套可靠健壮的数据存储方案。
整个数据库共有AdminData、ChatNames、DesignUnits、Message、OnlineUnits、Procts、RqtTasks、RqtTaskUnits、RqtDesignUnits、ShareData、Tasks、TaskUnits和UploadFiles等表格。在建立数据模型的时候首先考虑是要避免重复数据,也就是建立规范化数据库。规范化数据库可以通过被称为范式水平的指标来衡量,级别有第一范式、第二范式和第三范式,通常第三范式就是要达到的目标,因为它提供了数据冗余和开发简易性之间的最好折衷。
RCDS数据库正是按照第三范式标准来设计的,它保证了模型的精简和表格的紧凑性。而第三范式标准也最大发挥了关系数据库的优势,图3是部分表格的视图链接情况。
图3 关系表格视图
4.1 并发控制的处理
在多个用户同时访问一个数据库时就产生并发问题,特别是在其中一些用户对数据库有添加或删除修改等操作时,那么其他所获得的数据可能是一塌糊涂,甚至造成整个数据访问的冲突、终止,从而使系统发生混乱以至崩溃。RCDS采用的解决办法是锁定技术,总体上分为共享锁定和排它锁定两种类型(如图4)。前者是指同时有几个过程共享一个锁定,比如一个用户(或客户)正在读取一个数据,虽然在这之前他已经对该数据设置了锁(LOCK),但其他用户同样可以(也只能是)读取它。而排他锁定一般应用于对数据进行修改或更新(包括添加删除等)操作,即是用户在修改一个数据之前设置了锁定,在一定的时间里其他用户是不能访问到该数据的,只有等待锁定解除(UNLOCK)才能进行访问到它,当然在计算机处理的时候,其他的用户一般是感觉不到有这个等待时间的。通过这样的处理,就保证了数据的一致性。
a) 共享锁定
b) 排它锁定
图4 安全锁定类型
在ADO进行数据库操作时,它的锁定类型相对来说复杂一些。打开记录集时,可以指定锁定类型。锁定类型决定了当不止一个用户同时试图改变一个记录时,数据库应如何处理。ADO中的锁定主要有以下四种类型:
l AdLockReadOnly 指定你不能修改记录集中的记录
l AdLockPessimistic 指定在编辑一个记录时,立即锁定它
l AdLockOptimstic 指定只有调用记录集的Update方法时,才锁定记录
l AdLockBatchOptimstic 指定记录只能成批地更新
在缺省情况下,记录集使用只读锁定。要指定不同的锁定类型,可以在打开记录集时包含这些锁定常量之一。部分代码如下:
… …
Set MyConn=Sever.CreateObject(“ADODB.Connection”)
//定义数据库连接MyConn
Set RS=Sever.CreateObject(“ADODB.RecordSet”)
//定义返回数据记录集
MyConn.Open “ByktDB.dsn”//建立应用程序与数据源的连接
RS.Open “SELECT * FROM Mytable”, MyConn, adOpenDynamic, adLockPessimistic
//进行数据库操作,并且设置锁定
RS.Close
MyConn.Close
… …
4.2产品数据一致性处理
数据的安全因素除了前面所提到的并行控制之外,还要考虑事务处理。网络数据库有其不同的地方,例如:假设某个时间有一个设计人员在你的站点上索取一些设计信息,有关的设计信息存储在两个表中。一个表用来保存该设计者的信息,另一个表包含了要索取的设计信息。该设计人员的信息已经输入了第一个表中。但是,就在这时,发生了意外情况,一道闪电击中了你的服务器,使第二个表没有被更新。在这种情况下,一个健壮的系统就必须保证最后的结果是两个表都没有被更新过。这时候事务处理就发挥了重要的功效。
使用事务处理,你可以防止第二个表没有被更新而第一个表被更新的情况出现:当一组语句构成一个事务处理时,如果一个语句没有执行成功,则所有的语句都不成功。不管是针对多个表,还是进行表内多个记录的操作,它们所需要的安全保证是一样的。事务处理的实现代码如下:
… …
Set MyConn=Sever.CreateObject(“ADODB.Connection”)
MyConn.Open “ByktDB.dsn”
MyConn.BeginTrans //事务处理开始
MyConn.Execute “INSERT DataTable(Num) Values(‘3628’)”
MyConn.Execute “INSERT Shipping (Address) VALUES(‘Paris,France’)”
MyConn.CommitTrans //事务处理结束
MyConn.Close
… …
在上面这段代码中,用BeginTrans方法和CommitTrans方法来标记事务处理的开始和结束。在BeginTrans方法被调用之后,CommitTRans方法被调用之前,不管出现什么错误,两个表都不会被更新,在这个过程中所有处理的数据都保持了完全可靠的一致性。
‘贰’ 书店销售管理系统数据库设计目的和意义
学号 1
课 程 设 计课程名称 《数据库系统原理》课程设计
题 目 书店销售管理系统
专 业
班 级
姓 名
成 绩
指 导 老 师
2019 年 12 月 30 日至 2019 年 1月 3日一、课程设计目的与任务《数据库系统原理课程设计》是针对计算机专业基础课《数据库系统原理》开设的课程设计,目的是使学生通过本课程设计之后,对数据库设计的基本概念、基本原理和优化技术有较全面的了解和领会,并能操作当前流行的DBMS,了解数据库在计算机应用系统的作用,独立地开发实现一个小型的基于DBMS上的应用系统。结合具体的开发案例,理解并初步掌握数据库系统需求分析、概念结构设计、逻辑结构设计、物理结构设计、应用功能设计(视图,索引,游标,存储过程,触发器等)数据录入及测试等系统设计与系统实施及维护管理的主要环节和步骤以及软件文档的制作能力。二、课程设计的题目与基本要求1.设计题目:书店销售管理系统数据库设计2.基本要求:(1)图书入库管理:维护入库图书信息(如图书编号、书名、作者、价格、图书分类、出版社等),自动计算库存。(2)图书查询统计:按图书分类,出版社、书名、作者等条件查询图书的详细信息。(3)销售管理: 销售过的图书都记录在销售列表中,方便统计收入。图书销售后,实时记录图书库存,按每天统计销售额、按每个月或季度统计销售额,并能根据销售数量统计生成畅销书名单。(4)设计报告内容包括:基本原理、设计方案的选择与确定,详细的设计过程及结果做出评价,分析存在的问题,提出改进意见并写出心得体会。三、学时分配进度安排
序号 设计内容 所用时间
1 选题及调研 1天
2 数据库结构设计 1天
3 数据库查询优化 1天
4 调试及撰写报告 1天
5 答辩 1天
合 计 1周
四、课程设计考核及评分标准1.设计报告要求课程设计报告要求逻辑清晰、层次分明、书写整洁。格式包括标题、提要、正文(包括①设计项目要求与说明。②数据模型分析。③软件流程分析。④调试分析。⑤实验数据分析。⑥答辩。⑦成绩评定。)附录(图纸、程序清单或软盘)。设计报告须每人一份,独立完成。2.图纸要求系统结构框图、概念模型图等。3.评分标准
评分依据 评分成绩
1.设计方案正确,具有可行性、创新性 30分
2.数据库测试性能达到任务书要求 25分
3.设计报告的规范化、内容充实、参考文献 15分
4.答辩 20分
5.平时成绩(考勤等) 10分
总分 100分
注:成绩等级:优(90分—100分)、良(80分—89分)、中(70分—79分)、及格(60分—69分)、60分以下为不及格。五、指导时间
周次 星期一 星期二 星期三 星期四 星期五
第17周 第3-4节 第3-4节 第3-4节 第3-4节
地点 233 231 现教 现教
1.引言Internet的迅速发展正以前所未有的深度和广度影响和改善着人类生活的各个方面,越来越多的人开始意识到Internet所起到的重大作用随着书店规模的不断扩大,员工人数的不断增多,使得书店管理的手工操作管理模式的局限性越发突出.本书店管理系统应用了科学的管理模式对员工.书籍.订单信息进行管理和维护,并且还提供了给类报表的打印,使原本非常复杂的手工管理变得简洁明了。计算机信息管理技术的应用,除了能在相当大的程度.上代替人工作业,从而减少人员工作量,减轻工作负担,减少工作中因人为原因而产生的错误从而避免不必要的损失外,更重要的是能建立准确畅通、简便的信息流通渠道,为工作提供所需要的准确、及时的信息以帮助做出正确而及时的选择与决定,从而给采用这门]技术的单位带来了巨大的可见或不可见的利益与效益。2.需求阶段分析2.1需求分析书店管理系统是适应时代发展的需要,提高管理的效率而开发设计的。通过对信息的收集、存储、传递、统计、分析、综合查询、报表输出和信息共享,及时为书店管理人员提供全面、准确的各种数据。实现了书店管理的简单化和规划化,提高了书店的工作效率,从而使书店能够以少的投入获得更好的社会效益与经济效益。2.2数据分析顾客表:应包含顾客号,顾客姓名以及顾客联系方式订单表:应包含订单号,销售图书号,销售数量,金额以及日期图书表:应包含图书编号,图书名,作者,单价,类别和出版社库存表:应包含图书编号,总量和余量2.3功能分析数据库应实现的功能有:(1)图书入库管理:维护入库图书信息(如图书编号、书名、作者、价格、图书分类、出版社等),自动计算库存。(2)按图书分类,出版社、书名、作者等条件查询图书的详细信息。(3)销售过的图书都记录,并且能显示每种图书的销售量,将销售量高的图书定为热销书,能够查询出某一天到某一天的销售额以及订单消息2.3.1书籍管理功能系统设置包括图书名称设置、书籍编号、书籍出版社、书籍价格、书籍类别。基本信息管理模块可以实现添加和重置书籍信息功能。
2.3.2订单管理功能系统设置包括顾客姓名设置、订单日期设置、订单编号设置、订单数量设置、订单金额设置。基本信息管理模块可以实现对订单的查询。2.3.3顾客管理功能系统设置包括顾客编号设置、顾客姓名设置、顾客联系方式设置。基本信息管理模块可以实现对顾客的查询。2.3.4库存管理功能系统设置包括图书编号、图书总量、图书余量设置。基本信息管理模块可以实现对图书数量的查询2.4安全性和完整性要求(1)安全性要求 :系统安全性要求体现在数据库安全性、信息安全性和系统平台的安全性等方面。安全性先通过视图机制,不同的用户只能访问系统授权的视图,这样可提供系统数据一定程度上的安全性,再通过分配权限、设置权限级别来区别对待不同操作者对数据库的操作来提高数据库的安全性;系统平台的安全性体现在操作系统的安全性、计算机系统的安全性和网络体系的安全性等方面。(2)完整性要求:系统完整性要求系统中数据的正确性以及相容性。可通过建立主、外键,使用check约束,或者通过使用触发器和级联更新。3 .结构设计3.1总体功能模块图图3.13.2书籍信息模块图图3.23.3订单信息模块图图3.33.4顾客信息模块图图3.43.5数据字典表3.5.1顾客表
列名 数据类型 约束
顾客号(Gno) Char(7) primary key
姓名(Gname) Nchar(20) Not null
联系方式(Gnumber) Char(20)
表3.5.2订单表
列名 数据类型 约束
订单号(Dno) Char(7) primary key
购买图书号(Bno) Char(7) primary key
购买数量(Dshul) Int Not null
金额(Dmoney) Int Not null
日期(Dtime) Smalldatetime Not null
顾客号(Gno) Char(7) External code
表3.5.3 图书表
列名 数据类型 约束
编号(Bno) Char(7) primary key
书名(Bname) nchar (20) not null
作者(Bwriter) nchar (20) not null
价格(Bjiage) Int not null
类别(Bleibie) nchar (20) not null
出版社(Bcbs) nchar (20) not null
表3.5.4库存表
列名 数据类型 约束
编号(Bno) Char(7) Primary key
总量(Kzong) Int Not null
余量(Kyu) Int
3.6 ER图设计3.6..1顾客ER图3.6.2 图书ER图图3.6.3图3.6.4图3.6.54 逻辑结构设计4.1 关系模型顾客与订单是1:m类型 订单与库存是1:1类型 库存与图书是1:m类型 关系模型如下:顾客表(顾客号、姓名、联系方式)订单表(订单号、购买图书号、购买数量、金额、日期、顾客号)图书表(编号、书名、作者、价格、类别、出版社)库存表(编号、总量、余量)(——代表主键,...代表外码)4.2 函数依赖在顾客表中,顾客号是主码,其它属性完全依赖于顾客号在订单表中,订单号是主码,顾客号是外码,其余属性完全依赖于订单号在图书表中,编号是主码,其余属性完全依赖于编号在库存表中,编号是主码,其余属性完全依赖于编号5.物理结构设计5.1创建图书表use books /*创建图书表*/create table book(Bno char (7) primary key,Bname nchar (20) not null,Bwirter nchar (20) not null,Bjiage int not null,Bleibie nchar (20) not null,Bcbs nchar (20) not null,)5.2 创建顾客表use books /* 创建顾客表*/create table guke(Gno char(7) primary key,Gname nchar (20) not null,Gnumber char(20),)5.3创建库存表use books /*创建库存表*/Create table kucun(Bno char(7) primary key,
Kzong int not null,Kyu int,)5.4创建订单表use books /*创建订单表*/Create table Dingdan(Dno char(7) primary key,Bno char(7) primary key,Dshul int not null,Dmoney int not null,Dtime smalldatetime not null,Gno char(10) not null,)6 数据库的实施6.1 给各个表添加数据例use books /*给图书表添加一行数据*/insert into bookvalues('101','白夜行','东野圭吾','30','侦探','天空出版社')使用语句添加完数据的表如下:6.1.1图书表6.1.2订单表6.1.3 顾客表6.1.4库存表6.2创建存储过程6.2.1图书的存储过程create proc tushu@Bno char(7),@Bname nchar(20),@Bwirter nchar(20),@Bjiage int, @Bleibie nchar(20),@Bcbs nchar(20),@MM INTasif not exists (select * from bookwhere Bno=@Bno)BEGINinsert into bookvalues (@Bno,@Bname,@Bwirter,@Bjiage,@Bleibie,@Bcbs)INSERT INTO KucunVALUES (@Bno,@MM,@MM)ENDELSEBEGINUPDATE KucunSET Kzong=KZONG+@MMWHERE BNO=@BNOUPDATE KucunSET KYU=KYU+@MM
WHERE BNO=@BNOEND图5.2.16.2.2顾客的存储过程create proc gukecun@Gno char(7),@gname nchar(10),@gnumber nchar(20)asinsert into gukevalues (@Gno,@gname,@gnumber )图5.2.26.2.3 订单的存储过程create proc dingdan@dno char(10),@Bno char(10),@Dshul int,@Dtime smalldatetime, @Gno char(10)asdeclare @Dmoney intselect @Dmoney=@Dshul*Bjiagefrom book,Dingdaninsert into Dingdanvalues (@dno,@Bno,@Dshul,@Dmoney,@Dtime,@Gno)图5.2.36.3 创建触发器针对图书信息表创建一个触发器,当向表book插入一条信息时,自动显示表中book中的记录create trigger 插入显示on bookfor insertasSelect * from bookInsert into book values('115','幻想之城','中此撒','30','悬疑','飒飒我出版社')6.4 建立视图6.4.1建立视图建立一个图书类别为侦探的视图,包括图书编号,图书名,作者,单价以及图书总量和余量create view v_leibieasselect book.Bno ,bname,bwirter,bjiage,kzong,kyufrom book,Kucunwhere book.Bno =Kucun.Bno and Bleibie ='侦探'图6.4.1图6.4.26.5 调试运行6.5.1查询姓张的顾客的购买记录select * from Dingdan
where Gno in (select Gno from gukewhere Gname like '张%')图6.5.16.5.2 添加一条图书信息后图书表以及库存表的显示exec tushu'115','幻想之城','中此撒','30','悬疑','飒飒我出版社','60'图6.5.2图6.5.36.5.3 查询销售量在10本以上的书,以此为畅销书select SUM(dshul),bnofrom Dingdangroup by Bnohaving SUM(Dshul)>10图6.5.46.5.4查询某一天的销售额select sum (Dmoney )总金额 from Dingdanwhere Dtime between '2019-11-01 'and '2019-11-02'图6.5.57.设计体会一个个星期的时间非常快就过去了,这一个星期不敢说自己有多大的进步。获得了多少如识,但起码是了解了项目开发的部分过程。虽说上过数据库的课程,但是没有亲身经历过相关的设计工作细节。这次课程设计刚好提供了一个很好的机会。通过这次课程设计发现这其中需要的很多知识我们都接触过,去图书馆查资料的时侯发现我们前边所学到的仅仅是皮毛还有很多需要我们掌握的东西我们根本不知道。同时也发现有很多已经学过的东西我们没有理解到位,不能灵活运用于实际,不能很好的用来解决问题,这就需要我们不断的大量的实践,通过不断的自学,不断地发现问题,思考问题,进而解决问题。在这个过程中我们将深刻理解所学知识,同时也可以学到不少很实用的东西。本次课程设计即将结束,我完成了自己所选的课题。通过完成这次课程设计,我加深了对相关知识的理解,加强了知识之间的联吊,促进了知识的迁移和应用。从需求分析、概念结构设计、逻辑结构设计、物理结构设计。亲身体验了一回系统的设计开发过程。很多东西书上写的很清楚,貌似看着也很简单,思路非常清晰。但真正需要自己想办法去设计一个系统的时候才发现其中的难度。经常做到后面突然就发现自己-开始的设计有问题,然后又回去翻工在各种反复中不断完善自己的想法。
致谢在这次数据库的课程设计过程中,我选择了书店销售管理系统的设计与实现。该系统能够顺利的完成,得益于老师的悉心指导和同学的帮助。更重要的是老师帮我们解决了许多技术的难题,以至于我们能够将书店销售管理系统的功能做得尽可能的完善。在这过程中,我周围的同学给了我许多启发,让我把书店销售管理系统设计的更加完善,老师渊博的知识、开阔的视野和敏锐的思维给了我深深的启迪,使我不仅了解到许多新知识、开阔了视野,更提高了自身的数据库设计能力。另外,感谢老师给我们提供这样-一个课程设计的机会,使我们在学得专业知识的基础上能够自己动手并独立地完成数据库的设计与开发,使我们能够更多的学习-些实践应用知识,增强实际操作和动手应用能力。最后,我再一次感谢在整个课程设计期间,在各个方面给予我们帮助的老师和同学,正是因为有了你们的帮助,才使我们的课程设计得以顺利完成。参考文献[1]李彦,韩光林,李玉波. SQL SERVE完全自学手册[M].北京:电子工业出版社,2007[2]萨师煊,王珊.数据库系统概论.北京:高等教育出版社.2005[3]Y.Daniel Liang.Java.万波. JAVA语言程序设计[M].第六版.北京:机械工业出版社,2008[4]《数据库原理及应用》 ,钱雪忠主编,北京邮电大学出版社,2007,第二版[5]《SQL server 2000数据仓库与Analysis Services》,Bain T着 ,中国电力出版社, 2003[6]《数据库技术与联机分析处理》 王珊主编,北京科学出版社,1998课程设计成绩评定表
课程设计题目 书店销售管理系统
课程设计学生答辩或质疑记录:
评 分 依 据 分 值 评分成绩
1.设计方案正确,具有可行性、创新性 30 分
2.系统调试与结果(系统功能正确、软件程序完整) 25分
3.设计报告的规范化、内容充实、参考文献 15分
4.平时成绩(考勤等) 10分
5.答辩 20分
总 分 100分
最终评定等级为:指导老师签字: 年 月 日
¥
5.9
网络文库VIP限时优惠现在开通,立享6亿+VIP内容
立即获取
书店销售管理系统数据库设计
学号 1
课 程 设 计
课程名称 《数据库系统原理》课程设计
题 目 书店销售管理系统
专 业
班 级
姓 名
成 绩
指 导 老 师
2019 年 12 月 30 日至 2019 年 1月 3日
一、课程设计目的与任务
第 1 页
《数据库系统原理课程设计》是针对计算机专业基础课《数据库系统原理》开设的课程设计,目的是使学生通过本课程设计之后,对数据库设计的基本概念、基本原理和优化技术有较全面的了解和领会,并能操作当前流行的DBMS,了解数据库在计算机应用系统的作用,独立地开发实现一个小型的基于DBMS上的应用系统。结合具体的开发案例,理解并初步掌握数据库系统需求分析、概念结构设计、逻辑结构设计、物理结构设计、应用功能设计(视图,索引,游标,存储过程,触发器等)数据录入及测试等系统设计与系统实施及维护管理的主要环节和步骤以及软件文档的制作能力。
‘叁’ 数据库应用课程设计的报告
数据库课程设计报告 目录目录……………………………………………………………………………………1一.设计目标…………………………………………………………………………2二.系统介绍…………………………………………………………………………2三.数据库设计……………………………………………………………………....2 1.需求分析……………………………………………………………………….2 2.概念结构设计………………………………………………………………….3 (1)实体设计………………………………………………………………..3 (2)ER图……………………………………………………………………3 3.逻辑结构设计………………………………………………………………….4四.应用程序设计……………………………………………………………………4 1.delphi7.0开发环境……………………………………………………………4 2.软件分析…………………………………………………………………..…4 (1)软件的需求分析………………………………………………………..4 (2)软件的基本功能………………………………………………………..5 3.软件的设计与实现…………………………………………………………….6 五.实现的应用系统介绍…………………………………………………………….8 1.系统模块…………………………………………………………………….8 2. 文件简介…………………………………………………………………….8 3 .系统运行…………………………………………………………………….8 六.总结………………………………………………………………………………17 一.设计目标理论应用--运用数据库设计理论设计一个较完善的有实际意义的数据库结构;工具使用--掌握目前流行数据库管理系统工具和前端应用开发工具;应用开发--为数据库开发相应应用程序,构成完整的数据库应用系统;报告编写--用文字处理软件编写高质量的设计报告。二.系统简介名称:超市进销存管系统功能:基于超市管理的全面自动化,减少入库管理、出库管理及库存管理中的漏洞,节约不少管理开支,增加企业收入。 实现对产品的增加、修改、删除、以及日常查询,对产品的出库、入库进行管理。同时对营销状况进行简单的分析,并可以导出各种查询报表。数据库:ACCESS实现:Delphi 7.0系统构架:C/S(Client/Server )三.数据库设计.1.需求分析:超市进销存管理系统2.概念结构设计(1)实体设计商品信息(商品编号,商品名称,商品单位,商品单价,类别,产地,说明)进货信息(进货编号,商品编号,进货单价,进货数量,进货时间,经手人,供货单位)出货信息(出货编号,商品编号,出货单价,出货数量,经手人,接收人及说明等)库存信息(商品编号,库存说明,说明等)用户信息(用户名,密码,用户类型)(2)E-R图包含说明产地商品单价商品类别商品名称商品编号商 品经手人进货数量进货时间进货单价商品编号进货编号供货单位进货记录商品编号出货数量接收人经手人出货单价出货编号出货时间出货记录库存记录说明商品编号库存说明111n3.逻辑结构设计关系模型(第1数据项为主键)商品信息(商品编号,商品名称,商品单位,商品单价,类别,产地,说明)进货信息(进货编号,商品编号,进货单价,进货数量,进货时间,经手人,供货单位)出货信息(出货编号,商品编号,出货单价,出货数量,经手人,接收人及说明等)库存信息(商品编号,库存说明,说明等)用户信息(用户名,密码,用户类型)出货商品金额(出货时间,出货单价,出货数量,出货金额)进货商品金额(进货时间,进货单价,进货数量,进货金额)四.应用程序设计1.Delphi 7.0 开发环境 Delphi被称为第四代编程语言,它具有简单、高效、功能强大的特点。和VC相比,Delphi更简单、更易于掌握,而在功能上却丝毫不逊色;和VB相比,Delphi则功能更强大、更实用。可以说Delphi同时兼备了VC功能强大和VB简单易学的特点。它一直是程序员至爱的编程工具。 Delphi 7的集成开发环境(1DE)和Delphi以前的版本基本一致。它把单、多个工具栏及一组窗口和应用程序设计在一起,将代码以事件的形式与界面的每一元素建立联系,使用户很方便地在这个高度集成的开发环境的组成和各种辅助工具的使用方法和使用技巧。2.软件分析(1)软件的需求分析: 开发本软件的主要目的是为了优化超市的日常管理。采用计算机管理信息系统为实现超市管理科学化和现代化,给它带来了明显的经济效益和社会效益 (2)软件的基本功能与说明: a.商品信息管理商品信息管理:用来管理系统中要用来进行进货,出货操作的商品的信息,包括添加,修改,删除和查询信息。其中,查询可以进行精确查询和模糊快速查询。任意时刻,生成当前表格报表。 b. 用户管理1.用户添加该权限只有管理员拥有,可以添加临时用户,或者增设管理员用户。2.用户删除该权限只有管理员拥有,可以删除用户。3.用户密码修改用来修改登陆用户的密码,长时间地使用一个密码可能会使密码不安全,导致整个系统的不安全,因此有必要定期修改密码。 c. 营销分析1.综合分析某一时间段内,将该超市的进货总额、出货总额进行统计,并算出总盈利;将库存中的商品总量统计出来。用户可以打印分析所得报表。同时提供进货情况查询、出货情况查询、库存情况查询。2.日分析某一天中,将该超市的进货总额、出货总额进行统计,并算出总盈利;将库存中的商品总量统计出来。用户可以打印分析所得报表。 d. 日常操作商品进货操作:用来完成商品的进货操作。商品出货操作:用来完成商品的出货操作。进行进货操作时,进货编号以及进货时间是自动生成的,无需改动,否则会出现错误。所生成的商品编号为该种类型商品的最大编号,且后面有提示用户允许的编号范围,超出此范围会出错,如果编号方式正确且大于最大编号,确定添加后会提示用户填写新加商品的相关信息。进行出货操作时,出货编号自动生成,用记无须改动。在出货单价小于进货的最小单价时会询问是否继续出货,出货数量不能大于库存数量。e.信息查询1.库存信息查询:用来查询库存的商品的信息,可以按照商品编号,商品名称和商品类别来查询,可以将查询结果打印输出。该查询可以精确查找某一确定的商品的库存信息,并将其打印输出。同时,该查询可以根据商品的库存量来将商品中库存不足、库存饱和、库存过剩的商品一一列出并提供打印输出功能。2.进货信息查询:用来查询商品的进货记录,可以按照商品编号,商品名称,商品类别,经手人和进货日期查询,可以将查询结果输出。该查询可以精确查找某一确定的商品或全部商品某一确定时间段的进货情况,并将其打印输出。同时以图表的形式分析该种商品的进货价格走势分析图。3.出货信息查询:用来查询商品的出货记录,可以按照商品编号,商品名称,商品类别,经手人和出货日期查询,可以将查询结果打印输出。该查询可以精确查找某一确定的商品或全部商品某一确定时间段的出货情况,并将其打印输出。同时以图表的形式分析该种商品的出货价格走势分析图。3.软件设计与实现添加、修改、删除是通过delphi自带函数实现的。查询是通过添加SQL语句或者直接在access中建立相对的查询(如出货商品金额、进货商品金额查询)实现的。(1).程序实现//添加adoquery1.Close;adoquery1.SQL.Clear;adoquery1.SQL.Add('select * from 进货信息' );adoquery1.Open ;adoquery1.Append;adoquery1.fieldbyname('进货编号').asstring:=edit1.Text;adoquery1.fieldbyname('商品编号').asstring:=edit2.Text;adoquery1.fieldbyname('进货单价').asstring:=edit3.Text;adoquery1.fieldbyname('进货数量').asstring:=edit4.Text;adoquery1.fieldbyname('进货时间').asstring:=edit5.Text;adoquery1.fieldbyname('经手人').asstring:=combobox5.Text;adoquery1.fieldbyname('供货单位').asstring:=edit7.Text;adoquery1.Post;快速添加:adoquery1.Append;//删除一条记录if Application.MessageBox('真的要删除当前所选记录吗?','删除确认',MB_YESNOCANCEL+MB_ICONQUESTION+MB_DEFBUTTON3)<>IDYES then abortelseadoquery1.delete;//修改一条记录if Application.MessageBox('真的要修改当前所选记录吗?','修改确认',MB_YESNOCANCEL+MB_ICONQUESTION+MB_DEFBUTTON3)<>IDYES then AdoQuery1.CancelUpdateselseadoquery1.edit;//对表的排序procere TForm2.DBGrid1TitleClick(Column: TColumn);var i : integer;beginfor i:= 1 to DBGrid1.Columns.Count dobegin//恢复所有标题字体为默认DBGrid1.Columns[i-1].Title.Font.Color := clWindowText;DBGrid1.Columns[i-1].Title.Font.Style := [];end;if ADOQuery1.Sort<>(Column.FieldName+' ASC') then //判断原排序方式beginADOQuery1.Sort := Column.FieldName+' ASC';Column.Title.Font.Color := clRed; //改变标题行字体为红色,表示当前的排序方式为升序Column.Title.Font.Style := [fsBold];endelse beginADOQuery1.Sort := Column.FieldName+' DESC';Column.Title.Font.Color := clBlue; //改变标题行字体为红色,表示当前的排序方式为降序Column.Title.Font.Style := [fsBold];end;end;//查询示例adoquery2.close;adoquery2.sql.clear;adoquery2.SQL.Add('select distinct(进货信息.进货编号),商品信息.商品名称,进货信息.商品编号,商品信息.类别,进货信息.进货单价,进货信息.进货数量,进货信息.进货时间,进货信息.经手人,进货信息.供货单位 from 进货信息,商品信息 where 商品信息.商品编号=进货信息.商品编号 and ');adoquery2.SQL.Add('进货时间>=#'+DateToStr(DateTimePicker1.Date)+'# and 进货时间<=#'+DateToStr(DateTimePicker2.Date+1)+'#');adoquery2.Open;*五.实现的应用系统介绍1.系统的模块(1)主界面模块Form1(2)信息管理模块Form2,form18(3)日常操作模块Form3(4)信息管理模块Form5(5) 用户管理模块Form14(6)系统管理模块用户登陆:form8关于系统:form10退出系统:from11()登陆窗体Form82.文件简介:(1)文件help包括生成jun_help帮助的所有源程序。(2)文件image系统所有用到的图片文件(3) 文件project系统可执行文件project.exe。系统数据库超市进销存储管理系统.mdb(4) 文件sounds系统所有用到的声音文件(5) 文件unit_date系统自动生成的相关文件3.系统运行:1.欢迎:2.到达主界面后,提示登陆(系统管理—登陆系统)。用户可以查看帮助获得系统的相关信息:3.用户登陆界面:4.若用户为管理员,则可以进行用户管理操作。用户有权添加、修改、删除其它用户。5.若用户为普通用户,则用户只能对自己的相关信息进行修改,添加用户、删除用户不可用。6.商品信息管理模块商品信息管理:用来管理系统中要用来进行进货,出货操作的商品的信息,包括添加,修改,删除和查询信息。其中,查询可以进行精确查询和模糊快速查询。任意时刻,生成当前表格报表。7.营销分析模块:1).综合分析某一时间段内,将该超市的进货总额、出货总额进行统计,并算出总盈利;将库存中的商品总量统计出来。用户可以打印分析所得报表。同时提供进货情况查询、出货情况查询、库存情况查询。2).日分析某一天中,将该超市的进货总额、出货总额进行统计,并算出总盈利;将库存中的商品总量统计出来。用户可以打印分析所得报表。8.商品进出货操作模块:1)进行进货操作时,进货编号以及进货时间是自动生成的,无需改动,否则会出现错误。所生成的商品编号为该种类型商品的最大编号,且后面有提示用户允许的编号范围,超出此范围会出错,如果编号方式正确且大于最大编号,确定添加后会提示用户填写新加商品的相关信息。2)进行出货操作时,出货编号自动生成,用记无须改动。在出货单价小于进货的最小单价时会询问是否继续出货,出货数量不能大于库存数量。9.信息查询模块:1).库存信息查询:用来查询库存的商品的信息,可以按照商品编号,商品名称和商品类别来查询,可以将查询结果打印输出。该查询可以精确查找某一确定的商品的库存信息,并将其打印输出。同时,该查询可以根据商品的库存量来将商品中库存不足、库存饱和、库存过剩的商品一一列出并提供打印输出功能。2).进货信息查询:用来查询商品的进货记录,可以按照商品编号,商品名称,商品类别,经手人和进货日期查询,可以将查询结果输出。该查询可以精确查找某一确定的商品或全部商品某一确定时间段的进货情况,并将其打印输出。同时以图表的形式分析该种商品的进货价格走势分析图。3).出货信息查询:用来查询商品的出货记录,可以按照商品编号,商品名称,商品类别,经手人和出货日期查询,可以将查询结果打印输出。该查询可以精确查找某一确定的商品或全部商品某一确定时间段的出货情况,并将其打印输出。同时以图表的形式分析该种商品的出货价格走势分析图。10关于系统模块:11.用户管理模块:1).用户添加该权限只有管理员拥有,可以添加临时用户,或者增设管理员用户。2).用户删除该权限只有管理员拥有,可以删除用户。3).用户密码修改用来修改登陆用户的密码,长时间地使用一个密码可能会使密码不安全,导致整个系统的不安全,因此有必要定期修改密码。12.退出系统模块:
‘肆’ 100分求一份数据库原理课程设计的实验报告
(图放不上去呀 我自己做的E-R图)
计算机科学与信息学院
课程设计报告
课程名称: 数据库概论课程设计
专 业: 网络方向
班 级: ====
学 号: ===
姓 名: 闫娟
题 目: 网上购书系统
指导教师: 肖淑芬
2011年6月
目录
一、课程设计的背景来源 3
二、网上购书系统调查及前景 4
三、网上购书设计思想 4
1、前台系统工作流程 5
2、后台系统工作流程 6
四、网上书店工作过程的内容 6
五、数据库设计 7
1、数据项 7
2、 数据结构 8
3、关系模式的设计 8
4、视图的设计 9
六、网上购书E-R图 10
六、系统的源程序 15
七、系统评价及心得体会 20
一、课程设计的背景来源
1,其实写这个课程设计写得比较匆忙,马上其他可就要考试了,本想找个男的题目来挑战下自己,后来还是因为时间需要,所以选了个相对来说我们生活比较容易接近的
2,随着现在社会的发展,网络已经成为一个市场很大的交易平台,很多人由于时间需要或者各方面原因都把网上购物作为一种消费方式,有时我们在书店要花很长时间去找一本书,有时还找不到,记得有次在孝感学院图书馆找一本概率论辅导书,花了很长很长时间呀,所以我深有体会,还是感觉在网上购书比较简单,方便。
3,班上有很多同学都从事网上购物,我刚好想利用自己的专业知识来学习下这方面的知识,自己查查资料,把这个课程设计做好。
二、网上购书系统调查及前景
人们喜欢通过阅览书籍拓展自己的知识视野,可在实际生活的购书过程中人们却遇到了不少麻烦,比如购书人多,挑书难,搬书重等,因此既方便又快捷的网络购书便成为了一种很有潜力的购书消费方式。信息时代,电子商务已经成为我们现实生活中不可缺少的一个重要组成部分,同时它以一种特殊的方式改变着我们的生活。根据调查结果显示,网民上网以获取信息为主要目的占5 3.1%。目前我国上网购物的群体中,绝大多数是年轻人, 他们大多数是收入稳定、文化水平较高的中青年,网上消费已经日益成为他们生活中的一种重要的消费方式,他们成为了最有潜力的未来网上消费者。
三、网上购书设计思想
首先网上购书系统听起来是个很杂的程序,因为有很多很多书,也有很多很多人来买,但是其实我们简单的可以把它分为两个模块,这样我们就能很好的理解了,网上书店主要由前台会员管理模块和后台管理员模块两部分组成。
前台功能模块主要用于实现会员注册,登录,修改个人信息,分类查看书目信息、购书、管理购物车、结帐、查看各种服务条款等功能。
后台管理模块主要用于实现后台管理人员对会员,商品,物流,订单和系统的管理等功能。
1、前台系统工作流程
首先当我们用户登陆这个网站时,一开始就会出现让你登陆,如果是你会员,你可以直接登录,如果你不是会员,你要注册个账号。
1、 当你是会员时,你可以查看你的各项服务,比如说上次你收藏了什么书籍,以及你喜欢的书的种类,在可以看下前几次你购买书的情况,在可以修改个人信息,修改密码等,你也可以查看自己网上交易情况,看下自己买的书的情况,以及看上什么书了,可以把它放回购物车,方便自己购买。
2、 当你是非会员时,你要先进行注册,填写自己的基本信息,当你填好后,你也是其中一员了,你也同样可以向会员那样找自己的书了,相对来说比较方便。
3、 还有人不注册,只是进来逛下网站,看看自己是否有必要买一些书。
2、后台系统工作流程
后台系统工作流程主要用于实现后台管理人员对会员,商品,物流,订单和系统的管理等功能,他要对会员的登记进行统计,以及购物等方面的内容管理
四、网上书店工作过程的内容
1、管理员信息,包括数据项有:管理员编号、管理员账号、管理员密码。
2、会员信息,包括数据项有:会员账号、会员密码、会员昵称、会员E-mail、会员级别(管理员设定)。
3、图书信息,包括数据项有:图书编号、图书名称、作者、出版社编号、出版日期、图书类别编号、图书简介。
(⑴出版社信息,包括数据项有:出版社编号、出版社名称。
⑵图书类别信息,包括数据项有:图书类别编号、图书类别名称。)
4、图书订单,包括数据项有:会员账号、下定单日期、收货地址、收货地址邮编、收货人姓名、收货人联系方式、送货方式编号、总费用、图书名称、现已售出量情况。
5、购物车,包括数据项有:会员账号、每种图书名称、每种图书市场价格、每种图书网站价格、每种图书数量、每种图书的价格、图书总价。
五、数据库设计
1、数据项
数据项
数据项名 数据类型 长度 别名 取值范围
会员编号 字符型 15 会员的编号
姓名 文本型 20 会员的姓名
密码 文本型 20 会员的密码
电话 字符型 12 会员的电话
地址 文本型 50 会员的地址
商品编号 字符型 15 商品的编号
类型 文本型 10 商品的类型
名称 文本型 20 商品的名称
价格 整型 6 商品的价格
简介 文本型 500 商品的简介
图片 图片型 商品的图片
购物车编号 字符型 10 购物车的编号
商品数量 整型 10 购买商品的数量
订单编号 字符型 15 购物时生成的订单
订单日期 时间型 10 购买商品的时间
2、 数据结构
系统需求数据结构
数据结构名 含义说明 组成
会员 记录会员的基本信息 会员编号、姓名、密码、电话、地址
商品 记录销售商提供的商品信息 商品编号、类型、名称、价格、简介、图片
订购 记录会员的购物信息 会员编号、商品编号、订单编号、订单日期
购物车 存储会员需要购买的商品 会员编号、商品编号、购物车编号、商品数量
3、关系模式的设计
会员
数据项名 数据类型 长度 别名 是否为空 主外键
会员编号 字符型 15 会员编号 否 主键
姓名 文本型 20 姓名 否
密码 文本型 20 密码 否
电话 字符型 12 电话 否
地址 文本型 50 地址 否
商品
数据项名 数据类型 长度 别名 是否为空 主外键
商品编号 字符型 15 商品编号 否 主键
类型 字符型 15 类型 否
名称 字符型 20 名称 否
价格 整型 10 价格 否
简介 文本型 500 简介
图片 image型 100 图片
订购
数据项名 数据类型 长度 别名 是否为空 主外键
会员编号 字符型 15 会员编号 否 外键 主键
商品编号 字符型 10 商品编号 否 外键
订单编号 字符型 10 订单编号 否
订单日期 日期型 10 订单日期 否
购物车
数据项名 数据类型 长度 别名 是否为空 主外键
会员编号 字符型 15 会员编号 否 主键
商品编号 字符型 15 商品编号 否
购物车编号 字符型 15 购物车编号 否
商品数量 整型 6 商品数量 否
4、视图的设计
搜索商品视图
数据项名 数据类型 长度 别名 是否为空
名称 字符型 10 名称 否
类型 字符型 10 类型 否
价格 整型 10 价格 否
简介 文本型 4 简介 否
六、网上购书E-R图
否 是
网上书店系统业务流程:
网上书店前台管理功能结构图:
六、系统的源程序
ackage cart;
import java.util.Vector;
public class Cart {
Vector v = new Vector();
String act = null;
String item = null;
private void addItem(String id) {
v.addElement(id);
}
private void removeItem(String id) {
v.removeElement(id);
}
public void setItem(String id) {
item = id;
}
public void setAct(String s) {
act = s;
}
public String[] getItems() {
String[] s = new String[v.size()];
v.Into(s);
return s;
}
public void processRequest() {
if (act.equals("add"))
addItem(item);
else if (act.equals("remove"))
removeItem(item);
// reset at the end of the request
reset();
}
// reset
private void reset() {
act = null;
item = null;
}
public void clearAll(){
v.removeAllElements();
}
}
现实页面信息,提示等操作的设计:
package spage;
import java.sql.*;
public class ShowPage
{
private String str = "";
//显示页号为p的一页(user)
public String printPage(ResultSet rs, int p, int size)
{
str = "";
//将访问游标定位到页号为p的页要显示的第一条记录的位置
try {
for(int k=0;k<(p-1)*size;k++)
rs.next();
}
catch(SQLException e) { }
for(int iPage=1; iPage<=size; iPage++) {
str += printRow(rs,iPage,p);
try {
if(!rs.next()) break;
}
catch(Exception e) { }
}
return str;
}
//显示单行记录(user)
public String printRow( ResultSet rs ,int i,int p)
{
String temp = "";
try {
int id=rs.getInt("userid");
temp+="<tr align='center' bgcolor='#FFFAF7'>";
temp+="<td><a href='javaScript:seeUser("+id+")'>"+rs.getString("name")+"</a></td>";
temp+="<td>"+rs.getString("sex")+"</td>";
temp+="<td>"+rs.getString("phone")+"</td>";
temp+="<td>"+rs.getString("address")+"</td>";
temp += "<td><a href='updateuser.jsp?updateid="+id+"'>修改</a></td>";
temp += "<td><a href='dealdeleteuser.jsp?delid="+id+"'>删除</a></td>";
temp += "</tr>";
}
catch(SQLException e) { }
return temp;
}
//显示页号为p的一页(book)
public String bookPage(ResultSet rs, int p, int size,boolean f)
{
str = "";
//将访问游标定位到页号为p的页要显示的第一条记录的位置
try {
for(int k=0;k<(p-1)*size;k++)
rs.next();
}
catch(SQLException e) { }
for(int iPage=1; iPage<=size; iPage++) {
str += bookRow(rs,iPage,p,f);
try {
if(!rs.next()) break;
}
catch(Exception e) { }
}
return str;
}
//显示单行记录(book)
public String bookRow( ResultSet rs ,int i,int p,boolean f)
{
String temp = "";
try {
int id=rs.getInt("bookid");
temp+="<tr align='center'>";
temp+="<td><a href='detail.jsp?detailid="+id+"'>"+rs.getString("bookname")+"</a></td>";
temp+="<td>"+rs.getString("author")+"</td>";
temp+="<td>"+rs.getString("pubhouse")+"</td>";
temp+="<td>"+rs.getString("price")+"</td>";
if(f)
{
temp+="<td>"+rs.getString("salenum")+"</td>";
temp+="<td><a href='updatebook.jsp?updateid="+id+"'>修改</a></td>";
temp+="<td><a href='dealdeletebook.jsp?delid="+id+"'>删除</a></td>";
}
else
temp+="<td><a href='dealcart.jsp?dealid="+id+"&act=add'>加入购物车</a></td>";
temp += "</tr>";
}
catch(SQLException e) { }
return temp;
}
//显示页号为p的一页(order)
public String orderPage(ResultSet rs, int p, int size,boolean f)
{
str = "";
//将访问游标定位到页号为p的页要显示的第一条记录的位置
try {
for(int k=0;k<(p-1)*size;k++)
rs.next();
}
catch(SQLException e) { }
for(int iPage=1; iPage<=size; iPage++) {
str += orderRow(rs,iPage,p,f);
try {
if(!rs.next()) break;
}
catch(Exception e) { }
}
return str;
}
//显示单行记录(order)
public String orderRow( ResultSet rs ,int i,int p,boolean f)
{
String temp = "";
try {
String orderid=rs.getString("orderid");
temp+="<tr align='center'>";
temp+="<td><a href='detailorder.jsp?detailid="+orderid+"'>"+orderid+"</a></td>";
temp+="<td>"+(rs.getString("orderdate")).substring(0,10)+"</td>";
temp+="<td>"+rs.getString("orderstate")+"</td>";
if(f)
{
temp += "<td><a href='javaScript:seeUser("+rs.getString("userid")+")'>"+rs.getString("username")+"</a></td>";
temp += "<td><a href='dealdeleteorder.jsp?delid="+orderid+"'>删除</a></td>";
}
temp+="</tr>";
}
catch(SQLException e) { }
return temp;
}
}
七、系统评价及心得体会
1、了解很多关于网上购书程序上的知识,要写这个课程设计,我把有关网上购书的概论也看了下,发现不知道是这个设计太简单还是怎么回事,网上出现很多此样的版本,很有有更新,可能我们对数据库设计的程序还不是很了解吧。
2,要写数据库E-R图,发现很难画啊,还要把线段连来连去,觉得在画图上面花了很多时间
3,一定要先了解数据情况,要先熟悉了网上购书的基本操作,在开始研究,最好自己去试一下网上购书,我就自己亲自去点击了下网上购书网,然后才下手写的课程设计。
‘伍’ 高分求一份完整图书管理系统数据库课程设计
网上书店(图书)管理系统的设计与实现(HTML5,SSH,MySQL)(含录像)
‘陆’ 求一份SQL server数据库课程设计报告
2.2需求分析
(1)需求分析的任务
需求分析的任务是通过详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统(手工系统或计算机系统)工作概况,明确用户的各种需求,用通俗的话来讲,就是分析了解用户关心什么,用户需要什么样的结果,然后在此基础上分析和设计新系统的数据库。
需求分析的重点是调查、收集与分析用户在数据管理中的信息要求、处理要求、安全性与完整性要求。
信息要求
是指用户需要从数据库中获得信息的内容与性质。由用户的信息要求可以导出数据要求,即在数据库中需要存储哪些数据。
处理要求
是指用户要求完成什么处理功能,对处理的响应时间有什么要求,处理方式是批处理还是联机处理。
安全性与完整性要求
一是指用户对系统和数据有什么安全性要求,如不同级别的用户具有什么操作权限和使用哪些数据;二是对数据的输入和存储的什么要求,如数据的长度和范围、数据的有效性、一致性和唯一性等。
确定用户的最终需求其实是一件很困难的事,这是因为一方面用户缺少计算机知识,开始时无法确定计算机究竟能为自己做什么,不能做什么,因此无法一下子准确地表达自己的需求,他们所提出的需求往往不断地变化。另一方面设计人员缺少用户的专业知识,不易理解用户的真正需求,甚至误解用户的需求。因此设计人员必须与用户不断深入地进行沟通和交流,才能逐步得以确定用户的实际需求。
(2)需求分析的基本步骤
1.调查与初步分析用户的需求,确定系统的功能边界
⑴首先调查组织机构情况
⑵然后调查各部门的业务活动情况
⑶协助用户明确对新系统的各种要求
⑷确定新系统的结构和功能边界,确定哪些功能由计算机完成或将来由计算机完成,哪些活动由人工完成。
常用的调查方法有:
⑴跟班作业
⑵开调查会
⑶请专人介绍
⑷询问
⑸问卷调查
⑹查阅记录
2.生成数据字典
1)数据项条目:数据项是不可再分的数据单位,它直接反映事物的某一特征。
2)数据结构条目:反映了数据之间的组合关系。
3)数据流条目:数据流是数据结构在系统内传输的路径。
4)数据文件条目:数据文件是数据项停留或保存的地方,也是数据流的来源和去向之一。
5)处理过程条目。
(3) 案例分析:教学管理系统数据库的需求分析
用户的需求具体体现在各种信息的提供、保存、更新和查询上,这就要求数据库的结构能充分满足各种信息的输出和输入。需求分析阶段主要是收集基本数据,确定数据结构及数据处理的流程,组成一份详尽的数据字典,以便为后面的概念设计和逻辑设计打下基础。
2.3概念结构设计
概念结构设计是对收集来的信息和数据进行分析整理,确定实体、属性及联系,形成独立于计算机的反映用户观点的概念模型。概念设计的重点在于信息结构的设计,它是整个数据库系统设计的关键。
(1)概念结构设计的目标和任务
概念结构设计的目标是产生反映系统信息需求的数据库概念结构,即概念模式。概念结构是独立于DBMS和使用的硬件环境的。在这一阶段,设计人员要从用户的角度看待数据以及数据处理的要求和约束,产生一个反映用户观点的概念模式,然后再把概念模式转换为逻辑模式。
概念模型的表示方法很多,其中最着名、最常用的表示方法为实体-联系方法,这种方法也称为E-R模型方法,该方法采用E-R图描述概念模型。
E-R图提供了表示实体、属性和联系的方法,它由以下三个组件构成:
实体---用矩形表示,矩形框内写明实体名。
属性---用椭圆形表示,并用无向边将其与相应的实体连接起来。
联系---用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1、1:n或m:n)。
例如教学管理系统中的学生实体与课程实体的E-R图如下图表示:
(2)概念结构设计的过程
●数据抽象
概念结构是对现实世界的一种抽象,所谓抽象就是对实际的人、事、物和概念进行加工处理,抽取所关心的共同特性,用各种概念精确的加以描述,组成某种模型。
在需求分析中,已初步得到了有关各类实体、实体间的联系以及描述它们性质的数据元素,统称数据对象。
在这一阶段中,首先要从以上数据对象中找出:系统有哪些实体?每个实体有哪些属性?哪些实体间存在联系?每一种联系有哪些属性?然后就可以做出系统的局部E-R模型和全局E-R模型。
● 局部E-R模型设计
局部E-R模型设计是从数据流图出发确定实体和属性,并根据数据流图中表示的对数据的处理、确定实体之间的联系。
设计局部E-R图的步骤是:
1.确定实体类型和属性
实体和属性之间没有严格的区别界限,但对于属性来讲,可以用下面的两条准则作为依据:
1)作为属性必须是不可再分的数据项,也就是属性中不能再包含其他的属性。
2)属性不能与其他实体之间具有联系。
2.确定实体间的联系
依据需求分析结果,考察任意两个实体类型之间是否存在联系,若有,则确定其类型(一对一,一对多或多对多)。
3.画出局部E-R图
确定了实体及实体间的联系后,可用E-R图描述出来。形成局部E-R图之后,还必须返回去征求用户意见,使之如实地反映现实世界,同时还要进一步规范化,以求改进和完善。每个局部E-R图必须满足:
(1)对用户需求是完整的。
(2)所有实体、属性、联系都有惟一的名字。
(3)不允许有异名同义、同名异义的现象。
● 全局E-R模型的设计
各个局部E-R模型建立好后,还需要对它们进行合并,集成为一个整体的数据概念结构,即总E-R图。在合并全局E-R模型时,应注意检查和消除属性、命名的冲突及数据冗余。
(3)案例分析:教学管理系统数据库的概念结构设计
通过上面的需求分析,就可以进行数据库的概念结构设计,先对现实当中的人、事、物和概念进行抽象的加工处理,抽取所关心的共同特性,用各种概念进行描述,从中找出能够满足用户需求的各种实体,以及它们之间的关系,并用实体-联系图表示出来(即画出E-R图),为后面的逻辑结构设计打下基础。
1、确定实体及其属性
经过对人工进行的教学管理系统的业务调查,得知系统主要涉及以下几个实体:
● 学生实体:属性主要包括班级名称、学号、姓名、性别、出生日期、民族、政治面貌、来源地、入学成绩、学生类别、电话、备注等。
● 教师实体:属性主要包括教师号、教师姓名、性别、出生日期、所在系、职称
● 班级实体:属性主要包括系部名称、班级号、班级名称、班主任、学生人数、备注等。
● 系部实体:属性主要包括系号、系部名称、班级数等。
● 课程实体:属性主要包括课程号、课程名、考核方式、学分、学时数等。
2、确定实体之间的联系
2.4 逻辑结构设计
(1)逻辑结构设计的目标和任务
逻辑结构设计的目标就是把概念结构设计阶段设计好的E-R图转换为特定的DBMS所支持的数据模型(即层次、网状、关系模型之一),并对其进行优化。
概念模型向逻辑模型的转换过程分为3步进行:
(1)把概念模型转换为一般的数据模型。
(2)将一般的数据模型转换成特定的DBMS所支持的数据模型。
(3)通过优化方法将其转化为优化的数据模型。
(2) 概念模型转换为一般的关系模型
1.实体的转换规则
将E-R图中的每一个常规实体转换为一个关系,实体的属性就是关系的属性,实体的码就是关系的码。
2.实体间联系的转换规则
1)一个1:1联系可以转换为各自独立的关系模式,也可以与任意一端所对应的关系模式合并。
2)一个1 : n联系可以转换为各自独立的关系模式。
3)一个m : n联系转换为一个关系模式。转换的方法为:与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,新关系的码为两个相连实体码的组合
(3) 案例分析:教学管理系统数据库的逻辑结构设计
逻辑结构设计的任务是把概念结构设计阶段设计好的E-R图转换为特定的DBMS所支持的数据模型(即层次、网状、关系模型之一),并对其进行优化,得到满足用户要求和系统功能需求的关系模式。
1、 E-R模型转换为关系模式
将E-R模型转换成初始关系模式的一般规则是:系统中各个实体转换为对应的关系模式;实体之间多对多的联系也转换为关系模式。
根据转换规则,可以将系部、班级、学生、教师、课程五个实体转换成与之对应的五个关系模式;而将学生与课程两者之间多对多的选修关系以及教师、班级和课程三者之间多对多的开课关系也转换为关系模式。
2、关系模式的设计
根据上述的转换结果,在对关系模式中数据进行规范化处理后,得到了符合第三范式的关系模式如下:
学生:{学号、姓名、性别、出生日期、民族、政治面貌、来源地、入学成绩、学生类别、班级名称、电话、备注}
班级:{班级号、班级名称、班主任、学生人数、系部名称、备注}
系部:{系号、系部名称、班级数}
教师:{教师号、教师姓名、性别、出生日期、所在系、职称}
课程:{课程号、课程名、考核方式、学分、学时数}
选修:{学号、课程号、成绩}
开课: {教师号、班级名称、课程号、开课学期、授课地点}
每个关系模式中带下划线的属性或属性的组合表示主键、带双波浪线的属性表示与之关联的表的外键。
根据系统功能需求,数据采用SQL Server 2000所支持的实际数据模型,也就是数据库的逻辑结构。启动SQL Server 2000,创建一个数据库命名为:jxgl。该数据库中各个数据表的结构如下面各个表格所示。每个表格对应于数据库中的一个表。
3、将关系模式转换为数据库中的表
按照关系数据模型的结构,将关系模式转换为关系数据库中的数据表,转换的规则是:一个关系模式转换为一个数据表,关系模式中的每个属性转换为数据表中的一个列。同时设置表中各个列的名称、数据类型、数据宽度以及数据规则,得到如下几个表:
学生表(student)
列名 类型 宽度 规则
班级名称 CHAR 20 内容取自班级信息表的班级名称
学号 CHAR 10 主键、长度为10个字符
姓名 CHAR 8
性别 CHAR 2 非空、只能取“男”或“女”
出生日期 DATETIME
民族 CHAR 4 假定只能取以下之一:汉、壮、白、回、苗、满、其它
政治面貌 CHAR 4 只能取以下之一:党员、团员、群众
来源地 CHAR 10
入学成绩 INT
学生类别 CHAR 10 假定只能取以下之一:本科、大专(普)、大专(业)、中专、技校、函授、其它
电话 CHAR 11
备注 CHAR 10
注:(1)该表存放全校所有学生的基本信息,每个学生产生一条记录。
(2)学号的前4位表示年级,第5--8位表示班级号(其中第5-6位表示系号, 第7-8位表示系内班级号),最后两位是班内的学生编号,在输入记录内容时应加以区分。
班级表(class)
列名 类型 宽度 规则
系部名称 CHAR 10 非空、内容取自系部信息表的系部名称
班级号 CHAR 4 非空、长度为4个字符
班级名称 CHAR 20 主键
班主任 CHAR 8
学生人数 INT
备注 CHAR 10
注:(1)该表存放全校所有班级的信息,每个班级产生一条记录。
(2)班级号的前2位表示系号,后两位为系内的班级编号,在输入记录内容时应加以区分。
系部表(department)
列名 类型 宽度 规则
系号 CHAR 2 非空、长度为2个字符
系部名称 CHAR 10 主键
班级数 INT
注:该表存放某校所有的系部信息,每个系部产生一条记录。
教师表(teacher)
列名 类型 宽度 规则
教师号 CHAR 4 主键、长度为4个字符
姓名 CHAR 8
性别 CHAR 2 非空、只能取“男”或“女”
出生日期 DATETIME
职称 CHAR 6 只能取以下之一:教授、副教授、讲师、助教、其他
所在系 CHAR 20 非空、外键(内容取自系部表的系部名称)
课程表(course)
列名 类型 宽度 规则
课程号 CHAR 4 主键、长度为4个字符
课程名 CHAR 20
考核方式 CHAR 4 假定只能取以下之一:考试、考查、其他
学分 INT 非空
学时数 INT
注:该表存放某校所有的课程信息,每门课产生一条记录。
成绩表(SC)
列名 类型 宽度 规则
学号 CHAR 8 主键、内容取自学生信息表的学生姓名
课程号 CHAR 20 主键、内容取自课程信息表的课程名称
成绩 INT
注:该表存放某校所有学生的成绩信息,每个学生学习每门课程产生一条记录。
开课信息表(tcc)
列名 类型 宽度 规则
教师号 CHAR 4 主键、内容取自教师信息表的教师号
课程号 CHAR 4 主键、内容取自课程信息表的课程号
班级号 CHAR 4 主键、内容取自班级信息表的班级号
开课学期 CHAR 20
授课地点 CHAR 20
注:该表存放某校开设课程的信息,每个教师教授某个班级的某门课产生一条记录。
2. 5 物理设计
数据库的物理设计目标是在选定的DBMS上建立起逻辑设计结构确立的数据库结构,这一过程也称为数据库的物理实现。它主要包括两项工作:
一是根据数据库的结构、系统的大小、系统需要完成的功能及对系统的性能要求,决定选用哪个数据库管理系统。目前,数据库产品市场上比较好的产品有:Microsoft SQL Server、Oracle、IBM DB/2,SYBASE等。
二是根据选用的数据库管理系统的数据库实现方法来建立用户数据库,即创建所需要的数据库、表及其他数据库对象。
本系统选用的DBMS是SQL Server 2000,并在该系统上创建用户数据库jxgl以及下属的7个用户表:student、class、department、teacher、course、sc、tcc,各个表的结构按2.4节第3点各表给出的具体内容设定。
2. 5 实训二
以小组讨论的形式,完成人事工资管理系统用户数据库的设计,要求个人写出用户数据库设计的文档(包括数据库的需求分析、概念设计、逻辑设计和物理设计,表达方法可参考本章相应内容的案例分析部分),每个小组上交一份本系统用户数据库包括的数据表。
第三章 数据库的数据完整性设计
3.1数据完整性的基本概念及内容
正确创建数据库后,需要考虑数据的完整性、数据的安全性等要求。数据的完整性主要指数据的正确性、有效性、相容性,强制实施数据完整性可以确保数据库中的数据的质量。
进行数据完整性设计主要考虑以下几个方面的内容:
1)表名惟一;
由系统强制实施控制。
2)列名惟一;()
由系统强制实施控制。
3)数据行惟一;
通过设置主键约束或触发器来实施控制。
4)列值非空;
通过设置非空约束来实施控制。
5)列值惟一性
通过设置惟一约束或惟一索引来实施控制。
6)列值满足一定的条件
通过设置检查约束或触发器来实施控制。
7)数据的一致性和有效性
通过设置外键约束或触发器来实施控制。
至于具体要对数据库的哪一个表的哪一项数据进行什么样的数据完整性设计,还应根据用户的需求来考虑和确定。
3.2 数据完整性的分类与实现方法
在SQL Server关系数据库中,数据完整性分为以下三类:
1. 域完整性
域完整性是指一个列的输入有效性,是否允许空值。实现域完整性的方法主要有:限制数据类型(通过设定列的数据类型)、限定格式(通过CHECK约束和规则)或可能值的范围(通过 FOREIGN KEY 约束、CHECK 约束、DEFAULT定义、NOT NULL定义和规则)以及程序控制。
2. 实体完整性
实体完整性是指保证表中所有的行唯一。实现实体完整性的方法主要有:索引、UNIQUE约束、PRIMARY KEY约束或 IDENTITY属性以及程序控制。
3. 参照完整性
参照完整性也叫引用完整性。参照完整性确保主键(被引用表)和外键(引用表)之间的参照关系。它涉及两个或两个以上表数据的一致性维护。如student表(称为引用表、参照表或子表)的class_id列就是参照class表(称为被引用表、被参照表或父表)的外键。参照完整性可以实现以下两种控制:
(1)存在外键时,被参照表中的这一行不能被删除,主键值也不能改变 (以student和class表的“班级名称”列为例说明)。
(2)若在被参照表中不存在包含相应主键的行时,一个外键值不能插入参照表中(MsgBox "添加记录成功!", vbOKOnly + vbInformation, "提示"
End Sub
Private Sub Command5_Click()
rs.Close
Unload Me
End Sub
Private Sub Form_Load()
rs.CursorLocation = adUseClient ' 设置在客户端创建游标
rs.CursorType = adOpenKeyset '设置游标类型为键集类型
rs.LockType = adLockOptimistic '设置打开记录集时的锁定类型为乐观锁,在执行UPdate方法前不锁定编辑的数据
rs.Open "select * from teacher", cnn
'在表格上显示class表的记录内容
Set DataGrid1.DataSource = rs
DataGrid1.Refresh
'将表格上的数据与文本框或下拉列表框绑定
Set Text1.DataSource = rs
Text1.DataField = "教师号"
Set Text2.DataSource = rs
Text2.DataField = "姓名"
Set Combo1.DataSource = rs
Combo1.DataField = "所在系"
Set Text3.DataSource = rs
Text3.DataField = "出生日期"
Set Text4.DataSource = rs
Text4.DataField = "从教日期"
Set Combo2.DataSource = rs
Combo2.DataField = "性别"
Set Combo3.DataSource = rs
Combo3.DataField = "职称"
Set Combo4.DataSource = rs
Combo4.DataField = "政治面貌"
Set Combo5.DataSource = rs
Combo5.DataField = "学历"
Set Text7.DataSource = rs
Text7.DataField = "家庭住址"
Set Text5.DataSource = rs
Text5.DataField = "联系电话"
Set Text6.DataSource = rs
Text6.DataField = "备注"
'下拉列表框提供班级名称
Combo1.Clear
rs1.Open "select 系部名称 from department", cnn
While Not rs1.EOF()
Combo1.AddItem Trim(rs1.Fields("系部名称"))
rs1.MoveNext
Wend
rs1.Close
End Sub
对其余几个表的数据进行增、删、改操作的窗体的设计方法与上述类拟。
‘柒’ 谁帮我写下这个数据库设计的数据流图,最好是连数据字典、功能分析和E-R图都给我
我ft
这罩改也要人做 。。
就是100RMB也不会有人帮你做
这东西,要运笑想写的好一点,至少得一个星物悄判期吧
LZ神经病,鉴定完毕。。
‘捌’ 数据库课设报告功能分配怎么写
数据库课设报告的功能分配部分通常是指明团队成员各自负责的系统功能和模块。以下是一个可能的编写方式:
在本次数据库课设中,我们团队将分工合作,根据项目需求设计并实现以下几个系统功能和模块:
1. 数据库设计和创建:由xx同学负责,包括针对项目需求的数据库设计,数据库结构的创建等。
2. 用户管理模块:由xx同学负责,包括用户信息的录入、修改、删除等功能的实现。
3. 订单管理模块:由xx同学负责,包括订单信息的录入、查询、删除等功能的实现。
4. 商品管理模块搜虚:由xx同学负责,包括商品信息的录入、修改、删除等功能的实现。
5. 报表生成模块:由xx同学负责,包括销售报表和库存报表的生成及结果的导出功能。
6. 系统测试和优化:由团队岩漏闭成员共同完成,包括对系统功能的整体测试和改粗裂进,以确保系统的稳定性和良好使用体验。
以上是我们团队的初步任务分配方案,实际情况可能因为团队成员的能力和意愿而有所不同。在任务分配之后,每个团队成员还需详细描述自己所负责的功能模块的具体实现,以便于其他成员理解和协作。同时,在项目开发过程中,每位成员还应该随时向其他成员汇报自己的进度和出现的问题,确保团队进度和效率的保持。