




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机学院 数据库原理及应用课程设计报告学号数据库原理及应用课程设计报告题目:网上书店管理系统专业:网络工程班级:姓名:指导教师:成绩:计算机学院2017年12月8月目录1 设计内容及要求31.1 设计方案31.2 系统定位31.3 设计要求41.4 需求分析41.5 开发环境62 数据库设计62.1 概念结构62.2 逻辑设计82.3 物理设计93 程序与代码113.1 部分重要表单及代码113.2 报表设计243.3 主程序254设计结果与分析254.1运行界面254.2 结果分析305参考文献311 设计内容及要求1.1 设计方案今天,计算机的价格已经十分低廉,性能却有了长足的进步。它已经被应用于许多领域,计算机之所以如此流行的原因主要有以下几个方面:首先,计算机可以代替人工进行许多繁杂的劳动;其次,计算机可以节省许多资源;第三,计算机可以大大的提高人们的工作效率;第四,计算机可以使敏感文档更加安全,等等。(1)基本思路根据实际情况,我们使用原型法(Rapid Prototyping)即以少量代价快速地构造一个可执行的软件系统模型。使用户和开发人员可以较快地确定需求,然后采用循环进化的开发方式,对系统模型作连续的精化,将系统需具备的性质逐渐增加上去,直到所有的性质全部满足。此时模块也发展成为最终产品了。(2)作业目标改革的总设计师邓小平同志曾经说过:“科学技术是第一生产力”,我希望能用我这三年的所学编制出一个实用的应用程序来帮助这些学校图书馆进行更有效的图书管理。归纳起来,好处大约有以下几点:(1) 可以存储所有的图书档案,安全、高效;(2) 只需一到二名图书录入员即可操作系统,节省大量人力;(3) 可以迅速查到所需信息。1.2 系统定位针对网上图书店的日常工作, 网上书店管理系统在完成从图书的采购到入库,外借到收回.其中包括了,出售、借出的处理等等各个方面的工作.能够在网上书店管理中实现快捷、方便等特点。作为网上管理的一部分。网上书店管理系统提供了与图书其他管理系统的接口。1.3 设计要求借书-根据您提供的图书条形码和图书编号确认图书,再据读者的编号确认读者后把此书借给这位读者。还书-根据您提供的图书条形码和图书编号确认图书,再据读者的编号确认读者后把此书归还。图书管理-对所有图书的资料进行添加,修改和删除等操作。读者管理-对所有读者的资料进行添加,修改和删除等操作。查询-所有图书、不在馆图书,今天借出图书、今日归还图书、今日新进图书和有条件查询。统计-图书基础状况统计排名。管理员-在这里修改管理员的登录密码。1.4 需求分析1.4.1 软件需求管理员可以维护客户注册信息、维护图书信息、处订定单信息、网上售书、查看图书调查报告;。本系统的设计目标将最终定位于完成以上所述的系统主要业务的基本模型上。开发意图:面对网购越来越走红的趋势,结合广大书迷对于购书的需求,特意推出书店的网络版,以满足广大购书者能够实现足不出户就购买到所需图书的意愿。作用范围:本网上书店系统暂时面向单机使用,有机会将会架设在公用网络上,以满足广大网民新形势下对于买书的需求。网上书店管理系统正是基于这种市场潜力,面向全国中小型图书销售商而开发的,力争为全国的中小型书店提供一款功能完善、界面友好、性能可靠的网上销售系统。1.4.4 数据字典1.数据流条目:数据流是数据结构在系统内传输的途径。对数据流的描述通常包括以下内容:数据流描述数据流明,说明,数据流来源,数据流去向,组成:数据结构,数据流量:(1)名称:所需书信息别名:无简述:用户所需要的图书信息来源:顾客去向:网上书店管理系统数据流量:10份/每周组成:书名+作者+书编号(2)名称:图书发货别名:无简述:有订单时来源:管理系统去向:采购部数据流量:10单/每周组成:订单数量+订单信息+图书作者+图书编号2.数据存储条目:数据存储是数据结构停留或保存的地方,也是对数据流的来源和去向之一。它可以是手工文档或手工凭单,也可以是计算机文档。对数据存储的描述通常包括以下内容:数据存储描述:数据存储名,说明,编号,输入的数据流,输出的数据流,组成:数据结构,数据量,存取频度,存取方式(1)名称:订单信息编号:D1简述:用户购买图书的订单组成:订单号+图书作者+图书编号+单价组织方式:索引文件,以订单号为关键字(2)名称:支付信息编号:D2简述:用户购买图书支付金额的信息组成:支付订单号+支付金额+支付方式组织方式:索引文件,以订单号为关键字(3)名称:图书库存记录信息编号:D3简述:图书所剩的数量组成:图书剩余数量+图书编号+图书作者组织方式:索引方式,以图书编号为关键字(4)名称:客户信息编号:D4简述:客户登陆系统的用户名组成:用户名+密码组织方式:索引方式,用户名为关键字(5)名称:所选图书信息编号:D5简述:用户算选择的图书信息组成:名称+出版社+作者+书籍号组织方式:索引方式,以书籍号为关键字1.4.5 数据流图仓库顾客所需书的信息填写图书信息图书订货单所选图书 P1.1新用户注册P1.2挑选图书P1.3放入购物车D4客户信息D5所选图书信息1.5 开发环境本系统采用VFP6.0开发,运行环境如下:Visual FoxPro 6.0 的功能很强大,但是对整个开发环境的要求却不是很高。现在,普通的家用电脑一般都能够运行它。配置的相关基本要求(最低配置要求)如下: 处理器:486处理器以上,推荐使用 Pentium 或更高档处理器的 PC兼容机。 内存:16MB 以上的内存,推荐使用 24MB 以上的内存。 硬盘:典型安装需要 85MB 的硬盘空间,完全安装需要 90MB 的硬盘空间。操作系统:Windows 95/98(中文版),或 Windows NT4.0(中文版),或更高版本2 数据库设计2.1 概念结构2.1.1 部分E-R图Booksinfo备注入库日期册数定价出版社作者书名书号编号部分E-R图 Booksinfo备注Lendinfo书号是否延期借阅情况归还日期借阅天数预约日期借阅日期读者编号部分E-R图 Lendinfo性别备注注册日期联系电话详细住址Readerinfo年龄押金是否允许借姓名读者编号部分E-R图 Readerinfo书名标识销售日期销售情况销售价格定价Saleinfo出版社书号作者部分E-R图 SaleinfoBooksinfo定价出版社作者书名书号册数2.1.2 总体E-R图Lendinfo书号借阅情况归还日期借阅天数预约日期借阅日期读者编号n借阅借阅Readerinfo读者编号姓名是否允许借押金mmnn销售书名销售价格定价Saleinfo出版社书号销售日期作者m2.2 逻辑设计2.2.1 实体规范化该系统满足第一范式,如果一个关系模式R的所有属性都是不可分的基本数据项,则R1NF。简单的说,就是每一个列(属性),不能再分割成多个列(属性)。第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。2.3 物理设计系统登陆2.3.1 组织结构图网上书店管理系统系统管理读者管理图书销售图书服务图书管理用户注册图书查询借还图书销售记录退出系统密码修改修改读者信息录入读者信息销售查询修改图书信息图书入库2.3.2 表设计字段名类型宽度小数位数索引编号字符型10书号字符型28书名字符型40作者字符型20出版社字符型15定价数值型60册数数值型30入库日期日期型8备注备注型4Booksinfo字段名类型宽度小数位数索引书号字符型28读者编号字符型6借阅日期日期型8预约日期日期型8借阅天数日期型8归还日期日期型8借阅情况字符型6是否延期逻辑型1备注备注型4Lendinfo字段名类型宽度小数位数索引读者编号字符型10姓名字符型6性别字符型6年龄字符型2详细住址字符型28注册日期日期型8压金数值型40是否允许借逻辑型1备注备注型4联系电话字符型11Readerinfo字段名类型宽度小数位数索引书号字符型26书名字符型20作者字符型18出版社字符型16定价数值型62销售价格数值型62销售数量数值型30销售日期日期型8标识备注型1Saleiinfo字段名类型宽度小数位数索引用户名字符型10密码字符型16Passwordinfo3 程序与代码3.1 重点表单及代码确定:use readerinfoif allt(thisform.text1.value)= messagebox(请输入完整的必要信息!,64,提示) thisform.text1.setfocuselse if allt(thisform.text2.value)= messagebox(请输入完整的必要信息!,64,提示) thisform.text2.setfocus else if allt(thisform.text4.value)= messagebox(请输入完整的必要信息!,64,提示) thisform.text3.setfocus else if allt(thisform.text5.value)= messagebox(请输入完整的必要信息!,64,提示) thisform.text4.setfocus else append blank repl 读者编号 with allt(thisform.text1.value) repl 姓名 with allt(thisform.text2.value) repl 年龄 with allt(thisform.text3.value) repl 联系电话 with allt(thisform.text4.value) repl 详细住址 with allt(thisform.text5.value) repl 压金 with val(allt(thisform.text6.value) repl 备注 with allt(thisform.edit1.value) repl 注册日期 with date() if allt(bo1.value)= repl 性别 with allt(bo1.displayvalue) else repl 性别 with allt(bo1.value) endif mand2.click endif endif endifendifuse重填:thisform.text1.value=thisform.text2.value=thisform.text3.value=thisform.text4.value=thisform.text5.value=bo1.value=bo1.displayvalue=男thisform.edit1.value=thisform.text1.setfocus返回:thisform.releaseForm.Init(初始化):public nherethisform.text1.readonly=.t.thisform.text2.readonly=.t.thisform.text3.readonly=.t.thisform.text4.readonly=.t.thisform.text5.readonly=.bo1.readonly=.t.thisform.edit1.readonly=.t.thisform.text1.value=allt(读者编号)thisform.text2.value=allt(姓名)thisform.text3.value=allt(年龄)thisform.text4.value=allt(联系电话)thisform.text5.value=allt(详细住址)bo1.value=allt(性别)thisform.edit1.value=allt(备注)第一条:go topnhere=recno()mand4.enabled=.mand6.enabled=.t.thisform.init最后一条:go bottomnhere=recno()mand3.enabled=.mand5.enabled=.t.thisform.init上一条:skip -1mand4.enabled=.mand6.enabled=.t.if bof() go top this.enabled=.f. mand3.enabled=.f. messagebox(已经到第一条记录了!,64,提示) nhere=recno()else nhere=recno() thisform.initendif下一条:skip 1mand3.enabled=.mand5.enabled=.t.if eof() go bottom this.enabled=.f. mand4.enabled=.f. messagebox(已经到最后一条记录了!,64,提示) nhere=recno()else nhere=recno() thisform.initendif修改:thisform.text1.readonly=.f.thisform.text2.readonly=.f.thisform.text3.readonly=.f.thisform.text4.readonly=.f.thisform.text5.readonly=.bo1.readonly=.f.thisform.edit1.readonly=.f.删除:use readerinfo exclusivego nheremb=messagebox(确定要删除吗?,1+64,提示)if mb=1 delete pack count all to num if nherenum go bottom thisform.init else go nhere thisform.init endifendif确定:sele passwordinfoif allt(thisform.text1.value)= thisform.text1.setfocuselse if allt(thisform.text2.value)= thisform.text2.setfocus else locate for allt(用户名)=allt(thisform.text1.value); .and.allt(密码)=allt(thisform.text2.value) if eof() messagebox(用户名或密码错误,请重新输入!,64,提示) thisform.text1.value= thisform.text2.value= thisform.text1.setfocus() else cyonghu=allt(thisform.text1.value) cmima=allt(thisform.text2.value) do menu.mpr thisform.release endif endifendif退出:thisform.releaseclea eventquit确定:use booksinfoif allt(thisform.text1.value)= messagebox(请输入完整的必要信息!,64,提示) thisform.text1.setfocuselse if allt(thisform.text2.value)= messagebox(请输入完整的必要信息!,64,提示) thisform.text2.setfocus else if allt(thisform.text3.value)= messagebox(请输入完整的必要信息!,64,提示) thisform.text3.setfocus else if allt(thisform.text4.value)= messagebox(请输入完整的必要信息!,64,提示) thisform.text4.setfocus else if allt(thisform.text5.value)= messagebox(请输入完整的必要信息!,64,提示) thisform.text5.setfocus else if allt(thisform.text6.value)= messagebox(请输入完整的必要信息!,64,提示) thisform.text6.setfocus else if allt(thisform.text7.value)= messagebox(请输入完整的必要信息!,64,提示) thisform.text7.setfocus else append blank repl 书号 with allt(thisform.text1.value) repl 编号 with allt(thisform.text2.value) repl 书名 with allt(thisform.text3.value) repl 作者 with allt(thisform.text4.value) repl 出版社 with allt(thisform.text5.value) repl 定价 with allt(thisform.text6.value) repl 册数 with allt(thisform.text7.value) repl 备注 with allt(thisform.edit1.value) repl 入库日期 with date() mand2.click endif endif endif endif endif endifendifuse重填:thisform.text1.value=thisform.text2.value=thisform.text3.value=thisform.text4.value=thisform.text5.value=thisform.text6.value=thisform.text7.value=thisform.edit1.value=thisform.text1.setfocus返回:thisform.release快速定位:sele booksinfogo topif allt(thisform.text7.value)= messagebox(请输入要查询的内容!,64,提示) thisform.text7.setfocus else locate for allt(书名)=allt(thisform.text7.value) if eof() go bottom thisform.init messagebox(此书不存在,请重新输入!,64,提示) thisform.text7.setfocus else thisform.init endif nhere=recno()endif第一条:go topnhere=recno()mand4.enabled=.mand6.enabled=.t.thisform.init最后一条:go bottomnhere=recno()mand3.enabled=.mand5.enabled=.t.thisform.init上一条:skip -1mand4.enabled=.mand6.enabled=.t.if bof() go top this.enabled=.f. mand3.enabled=.f. messagebox(已经到第一条记录了!,64,提示) nhere=recno()else nhere=recno() thisform.initendif下一条:skip 1mand3.enabled=.mand5.enabled=.t.if eof() go bottom this.enabled=.f. mand4.enabled=.f. messagebox(已经到最后一条记录了!,64,提示) nhere=recno()else nhere=recno() thisform.initendifForm.init:public nhere,numthisform.text1.readonly=.t.thisform.text2.readonly=.t.thisform.text3.readonly=.t.thisform.text4.readonly=.t.thisform.text5.readonly=.t.thisform.text6.readonly=.t.thisform.edit1.readonly=.t.thisform.text1.value=allt(书号)thisform.text2.value=allt(书名)thisform.text3.value=allt(编号)thisform.text4.value=allt(作者)thisform.text5.value=allt(出版社)thisform.text6.value=allt(定价)thisform.edit1.value=allt(备注)thisform.label8.caption=allt(str(recno()修改:thisform.text1.readonly=.f.thisform.text2.readonly=.f.thisform.text3.readonly=.f.thisform.text4.readonly=.f.thisform.text5.readonly=.f.thisform.text6.readonly=.f.thisform.edit1.readonly=.f.删除:use booksinfo exclusivego nheremb=messagebox(确定要删除吗?,1+64,提示)if mb=1 delete pack thisform.label11.init if nherenum go bottom thisform.init else go nhere thisform.init endifendif统计:if thisform.optiongroup1.option1.value=1 sele 书名,作者,出版社,count(销售数量) as 总销售量 from salels into cursor tjls; group by 书名 order by 总销售量 desc thisform.grid1.columncount=-1 thisform.grid1.recordsource=tjlsendifif thisform.optiongroup1.option2.value=1 sele 书名,作者,出版社,count(销售数量) as 总销售量 from salels into cursor tjls; group by 作者 order by 总销售量 desc thisform.grid1.columncount=-1 thisform.grid1.recordsource=tjlsendifif thisform.optiongroup1.option3.value=1 sele 书名,作者,出版社,count(销售数量) as 总销售量 from salels into cursor tjls; group by 出版社 order by 总销售量 desc thisform.grid1.columncount=-1 thisform.grid1.recordsource=tjlsendif查询:sele 书名,作者,出版社,销售数量 from saleinfo into cursor salels; where 销售日期=ctod(bo1.value); .and.销售日期=ctod(bo2.value) thisform.grid1.columncount=-1thisform.grid1.recordsource=salelsthisform.grid1.recordsourcetype=1打印预览:report form formxscx.frx preview thisform.refresh打印:if !printstatus()messagebox(请用A4纸!,16,提示信息)report form xscx.frx to printerthisform.refreshelse messagebox(打印机没有准备好!,64,提示)endifOeractivechange(当鼠标或键盘时发生的事件):if this.option1.value=1 thisform.text7.value=allt(thisform.text5.value) this.option2.value=0 this.option3.value=0 this.option4.value=0endifif this.option2.value=1 thisform.text7.value=str(val(allt(thisform.text5.value)*0.9,7,2) this.option1.value=0 this.option3.value=0 this.option4.value=0endifif this.option3.value=1 thisform.text7.value=str(val(allt(thisform.text5.value)*0.8,7,2) this.option1.value=0 this.option2.value=0 this.option4.value=0endifif this.option4.value=1 thisform.text7.value=str(val(allt(th
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建立高效反馈渠道倾听基层声音意见
- (2025年标准)规范的租房协议书
- (2025年标准)广告物料加工协议书
- (2025年标准)管道租赁安全协议书
- (2025年标准)管道安全协议书
- 新项目研发年度工作计划书
- (2025年标准)关于付钱的协议书
- 汽车行业新能源汽车充电桩建设与运营方案
- 网络安全行业威胁检测指南
- 2025年医学实验室技术员招聘模拟题及答案参考
- 高一语文开学第一课 课件 2024-2025学年统编版高中语文必修上册
- 2022新能源光伏电站电力监控系统安全防护实施方案
- 2024智能变电站新一代集控站设备监控系统技术规范部分
- 奶茶店饮品制作手册
- 初中化学课程标准(2022年版)考试题库(含答案)
- 部编人教版六年级上册语文全册教学课件+单元复习课件
- 酒店消防安全管理制度(2022版)
- 人教部编七年级语文全册专项知识点梳理归纳字词、文言文、古诗词
- 国家基本公共卫生服务规范第三版测试
- 2024年保定交通建设投资集团有限公司招聘笔试冲刺题(带答案解析)
- 人教版六年级上册数学全册教案教学设计含教学反思
评论
0/150
提交评论