①程序代码及运行:
点击‘读者管理’,进入读者管理界面:
如进行查询操作,输入借书证号,点击‘读者查询’如下图所示:
附‘读者查询’部分代码:
//读者查询功能
private void button4_Click(object sender, EventArgs e)
{
if (textBox1.Text.Trim() == "")
{
MessageBox.Show("请输入借书证号!");
return;
}
SqlConnection conn = new SqlConnection(strcon);
string sqlStrSelect = "select[ReaderID],[Name],[Sex],[Spec],[Born],[Photo],[Num]from [TReader] where[ReaderID]='" + textBox1.Text.Trim() + "'";
SqlCommand cmd = new SqlCommand(sqlStrSelect, conn);
try
{ conn.Open();
SqlDataReader sdr = cmd.ExecuteReader();
MemoryStream memstream = null;//定义一个内存流
if (sdr.HasRows)//如果有记录
{
sdr.Read();//读取第一行记录
textBox2.Text = sdr["Name"].ToString();//读取姓名
textBox3.Text = sdr["Born"].ToString();
comboBox1.Text = sdr["Spec"].ToString();
label7.Text = sdr["Num"].ToString() + "本";
bool sex = Convert.ToBoolean(sdr["Sex"]);//读取性别
if (sex == true)
{ radioButton1.Checked = true; }
else
{ radioButton2.Checked = true; }
if (sdr["Photo"] is DBNull)
{
MessageBox.Show("照片为空!");
}
else
{
if (this.pictureBox1.Image != null)
{ pictureBox1.Image.Dispose(); }
byte[] data = (byte[])sdr["Photo"];
memstream = new MemoryStream(data);//字节流转换为内存流
this.pictureBox1.Image = Image.FromStream(memstream);//内存流转化为照片 }
}
else
{
MessageBox.Show("没有此读者");
}
if (memstream != null)
{ memstream.Close(); }
if (!sdr.IsClosed)
{ sdr.Close(); }
}
catch (Exception ex)
{ MessageBox.Show(ex.Message); }
finally
{
if (conn.State == ConnectionState.Open)
{ conn.Close(); }
}
}
其他‘读者追加’、‘读者追加’、‘读者修改’等功能也如此。
②进入借书界面:
输入借书证号进行查询:
如‘081101’借书4本
借书时,把图书ID,ISBN,借书证号输入完整,点击‘借’:
借书源代码:
//查询功能
private void button1_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(strcon);
string sqlstr = "select [bookid],[isbn],[bookname],[publisher],[price],[ltime] from [rbl] where [readerid]='" + textBox1.Text.Trim() + "'";
try
{
SqlDataAdapter adapter = new SqlDataAdapter(sqlstr,conn );
DataSet dstable = new DataSet();
adapter.Fill(dstable, "testtable");
dataGridView1.DataSource = dstable.Tables["testtable"];
dataGridView1.Show();
}
catch (Exception ex)
{ MessageBox.Show(ex.Message); }
finally
{ conn.Close(); }
}
//借书功能
private void button2_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(strcon);
if (textBox1.Text.Trim() == "" || textBox2.Text.Trim() == "" || textBox3.Text.Trim() == "")
{
MessageBox.Show("借书证号,ISBN,图书ID输入完整!");
return;
}
SqlCommand cmd = new SqlCommand("book_borrow",conn );
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter inreaderid = new SqlParameter("@in_readerid", SqlDbType.Char, 8);
inreaderid.Direction = ParameterDirection.Input;
inreaderid.Value = textBox1.Text.Trim();
cmd.Parameters.Add(inreaderid);
SqlParameter inisbn = new SqlParameter("@in_isbn", SqlDbType.Char, 18);
inisbn.Direction = ParameterDirection.Input;
inisbn.Value = textBox2.Text.Trim();
cmd.Parameters.Add(inisbn);
SqlParameter inbookid = new SqlParameter("@in_bookid", SqlDbType.Char, 18);
inbookid.Direction = ParameterDirection.Input;
inbookid.Value = textBox3.Text.Trim();
cmd.Parameters.Add(inbookid);
SqlParameter outreturn = new SqlParameter("@out_str", SqlDbType.Char, 30);
outreturn.Direction = ParameterDirection.Output;
cmd.Parameters.Add(outreturn);
try
{
conn.Open();
cmd.ExecuteNonQuery();
MessageBox.Show(outreturn.Value.ToString());
}
catch
{ MessageBox.Show("借书出错!"); }
finally
{
conn.Close();
button1_Click(null, null);
}
}
③ 进入还书模块:
输入借书证号,点击‘查询’:
‘借书证号’、‘ISBN’、‘图书ID’输入完整,点击‘还书’:
还书部分源代码参考:
//查询
private void button1_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(strcon);
string sqlstr = "select [bookid],[isbn],[bookname],[publisher],[price],[ltime] from [rbl] where [readerid]='" + textBox1.Text.Trim() + "'";
try
{
SqlDataAdapter adapter = new SqlDataAdapter(sqlstr, conn);
DataSet dstable = new DataSet();
adapter.Fill(dstable, "testtable");
dataGridView1.DataSource = dstable.Tables["testtable"];
dataGridView1.Show();
}
catch (Exception ex)
{ MessageBox.Show(ex.Message); }
finally
{ conn.Close(); }
}
//还书功能
private void button2_Click(object sender, EventArgs e)
{
if (textBox1.Text.Trim() == "" || textBox2.Text.Trim() == "" || textBox3.Text.Trim() == "")
{
MessageBox.Show("借书证号,ISBN,图书ID输入完整!");
return;
}
SqlConnection conn = new SqlConnection(strcon);
string sqlstr = "delete from [tlend] where [bookid] =@BookID";
SqlCommand cmd = new SqlCommand(sqlstr, conn);
cmd.Parameters.Add("@BookID", SqlDbType.Char, 10).Value = textBox3.Text.Trim();
try
{ conn.Open();
cmd.ExecuteNonQuery();//执行SQL语句并返回受影响的行数
this.rBLTableAdapter.Fill(this.mBOOKDataSet2.RBL);
}
catch (Exception ex)
{ MessageBox.Show(ex.Message); }
finally
{ conn.Close();
button1_Click(null, null);
}
}
第二篇:C实验五
实验五 一维数组和二维数组
一、实验目的
(1)熟练掌握一维、二维数组定义和数组元素引用,并熟练运用数组解决实际问题。
(2)了解数组在内存中的存储方式。
二、实验内容
1.数组循环右移(C5_1.cpp)
已知有n个数组元素的一维数组a[n],将数组a各元素循环右移1个位置,最后一个元素存到首位。
【输入】
输入2行数据,第一行是一个整数n,为数组的长度。
第二行有n个整数,为数组元素。
【输出】
输出一行,包括n个整数,循环右移后的数组,整数之间用空格隔开。
【输入输出样例1】
【输入输出样例2】
2.木材干燥率的计算(C5_2.CPP )
输入n批木材的干燥率,试计算平均含水率和含水率的标准差s:
。
【输入】
输入2行数据,第1行有1个整数表示木材的批数n;第2行有n个整数表示数组w中的各个含水率(%),整数之间用空格隔开。
【输出】
输出包含2个浮点数,即平均含水率(%)和标准差,要求小数点后保留2位精度。
【输入输出样例1】
【输入输出样例2】
3.二维数组最大值求解(C5_3.cpp)
输入维度为m*n的二维数组a[m][n],输出a数组元素中的最大值。
【输入】
输入m+1行数据,第一行为两个整数,用空格间隔,为数组的行长和列长,剩下的m行为数组元素值,每行n列,数据间用空格间隔。
【输出】
输出一个整数,为该二维数组中的最大值。
【输入输出样例1】
【输入输出样例2】
4.数组合并(C5_4.cpp)
已知有两个排好序(升序)的一维数组a[10]和b[10],现要求将它们合并成一个新的数组c[20],仍保持有序。
【输入】
输入2行数据,每行都是10个升序排列的整数,整数之间用空格隔开。
【输出】
输出1行,包含20个整数,整数间用空格间隔。
【输入输出样例1】
【输入输出样例2】
【数据限制】
a,b都是整型数组