1、2 系统设计系统功能图如下:3数据库设计1各表的物理结构:BookMessage表:其中的每个字段都不为空,Type只能为图书或杂志;ReaderMessage表:其中每个字段都不为空,Sex只能为男或女,Type只能为学生或管理员,Passwords默认值为123456;BorrowMessage表:其中每个字段都不为空;2三个表的关系图:2数据库的安全设计软件系统方面 用户登录系统必须提供用户名和密码,选择相应角色,系统自动查询数据库判断用户名密码是否正确及是否符合用户所选择的的身份。权限设置 本系统分为两个角色,管理员和学生。管理员登录系统可以管理书籍信息,添加新的管理员和注销自己的账户
2、;学生登录可以查看个人信息,查询书籍,借书,还书,查询借阅记录,查询已还书,查询未还书和注销自己的账户。4图书借阅系统的实现1 登录窗体界面及最终运行效果如图4.1所示。图4.1 登录界面用户选择管理员或学生,填写用户名,如“aa”,然后输入密码,系统对输入的用户名及相应的密码进行校验。具体流程图如下图所示: 图4.2 密码验证流程图有关代码如下:namespace BooksManagementSystem public partial class load : Form public static string readerindex=null; public load() Initial
3、izeComponent(); private void load_Load(object sender, EventArgs e) private void bt_load_Click(object sender, EventArgs e) if (tb_user.Text.Trim() = ) MessageBox.Show(请填写用户名!); return; bool isStudent; OleDbConnection mycon; OleDbDataAdapter myda; DataSet myds; string strSelect; string strCon = Provid
4、er=Microsoft.Jet.OLEDB.4.0;Data Source=BooksManagementSystem.mdb;Persist Security Info=True; if (rb_student.Checked = true) strSelect = select passwords from ReaderMessage where ReaderIndex= + tb_user.Text + and Type =学生 isStudent = true; /MessageBox.Show(strSelect); else 管理员 isStudent = false; myco
5、n = new OleDbConnection(strCon); myda = new OleDbDataAdapter(strSelect,mycon); myds = new DataSet(); myda.Fill(myds); if (myds.Tables0.Rows.Count 0) if (tb_password.Text.Equals(myds.Tables0.Rows00.ToString() load.readerindex = tb_user.Text.ToString(); if (isStudent) this.Hide(); StudentIndex SIndex
6、= new StudentIndex(); SIndex.ShowDialog(); this.Show(); ManagerIndex MIndex = new ManagerIndex(); MIndex.ShowDialog(); else用户名错误或密码错误!用名错误或密码错误! private void bt_register_Click(object sender, EventArgs e) Register reg = new Register(); reg.ShowDialog(); private void bt_cancel_Click(object sender, Eve
7、ntArgs e) this.Close();2. 学生首页学生登录后,进入学生首页,如下图所示:A查询书籍可以有条件查询,如填写书籍编号,书名,作者,出版社任意几项,点击查询,则DataGridView控件会显示查询的书籍,无条件查询效果如下图:B借书要先查询书籍,然后在控件上点击你要借的书,最后点击借书,如果此书在库则提示借书成功,否则提示此书已借出,借书成功效果如下: C还书需要输入书籍编号进行还书,如果你借了此书且没还则提示还书成功,否则提示你未借此书,还书成功效果如下图:D查询借阅记录,查询已还书,查询未还书时,则控件会显示相应的信息,查询借阅记录的效果如下图:E点击个人信息,则会进
8、入个人信息界面;上述有关代码如下: public partial class StudentIndex : public DataGridViewCellEventArgs borrowBook; bool isBorrow = false; bool isSelect = false; public StudentIndex() public void Update() string strSelect = select BookIndex as 书籍?编号?,BookName as 书名?称?,Author as 作者?,Publish as 出?版?社,JoinTime as 入库a时间
9、?,Price as 价?格?,Type as 类型,State as 是否在库a from BookMessage bool isAll = true; if (tb_bookindex.Text.Trim() != strSelect = strSelect + where BookIndex = + tb_bookindex.Text + isAll = false; if (tb_bookname.Text.Trim() ! if (isAll)where BookName = + tb_bookname.Text + and BookName = if (tb_author.Text
10、.Trim() !where Author = + tb_author.Text + and Author = if (tb_publish.Text.Trim() !where Publish = + tb_publish.Text + and Publish = myda = new OleDbDataAdapter(strSelect, mycon); dataGridView1.DataSource = myds.Tables0; private void bt_querybook_Click(object sender, EventArgs e) isBorrow = true; U
11、pdate(); private void bt_borrow_Click(object sender, EventArgs e) if (!isBorrow)请?先查询书isSelect)选?择? string bookid; if (borrowBook.RowIndex myds.Tables0.Rows.Count) if(myds.Tables0.RowsborrowBook.RowIndex7.ToString().Equals(False)此已借出? bookid = myds.Tables0.RowsborrowBook.RowIndex0.ToString(); string
12、 time = DateTime.Now.ToShortDateString(); mycon.Open(); string strInsert = Insert into BorrowMessage(ReaderIndex,BookIndex,BorrowTime,IsReturn) values ( + load.readerindex + , + bookid + + time + ,false) OleDbCommand mycom = new OleDbCommand(strInsert, mycon); mycom.ExecuteNonQuery(); string strUpda
13、te = update BookMessage set State = false where BookIndex = OleDbCommand mycom1 = new OleDbCommand(strUpdate, mycon); mycom1.ExecuteNonQuery(); mycon.Close(); isSelect = false;成功|!正y确的! private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) borrowBook = e; isSelect = true;
14、private void bt_return_Click(object sender, EventArgs e) isBorrow = false; if (tb_bookindex.Text.Trim() = 输入select * from BorrowMessage where BookIndex = and IsReturn = False OleDbDataAdapter myda1; DataSet myds1; myda1 = new OleDbDataAdapter(strSelect,mycon); myds1 = new DataSet(); myda1.Fill(myds1
15、); if (myds1.Tables0.Rows.Count = 0)你?没?有D借这a本update BookMessage set State = true where BookIndex = string strUpdate1 = update BorrowMessage set IsReturn = true,ReturnTime =+time+ where BookIndex = OleDbCommand mycom = new OleDbCommand(strUpdate, mycon); OleDbCommand mycom1 = new OleDbCommand(strUpd
16、ate1, mycon);还1书功| private void bt_borrowrecord_Click(object sender, EventArgs e)select AutoId as 编,ReaderName as 读姓?,ReaderMessage.ReaderIndex as 读,BookMessage.BookIndex as 书,BorrowTime as 借时,ReturnTime as 还1书,IsReturn as 是还1 from BorrowMessage ,BookMessage,ReaderMessage where BorrowMessage.BookInd
17、ex=BookMessage.BookIndex AND BorrowMessage.ReaderIndex=ReaderMessage.ReaderIndex AND ReaderMessage.ReaderIndex = OleDbDataAdapter myda1 = new OleDbDataAdapter(strSelect, mycon); DataSet myds1 = new DataSet(); dataGridView1.DataSource = myds1.Tables0; private void button1_Click(object sender, EventAr
18、gs e)还1 from BorrowMessage ,BookMessage,ReaderMessage where BorrowMessage.BookIndex=BookMessage.BookIndex AND BorrowMessage.ReaderIndex=ReaderMessage.ReaderIndex and IsReturn = False AND ReaderMessage.ReaderIndex = private void button2_Click(object sender, EventArgs e)还1 from BorrowMessage ,BookMessage,ReaderMessage where BorrowMessage.BookIndex=BookMessage.BookIndex AND BorrowMessage.ReaderIndex=ReaderMessage.ReaderIndex and IsReturn = True AND ReaderMessage.ReaderIndex = private void StudentIndex_Load(object sender, EventArgs e) private vo
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1