BookID=\+Convert.ToInt32(this.txtbID.Text)+\); if (ds.Tables[0].Rows.Count > 0) {
MessageBox.Show(\此书有借阅,不能删除\); return; }
7.3 图书查询功能的友好交互性
对于一个藏书量很大的图书馆,一本图书可能有好几种版本,即作者不同、出版社不同、价格不同;或者同一类型的书:如计算机类的书有很多本。这时不同的用户就需要查询自己所需的书,在查询时就需要同时根据多项图书的信息进行关联性的查找,所以在查询功能这一块要用相应的算法解决这一问题,如下面的代码所示,已经实现了图书的关联性查找:
private void btnSerch_Click(object sender, EventArgs e) {
string cbo1 = this.cboOR.Text; string cbo2 = this.cboAnd.Text; string booktype = cboType.Text;
string bookname = this.txtName.Text;
string bookcontent = this.txtContent.Text; //定义sql语句
string sql = \ + booktype + \ + cbo1 + \ + bookname + \ + cbo2 + \ + bookcontent + \; //调用DataAccess.GetDataSetBySql方法
DataSet Myds = DataAccess.GetDataSetBySql(sql); DataTable table = Myds.Tables[0]; //指定数据源
this.dgvSearchBook.DataSource = table;
}
16
图 7.1 关联查找
如图7.1所示 若要查询“爱情 情感”类中的“明晓溪”著作的《心之萌》这本书 就要同时对图书类别和图书名称这两个信息进行关联查找:在图书类别下的组合框中选中“and”,图书类别中输入 爱情 情感,图书名称中输入 心之萌。
8总结
通过近两周的课程设计,我有了很多的收获,首先这次课程设计使用到了很多的C#和SQL编程语言,由于之前学的不好,在程序的代码实现中遇到了很多的问题,使得设计的中期阶段显得很困难,但是经过组员们的共同努力均被一一解决;其次是作为学习软件专业的我们,要有良好的学习心态和严谨的态度,因为编程这一块真的很不容易,一不小心就会出错,而且很是乏味;最后,我还是很顺利的完成了这次课程设计,在这里我要特别感谢张秉树老师在软件使用和数据库设计上对我们的指导。
附录
附录A 主窗口实现代码
using System;
using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq;
17
using System.Text;
using System.Windows.Forms; namespace BookManage
{ public partial class FrmMain : Form { public static DialogResult result; public FrmMain()
{ InitializeComponent();}
//查询子窗体是否存在
public bool checkchildfrm(string childfrmname) { foreach (Form childFrm in this.MdiChildren) { if (childFrm.Name == childfrmname)
{ if(childFrm.WindowState ==FormWindowState.Minimized) childFrm.WindowState = FormWindowState.Normal; childFrm.Activate(); return true; } } return false;}
//用户登录菜单的事件处理
private void 用户登录ToolStripMenuItem_Click(object sender, EventArgs e)
{ //检测该窗口是否处于打开状态
if (this.checkchildfrm(\) == true) return; //窗口已经打开,返回
frmLogin user = new frmLogin();//实例化登录窗体
user.ShowDialog(); //登录窗体以模式对话框的方式的打开 //判断是否登录成功,登录成功则启用相应的菜单和按钮 if (result == DialogResult.OK)
{ this.tsbtnAddBook.Enabled = true; this.mnuUpdateBook.Enabled = true; this.mnuAddBook.Enabled = true; } }
//登录按钮事件处理
private void tsbtnLogin_Click(object sender, EventArgs e) { if (this.checkchildfrm(\) == true) return;
frmLogin user = new frmLogin(); user.ShowDialog();
if (result == DialogResult.OK)
{ this.tsbtnAddBook.Enabled = true; this.mnuUpdateBook.Enabled = true; this.mnuAddBook.Enabled = true; } }
//图书查询按钮Click事件处理
18
private void tsbtnSearch_Click(object sender, EventArgs e) { if (this.checkchildfrm(\) == true) return;
frmSearchBook book = new frmSearchBook();
book.MdiParent = this; //设置为当前窗体的子窗体 book.Show();}
//图书检索菜单Click事件处理
private void 图书检索ToolStripMenuItem_Click(object sender,
EventArgs e)
{ if (this.checkchildfrm(\) == true) return;
frmSearchBook book = new frmSearchBook(); book.MdiParent = this; book.Show();} //图书入库菜单Click事件处理
private void 图书入库ToolStripMenuItem1_Click(object sender,
EventArgs e)
{ if (this.checkchildfrm(\) == true) return;
frmAddBook objbook = new frmAddBook(); objbook.MdiParent= this; objbook.Show(); }
//图书入库按钮Click事件处理
private void tsbtnAddBook_Click(object sender, EventArgs e) { if (this.checkchildfrm(\) == true) return;
frmUpdateBook objbook = new frmUpdateBook(); objbook.MdiParent = this; objbook.Show(); }
//图书更新菜单Click事件处理
private void 图书修改ToolStripMenuItem_Click(object sender, EventArgs e)
{ if (this.checkchildfrm(\) == true) return;
frmUpdateBook objbook = new frmUpdateBook(); objbook.MdiParent= this; objbook.Show(); }
//图书借阅按钮事件处理
private void tsbtnIssue_Click(object sender, EventArgs e) { if (this.checkchildfrm(\) == true) return;
19