学院派福利——C#+SQL Server图书管理系统
这是sql server的第七、八次上机内容,抽了几天时间给做了
在原有的booksDB库中加了一个Admin表:UserName:root,PassWord:123456.
环境:Visual Studio 2010,SQL Server 2008
参考书籍:

项目结构:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Threading; namespace WindowsFormsApplication2
{
public partial class Login : Form
{
public Login()
{
InitializeComponent();
} private void label1_Click(object sender, EventArgs e)
{ } private void textBox2_TextChanged(object sender, EventArgs e)
{ } private void label1_Click_1(object sender, EventArgs e)
{ } private void button1_Click(object sender, EventArgs e)
{
string User = UserName.Text;
string Pwd = PassWord.Text;
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "server=.;database=booksDB;integrated security=True";
try
{
conn.Open();
SqlCommand comm = conn.CreateCommand();
comm.CommandText = "select * from Admin where UserName='" + User + "'";
SqlDataReader reader = comm.ExecuteReader();
if (reader.Read())
{
string password = reader.GetString(reader.GetOrdinal("PassWord"));
if (Pwd == password)
{
MessageBox.Show("登陆成功!");
new Thread(() => Application.Run(new Menu())).Start();
this.Close();
//this.Hide();
//Form M = new Management();
//M.Show();
}
else
{
MessageBox.Show("密码错误!");
UserName.Text = " ";
PassWord.Text = " ";
}
}
else
{
MessageBox.Show("用户不存在!");
UserName.Text = " ";
PassWord.Text = " ";
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "操作数据库出错");
}
finally
{
conn.Close();
}
}
}
}

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms; namespace WindowsFormsApplication2
{
public partial class Menu : Form
{
public Menu()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
this.Hide();
new ReaderTypeM().Show();
} private void button2_Click(object sender, EventArgs e)
{
this.Hide();
new BookM().Show();
} private void button3_Click(object sender, EventArgs e)
{
this.Hide();
new ReaderM().Show();
} private void button4_Click(object sender, EventArgs e)
{
this.Hide();
new BorrowAndReturn().Show();
} private void Menu_Load(object sender, EventArgs e)
{ } private void Out_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
连数据库前先用BindingSource控件绑定数据库数据。再用DataGridView控件展示数据。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient; namespace WindowsFormsApplication2
{
public partial class ReaderTypeM : Form
{
public ReaderTypeM()
{
InitializeComponent();
} private void BackMenu_Click(object sender, EventArgs e)
{
this.Hide();
new Menu().Show();
} private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{ } private void Add_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection("server=.;database=booksDB;integrated security=True");
conn.Open();
SqlCommand comm = conn.CreateCommand();
comm.CommandText = "insert into ReaderType values(@rdType,@rdTypeName,@canLendQty,@canLendDay)";
comm.Parameters.AddWithValue("@rdType", txtrdType.Text);
comm.Parameters.AddWithValue("@rdTypeName", txtrdTypeName.Text);
comm.Parameters.AddWithValue("@canLendQty", txtcanLendQty.Text);
comm.Parameters.AddWithValue("@canLendDay", txtcanLendDay.Text);
try
{
comm.ExecuteNonQuery();
MessageBox.Show("插入成功!");
DataBind();
}
catch (Exception ex)
{ MessageBox.Show("插入失败!" + ex.Message);
}
} private void Search_Click(object sender, EventArgs e)
{
DataBind();
}
private void Delete_Click(object sender, EventArgs e)
{
MessageBoxButtons messButton = MessageBoxButtons.OKCancel;
DialogResult dr = MessageBox.Show("确定要删除吗?", "确定", messButton);
if (dr == DialogResult.OK)
{
SqlConnection conn = new SqlConnection("server=.;database=booksDB;integrated security=True");
conn.Open();
SqlCommand comm = conn.CreateCommand();
comm.CommandText = "delete from ReaderType where rdType = @rdType";
comm.Parameters.AddWithValue("@rdType", txtrdType.Text);
try
{
comm.ExecuteNonQuery();
MessageBox.Show("删除成功!");
DataBind();
}
catch (Exception ex)
{ MessageBox.Show("删除失败!" + ex.Message);
}
}
} private void Alter_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection("server=.;database=booksDB;integrated security=True");
conn.Open();
SqlCommand comm = conn.CreateCommand();
comm.CommandText = "update ReaderType set rdType=@rdType,rdTypeName=@rdTypeName,canLendQty=@canLendQty,canLendDay=@canLendDay where rdType=@rdType";
comm.Parameters.AddWithValue("@rdType", txtrdType.Text);
comm.Parameters.AddWithValue("@rdTypeName", txtrdTypeName.Text);
comm.Parameters.AddWithValue("@canLendQty", txtcanLendQty.Text);
comm.Parameters.AddWithValue("@canLendDay", txtcanLendDay.Text);
try
{
comm.ExecuteNonQuery();
MessageBox.Show("更新成功!");
DataBind();
}
catch (Exception ex)
{ MessageBox.Show("更新失败!" + ex.Message);
}
}
private void DataBind()
{
SqlConnection conn = new SqlConnection("server=.;database=booksDB;integrated security=True");
conn.Open();
SqlCommand comm = conn.CreateCommand();
comm.CommandText = "select rdType 类别号,rdTypeName 类别名称,canLendQty 可借数量,canLendDay 可借天数 from ReaderType";
SqlDataAdapter sda = new SqlDataAdapter(comm);
DataSet ds = new DataSet();
sda.Fill(ds);
dgvBook.DataSource = ds.Tables[]; txtrdType.DataBindings.Clear();
txtrdTypeName.DataBindings.Clear();
txtcanLendQty.DataBindings.Clear();
txtcanLendDay.DataBindings.Clear(); txtrdType.DataBindings.Add("Text", ds.Tables[], "类别号");
txtrdTypeName.DataBindings.Add("Text", ds.Tables[], "类别名称");
txtcanLendQty.DataBindings.Add("Text", ds.Tables[], "可借数量");
txtcanLendDay.DataBindings.Add("Text", ds.Tables[], "可借天数");
conn.Close();
} private void ReaderTypeM_Load(object sender, EventArgs e)
{
DataBind();
} private void bindingSource1_CurrentChanged(object sender, EventArgs e)
{ } }
}

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient; namespace WindowsFormsApplication2
{
public partial class BookM : Form
{
public BookM()
{
InitializeComponent();
} private void bindingSource1_CurrentChanged(object sender, EventArgs e)
{ } private void BackMenu_Click(object sender, EventArgs e)
{
this.Hide();
new Menu().Show();
} private void Add_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection("server=.;database=booksDB;integrated security=True");
conn.Open();
SqlCommand comm = conn.CreateCommand();
comm.CommandText = "insert into Book values(@bkID,@bkName,@bkAuthor,@bkPress,@bkPrice,@bkStatus)";
comm.Parameters.AddWithValue("@bkID", txtbkID.Text);
comm.Parameters.AddWithValue("@bkName", txtbkName.Text);
comm.Parameters.AddWithValue("@bkAuthor", txtbkAuthor.Text);
comm.Parameters.AddWithValue("@bkPress", txtbkPress.Text);
comm.Parameters.AddWithValue("@bkPrice", txtbkPrice.Text);
comm.Parameters.AddWithValue("@bkStatus", txtbkStatus.Text);
try
{
comm.ExecuteNonQuery();
MessageBox.Show("插入成功!");
DataBind();
}
catch (Exception ex)
{ MessageBox.Show("插入失败!" + ex.Message);
}
} private void Search_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection("server=.;database=booksDB;integrated security=True");
conn.Open();
SqlCommand comm = conn.CreateCommand();
comm.CommandText = "select bkID 书号,bkName 书名,bkAuthor 作者,bkPress 出版社,bkPrice 单价,bkStatus 状态 from Book where bkName like + @bkName + '%' ";
comm.Parameters.AddWithValue("@bkName", txtbkName.Text);
SqlDataAdapter sda = new SqlDataAdapter(comm);
DataSet ds = new DataSet();
sda.Fill(ds);
dgvBook.DataSource = ds.Tables[];
} private void Delete_Click(object sender, EventArgs e)
{
MessageBoxButtons messButton = MessageBoxButtons.OKCancel;
DialogResult dr = MessageBox.Show("确定要删除吗?", "确定", messButton);
if (dr == DialogResult.OK)
{
SqlConnection conn = new SqlConnection("server=.;database=booksDB;integrated security=True");
conn.Open();
SqlCommand comm = conn.CreateCommand();
comm.CommandText = "delete from Book where bkID = @bkID";
comm.Parameters.AddWithValue("@bkID", txtbkID.Text);
try
{
comm.ExecuteNonQuery();
MessageBox.Show("删除成功!");
DataBind();
}
catch (Exception ex)
{ MessageBox.Show("删除失败!" + ex.Message);
}
}
} private void Alter_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection("server=.;database=booksDB;integrated security=True");
conn.Open();
SqlCommand comm = conn.CreateCommand();
comm.CommandText = "update Book set bkID=@bkID,bkName=@bkName,bkAuthor=@bkAuthor,bkPress=@bkPress,bkPrice=@bkPrice,bkStatus=@bkStatus where bkID=@bkID";
comm.Parameters.AddWithValue("@bkID", txtbkID.Text);
comm.Parameters.AddWithValue("@bkName", txtbkName.Text);
comm.Parameters.AddWithValue("@bkAuthor", txtbkAuthor.Text);
comm.Parameters.AddWithValue("@bkPress", txtbkPress.Text);
comm.Parameters.AddWithValue("@bkPrice", txtbkPrice.Text);
comm.Parameters.AddWithValue("@bkStatus", txtbkStatus.Text);
try
{
comm.ExecuteNonQuery();
MessageBox.Show("更新成功!");
DataBind();
}
catch (Exception ex)
{ MessageBox.Show("更新失败!" + ex.Message);
}
} private void DataBind()
{
SqlConnection conn = new SqlConnection("server=.;database=booksDB;integrated security=True");
conn.Open();
SqlCommand comm = conn.CreateCommand();
comm.CommandText = "select bkID 书号,bkName 书名,bkAuthor 作者,bkPress 出版社,bkPrice 单价,bkStatus 状态 from Book";
SqlDataAdapter sda = new SqlDataAdapter(comm);
DataSet ds = new DataSet();
sda.Fill(ds);
dgvBook.DataSource = ds.Tables[]; txtbkID.DataBindings.Clear();
txtbkName.DataBindings.Clear();
txtbkAuthor.DataBindings.Clear();
txtbkPress.DataBindings.Clear();
txtbkPrice.DataBindings.Clear();
txtbkStatus.DataBindings.Clear(); txtbkID.DataBindings.Add("Text", ds.Tables[], "书号");
txtbkName.DataBindings.Add("Text", ds.Tables[], "书名");
txtbkAuthor.DataBindings.Add("Text", ds.Tables[], "作者");
txtbkPress.DataBindings.Add("Text", ds.Tables[], "出版社");
txtbkPrice.DataBindings.Add("Text",ds.Tables[],"单价");
txtbkStatus.DataBindings.Add("Text",ds.Tables[],"状态");
conn.Close();
}
private void BookM_Load(object sender, EventArgs e)
{
DataBind();
}
}
}

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient; namespace WindowsFormsApplication2
{
public partial class ReaderM : Form
{
public ReaderM()
{
InitializeComponent();
} private void BackMenu_Click(object sender, EventArgs e)
{
this.Hide();
new Menu().Show();
} private void Add_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection("server=.;database=booksDB;integrated security=True");
conn.Open();
SqlCommand comm = conn.CreateCommand();
comm.CommandText = "insert into Reader values(@rdID,@rdType,@rdName,@rdDept,@rdQQ,@rdBorrowQty)";
comm.Parameters.AddWithValue("@rdID", txtrdID.Text);
comm.Parameters.AddWithValue("@rdType", txtrdType.Text);
comm.Parameters.AddWithValue("@rdName", txtrdName.Text);
comm.Parameters.AddWithValue("@rdDept", txtrdDept.Text);
comm.Parameters.AddWithValue("@rdQQ", txtrdQQ.Text);
comm.Parameters.AddWithValue("@rdBorrowQty", txtrdBorrowQty.Text);
try
{
comm.ExecuteNonQuery();
MessageBox.Show("插入成功!");
DataBind();
}
catch (Exception ex)
{ MessageBox.Show("插入失败!" + ex.Message);
}
} private void Search_Click(object sender, EventArgs e)
{
DataBind();
} private void Delete_Click(object sender, EventArgs e)
{
MessageBoxButtons messButton = MessageBoxButtons.OKCancel;
DialogResult dr = MessageBox.Show("确定要删除吗?", "确定", messButton);
if (dr == DialogResult.OK)
{
SqlConnection conn = new SqlConnection("server=.;database=booksDB;integrated security=True");
conn.Open();
SqlCommand comm = conn.CreateCommand();
comm.CommandText = "delete from Reader where rdID = @rdID";
comm.Parameters.AddWithValue("@rdID", txtrdID.Text);
try
{
comm.ExecuteNonQuery();
MessageBox.Show("删除成功!");
DataBind();
}
catch (Exception ex)
{ MessageBox.Show("删除失败!" + ex.Message);
}
}
} private void Alter_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection("server=.;database=booksDB;integrated security=True");
conn.Open();
SqlCommand comm = conn.CreateCommand();
comm.CommandText = "update Reader set rdID=@rdID,rdType=@rdType,rdName=@rdName,rdDept=@rdDept,rdQQ=@rdQQ,rdBorrowQty=@rdBorrowQty where rdID=@rdID";
comm.Parameters.AddWithValue("@rdID", txtrdID.Text);
comm.Parameters.AddWithValue("@rdType", txtrdType .Text);
comm.Parameters.AddWithValue("@rdName", txtrdName.Text);
comm.Parameters.AddWithValue("@rdDept", txtrdDept.Text);
comm.Parameters.AddWithValue("@rdQQ", txtrdQQ.Text);
comm.Parameters.AddWithValue("@rdBorrowQty",txtrdBorrowQty.Text);
try
{
comm.ExecuteNonQuery();
MessageBox.Show("更新成功!");
DataBind();
}
catch (Exception ex)
{ MessageBox.Show("更新失败!" + ex.Message);
}
} private void DataBind()
{
SqlConnection conn = new SqlConnection("server=.;database=booksDB;integrated security=True");
conn.Open();
SqlCommand comm = conn.CreateCommand();
comm.CommandText = "select rdID 读者编号,rdType 读者类别号,rdName 读者姓名,rdDept 读者单位,rdQQ 读者QQ,rdBorrowQty 已借书数量 from Reader";
SqlDataAdapter sda = new SqlDataAdapter(comm);
DataSet ds = new DataSet();
sda.Fill(ds);
dgvReader.DataSource = ds.Tables[]; txtrdID.DataBindings.Clear();
txtrdType.DataBindings.Clear();
txtrdName.DataBindings.Clear();
txtrdDept.DataBindings.Clear();
txtrdQQ.DataBindings.Clear();
txtrdBorrowQty.DataBindings.Clear(); txtrdID.DataBindings.Add("Text", ds.Tables[], "读者编号");
txtrdType.DataBindings.Add("Text", ds.Tables[], "读者类别号");
txtrdName.DataBindings.Add("Text", ds.Tables[], "读者姓名");
txtrdDept.DataBindings.Add("Text", ds.Tables[], "读者单位");
txtrdQQ.DataBindings.Add("Text", ds.Tables[], "读者QQ");
txtrdBorrowQty.DataBindings.Add("Text", ds.Tables[], "已借书数量");
conn.Close();
}
private void ReaderM_Load(object sender, EventArgs e)
{
DataBind();
} }
}

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient; namespace WindowsFormsApplication2
{
public partial class BorrowAndReturn : Form
{
public BorrowAndReturn()
{
InitializeComponent();
} private void BorrowBook_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection("server=.;database=booksDB;integrated security=True");
conn.Open();
SqlCommand comm = conn.CreateCommand();
comm.CommandText = "exec usp_BorrowBook @rdID,@bkID";
comm.Parameters.AddWithValue("@rdID", txtrdID.Text);
comm.Parameters.AddWithValue("@bkID", txtbkID.Text);
try
{
comm.ExecuteNonQuery();
MessageBox.Show("借书成功!");
}
catch (Exception ex)
{ MessageBox.Show("借书失败!" + ex.Message);
}
} private void ReturnBook_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection("server=.;database=booksDB;integrated security=True");
conn.Open();
SqlCommand comm = conn.CreateCommand();
comm.CommandText = "exec usp_ReturnBook @rdID,@bkID";
comm.Parameters.AddWithValue("@rdID", txtrdID.Text);
comm.Parameters.AddWithValue("@bkID", txtbkID.Text); try
{
comm.ExecuteNonQuery();
MessageBox.Show("还书成功!");
}
catch (Exception ex)
{ MessageBox.Show("还书失败!" + ex.Message);
}
} private void BorrowAndReturn_Load(object sender, EventArgs e)
{ } private void BackMenu_Click(object sender, EventArgs e)
{
this.Hide();
new Menu().Show();
} private void Borrow_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection("server=.;database=booksDB;integrated security=True");
conn.Open();
SqlCommand comm = conn.CreateCommand();
comm.CommandText = "select rdID 读者编号,bkID 书号,DateBorrow 借书日期,DateLendPlan 应还日期,DateLendAct 实际还书日期 from Borrow";
SqlDataAdapter sda = new SqlDataAdapter(comm);
DataSet ds = new DataSet();
sda.Fill(ds);
dgvBorrow.DataSource = ds.Tables[];
conn.Close();
} }
}
源码地址:https://github.com/Vito-Yan/iCourse
学院派福利——C#+SQL Server图书管理系统的更多相关文章
- JAVA图书管理系统汇总共27个
好多人都在搜索图书管理系统,感觉这个挺受欢迎的,所以整理了一系列的图书管理系统,让大家选择.java图书馆管理系统[优秀毕业设计论文+源码]http://down.51cto.com/data/683 ...
- JAVA图书管理系统汇总共27个[转]
java图书馆管理系统[优秀毕业设计论文+源码]http://down.51cto.com/data/68350java+sql server图书管理系统 http://down.51cto.com/ ...
- Sql Server之数据类型详解
数据类型是一种属性,用于指定对象可保存的数据的类型,SQL Server中支持多种数据类型,包括字符类型.数值类型以及日期类型等.数据类型相当于一个容器,容器的大小决定了装的东西的多少,将数据分为 ...
- SQL Server 数据库的安全管理(登录、角色、权限)
---数据库的安全管理 --登录:SQL Server数据库服务器登录的身份验证模式:1)Windows身份验证.2)Windows和SQL Server混合验证 --角色:分类:1)服务器角色.服务 ...
- php连接sql server
这两天有个php连接sql server的项目,顺便学习学习sql server 说明: 1:PHP5.2.x本身有个php_mssql.dll的扩展用来连接Sql server,但是这个dll只是 ...
- Sql Server 常用系统存储过程大全
-- 来源于网络 -- 更详细的介结参考联机帮助文档 xp_cmdshell --*执行DOS各种命令,结果以文本行返回. xp_fixeddrives --*查询各磁盘/分区可用空间 xp_logi ...
- sql server 常用的系统存储过程
系统存储过程 说明 sp_databases 列出服务上的所有数据库 sp_helpdb 报告有关指定数据库或所有数据库的信息 sp_renamedb 更改数据库的名称 sp_tables 返回当 ...
- sql server系统存储过程大全
关键词:sql server系统存储过程,mssql系统存储过程 xp_cmdshell --*执行DOS各种命令,结果以文本行返回. xp_fixeddrives --*查询各磁盘/分区可用空间 x ...
- 十大监视SQL Server性能的计数器
作为DBA,每个人都会用一系列计数器来监视SQLSERVER的运行环境,使用计数器,既可以衡量当前的数据库的性能,还可以和以前的性能进行对比.我们也可以一直以快速和简单的方法把计数器做了一张图表来 ...
随机推荐
- 【BZOJ4061】[Cerc2012]Farm and factory(最短路,构造)
[BZOJ4061][Cerc2012]Farm and factory(最短路,构造) 题面 BZOJ 然而权限题QwQ. 题解 先求出所有点到达\(1,2\)的最短路,不妨记为\(d_{u,1}, ...
- 「JLOI2015」管道连接 解题报告
「JLOI2015」管道连接 先按照斯坦纳树求一个 然后合并成斯坦纳森林 直接枚举树的集合再dp一下就好了 Code: #include <cstdio> #include <cct ...
- 前端基础-- CSS
CSS知识 CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素. 当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化(渲染).Css之车更丰富的文档外 ...
- docker file 示例
报错 Cannot connect to the Docker daemon. Is the docker daemon running on this host? 这个错误只要输入docker -d ...
- window 操作 快捷键
win 下在当前目录下打开cmd命令窗口: 方法一: 在当前目录下,按下shift + 鼠标右键,会出现“在此处打开命令窗口”的字样,然后点击即可. 方法二: 在该文件夹上,按下shift + 鼠标右 ...
- [CTSC2010]性能优化
[CTSC2010]性能优化 循环卷积快速幂 两个注意点:n+1不是2^k*P+1形式,任意模数又太慢?n=2^k1*3^k2*5^k3*7^k4 多路分治!深刻理解FFT运算本质:分治,推式子得到从 ...
- 洛谷P1020 导弹拦截
n²谁都会打,不说了. 这里讨论一下nlogn算法(单调不减): 首先开始考虑单调性,我习惯性的以为是单调队列/栈优化的那个套路,想要找到一个跟下标有关的单调性却发现没有. 例如:我想过当下标增加时f ...
- vue2.0项目实战(5)vuex快速入门
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.Vuex 也集成到 Vue 的官方调试工具 ...
- MySQL常用的一些函数
内容太多,走链接: MySQL函数大全
- Python函数的定义与调用、返回值、参数
一.函数是什么 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.比如print(),len()等.但你也可以自己创建函数,这被叫做用户自 ...