设计实现一个图书管理系统_用C#实现一个简单的图书管理系统

本文介绍了使用C#设计和实现的一个简单图书管理系统,包括创建SQL Server数据库、定义读者、图书、借阅和用户表,以及借书和还书的存储过程和触发器。系统还涉及登录窗体、主界面、借书、还书、读者信息和图书信息管理窗体的交互设计。
摘要由CSDN通过智能技术生成

15eca5a653420f2f56283fa2e6a1f5e2.png

用C#做了一个简单的图书管理系统.

一 数据准备

(1)创建数据库
利用SQL Sever2008创建一个MBOOK的数据库(2)创建了四张基础表:TReader(读者信息表),TBook(图书信息表),TLend(借阅表),TUser(用户数据表)

5a40a68045c09fd6786c5199f736816a.png

6c030c442c35ec55b78da333abafd9ba.png

4d5323383e5b367fbea024827120c95c.png

d9161d18a05553ea1bdbde2c40f1b03d.png

(3)借书的存储过程
CREATE PROCEDURE Book_Borrow @in_ReaderID char(8), @in_ISBN char(18), @in_BookID char(10),
@out_str char(30) OUTPUT
AS
BEGIN
IF NOT EXISTS(SELECT * FROM TReader WHERE ReaderID=@in_ReaderID)
BEGIN
SET @out_str= ‘该读者不存在’
RETURN 0
END
IF NOT EXISTS(SELECT * FROM TBook WHERE ISBN=@in_ISBN)
BEGIN
SET @out_str= ‘该图书不存在’
RETURN 0
END
IF (SELECT Num FROM TReader WHERE ReaderID=@in_ReaderID)=5
BEGIN
SET @out_str= ‘读者借书量不能大于5’
RETURN 0
END
IF (SELECT SNum FROM TBook WHERE ISBN=@in_ISBN)=0
BEGIN
SET @out_str= ‘图书库存量为0’
RETURN 0
END
IF @in_ISBN IN (SELECT ISBN FROM TLend WHERE ReaderID=@in_ReaderID)
BEGIN
SET @out_str= ‘读者已经借过该书’
RETURN 0
END
IF EXISTS(SELECT * FROM TLend WHERE BookID=@in_BookID AND ReaderID=@in_ReaderID)
BEGIN
SET @out_str= ‘该图书ID已存在’
RETURN 0
END
BEGIN TRAN /开始一个事务/
INSERT INTO TLend VALUES(@in_BookID, @in_ReaderID, @in_ISBN, GETDATE())
IF @@ERROR>0 /如果前面一条SQL语句出错则回滚事务并返回/
BEGIN
ROLLBACK TRAN
SET @out_str= ‘执行过程中遇到错误’
RETURN 0
END
UPDATE TReader SET Num=Num+1 WHERE ReaderID=@in_ReaderID
IF @@ERROR>0 /如果前面一条SQL语句出错则回滚事务并返回/
BEGIN
ROLLBACK TRAN
SET @out_str= ‘执行过程中遇到错误’
RETURN 0
END
UPDATE TBook SET SNum=SNum1 WHERE ISBN=@in_ISBN
IF @@ERROR=0 /如果所有语句都不出错则结束事务并返回/
BEGIN
COMMIT TRAN
SET @out_str= ‘借书成功’
RETURN 1
END
ELSE /如果执行出错则回滚所有操作并返回/
BEGIN
ROLLBACK TRAN
SET @out_str= ‘执行过程中遇到错误’
RETURN 0
END
END(4)还书的时候的触发器
USE MBOOK
GO
CREATE TRIGGER TLend_delete ON TLend
AFTER DELETE
AS
BEGIN
UPDATE TReader SET Num=Num-1 WHERE ReaderID=(SELECT ReaderID FROM deleted)
UPDATE TBook SET SNum=SNum+1 WHERE ISBN=(SELECT ISBN FROM deleted)
END
(5)还书时候的存储过程
USE [MBook]
GO
/****** Object: StoredProcedure [dbo].[Book_Return] Script Date: 06/03/2020 16:59:15 *****/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[Book_Return](@in_ReaderID nchar(10),@in_BookID nchar(10),@out_str char(30) OUTPUT)
AS
BEGIN
IF NOT EXISTS(SELECT * FROM TReader WHERE ReaderID=@in_ReaderID)
BEGIN
SET @out_str= ‘该读者不存在’
RETURN 0
END
IF NOT EXISTS(SELECTFROM TLend WHERE ReaderID=@in_ReaderID AND BookID=@in_BookID)
BEGIN
SET @out_str=‘该读者并未借过此书’
RETURN 0
END
BEGIN TRAN
DELETE FROM TLend WHERE ReaderID=@in_ReaderID AND BookID=@in_BookID

fe4b8dfa26db0f66d240091d354a9074.png

二 各窗体实现

登录窗体
注意事项:匹配用户账号,用户密码,用于实现登录,忘记密码的时候可以进行找回密码,可以修改密码

1a28f7ac5ac937401eaf1b2f0a05b60b.png

64b038ddc819f3520d4419d342308a30.png

899c0555855242e517a99da1698201e0.png

主界面窗体
1.菜单栏以及工具栏的使用,作为父窗体,,IsMdiContainer属性值设置为“True”,Text属性值设置为“图书管理系统”,Icon属性选择准备好的图标。BackgroundImage属性选择准备好的图片。
2.分别双击“借书‘,“还书”、“读者管理”和 “图书管理”为其添加事件

fd6bcbe682e52493fff915f66ac8577a.png

主界面的各控件属性设置:

f0bb7de4fea5cfaf25db6f1feff062af.png

f525d17b967b4faa4e2cdb6a99f077ba.png

e1701a2556485d009c24f4ab616d8eb6.png

借书窗体
1.点击查询按钮,利用借书证号进行匹配数据库,查询借阅表,并将借阅信息展现在下方DataGridView控件中
2.利用借书证号,图书ID,ISBN,利用ADO.NET技术操作数据库MBOOK,调用存储过程borrow_book,点击借书按钮,完成借书过程,并将更新后的借阅信息表更新在下方DataGridView控件中

57c8748d7fca2a93e5fb25baa90cd0d0.png

a9080eb65874be7c45551e2326ce3833.png

d631613b30492d38f12a702db8aafe9d.png

a574ce88d6a4c09533f18451d96f58ee.png

还书窗体
注意事项:
1.点击查询按钮,利用借书证号进行匹配数据库,查询借阅表,并将借阅信息展现在下方DataGridView控件中
2.点击还书按钮,利用借书证号,图书ID,利用ADO.NET技术操作数据库MBOOK,利用触发器实现功能:当用户“归还”图书时,即删除借阅表(TLend)中的一条借书记录 时,读者信息表(TReader)该读者的借书量减“1”;图书信息表(TBook)该图书 记录的库存量加“1”。通过创建借阅表(TLend)的DELETE触发器实现。

16c52365b7667170455ad8481b222ea8.png

2feb30a37af1b6267afa43aeec7f1ccd.png

f2dc596378f286af847c6b8afc064982.png

85d2939c04befba1333af14eee82a725.png读者信息窗体
注意事项:
1.查询,点击查询按钮,利用借书证号进行匹配数据库,查询读者信息表,并将借阅信息展现在下方DataGridView控件中,注意利用SqlDataReader读取数据库数据,在读的过程中,我们得先判定照片框中是否预先有照片,如果有进行销毁,SQL数据库中的图片是以二进制信息进行保存的,我么要利用字节数组,以字节的形式输出,并且将字节流转换成内存流,最后利用Image.FromStream(),生成图片;
2.添加读者,利用控件输入框填写信息,点击保存按钮进行保存,记得注意的是我们得判断是否选择了照片,如果要,点击选择照片按钮,利用openFileDialog1.FileName获得文件路径,利用FileStream读取,用字节数组写入数据库中
3.修改读者信息,将要修改的信息填写在输入框中,要注意的是得判断输入框是不是为空,不为空代表这个字段要修改,书写SQL语句的时候得加上这个字段。
4.删除读者,利用借书证号直接删除
5.帮助按钮,点击打开一个对话框,里面书写着使用手册

35f97fd564c7fcb7ef5630f004ed54fc.png

847944bec9858314b2d7aa33d94c3de0.png

df21651273102768c632d8110b1d155a.png

6dbcb60fb80d6011cf11d46cdc4d87a4.png

1e84b5e2547f3eed644d9a0fdb121e4d.png

5bab247eae993aa6646c24d912990b6b.png

51cc4204f2e61b10213ebe46497cbe3f.png

5abf7a296faffd7122f8b4b6025ddadd.png

5afa47d6a5c7b4905019095277344260.png

图书信息窗体
注意事项:
1.查询,点击查询按钮,利用图书ID进行匹配数据库,查询图书信息表,并将借阅信息展现在下方DataGridView控件中,注意利用SqlDataReader读取数据库数据
2.修改,将要修改的信息填写在输入框中
3.添加,将要添加的信息填写在输入框中
4.帮助按钮,点击打开一个对话框,里面书写着使用手册

62c378f12556f10b156a7b942e1834ce.png

f95fb97a683ff890d46c80348c93a063.png

674633c1048f1508c11fcae3348e7da3.png

86b33975b8a87cc2877610985c20760a.png

c10eea4b7d0c4b2aae0bece878cc3e9c.png

45285a5a44837537662bc585dce474a4.png

497228064c626667cd0afbb88350221b.gif 1b86f87c1b00400d3e2a170d11d20ce5.gif f075f25a86ff6bcfda20c9d817e74e86.gif 

END

dd6b10aff4a6ed90239097c4c8d019c4.gif

●C#会不会成为移动开发最便捷语言?

●C# 委托、泛型委托与Lambda表达式

● .Net平台下的B/S开发框架

●C#多线程读写同一文件处理

●C#使用 MQTTnet 快速实现 MQTT 通信

●socket网口通信通用实例

ac23b54c6b5d7d57fe0c87098c99fd10.png

77c38b64026aab61656962ea831bf9bd.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值