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.mzph.cn/web/7197.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

7-35 有理数均值

题目链接&#xff1a;7-35 有理数均值 一. 题目 1. 题目 2. 输入输出样例 3. 限制 二、代码 1. 代码实现 #include <iostream> using namespace std;// 计算公约数 int calGcd(int a, int b) {int gcd;bool negative false;if (a a / b * b) { // b整除areturn b;}…

Llama3-Tutorial之Llama3本地Web Demo部署

Llama3-Tutorial之Llama3本地 Web Demo部署 Llama3-Tutorial之Llama3本地Web Demo部署章节。 参考&#xff1a; https://github.com/SmartFlowAI/Llama3-Tutorial 1. 环境配置 conda create -n llama3 python3.10conda activate llama3conda install pytorch2.1.2 torchvision0…

【RAG 论文】SKR:Self-Knowledge 指导下的 RAG

论文&#xff1a;Self-Knowledge Guided Retrieval Augmentation for Large Language Models ⭐⭐⭐⭐ Tsinghua, arXiv:2310.05002 文章目录 一、论文速读二、实现细节2.1 数据的收集2.2 引出 LLM 的 Self-Knowledge 的方法1&#xff09;Direct Prompting2&#xff09;In-Cont…

【微服务 开发】微服务介绍,服务拆分,远程调用

微服务 微服务SpringCloud 拆分如何拆分 远程调用 微服务 微服务是一种软件架构风格&#xff0c;它是以专注于单一职责的很多小型项目为基础&#xff0c;组合成复杂的大型应用 单体架构 将业务的所有功能集中在一个项目中进行开发&#xff0c;打成一个包部署 微服务的特征&…

stm32f103zet6_DAC_1_介绍

STM32微控制器系列的DAC&#xff08;数字到模拟转换器&#xff09;功能是其片上外设之一&#xff0c;用于将数字信号转换为模拟信号。DAC在许多应用中都非常有用&#xff0c;例如音频输出、模拟信号生成、闭环控制系统中作为模拟输出等。 STM32微控制器的DAC功能特点包括&…

2024-3-23 青少年软件编程(C语言)等考(三级)解析

2024-3-23 青少年软件编程(C语言)等级考试试卷(三级)解析1、我家的门牌号 我家住在一条短胡同里,这条胡同的门牌号从1开始顺序编号。 若所有的门牌号之和减去我家门牌号的两倍,恰好等于n,求我家的门牌号及总共有多少家。 数据保证有唯一解。 时间限制:1000 内存限制:6…

概率论 科普

符号优先级 概率公式中一共有三种符号&#xff1a;分号 ; 、逗号 , 、竖线 | 。 ; 分号代表前后是两类东西&#xff0c;以概率P(x;θ)为例&#xff0c;分号前面是x样本&#xff0c;分号后边是模型参数。分号前的 表示的是这个式子用来预测分布的随机变量x&#xff0c;分号后的…

(论文阅读-优化器)Orca: A Modular Query Optimizer Architecture for Big Data

目录 摘要 一、简介 二、背景知识 2.1 大规模并行处理 2.2 SQL on Hadoop 三、Orca架构 四、查询优化 4.1 优化工作流 4.2 并行查询优化 五、Metadata Exchange 六、可行性 6.1 Minimal Repros 6.2 优化器准确性测试 七、实验 八、相关工作 8.1 查询优化基础 8…

自动驾驶融合定位:IMU内参模型及标定

自动驾驶融合定位&#xff1a;IMU内参模型及标定 一、 概述 标定的本质是参数辨识。首先明确哪些参数可辨识&#xff0c;其次弄清怎样辨识。 参数包括陀螺仪和加速度计各自的零偏、标度因数、安装误差。 辨识就比较丰富了&#xff0c;如果让各位先不局限于标定任务&#xf…

CasaOS玩客云安装memos开源云笔记并实现随时随地远程记笔记

文章目录 前言1. 使用Docker部署memos2. 注册账号与简单操作演示3. 安装cpolar内网穿透4. 创建公网地址5. 创建固定公网地址 前言 本文主要介绍如何在CasaOS玩客云&#xff0c;使用Docker本地部署21.6K stars的热门开源云笔记服务memos&#xff0c;并结合cpolar内网穿透工具打…

libevent的使用

文章目录 libevent封装的框架思想常用函数分析使用fifo的读写未决和非未决bufferevent特性bufferevent函数客户端和服务器连接和监听libevent实现socket通信 libevent封装的框架思想 libevent框架&#xff1a;1. 创建 event_base (乐高底座)2. 创建 事件evnet 3. 将事件 添加…

c++ 线程概述

C中的线程是并发编程的重要组成部分&#xff0c;它允许程序同时执行多个任务。以下是对C线程的概述&#xff1a; 基本概念&#xff1a; 并发&#xff1a;意味着两个或多个任务同时执行。在单核CPU上&#xff0c;由于只有一个CPU&#xff0c;某一时刻只能执行一个任务&#xff0…

MATLAB 变换

MATLAB 变换&#xff08;Transforms&#xff09; MATLAB提供了用于处理诸如Laplace和Fourier变换之类的变换的命令。转换在科学和工程中用作简化分析和从另一个角度查看数据的工具。 例如&#xff0c;傅立叶变换允许我们将表示为时间函数的信号转换为频率函数。拉普拉斯变换使…

为什么运行vue项目有的是npm run serve 有的是npm run dev

在 Vue.js 项目中&#xff0c;使用 npm run 命令来运行开发服务器是一个常见的做法。然而&#xff0c;具体使用 npm run serve 还是 npm run dev&#xff0c;这取决于项目的配置和所使用的构建工具。 Vue CLI 创建的项目&#xff1a; 如果你使用 Vue CLI 创建一个新项目&#x…

软件测试面试问题汇总

一般软件测试的面试分为三轮&#xff1a;笔试&#xff0c;HR面试&#xff0c;技术面试。 前两轮&#xff0c;根据不同企业&#xff0c;或有或无&#xff0c;但最后一个技术面试是企业了解你“行不行”的关键环节&#xff0c;每个企业都会有的。 在平时的学习、工作中一定要善于…

使用tkinter开发的一款可扫描并删除本地文件敏感词的Windows软件

大致功能&#xff1a;可指定扫描Windows上的某个目录的所有文件&#xff0c;单个文件扫描&#xff0c;目前适配支持的文件后缀有&#xff1a;"pdf"、"txt、"doc"、"docx"&#xff0c;软件是开源的&#xff0c;大家可以在此基础上扩展更多类…

servlet-request(请求)-请求转发

request请求 request 请求index.jsplogin.jspsuccess.jspLoginServletSuccessServlet响应写入用户名和密码测试请求转发success.jsp页面测试请求转发SuccessServlet 页面测试重定向SuccessServlet 页面测试 request 请求 作用&#xff1a;获取浏览器发送过来的数据 组成部分&a…

【数据结构初阶】希尔排序

鼠鼠最近学习了希尔排序&#xff0c;做个笔记&#xff01; 希尔排序也是插入排序的一种捏&#xff01;本篇博客也是用排升序来举例捏&#xff01; 希尔排序是基于直接插入排序的&#xff0c;是由大佬D.L.Shell提出的。 目录 1.希尔排序 1.1.预排序 1.2.直接插入排序 2.希…

自动化运维工具---Ansible

一 Puppet Puppet是历史悠久的运维工具之一。它是一种基础架构即代码(laC)工具&#xff0c;使用户可以定义其基础 架构所需的状态&#xff0c;并使系统自动化以实现相同状态。 Puppet可监视用户的所有系统&#xff0c;并防止任何偏离已定义状态的情况。从简单的工作流程自动…

2023年广东省大学生程序设计竞赛题解

比赛链接&#xff1a;The 2023 Guangdong Provincial Collegiate Programming Contest 文章目录 A. Programming Contest&#xff08;签到&#xff09;B. Base Station Construction&#xff08;单调队列优化dp&#xff09;C. Trading&#xff08;排序&#xff09;D. New House…