文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。网学的各位小编整理了PB毕业设计-基于PB的图书馆管理系统的设计的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 数据库逻辑结构设计数据库设计有几个范式,一般我们要做到的是第三范式,即数据表中没有冗余字段以及同一个表中的字段没有函数依赖关系,冗余字段即在一个表中已经保存过的信息,在另一个表中就不应该存在,如果需要的话,可以通过表间的关联来得到,函数依赖性就是一个表中的字段间不应该有计算关系,如一个表中有单价字段、数量字段,就不应该有一个总金额字段。如果程序运行过程中需要总金额,可以实时计算。不过在一些较常用的表中,我们可以适当地保留冗余字段,这样,在程序运行过程中可以减少由于表间互相关联而使用速度降低等问题。这就是所谓的第四范式。数据表设计时,最好不要使用用户输入的信息作为主键,每一个数据表自己定义一个主键,添加信息是由程序自动添加,这样就可以减少数据更新时产生的错误。表与表相关联的外键最好是由程序自动生成的主键,这样数据库就比较规范了。 另外,数据表设计时一般都应该有一些标志字段,标志字段可以定义成CHAR(1)或BIT 型。建议实际应用中定义成CHAR(1)字段可以存储多种可能的状态,在最初设计时,可能我们没有考虑到的一些情况,在程序后来的开发中,可以通过设计标志字段为不同的值来解决,这样就避免了修改数据库结构。 数据库初期设计时一定要谨慎,把所有可能的情况都考虑进去,即使当时没有用到,也要将它留在数据库中作为备用字段以便将来扩充。 程序一旦开始编码,就应该尽量避免再修改数据库。因为如果数据库结构一旦改变, 所有与修改的数据表相关的业务都有可能受到影响,而某些影响还很难看到,这样就容易形成一个恶性循环。错误越改越多,越改越乱,最终导致程序的失败。PB的数据窗口与其他语言的数据控件不一样,它的很多东西是预编译的。即使你一个模块已经调试无误,但只要数据库结构改动。相应的模块就一定要重新修改,否则一定会出问题。 图书借阅管理系统数据库中各个表的设计结果如下面几个表格所示。每个表格表示为数据库中的一个表。 借阅人基本信息表memberinfo 说明:记录借阅人的基本情况,memberid设为主键、索引。 表4.1
用户基本信息表people 说明:记录系统用户的用户名、密码与权限,name设为主键。 表4.2
图书基本信息表bookinfo 说明:记录图书基本信息,bookid设为主键、索引。 表4.3
出版社基本信息表publishinfo 说明:记录出版社信息,pubid设为主键。 表4.4
分类信息表bookclass 说明:记录定制的分类情况,classid设为主键。 表4.5
借阅情况信息表loan 说明:进行借阅的登记,loanid设为主键、自动增长。 表4.6
规则信息表regular 说明:记录设置的借阅规则,days设为主键。 表4.7
(4)新书入库窗口 w_newbook 功能介绍:增加、修改图书信息。 操作方法:a.增加图书信息:点击“新增”按钮,添加图书信息,完成后点击“保存”按钮 b.修改图书信息:通过“图书编号”检索出图书信息,修改后点击“保存”按钮 代码分析: Open事件:dw_1.settransobject(sqlca) //为数据窗口指定事务对象 dw_1.retrieve()//为数据窗口从数据库中获得数据 this.width=2926 //设置窗口的高度和宽度 this.height=1572 “检索”按钮:string ls_bookid,ls_filter ls_bookid=sle_bookid.text dw_1.setfilter("bookid=''"+ls_bookid+"''")//设置过滤条件 dw_1.filter()//过滤数据 “上一条”按钮:dw_1.scrollpriorrow()//滚动到上一行 “下一条”按钮:dw_1.scrollnextrow()//滚动到下一行 “新增”按钮:long ll_row ll_row=dw_1.insertrow(0) //在数据窗口中增加一行 dw_1.scrolltorow(ll_row) //数据窗口滚动到当前行 dw_1.setcolumn(2) //使第一列为当前列,并得到焦点 dw_1.setfocus() “保存”按钮:long ll_row dw_1.accepttext()//将数据写入主缓冲区 if dw_1.modifiedcount()>0 then //检测数据是否被修改 if dw_1.update()>0 then //如果被修改则更新数据库 commit; //提交事务 cb_new.setfocus()//“新增”按钮获得焦点 else rollback; //回滚事务 messagebox("系统提示","保存失败!请检验数据的正确性") dw_1.setcolumn(1) //数据窗口第一列获得焦点 dw_1.setfocus() end if else cb_new.setfocus()//“新增”按钮获得焦点 end if
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
本文选自计算机毕业设计http://myeducs.cn |