C#图书管理实验报告.docx
- 文档编号:8096460
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:25
- 大小:305.75KB
C#图书管理实验报告.docx
《C#图书管理实验报告.docx》由会员分享,可在线阅读,更多相关《C#图书管理实验报告.docx(25页珍藏版)》请在冰豆网上搜索。
C#图书管理实验报告
《C#.NET》课程设计报告
项目名称:
C#实现图书管理系统
组员:
杨朝文(10060042)
王小龙(10060041)
于通(10060044)
组员分工:
于通:
FormRegistered.cs
FormLogin.cs(和杨朝文)
王小龙:
FormAddBook.cs
FormDeleteBook.cs
FormReturnBook.cs
杨朝文:
FormUserBorrowInfo.cs
FormBorrowBook.cs
等协助组员一起学习
一.概述
随着科学技术的快速发展,给个个领域带来空前的方便,如,图书馆的书籍管理,利用C#.NET语言和数据库实现对图书馆的书籍管理,给学校师生阅览书籍带来很大的便利,同时也大大减少了图书管理员的工作量。
二.系统分析
1.需求分析
为了方便对图书馆书籍的管理,利用C#.NET技术和简易的Access数据库来实现此目的。
2.可行性分析
2.1.前台功能分析
阅览者可以注册账号,登陆图书管理系统,并且能查看自己的用户信息和修改信息,查询图书,借读图书,查看自己所借读的所有信息。
2.2.后台功能分析
管理员登陆图书管理系统后,可以查看所有用户信息并可进行删除,查看阅览者所借读的所以信息,实现阅览者归还书籍时操作,同时可以查询书籍,更新书籍,更新书籍类型和出版社等功能。
3.功能模块划分
3.1系统总体模块
3.1系统总体模块图
3.2.阅览者注册登陆
3.2用户注册流程图
3.3前台借阅功能
3.3前台借阅流程图
3.4后台归还书籍功能
3.4后台归还书籍流程图
三.数据库设计
1.E-R图
1-0.管理员表E-R图
1-1.阅览者表E-R图
1-2.出版社表E-R图
1-3.书籍表E-R图
1-4.书籍借阅信息表E-R图
2.各表的信息介绍
2-1.admin表
字段名称
数据类型
是否为主键
说明
adminId
文本
是
管理员ID
adminPassword
文本
管理员密码
2-2.book表
字段名称
数据类型
是否为主键
说明
BookId
文本
是
书籍ID
BookName
文本
书籍名称
BookWritter
文本
书籍作者
Ifborrow
文本
是否被借阅
BookPrice
货币
书籍价格
BooktypeId
文本
是booktype外键
publisherId
文本
是publisher外键
2-3.booktype表
字段名称
数据类型
是否为主键
说明
BooktypeId
文本
是
书籍类型ID
BooktypeName
文本
书籍类型名称
Flow
文本
书籍所在楼层数
2-4.borrow表
字段名称
数据类型
是否为主键
说明
readerId
文本
是
读者ID
bookId
文本
是
书籍ID
borrowTime
日期/时间
借阅时间
returnTime
日期/时间
到期时间
Out
文本
是否超期
2-5.publisher表
字段名称
数据类型
是否为主键
说明
PublisherId
文本
是
出版社ID
publisherName
文本
出版社名称
2-6.reader表
字段名称
数据类型
是否为主键
说明
readerId
文本
是
读者ID
readerPassword
文本
读者登录密码
readerName
文本
读者姓名
ReaderSex
文本
读者性别
ReaderAge
文本
读者年龄
ReaderDept
文本
读者所在的院系
readerZY
文本
读者的专业
Maxnumber
文本
读者最多只能借阅书籍的数量
2-7.各表之间的关系
2-7.各表之间关系图
四.系统各模块的功能详细介绍
1.登录和注册界面
1-1.登录主要代码
namespaceBookMS
{
publicpartialclassFormLogin:
Form
{
publicFormLogin()
{
InitializeComponent();
}
privatevoidbuttonLogin_Click(objectsender,EventArgse)
{
OdbcConnectionconn=newOdbcConnection(Properties.Settings.Default.ConnectionString);
if(yanzhengshuru()){
if(comboBoxTypeName.Text.Trim()=="管理员")
{
try
{
Stringsql=string.Format("select*fromadminwhereadminId='{0}'",textBoxUserName.Text.Trim());
OdbcCommandcmd=newOdbcCommand(sql,conn);
conn.Open();
OdbcDataReaderdr=cmd.ExecuteReader();
if(dr.Read())
{
if(dr[1].ToString().Trim()==textBoxUserPsd.Text.Trim())
{
FormAdminadmin=newFormAdmin();
admin.Show();
}
}
}
1-1.登录界面
1-2.注册主要代码
privatevoidbuttonRegistered_Click(objectsender,EventArgse)
{
OdbcConnectionconn=newOdbcConnection(Properties.Settings.Default.ConnectionString);
Stringsql=String.Format("insertintoreadervalues('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}')",id,pw,name,sex,age,dept,major,max);
OdbcCommandcmd=newOdbcCommand(sql,conn);
if(id!
=""&&pw!
=""&&name!
=""&&sex!
=""&&age!
=""&&dept!
=""&&major!
="")
{
try
{
conn.Open();
intn=cmd.ExecuteNonQuery();
if(n==0)
{
}
1-2.注册界面
2.后台主要功能介绍
2-1.查看借阅信息主要代码
privatevoidFormSeeBorrowInfo_Load(objectsender,EventArgse)
{
try{
Stringsql=string.Format("selectreaderIdfromborrow");
OdbcCommandcmd=newOdbcCommand(sql,conn);
conn.Open();
OdbcDataReaderdr=cmd.ExecuteReader();
Stringreaderid="";
while(dr.Read()){
readerid=(string)dr[0];
comboBoxUserId.Items.Add(readerid);
}
dr.Close();
}
catch(OdbcExceptionerr)
{
MessageBox.Show(err.Message,"连接失败!
");
}
finally{
conn.Close();
}
}
privatevoidbuttonUserS_Click(objectsender,EventArgse)
{
Stringrid=comboBoxUserId.Text.Trim();
dt.Clear();
Stringsql=string.Format("selectborrow.readerId,readerName,borrow.bookId,bookName,borrowTime,returnTime,outfromborrow,reader,bookwherebook.bookId=borrow.bookIdandborrow.readerId=reader.readerIdandreader.readerId='{0}'",rid);
adapter=newOdbcDataAdapter(sql,conn);
adapter.Fill(dt);
dataGridViewBorrowInfo.DataSource=dt;
}
privatevoidbuttonAllS_Click(objectsender,EventArgse)
{
Stringsql=string.Format("selectborrow.readerId,readerName,borrow.bookId,bookName,borrowTime,returnTime,outfromborrow,reader,bookwherebook.bookId=borrow.bookIdandborrow.readerId=reader.readerId");
dt.Clear();
adapter=newOdbcDataAdapter(sql,conn);
adapter.Fill(dt);
dataGridViewBorrowInfo.DataSource=dt;
}
2-1.查看借阅信息
2-2.书籍归还主要代码
OdbcConnectionconn=newOdbcConnection(Properties.Settings.Default.ConnectionString);
OdbcDataAdapteradapter;
DataTabledt=newDataTable();
Stringrid="";
Stringbid="";
intmaxNum;
privatevoidbuttonSearch_Click(objectsender,EventArgse)
{
dt.Clear();
rid=textBoxReaderId.Text.Trim();
Stringsql=string.Format("selectborrow.readerId,readerName,borrow.bookId,bookName,borrowTime,returnTime,outfromborrow,reader,bookwherebook.bookId=borrow.bookIdandborrow.readerId=reader.readerIdandreader.readerId='{0}'",rid);
adapter=newOdbcDataAdapter(sql,conn);
adapter.Fill(dt);
dataGridViewInfo.DataSource=dt;
}
privatevoidbuttonOK_Click(objectsender,EventArgse)
{
bid=textBoxBookId.Text.Trim();
try
{
conn.Open();
Stringsql1=string.Format("deletefromborrowwherereaderId='{0}'andbookId='{1}'",rid,bid);
OdbcCommandcmd1=newOdbcCommand(sql1,conn);
intdeleteN=cmd1.ExecuteNonQuery();
Stringsql2=string.Format("updatebooksetifborrow='否'wherebookId='{0}'",bid);
OdbcCommandcmd2=newOdbcCommand(sql2,conn);
intupdateN=cmd2.ExecuteNonQuery();
Stringsql3=string.Format("selectmaxnumberfromreaderwherereaderId='{0}'",rid);
OdbcCommandcmd3=newOdbcCommand(sql3,conn);
OdbcDataReaderdr=cmd3.ExecuteReader();
while(dr.Read())
{
maxNum=(int)dr[0];
}
Stringsql4=string.Format("updatereadersetmaxnumber='{0}'wherereaderId='{1}'",maxNum+1,rid);
OdbcCommandcmd4=newOdbcCommand(sql4,conn);
intupdateM=cmd4.ExecuteNonQuery();
if(deleteN!
=0&&updateN!
=0&&updateM!
=0)
finally{
conn.Close();
}
}
2-2.归还书籍
3.前台主要功能介绍
3-1.查看自己借阅信息
publicFormUserBorrowInfo(StringuserId){
InitializeComponent();
this.userId=userId;
}
publicStringUserId
{
get{
returnuserId;}
set
{
this.userId=value;
}
}
OdbcConnectionconn=newOdbcConnection(Properties.Settings.Default.ConnectionString);
OdbcDataAdapteradapter;
DataTabledt=newDataTable();
privatevoidbuttonOK_Click(objectsender,EventArgse)
{
if(textBoxUserId.Text.Trim()==UserId)
{
Stringsql=string.Format("selectborrow.readerId,readerName,borrow.bookId,bookName,borrowTime,returnTime,outfromborrow,reader,bookwherebook.bookId=borrow.bookIdandborrow.readerId=reader.readerIdandreader.readerId='{0}'",userId);
adapter=newOdbcDataAdapter(sql,conn);
adapter.Fill(dt);
dataGridViewBInfo.DataSource=dt;
}
else{
MessageBox.Show("你输入的用户ID和登陆的用户ID不一致!
\n你没有权限查询他人借阅信息!
","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
}
3-1.借阅信息
3-2.借阅书籍主要代码
privateStringuserId;
publicFormBorrowBook()
{
InitializeComponent();
}
publicFormBorrowBook(StringuserId){
InitializeComponent();
this.userId=userId;
}
OdbcConnectionconn=newOdbcConnection(Properties.Settings.Default.ConnectionString);
OdbcDataAdapteradapter;
DataTabledt=newDataTable();
intmaxNum;
privatevoidFormBorrowBook_Load(objectsender,EventArgse)
{
textBoxUserId.Text=userId;
Stringsql=string.Format("selectbookId,bookName,bookWritter,booktype.booktypeName,bookPrice,booktype.flow,publisher.publisherName,ifborrowfrombook,booktype,publisherwherebook.booktypeId=booktype.booktypeIdandbook.publisherId=publisher.publisherId");
try
{
adapter=newOdbcDataAdapter(sql,conn);
adapter.Fill(dt);
dataGridViewAll.DataSource=dt;
}
catch(OdbcExceptionerr)
{
MessageBox.Show(err.Message,"查询失败");
}
}
privatevoidbuttonBorrow_Click(objectsender,EventArgse)
{
Stringuid=textBoxUserId.Text.Trim();
Stringbid=textBoxBookId.Text.Trim();
DateTimeborrowTime=DateTime.Now;
TimeSpana=newTimeSpan(30,0,0,0);
DateTimereturnTime=borrowTime+a;
Stringifout="NO";
try
{
Stringsql3=string.Format("selectifborrowfrombookwherebookId='{0}'",bid);
OdbcCommandcmd3=newOdbcCommand(sql3,conn);
conn.Open();
OdbcDataReaderdr3=cmd3.ExecuteReader();
StringifBorrow="";
while(dr3.Read()){
ifBorrow=(string)dr3[0];
}
dr3.Close();
Stringsql4=string.Format("selectmaxnumberfromreaderwherereaderId='{0}'",uid);
OdbcCommandcmd4=newOdbcCommand(sql4,conn);
OdbcDataReaderdr4=cmd4.ExecuteReader();
while(dr4.Read()){
maxNum=(int)dr4[0];
}
dr4.Close();
if(ifBorrow!
="是"&&maxNum>0)
{
if(uid!
=""&&bid!
="")
{
//conn.Open();
Stringsql1=string.Format("insertintoborrowvalues('{0}','{1}','{2}','{3}','{4}')",uid,bid,borrowTime,returnTime,ifout);
OdbcCommandcmd1=newOdbcCommand(sql1,conn);
intborrown=cmd1.ExecuteNonQuery();
Stringsql2=string.Format("updatebooksetifborrow='是'wherebookId='{0}'",bid);
OdbcCommandcmd2=newOdbcCommand(sql2,conn);
intbookn=cmd2.ExecuteNonQuery();
Stringsql5=string.Format("updatereadersetmaxnumber='{0}'wherereaderId='{1}'",maxNum-1,uid);
OdbcCommandcmd5=newOdbcCommand(sql5,conn);
intMN=cmd5.ExecuteNonQuery();
if(borrown!
=0&&bookn!
=0&&MN!
=0)
{
MessageBox.Show("借书成功!
");
}
}
3-2.借阅书籍
五.总结
对于学习一个学期的C#语言,总体感觉和Java差不多,但是由于项目实践经验少,研发的项目思路不清晰,不过组员能一起自己思考,研发出这简易的图书管理系统,对自己学以致用,感觉挺好的。
此系统的完整源代码链接:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 图书 管理 实验 报告