数据库设计报告图书管理系统Word文档下载推荐.docx

上传人:b****7 文档编号:22064189 上传时间:2023-02-02 格式:DOCX 页数:29 大小:308.21KB
下载 相关 举报
数据库设计报告图书管理系统Word文档下载推荐.docx_第1页
第1页 / 共29页
数据库设计报告图书管理系统Word文档下载推荐.docx_第2页
第2页 / 共29页
数据库设计报告图书管理系统Word文档下载推荐.docx_第3页
第3页 / 共29页
数据库设计报告图书管理系统Word文档下载推荐.docx_第4页
第4页 / 共29页
数据库设计报告图书管理系统Word文档下载推荐.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

数据库设计报告图书管理系统Word文档下载推荐.docx

《数据库设计报告图书管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据库设计报告图书管理系统Word文档下载推荐.docx(29页珍藏版)》请在冰豆网上搜索。

数据库设计报告图书管理系统Word文档下载推荐.docx

5.分析关系模式各属于第几范式,阐明理由;

图书属于BCNF,因为其中的每个决定因素都包含了码

借书证属于BCNF,因为其中的每个决定因素都包含了码

管理员属于BCNF,因为其中的每个决定因素都包含了码

借阅属于BCNF,因为其中的每个决定因素都包含了码

预约属于BCNF,因为其中的每个决定因素都包含了码

6.开发环境:

VC++,SQLServer通过ODBC连接

二、详细设计

1、数据库设计;

建立admin表

CREATETABLE[dbo].[admin](

[admin_id][nchar](10)NOTNULL,

[admin_password][nchar](10)NULL,

[admin_name][nchar](10)NOTNULL,

[admin_contact][nchar](15)NULL,

PRIMARYKEYCLUSTERED

([admin_id]ASC

)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]

)ON[PRIMARY]

建立book表

CREATETABLE[dbo].[book](

[book_ISBN][nchar](10)NOTNULL,

[book_subject][nchar](10)NULL,

[book_title][nchar](10)NULL,

[book_press][nchar](10)NULL,

[book_year][int]NULL,

[book_authors][nchar](10)NULL,

[book_price][numeric](5,2)NULL,

[book_total_num][int]NULL,

[book_stocked_num][int]NULL,

([book_ISBN]ASC

建立card表

CREATETABLE[dbo].[card](

[card_num][nchar](10)NOTNULL,

[name][nchar](10)NOTNULL,

[unit][nchar](15)NULL,

[rank][nchar](10)NULL,

([card_num]ASC

ALTERTABLE[dbo].[card]WITHCHECKADDCONSTRAINT[c1]CHECK(([rank]='

教师'

OR[rank]='

研究生'

本科生'

))

ALTERTABLE[dbo].[card]CHECKCONSTRAINT[c1]

建立borrow表

CREATETABLE[dbo].[borrow](

[borrow_date][date]NULL,

[return_date][date]NULL,

[admin_id][nchar](10)NULL,

FOREIGNKEY([admin_id])REFERENCES[dbo].[admin]([admin_id])

FOREIGNKEY([book_ISBN])REFERENCES[dbo].[book]([book_ISBN])

FOREIGNKEY([card_num])REFERENCES[dbo].[card]([card_num])

建立order表

CREATETABLE[dbo].[order](

[order_date][date]NULL,

[admin_id][nchar](10)NULL,

([card_num]ASC,[book_ISBN]ASC

2、图书管理系统实现与截图

窗口界面

借书模块部分程序

voidCBookBorrowDlg:

:

OnOK()

{//将编辑框中的数据更新到成员变量m_strCardNum和m_strBookNum中

UpdateData();

if(m_strCardNum=="

"

){AfxMessageBox("

请输入借书证号!

);

return;

}

if(m_strBookNum=="

){

AfxMessageBox("

请输入索书号!

return;

//如果卡号不存在,则拒绝借书

if(!

IsValidCard(m_strCardNum)){

//CDialog:

OnOK();

//调用基类CDialog的OnOK函数来关闭对话框

读者未找到您的注册信息!

return;

//如果有书到期,也返回

if(AnyBookExpired(m_strCardNum)){

return;

//如果要借的书没有库存,也返回

AllowedToBorrow(m_strBookNum)){

//以上都没有问题,才能外借图书

if(BorrowBook(m_strCardNum,m_strBookNum)){

借书成功"

else{

借书失败"

CDialog:

}

boolCBookBorrowDlg:

IsValidCard(constCString&

card_num)

{

//检查card表是否打开

m_cardSet.IsOpen()){

m_cardSet.Open();

//指定查询条件card_num为用户卡号

m_cardSet.m_strFilter.Format("

card_num='

%s'

card_num);

m_cardSet.Requery();

//结果集如果为空则表示卡号不存在

if(m_cardSet.IsEOF()){

该卡号不存在"

returnfalse;

returntrue;

AnyBookExpired(constCString&

{

if(!

m_borrowSet.IsOpen()){

m_borrowSet.Open();

}

m_borrowSet.m_strFilter.Format("

andreturn_dateisnull"

m_borrowSet.Requery();

CTimetoday=CTime:

GetCurrentTime();

//得到今天的日期

CTimeSpandiffDays;

while(!

m_borrowSet.IsEOF())

{

diffDays=today-m_borrowSet.m_borrow_date;

//计算已借图书的时间

if(diffDays.GetDays()>

30){

您有书过期了,请尽快还书!

//超过30天,则报错返回

returntrue;

m_borrowSet.MoveNext();

AllowedToBorrow(constCString&

book_ISBN)

{if(!

m_bookSet.IsOpen()){

m_bookSet.Open();

//指定查询条件book_ISBN

m_bookSet.m_strFilter.Format("

book_ISBN='

book_ISBN);

m_bookSet.Requery();

//结果集为空则表明该书不存在

if(m_bookSet.IsEOF()){

该书不存在"

if(m_bookSet.m_book_stocked_num==0){

该书已经被借空!

BorrowBook(constCString&

card_num,constCString&

m_bookSet.IsOpen()){

//将book表中书的库存-1

m_bookSet.Edit();

m_bookSet.m_book_stocked_num=m_bookSet.m_book_stocked_num-1;

m_bookSet.Update();

//在borrow表中增加一条借书记录

m_borrowSet.IsOpen()){

m_borrowSet.Open();

m_borrowSet.AddNew();

m_borrowSet.m_card_num=card_num;

m_borrowSet.m_book_ISBN=book_ISBN;

m_borrowSet.m_borrow_date=CTime:

m_borrowSet.m_admin_id=admin;

m_borrowSet.Update();

m_borrowSet.Requery();

OnBorrowlist()

请输入卡号!

cardnum=m_strCardNum;

CBorrowListDlgborrowlist;

//构造“借书记录”对话框

borrowlist.DoModal();

//显示“借书记录”对话框

批量入库部分代码

voidCBookEnrollDlg:

inti;

stringstr;

strings="

;

chartmp[100];

CStringm_book_ISBN;

CStringm_book_subject;

CStringm_book_title;

CStringm_book_press;

intm_book_year;

CStringm_book_authors;

doublem_book_price;

intm_book_total_num;

ifstreamfile;

if(m_address.IsEmpty())

{AfxMessageBox("

不能为空"

else

{file.open(m_address);

//打开文件

file)

{AfxMessageBox("

文件打开失败!

if(file){while(getline(file,str,'

\n'

//用getline函数读取文件中的每一行

{intk=0;

intm=0;

intj=0;

inttotal=0;

inta;

intb=0;

doubleprice=0;

for(i=0;

i<

=7;

i++)

{a=0;

while(str[b]!

='

'

&

str[b]){

//读取每一行中的内容,以遇到'

为结束

tmp[a]=str[b];

b++;

a++;

}

b++;

tmp[a]='

\0'

s=tmp;

//调用c_str()函数把string类型转换为cstring类型

switch(i){

case0:

m_book_ISBN=s.c_str();

break;

case1:

m_book_subject=s.c_str();

break;

case2:

m_book_title=s.c_str();

case3:

m_book_press=s.c_str();

//将输入的字符串对应转化为对应的年份

case4:

intyear;

year=(tmp[0]-48)*1000+(tmp[1]-48)*100+(tmp[2]-48)*10+(tmp[3]-48);

m_book_year=year;

case5:

m_book_authors=s.c_str();

//将输入的字符串转化为对应的价格

case6:

doublepoint;

point=((double)tmp[a-1]-48)/100+((double)tmp[a-2]-48)/10;

for(k=0;

k<

a-3;

k++)

price=price*10+(tmp[k]-48);

price+=point;

m_book_price=price;

break;

//将输入的字符串转化为对应的库存数量

case7:

for(m=0;

m<

a;

m++)

total=total*10+(tmp[m]-48);

m_book_total_num=total;

}}

//检测book表是否打开

if(!

m_bookSet.Open();

//如果该书已经存在,在原来的库存量基础上加上入库的数量即可

m_bookSet.m_strFilter.Format("

m_book_ISBN);

m_bookSet.Requery();

m_bookSet.IsEOF()){

m_bookSet.Edit();

m_bookSet.m_book_total_num+=m_book_total_num;

m_bookSet.m_book_stocked_num+=m_book_total_num;

m_bookSet.Update();

continue;

//如果该书不存在

m_bookSet.AddNew();

m_bookSet.m_book_ISBN=m_book_ISBN;

m_bookSet.m_book_subject=m_book_subject;

m_bookSet.m_book_title=m_book_title;

m_bookSet.m_book_press=m_book_press;

m_bookSet.m_book_year=m_book_year;

m_bookSet.m_book_authors=m_book_authors;

m_bookSet.m_book_price=m_book_price;

m_bookSet.m_book_total_num=m_book_total_num;

m_bookSet.m_book_stocked_num=m_book_total_num;

m_bookSet.Update();

AfxMessageBox("

入库成功"

CDialog:

单本入库部分代码

voidCBookSingleEnrollDlg:

CStringstr="

//检测book表是否打开

//输入不能为空

if(m_book_ISBN.IsEmpty()||m_book_subject.IsEmpty()||m_book_title.IsEmpty()||m_book_press.IsEmpty()||m_book_year==0||m_book_authors.IsEmpty()||m_book_price==0||m_book_total_num==0){

请输入完整信息"

book_ISBN='

//如果该书已经存在

m_bookSet.Edit();

m_bookSet.m_book_total_num+=m_book_total_num;

m_bookSet.m_book_stocked_num+=m_book_total_num;

m_bookSet.Update();

入库成功!

//如果该书不存在

m_bookSet.AddNew();

m_bookSet.m_book_ISBN=m_book_ISBN;

m_bookSet.m_book_subject=m_book_subject;

m_bookSet.m_book_title=m_book_title;

m_bookSet.m_book_press=m_book_press;

m_bookSet.m_book_year=m_book_year;

m_bookSet.m_book_authors=m_book_authors;

m_bookSet.m_boo

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1