《数据库课程设计-图书管理系统.doc》由会员分享,可在线阅读,更多相关《数据库课程设计-图书管理系统.doc(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、河南理工大学课程设计报告课程名称 数据库课程设计 设计题目 图书管理系统 学生姓名 学 号 专业班级 指导教师 2012 年 9 月 15 日目录1. 需求分析32. 总体设计43. 数据库设计6 3.1.关系模式6 3.2.概念设计63.2.1.分实体E-R模型63.2.2.总实体E-R模型8 3.3.逻辑设计93.3.1.书籍表93.3.2.读者表93.3.3.管理表9 3.4.物理设计103.4.1.数据库的建立103.4.2.书籍表的建立103.4.3.管理表的建立103.4.4.读者表的建立114. 程序模块设计11 4.1.用户界面设计11 4.2.程序代码设计145. 系统使用说
2、明27 5.1.用户登录27 5.2.读者查询271. 需求分析经过实际考察、咨询和分析,图书管理系统主要应该具有以下功能模块,如1.1图。在读者信息管理部分,要求如下。l 可以浏览读者信息。l 可以对读者信息进行维护,包括修改及删除等操作。在读者查询管理部分,要求如下。l 可以查询读者的信息。l 可以对读者信息进行修改和维护。在书籍信息管理部分,要求如下。l 可以浏览书籍信息。l 可以对书籍信息进行维护,包括修改及删除等操作。在借阅信息管理部分,要求如下。l 可以浏览借阅信息。l 可以对借阅信息进行维护操作,包括借、还书,及缴纳罚款等操作。在用户信息管理部分,要求如下。l 显示当前数据库中用
3、户情况。l 对用户信息维护操作。用户登录读者信息管理读者查询管理书籍信息管理借阅信息管理用户信息管理退 出图1.1 系统业务逻辑关系2. 总体设计 图书管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。系统开发的总体任务是实现各种信息的系统化,规范化和自动化。系统开发平台需求:前台:1、 硬件要求:CPU: Pentium 4 2.0GHz以上内存:512MB以上容量显卡:128MB或以上显存2、软件要求:操作系统:Microsof
4、t Windows 2000/XP/Windows 7开发工具:Microsoft Visual Studio数据库服务器:1、 硬件要求:CPU: Pentium4 2.8GHz以上内存:1024MB以上容量显卡:128MB或以上显存2、 软件要求:操作系统:Microsoft Windows 2000 Server数据库服务器:Microsoft SQL 2005 Server图书馆管理信息系统需要完成功能主要有:(1). 读者基本信息的输入,包括读者编号、读者姓名。(2)读者基本信息的查询、修改,包括读者编号、读者姓名、读者证件号等。(3)书籍信息的输入,包括书籍编号、书籍名称、书籍类别
5、、作者姓名、出版社名称、出版日期、登记日期。(4)书籍库存信息的查询,修改,包括书籍编号、书籍名称、书籍类别、作者姓名、出版社名称、出版日期登记日期等。(5)借书信息的输入,包括读者编号、书籍编号、借书日期。(6)借书信息的查询、修改,包括读者编号、读者姓名、书籍编号、书籍名称、借书日期等。(7)还书信息的输入,包括读者编号、书籍编号、还书日期。 (8)还书信息的查询和修改,包括还书读者编号、读者姓名、书籍编号、书籍名称、借书日期、还书日期等。(9)超期还书罚款输入,还书超出期限包括超出期限还书的读者证号,书籍编号,罚款金额。(10)超期还书罚款查询,删除,包括读者编号、读者姓名、书籍编号、书
6、籍名称,罚款金额等。3.数据库设计3.1.关系模式(一) 书籍(书籍编号,书籍名称,作者,出版社,出版日期)(二) 读者(读者编号,读者姓名,读者证件号,读者性别,读者借书量)(三) 借阅(读者编号,书籍编号,操作员号,读者借书时间)(四) 还书(读者编号,书籍编号,读者还书时间)(五) 管理员(管理员编号,管理员姓名,管理员证件号,管理员密码,管理员职务)(六) 罚款(读者编号,读者姓名,书籍编号,读者借书时间,缴纳罚款)以上通过关系代数方法的进行运算得到所需要的结果,在实验结果中可以看到。3.2.概念设计3.2.1分实体E-R模型1. 书籍 书籍书籍名称书籍编号作者出版社出版日期2. 读者
7、读者读者借阅量读者姓名读者证件读者姓名读者编号3. 借阅借阅书籍编号操作员号结束时间书籍编号4. 还书还书书籍编号还书时间读者编号5. 管理员管理员管理职务管理编号管理姓名管理证件管理密码6. 罚款罚款缴纳罚款读者编号读者姓名书籍编号借书时间3.2.2.总实体E-R图(属性略)借阅,归还确定缴纳超期管理管理罚款书籍读者管理员3.3.逻辑结构设计3.3.1.书籍表字段类型长度必填字段允许空值备注Book-idint否id主键Book-namechar50是否图书名称publishchar50是否出版社Book-moneyint20是否价格P-datedate是否出版时间book-numberin
8、t8是否图书数量3.3.2.读者表字段类型长度必填字段允许空值备注reader-idint否id主键reader-namechar50是否读者名称Reader-cardint50是否读者证件3.3.3管理员字段类型长度必填字段允许空值备注clerk-idint否id主键clerk-namechar50是否管理名称clerk-pwdint50是否管理密码其他表的逻辑模型略3.4.物理设计3.4.1.创建数据库USE masterGOCREATE DATABASE libraryON ( NAME = library, FILENAME = d:library.mdf, SIZE = 10, MA
9、XSIZE = 50, FILEGROWTH = 5 )LOG ON( NAME = library, FILENAME = d:library.df, SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB )GO3.4.2.书籍表的创建create table book( Book-id varint(20) primary key, Book-name varchar(30) Not null, Book-author varchar(30), Book-publish varchar(30) , Book-date datetime, bookinda
10、te datetime , isborrowed varchar (2) ,)3.4.3.管理员表create table clerk( clerk-id varint(20) primary key, Clerk-name varchar(30) Not null, Clerk-psw varint(20) not null,)3.4.4.读者表create table reader( reader-id varint(20) primary key, reader-name varchar(30) Not null, Reader-card varint(50) not null,)注:其
11、他表的创建略,数据的导入采用已有的数据表格直接导入的。4. 程序模块设计4.1.用户界面设计前台应用程序的设计采用Microsoft Visual Studio进行设计力求做到操作简单,美观,大方,简要设计过程如下。4.1.1.启动页面4.1.2.系统登录界面4.1.3.用户资料维护界面4.1.4.图书资料维护4.1.5.读者资料维护4.1.6.借书界面4.1.7.还书界面4.1.8.缴纳罚款界面4.1.9.读者查询界面4.2.程序代码设计4.2.1.登录界面void CLoginDlg:OnConfirm() / TODO: Add your control notification han
12、dler code hereCClerkDataSet mrsDataSet; /*声明记录集*/CString mSqlStr;UpdateData(TRUE);if (m_strName.IsEmpty() /*判断用户名信息是否为空*/AfxMessageBox(请输入用户名!);return;mSqlStr = SELECT * FROM CLERK WHERE NAME=;mSqlStr = mSqlStr + m_strName;mSqlStr = mSqlStr + AND PASSWORD=;mSqlStr = mSqlStr + m_strPassword;mSqlStr =
13、 mSqlStr + ;if (!mrsDataSet.Open(AFX_DB_USE_DEFAULT_TYPE, mSqlStr)AfxMessageBox(CLERK表打开失败!);return;if (!mrsDataSet.IsEOF()/ Open all function for userm_bSuccess = TRUE;m_strUSERID = mrsDataSet.m_CLERK_ID ;CDialog:OnOK();elseAfxMessageBox(登录失败!);m_strUSERID = _T();return;void CLoginDlg:OnCancel() /
14、TODO: Add your control notification handler code hereCDialog:OnCancel();4.2.2.书籍维护界面void CBookMDlg:OnEdit() / TODO: Add your control notification handler code herem_bEdit = TRUE;SetButtonState();SetTextState();CWnd *pWnd;pWnd = GetDlgItem(IDC_BOOKNAME);pWnd-SetFocus();void CBookMDlg:OnEnquery() / TO
15、DO: Add your control notification handler code hereUpdateData(TRUE);if (m_strBookIDQ.IsEmpty() & m_strBookNameQ.IsEmpty()m_rsDataSet.m_strFilter = ;m_rsDataSet.Requery();DisplayRecord();SetButtonState();return;BOOL mAll = FALSE;if (!m_strBookIDQ.IsEmpty()m_rsDataSet.m_strFilter = BOOK_ID= + m_strBoo
16、kIDQ ;m_rsDataSet.m_strFilter = m_rsDataSet.m_strFilter + ;mAll = TRUE;if (!m_strBookNameQ.IsEmpty()if (mAll)m_rsDataSet.m_strFilter = m_rsDataSet.m_strFilter + AND BOOK_NAME=;m_rsDataSet.m_strFilter = m_rsDataSet.m_strFilter + m_strBookNameQ;m_rsDataSet.m_strFilter = m_rsDataSet.m_strFilter + ;else
17、m_rsDataSet.m_strFilter = BOOK_NAME= + m_strBookNameQ;m_rsDataSet.m_strFilter = m_rsDataSet.m_strFilter + ;m_rsDataSet.Requery();DisplayRecord();SetButtonState();void CBookMDlg:OnExit() / TODO: Add your control notification handler code hereCDialog:OnCancel();void CBookMDlg:OnFirst() / TODO: Add you
18、r control notification handler code hereif(!m_rsDataSet.IsBOF()m_rsDataSet.MoveFirst();DisplayRecord();SetButtonState();void CBookMDlg:OnLast() / TODO: Add your control notification handler code hereif(!m_rsDataSet.IsEOF()m_rsDataSet.MoveLast();DisplayRecord();SetButtonState();void CBookMDlg:OnNew()
19、 / TODO: Add your control notification handler code herem_strBookID = ;m_strBookName = ;m_strAuthor = ;m_strPress = ; m_strPressDate = ;m_strFlag = Y;/m_cntrPosition.UpdateData(FALSE);m_bEdit = TRUE;m_bAdd = TRUE;SetButtonState();SetTextState();CWnd *pWnd;pWnd = GetDlgItem(IDC_BOOKID);pWnd-SetFocus(
20、);void CBookMDlg:OnNext() / TODO: Add your control notification handler code hereif(!m_rsDataSet.IsEOF()m_rsDataSet.MoveNext();DisplayRecord();SetButtonState();void CBookMDlg:OnPrior() / TODO: Add your control notification handler code hereif(!m_rsDataSet.IsBOF()m_rsDataSet.MovePrev();DisplayRecord(
21、);SetButtonState();void CBookMDlg:OnSave() / TODO: Add your control notification handler code hereCOleDateTime dt;UpdateData(TRUE);if (m_strBookID.IsEmpty() | m_strBookName.IsEmpty()AfxMessageBox(请输入相应数据!);return;if (m_bAdd)m_rsDataSet.AddNew();elsem_rsDataSet.Edit();m_rsDataSet.m_AUTHOR = m_strAuth
22、or;m_rsDataSet.m_BOOK_NAME = m_strBookName;m_rsDataSet.m_BOOK_ID = m_strBookID;m_rsDataSet.m_PRESS = m_strPress;m_rsDataSet.m_FLAG_BORROW = m_strFlag;if (m_strPressDate.Find(-) EnableWindow(TRUE);pWnd = GetDlgItem(IDC_BOOKID);if (m_bAdd)pWnd-EnableWindow(TRUE);elsepWnd-EnableWindow(FALSE);pWnd = Get
23、DlgItem(IDC_AUTHOR);pWnd-EnableWindow(TRUE);pWnd = GetDlgItem(IDC_PRESS);pWnd-EnableWindow(TRUE);pWnd = GetDlgItem(IDC_PRESSDATE);pWnd-EnableWindow(TRUE);pWnd = GetDlgItem(IDC_FLAG_BORROW);pWnd-EnableWindow(TRUE);elsepWnd = GetDlgItem(IDC_BOOKNAME);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_BOOK
24、ID);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_AUTHOR);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_PRESS);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_PRESSDATE);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_FLAG_BORROW);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_BOOKNAME_Q);pWnd-Enabl
25、eWindow(TRUE);pWnd = GetDlgItem(IDC_BOOKID_Q);pWnd-EnableWindow(TRUE);return TRUE;BOOL CBookMDlg:SetButtonState()CWnd *pWnd;if(!m_rsDataSet.IsOpen()pWnd = GetDlgItem(IDC_FIRST);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_NEXT);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_PRIOR);pWnd-EnableWindo
26、w(FALSE);pWnd = GetDlgItem(IDC_LAST);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_NEW);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_EDIT);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_ENQUERY);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_DELETE);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_
27、SAVE);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_CANCEL_REC);pWnd-EnableWindow(FALSE);return TRUE;if (m_bEdit)pWnd = GetDlgItem(IDC_FIRST);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_NEXT);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_PRIOR);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_LAS
28、T);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_NEW);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_EDIT);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_ENQUERY);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_DELETE);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_SAVE);pWnd-EnableWindow(TRUE);pWnd
29、 = GetDlgItem(IDC_CANCEL_REC);pWnd-EnableWindow(TRUE);return TRUE;if (m_rsDataSet.IsBOF()pWnd = GetDlgItem(IDC_FIRST);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_PRIOR);pWnd-EnableWindow(FALSE);elsepWnd = GetDlgItem(IDC_FIRST);pWnd-EnableWindow(TRUE);pWnd = GetDlgItem(IDC_PRIOR);pWnd-EnableWindow
30、(TRUE);if (m_rsDataSet.IsEOF()pWnd = GetDlgItem(IDC_NEXT);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_LAST);pWnd-EnableWindow(FALSE);elsepWnd = GetDlgItem(IDC_NEXT);pWnd-EnableWindow(TRUE);pWnd = GetDlgItem(IDC_LAST);pWnd-EnableWindow(TRUE);if (m_rsDataSet.IsBOF() & m_rsDataSet.IsEOF()pWnd = GetD
31、lgItem(IDC_EDIT);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_DELETE);pWnd-EnableWindow(FALSE);elsepWnd = GetDlgItem(IDC_EDIT);pWnd-EnableWindow(TRUE);pWnd = GetDlgItem(IDC_DELETE);pWnd-EnableWindow(TRUE);pWnd = GetDlgItem(IDC_NEW);pWnd-EnableWindow(TRUE);pWnd = GetDlgItem(IDC_ENQUERY);pWnd-Enable
32、Window(TRUE);pWnd = GetDlgItem(IDC_SAVE);pWnd-EnableWindow(FALSE);pWnd = GetDlgItem(IDC_CANCEL_REC);pWnd-EnableWindow(FALSE);return TRUE;BOOL CBookMDlg:OnInitDialog() CDialog:OnInitDialog();/ TODO: Add extra initialization herem_bAdd = FALSE;m_bEdit = FALSE;if (!m_rsDataSet.Open(AFX_DB_USE_DEFAULT_T
33、YPE)AfxMessageBox(数据打开失败!);DisplayRecord();SetButtonState();SetTextState();return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSE注:其他相关页面和书籍页面代码基本类似,做简要修改即可,此处省略!5. 系统使用说明5.1.管理员登录5.1.1.创建数据库连接 通过SQL SERVER把library数据库文件附加到数据库引擎中,建立ODBC数据库
34、数据源,打开登录页面即可登录!管理员分为三个级别,馆长:黄彦祥,密码:,主任:朱海,密码:123馆员:李亚兰,密码:123分别登录可以完成对系统的维护及操作。5.2.读者查询读者输入相应的信息可以查询读者的借阅情况。参考文献:1 王珊 萨师煊. 数据库系统概论(第四版).北京:高等教育出版社2 刘意成.SQL实战演练M .北京:西安电子科技大学出版社3 周绪.SQL Server 2000中文版入门与提高M .北京:清华大学出版社4李爱武编著. SQL Server2000数据库系统实训教程. 北京:北京邮电大学出版社,20045王越, 刘加伶, 李粱编著. 大型数据库技术及应用. 重庆:重庆
35、大学出版社, 2001结束语:经过半个月的努力,课程设计基本完成了。在整个课程设计的实践中,我学到很多有用的知识,也积累了不少宝贵的开发经验。比如用vs操作数据库,SQL语句的应用等。本设计通过自己的努力,基本满足了图书管理的基本需要,实现了用户使用的方便以及管理员管理的方便,在界面上力求做到简单实用,在操作方面尽量做到满足用户使用的习惯,但由于自己的水平有限和时间的不足,在很多方面还不完善,有些功能没有在全局上把握好,比如一些功能函数可以在一个文件中定义,具体页面需要用到再直接引用,SQL语句的执行效果也存在效率不高的问题,关于图书管理的所有操作集中在一个页面实现,出现了一些混淆,程序更改,测试时很不好等。在今后的学习当中将继续完善此系统,使其功能更加强大,满足用户的更多需求。不管怎么说,对这次做的课程设计自己觉得还算满意。