基于C#和Sql Server 2008实现的图书信息管理系统

Pullarla

发布日期: 2021-02-17 15:12:16 浏览量: 120
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

一、概述

1.1 读者

图书管理系统的开发人员和管理员。

1.2 专有名词

使用到的专业术语 解释
UI层 调用BLL层和实体类实现所需要的功能
BLL层 业务逻辑层,用于连接UI层和DAL层
DAL层 层存放访问数据库类的DLL工程
实体类 从数据库中的表,创建相应的类

二、总体设计

2.1 需求总体描述

总体用例图如下:

实现系统注册用户,管理用户的登录验证功能(使用的是创建用户,分配角色的方式进行权限管理)

2.2 用例描述

登陆

用例名称 登录
活动者 管理员、读者
前件条件
成功条件 输入正确账号及密码
主路径 在登陆界面输入正确的账号与密码
可选路径 再次重新输入账号
级别 用户管理子功能

权限管理

用例名称 权限系统分配
活动者
前件条件
成功条件 登陆超级用户sa
主路径 在注册时按照设计好的权限分配不同角色
可选路径
级别 用户管理子功能

2.3 概要设计总览

采用n-tire分层架构。

2.4 开发环境

  • 数据库系统:Microsoft SQL Server 2008 R2

  • 开发工具:Microsoft Visual Studio 2015

  • 软硬件环境:Windows 8.1

三、类详细设计

3.1 类汇总

  • main类:封装了根据不同条件查询图书以及读者的功能,对图书的增加、删除和编辑功能,对读者的增加、删除和编辑功能,借书和还书的功能,查看所有逾期未还书籍的功能

  • login类:封装了用户的登录功能

  • register类:封装了用户的注册功能

  • ReaderEdit类:封装了对读者的修改和添加功能

  • BookEdit类:封装了对图书的修改和添加功能

  • DbHelperSQL类:封装了公共函数如数据库查询和数据库语句执行等

  • PubConstant类:中封装了公共变量如当前登录用户以及当前数据库连接等

3.2 程序模块详细设计

3.2.1 用户登录/注册模块

登录

注册

功能

完成用户登录、注册功能

输入输出项

  • 输入:用户ID及密码,以及选定作为何种身份注册,登录则不需要选定身份(因为账户已经和对应的身份绑定了)

重点算法

  • 注册的时候调用sql server的创建服务器登录名、数据库用户和分配相应的服务器角色以及数据库角色的存储过程,逻辑上实现管理员、读者的功能,并分配相应权限,因此只要注册用户分配角色即可

  • 在登录后把登录信息(账户、密码、数据库连接)保留作为公共变量对于之后的程序要用到

3.2.2 读者信息管理模块

功能

完成读者信息的查询,新增,修改功能

输入输出项

  • 输入:各种查询条件,编辑的信息

  • 输出:sql语句执行结果

重点算法

  • 这里重要的是逻辑——一个读者用户注册之后并不能借书,因为他并没有被管理员认证,即是说我们读者表中每一条记录都要对应到一个user,这样才不会乱,也因此在readers表设计中加入这一个unique约束,就是为的和reader用户一一对应

  • 查询等语句封装在dbhelperSQL这个类中,同时也使用pubconstant类,后面保证连接字符串不会重复访问

  • 用户的新增是要保证必须有该用户,并且一一对应。删除保证级联删除

  • 出于对主键的约束,编辑不可更改borrowid

3.2.3 图书信息管理模块

功能

完成图书信息的查询,新增,修改功能

输入输出项

  • 输入:各种查询条件,编辑的信息

  • 输出:sql语句执行结果

重点算法:

  • 图书本身不存在和user的级联,因此方便容易很多,只要保证逻辑正确即可

  • 是否可借本身是可以修改的——即使还有一定数量

  • 主要是和rb的关联,图书删除了的话,借书记录也要一并删除

  • 出于对主键的约束,编辑不可修改isbn

3.2.4 图书借书还书模块

功能

完成图书的借阅归还。

输入输出项

  • 输入:各种查询条件

  • 输出:sql语句执行结果,借书还书操作结果

重点算法

  • 借书注意点:书是否可借,书存量大于零,人本身是可以借书(无欠款),人是否还有借书数量

  • 还书,关联rb的借书记录删除

  • 借书时向rb插入记录,同样道理借过的书,没有归还,就不允许该用户再借同一本书

  • 还书时从rb中删除一条记录

  • 借书和还书过程都通过在数据库中创建触发器来保证过程的完整性和正确性

  • 借书还书操作有可能修改图书的借书状态(数量涉及到0,就要修改)

3.2.5 逾期未还图书查询模块

功能

查询逾期未还的记录。

输入输出项

  • 输入:无

  • 输出:sql语句执行结果,未还操作结果

重点算法

  • 通过getdate得到当前日期,跟应当归还日期相比较,大于该日期就输出出来即可,显然这一操作在数据库完成非常简便,写成存储过程

  • 罚款事先定好,计算读者的罚款也从这个表里面找出读者的所有逾期记录相加并输出即可

四、用户操作

首先数据库附加,如失败,修改两个文件的权限即可

添加完成后,在服务器-安全性-登录名的sa用户,修改密码为123456

启动工程文件DataBase Project.exe

之前的用户都不用去管,注册新的用户即可(如a7、a8、r7、r8),密码随意设置(建议为1),并且对应选择管理员或者读者。这里与r5和a5为例操作

4.1 管理员各项操作

查询读者信息

注册,指定用户(r5)

如果再次插入,不论是主键约束还是unique约束都是有效的

编辑也是一个道理,删除的时候则是会级联删除

删除了r6的读者,我们测试r6是否还能登录

对于图书的操作,管理员这边,其实和对读者信息操作更容易,仅展示结果

新增

删除

编辑

逾期图书查询

4.2 读者各项操作

这里比较关键的是借书还书操作,我们就用刚刚创建的r5来展示罚款等功能

读者对于读者不具有任何权限,因此不会有操作的按钮,符合逻辑

我们让他借5555这本书

成功后,触发器生效了

接着,我们让他还书,还5555

此时5555又可借了,还一本没借过的书(任意书)

接下来我们来演示欠款操作,因为用getdate操作,所以我们这次手工为r5插入一条已经超限的记录进入rb表

此时的逾期记录

那么此时我们去操作r5再去借书

罚款的还款操作

此时再查询逾期记录,就被删除了

上传的附件 cloud_download 基于C#和Sql Server 2008实现的图书信息管理系统.7z ( 2.18mb, 2次下载 )
error_outline 下载需要14点积分

发送私信

你在背后说我,因为我走在你前面

15
文章数
8
评论数
最近文章
eject