酒店管理系统课程设计报告

  《软件工程课程设计》报告

题目:酒店管理系统

指导老师:

成员:

完成日期:                                      

目 录

.概述

1.1 项目背景

随着国家经济的发展人们的生活水平有了很大的提高。旅游度假和商务旅行已经成为人们的一种生活需求。国家也把旅游业作为一个朝阳支柱产业来扶持。各地的宾馆酒店越来越多,行业间竞争越来越激烈。传统的酒店管理模式已经不能适应现代酒店发展。利用高科技的电脑网络技术来处理宾馆酒店经营数据,已经成为提高企业管理效率,改善服务质量的关键。

1.2 编写目的

现代化的酒店组织庞大、服务项目多、信息量大,要想提高劳动生产、降低成本、提高服务质量和管理水平,促进经济效益,但凭原始的手工记录管理,不仅效率低,还很容易出错,因此必须借助计算机来进行现代化的信息管理。所以酒店管理系统正是为此而设计的,优秀的酒店客房管理系统操作方便,灵活性好,系统安全性高,运行稳定,服务快捷方便,让宾客感受到一种顾客至上的享受。

1.3项目名称

酒店管理系统。

1.4 开发环境

开发软件:Microsoft Visual Studio 2010

高级语言:C#

使用技术:.Net/JS/JQuery

数据库:Microsoft SQL Server 2008

.需求分析

2.1 问题的提出

该系统的具体任务就是设计一个酒店客房管理系统,由计算机来代替人工执行一系列诸如增加新客房、删除客房、客房修改、查询、客户管理等操作,这样就使办公人员可以轻松快捷地完成酒店客房管理任务,了解整个酒店客房信息。

2.2 需完成的功能

数据流图如下图1和2所示:

图1 顶层数据流图

图2   0层数据流图

2.2.1酒店管理系统

2.2.1.1  宾客登记

登记酒店宾客入住情况,包括宾客的姓名及身份证号的登记,以及入住房间信息。

2.2.1.2  退房登记

当宾客离开时,需要办理退房结账手续。

   2.2.1.3  入住情况查询

对于一定时间段内,每个宾客入住情况可以实现基本查询。

2.2.1.4  客房类型管理

管理员可以在管理平台上增添、修改、删除客房类型(豪华双人房、VIP房、普通单人房等)。

2.2.1.5  客房管理

管理员可以在管理平台上增添、修改、删除各种客房类型的客房。

2.2.1.6  客房信息查询

管理员可以通过各个客房的房间号码来查询该客房的详细情况(是否已有宾客入住、客房的设备是否完好等)。

2.2.1.7  经营情况管理

管理员可以通过宾客的入住情况得知目前哪种客房类型更受欢迎,哪个时间段宾客入住数量更多,入住宾客的年龄段、目前收入的金额来调整经营状况。

.数据库设计

3.1 概念模型设计

                                                     

图3   概念模型设计

3.2 逻辑模型设计

数据结构名称:管理员

含义说明:主要用于记录管理员的相关信息

数据项:

          

数据结构名称:顾客信息

含义说明:主要用于记录客户的相关信息

数据项:

数据结构名称:房间入住历史记录

含义说明:主要用于记录房间的使用历史信息

数据项:

            顾客电话      varchar(50)    外键,指明客户电话

数据结构名称:房间类型

含义说明:主要用于记录房间的名称、面积等相关信息。

数据项:

数据结构名称:房间入住信息

含义说明:主要用于记录订房时间、消费者标识等信息

数据项:

             消费者标识    varchar(50)   外键,指明所属客户

            注释          varchar(50)

数据结构名称:房间信息

含义说明:主要用于记录房间的位置、描述等信息

数据项:

数据结构名称:房间状态

含义说明:主要用于记录房间的状态

数据项:

3.3 物理数据库设计

根据以上关系,得到的建表语句:

    CREATE TABLE [dbo].[ST_UsersInfo](

    [ST_UserId] [int] NOT NULL,

    [ST_Name] [varchar](50) NULL,

    [ST_Password] [varchar](50) NULL,

    [ST_Gender] [int] NULL,

    [ST_Email] [varchar](50) NULL,

    [ST_Address] [varchar](50) NULL,

    [ST_Telephone] [varchar](50) NULL,

     CONSTRAINT [PK_UsersInfo] PRIMARY KEY CLUSTERED

( [ST_UserId] ASC)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]) ON [PRIMARY];   

   

   CREATE TABLE [dbo].[ST_CustomersInfo](

    [ST_CIdentityId] [nvarchar](50) NOT NULL,

    [ST_CName] [nvarchar](50) NULL,

    [ST_CPhone] [nvarchar](50) NULL,

    [ST_CAddress] [varchar](50) NULL,

     CONSTRAINT [PK_CustomersInfo] PRIMARY KEY CLUSTERED

([ST_CIdentityId] ASC)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]) ON [PRIMARY]   

   

    CREATE TABLE [dbo].[ST_History](

    [ST_BeginTime] [datetime] NOT NULL,

    [ST_EndTime] [datetime] NULL,

    [ST_RoomId] [int] NOT NULL,

    [ST_TotalPrice] [money] NULL,

    [ST_CIdentityId] [nvarchar](50) NULL,

    [ST_CName] [nvarchar](50) NULL,

    [ST_CPhone] [nvarchar](50) NULL,

    CONSTRAINT [PK_History] PRIMARY KEY CLUSTERED

( [ST_BeginTime] ASC,[ST_RoomId] ASC)

WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]) ON [PRIMARY]   

   

    CREATE TABLE [dbo].[ST_RoomCategory](

    [ST_RCategoryId] [int] IDENTITY(1,1) NOT NULL,

    [ST_Name] [varchar](50) NULL,

    [ST_Area] [float] NULL,

    [ST_BedNum] [int] NULL,

    [ST_Price] [money] NULL,

    [ST_AirCondition] [int] NULL,

    [ST_TV] [int] NULL,

 CONSTRAINT [PK_ST_RoomCategory_1] PRIMARY KEY CLUSTERED

([ST_RCategoryId] ASC)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

) ON [PRIMARY]   

   

    CREATE TABLE [dbo].[ST_RoomOperation](

    [ST_RoomId] [int] NOT NULL,

    [ST_BeginTime] [datetime] NULL,

    [ST_CIdentityId] [nvarchar](50) NULL,

    [ST_Remarks] [nvarchar](200) NULL,

CONSTRAINT [PK_RoomOperation] PRIMARY KEY CLUSTERED ([ST_RoomId] ASC)

WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]) ON [PRIMARY]

    CREATE TABLE [dbo].[ST_RoomsInfo](

    [ST_RoomId] [int] NOT NULL,

    [ST_RCategoryId] [int] NULL,

    [ST_RPosition] [nvarchar](50) NULL,

    [ST_Description] [nvarchar](50) NULL,

     CONSTRAINT [PK_RoomsInfo] PRIMARY KEY CLUSTERED([ST_RoomId] ASC)

WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY) ON [PRIMARY]

    CREATE TABLE [dbo].[ST_RoomStatus](

    [ST_RoomId] [int] NOT NULL,

    [ST_Status] [int] NULL,

CONSTRAINT [PK_RoomStatus] PRIMARY KEY CLUSTERED ([ST_RoomId] ASC)

WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]) ON [PRIMARY]

四.功能设计

4.1 系统功能分析

4.2 系统功能模块设计

管理员登录:进行查询,修改,添加,删除管理员信息,然后可以到酒店菜单,进行酒店日常服务。

宾客登记管理:登记新宾客的信息。

客房类型管理:对客房类型进行查询、添加、删除、修改。

客房信息管理:对客房信息进行添加、删除、修改、查询。

宾客结账管理:对宾客消费、缴费进行运算,并显示余额,以便对宾客收退款。

业务经营管理:通过业务经营页面得知哪种客房类型更受欢迎,哪个时间段宾客入住数量更多,入住宾客的年龄段以及目前收入的金额来调整经营状况。

.程序代码及其它

5.1 主界面设计

     图4     主界面

                                图5 房间类型管理界面

                            图6  房间信息管理界面

                            图7  房间经营管理界面

                            图8  客户信息查询界面

                         图9 经营状况统计界面

5.2 其它界面设计与实现

                              图10 添加房间类型信息界面

                                    图11 修改房间类型信息界面

                            图12 添加客房信息界面

                                 图13 修改客房信息界面

                              图14 酒店订房管理界面

                          图15 酒店退房管理界面

六.设计心得

因为我们的系统是b/s(Browser-Server)结构的以浏览器作客户端的应用程序,所以不需要安装特殊的客户端软件,只需要一个浏览器并且电脑能够连接网络即可访问我们的系统。由于我们的系统是一个网站,所以网的特点我们都可以涵盖。唯一的缺点就是访问效率比较低。

我们在开发的过程中遇到了许许多多的问题,其中最多问题的是数据库与网站的连接问题,页面的制作比较简单,但是在数据库这一块老是出现一些连接的错误,导致网站不能正常运行,不过通过自己看书、上网查资料以及请教同学,最后还是圆满地解决了这些问题。同时感谢老师的教导,报告可能会有一些内容有些偏颇,还望老师严厉批评指正。

通过这次网站系统的开发,使我学到的知识更加的牢固了,同时也让我认识到光是纸上谈兵是不行的,只有通过实践才能知道自己在学习中存在的问题。另外也让我懂得了分工合作的重要性,只有各个成员之间相互协调,相互合作才能很好地完成这个系统,为我以后的工作积累了丰富的经验和奠定了坚实的基础。

七. 参考文献

1、殷锋,《软件工程》,天津科学技术出版社,2011.5

2、王珊、萨师煊,《数据库系统概论(第4版)》,高等教育出版社,2006.5

3、沈士根、汪承焱、许小东,《Web程序设计-ASP.NET使用网站开发》,清华大学出版社,2009.5

4、畅利红,《DIV+CSS 3.0 网页样式与布局全程揭秘》,清华大学出版社,2010.3

5、苏素芳、赵会东、王小科《C# 学习手册》,电子工业出版社,2011.5

6、何国辉教授提供的相关资料文档

7、Internet资源

八. 项目组成员分工及评分

 

第二篇:图书管理系统课程设计报告

内容提要

本文介绍了一个基于Client/Server模式的高校图书管理系统的设计与实现。运用VB结合SQL Server 2000开发的登录模块主要用于验证用户身份,进行有效的操作。从主界面模块在验证后进入每个子模块进行各个子系统的具体功能操作。在整个系统设计中充分利用了模块化的设计思想和开发方法。

第一章 问题描述

1.1 图书管理系统简介

本系统利用VB.NET处理数据库的功能,实现对图书馆信息的管理。主要功能为管理有关读者、出版社、书籍、借阅和管理者的信息等。

本系统的结构分为读者信息管理模块、出版社信息管理模块、书籍信息管理模块、借阅信息管理模块、管理者管理信息模块、报表显示模块和查询处理模块。

1.2 数据需求

根据系统的需求,首先将要记录的信息分类,要记录的信息如下。

⑴读者信息:包括证号、姓名、联系方式、已借书数目、读者类别和能否借书等。

⑵出版社信息:包括名称、地址、网址、E-mail等。

⑶书籍信息:包括书号、丛书系列、作者、责任编辑、字数、定价、出版时间、主题分类、二级分类、馆内借阅分类、总册数、库存量、出版社和书名等。

⑷借阅信息:包括借阅日期、应归还日期、实际归还日期、能否续借、书号和证号等。

⑸管理者信息:包括管理者名称、对应密码和对应权限等。

根据这些需要,本系统需要“读者信息”表,“出版社信息”表,“书籍信息”表,“借阅信息”表和“管理者信息”表。

1.3 事务需求

经过实际考察、咨询和分析,高等院校图书管理系统主要应该具有以下功能模块,如1.1图。

⑴在读者信息管理部分,要求如下。

l  可以浏览读者信息。

l  可以对读者信息进行维护,包括添加及删除等操作。

⑵在出版社信息管理部分,要求如下。

l  可以浏览出版社信息。

l  可以对出版社信息进行维护,包括添加及删除等操作。

⑶在书籍信息管理部分,要求如下。

l  可以浏览书籍信息。

l  可以对书籍信息进行维护,包括添加及删除等操作。

⑷在借阅信息管理部分,要求如下。

l  可以浏览借阅信息。

l  可以对借阅信息进行维护操作。

⑸在管理者信息管理部分,要求如下。

l  显示当前数据库中管理者情况。

l  对管理者信息维护操作。

图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 20## Server

数据库服务器:Microsoft SQL 20## Server

网络设备:

2块网卡:客户机D-Link DFE-650TX,服务器Intel PCLA8460B。

路由器:一台SOHO路由器TL-R402M

1.5 网络拓扑结构

本设计采用客户机/服务器(C/S)体系,数据的储存管理功能较为透明性,可以合理均衡事务的处理,充分保证数据的完整性和一致性。

                       图1.2  C/S模式结构

第二章 解决方案

数据库主要着重于数据对象的属性和数据对象之间的关系的分析。一般采用E-R图,即实体-关系模型来分析数据对象的属性和数据对象之间的关系。

2.1 E-R模型设计

2.1.1实体列表

2.1.2系统的E-R模型

该图书管理系统的E-R模型,如下图所示

2.2 设计数据库

2.2.1创建数据库

(1)在服务器资源管理器中的任一节点右击。

(2)执行快捷菜单中的“新建数据库”命令,并在打开的“创建数据库”对话框中输入数据库名Library,选中“使用WindowsNT集成安全性”单选按钮。

(3)单击“确定”按钮,则新建的数据库就会出现在服务器上。

2.2.2创建数据表

创建数据库后,为Library数据库添加数据表,步骤如下。

(1)在服务器资源管理器中右击数据库Library下的“表”文件夹。在弹出的快捷菜单中执行“新建表”命令,出现表设计器。

(2)添加表的字段和其他详细资料。各表数据结构如下表所示。

表2.1 图书管理系统各表数据结构

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(),由此函数进行数据加载.如果出错,显示错误信息,回滚整个事务.

具体设计代码见附录1.1。

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功能实现

显示数据,添加读者,保存更改,记录定位的实现。

具体实现代码见附1.2。

“管理者信息”,“出版社信息”,“书籍信息”,“借阅信息”和该模块的设计思路及方法步骤完全一致,在此从略。

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.1 读者信息报表效果图

2.5.2添加借阅情况报表

添加借阅情况报表的过程与添加读者信息报表过程大致相同,不同之处在于插入到报表中的数据表为“读者信息”。

2.6 综合查询的实现

在程序运行过程中,单击主窗体的“综合查询”按钮,就会弹出一个对话框。在其中设置查询条件,根据查询条件从记录集中筛选出所需记录。

为此需要在项目中添加一个窗体“综合查询”。

还需要设置“CmbBox运算符”控件的Items属性。单击窗体上“CmbBox运算符”控件,然后在“属性”对话框中单击Items栏,就会出现一个按钮,单击按钮,在打开的窗口中如图2.2所示设置字符串集合编辑器字符串。

图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.6.2窗体功能实现

具体功能实现代码见附1.7。

图2.3 综合查询数据集

第三章 系统实现

3.1开发环境

本系统使用VisualBasic.NET语言进行开发。需要Microsoft .NET Framework SDK v1.1的支持。适用内存不低于256M配备有Windows2000,Windows2003,WindowsXP系统的计算机。

3.2系统流程图

在本系统中准备通过如下窗体来实现数据维护的功能。

(1) 主窗体:管理着各个子窗体。

(2)“读者信息”子窗体:管理读者信息。

(3)“管理者信息”子窗体:管理用户信息。

(4)“出版社信息”子窗体:管理出版社信息。

(5)“书籍信息”子窗体:管理书籍信息。

(6)“借阅信息”子窗体:管理借阅信息。

(7)“报表窗体”子窗体:显示数据报表。

(8)“综合查询”子窗体:执行用户自定义的查询。

系统流程图如图3.1所示:

图3.1 系统流程图

3.3 程序调试情况

在数据连接时一定要注意窗体和相应显示控件的绑定关系。在把系统从一台计算机移植到另一台计算机时一定要把数据文件library.mdf和library_log.LDF同时移植,并对相应的提供服务的SQL Server服务器进行相应的修改,否则数据正确连接并显示。

3.4 功能显示

运行程序后首先显示主窗体,如图3.2所示。

图3.2 主界面

单击“输入/查看读者信息”,就会弹出如图3.3所示登录框。

图3.3 登录界面

在登录对话框中输入用户姓名和密码,单击“确认”按钮,就会对用户身份进行认证,如果认证通过,就会弹出如图3.4所示的读者信息管理窗体。    

图3.4 读者信息管理窗体

在“读者信息”窗体中可以对读者信息进行维护操作,例如浏览读者信息,添加记录和删除记录等。

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

图3.5 书籍信息窗体

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

图3.6 借阅信息窗体

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

图3.7 出版社信息窗体

单击“输入/查看管理者信息”,结果如图3.8所示。

图3.8 管理者信息窗体

在主窗体上单击“显示报表”,那么就可以查看反映读者信息和借阅信息的报表,借阅信息的报表如图所示。

图3.9 报表窗体

如果用户在运行的主窗体上单击“综合查询”,那么就可以查看针对不同的数据表进行查询操作。选择查询依据为“出版社信息”表查看其中的所有信息,结果如图3.10所示。

图3.10 综合查询窗体

3.5 结论

在这个系统的开发过程中,值得注意的几点有:

(1)数据报表的实现.报表是数据库应用程序的重要组成部分,通过报表,可以把数据库中内容经过组织以后生动地展示给用户,VB.NET提供的Crystal Report可以大大提高报表的设计效率。

(2)复杂查询的实现。在程序运行过程中,单击窗体中的“综合查询”按钮,就会弹出一个对话框,在该对话框中设置查询条件,根据查询条件从记录集中筛选出所需记录,所指定的查询条件包括查询的依据,排序的依据,运算符等等。

第四章 设计心得

学习完书本上的知识后,我们第17周参加了数据库课程设计。

与预想中的差不多,我们大家都很努力的搜集各方面的资料,积极的学习SQL与VB的运用,将老师在课上讲的内容充分的运用到实践中。但由于我们从未接触过VB,所以通过VB进行的大部分后台数据库我们都没办法运行,老师也体会到了我们的难处,告诉我们只要能看懂就可以,我们积极查阅资料,都获得了自己满意的可执行程序。

作为一名专科生,我要走的路比其他本科的大学生要艰难的多,所以我们心态一定要放正,知道自已在什么位置上。在以后走向工作岗位的时候先全面发展,等过段再看看自已精于哪个方面,然后向那个方向努力发展。正式走上工作岗位后,我要积极响应单位号召,结合工作实际,不断学习理论、业务知识和社会知识,用先进的理论武装头脑,用精良的业务知识提升能力,以广博的社会知识拓展视野。

最后,特别要感谢胡美燕老师在SQL2000数据库课程中认真负责的教学,才使得我能结合所学的知识完成这一课程设计。

附录:源代码清单

附1.1主窗体设计代码如下:

Public Class 主窗体

    Inherits System.Windows.Forms.Form

#Region " Windows 窗体设计器生成的代码 "

  ‘此处省略主窗体设计代码

#End Region

    Dim sender As System.Object

    Dim e As System.EventArgs

    Public Sub LoadDataSet()

        Dim objDataSetTemp As 图书馆管理.Lib管理者信息

        objDataSetTemp = New 图书馆管理.Lib管理者信息

        '临时数据集objDataSetTemp保存从FillDataSet()函数调用中返回的记录

        '如果未出错则填充到主数据集 "objLib管理者信息"中

        Try

            Me.FillDataSet(objDataSetTemp)

        Catch eFillDataSet As System.Exception

            Throw eFillDataSet

        End Try

        Try

            objLib管理者信息.Clear()

            objLib管理者信息.Merge(objDataSetTemp)

        Catch eLoadMerge As System.Exception

            Throw eLoadMerge

        End Try

    End Sub

    Public Sub FillDataSet(ByVal dataSet As 图书馆管理.Lib管理者信息)

        '实现打开连接,将OleDbDataAdapter1中的数据添加到数据集,关闭连接。

        dataSet.EnforceConstraints = False

        Try

            Me.OleDbConnection1.Open()

            Me.OleDbDataAdapter1.Fill(dataSet)

        Catch fillException As System.Exception

            Throw fillException

        Finally

            dataSet.EnforceConstraints = True

            Me.OleDbConnection1.Close()

        End Try

    End Sub

    Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label1.Click

    End Sub

    Private Sub LinkLabel_退出_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel_退出.LinkClicked

        End

    End Sub

    Private Sub LinkLabel_读者信息_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel_读者信息.LinkClicked

        btn_读者信息_Click(sender, e)

    End Sub

    Private Sub LinkLabel_书籍信息_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel_书籍信息.LinkClicked

        btn_书籍信息_Click(sender, e)

    End Sub

    Private Sub 主窗体_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub

    Private Sub LinkLabel_出版社信息_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel_出版社信息.LinkClicked

        btn_出版社信息_Click(sender, e)

    End Sub

    Private Sub LinkLabel_借阅信息_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel_借阅信息.LinkClicked

        btn_借阅信息_Click(sender, e)

    End Sub

    Private Sub LinkLabel_查询_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel_查询.LinkClicked

        btn_查询_Click(sender, e)

    End Sub

    Private Sub LinkLabel_报表_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel_报表.LinkClicked

        btn_报表_Click(sender, e)

    End Sub

    Private Sub LinkLabel_管理者信息_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel_管理者信息.LinkClicked

        btn_管理者信息_Click(sender, e)

    End Sub

    Function UserCheck(ByVal sender As System.Object, ByVal e As System.EventArgs) As Boolean

        Dim dlg_Login As Login

        dlg_Login = New Login

        If (dlg_Login.ShowDialog = DialogResult.OK) Then

            Try

                Me.LoadDataSet()

            Catch eLoad As System.Exception

                System.Windows.Forms.MessageBox.Show(eLoad.Message)

            End Try

            Dim i As Integer

            Me.BindingContext(objLib管理者信息, "管理者信息").Position = 0

            For i = 0 To Me.BindingContext(objLib管理者信息, "管理者信息").Count - 1

                If Not Me.BindingContext(objLib管理者信息, "管理者信息").Current.GetType Is GetType(DataRowView) Then

                    Exit For

                End If

                Dim drv As DataRowView = CType(Me.BindingContext(objLib管理者信息, "管理者信息").Current, DataRowView)

                If Trim(drv("用户名称")) = dlg_Login.Txt_用户姓名.Text Then

                    If Trim(drv("密码")) = dlg_Login.Txt_用户密码.Text Then

                        Return True

                    End If

                End If

                Me.BindingContext(objLib管理者信息, "管理者信息").Position += 1

            Next

        End If

        UserCheck = False

    End Function

    Private Sub btn_读者信息_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_读者信息.Click

        If UserCheck(sender, e) Then

            Dim dlg As 读者信息

            dlg = New 读者信息

            dlg.ShowDialog()

        Else

            MessageBox.Show("登录失败!", "登录", MessageBoxButtons.OK, _

            MessageBoxIcon.Stop)

        End If

    End Sub

    Private Sub btn_书籍信息_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_书籍信息.Click

        If UserCheck(sender, e) Then

            Dim dlg As 书籍信息

            dlg = New 书籍信息

            dlg.ShowDialog()

        Else

            MessageBox.Show("登录失败!", "登录", MessageBoxButtons.OK, _

            MessageBoxIcon.Stop)

        End If

    End Sub

    Private Sub btn_出版社信息_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_出版社信息.Click

        If UserCheck(sender, e) Then

            Dim dlg As 出版社信息

            dlg = New 出版社信息

            dlg.ShowDialog()

        Else

            MessageBox.Show("登录失败!", "登录", MessageBoxButtons.OK, _

            MessageBoxIcon.Stop)

        End If

    End Sub

    Private Sub btn_借阅信息_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_借阅信息.Click

        If UserCheck(sender, e) Then

            Dim dlg As 借阅信息

            dlg = New 借阅信息

            dlg.ShowDialog()

        Else

            MessageBox.Show("登录失败!", "登录", MessageBoxButtons.OK, _

            MessageBoxIcon.Stop)

        End If

End Sub

Private Sub btn_退出_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_退出.Click

        End

    End Sub

    Private Sub btn_查询_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_查询.Click

        If UserCheck(sender, e) Then

            Dim dlg As 综合查询

            dlg = New 综合查询

            dlg.ShowDialog()

        Else

            MessageBox.Show("登录失败!", "登录", MessageBoxButtons.OK, _

            MessageBoxIcon.Stop)

        End If

    End Sub

    Private Sub btn_报表_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_报表.Click

        If UserCheck(sender, e) Then

            Dim dlg As 报表窗体

            dlg = New 报表窗体

            dlg.ShowDialog()

        Else

            MessageBox.Show("登录失败!", "登录", MessageBoxButtons.OK, _

            MessageBoxIcon.Stop)

        End If

    End Sub

    Private Sub btn_管理者信息_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_管理者信息.Click

        If UserCheck(sender, e) Then

            Dim dlg As 管理者信息

            dlg = New 管理者信息

            dlg.ShowDialog()

        Else

            MessageBox.Show("登录失败!", "登录", MessageBoxButtons.OK, _

            MessageBoxIcon.Stop)

        End If

    End Sub

    Private Sub Panel2_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Panel2.Paint

    End Sub

End Class

附1.2读者信息窗体设计代码如下:

Public Class 读者信息

    Inherits System.Windows.Forms.Form

#Region " Windows 窗体设计器生成的代码 "

‘此处省略主窗体设计代码

#End Region

    Private Sub GroupBox_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GroupBox.Enter

    End Sub

    Private Sub edit证号_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles edit证号.TextChanged

    End Sub

    Private Sub OleDbDataAdapter1_RowUpdated(ByVal sender As System.Object, ByVal e As System.Data.OleDb.OleDbRowUpdatedEventArgs) Handles OleDbDataAdapter1.RowUpdated

    End Sub

    Private Sub 读者信息_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Try

            Me.LoadDataSet()

        Catch eLoad As System.Exception

            System.Windows.Forms.MessageBox.Show(eLoad.Message)

        End Try

        Me.objLib读者信息_PositionChanged()

    End Sub

    Public Sub LoadDataSet()

        Dim objDataSetTemp As 图书馆管理.Lib读者信息

        objDataSetTemp = New 图书馆管理.Lib读者信息

        '临时数据集objDataSetTemp保存从FillDataSet()函数调用中返回的记录

        '如果未出错则填充到主数据集 "objLib读者信息"中

        Try

            Me.FillDataSet(objDataSetTemp)

        Catch eFillDataSet As System.Exception

            Throw eFillDataSet

        End Try

        Try

            objLib读者信息.Clear()

            objLib读者信息.Merge(objDataSetTemp)

        Catch eLoadMerge As System.Exception

            Throw eLoadMerge

        End Try

    End Sub

    Public Sub FillDataSet(ByVal dataSet As 图书馆管理.Lib读者信息)

        '实现打开连接,将OleDbDataAdapter1中的数据添加到数据集,关闭连接。

        dataSet.EnforceConstraints = False

        Try

            Me.OleDbConnection1.Open()

            Me.OleDbDataAdapter1.Fill(dataSet)

        Catch fillException As System.Exception

            Throw fillException

        Finally

            dataSet.EnforceConstraints = True

            Me.OleDbConnection1.Close()

        End Try

    End Sub

    Private Sub objLib读者信息_PositionChanged()

        Me.lblNavLocation.Text = (((Me.BindingContext(objLib读者信息, _

"读者信息").Position + 1).ToString + "的") _

+ Me.BindingContext(objLib读者信息, "读者信息").Count.ToString)

    End Sub

    Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click

        '首先清除控件中的内容然后调用AddNew方法添加新记录如果出错显示信息

        '调用函数显示记录数和当前记录位置

        Try

            Me.BindingContext(objLib读者信息, "读者信息").EndCurrentEdit()

            Me.BindingContext(objLib读者信息, "读者信息").AddNew()

        Catch eEndEdit As System.Exception

            System.Windows.Forms.MessageBox.Show(eEndEdit.Message)

        End Try

        Me.objLib读者信息_PositionChanged()

    End Sub

    Private Sub btnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpdate.Click

        '将在窗体中对数据的更改保存到数据库中

        Try

            Me.UpdateDataSet()

        Catch eUpdate As System.Exception

            System.Windows.Forms.MessageBox.Show(eUpdate.Message)

        End Try

        Me.objLib读者信息_PositionChanged()

    End Sub

    Public Sub UpdateDataSet()

        Dim objDataSetChanges As 图书馆管理.Lib读者信息 = _

        New 图书馆管理.Lib读者信息

        '创建一个新数据集来保存对主数据集所做的更改

        Me.BindingContext(objLib读者信息, "读者信息").EndCurrentEdit()

        '停止当前的任何编辑

        objDataSetChanges = CType(objLib读者信息.GetChanges, 图书馆管理.Lib读者信息)

        If (Not (objDataSetChanges) Is Nothing) Then

            Try

                Me.UpdateDataSource(objDataSetChanges)

                '调用UpdateDataSource函数将更改合并到数据集中

                objLib读者信息.Merge(objDataSetChanges)

                objLib读者信息.AcceptChanges()

            Catch eUpdate As System.Exception

                Throw eUpdate

            End Try

        End If

    End Sub

    Public Sub UpdateDataSource(ByVal ChangedRows As 图书馆管理.Lib读者信息)

        '打开数据连接,使用OleDbDataAdapter的Update方法更新数据库

        Try

            If (Not (ChangedRows) Is Nothing) Then

                Me.OleDbConnection1.Open()

                Me.OleDbDataAdapter1.Update(ChangedRows)

            End If

        Catch updateException As System.Exception

            Throw updateException

        Finally

            Me.OleDbConnection1.Close()

        End Try

    End Sub

    Private Sub btnNavFirst_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNavFirst.Click

        Me.BindingContext(objLib读者信息, "读者信息").Position = 0

        Me.objLib读者信息_PositionChanged()

    End Sub

    Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click

        Me.BindingContext(objLib读者信息, "读者信息").CancelCurrentEdit()

        Me.objLib读者信息_PositionChanged()

    End Sub

    Private Sub btnDelete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDelete.Click

        If (Me.BindingContext(objLib读者信息, "读者信息").Count > 0) Then

            Me.BindingContext(objLib读者信息, "读者信息").RemoveAt _

            (Me.BindingContext(objLib读者信息, "读者信息").Position)

        End If

        Me.objLib读者信息_PositionChanged()

    End Sub

    Private Sub btnLast_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLast.Click

        Me.BindingContext(objLib读者信息, "读者信息").Position = _

        (Me.BindingContext(objLib读者信息, "读者信息").Count - 1)

        Me.objLib读者信息_PositionChanged()

    End Sub

    Private Sub btnNavPrev_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNavPrev.Click

        Me.BindingContext(objLib读者信息, "读者信息").Position = _

        (Me.BindingContext(objLib读者信息, "读者信息").Position - 1)

        Me.objLib读者信息_PositionChanged()

    End Sub

    Private Sub btnNavNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNavNext.Click

        Me.BindingContext(objLib读者信息, "读者信息").Position = _

        (Me.BindingContext(objLib读者信息, "读者信息").Position + 1)

        Me.objLib读者信息_PositionChanged()

    End Sub

    Private Sub btnCancelAll_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancelAll.Click

        Me.objLib读者信息.RejectChanges()

    End Sub

End Class

**鉴于“读者信息”,“管理者信息”,“出版社信息”,“书籍信息”,“借阅信息”模块除连接数据源不同外,设计思路步骤均相同,此处省略“管理者信息”,“出版社信息”,“书籍信息”,“借阅信息”四个模块的代码。

附:综合查询窗体设计代码如下:

Public Class 综合查询

    Inherits System.Windows.Forms.Form

#Region " Windows 窗体设计器生成的代码 "

‘此处省略窗体设计代码

#End Region

    Sub QueryData(ByVal SqlString As String, ByVal OrderString As String)

        QueryString = SqlString

        If OrderString <> "" Then

            QueryString = SqlString + " ORDER BY " + OrderString

        End If

    End Sub

    Public Sub LoadDataSet()

        Dim objDataSetTemp As 图书馆管理.Lib综合查询

        objDataSetTemp = New 图书馆管理.Lib综合查询

        Try

            Me.FillDataSet(objDataSetTemp)

        Catch eFillDataSet As System.Exception

            Throw eFillDataSet

        End Try

        Try

            objLib综合查询.Clear()

            objLib综合查询.Merge(objDataSetTemp)

        Catch eLoadMerge As System.Exception

            Throw eLoadMerge

        End Try

    End Sub

    Public Sub FillDataSet(ByVal dataSet As 图书馆管理.Lib综合查询)

        dataSet.EnforceConstraints = False

        Try

            If Me.OleDbConnection1.State <> ConnectionState.Closed Then

                Me.OleDbConnection1.Close()

            End If

            Me.OleDbConnection1.Open()

            Me.OleDbDataAdapter1.Fill(dataSet)

            Me.OleDbDataAdapter2.Fill(dataSet)

            Me.OleDbDataAdapter3.Fill(dataSet)

            Me.OleDbDataAdapter4.Fill(dataSet)

            Me.OleDbDataAdapter5.Fill(dataSet)

        Catch fillException As System.Exception

            Throw fillException

        Finally

            dataSet.EnforceConstraints = True

            Me.OleDbConnection1.Close()

        End Try

    End Sub

    Dim DataType(100) As String

    '该数组用来存储字段的数据类型

    Dim SqlString As String

    Dim OrderString As String

    Dim QueryString As String

    '这三个字符串变量用来存储查询语句

    'SqlString变量用来存储查询语句中除了ORDER BY子句之外的部分

    'OrderString变量用来存储ORDER BY子句

    'QueryString变量存储查询语句

    Private Sub 综合查询_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        '初始化列表“cmbBox查询表”

        Me.cmbBox查询表.Items.Add("读者信息")

        Me.cmbBox查询表.Items.Add("管理者信息")

        Me.cmbBox查询表.Items.Add("借阅信息")

        Me.cmbBox查询表.Items.Add("书籍信息")

        Me.cmbBox查询表.Items.Add("出版社信息")

        Me.cmbBox查询表.SelectedIndex = 0       '将列表的第一项设为选中项

    End Sub

    Private Sub cmbBox查询表_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbBox查询表.SelectedIndexChanged

        '在“cmbBox查询表”中选择一项作为查询表

        '则在“cmbBox查询依据”“cmbBox排序依据”将自动填充

        '查询表中的所有字段

        '保持数据表与字段二者的一致性

        Dim str_Table As String

        str_Table = Me.cmbBox查询表.SelectedItem

        If str_Table = "" Then Return

        Me.cmbBox查询依据.Items.Clear()

        Me.cmbBox排序依据.Items.Clear()

        Dim mySelectQuery As String = "SELECT * FROM " + str_Table

        Dim myCommand As New OleDb.OleDbCommand(mySelectQuery, Me.OleDbConnection1)

        If Me.OleDbConnection1.State = ConnectionState.Closed Then

            Me.OleDbConnection1.Open()

        End If

        Dim myReader As OleDb.OleDbDataReader

        myReader = myCommand.ExecuteReader

        Dim i As Integer

        For i = 0 To myReader.FieldCount - 1

            DataType(i) = myReader.GetFieldType(i).Name

            Me.cmbBox排序依据.Items.Add(myReader.GetName(i).ToString)

            Me.cmbBox查询依据.Items.Add(myReader.GetName(i).ToString)

        Next

        myReader.Close()

        Me.cmbBox查询依据.SelectedIndex = 0

        Me.cmbBox排序依据.SelectedIndex = 0

    End Sub

    Private Sub btn执行查询_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn执行查询.Click

        If DataType(Me.cmbBox查询依据.SelectedIndex) = "Int32" Then

            SqlString = "SELECT * FROM " + Me.cmbBox查询表.Text + " WHERE"

            SqlString = SqlString + Me.cmbBox查询依据.Text + " " + _

            Me.cmbBox运算符.Text + " " + "(" + Me.edit指定值.Text + ")"

        ElseIf DataType(Me.cmbBox查询依据.SelectedIndex) = "String" Then

            SqlString = "SELECT * FROM " + Me.cmbBox查询表.Text + " WHERE"

            SqlString = SqlString + Me.cmbBox查询依据.Text + " " + _

            Me.cmbBox运算符.Text + " " + "'" + Me.edit指定值.Text + "'"

        ElseIf DataType(Me.cmbBox查询依据.SelectedIndex) = "Date" Then

            SqlString = "SELECT * FROM " + Me.cmbBox查询表.Text + " WHERE"

            SqlString = SqlString + Me.cmbBox查询依据.Text + " " + _

            Me.cmbBox运算符.Text + "Cdate(" + Me.edit指定值.Text + ")"

        End If

        OrderString = Me.cmbBox排序依据.Text

        QueryData(SqlString, OrderString)

        If Me.cmbBox查询表.Text = "读者信息" Then

            Me.OleDbInsertCommand2.CommandText = QueryString

        End If

        If Me.cmbBox查询表.Text = "管理者信息" Then

            Me.OleDbInsertCommand3.CommandText = QueryString

        End If

        If Me.cmbBox查询表.Text = "借阅信息" Then

            Me.OleDbInsertCommand4.CommandText = QueryString

        End If

        If Me.cmbBox查询表.Text = "书籍信息" Then

            Me.OleDbInsertCommand5.CommandText = QueryString

        End If

        If Me.cmbBox查询表.Text = "出版社信息" Then

            Me.OleDbInsertCommand1.CommandText = QueryString

        End If

        Try

            Me.LoadDataSet()              '尝试加载数据集

            Me.DataGrid1.DataMember = Me.cmbBox查询表.Text

        Catch eLoad As System.Exception

            System.Windows.Forms.MessageBox.Show(eLoad.Message)

        End Try

    End Sub

End Class

相关推荐