图书借阅管理系统C#报告Word格式文档下载.docx
《图书借阅管理系统C#报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《图书借阅管理系统C#报告Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
![图书借阅管理系统C#报告Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2022-11/26/dbe93b27-394e-4280-a3a6-79d03575a9dc/dbe93b27-394e-4280-a3a6-79d03575a9dc1.gif)
2系统设计
系统功能图如下:
3数据库设计
1各表的物理结构:
BookMessage表:
其中的每个字段都不为空,Type只能为图书或杂志;
ReaderMessage表:
其中每个字段都不为空,Sex只能为男或女,Type只能为学生或管理员,Passwords默认值为123456;
BorrowMessage表:
其中每个字段都不为空;
2三个表的关系图:
2数据库的安全设计
软件系统方面
用户登录系统必须提供用户名和密码,选择相应角色,系统自动查询数据库判断用户名密码是否正确及是否符合用户所选择的的身份。
权限设置
本系统分为两个角色,管理员和学生。
管理员登录系统可以管理书籍信息,添加新的管理员和注销自己的账户;
学生登录可以查看个人信息,查询书籍,借书,还书,查询借阅记录,查询已还书,查询未还书和注销自己的账户。
4图书借阅系统的实现
1登录窗体
⑴界面及最终运行效果如图4.1所示。
图4.1登录界面
⑵用户选择管理员或学生,填写用户名,如“aa”,然后输入密码,系统对输入的用户名及相应的密码进行校验。
具体流程图如下图所示:
图4.2密码验证流程图
⑶有关代码如下:
namespaceBooksManagementSystem
{
publicpartialclassload:
Form
{
publicstaticstringreaderindex=null;
publicload()
InitializeComponent();
}
privatevoidload_Load(objectsender,EventArgse)
privatevoidbt_load_Click(objectsender,EventArgse)
if(tb_user.Text.Trim()=="
"
)
MessageBox.Show("
请填写用户名!
);
return;
boolisStudent;
OleDbConnectionmycon;
OleDbDataAdaptermyda;
DataSetmyds;
stringstrSelect;
stringstrCon="
Provider=Microsoft.Jet.OLEDB.4.0;
DataSource=BooksManagementSystem.mdb;
PersistSecurityInfo=True"
;
if(rb_student.Checked==true)
strSelect="
selectpasswordsfromReaderMessagewhereReaderIndex='
+tb_user.Text+"
'
andType='
学生'
isStudent=true;
//MessageBox.Show(strSelect);
else
管理员'
isStudent=false;
mycon=newOleDbConnection(strCon);
myda=newOleDbDataAdapter(strSelect,mycon);
myds=newDataSet();
myda.Fill(myds);
if(myds.Tables[0].Rows.Count>
0)
if(tb_password.Text.Equals(myds.Tables[0].Rows[0][0].ToString()))
load.readerindex=tb_user.Text.ToString();
if(isStudent)
this.Hide();
StudentIndexSIndex=newStudentIndex();
SIndex.ShowDialog();
this.Show();
ManagerIndexMIndex=newManagerIndex();
MIndex.ShowDialog();
else
用户名错误或密码错误!
用名错误或密码错误!
privatevoidbt_register_Click(objectsender,EventArgse)
Registerreg=newRegister();
reg.ShowDialog();
privatevoidbt_cancel_Click(objectsender,EventArgse)
this.Close();
}
2.学生首页
学生登录后,进入学生首页,如下图所示:
A.查询书籍可以有条件查询,如填写书籍编号,书名,作者,出版社任意几项,点击查询,则DataGridView控件会显示查询的书籍,无条件查询效果如下图:
B.借书要先查询书籍,然后在控件上点击你要借的书,最后点击借书,如果此书在库则提示借书成功,否则提示此书已借出,借书成功效果如下:
C.还书需要输入书籍编号进行还书,如果你借了此书且没还则提示还书成功,否则提示你未借此书,还书成功效果如下图:
D.查询借阅记录,查询已还书,查询未还书时,则控件会显示相应的信息,查询借阅记录的效果如下图:
E.点击个人信息,则会进入个人信息界面;
上述有关代码如下:
publicpartialclassStudentIndex:
publicDataGridViewCellEventArgsborrowBook;
boolisBorrow=false;
boolisSelect=false;
publicStudentIndex()
publicvoidUpdate()
stringstrSelect="
selectBookIndexas书º
¨
¦
籍?
编À
¤
号?
BookNameas书º
名?
称?
Authoras作Á
¡
Â
者?
Publishas出?
版ã
?
社¦
JoinTimeas入¨
库a时º
À
间?
Priceas价?
格?
Typeas类¤
型¨
ª
Stateas是º
否¤
在¨
²
库afromBookMessage"
boolisAll=true;
if(tb_bookindex.Text.Trim()!
="
strSelect=strSelect+"
whereBookIndex='
+tb_bookindex.Text+"
isAll=false;
if(tb_bookname.Text.Trim()!
if(isAll)
whereBookName='
+tb_bookname.Text+"
andBookName='
if(tb_author.Text.Trim()!
where[Author]='
+tb_author.Text+"
and[Author]='
if(tb_publish.Text.Trim()!
wherePublish='
+tb_publish.Text+"
andPublish='
myda=newOleDbDataAdapter(strSelect,mycon);
dataGridView1.DataSource=myds.Tables[0];
privatevoidbt_querybook_Click(objectsender,EventArgse)
isBorrow=true;
Update();
privatevoidbt_borrow_Click(objectsender,EventArgse)
if(!
isBorrow)
请?
先¨
查¨
询¡
¥
书º
isSelect)
选?
择?
stringbookid;
if(borrowBook.RowIndex<
myds.Tables[0].Rows.Count)
if(myds.Tables[0].Rows[borrowBook.RowIndex][7].ToString().Equals("
False"
))
此ä
已°
借¨
出?
bookid=myds.Tables[0].Rows[borrowBook.RowIndex][0].ToString();
stringtime=DateTime.Now.ToShortDateString();
mycon.Open();
stringstrInsert="
InsertintoBorrowMessage(ReaderIndex,BookIndex,BorrowTime,IsReturn)values('
+load.readerindex+"
'
+bookid+"
+time+"
false)"
OleDbCommandmycom=newOleDbCommand(strInsert,mycon);
mycom.ExecuteNonQuery();
stringstrUpdate="
updateBookMessagesetState=falsewhereBookIndex='
OleDbCommandmycom1=newOleDbCommand(strUpdate,mycon);
mycom1.ExecuteNonQuery();
mycon.Close();
isSelect=false;
成¨
功|!
ê
正y确¨
的Ì
!
privatevoiddataGridView1_CellClick(objectsender,DataGridViewCellEventArgse)
borrowBook=e;
isSelect=true;
privatevoidbt_return_Click(objectsender,EventArgse)
isBorrow=false;
if(tb_bookindex.Text.Trim()=="
输º
入¨
select*fromBorrowMessagewhereBookIndex='
andIsReturn=False"
OleDbDataAdaptermyda1;
DataSetmyds1;
myda1=newOleDbDataAdapter(strSelect,mycon);
myds1=newDataSet();
myda1.Fill(myds1);
if(myds1.Tables[0].Rows.Count<
=0)
你?
没?
有®
D借¨
这a本À
updateBookMessagesetState=truewhereBookIndex='
stringstrUpdate1="
updateBorrowMessagesetIsReturn=true,ReturnTime='
+time+"
whereBookIndex='
OleDbCommandmycom=newOleDbCommand(strUpdate,mycon);
OleDbCommandmycom1=newOleDbCommand(strUpdate1,mycon);
还1书º
功|"
privatevoidbt_borrowrecord_Click(objectsender,EventArgse)
selectAutoIdas编À
ReaderNameas读¨
¢
姓?
ReaderMessage.ReaderIndexas读¨
BookMessage.BookIndexas书º
BorrowTimeas借¨
时º
ReturnTimeas还1书º
IsReturnas是º
还1fromBorrowMessage,BookMessage,ReaderMessagewhereBorrowMessage.BookIndex=BookMessage.BookIndexANDBorrowMessage.ReaderIndex=ReaderMessage.ReaderIndexANDReaderMessage.ReaderIndex='
OleDbDataAdaptermyda1=newOleDbDataAdapter(strSelect,mycon);
DataSetmyds1=newDataSet();
dataGridView1.DataSource=myds1.Tables[0];
privatevoidbutton1_Click(objectsender,EventArgse)
还1fromBorrowMessage,BookMessage,ReaderMessagewhereBorrowMessage.BookIndex=BookMessage.BookIndexANDBorrowMessage.ReaderIndex=ReaderMessage.ReaderIndexandIsReturn=FalseANDReaderMessage.ReaderIndex='
privatevoidbutton2_Click(objectsender,EventArgse)
还1fromBorrowMessage,BookMessage,ReaderMessagewhereBorrowMessage.BookIndex=BookMessage.BookIndexANDBorrowMessage.ReaderIndex=ReaderMessage.ReaderIndexandIsReturn=TrueANDReaderMessage.ReaderIndex='
privatevoidStudentIndex_Load(objectsender,EventArgse)
privatevo