目 录
摘 要......................................................................................................................................................... 2
第一章 系统概述..................................................................................................................................... 3
1.项目背景........................................................................................................................................... 3
2.项目需求分析................................................................................................................................... 3
3.系统功能简介................................................................................................................................... 5
第二章 社区图书室管理系统数据库分析............................................................................................. 6
1.图书室管理系统示意图................................................................................................................... 6
2.图书馆管理系统数据表清单........................................................................................................... 7
3.创建数据库....................................................................................................................................... 7
4.数据库设计....................................................................................................................................... 7
第三章 程序架构设计............................................................................................................................. 9
1.程序设计总体概述........................................................................................................................... 9
2.程序基本流程................................................................................................................................. 10
3.程序设计关键思想......................................................................................................................... 10
第四章 系统的主要功能....................................................................................................................... 12
1.系统登陆......................................................................................................................................... 12
2.系统主界面..................................................................................................................................... 12
3.读者管理界面................................................................................................................................. 13
4.图书管理界面................................................................................................................................. 13
5.图书借阅界面................................................................................................................................. 14
6.图书归还界面................................................................................................................................. 14
第五章 课程设计总结........................................................................................................................... 15
1.设计小结......................................................................................................................................... 15
2.自我评价......................................................................................................................................... 15
参考文献................................................................................................................................................. 16
附录......................................................................................................................................................... 17
随着现代科学技术的进步,人类社会正逐走向信息化。图书馆拥有丰富的文献信息资源,是社会信息系统的重要组成部分,在信息社会中的作用愈来愈重要。我国图书馆计算机等信息技术的应用起步于20世纪70年代末期,随着改革开放的步伐得以迅速发展,特别是90年代以后,我国图书馆信息网络建设取得了较大发展,图书馆信息化建设迈上了一个新台阶。
本文介绍了在Visual C#.NET环境下开发社区图书室管理系统的过程。文章介绍了社区图书馆室管理系统的项目背景、项目需求分析部分,包括可行性分析、图书借阅流程分析等;程序架构设计部分主要介绍了系统功能设计和数据库设计及代码设计;系统功能实现部分介绍了本设计的主要功能,基本流程,功能实现与演示,本系统界面友好,操作简单,比较实用。
关键词:信息化、Visual C#.NET、图书管理
【项目任务目标】:
本社区图书馆室管理系统总的实现目标是:建立以馆藏目录为基础的书目数据库;实现馆内采购、编目、流通、文献检索等信息化管理;建立图书馆动态网站;接入社区网络为广大社区用户及时提供馆内的最新信息。长期的目标还要实现直接浏览电子图书以及馆际间的图书借还等。
本图书管理系统就是将传统图书馆业务的手工操作转变成由计算机管理,即图书馆的图书期刊、音像资料等各种载体文献的采编、典藏、流通、检索及常规业务管理等工作,利用计算机技术,使得图书馆的管理更智能、更有效的进行,最终的目的以方便图书借阅者方便借阅及管理者高效、方便管理为目的。
随着社会信息量的与日俱增,职场竞争的日趋激烈,越来越多的人更关注知识的积累、能力的培养。作为信息存储的主要媒体之一的图书,数量、规模比以往任何时候都大的多,不论个人还是图书管理部门都需要使用方便而有效的方式来管理自己的书籍。随着计算机及网络技术的飞速发展,Internet/Intranet应用在全球范围内日益普及,当今社会正快速向信息化社会前进,信息系统的作用也越来越大。图书馆在正常运营中总是面对大量的读者信息,书籍信息以及由两者相互作用产生的借书信息,还书信息。因此图书管理信息化是发展的必然趋势。用结构化系统分析与设计的方法,建立一套有效的图书信息管理系统,可以减轻工作,将工作科学化、规范化,提高了图书馆信息管理的工作质量,因此根据图书馆目前实际的管理情况开发一套图书管理系统是十分必要的。社区图书室管理信息系统是对社区图书进行全面信息管理的系统。该管理系统可以有效地管理图书资源。本文以社区图书室管理系统开发过程为背景,记录社区与读者之间的使用书籍的情况。此外,根据读者的要求,实现书籍基本信息的输入,查询等几个方面的功能。本系统可以作为独立的系统使用,它包括借阅信息管理、书籍信息管理、读者信息管理、系统管理四个主要功能模块。该管理系统力求给读者方便快捷的途径去及时了解书籍信息。针对各个模块的数据表实现添加记录、修改记录、删除记录、以及查询显示记录等各个功能,所有的操作方便而快捷,并实现了图书管理系统的各项功能。
2.项目需求分析
通过调查,要求系统需要有以下功能:
⑴ 由于操作人员的计算机知识普遍较差,要求有良好的人机界面;
⑵ 由于该系统的使用对象多,要求有较好的权限管理;
⑶ 原始数据修改简单方便,支持多条件修改
⑷ 方便的数据查询,支持多条件查询;
⑸ 在相应的权限下,删除数据方便简单,数据稳定性好;
⑹ 数据计算自动完成,尽量减少人工干预;
本系统的设计是在Windows 10中文版操作系统环境下,使用 Visual Studio 2019中文版开发成功的。数据库是使用SQL server 2019中文版,它是基于客户机/服务器体系结构的多线程、高性能的数据库管理系统。由于它具有对数据集中进行管理,保证数据的安全性和完整性,可以优化系统性能,支持开放性等优点,在各个行业中都得到了广泛的应用。
Visual C#.NET
.NET首先是一个开发平台,它定义了一种公用语言子集(Common Language Subsct,CLS),这是一种为符合其规范的语言与类库之间提供无缝集成的混合语。.NET统一了编程类库,提供了对下一代多络通信标准,可扩展标记语言(Extensible Markup Language,XML)的完全支持,使应用程序的开发变得更容易\更简单.最为重要的,.NET将改变因特网的行为方式:软件将变成为服务。简而言之,.NET是一种面向网络、支持各种用户终端的开发平台环境。.NET的核心内容之一就是要搭建第三代因特网平台,这个网络平台将解决网站之间的协同合作问题,从而是最大限度地获取信息。在.NET平台上,不同网站之间通过相关的协定联系在一起,网站之间形成自动交流,协同工作,提供最全面的服务。
C#既具有C++语言功能强大、灵活,又具有VB的简单易学、高效的优点,利用它可以方便快捷地开发基于文字处理、图开图像、数据库、多媒体、网络的Windows应用程序和Web应用程序,它对于迅速崛起的XML和Web Service也提供了全方位的支持。因此,越来越多的人选择它作为程序设计语言。
可视化编程:
用传统程序设计语言设计程序时,都是通过编写程序代码来设计用户界面,在设计过程中看不到界面的实际显示效果,必须编译后运行程序才能观察。如果对界面的效果不满意,还要回到程序中修改。有时候,这种编程-编译-修改的操作可能要反复多次,大大影响了软件开发效率。Visual Studio 2019提供了可视化设计工具,把Windows界面设计的复杂性“封装”起来,开发人员不必为界面设计而编写大量程序代码。只需要按设计要求的屏幕布局,用系统提供的工具,在屏幕上画出各种“部件”,即图形对象,并设置这些图形对象的属性。Visual Studio 2019自动产生界面设计代码,程序设计人员只需要编写实现程序功能的那部分代码,从而可以大大提高程序设计的效率。
面向对象的程序设计:
Visual Studio 2019支持面向对象的程序设计,但它与一般的面向对象的程序设计语言(C++)不完全相同。在一般的面向对象程序设计语言中,对象由程序代码和数据组成,是抽象的概念;而Visual Studio 2019则是应用面向对象的程序设计方法,把程序和数据封装起来作为一个对象,并为每个对象赋予应有的属性,使对象成为实在的东西。在设计对象时,不必编写建立和描述每个对象的程序代码,而是用工具画在界面上,Visual Studio 2019自动生成对象的程序代码并封装起来。每个对象以图形方式显示在界面上,都是可视的。
本系统主要可以实现以下的管理功能:系统管理、读者管理、流通管理、图书管理等等。
图书室管理系统是一个典型的数据库应用程序,由系统管理、读者管理、图书管理等模块组成,特规划如下:
该模块的主要任务是维护系统的正常运行和安全性设置,包括新图书管理员的添加、修改密码等等。
该模块的功能是实现对读者类别的设置、读者信息的管理。
该模块的主要功能是对图书的借阅、归还的一些管理。
该模块的主要功能有:图书类别设置、图书档案管理、出版社管理、图书注销、图书录入、图书统计等对图书的管理。
图书室管理系统总的实现目标是:建立以馆藏目录为基础的书目数据库;实现馆内采购、编目、流通、文献检索等信息化管理;建立图书馆动态网站;接入社区网络为广大社区群众及时提供馆内的最新信息。长期的目标还要实现直接浏览电子图书以及馆际间的图书互借等。
社区图书室管理系统 |
读 者 管理 |
读者类别设置 |
读者 信息管理 |
图书管理 |
图书类别设置 |
图书档案管理 |
出版社管理 |
图书注销 |
图书录入 |
图书统计 |
流通管理 |
图书借阅 |
图书归还 |
正在上传…重新上传取消
读者管理 |
读者信息 |
管理员 |
图书管理 |
流通管理 |
图书信息 |
图书借阅 |
图书归还 |
图书统计 |
正在上传…重新上传取消
数据表名称 |
数据表用途 |
TBook |
保存图书对应ID、书名、作者、出版社、数量等基本信息 |
TReader |
保存读者账号、姓名、性别、生日等基本信息 |
TLend |
保存图书的借还时间、数目等信息 |
TUserlnfo |
保存管理员账号、密码等信息 |
打开SQL Server企业管理器,新建一个数据库,名称为data。利用光盘中的脚本代码“建库脚本\社区图书室管理系统.sql”文件创建数据库对象,完成数据库的设计.也可以利用“建库脚本\date.bak”文件直接恢复数据库,这样数据库中存在初始的图书信息和系统数据.
读者信息表:
字段名称 |
类型 |
宽度 |
是否为空 |
ReaderID |
char |
10 |
否 |
Name |
char |
10 |
否 |
Sex |
char |
8 |
否 |
Born |
date |
否 |
图书信息表:
字段名称 |
类型 |
宽度 |
是否为空 |
BookID |
char |
18 |
否 |
BookName |
char |
40 |
否 |
Author |
char |
16 |
否 |
Publisher |
char |
30 |
否 |
Summary |
varchar |
200 |
否 |
图书借还表:
字段名称 |
类型 |
宽度 |
是否为空 |
no |
int |
否 |
|
uid |
varchar |
20 |
否 |
bid |
varchar |
50 |
否 |
datetime |
datetime |
否 |
管理员表:
字段名称 |
类型 |
宽度 |
是否为空 |
name |
char |
10 |
否 |
pwd |
char |
10 |
否 |
本设计须符合面向对象思维,但是由于本组成员所学程度并非擅长C#语言,因此对于如何使用企业级框架(如javaEE的spring,ejb等等)来搭建MVC三层架构所知有限,因此在本次课程设计中本小组采用了单层架构模式设计程序。单层架构程序易于开发、易于测试、易于部署、易于水平伸缩,对于单块架构的应用程序而言,最终都会打成一个包,且只能运行到一个进程上。单块的水平伸缩其实可以理解为克隆,既新建出一个服务器节点,配置好运行环境,复制软件包到此节点上,从而运行该应用程序。当然必须确保负载均衡器允许某种分发策略,有效的将请求分发到新创建的节点上。
1.程序设计总体概述
根据前面所述,由于代码依据单层架构进行设计,将以单层层逻辑结构描述代码。程序总体功能设计分布如下图所示:
正在上传…重新上传取消
图3-1 程序设计总体分布图
程序包含各个界面,如登陆、借书、还书、图书管理、读者管理等界面。
2.程序基本流程
根据上述描述,以及所实现功能,做出以下概括本次设计的图书馆管理系统的总体功能流程图,如下图所示:
读者管理 |
信息增删改 |
管理员登录 |
图书管理 |
流通管理 |
图书增删改 |
图书借阅 |
图书归还 |
图书统计 |
开始 |
读者查询 |
图书查询 |
正在上传…重新上传取消
图3-2 总体功能流程图
3.程序设计关键思想
由于代码很多方面具有相似性,因此在此处不予以全部列出,仅仅列出具有
代表性的内容。
3.1 数据库查询部分
C#中有数据库连接的接口,将数据库的账号密码写对后,再写一下数据库连接开启的命令代码即可以实现数据库的连接。窗口与数据库之间的联系,需要编写sql语句,即数据库的语句。在C#的语法下,加入数据库的语句,才能使数据库识别到,才能读取。基本实现流程:程序开始,数据库连接,数据库实例化,编写sql语句,数据库结束连接。
3.2 系统登陆部分
由于在登陆中,仅仅使用登陆账号和密码,而此两者为Manager所拥有,因此使得Manager继承User对象。
3.3 查询书籍部分
当查询书籍时,使查询出的书籍暂时保留在某List集合中,以方便以后代码的使用。由于书籍是根据书籍编号唯一确认,因此在确认书籍库存量时便增加了一些逻辑判断操作,由于判断的简单性,此处不予列举。
3.4 借阅书籍关键部分
对于书籍借阅,此处需要注意的有三个地方,其一,因为对于书籍而言,即使是同名书籍在数据库中也是对应不同的记录,因此,在操作数据库时需要以其
具有唯一性的书籍编号加以操作;其二,当书籍借阅成功后,需要记得,在读者所拥有的书籍的List集合中,加入此书籍,以便实现时效性,方便后来使用,并且修改当前书籍所在List集合中的书籍状态为已借出;其三,由于同时修改两张表的内容,因此应当加以回滚断点的操作,但是由于本组成员未学习过这点,因此在本次代码中并未实现这个地方。
本界面的主要功能是为了对系统进行安全性管理,本系统的用户名和密码保存在管理员表中,例:(用户名:admin,密码:admin)即可登陆。
正在上传…重新上传取消
图4-1 系统登陆界面
本界面是系统的主界面,在本界面上集成了本系统的所有功能,共有4个功能菜单,实现了本系统从读者管理、流通管理、图书管理等系统的具体功能。
正在上传…重新上传取消
图4-2 系统主界面
本界面是读者信息管理界面,在本界面上集成了读者管理的所有功能,实现了本系统对读者信息的查询、添加、删除、修改等具体功能。
正在上传…重新上传取消
图4-3读者管理界面
本界面是图书信息管理界面,在本界面上集成了图书管理的所有功能,实现了本系统对图书信息的查询、添加、删除、修改等具体功能。
正在上传…重新上传取消
图4-4图书管理界面
本界面为系统的主要工作模块之一,是管理日常的图书的借阅的一些工作,实现图书的借阅记录。
正在上传…重新上传取消
本界面为管理图书室内的图书归还,在归还的时候做出更新,以便以后查找。
正在上传…重新上传取消
1.设计小结
这次课程设计我们选择的是设计社区图书室管理系统,通过本次设计数据库,设计界面,编写相应的程序,我们更清楚了解C#编程的步骤。通过一步步的分析、操作、实施,理论联系实际,把课堂上所学的知识综合的运用起来,不仅加深了对类、窗体的理解,还对数据库也加深了理解,而且提高了对所学知识的熟练运用程度。在实验过程中,我们了解到创建表时也需要注意一些我们常常容易忽略的问题,例如建表的顺序问题,因为一些表格中的属性列的完整性要求是在另一些表的属性列的基础上创建的,所以,这就确定了创建表的一定的顺序问题,如果不按照这个顺序建表,则建表必然失败。另外,在创建窗体时要想好实现的什么功能,以及怎么用C#语言来实现,有很多细节问题是我们常常忽略的。
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。本次课程设计虽然很辛苦,但实在是受益匪浅。通过本次课程设计,在设计过程中碰到了很多问题,刚开始要设计的时候,还真不知道从哪里下手,但最终在同学和老师的帮助下得到了解决,让我们学会了好多书本上没有的东西,通过本次课程设计我也能将课本上的知识融会贯通,起到了很好的辅助学习的效果,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。
通过这次课程设计,经历了遇到问题、分析问题、解决问题的过程,感觉我们的动手能力以及分析、解决问题的能力有了很大提升;这次课程设计包含了数据库、C#及开发工具visual studio 2019的使用,使得理论与实践得到了很好的结合,也为以后从事开发工作打下了一定的基础。
2.自我评价
在本系统的开发过程中,由于我们是初次开发软件,在知识、经验方面都存在着不足。另外,在整个开发的过程中,由于同时进行着大量的专业课课程大作业和实验,时间也比较仓促。因此,该系统必然会存在一些缺陷和不足。因为对社区图书室管理图书的整个流程不够熟悉,在需求分析时未能做到完全满足用户的需求。但它基本满足了界面友好,易于操作的要求,用户操作方便,运行简易。在该软件中我们实现了对图书的查询、借书、还书、修改密码等操作。由于设计水平有限,仍然有很多功能没有实现,软件中也存在一些不足。
尽管本管理系统存在着不足,但其基本功能都可以实现、易于日后程序更新、数据库管理容易、界面友好、操作简便、效率高是本管理系统的优点。相信该社区图书室管理系统是一套在社区图书室智能化管理中必不可少的管理软件,通过开发这个系统,我们掌握了项目开发的基本过程,了解了基本知识,巩固了我们对C#的学习,但在这次课程设计中的最大收获并不是掌握这几门开发工具的应用,而是学会了设计系统的思维方法,以及与同学们之间相互帮助的精神。
我们一边实习一边探索,发现理论和实践要充分地结合,是需要扎实的基本功的,这就表明学好基础知识是理论付诸实践的前提。在实习中我们学到了很多,希望在以后我们能充分利用实习的机会充实自己,并希望这样的机会能被更好更
多地提供。
[1] 唐大仕《C#程序设计教程》(第二版) 清华大学出版社,2018
[2] 百度文库
[3] 王要武《管理系统》 电子工业出版社,2005
[4] 李红等编著《管理信息系统开发与应用》 电子工业出版社,2005
[5]C#Asp.net基础入门到进阶实战培训视频教程 bilibili
[6]数据库访问及SQL优化+Ado.Net bilibili
附[5]、[6]网址:https://www.bilibili.com/video/BV1Tx411M7D6?p=69
附录
主要界面程序代码:
系统登陆界面:
public partial class 登录界面 : Form
{
public 登录界面()
{
InitializeComponent();
}
private void DENGLU_Click(object sender, EventArgs e)
{
try
{
if (textBox1.Text == "")
{ MessageBox.Show("用户名不能为空"); }
else
{
if (textBox2.Text == "")
{ MessageBox.Show("密码不能为空!"); }
else
{
string name = textBox1.Text; //获取账号
string pastword = textBox2.Text; //获取密码
string conn = @"Data Source=DESKTOP-AHQ0DF4;Initial Catalog=data;User ID=sa;Password=1"; //连接到数据库
SqlConnection connection = new SqlConnection(conn); //将数据库中的数据创建一个连接 conn代表的是数据库的一段字符
connection.Open(); //打开连接
string sql = string.Format("select count(*) from UserInfo where name='{0}' and pwd='{1}'", name, pastword);//在数据库中查询是否有该条记录,根据你所想找的数据
SqlCommand command = new SqlCommand(sql, connection); //sqlcommand表示在数据库找到想要的数据并暂时记录起来
int i = Convert.ToInt32(command.ExecuteScalar()); //执行后返回记录行数
if (i > 0) /*如果大于1,说明记录存在,登录成功 */
{
MessageBox.Show("登录成功");
new 主界面().Show(); //转到另一个界面上
this.Hide();
}
else { MessageBox.Show("用户名或者密码错误!"); }
connection.Close();
}
}
}
catch (Exception ex)/*调试报异常*/
{ MessageBox.Show("异常错误" + ex); }
}
private void TUICHU_Click(object sender, EventArgs e)
{
Application.Exit();
}
}
主界面:
public partial class 主界面 : Form
{
public 主界面()
{
InitializeComponent();
}
private void Jieshu_Click(object sender, EventArgs e)
{
this.Opacity = 0;
借书界面 f2 = new 借书界面();
f2.ShowDialog();
this.Opacity = f2.S1;
}
private void Huangshu_Click(object sender, EventArgs e)
{
this.Opacity = 0;
还书界面 f2 = new 还书界面();
f2.ShowDialog();
this.Opacity = f2.S2;
}
private void Duzheguanli_Click(object sender, EventArgs e)
{
this.Opacity = 0;
读者管理 f2 = new 读者管理();
f2.ShowDialog();
this.Opacity = f2.S3;
}
private void Tushuguanli_Click(object sender, EventArgs e)
{
this.Opacity = 0;
图书管理 f2 = new 图书管理();
f2.ShowDialog();
this.Opacity = f2.S4;
}
private void 主界面_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
}
读者管理界面:
public partial class 读者管理 : Form
{
public 读者管理()
{
InitializeComponent();
}
public int S3
{
get
{
return 100;
}
}
private void DUZHETIANJIA_Click(object sender, EventArgs e)
{
if (textBox1.Text == "" || textBox2.Text == "")
{
MessageBox.Show("请输入完整!");
return; //如果没输入完整则返回
}
string strcon = @"Data Source=DESKTOP-AHQ0DF4;Initial Catalog=data;User ID=sa;Password=1";
SqlConnection conn = new SqlConnection(strcon);
string sqlStr;
sqlStr = "insert [TReader]([ReaderID],[Name],[Sex],[Born])values(@ReaderID,@Name,@Sex,@Born)";
SqlCommand cmd = new SqlCommand(sqlStr, conn);
cmd.Parameters.Add("@ReaderID", SqlDbType.Char, 8).Value = textBox1.Text.Trim();
cmd.Parameters.Add("@Name", SqlDbType.Char, 8).Value = textBox2.Text.Trim();
if (radioButton1.Checked == true)//如果性别是男
{
cmd.Parameters.Add("@Sex", SqlDbType.Char, 8).Value = "男";
}
else if (radioButton2.Checked == true)//如果性别是女
{
cmd.Parameters.Add("@Sex", SqlDbType.Char, 8).Value = "女";
}
else
{
MessageBox.Show("请选择性别");
return;
}
cmd.Parameters.Add("@Born", SqlDbType.Date).Value = dateTimePicker1.Text.Trim();//出生时间
try
{
conn.Open(); //打开数据库连接
cmd.ExecuteNonQuery(); //执行SQL语句
MessageBox.Show("添加成功!");
}
catch (Exception ex)
{
MessageBox.Show("出错!" + ex.Message);
}
finally
{
conn.Close(); //关闭数据库连接
}
}
private void CHAXUN_Click(object sender, EventArgs e)
{
string connStr = @"Data Source=DESKTOP-AHQ0DF4;Initial Catalog=data;User ID=sa;Password=1";
SqlConnection conn = null;
try
{
conn = new SqlConnection(connStr);
conn.Open();
string sql = "select * from TReader";
//创建SqlDataAdapter类的对象
SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
//创建DataSet类的对象
DataSet ds = new DataSet();
//使用SqlDataAdapter对象sda将查新结果填充到DataSet对象ds中
sda.Fill(ds);
//设置表格控件的DataSource属性
dataGridView1.DataSource = ds.Tables[0];
dataGridView1.Columns[0].HeaderText = "身份证号";
dataGridView1.Columns[1].HeaderText = "姓名";
dataGridView1.Columns[2].HeaderText = "性别";
dataGridView1.Columns[3].HeaderText = "出生日期";
}
catch (Exception ex)
{
MessageBox.Show("出现错误!" + ex.Message);
}
finally
{
if (conn != null)
{
//关闭数据库连接
conn.Close();
}
}
}
private void SHANCHU_Click(object sender, EventArgs e)
{
if (textBox1.Text == "")
{
MessageBox.Show("请输入身份证号");
return;
}
string strcon = @"Data Source=DESKTOP-AHQ0DF4;Initial Catalog=data;User ID=sa;Password=1";
SqlConnection conn = new SqlConnection(strcon);
string sqlStr = "Delete From [TReader] where [ReaderID]=@ReaderID";
SqlCommand cmd = new SqlCommand(sqlStr, conn);
cmd.Parameters.Add("@ReaderID", SqlDbType.Char, 8).Value = textBox1.Text.Trim();
try
{
conn.Open();
int a = cmd.ExecuteNonQuery(); //执行SQL语句
if (a == 1) //如果受影响的行数为1则删除成功
{ MessageBox.Show("删除成功!"); }
else
{ MessageBox.Show("数据库中没有此读者!"); }
}
catch (Exception ex)
{ MessageBox.Show(ex.Message); }
finally
{ conn.Close(); }
}
private void XIUGAI_Click(object sender, EventArgs e)
{
if (textBox1.Text.Trim() == "")
{
MessageBox.Show("请输入身份证号!");
return;
}
//获取连接字符串
string strcon = @"Data Source=DESKTOP-AHQ0DF4;Initial Catalog=data;User ID=sa;Password=1";
SqlConnection conn = new SqlConnection(strcon);
string sqlStr = "update [TReader] set";
if (textBox2.Text.Trim().ToString() != "")//如果姓名有输入
{
sqlStr += "[Name]='"+textBox2.Text.Trim()+ "' where ReaderID="+textBox1.Text.Trim();
}
SqlCommand cmd = new SqlCommand(sqlStr, conn);
try
{
conn.Open();
int yxh = cmd.ExecuteNonQuery();
if (yxh == 1) //如果受影响的行数为1则修改成功
{
MessageBox.Show("修改成功");
}
else
{
MessageBox.Show("数据库中没有此读者!");
}
}
catch (Exception ex)
{
MessageBox.Show("出错,没有完成读者的修改!" + ex.Message);
}
finally
{
conn.Close();
}
}
}
图书管理界面:
public partial class 图书管理 : Form
{
public 图书管理()
{
InitializeComponent();
}
public int S4
{
get
{
return 100;
}
}
private void Tushutianjia_Click(object sender, EventArgs e)
{
if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "" || textBox4.Text == "" || textBox5.Text == "")
{
MessageBox.Show("请输入完整!");
return; //如果没输入完整则返回
}
string strcon = @"Data Source=DESKTOP-AHQ0DF4;Initial Catalog=data;User ID=sa;Password=1";
SqlConnection conn = new SqlConnection(strcon);
string sqlStr;
sqlStr = "insert [TBook]([BookID],[BookName],[Author],[Publisher],[Summary])values(@BookID,@BookName,@Author,@Publisher,@Summary)";
SqlCommand cmd = new SqlCommand(sqlStr, conn);
cmd.Parameters.Add("@BookID", SqlDbType.Char, 18).Value = textBox1.Text.Trim();
cmd.Parameters.Add("@BookName", SqlDbType.Char, 40).Value = textBox2.Text.Trim();
cmd.Parameters.Add("@Author", SqlDbType.Char, 16).Value = textBox3.Text.Trim();
cmd.Parameters.Add("@Publisher", SqlDbType.Char, 30).Value = textBox4.Text.Trim();
cmd.Parameters.Add("@Summary", SqlDbType.VarChar, 200).Value = textBox5.Text.Trim();
try
{
conn.Open(); //打开数据库连接
cmd.ExecuteNonQuery(); //执行SQL语句
MessageBox.Show("添加成功!");
}
catch (Exception ex)
{
MessageBox.Show("出错!" + ex.Message);
}
finally
{
conn.Close(); //关闭数据库连接
}
}
private void Tushuchaxun_Click(object sender, EventArgs e)
{
string connStr = @"Data Source=DESKTOP-AHQ0DF4;Initial Catalog=data;User ID=sa;Password=1";
SqlConnection conn = null;
try
{
conn = new SqlConnection(connStr);
conn.Open();
string sql = "select * from TBook";
//创建SqlDataAdapter类的对象
SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
//创建DataSet类的对象
DataSet ds = new DataSet();
//使用SqlDataAdapter对象sda将查新结果填充到DataSet对象ds中
sda.Fill(ds);
//设置表格控件的DataSource属性
dataGridView1.DataSource = ds.Tables[0];
dataGridView1.Columns[0].HeaderText = "图书ID";
dataGridView1.Columns[1].HeaderText = "书名";
dataGridView1.Columns[2].HeaderText = "作者";
dataGridView1.Columns[3].HeaderText = "出版社";
dataGridView1.Columns[4].HeaderText = "数量";
}
catch (Exception ex)
{
MessageBox.Show("出现错误!" + ex.Message);
}
finally
{
if (conn != null)
{
//关闭数据库连接
conn.Close();
}
}
}
private void Tushushanchu_Click(object sender, EventArgs e)
{
if (textBox1.Text == "")
{
MessageBox.Show("请输入图书ID");
return;
}
string strcon = @"Data Source=DESKTOP-AHQ0DF4;Initial Catalog=data;User ID=sa;Password=1";
SqlConnection conn = new SqlConnection(strcon);
string sqlStr = "Delete From [TBook] where [BookID]=@BookID";
SqlCommand cmd = new SqlCommand(sqlStr, conn);
cmd.Parameters.Add("@BookID", SqlDbType.Char,18).Value = textBox1.Text.Trim();
try
{
conn.Open();
int a = cmd.ExecuteNonQuery(); //执行SQL语句
if (a == 1) //如果受影响的行数为1则删除成功
{ MessageBox.Show("删除成功!"); }
else
{ MessageBox.Show("数据库中没有此图书!"); }
}
catch (Exception ex)
{ MessageBox.Show(ex.Message); }
finally
{ conn.Close(); }
}
private void Tushuxiugai_Click(object sender, EventArgs e)
{
if (textBox1.Text.Trim() == "")
{
MessageBox.Show("请输入图书ID!");
return;
}
//获取连接字符串
string strcon = @"Data Source=DESKTOP-AHQ0DF4;Initial Catalog=data;User ID=sa;Password=1";
SqlConnection conn = new SqlConnection(strcon);
string sqlStr = "update [TBook] set";
if (textBox2.Text.Trim().ToString() != "")
{
sqlStr += "[BookName]='" + textBox2.Text.Trim() + "' where BookID=" + textBox1.Text.Trim();
}
if (textBox3.Text.Trim().ToString() != "")
{
sqlStr += "[Author]='" + textBox3.Text.Trim() + "' where BookID=" + textBox1.Text.Trim();
}
if (textBox4.Text.Trim().ToString() != "")
{
sqlStr += "[Publisher]='" + textBox4.Text.Trim() + "' where BookID=" + textBox1.Text.Trim();
}
if (textBox5.Text.Trim().ToString() != "")
{
sqlStr += "[Summary]='" + textBox5.Text.Trim() + "' where BookID=" + textBox1.Text.Trim();
}
SqlCommand cmd = new SqlCommand(sqlStr, conn);
try
{
conn.Open();
int yxh = cmd.ExecuteNonQuery();
if (yxh == 1) //如果受影响的行数为1则修改成功
{
MessageBox.Show("修改成功");
}
else
{
MessageBox.Show("数据库中没有此图书!");
}
}
catch (Exception ex)
{
MessageBox.Show("出错,没有完成图书的修改!" + ex.Message);
}
finally
{
conn.Close();
}
}
}
图书借阅界面:
public partial class 借书界面 : Form
{
public 借书界面()
{
InitializeComponent();
}
public int S1
{
get
{
return 100;
}
}
private void Jieshu_Click(object sender, EventArgs e)
{
if (textBox1.Text.Trim() == "")
{
MessageBox.Show("请输入身份证号!");
return;
}
int number = int.Parse(dataGridView1.SelectedRows[0].Cells[4].Value.ToString());
if (number < 1)
{
MessageBox.Show("库存不足,请联系管理员购入");
}
else
{
string strcon = @"Data Source=DESKTOP-AHQ0DF4;Initial Catalog=data;User ID=sa;Password=1";
SqlConnection conn = new SqlConnection(strcon);
string sqlStr;
sqlStr = "insert [TLend]([uid],[bid],[datetime])values(@uid,@bid,@datetime)";
SqlCommand cmd = new SqlCommand(sqlStr, conn);
cmd.Parameters.Add("@uid", SqlDbType.VarChar, 20).Value = textBox1.Text.Trim();
cmd.Parameters.Add("@bid", SqlDbType.VarChar, 50).Value = dataGridView1.SelectedRows[0].Cells[0].Value;
cmd.Parameters.Add("@datetime", SqlDbType.DateTime).Value = DateTime.Now;
try
{
conn.Open();
int yxh = cmd.ExecuteNonQuery();
if (yxh == 1) //如果受影响的行数为1则修改成功
{
MessageBox.Show("借书成功");
}
else
{
MessageBox.Show("数据库中没有此书!");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
conn.Close();
}
}
}
private void Jieshuchaxun_Click(object sender, EventArgs e)
{
string connStr = @"Data Source=DESKTOP-AHQ0DF4;Initial Catalog=data;User ID=sa;Password=1";
SqlConnection conn = null;
try
{
conn = new SqlConnection(connStr);
conn.Open();
string sql = "select * from TBook";
//创建SqlDataAdapter类的对象
SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
//创建DataSet类的对象
DataSet ds = new DataSet();
//使用SqlDataAdapter对象sda将查新结果填充到DataSet对象ds中
sda.Fill(ds);
//设置表格控件的DataSource属性
dataGridView1.DataSource = ds.Tables[0];
dataGridView1.Columns[0].HeaderText = "图书ID";
dataGridView1.Columns[1].HeaderText = "书名";
dataGridView1.Columns[2].HeaderText = "作者";
dataGridView1.Columns[3].HeaderText = "出版社";
dataGridView1.Columns[4].HeaderText = "数量";
}
catch (Exception ex)
{
MessageBox.Show("出现错误!" + ex.Message);
}
finally
{
if (conn != null)
{
//关闭数据库连接
conn.Close();
}
}
}
private void CHAXUN_Click(object sender, EventArgs e)
{
string connStr = @"Data Source=DESKTOP-AHQ0DF4;Initial Catalog=data;User ID=sa;Password=1";
SqlConnection conn = null;
try
{
conn = new SqlConnection(connStr);
conn.Open();
string sql = "select * from TLend";
//创建SqlDataAdapter类的对象
SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
//创建DataSet类的对象
DataSet ds = new DataSet();
//使用SqlDataAdapter对象sda将查新结果填充到DataSet对象ds中
sda.Fill(ds);
//设置表格控件的DataSource属性
dataGridView2.DataSource = ds.Tables[0];
dataGridView2.Columns[0].HeaderText = "借书编码";
dataGridView2.Columns[1].HeaderText = "身份证号";
dataGridView2.Columns[2].HeaderText = "图书ID";
dataGridView2.Columns[3].HeaderText = "借书时间";
}
catch (Exception ex)
{
MessageBox.Show("出现错误!" + ex.Message);
}
finally
{
if (conn != null)
{
//关闭数据库连接
conn.Close();
}
}
}
private void GENGXIN_Click(object sender, EventArgs e)
{
int number = int.Parse(dataGridView1.SelectedRows[0].Cells[4].Value.ToString());
string strcon = @"Data Source=DESKTOP-AHQ0DF4;Initial Catalog=data;User ID=sa;Password=1";
SqlConnection conn = new SqlConnection(strcon);
string sqlStr = "update [TBook] set";
sqlStr += "[Summary]='" + (number - 1) + "' where BookID=" + dataGridView1.SelectedRows[0].Cells[0].Value.ToString();
SqlCommand cmd = new SqlCommand(sqlStr, conn);
try
{
conn.Open();
int yxh = cmd.ExecuteNonQuery();
if (yxh == 1) //如果受影响的行数为1则修改成功
{
MessageBox.Show("更新成功");
}
else
{
MessageBox.Show("更新失败!");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
conn.Close();
}
}
}
图书归还界面:
public partial class 还书界面 : Form
{
public 还书界面()
{
InitializeComponent();
}
public int S2
{
get
{
return 100;
}
}
private void CHAXUN_Click_1(object sender, EventArgs e)
{
string connStr = @"Data Source=DESKTOP-AHQ0DF4;Initial Catalog=data;User ID=sa;Password=1";
SqlConnection conn = null;
try
{
conn = new SqlConnection(connStr);
conn.Open();
string sql = "select * from TLend";
//创建SqlDataAdapter类的对象
SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
//创建DataSet类的对象
DataSet ds = new DataSet();
//使用SqlDataAdapter对象sda将查新结果填充到DataSet对象ds中
sda.Fill(ds);
//设置表格控件的DataSource属性
dataGridView1.DataSource = ds.Tables[0];
dataGridView1.Columns[0].HeaderText = "借书编码";
dataGridView1.Columns[1].HeaderText = "身份证号";
dataGridView1.Columns[2].HeaderText = "图书ID";
dataGridView1.Columns[3].HeaderText = "借书时间";
}
catch (Exception ex)
{
MessageBox.Show("出现错误!" + ex.Message);
}
finally
{
if (conn != null)
{
//关闭数据库连接
conn.Close();
}
}
}
private void HUANGSHU_Click(object sender, EventArgs e)
{
if (textBox1.Text == "")
{
MessageBox.Show("请输入身份证号");
return;
}
string strcon = @"Data Source=DESKTOP-AHQ0DF4;Initial Catalog=data;User ID=sa;Password=1";
SqlConnection conn = new SqlConnection(strcon);
string sqlStr = "Delete From [TLend] where [no]=@no";
SqlCommand cmd = new SqlCommand(sqlStr, conn);
cmd.Parameters.Add("@no", SqlDbType.Int).Value = textBox1.Text.Trim();
try
{
conn.Open();
int a = cmd.ExecuteNonQuery(); //执行SQL语句
if (a == 1) //如果受影响的行数为1则删除成功
{ MessageBox.Show("还书成功!"); }
else
{ MessageBox.Show("数据库中没有此图书!"); }
}
catch (Exception ex)
{ MessageBox.Show(ex.Message); }
finally
{ conn.Close(); }
}
private void GENGXIN_Click(object sender, EventArgs e)
{
int number = int.Parse(dataGridView2.SelectedRows[0].Cells[4].Value.ToString());
string strcon = @"Data Source=DESKTOP-AHQ0DF4;Initial Catalog=data;User ID=sa;Password=1";
SqlConnection conn = new SqlConnection(strcon);
string sqlStr = "update [TBook] set";
sqlStr += "[Summary]='" + (number + 1) + "' where BookID=" + dataGridView2.SelectedRows[0].Cells[0].Value.ToString();
SqlCommand cmd = new SqlCommand(sqlStr, conn);
try
{
conn.Open();
int yxh = cmd.ExecuteNonQuery();
if (yxh == 1) //如果受影响的行数为1则修改成功
{
MessageBox.Show("更新成功");
}
else
{
MessageBox.Show("更新失败!");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
conn.Close();
}
}
private void TUSHUCHAXUN_Click(object sender, EventArgs e)
{
string connStr = @"Data Source=DESKTOP-AHQ0DF4;Initial Catalog=data;User ID=sa;Password=1";
SqlConnection conn = null;
try
{
conn = new SqlConnection(connStr);
conn.Open();
string sql = "select * from TBook";
//创建SqlDataAdapter类的对象
SqlDataAdapter sda = new SqlDataAdapter(sql, conn);
//创建DataSet类的对象
DataSet ds = new DataSet();
//使用SqlDataAdapter对象sda将查新结果填充到DataSet对象ds中
sda.Fill(ds);
//设置表格控件的DataSource属性
dataGridView2.DataSource = ds.Tables[0];
dataGridView2.Columns[0].HeaderText = "图书ID";
dataGridView2.Columns[1].HeaderText = "书名";
dataGridView2.Columns[2].HeaderText = "作者";
dataGridView2.Columns[3].HeaderText = "出版社";
dataGridView2.Columns[4].HeaderText = "数量";
}
catch (Exception ex)
{
MessageBox.Show("出现错误!" + ex.Message);
}
finally
{
if (conn != null)
{
//关闭数据库连接
conn.Close();
}
}
}
}