图书管理系统课程设计说明书.docx
- 文档编号:5486682
- 上传时间:2022-12-17
- 格式:DOCX
- 页数:29
- 大小:376.42KB
图书管理系统课程设计说明书.docx
《图书管理系统课程设计说明书.docx》由会员分享,可在线阅读,更多相关《图书管理系统课程设计说明书.docx(29页珍藏版)》请在冰豆网上搜索。
图书管理系统课程设计说明书
中北大学
课程设计说明书
数据库课程实验周
学生姓名:
刘彦成
学号:
0706034123
学院:
电子与计算机科学技术学院
专业:
计算机科学与技术
题目:
图书管理系统
——借书还书管理子系统
指导教师:
杨晓文
2010年6月10日
1系统设计
1.1设计目标
在学习了数据库原理和SQLServer2000数据库管理系统后,采用VisualC++编程语言开发工具,设计并实现图书管理系统。
本课程的目的是培养学生数据库技术的综合应用能力,通过设计开发一个小型的数据库管理系统,将原理与应用相结合,锻炼学生实际问题的分析、设计与编程能力。
1.2开发和运行环境选择
开发工具:
前台开发语言为VisualC++,后台数据库为SQLServer2000
运行环境:
windows2000及更高的操作系统
2.数据库设计
2.1需求描述
图书管理系统程序运行界面分为登陆界面,功能选择系统主菜单界面两个主要界面。
使用时应先知道管理员帐号和密码,登陆进入系统主菜单界面,里面包括用户信息管理,读者信息管理,图书信息管理,借书还书信息管理,关于系统等五个菜单选项,并其内部功能分别对应工具栏中的功能。
其中用户信息管理包括增加用户、删除用户、修改密码、查询用户和退出系统。
读者信息管理包括增加读者、删除读者、修改读者和查询读者。
图书信息管理包括添加图书、删除图书、修改图书和查询图书。
借书还书信息管理包括借书操作、还书操作、续借操作和查询操作。
借书还书管理子系统的具体功能目标如下:
(1)借书操作:
用户借书后在借出图书信息表中添加用户信息及书籍信息等,并将图书信息表中的数量减1。
(2)续借操作:
当用户借阅图书后,如需延长借阅日期则可使用此功能续借图书。
(3)还书操作:
用户归还书籍后在借书表中删除借出信息,同时在图书信息表中将对应书籍的数量加1,便于他人借阅。
并在还书表中增加借书历史的信息。
(4)逾期罚金:
归还书籍时如果超过期限,规定超过一天罚0.1元钱。
(5)查询借书信息:
查询借书表中读者已借的图书信息。
2.2数据库概念设计
系统功能结构图:
描述系统要实现的各个模块的功能
图1图书管理系统功能结构图
图2图书管理系统总体E-R图
图3图书信息表E-R图
图书(图书编号,图书名,价格,类别名,出版社,作者,数量,ISBN)
图4读者信息表E-R图
读者(借书证号,姓名,班级,学号,密码,性别,到期日期)
图5管理员表E-图
管理员(用户名,密码,权限)
2.3数据库逻辑设计
用户信息表(users):
表1用户表(users)
字段名
字段名称
数据类型
主键
是否为空
用户名
users
文本
Yes
否
权限
powers
文本
No
否
用户密码
passwd
文本
No
否
读者信息表(reader):
表2读者表(reader)
字段名
字段名称
数据类型
主键
是否为空
借书证号
reader_code
文本
Yes
否
姓名
name
文本
No
否
性别
sex
文本
No
是
学号
sno
文本
No
否
班级
dept
文本
No
是
密码
passwd
文本
No
否
到期日期
limite
日期/时间
No
是
图书信息表(book):
表3图书表(book)
字段名
字段类型
数据类型
主键
是否为空
图书编号
book_code
文本
Yes
否
书名
book_name
文本
No
否
作者
writer
文本
No
是
出版社
press
文本
No
是
定价
price
double
No
是
ISBN
isbn
文本
No
是
数量
num
int
No
是
类别名
type
文本
No
是
借书信息表(jsb):
表4借书表(jsb)
字段名
字段名称
类型
主键
是否为空
借书证号
reader_code
文本
Yes
否
还书日期
return_date
日期/时间
No
是
应还日期
Limite_date
日期/时间
No
否
图书编号
book_code
文本
Yes
否
罚款金额
punish
double
No
是
还书信息表(hsb):
表5还书表(hsb)
字段名
字段名称
数据类型
主键
是否为空
借书证号
reader_code
文本
Yes
否
图书编号
book_code
文本
Yes
否
借书日期
borrow_date
日期/时间
No
否
应还日期
return_date
日期/时间
No
否
3图书管理系统(借书还书管理子系统)详细设计
3.1登陆界面:
图6登陆界面图
功能:
提供用户登录,使用户能操作图书管理系统。
代码:
voidCLoginDlg:
:
OnLoginbr()//登录系统
{
CStringstr1,str2;
intsuc;
if(m_uet.IsOpen())
{//打开数据库
m_uet.Close();
}
else
{
m_uet.Open();
}
if(!
m_uet.CanUpdate())
{
AfxMessageBox(_T("无法登录"));
}
else
{
GetDlgItemText(IDC_EDIT1,str1);//获得编辑框中的内容
GetDlgItemText(IDC_EDIT2,str2);
m_uet.MoveFirst();
while(!
m_uet.IsEOF()){
m_uet.m_users.Replace("","");//去掉空格以便于比较
m_uet.m_passwd.Replace("","");
if(m_uet.m_users==str1&&m_uet.m_passwd==str2)//判断用户名和密码
{
suc=1;
break;
}
else
{
m_uet.MoveNext();
}
}
if(suc==1)
{
OnOK();//用户名和密码正确,登录系统
}
else
{
MessageBox("用户名或密码错误,请重新输入!
");
}
}
m_uet.Close();
}
voidCLoginDlg:
:
OnCancel()//退出系统
{
ExitProcess
(1);
}
3.2主菜单界面:
图7主菜单界面图
功能:
主菜单界面包含图书管理系统的所有功能,具体如下:
1)用户管理模块:
添加用户,删除用户,修改密码,查询用户信息。
2)读者管理模块:
添加读者,删除读者,修改读者信息,查询读者信息。
3)图书管理模块:
添加图书,删除图书,修改图书信息,查询图书信息。
4)借书和还书操作模块:
借书操作,还书操作,续借操作,查询借书信息。
借书还书子系统界面、功能及实现代码如下:
1、借书操作:
借书操作界面:
图8借书操作界面图
借书操作功能:
用户借书后在借出图书信息表中添加用户信息及书籍信息等,并将图书信息表中对应图书的数量减1。
借书操作代码:
voidCLibraryView:
:
OnBorrowsys()//响应借书操作模态对话框
{
CBorrowDlgbordlg;
bordlg.DoModal();
}
voidCBorrowDlg:
:
OnBorrow()//借书操作
{
CTimetime=CTime:
:
GetCurrentTime();//获得系统当前时间
intm=0,suc=0,success=0;//定义变量
CStringstr;
if(m_jet.IsOpen()){//打开数据库
m_jet.Close();
}
else{
m_jet.Open();
}
if(!
m_jet.CanUpdate()){
AfxMessageBox(_T("不能完成借书功能!
"));
}
else{
m_jet.MoveLast();//将记录移到最后
m_jet.AddNew();//增加新纪录
UpdateData(TRUE);//更新数据库记录
m_jet.m_reader_code=m_borrow1;
m_jet.m_book_code=m_borrow2;
str=m_jet.m_book_code;
m_jet.m_borrow_date=time;
if(time.GetMonth()==2){
m=28;
}
elseif(time.GetMonth()==4||time.GetMonth()==6||time.GetMonth()==9||time.GetMonth()==11){
m=30;
}
else{
m=31;
}
CTimeSpantmsp(m,0,0,0);
time=time+tmsp;
m_jet.m_return_date=time;
UpdateData(FALSE);
m_jet.Update();
m_jet.Close();
}
if(m_jbet.IsOpen()){//打开数据库
m_jbet.Close();
}
else{
m_jbet.Open();
}
if(!
m_jbet.CanUpdate()){
AfxMessageBox(_T("不能完成借书功能!
"));
}
else{
m_jbet.MoveFirst();
while(!
m_jbet.IsEOF()){//判断是否到达最后一条记录
m_jbet.m_book_code.Replace("","");
if(m_jbet.m_book_code!
=str){//找到当前借出图书的信息
m_jbet.MoveNext();
}
else{
success=1;
suc=1;
break;
}
}
if(success==1)
{
m_jbet.Edit();
m_jbet.m_num=m_jbet.m_num-1;//将当前图书数量减1
m_jbet.Update();
m_jbet.Close();//关闭数据库
}
}
if(suc==1)
{
MessageBox("借书成功!
");
}
else
{
MessageBox("借书失败!
");
}
m_pbt->Invalidate();//重绘窗口
}
2、还书操作:
还书操作界面:
图9还书操作界面图
还书操作功能:
用户归还书籍后在借书表中删除借出信息,同时在图书信息表中将对应书籍的数量加1,便于他人借阅,若所借图书超出限制归还的期限应缴纳罚款金额,并在还书表中增加借书历史信息。
还书操作代码:
voidCLibraryView:
:
OnReturnsys()//响应还书操作模态对话框
{
CReturnDlgretdlg;
retdlg.DoModal();
}
voidCReturnDlg:
:
OnReturn()//还书操作
{
CStringedit1,edit2,str,str1,str2,str3;//定义变量
CTimet1;
intsuc=0,success=0;
if(m_jret.IsOpen())//打开数据库借书表
m_jret.Close();
m_jret.Open();
if(!
m_jret.CanUpdate())
{
AfxMessageBox(_T("无法完成还书功能!
"));
}
if(m_ret.IsOpen())//打开数据库还书表
m_ret.Close();
m_ret.Open();
if(!
m_ret.CanUpdate())
{
AfxMessageBox(_T("无法完成还书功能!
"));
}
CTimetime=CTime:
:
GetCurrentTime();//获得系统当前时间
UpdateData();
GetDlgItemText(IDC_EDIT2,edit1);//获得编辑框中的内容
GetDlgItemText(IDC_EDIT3,edit2);
m_jret.MoveFirst();
while(!
m_jret.IsEOF())//判断是否到最后一条记录
{
m_jret.m_reader_code.Replace("","");//合并空格
m_jret.m_book_code.Replace("","");
if(m_jret.m_reader_code==edit1&&m_jret.m_book_code==edit2){//比较
t1=m_jret.m_return_date;
suc=1;
break;
}
else
m_jret.MoveNext();//下移一条表中记录
}
if(suc==1)
{
m_ret.MoveLast();
m_ret.AddNew();//在还书表中增加借书历史记录
m_ret.m_reader_code=m_return1;
m_ret.m_book_code=m_return2;
str=m_ret.m_book_code;
m_ret.m_return_date=time;
str1=m_ret.m_return_date.Format(_T("%Y-%m-%d%H:
%M:
%S"));//时间类型转换为字符串类型
SetDlgItemText(IDC_EDIT4,str1);
m_ret.m_limite_date=t1;
str2=m_ret.m_limite_date.Format(_T("%Y-%m-%d%H:
%M:
%S"));
SetDlgItemText(IDC_EDIT5,str2);
CTimebegin=m_ret.m_return_date;
CTimeend=m_ret.m_limite_date;
inty1=begin.GetYear();//获得年
inty2=end.GetYear();
intm1=begin.GetMonth();//获得月
intm2=end.GetMonth();
intd1=begin.GetDay();//获得日
intd2=end.GetDay();
intnum=(y2*365+m2*30+d2*1)-(y1*365+m1*30+d1*1);
floatmon;
mon=num*0.1-3;//计算罚金
m_ret.m_punish=mon;
str3.Format("%f",m_ret.m_punish);
SetDlgItemText(IDC_EDIT6,str3);
m_ret.Update();
MessageBox("还书成功!
");
m_ret.Close();//关闭数据库还书表
m_jret.MoveFirst();
while(!
m_jret.IsEOF())
{
m_jret.m_reader_code.Replace("","");
m_jret.m_book_code.Replace("","");
if(m_jret.m_reader_code==edit1&&m_jret.m_book_code==edit2)
{
m_jret.Delete();//删除借书表中的信息
break;
}
else
m_jret.MoveNext();
}
m_jret.Close();//关闭借书表
}
else
{
MessageBox("归还失败!
");
}
if(m_bret.IsOpen())//打开图书表
{
m_bret.Close();
}
else
{
m_bret.Open();
}
if(!
m_bret.CanUpdate())
{
AfxMessageBox(_T("不能完成借书功能!
"));
}
else
{
m_bret.MoveFirst();
while(!
m_bret.IsEOF()){
m_bret.m_book_code.Replace("","");
if(m_bret.m_book_code!
=str)
{
m_bret.MoveNext();
}
else
{
success=1;
break;
}
}
if(success==1)
{
m_bret.Edit();
m_bret.m_num=m_bret.m_num+1;//图书表中对应图书数量加1
m_bret.Update();
m_bret.Close();//关闭图书表
}
}
m_prt->Invalidate();
}
3、续借操作:
续借操作界面:
图10续借操作界面图
续借操作功能:
当用户借阅图书后,如需延长借阅日期则可使用此功能续借图书。
续借操作代码:
voidCLibraryView:
:
OnReborrowbook()//响应续借操作模态对话框
{
CReborrowDlgreborrowdlg;
reborrowdlg.DoModal();
}
voidCReborrowDlg:
:
OnReborrow()//续借操作
{
CStringedit1,edit2;//定义变量
CTimetime;
intm;
BOOLsuc;
if(m_rbet.IsOpen())//打开数据库借书表
m_rbet.Close();
m_rbet.Open();
if(!
m_rbet.CanUpdate())
{
AfxMessageBox(_T("无法修改数据库记录"));
}
else
{
GetDlgItemText(IDC_EDIT1,edit1);//获得编辑框的内容
GetDlgItemText(IDC_EDIT2,edit2);
m_rbet.MoveFirst();
while(!
m_rbet.IsEOF()){
m_rbet.m_reader_code.Replace("","");//合并空格
m_rbet.m_book_code.Replace("","");
if(m_rbet.m_reader_code!
=edit1&&m_rbet.m_book_code!
=edit2)
{
m_rbet.MoveNext();
}
else
{
suc=true;
break;
}
}
if(suc)
{
m_rbet.Edit();
time=m_rbet.m_return_date;
if(time.GetMonth()==2)
m=28;
else
if(time.GetMonth()==4||time.GetMonth()==6||time.GetMonth()==9||time.GetMonth()==11)
m=30;
else
m=31;
CTimeSpantmsp(m,0,0,0);
time=time+tmsp;
m_rbet.m_return_date=time;//续借一个月
m_rbet.Update();
}
else
MessageBox("无此图书或学号,请重新输入!
");
m_rbet.Close();
MessageBox("续借成功!
");
m_prbt->Invalidate();//重绘窗口
}
}
4、查询操作:
查询操作界面:
图11查询操作界面图
查询操作功能:
查询借书表中读者已借的图书信息。
查询操作代码:
voidCLibraryView:
:
OnChecksys()
{
CcheckDlgchedlg;
Chedlg.DoModal();
}
voidCCheckDlg:
:
OnCheck()//查询读者借书信息
{
CStringedit1,str1,str2;//定义变量
intsuc=0;
if(m_cet.IsOpen())
{//打开数据库借书表
m_cet.Close();
}
else
{
m_cet.Open();
}
if(!
m_cet.CanUpdate())
{
AfxMessageBox(_T("无法查询数据库记录"));
}
else
{
GetDlgItemText(IDC_EDIT5,edit1);//获得编辑框中的内容
m_cet.MoveFirst();
while(!
m_cet.IsEOF()){
m_cet.m_reader_code.Replace("","");//合并空格
if(m_cet.m_reader_code!
=edit1)//比较借书证号是否匹配
{
m_cet.MoveNext();
}
Else
{
suc=1;
break;
}
}
if(suc==1)
{//若匹配则返回借书信息
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 管理 系统 课程设计 说明书