《图书管理系统需求设计---数据库---课程设计(共15页).doc》由会员分享,可在线阅读,更多相关《图书管理系统需求设计---数据库---课程设计(共15页).doc(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上用例图:2.2功能需求:对于本系统需要实现以下基本功能。图书管理员通过用户登录界面,输入用户名和密码验证后可进入程序进行管理操作。图书管理图书录入:添加新增图书的基本信息。图书下架:将已下架图书的数量归零。.图书查询:输入图书名或图书号可获得当前图书管该书的库存量及该书的相关信息。读者管理添加读者信息:添加新增读者的信息。读者查询及修改:输入读者姓名或借书卡号可获得读者的基本信息并可修改其信息。删除读者信息:输入读者姓名删除读者信息。借还书服务借书登记:先输入借书卡号,检查是否有未还图书记录和借书数量的检查.若符合则添加借号,书号及借书时间等信息。借书记录查询及续签:
2、输入借记卡号或书号可获得其相关信息并可办理续签手续。还书手续办理:输入借记卡号及书号,在借书记录添加还书时间。借书超期超量处理:该功能在读者还书时检索读者借书信息判断是否超期,进行相应的惩罚。2.3系统功能设计:通过对现行图书馆的业务进行调查,明确了图书馆工作由图书管理、读者管理、借书服务和还书服务4部分组成。该系统分个主要功能块,如下图所示。进入系统操作前,有用户登录和注册功能,只有注册过的用户才能进行下属操作,未注册的用户必须在获得数据库密码的情况下方可进行用户注册,之后才能进去管理流程。() 图书信息管理模块主要实现对图书基本信息的录入、查询修改、删除操作。录入图书的图书号、图书名、作者
3、、出版社、出版时间、现有量等信息,以图书编码为唯一关键字。使用查询功能查询出需要修改删除的记录,然后进行修改删除操作,修改时要保证图书号的唯一性。图书下架功能将下架图书的基本信息删除。() 读者信息管理模块实现读者信息的录入、查询、修改和删除操作。录入读者姓名、借书卡号、电话、单位、性别等信息,以借书卡号为唯一关键字。使用查询功能查询出需要修改删除的记录,然后进行修改删除操作,修改时要保证借书卡号的唯一性。图书卡的注销是借书卡持有者将不再在此图书馆借阅书籍,其借书卡将不能继续使用,而被注销,从而删除关于此读者的全部信息。() 借还书信息管理模块实现借书、还书的手续办理、信息查询、续签及借书超期
4、处理等操作。借书手续要先输入借书卡号,检查是否有未还图书记录和借书数量的检查.若符合则添加借书卡号,书号及借书时间等信息。借书记录查询及续签:输入借记卡号可获得其相关信息并可办理续签手续。还书手续:输入借记卡号,删除此借书记录,并将还回的图书记录到未借出类别中。3、代码设计:-录入(图书)CString strSql;CString dateTime=publishTime.Format(_T(%Y-%m-%d);strSql.Format(INSERT INTO Book_info(Book_id,Book_name,Writer,Publish,PublishTime,Introducti
5、on,Book_count) VALUES(%s,%s,%s,%s,%s,%s,%s),book_id,book_name,writer,publish,dateTime,introduction,book_count);-查询及修改(图书)-图书信息查询CString sqlstr;sqlstr.Format(SELECT Card_id,Book_id,Lendtime,expectBacktime FROM Borrow_card WHERE Book_id=%s,book_id_Bo);m_pRecordset.CreateInstance(ADODB.Recordset); /为Re
6、cordset对象创建实例_bstr_t strCmd=(_bstr_t)sqlstr;m_pRecordset=m_pConnection-Execute(strCmd,&RecordsAffected,ADODB:adCmdText);_variant_t vCard_id,vBook_id,vLendtime,vexpectBacktime;trywhile(!m_pRecordset-adoEOF)vCard_id=m_pRecordset-GetCollect(_variant_t(long)0);vCard_id=m_pRecordset-GetCollect(Card_id);v
7、Book_id=m_pRecordset-GetCollect(Book_id);vLendtime=m_pRecordset-GetCollect(Lendtime);vexpectBacktime=m_pRecordset-GetCollect(expectBacktime)CString strtemp;if(vCard_id.vt!=VT_NULL)strtemp+= ;strtemp+=(LPCTSTR)(_bstr_t)vCard_id;if(vBook_id.vt!=VT_NULL)strtemp+= ;strtemp+=(LPCTSTR)(_bstr_t)vBook_id;if
8、(vLendtime.vt!=VT_NULL)strtemp+= ;strtemp+=(LPCTSTR)(_bstr_t)vLendtime;if(vexpectBacktime.vt!=VT_NULL)strtemp+= ;strtemp+=(LPCTSTR)(_bstr_t)vexpectBacktime;list_Bo.AddString(strtemp);list_Bo.AddString(n);m_pRecordset-MoveNext();catch(_com_error &e)AfxMessageBox(e.Description();-图书信息修改CString sqlstr;
9、sqlstr.Format(UPDATE Borrow_card SET expectBacktime=expectBacktime+15 WHERE Book_id=%s,book_id_X);_bstr_t strCmd=(_bstr_t)sqlstr;m_pConnection-Execute(strCmd,&RecordsAffected,ADODB:adCmdText);-删除(图书)CString sqlstr;if(!D_bookname.IsEmpty()sqlstr.Format(UPDATE Book_info SET Book_count=0 WHERE Book_nam
10、e=%s ,D_bookname);elsesqlstr.Format(UPDATE Book_info SET Book_count=0 WHERE Book_id=%s ,D_bookid);_bstr_t strCmd=(_bstr_t)sqlstr;m_pConnection-Execute(strCmd,&RecordsAffected,ADODB:adCmdText);-续签:CString sqlstr;sqlstr.Format(UPDATE Borrow_card SET expectBacktime=expectBacktime+15 WHERE Book_id=%s,bo
11、ok_id_X);_bstr_t strCmd=(_bstr_t)sqlstr;m_pConnection-Execute(strCmd,&RecordsAffected,ADODB:adCmdText);-还书手续办理:tryCString strSql;CString dateTime;dateTime=back_time_B.Format(_T(%Y-%m-%d);strSql.Format(UPDATE Borrow_card SET Backtime=%s WHERE Book_id=%s AND Card_id=%s,dateTime,book_id_B,card_id_B);_b
12、str_t strCmd=(_bstr_t)strSql;m_pConnection-Execute(strCmd,&RecordsAffected,ADODB:adCmdText);catch(_com_error &e)AfxMessageBox(e.Description(); tryCString sqlstr;sqlstr.Format(UPDATE Book_info SET Book_count=Book_count+1 WHERE Book_id=%s,book_id_B);_bstr_t strCmd=(_bstr_t)sqlstr;m_pConnection-Execute
13、(strCmd,&RecordsAffected,ADODB:adCmdText);catch(_com_error &e)AfxMessageBox(e.Description(); /图书超期检测trym_pRecordset.CreateInstance(ADODB.Recordset); /为Recordset对象创建实例COleDateTime now;now=COleDateTime:GetCurrentTime();CString sqlStr;sqlStr.Format(SELECT * FROM Borrow_card WHERE Card_id=%s AND Book_id
14、=%s AND Backtime is NOT NULL AND expectBacktimeExecute(strCmd,&RecordsAffected,ADODB:adCmdText); catch(_com_error &e)AfxMessageBox(e.Description();/图书超期处理tryint days(0),tempDays(0);COleDateTime backDay,expectBackday;COleDateTimeSpan timeSpan;_variant_t vBackDays,vExpectBackDays;while(!m_pRecordset-a
15、doEOF)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();CString mes
16、Str; float tempYuan=tempDays*0.1;mesStr.Format(借书卡号:%s,借书:%s,超期%d天应缴罚款%.2f元,card_id_B,book_id_B,tempDays,tempYuan);AfxMessageBox(mesStr);days+=tempDays;m_pRecordset-MoveNext();catch(_com_error &e)AfxMessageBox(e.Description(); /还书后删除借书记录tryCString strSql;CString dateTime;dateTime=back_time_B.Format(
17、_T(%Y-%m-%d);strSql.Format(DELETE FROM Borrow_card WHERE Book_id=%sAND Card_id=%s,book_id_B,card_id_B);_bstr_t strCmd=(_bstr_t)strSql;m_pConnection-Execute(strCmd,&RecordsAffected,ADODB:adCmdText);catch(_com_error &e)AfxMessageBox(e.Description();4、数据库概念结构设计借书记录查询及续签根据上面的设计规划出的实体有:图书实体、读者实体、借还书实体。它们
18、之间的关系如下图。 借出时间 图书名 借书卡号 图书号 作者 姓名 性别图书 借还书 读者 单位 现有量 出版时间 电话号码 内容简介 出版社 归还时间5、数据库逻辑结构设计现在需要将上面的数据库概念结构转化为SQL Server 2000数据库系统所支持的实际数据模型,也就是数据库的逻辑结构。在上面的实体及实体之间的基础上,形成数据库中的表及各个表之间的关系。图书管理系统数据库中各个表格的设计如下面几个表所示。每个表表示数据库中的一个数据表。图书信息表(Book_info)KEY序号字段号字段含义字段类型字段长度小数位允许空1Book_id书号Varchar14NOT NULL2Book_n
19、ame书名Varchar30NOT NULL3Writer作者Varchar20NULL4Publish出版社Varchar20NULL5PublishTime出版时间DatetimeNULL6Introduction内容简介TEXT500NULL7Book_count图书数量INTEGERNOT NULL借书卡信息表(Reader_info)KEY序号字段号字段含义字段类型字段长度小数位允许空1Card_id借书卡号Varchar8NOT NULL2Name姓名Varchar30NULL3Sex性别Varchar2NULL4Unit单位Varchar20NULL5Email电子邮件Varch
20、ar20NULL6Phone电话Varchar15NULL借书登记卡信息(BorrowCard_info)序号字段号字段含义字段类型字段长度小数位允许空1Card_id借书卡号Varchar8NOT NULL2Book_id书号Varchar14NOT NULL3Lendtime借出时间DatetimeNULL4Backtime归还时间DatetimeNULL5Expect_BackTime预期归还时间DatetimeNOT NULL6、数据库及基本表结构定义-图书信息表CREATE TABLE Book_info(Book_id Varchar(14) PRIMARY KEY,Book_na
21、me Varchar(30) NOT NULL,Writer Varchar(20),Publish Varchar(20),PublishTime DATETIME,Introduction TEXT,Book_count INTEGER NOT NULL) -读者信息表CREATE TABLE Reader_info (Card_id Varchar(8) PRIMARY KEY,Name VARCHAR(8) NOT NULL,Writer Varchar(8),Sex VARCHAR(2) ,Unit VARCHAR(20),Email VARCHAR(64),Phone VARCHA
22、R(20)-借书信息表CREATE TABLE Borrow_card (Card_id VARCHAR(8) NOT NULL,Book_id VARCHAR(14) NOT NULL,Lendtime DATETIME,expectBacktime DATETIME,Backtime DATETIME,PRIMARY KEY(Book_id,Card_id), FOREIGN KEY(Book_id) REFERENCES Book_info(Book_id) ON DELETE CASCADE ON UPDATE CASCADE,FOREIGN KEY(Card_id) REFERENC
23、ES Reader_info(Card_id) ON DELETE CASCADE ON UPDATE CASCADE) 7、系统总体设计在编写这个程序的时候,我们使用了OFFICE办公软件中的重要组件access创建数据库,visual studio2005的环境中编写了这个程序。在为期10天的数据库课程设计中,我们先对整个程序做了主题构思,确立各个模块,逐一完成他们,从而完成整个程序。图书管理员可以实现图书录入、查询、下架,借书记录添加、查询、修改以及还书等操作。完成主体构思以后我们正式开始制作这个程序。我们把数据库命名为BOOK(即图书管理系统),制作了三张数据表,在制作界面的时候我们尽
24、量考虑到界面美观,在这方面基本没有遇到问题,然而在书写代码的时候却出现了很多的问题。8、总结软件特点:使用时用户必须先登录才可进行操作,未注册的用户必须先注册。操作时用户通过对话框按键来完成所需求的功能遇到问题:1)数据库创建好图书信息表,读者信息表及借书信息表后,在程序中添加创用户表时,数据库中不会创建这个表。2)创建了用户表后在对其进行修改和添加时,总是提示语法错误。 解决方法:1)自己在数据库中手动添加的用户表 2)在用户表的修改和添加语句中把用户表中属性名用 括起来。改进想法:1)对数据库进行更严格的密码保护,添加数据库密码。收获:在这次的数据库实习中,在从开始的设计到后面的编程的过程
25、中收获较多。体验到了先设计再编程的诸多好处,例如在写程序时可以有一个比较清晰的思路,知道有哪些类,需要实现哪些功能等。也体验了数据库和程序结合的编程应用,学了程序与数据库链接的几种方式,并在程序中运用。再次巩固了数据库语句的应用。感受较深的还是在写程序前的各种分析及设计,不同的想法就会产生不同的解决方案。把自己想成用户,或是设计人员去和别人交流思想,改进设计,才能等到用户满意的完善的软件系统,设计人员才能清晰的去实现整体的需求。所以这次最大的收获应该是编程前的设计,要清楚的知道自己需要哪些类才能将功能全面实现,在着手程序才是最有效率的编程步骤。9、附录规格说明书用户使用手册(首次登陆可用:用户
26、名:gaojj 密码:123)运行程序,就会出现用户登录界面,用户可选择登录或注册,注册则进入注册界面进行新用户的注册操作。选择登录就可进入到功能选择界面,可根据用户需求选择功能按钮。用户登陆界面用户注册界面 选择操作界面 将新书信息按属性名对应添加即可。输入书名可获得为此书名的图书的相关信息,并在下面的列表中显示。 修改只需将图书号添加,然后填写要修改的属性信息即可。用户可根据不同需求,选择填入图书名或图书号点击删除按钮,图书信息。将新读者信息按属性名对应添加即可。输入借书卡号可获得此借书卡持有者的相关信息,并在下面的列表中显示。 修改只需将借书卡号添加,然后填写要修改的属性信息即可。输入借书卡号,可将此借书卡的相关信息删除。用户只需输入借书卡号和图书号即可。输入图书号即可查询该图书的借阅情况,同样输入图书号可办理续借手续。输入借书卡号和图书号即可办理还书手续,若图书借阅超期则会显示超期时间和罚款钱数。图书录入界面 图书信息查询及修改界面图书信息查询借书记录查询及图书续借的界面借书卡信息查询及修改界面专心-专注-专业