论文关键词 c/s sql2000 数据库 vb
论文摘要:本文完成了一个基于client/server模式的高校图书管理系统的设计与实现。运用visual basic.net结合microsoft sql server 2000开发的登录模块主要用于验证用户身份,进行有效的操作。从主界面模块在验证后进入每个子模块进行各个子系统的具体功能操作。在整个系统设计中充分利用了模块化的设计思想和开发方法。
第1章 问题描述
1.1 图书管理系统简介
本系统利用vb.net处理数据库的功能,实现对图书馆信息的管理。主要功能为管理有关读者、出版社、书籍、借阅和管理者的信息等。
本系统的结构分为读者信息管理模块、出版社信息管理模块、书籍信息管理模块、借阅信息管理模块、管理者管理信息模块、报表显示模块和查询处理模块。
1.2 数据需求
根据系统的需求,首先将要记录的信息分类,要记录的信息如下。
= 1 \* gb2 ⑴读者信息:包括证号、姓名、联系方式、已借书数目、读者类别和能否借书等。
= 2 \* gb2 ⑵出版社信息:包括名称、地址、网址、e-mail等。
= 3 \* gb2 ⑶书籍信息:包括书号、丛书系列、作者、责任编辑、字数、定价、出版时间、主题分类、二级分类、馆内借阅分类、总册数、库存量、出版社和书名等。
= 4 \* gb2 ⑷借阅信息:包括借阅日期、应归还日期、实际归还日期、能否续借、书号和证号等。
= 5 \* gb2 ⑸管理者信息:包括管理者名称、对应密码和对应权限等。
根据这些需要,本系统需要“读者信息”表,“出版社信息”表,“书籍信息”表,“借阅信息”表和“管理者信息”表。
1.3 事务需求
经过实际考察、咨询和分析,高等院校图书管理系统主要应该具有以下功能模块,如1.1图。
= 1 \* gb2 ⑴在读者信息管理部分,要求如下。
可以浏览读者信息。
可以对读者信息进行维护,包括添加及删除等操作。
= 2 \* gb2 ⑵在出版社信息管理部分,要求如下。
可以浏览出版社信息。
可以对出版社信息进行维护,包括添加及删除等操作。
= 3 \* gb2 ⑶在书籍信息管理部分,要求如下。
可以浏览书籍信息。
可以对书籍信息进行维护,包括添加及删除等操作。
= 4 \* gb2 ⑷在借阅信息管理部分,要求如下。
可以浏览借阅信息。
可以对借阅信息进行维护操作。
= 5 \* gb2 ⑸在管理者信息管理部分,要求如下。
显示当前数据库中管理者情况。
对管理者信息维护操作。
shape \* mergeformat 
图1-1 系统业务逻辑关系
1.4 系统开发平台
前台:
1、硬件要求:
cpu: pentium 4 2.0ghz以上ibm兼容机
内存:512mb以上容量
显卡:32mb或以上显存之agp接口显卡
2、软件要求:
操作系统:microsoft windows 2000/xp
开发工具:microsoft visual studio.net2003
数据库服务器:
1、硬件要求:
cpu: pentium4 2.8ghz以上ibm兼容机
内存:1024mb以上容量
显卡:32mb或以上显存之agp接口显卡
2、软件要求:
操作系统:microsoft windows 2000 server
数据库服务器:microsoft sql 2000 server
网络设备:
2块网卡:客户机d-link dfe-650tx,服务器intel pcla8460b。
路由器:一台soho路由器tl-r402m
1.5 网络拓扑结构
本设计采用客户机/服务器(c/s)体系,数据的储存管理功能较为透明性,可以合理均衡事务的处理,充分保证数据的完整性和一致性。
shape \* mergeformat
图1.2 c/s模式结构
第2章 设计与实现
数据库主要着重于数据对象的属性和数据对象之间的关系的分析。一般采用e-r图,即实体-关系模型来分析数据对象的属性和数据对象之间的关系。
2.0系统流程图
在本系统中准备通过如下窗体来实现数据维护的功能。
(1) 主窗体:管理着各个子窗体。
(2)“读者信息”子窗体:管理读者信息。
(3)“管理者信息”子窗体:管理用户信息。
(4)“出版社信息”子窗体:管理出版社信息。
(5)“书籍信息”子窗体:管理书籍信息。
(6)“借阅信息”子窗体:管理借阅信息。
(7)“报表窗体”子窗体:显示数据报表。
(8)“综合查询”子窗体:执行用户自定义的查询。
系统流程图如图3.1所示:

图2.1 系统流程图
2.1 e-r模型设计
2.1.1 实体列表
实 体
描 述
读 者
所有借阅者,查阅者,由证件号标识
出 版 社
图书馆所有图书所属出版社,由出版社编号标识
书 籍
图书馆所有图书,由刊号标识
借 阅
书号、证号、借阅日期、应归还日期等属性,由方式标识
系统管理员
系统维护人员
2.1.2 系统的e-r模型
该图书管理系统的e-r模型,如下图所示

图2.2 图书管理系统e-r图
2.2 设计数据库
2.2.1创建数据库
(1)在服务器资源管理器中的任一节点右击。
(2)执行快捷菜单中的“新建数据库”命令,并在打开的“创建数据库”对话框中输入数据库名library,选中“使用windowsnt集成安全性”单选按钮。
(3)单击“确定”按钮,则新建的数据库就会出现在服务器上。
2.2.2创建数据表
创建数据库后,为library数据库添加数据表,步骤如下。
(1)在服务器资源管理器中右击数据库library下的“表”文件夹。在弹出的快捷菜单中执行“新建表”命令,出现表设计器。
(2)添加表的字段和其他详细资料。各表数据结构如下表所示。
表2-1出版社信息
列 名
数据类型
长 度
主 键
出版社名称
varchar
50
yes
出版社地址
varchar
50
网址
char
50
e-mail
char
50
表2-2读者信息
列 名
数据类型
长 度
主 键
证号
int
4
yes
姓名
varchar
20
联系方式
varchar
50
已借书数目
int
4
读者类别
int
4
能否借书
bit
1
密码
varchar
6
表2-3借阅信息
列 名
数据类型
长 度
主 键
书号
char
10
yes
证号
int
4
yes
借阅日期
datetime
8
应归还日期
datetime
8
实际归还日期
datetime
8
续借
bit
1
表2-4书籍信息
列 名
数据类型
长 度
主 键
书号
char
10
yes
丛书系列
nchar
50
作者
nchar
50
责任编辑
nchar
50
字数
int
4
定价
money
8
出版时间
datetime
8
主题分类
nchar
50
二级分类
char
50
馆内借阅分类
int
4
总册数
int
4
库存量
int
4
出版社
varchar
50
书名
varchar
50
表2-5管理者信息
列 名
数据类型
长 度
主 键
用户名称
char
20
yes
密码
char
20
权限
int
4
2.2.3连接数据库
为数据库library和本系统之间建立一个数据连接。
(1)在服务器资源管理器中右击“数据连接”节点。在弹出的快捷菜单中执行“添加连接”命令,打开data link properties对话框。切换到provider选项卡,选中列表框中的microsoft ole db provider for sql server项。单击“下一步”切换到connection选项卡。
(2)在其中的第一个下拉列表框中选择数据库所在服务器名称。输入登录服务器信息后选择数据库library,然后单击test connection按钮。如果测试成功,单击“确定”按钮。
2.3主窗体设计
创建一个新的“windows应用程序”类型的项目,名为“图书馆管理”。将默认创建的窗体命名为“主窗体”,把“主窗体”作为本系统中的主界面。
在窗体中添加两个pannel控件,7个button控件和7个linklabel控件。
2.3.1设计登录界面
设计登录界面,创建一个新的”windows窗体”,名为登录,作为本系统的登录界面.在登录窗体上添加两个label控件,两个button控件和两个textbox控件,添加控件后的窗体如图所示。
2.3.2添加数据组件
在工具箱中单击“数据”选项卡,添加oledbdataadapter组件。
(1)在工具箱中单击oledbdataadapter组件,在窗体任意位置拖动出一个虚框矩形后释放左键弹出“数据适配器配置向导”对话框。
(2) 单击“下一步”,在打开的对话框中选择前面建好的数据连接,然后单击“下一步”。
(3)选中“使用sql语句”,然后单击“下一步”进入“生成sql语句”对话框。
(4)在其中的多行文本框直接输入sql语句“select 管理者信息.* from 管理者信息”。
(5)单击“下一步”按钮,进入“查看向导结果”,单击“完成”按钮完成数据适配器配置。
配置数据适配器后,在主窗体上就会自动添加一个oledbconnection控件。
2.3.3生成数据集
生成数据集的步骤如下:
(1)单击oledbdataadapter控件“属性”对话框中的“生成数据集”链接,打开“生成数据集”对话框。
(2)在其中选中“新建”单选按钮,并在其后面的文本框中输入“lib管理者信息”。
(3)在“选择要添加到数据集中的表”列表框中列出了前面添加的oledbdataadapter组件所连接的表,选中该表名前面的复选框。
(4)选中“将此数据集添加到设计器”复选框,单击“确定”按钮
这样,将生成一个名称为“lib管理者信息”的数据集,该数据集以文件形式存储,文件名为“lib管理者信息.xsd”。而在项目中,添加了一个dataset组件,名为“objlib管理者信息”。
在解决方案资源管理器中右击该项目,在弹出快捷菜单中单击“属性”菜单项。在打开的“属性页”对话框中的“启动对象”下拉列表框中选择“主窗体”选项。单击“确定”按钮,这样该项目启动时,就会从主窗体开始启动。
2.3.4设计代码
在程序运行过程中,如果想通过单击linklabel控件或button控件进入系统中的各个功能模块(如显示读者信息等),就会弹出一个对话框要求输入用户名和密码.单击"确认"按钮,程序就会到数据库的"管理者信息"表中查找该用户名和密码是否存在.如果存在,允许进入功能模块.
完成登录功能的主要代码集中在usercheck函数中.在程序运行过程中,在登录窗体的"用户姓名"和"用户密码"文本框中输入用户名和密码后,单击"确认"按钮就会触发usercheck函数并执行其中的代码.如果usercheck函数返回true,那么允许用户的操作;否则拒绝用户的操作请求.
在usercheck函数中首先定义login类型的变量dlg_login,然后通过showdialog方法来显示登录窗体.如果用户在登录窗体中输入用户姓名和密码,并且单击了"确认"按钮,那么自动调用一个自定义函数loaddataset(),由此函数进行数据加载.如果出错,显示错误信息,回滚整个事务.
2.4 读者信息
在当前项目中添加一个“windows窗体”,将窗体命名为“读者信息”。
2.4.1设计显示界面
在窗体上添加1个groupbox控件,9个button控件,5个textbox控件,1个checkbox控件和7个label控件。
各按钮控件是为了执行相应的操作。各textbox控件和checkbox控件用来显示数据集中的数据,这个功能通过设置databindings属性来实现。
2.4.2添加数据组件
向窗体添加oledbconnection组件,命名为oledbconnection1后将其选中,在“属性”对话框的connectionstring栏单击,选择所建数据库library。
添加oledbdataadapter组件和生成数据集的方法步骤如2.3.2及2.3.3。
设置各textbox控件的databinding属性来实现对数据集中数据的显示(以edit证号为例)。
(1)选中“edit证号”控件单击“属性”对话框。
(2)单击databinding属性前面的+号打开该属性的详细列表。
(3)设置text属性:在该属性后面栏中单击并选择所对应字段。
(4)设置其他textbox控件的databinding属性。
2.4.3功能实现
显示数据,添加读者,保存更改,记录定位的实现。
“管理者信息”,“出版社信息”,“书籍信息”,“借阅信息”和该模块的设计思路及方法步骤完全一致,在此从略。
2.5 显示报表
在当前项目中添加一个“windows窗体”,命名为“报表窗体”,该模块显示当前数据库中读者信息和借阅信息的报表。
在窗体上添加一个crystalreportviewer1,它充当报表显示的窗体,然后在窗体中添加一个菜单,菜单中包括两个子菜单项—“读者信息”和“借阅信息”。
在程序运行中,如果单击“读者信息”菜单项,就会自动在窗体上显示“读者信息报表.rpt”:如果单击“借阅信息”命令就会自动在窗体上显示“借阅信息报表.rpt”报表。
2.5.1添加读者信息报表
(1)在开发环境中选择菜单“项目”中的“添加新项”对话框中选择crystal report选项。
(2)在“名称”文本框中输入报表名“读者信息报表.rpt”,单击“打开”按钮,就会弹出入图所示的“crystal report库”对话框。
(3)在其对话框中选择“使用报表专家”单选按钮,在“选择专家”列表框中选择“标准”选项,单击“确定”按钮,进入下一步。
(4)在弹出的“标准报表专家”对话框中,选择“可用的数据源”列表框中的olb db(ado)选项,就会弹“ole db(ado)”对话框。选择olb db提供程序为microsoft ole db provider for sql server,单击“下一步”按钮,显示 “连接信息”对话框。
(5)在其中设置连接信息,单击“完成”按钮,返回“标准报表专家”对话框。
(6)选择数据源为ole db(ado)中的library数据库,并且选中其中的“读者信息”表。单击“插入表”按钮,把“读者信息”表插入到报表中,单击“下一步”按钮。
(7)在“字段”选项卡中单击“全部添加”按钮,把“读者信息”表中的所有字段添加到报表中,单击“完成”按钮就完成报表的设计。
设计完成的“读者信息报表”如图所示。
2.5.2添加借阅情况报表
添加借阅情况报表的过程与添加读者信息报表过程大致相同,不同之处在于插入到报表中的数据表为“读者信息”。
2.6 综合查询的实现
在程序运行过程中,单击主窗体的“综合查询”按钮,就会弹出一个对话框。在其中设置查询条件,根据查询条件从记录集中筛选出所需记录。
为此需要在项目中添加一个窗体“综合查询”。
还需要设置“cmbbox运算符”控件的items属性。单击窗体上“cmbbox运算符”控件,然后在“属性”对话框中单击items栏,就会出现一个按钮,单击按钮,在打开的窗口中如图2.2所示设置字符串集合编辑器字符串。
shape \* mergeformat 
图2.2 所示设置字符串集合编辑器
设置完毕,单击确定按钮。
2.6.1添加数据组件
在窗体上添加一个oledbdataadapter组件,使用数据适配器配置向导对其进行配置。选择数据连接后输入sql语句“select 出版社信息.* from 出版社信息”。
同样再为窗体添加四个oledbdataadapter组件,
在"生成sql语句"对话框的多行文本框中分别输入sql语句“select 读者信息.* from 读者信息”, “select 管理者信息.* from 管理者信息” ,“select 借阅信息.* from 借阅信息”, “select 书籍信息.* from 书籍信息” ,然后单击“完成”按钮,name属性分别设置为oledbdataadapter2,oledbdataadapter3,oledbdataadapter4,oledbdataadapter5完成数据适配器的配置。
生成数据集的步骤如下。
(1)在oledbdataadapter1组件的“属性”对话框中单击“生成数据集”超链接,打开“生成数据集”对话框,选中“新建”按钮并在后面文本框中输入“lib综合查询”。
(2)在“选择要添加到数据集中的表”列表框中,选中5个表前面的复选框。
(3)选中“将此数据集添加到设计器”复选框,单击“确定”按钮。
这样,将生成一个名称为“lib综合查询”的数据集,该数据集以文件的形式存储,文件名为“lib综合查询.xsd”。而在项目中,添加一个dataset组件,名称为“objlib综合查询”。
设计完成的数据集如图2.4所示。

图2.3 综合查询数据集
第3章系统测试
3.1开发与测试环境
本系统使用visualbasic.net语言进行开发。需要microsoft .net framework sdk v1.1的支持。适用内存不低于256m配备有windows2000,windows2003,windowsxp系统的计算机。
3.3 程序调试情况
在数据连接时一定要注意窗体和相应显示控件的绑定关系。在把系统从一台计算机移植到另一台计算机时一定要把数据文件library.mdf和library_log.ldf同时移植,并对相应的提供服务的sql server服务器进行相应的修改,否则数据正确连接并显示。
3.4 功能显示
运行程序后首先显示主窗体,如图3.2所示。

图3.2 主界面
单击“输入/查看读者信息”,就会弹出如图3.3所示登录框。
shape \* mergeformat 
图3.3 登录界面
在登录对话框中输入用户姓名和密码,单击“确认”按钮,就会对用户身份进行认证,如果认证通过,那么就会弹出如图3.4所示的读者信息管理窗体。

图3.4 读者信息管理窗体
在“读者信息”窗体中可以对读者信息进行维护操作,例如浏览读者信息,添加记录和删除记录等。
单击“输入/查看书籍信息”,就会显示“书籍信息”窗体,在该窗体中可以对书籍信息进行维护操作。书籍信息维护窗体如图3.5所示。

图3.5 书籍信息窗体
单击“输入/查看借阅信息”,就会显示“借阅信息”窗体,在该窗体中可以对出版社信息进行维护操作。出版社信息维护窗体如图所示。

图3.6 借阅信息窗体
单击“输入/查看出版社信息”,就会显示“出版社信息”窗体,在该窗体中可以对借阅信息进行维护操作。借阅信息维护窗体如图3.7所示。

图3.7 出版社信息窗体
单击“输入/查看管理者信息”,结果如图3.8所示。

图3.8 管理者信息窗体
在主窗体上单击“显示报表”,那么就可以查看反映读者信息和借阅信息的报表,借阅信息的报表如图所示。
shape \* mergeformat 
图3.9 报表窗体
如果用户在运行的主窗体上单击“综合查询”,那么就可以查看针对不同的数据表进行查询操作。选择查询依据为“出版社信息”表查看其中的所有信息,结果如图3.10所示。
shape \* mergeformat 
图3.10 综合查询窗体
3.5 结论
在这个系统的开发过程中,值得注意的几点有:
(1)数据报表的实现.报表是数据库应用程序的重要组成部分,通过报表,可以把数据库中内容经过组织以后生动地展示给用户,vb.net提供的crystal report可以大大提高报表的设计效率。
(2)复杂查询的实现。在程序运行过程中,单击窗体中的“综合查询”按钮,就会弹出一个对话框,在该对话框中设置查询条件,根据查询条件从记录集中筛选出所需记录,所指定的查询条件包括查询的依据,排序的依据,运算符等等。
第4章 结束语
通过做课程设计,有几点感想,归纳如下。
1. 扎实的理论基础。如果不掌握它们,很难写出高水平的程序。而这一点又是我们所缺乏的。
2. 不钻牛角尖。当遇到障碍的时候,暂时远离电脑,当重新开始工作的时候,也许会发现那些难题现在竟然可以迎刃而解。
3. 多与别人交流。三人行必有我师。
4. 良好的编程风格。注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。如果注释和代码不一致,那就更加糟糕。
最后,特别要感谢老师在软件工程和数据库课程中认真负责的教学,才使得我能结合所学的知识完成这一课程设计。
参考文献
1 萨师煊,王珊,数据库系统概论(第三版). 北京:高等教育出版社,2000
2 齐治昌,谭庆平,宁洪,软件工程(第二版).北京:高等教育出版社,2004
3 david i.schneider,visual basic.net编程导论. 电子工业出版社,2003