📄 bookborrow.cs
字号:
//
this.label7.Location = new System.Drawing.Point(176, 36);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(80, 16);
this.label7.TabIndex = 2;
this.label7.Text = "输入后请回车";
//
// dataGrid1
//
this.dataGrid1.CaptionVisible = false;
this.dataGrid1.DataMember = "";
this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
this.dataGrid1.Location = new System.Drawing.Point(0, 184);
this.dataGrid1.Name = "dataGrid1";
this.dataGrid1.ReadOnly = true;
this.dataGrid1.Size = new System.Drawing.Size(672, 296);
this.dataGrid1.TabIndex = 36;
//
// label1
//
this.label1.Location = new System.Drawing.Point(152, 488);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(100, 16);
this.label1.TabIndex = 37;
this.label1.Text = "已借书";
//
// label2
//
this.label2.Location = new System.Drawing.Point(328, 488);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(100, 16);
this.label2.TabIndex = 37;
this.label2.Text = "本次借书";
//
// BookBorrow
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(672, 509);
this.Controls.Add(this.label1);
this.Controls.Add(this.dataGrid1);
this.Controls.Add(this.groupBox1);
this.Controls.Add(this.toolBar1);
this.Controls.Add(this.groupBox2);
this.Controls.Add(this.label2);
this.Name = "BookBorrow";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "【图书借阅】";
this.Load += new System.EventHandler(this.BookBorrow_Load);
this.groupBox1.ResumeLayout(false);
this.groupBox2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
this.ResumeLayout(false);
}
#endregion
//----------创建窗体时,设置表格,并初始化变量--------------
private void BookBorrow_Load(object sender, System.EventArgs e)
{
this.DataGridStateControl();
totalCount=0;
thisCount=0;
}
//----------设置明细表格各列的属性----------
private void DataGridStateControl()
{
tblBooks=new DataTable();
tblBooks.Columns.Add("状态",typeof(string));
tblBooks.Columns.Add("图书编号",typeof(string));
tblBooks.Columns.Add("书名",typeof(string));
tblBooks.Columns.Add("借阅时间",typeof(string));
tblBooks.Columns.Add("应还时间",typeof(string));
tblBooks.Columns.Add("出版社",typeof(string));
tblBooks.Columns.Add("价格",typeof(decimal));
this.dataGrid1.DataSource = tblBooks;
tblBooks.Rows.Add(tblBooks.NewRow()); //向表中添加一行
DataGridTableStyle ts = new DataGridTableStyle();
DataGridTextBoxColumn aColumnTextColumn;
ts.AllowSorting = false;
ts.AlternatingBackColor = Color.LightGray;
ts.MappingName = tblBooks.TableName;
int numCols = tblBooks.Columns.Count;
for (int i = 0;i< numCols;i++)
{
aColumnTextColumn = new DataGridTextBoxColumn();
if(i==2)
{
aColumnTextColumn.Width=140;//设置图书名称宽度
}
if ( i == 5 )
{
aColumnTextColumn.Width = 100;//设置出版社名称列宽度
}
aColumnTextColumn.MappingName = tblBooks.Columns[i].ColumnName;
aColumnTextColumn.HeaderText = tblBooks.Columns[i].ColumnName;
aColumnTextColumn.NullText = "";
aColumnTextColumn.Format = "N"; //设置为数字格式显示
ts.GridColumnStyles.Add(aColumnTextColumn);
}
dataGrid1.TableStyles.Add(ts);
}
//------------查询并读入读者信息以及读者已经借书的信息------------
private void txt1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if(e.KeyChar==13&&txt1.Text.Trim()!="")
{
txt2.Clear();
txt3.Clear();
txt4.Clear();
this.showInfo();//显示读者信息
}
}
//------------显示读者信息和所借图书信息----------------
private void showInfo()
{
string strConn = "workstation id=localhost;Integrated Security=SSPI;database=libbook";
SqlConnection cn=new SqlConnection(strConn);
cn.Open();
SqlCommand cmd=cn.CreateCommand();
if(rbt1.Checked)//判断根据编号查询读者信息还是根据条形码
{
cmd.CommandText="select a.姓名,a.类型,b.图书册书,a.编号 from 读者信息 a,读者类型 b"
+" where (a.类型=b.类型)and(a.编号='"+txt1.Text.Trim()+"')";
}
else
{
cmd.CommandText="select a.姓名,a.类型,b.图书册书,a.编号 from 读者信息 a,读者类型 b"
+" where (a.类型=b.类型)and(a.条形码='"+txt1.Text.Trim()+"')";
}
SqlDataReader dr=cmd.ExecuteReader();//执行查询,并读入读者数据
dr.Read();
if(dr.HasRows==false)//如未能查询到读者信息,则提示重新输入
{
MessageBox.Show("无此读者,请检查后重新输入","错误",MessageBoxButtons.OK,MessageBoxIcon.Error);
return;
}
else
{
txt2.Text=dr.GetValue(0).ToString().Trim();//显示读者信息
txt3.Text=dr.GetValue(1).ToString().Trim();
txt4.Text=dr.GetValue(2).ToString().Trim();
readerID=dr.GetValue(3).ToString().Trim();
}
dr.Close();
string strCmd="select a.状态,a.图书编号,b.书名,a.借阅时间,a.应还时间,b.出版社,b.价格"
+" from 图书借阅 a,图书信息 b where (a.图书编号=b.编号)and(a.状态='未还')"
+"and(读者编号='"+readerID+"')";//查询读者所借书籍信息
SqlDataAdapter da=new SqlDataAdapter(strCmd,cn);
tblBooks.Clear();//清空借书记录
da.Fill(tblBooks);//读入读者借阅图书信息
totalCount=tblBooks.Rows.Count;//显示已借书数量和本次借书数量
thisCount=0;
label1.Text="已借书"+totalCount.ToString()+"本";
label2.Text="本次借书0本";
groupBox2.Enabled=true;//允许借书
txt5.Focus();//光标移动到输入图书编号文本框处,开始借书
}
//--------------按回车借书---------------
private void txt5_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
if(e.KeyChar==13&&txt5.Text.Trim()!="")
{
this.borrowBook();//读者借书
}
}
//------------读者借书-------------
private void borrowBook()
{
if(this.totalCount>=Convert.ToInt32(txt4.Text.Trim()))//如果借书达到上限,则不允许再借
{
MessageBox.Show("已经达到最大借书数量,请先归还书籍后再借书","借书数量达到上限",MessageBoxButtons.OK,MessageBoxIcon.Information);
groupBox2.Enabled=false;
return;
}
string strConn = "workstation id=localhost;Integrated Security=SSPI;database=libbook";
SqlConnection cn=new SqlConnection(strConn);
cn.Open();
SqlCommand cmd=cn.CreateCommand();
DataRow aRow=tblBooks.NewRow();
string bookType;//保存新借图书的类型
if(rbt3.Checked)
{
cmd.CommandText="select 编号,书名,出版社,价格,类型 from 图书信息 where 编号='"+txt5.Text.Trim()+"'";
}
else
{
cmd.CommandText="select 编号,书名,出版社,价格,类型 from 图书信息 where 条形码='"+txt5.Text.Trim()+"'";
}
SqlDataReader dr=cmd.ExecuteReader();//执行查询,并读入图书数据
dr.Read();
if(dr.HasRows==false)//如未能查询到图书信息,则提示重新输入
{
MessageBox.Show("无此图书,请检查后重新输入","错误",MessageBoxButtons.OK,MessageBoxIcon.Error);
return;
}
else
{
string newbookID=dr.GetValue(0).ToString();
foreach(DataRow newRow in tblBooks.Rows)//不允许重复借书
{
if(newRow["图书编号"].ToString().Trim()==newbookID.Trim())
{
MessageBox.Show("该读者已经借有此书,不能再借","信息",MessageBoxButtons.OK,MessageBoxIcon.Warning);
return;
}
}
aRow["图书编号"]=dr.GetValue(0).ToString();
aRow["书名"]=dr.GetValue(1).ToString();
aRow["出版社"]=dr.GetValue(2).ToString();
aRow["价格"]=Convert.ToDecimal(dr.GetValue(3));
aRow["状态"]="新借";
aRow["借阅时间"]=System.DateTime.Now.ToString();
bookType=dr.GetValue(4).ToString();
}
dr.Close();
cmd.CommandText="select 可借天数 from 图书类型 where 类型名称='"+bookType+"'";//计算归还时间
int days=Convert.ToInt32(cmd.ExecuteScalar());
DateTime returnTime=System.DateTime.Now.AddDays(days);
aRow["应还时间"]=returnTime.ToString();
tblBooks.Rows.Add(aRow);//增加新借书记录
totalCount++;
thisCount++;
label1.Text="已借书"+totalCount.ToString()+"本";
label2.Text="本次借书"+thisCount.ToString()+"本";
}
//--------处理借书事务----------
private void toolBar1_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)
{
if(e.Button.ToolTipText=="确定借书")
{
string strConn = "workstation id=localhost;Integrated Security=SSPI;database=libbook";
SqlConnection cn=new SqlConnection(strConn);
cn.Open();
SqlCommand cmd=cn.CreateCommand();
foreach(DataRow newRow in tblBooks.Rows)
{
if(newRow["状态"].ToString()=="新借")//插入新增的图书记录
{
cmd.CommandText="insert into 图书借阅([图书编号],[读者编号],[借阅时间],[应还时间],[状态],[续借次数])"
+" values('"+newRow["图书编号"].ToString()+"','"+readerID+"','"+newRow["借阅时间"]
+"','"+newRow["应还时间"]+"','未还','0')";
cmd.ExecuteNonQuery();
newRow["状态"]="未还";//将已经保存的借书状态改为未还
}
}
}
if(e.Button.ToolTipText=="取消借书")
{
tblBooks.Clear();
groupBox2.Enabled=false;
}
if(e.Button.ToolTipText=="退出")
{
foreach(DataRow aRow in this.tblBooks.Rows)
{
if(aRow["状态"].ToString()=="新借")//检索表中是否有新借书数据,提示用户保存
{
DialogResult dlg=MessageBox.Show("该读者有新借图书尚未保存,退出将无法保存新借图书记录","确认退出",MessageBoxButtons.OKCancel,MessageBoxIcon.Warning);
if(dlg==DialogResult.OK)
{
return;
}
}
}
this.Close();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -