图书管理系统需求设计数据库课程设计Word格式文档下载.docx
《图书管理系统需求设计数据库课程设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《图书管理系统需求设计数据库课程设计Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。
(1)图书信息管理模块
主要实现对图书基本信息的录入、查询修改、删除操作。
录入图书的图书号、图书名、作者、出版社、出版时间、现有量等信息,以图书编码为唯一关键字。
使用查询功能查询出需要修改/删除的记录,然后进行修改/删除操作,修改时要保证图书号的唯一性。
图书下架功能将下架图书的基本信息删除。
(2)读者信息管理模块
实现读者信息的录入、查询、修改和删除操作。
录入读者姓名、借书卡号、电话、单位、性别等信息,以借书卡号为唯一关键字。
使用查询功能查询出需要修改/删除的记录,然后进行修改/删除操作,修改时要保证借
书卡号的唯一性。
图书卡的注销是借书卡持有者将不再在此图书馆借阅书籍,其借书卡将不能继续使用,而被注销,从而删除关于此读者的全部信息。
(3)借还书信息管理模块
实现借书、还书的手续办理、信息查询、续签及借书超期处理等操作。
借书手续要先输入借书卡号,检查是否有未还图书记录和借书数量的检查.若符合则添加借书卡号,书号及借书时间等信息。
借书记录查询及续签:
输入借记卡号可获得其相关信息并可办理续签手续。
还书手续:
输入借记卡号,删除此借书记录,并将还回的图书记录到未借出类别中。
3、代码设计:
--录入(图书)
CStringstrSql;
CStringdateTime=publishTime.Format(_T("
%Y-%m-%d"
));
strSql.Format("
INSERTINTO
Book_info(Book_id,Book_name,Writer,Publish,PublishTime,Introduction,Book_count)
VALUES('
%s'
'
%s)"
book_id,book_name,writer,publish,date
Time,introduction,book_count);
--查询及修改(图书)
--图书信息查询
CStringsqlstr;
sqlstr.Format("
SELECTCard_id,Book_id,Lendtime,expectBacktimeFROMBorrow_cardWHEREBook_id='
"
book_id_Bo);
m_pRecordset.CreateInstance("
ADODB.Recordset"
);
//为Recordset对象创建实例_bstr_tstrCmd=(_bstr_t)sqlstr;
m_pRecordset=m_pConnection->
Execute(strCmd,&
RecordsAffected,ADODB:
:
adCmdText);
_variant_tvCard_id,vBook_id,vLendtime,vexpectBacktime;
try
{
while(!
m_pRecordset->
adoEOF)
vCard_id=m_pRecordset->
GetCollect(_variant_t((long)0));
GetCollect("
Card_id"
vBook_id=m_pRecordset->
Book_id"
vLendtime=m_pRecordset->
Lendtime"
vexpectBacktime=m_pRecordset->
expectBacktime"
)
CStringstrtemp;
if(vCard_id.vt!
=VT_NULL)
strtemp+="
"
;
strtemp+=(LPCTSTR)(_bstr_t)vCard_id;
}
if(vBook_id.vt!
strtemp+=(LPCTSTR)(_bstr_t)vBook_id;
if(vLendtime.vt!
strtemp+=(LPCTSTR)(_bstr_t)vLendtime;
if(vexpectBacktime.vt!
strtemp+=(LPCTSTR)(_bstr_t)vexpectBacktime;
list_Bo.AddString(strtemp);
list_Bo.AddString("
\n"
MoveNext();
catch(_com_error&
e)
AfxMessageBox(e.Description());
--图书信息修改
UPDATEBorrow_cardSET
expectBacktime=expectBacktime+15WHEREBook_id='
book_id_X);
_bstr_tstrCmd=(_bstr_t)sqlstr;
m_pConnection->
--删除(图书)
if(!
D_bookname.IsEmpty())
UPDATEBook_infoSETBook_count=0WHEREBook_name='
D_bookname);
else
UPDATEBook_infoSETBook_count=0WHEREBook_id='
D_bookid);
--续签:
--还书手续办理:
CStringdateTime;
dateTime=back_time_B.Format(_T("
UPDATEBorrow_cardSETBacktime='
WHEREBook_id='
ANDCard_id='
dateTime,book_id_B,card_id_B);
_bstr_tstrCmd=(_bstr_t)strSql;
UPDATEBook_infoSETBook_count=Book_count+1WHEREBook_id='
book_id_B);
//图书超期检测
//为Recordset对象创建实例COleDateTimenow;
now=COleDateTime:
GetCurrentTime();
CStringsqlStr;
sqlStr.Format("
SELECT*FROMBorrow_cardWHERECard_id='
ANDBook_id='
ANDBacktimeisNOTNULLAND
expectBacktime<
Backtime"
card_id_B,book_id_B);
_bstr_tstrCmd=(_bstr_t)sqlStr;
//图书超期处理
intdays(0),tempDays(0);
COleDateTimebackDay,expectBackday;
COleDateTimeSpantimeSpan;
_variant_tvBackDays,vExpectBackDays;
vBackDays=m_pRecordset->
GetCollect(_variant_t((long)3));
vExpectBackDays=m_pRecordset->
GetCollect(_variant_t((long)4));
backDay.ParseDateTime((LPCTSTR)(_bstr_t)vBackDays);
expectBackday.ParseDateTime((LPCTSTR)(_bstr_t)vExpectBackDays);
timeSpan=expectBackday-backDay;
tempDays=timeSpan.GetDays();
CStringmesStr;
floattempYuan=tempDays*0.1;
mesStr.Format("
借书卡号:
%s,借书:
%s,超期%d天应缴罚款%.2f元
card_id_B,book_id_B,tempDays,tempYuan);
AfxMessageBox(mesStr);
days+=tempDays;
//还书后删除借书记录
读者
图书
DELETEFROMBorrow_cardWHEREBook_id='
ANDCard_id='
book_id_B,card_id_B);
4、数据库概念结构设计
借书记录查询及续签根据上面的设计规划出的实体有:
图书实体、读者实体、借还书实体。
它们之间的关系如下图。
借出时间
图书名
借书卡号
图书号
作者
姓名
性别
借还书
单位
现有量
出版时间
电话号码
内容简介
出版社
归还时间
5、数据库逻辑结构设计
现在需要将上面的数据库概念结构转化为SQLServer2000数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。
在上面的实体及实体之间的基础上,形成数据库中的表及各个表之间的关系。
图书管理系统数据库中各个表格的设计如下面几个表所示。
每个
KEY
表表示数据库中的一个数据表。
图书信息表(Book_info)
序号
字段号
字段含义
字段类型
字段长度
小数位
允许空
1
Book_id
书号
Varchar
14
NOTNULL
2
Book_name
书名
30
3
Writer
20
NULL
4
Publish
5
PublishTime
Datetime
6
Introductio
n
TEXT
500
7
Book_count
图书数量
INTEGER
借书卡信息表(Reader_info)
Card_id
8
Name
Sex
Unit
Email
电子邮件
Phone
电话
15
借书登记卡信息(BorrowCard_info)
Lendtime
Backtime
Expect_Ba
ckTime
预期归还时间
6、数据库及基本表结构定义--图书信息表
CREATETABLEBook_info
(Book_idVarchar(14)PRIMARYKEY,
Book_nameVarchar(30)NOTNULL,
WriterVarchar(20),
PublishVarchar(20),
PublishTimeDATETIME,
IntroductionTEXT,
Book_countINTEGERNOTNULL)
--读者信息表
CREATETABLEReader_info
(Card_idVarchar(8)PRIMARYKEY,
NameVARCHAR(8)NOTNULL,
WriterVarchar(8),
SexVARCHAR
(2),
UnitVARCHAR(20),
EmailVARCHAR(64),
PhoneVARCHAR(20))
--借书信息表
CREATETABLEBorrow_card
(Card_idVARCHAR(8)NOTNULL,
Book_idVARCHAR(14)NOTNULL,
LendtimeDATETIME,
expectBacktimeDATETIME,
BacktimeDATETIME,
PRIMARYKEY(Book_id,Card_id),
FOREIGNKEY(Book_id)REFERENCESBook_info(Book_id)ONDELETECASCADEONUPDATECASCADE,FOREIGNKEY(Card_id)REFERENCESReader_info(Card_id)ONDELETECASCADEONUPDATECASCADE)
7、系统总体设计
在编写这个程序的时候,我们使用了OFFICE办公软件中的重要组件access创建数据库,visualstudio2005的环境中编写了这个程序。
在为期10天的数据库课程设计中,我们先对整个程序做了主题构思,确立各个模块,逐一完成他们,从而完成整个程序。
图书管理员可以实现图书录入、查询、下架,借书记录添加、查询、修改以及还书等操作。
完成主体构思以后我们正式开始制作这个程序。
我们把数据库命名为BOOK(即图书管理系统),制作了三张数据表,在制作界面的时候我们尽量考虑到界面美观,在这方面基本没有遇到问题,然而在书写代码的时候却出现了很多的问题。
8、总结
软件特点:
使用时用户必须先登录才可进行操作,未注册的用户必须先注册。
操作时用户通过对话框按键来完成所需求的功能
遇到问题:
1)数据库创建好图书信息表,读者信息表及借书信息表后,在程序中添加创用户表时,数据库中不会创建这个表。
2)创建了用户表后在对其进行修改和添加时,总是提示语法错误。
解决方法:
1)自己在数据库中手动添加的用户表
2)在用户表的修改和添加语句中把用户表中属性名用[]括起来。
改进想法:
1)对数据库进行更严格的密码保护,添加数据库密码。
收获:
在这次的数据库实习中,在从开始的设计到后面的编程的过程中收获较多。
体验到了先设计再编程的诸多好处,例如在写程序时可以有一个比较清晰的思路,知道有哪些类,需要实现哪些功能等。
也体验了数据库和程序结合的编程应用,学了程序与数据库链接的几种方式,并在程序中运用。
再次巩固了数据库语句的应用。
感受较深的还是在写程序前的各种分析及设计,不同的想法就会产生不同的解决方案。
把自己想成用户,或是设计人员去和别人交流思想,改进设计,才能等到用户满意的完善的软件系统,设计人员才能清晰的去实现整体的需求。
所以这次最大的收获应该是编程前的设计,要清楚的知道自己需要哪些类才能将功能全面实现,在着手程序才是最有效率的编程步骤。
9、附录
规格说明书
用户使用手册(首次登陆可用:
用户名:
gaojj密码:
123)
运行程序,就会出现用户登录界面,用户可选择登录或注册,注册则进入注册界面进行新用户的注册操作。
选择登录就可进入到功能选择界面,可根据用户需求选择功能按钮。
用户登陆界面
用户注册界面
选择操作界面
将新书信息按属性名对应添加即可。
输入书名可获得为此书名的图书的相关信息,并在下面的列表中显示。
修改只需将图书号添加,然后填写要修改的属性信息即可。
用户可根据不同需求,选择填入图书名或图书号点击删除按钮,图书信息。
将新读者信息按属性名对应添加即可。
输入借书卡号可获得此借书卡持有者的相关信息,并在下面的列表中显示。
修改只需将借书卡号添加,然后填写要修改的属性信息即可。
输入借书卡号,可将此借书卡的相关信息删除。
用户只需输入借书卡号和图书号即可。
输入图书号即可查询该图书的借阅情况,同样输入图书号可办理续借手续。
输入借书卡号和图书号即可办理还书手续,若图书借阅超期则会显示超期时间和罚款钱数。
图书录入界面
图书信息查询及修改界面
图书信息查询
借书记录查询及图书续借的界面
借书卡信息查询及修改界面