ASP.NET网上图书预约系统的设计

摘  要

《网上图书预约系统的设计》是以为读者提供便利为前提而开发的一个信息管理系统,它不仅要求建立数据的一致性和完整性,而且还需要应用程序功能的完备、易用等特点。系统主要采用VB.NET作为前端的应用开发工具,利用SQL Server2000数据库作为后台的数据库,利用WINDOWS XP作为系统平台,采用VB.NET的ADO.NET数据访问规范来访问和操作数据库进行开发的供用户管理和操作图书的桌面数据库系统。它的主要功能是实现用户在网上进行图书的预约以及管理员对图书和用户的管理。系统的使用对象可以是高校或者其他单位的图书馆的读者和管理人员。

本文主要讲述了VB.NET的基本概述及设计方法,紧接着以此系统为例,逐一介绍系统的设计开发,系统分为六个模块:用户身份验证模块、用户个人信息管理模块、图书查询预约模块、信息发布模块、图书管理模块、系统管理模块。在系统分析中先后用系统的功能结构图、数据库的E-R图、数据库表分析了系统所需的各种数据。在系统的设计中,详细的展现了系统的各个功能模块及核心代码。

关键词图书;预约;VB.NET;数据库

3.1  功能设计

通过对用户需求调研及分析,确定系统应具备的功能,包括:安全管理,用户个人信息管理,图书查询及预约,信息发布,图书信息管理,用户信息管理,用户角色权限管理。其具体功能设计如下:

1、安全管理

提供用户登录、注销以及修改密码等功能。

2、用户个人信息管理

每个用户可以对自己的信息进行查看以及修改密码等操作,还可以查看和删除自己的预约信息。

3、图书查询及预约

根据一定的条件对图书进行查询,并可以查看图书的详细信息。用户登录后可以对查询到的图书进行预约操作。

4、信息发布

用户可以查看当前最新图书信息以及当前预约信息和历史预约信息。

5、图书信息管理

图书管理员可以对图书进行添加、更新及删除操作。在图书管理员录入图书信息时,需要输入图书名称、图书作者、出版社及价格等信息,同时还需要选择图书状态。对于已存在的图书信息同样可以对其进行修改和删除操作。

6、用户信息管理

系统管理员可以添加新用户,并对用户的信息进行修改更新操作。在用户编辑修改页面,可以更改用户类别和用户状态等,但不可以对用户的ID进行修改。

7、系统角色权限管理

系统管理员可以添加、修改和删除某一角色。对应于某一种角色,有类别名称、是否允许预约、是否允许管理图书信息、是否允许管理系统等参数。

3.2  系统功能结构图

图2 系统功能结构图

4.3   用户个人信息模块

4.3.1  功能描述

在用户个人信息管理模块里主要包括了用户信息页面和个人预约信息页面。用户信息页面包括用户的用户名、姓名、性别、E-Mail、单位、电话、当前状态、是否为图书管理员或系统管理员等信息;个人预约信息页面做成加载控件的形式,通过传递参数在ListContent.aspx页面动态加载控件。

4.3.2  个人预约信息控件BookingList.ascx的设计

个人预约信息控件中,Page_Load()函数在首次加载页面时绑定DataGrid,通过加载控件后显示图书的相关信息及预约时间、到书时间、是否到书的通知、预约状态等信息,并且根据参数不同进行相应的删除预约信息等操作。其主要后台处理代码如下:

Private Sub Page_Load (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        If Not IsPostBack Then

            BindDBGrid ()

        End If

End Sub

Private Sub BindDBGrid ()

Dim sqlstr As String = String.Empty

sqlstr += "select b.BookID, b.BookName, b.BookAuthor,"

sqlstr += " b.ISBN, b.SearchNO, a.BookingDate, returnDate = case b.isBorrow"

sqlstr += " when 0 then b.UploadDate"

sqlstr += " when 1 then dbo.f_GetReturnDate (a.BookID) end ,"

sqlstr += " stateMsg = case a.State when 1 then '有效' when 2 then '已过期' end,"

sqlstr += " isReturned = dbo.f_GetIsReturned (a.BookID, getDate ())"

sqlstr += " from BookingInfo a inner join BookInfo b"

sqlstr += " on a.BookID = b.BookID where a.State <> 0 and a.UserID = '" + Session ("UserID").ToString () + "'"

Dim obj As DBController = New DBController

obj.BindDBGrd (sqlstr, BookingGrid)

End Sub

4.3.3  个人预约信息的主界面图

图8 个人预约信息界面

​​​​​​​4.4   图书查询预约模块的设计

4.4.1  功能描述

图书查询模块主要包含了简单查询页面(SimpleSearch.aspx)、普通查询页面(NormalSearch.aspx)和高级查询页面(AdvSearch.aspx)。特别要注意的是,用户预约成功的书在登录后不能查询出来。

4.4.2  预约流程图

图9 预约流程图

4.4.3  简单查询页面SimpleSearch.aspx的设计

在Page_Load()函数中,首先判断用户是否允许预约,如果不允许预约操作,则隐藏预约按钮。

MisBtn_Click()函数处理“模糊查询”按钮的单击事件,获取查询条件,组成查询的SQL语句,然后进行数据绑定,其主要处理代码如下:

Private Sub MisBtn_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MisBtn.Click

     QuerySql ()

     If txtContent.Text.ToString.Trim <> "" Then

         Dim str As String = txtContent.Text.ToString.Trim

         sqlstr += " where a.BookAuthor like '%" + str + "%' or a.Subject like '%" + str + "%' or a.BookName like '%" + str + "%'"

     End If

     Session ("sqlstr") = sqlstr

     BindGrid ()

End Sub

BookingBtn_Click()函数处理“预约”按钮单击事件,其处理函数首先获取所有被选中的图书ID,然后组成SQL语句插入到预约信息表中。如果用户预约成功后,则弹出“预约成功”的提示框。其主要处理代码如下:

Private Sub BookingBtn_Click (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BookingBtn.Click

Dim i As Integer

Dim userID As String = Session ("UserID")

Dim str As String = ""

Dim myCheckBox As CheckBox

For i = 0 To ResultGrid.Items.Count - 1

myCheckBox = CType (ResultGrid.Items (i).FindControl ("ChckBox"), CheckBox)

If myCheckBox.Checked = True Then

         str += "if(not exists(select 1 from BookingInfo where bookid=" + ResultGrid.Items(i).Cells(6).Text + " and userid='" + userID + "')) insert into BookingInfo (UserID,BookID,BookingDate,BookingState) values('" + userID + "'," + ResultGrid.Items(i).Cells(6).Text + ",getdate(),0)"

End If

Next

Dim obj As DBController = New DBController

obj.ExecNonSql (str)

Response.Write("<script>javascript:alert('预约成功!!!');</script>")

End Sub

4.4.4  普通查询页面和高级查询页面的设计

这两个页面与简单查询页面的设计只是其查询的条件有所不同。

4.4.5  简单查询页面的主界面图

图10 简单查询界面

​​​​​​​4.5  信息发布模块的设计

4.5.1  功能描述

信息发布模块包括查看最近上架的图书信息页面(NewBook.aspx)、当前预约信息控件(BookingIn.ascx)和历史预约信息控件(HisBooking.ascx)通过MsgContainer.aspx页面加载。

4.5.2  新书查询页面NewBook.aspx的设计

在该页面中,只需添加一个下拉框,让用户在下拉框中选择时间,提供查询按钮,在Datagram中显示出来,对DataGrid进行数据绑定函数以提供调用,在此DataGrid中实现分页、排序、查看图书信息等功能。SearchBtn_Click()函数处理“查询”按钮单击事件,获取查询条件,其中需要对时间进行特别的处理。

4.5.4  控件加载页面MsgContainer.aspx的设计

控件加载页面中通过table的单元格来控制控件的加载,在<TD>中加runat="server",并为其添加ID。在Page_Load()函数中通过识别type传递参数来加载不同控件,1表示加载当前预约信息控件,2表示加载历史预约信息控件。

当前预约信息控件(BookingIn.ascx)主要用来显示用户的有效预约信息。通过对DataGrid进行数据绑定,显示有效预约状态的用户的用户名、姓名及单位,有效预约的图书的书名、著者、预约时间及到书时间和当前预约状态。其主要处理代码如下:

Private Sub Page_Load (ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        If Not IsPostBack Then

        Dim sqlstr As String = String.Empty

        sqlstr += "update BookingInfo set State = 2 where State = 1 and dateadd (day, 2, dbo.f_GetBookingDate (BookID, BookingDate)) < getDate ()”

        sqlstr += "select a.UserID, a.UserName, a.Unit, b.BookingDate,"

        sqlstr += "c.BookName, c.BookAuthor, returnDate = case c.isBorrow "

        sqlstr += "when 0 then c.UploadDate "

        sqlstr += "when 1 then dbo.f_GetReturnDate (c.BookID) end,"

sqlstr += "State = case b.State when 0 then '失效' when 1 then '有效' when 2 then '已过期' end "

        sqlstr += "from UserInfo a inner join BookingInfo b on a.UserID=b.UserID inner join BookInfo c "

        sqlstr += "on b.BookID = c.BookID where b.State <> 0 order by b.State desc "

        Dim obj As DBController = New DBController

        obj.BindDBGrd (sqlstr, BookingGrid)

        End If

End Sub

历史预约信息控件(HisBooking.ascx)主要用来显示用户的失效和过期预约信息。通过对DataGrid进行数据绑定,显示失效和过期预约状态的用户的用户名、姓名及单位、历史预约的图书的书名、著者及预约时间和当前预约状态。用户在规定时间内去借阅已经预约成功的图书后,其预约状态将修改为“失效”;反之,如果用户没有在规定时间内去借阅已经预约成功的图书,则他的预约状态将修改为“过期”。

4.5.5  当前预约信息的主界面图

图11 当前预约信息界面

4.5.6  历史预约信息的主界面图

图12 历史预约信息界面

​​​​​​​4.6   图书管理模块的设计

4.6.1  功能描述

图书管理模块主要实现对图书信息的管理,包括了图书添加页面(AddBook.aspx)和图书编辑页面(EditBook.aspx)。 添加图书页面主要是在AddBtn_Click()函数处理用户单击“添加”按钮事件,将用户输入的图书信息组成SQL语句,然后插入数据库中;图书编辑页面将该页面左侧的ListBox控件跟数据库进行绑定,用以显示所有图书列表,当用户单击某一图书后,自动将图书信息填充到右边的图书信息明细中,用户可对其进行更新和删除操作。在该模块中,图书管理员还能够根据用户名和图书条码号对图书进行借、还操作,对于某用户预约成功的图书进行借阅后,该用户的预约状态将修改为“失效”。

4.6.2  图书编辑页面的主界面图

图13 图书编辑界面

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/596605.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

初识指针(2)<C语言>

前言 前文介绍完了一些指针基本概念&#xff0c;下面介绍一下&#xff0c;const关键字、指针的运算、野指针的成因以及避免&#xff0c;assert函数等。 目录 const&#xff08;常属性&#xff09; 变量的常属性 指针的常属性 指针的运算 ①指针 -整数 ②指针-指针 ③指针与…

设计网页用什么软件

在设计网页时&#xff0c;可以使用多种软件来完成不同的任务。以下是一些常用的网页设计软件&#xff0c;以及它们的特点和用途。 1. Adobe Photoshop&#xff1a; Adobe Photoshop 是一款功能强大的图像编辑软件。在网页设计中&#xff0c;它常用于创建和编辑网页所需的图像、…

Linux—-vim基础使用

1、基本概念 Vim的工作模式有四种&#xff0c;普通模式&#xff0c;输入模式&#xff0c;命令模式&#xff0c;可视模式。 在终端中打开vim&#xff0c;只需要输入vim 文件&#xff0c;在普通模式下按i就会进入到输入模式&#xff0c;按下:进入命令模式&#xff0c;输入:q就可…

通义灵码:智能编码的革命性助手

通义灵码是由阿里云推出的一款基于通义大模型的智能编码辅助工具&#xff0c;它通过先进的人工智能技术&#xff0c;为开发者提供了一系列的智能编码功能&#xff0c;极大地提升了编码效率和质量。以下是通义灵码的一些核心功能和应用案例。 核心功能 代码智能生成 通义灵码…

视频降噪算法 Meshflow 介绍

介绍 Meshflow 视频降噪算法来自于 2017 年电子科技大学一篇高质量论文。 该论文提出了一个新的运动模型MeshFlow&#xff0c;它是一个空间平滑的稀疏运动场 (spatially smooth sparse motion field)&#xff0c;其运动矢量 (motion vectors) 仅在网格顶点 (mesh vertexes) 处…

Spring+SpringMVC+Jsp实现校园二手交易系统

前言介绍 在社会快速发展的影响下&#xff0c;使校园二手交易系统的管理和运营比过去十年更加理性化。依照这一现实为基础&#xff0c;设计一个快捷而又方便的网上校园二手交易系统是一项十分重要并且有价值的事情。对于传统的管理控制模型来说&#xff0c;网上校园二手交易系…

【AI】深度学习框架的期望与现实 机器学习编译尚未兑现其早期的一些承诺……

深度学习框架的期望与现实 机器学习编译尚未兑现其早期的一些承诺…… 来自&#xff1a;Axelera AI 资深软件工程师 Matthew Barrett 原帖是linkedin帖子&#xff1a; https://linkedin.com/posts/matthew-barrett-a49929177_i-think-its-fair-to-say-that-ml-compilation-ac…

【LeetCode刷题】739. 每日温度(单调栈)

1. 题目链接2. 题目描述3. 解题方法4. 代码 1. 题目链接 739. 每日温度 2. 题目描述 3. 解题方法 用一个栈st保存每个数的下标&#xff0c;同时创建一个数组res保存结果&#xff0c;初始值都为0。循环遍历题目中的数组temperature。如果temperature[i] > st.top()&#x…

【arduino】库的安装方法

arduino 库的安装方法 假设你已经安装好 Arduino IDE 以 OneButton 为例来介绍几种安装方法 文章目录 arduino 库的安装方法方法一&#xff1a;直接安装法方法二&#xff1a;导入 .ZIP库方法三&#xff1a;将库文件夹直接复制到贡献库路径下方法四&#xff1a;将库文件夹直接…

什么是容器微隔离 - 容器微隔离技术有哪些

如果您对容器安全有任何问题可以联系安全狗对您的容器进行安全防护。 容器微隔离是一种在容器化环境中实现安全隔离的技术。随着云计算和容器化技术的广泛应用&#xff0c;容器已成为企业IT架构中的重要组成部分。然而&#xff0c;随着容器数量的增加&#xff0c;容器之间的交…

《第一行代码》第二版学习笔记(8)——网络技术

文章目录 一、Http1、HttpURLConnection2、OKHttp 二、解析JSON格式数据1、使用JSONObject2、使用GSON解析JSON数据 一、Http 1、HttpURLConnection public void run() {HttpURLConnection connection null;BufferedReader reader null;try {URL url new URL("http://…

强化学习玩flappy_bird

强化学习玩flappy_bird&#xff08;代码解析&#xff09; 游戏地址&#xff1a;https://flappybird.io/ 该游戏的规则是&#xff1a; 点击屏幕则小鸟立即获得向上速度。 不点击屏幕则小鸟受重力加速度影响逐渐掉落。 小鸟碰到地面会死亡&#xff0c;碰到水管会死亡。&#…

【iOS】NSOperation、NSOperationQueue

文章目录 前言一、NSOperation、NSOperationQueue 简介二、NSOperation、NSOperationQueue 操作和操作队列三、NSOperation四、NSOperationQueue五、NSOperationQueue 控制串行执行、并发执行六、 NSOperation 操作依赖七、NSOperation 优先级八、NSOperation、NSOperationQueu…

安卓应用开发(一):工具与环境

开发工具 Android Studio&#xff0c;用于开发 Android 应用的官方集成开发环境 (IDE)。包括以下功能&#xff1a; 基于Gradle的构建系统 gradle是一个项目构建工具&#xff0c;将源工程打包构建为apk 安卓模拟器统一环境代码编辑模拟器实时更新Github集成Lint功能&#xff0…

2023年乡镇街道边界数据、行政村边界、省市县区划边界、建筑轮廓边界数据、流域边界数据、降雨量分布、气温分布、道路网分布

数据范围&#xff1a;全国行政区划-行政乡镇街道边界 数据类型&#xff1a;面状数据&#xff0c;全国各省市县【乡镇-边界】乡村界、乡村范围 数据属性&#xff1a;标准12位行政区划编码、乡镇名称、所属地区 分辨率&#xff1a;1:2万--1:5万 数据格式&#xff1a;SHP数据&…

一、Vagrant搭建相关环境

目录 一、创建Vagrant相关环境1.下载安装VirtualBox2.在BlOS中设置CPU虚拟化3.使用Vagrant新建linux虚拟机3.1下载Vagrant3.2Vagrant官方镜像仓库3.3使用Vagrant初始化一个centos7的虚拟机 4.设置固定ip地址 二、安装docker1.按照docker 三、docker安装一些中间件1.mysql安装2.…

C++例题:大数运算---字符串相加(使用数字字符串来模拟竖式计算)

1.代码速览 class Solution2 { public:string addStrings(string num1, string num2){//end1和end1是下标int end1 num1.size() - 1;int end2 num2.size() - 1;string str;//下标(指针)从后向前走,走到头才可以结束,所以是end>0int next 0;while (end1 > 0 || end2 &…

C#连接S7-200 smart通讯测试

honeytree 一、编程环境 VS2022软件&#xff0c;选择windows窗体应用&#xff08;.NET FrameWork&#xff09;&#xff1a;​博途TIA/WINCC社区VX群 ​博途TIA/WINCC社区VX群 添加NuGet程序包&#xff1b;S7netplus 二、引用http://S7.net 三、建立PLC链接 S7-200smart和…

嵌入式5-6QT

1> 思维导图 2> 自由发挥应用场景&#xff0c;实现登录界面。 要求&#xff1a;尽量每行代码都有注释。 #include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {//设置标题this->setWindowTitle("MYQQ");//设置图标this…

03_Redis

文章目录 Redis介绍安装及使用redis的核心配置数据结构常用命令stringlistsethashzset(sortedset) 内存淘汰策略Redis的Java客户端JedisRedisson Redis 介绍 Redis是一个NoSQL数据库。 NoSQL: not only SQL。表示非关系型数据库&#xff08;不支持SQL标准语法&#xff09;。 …
最新文章