




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
安徽工业大学软 件 开 发 技 术 报 告课题名称图书管理系统学 院专业班级组 长成 员摘 要摘要内容:我们小组制作的图书管理系统需要实现的功能主要有四大块:基本资料维护、日常维护、系统安全模块和读者查询模块。其中日常维护和基本资料维护是整个系统的核心。日常维护包括借书处理、还书处理和缴纳罚金。基本资料维护包括对读者、员工和图书的信息的维护,主要有读者信息的增删改,对员工资料进行增删改和对图书资料进行增删改。系统安全模块只是实现了最简单的系统登陆检查。读者查询也只是实现了简单的读者查询功能。关键词:基本资料维护、日常维护、系统安全模块和读者查询模块目录1.绪论1.1 概述 1.2 开发环境和开发工具2系统需求分析2.1 用户需求分析2.1.1 用户需求 2.1.2 系统功能需求2.1.3 图书馆系统的数据分析2.2 系统E-R图3.系统设计 3.1 功能模块图及分模块功能描述3.1.1 系统的功能模块图3.1.2系统功能模块简介4.图书管理系统的具体实现 4.1建立数据库4.2图书信息管理系统的整体介绍4.3建立工程4.4登录模块的实现4.5登录模块的具体实现4.6还书模块5.系统测试6.系统说明6.1开发环境6.2系统安装与配置总结参考文献1绪 论1.1 概述 对于图书馆的借书还书过程,我们作为学生的都已经很熟悉。在计算机还没有广泛使用之前,借书和还书主要依靠手工操作。手工操作的种类也很不统一,其中一个最典型的过程就是,读者将要借的书和读者证交给图书馆的工作人员,工作人员将每本书附带的描述书信息的卡和读者的读者证一起放到一个小格里,并在读者证和每本书上贴的借阅条上填写借阅信息。这样就完成了借书的过程。还书时,读者将要还的书交给工作人员,工作人员根据图书信息找到相应的书卡和借阅证,并填写相应的还书信息。很显然,这种业务流程的效率很低,处理能力也不强。一定的时间里,能够得到服务的读者是有限的,远远满足不了今天的图书馆。利用计算机来处理这些流程无疑会极大程度的提高效率和处理能力。接下来的篇章里,就会介绍我们小组制作的一个简单的图书管理系统。 1.2 开发环境与工具 开发环境:VC+ 开发工具:ACCESS2系统需求分析2.1 用户需求分析2.1.1 用户需求借书过程:读者从架上选到所需图书后,将借的书和读者证交给图书馆的工作人员,工作人员将用条码阅读器将图书和读者证上的读者条码信息读入处理系统。系统根据读者条码从读者文件和借阅文件中找到相关记录;根据图书上的条码从图书文件中找到相关记录。若读者符合借书条件,予以借出,系统在借阅文件中增加一条记录,记入读者条码、图书条码、借阅日期等内容。还书过程:还书时读者只要将书交给工作人员,工作人员将树上的图书条码读入系统,系统从借阅文件上找到相应记录,填上还书日期后写入借阅历史文件,并从借阅文件上删去相应记录。同时系统对借还书日期进行计算并判断是否超期,若不超期则结束过程,若超期则计算超期天数、罚款数、记入罚款文件。同时在读者记录上作止借标记。当读者交了罚款后,系统根据读者条码查看罚款文件,并将相应记录写入罚款历史文件,并从罚款文件中删除该记录,同时去掉读者文件中的止借标记。 2.1.2 系统功能需求简单的图书管理系统主要包括下面的功能:借书:完成读者借书;还书:完成读者还书;罚款:对读者借书超期的处理;添加新书:输入新的图书信息;删除旧书:删除图书的资料;读者查询:根据输入的读者号查询读者借阅图书的情况。2.1.3 图书馆系统的数据分析通过对图书系统的分析,可以得出该系统涉及七个实体:读者文件、图书文件、工作人员、借阅文件、借阅历史文件、罚款文件、罚款历史文件。通过对个实体数据关系的整理,我们可以得到下面的E-R图。这些实体以及涉及的数据项有: 读者文件(reader): 读者条码(reader_id),姓名(name),身份证号(IDCARD),最多借书数(maxnum_can_borrow),直接标志(flag_borrow);图书文件(book): 图书条码(book_id),书名(book_nam),作者(author),出版社(press),出版日期(press_date),停借标志(flag_borrow)职工文件(clerk): 职工ID(clerk_ID),姓名(name),身份证号(ID_Card),口令(Password),职务(office)借阅文件(borrow): 读者条码(reader_ID),图书条码(book_id),借出日期(borrow_date),操作人员代码(B_Clerk_ID),ID借阅历史文件(history):读者条码(reader_id),图书条码(book_id),借出日期(borrow_date),归还日期(return_date),ID罚款文件(fine): 读者条码(reader_id),罚款天数(days),罚款数(amount),罚款日期(finedate),操作人员(Clerk_ID),ID罚款历史文件(fine_history): 读者条码(reader_id),罚款天数(days),罚款数(amount),罚款日期(finedate),解止日期(ok_date),ID 2.2 系统E-R图 3系统设计3.1 功能模块图及分模块功能描述3.1.1 系统的功能模块图 3.1.2 系统功能模块简介 借书处理的主要功能是扫描读者条形码,扫描图书条形码,在数据库中插入一条借书记录,该记录包括读者条形码、图书条形码、借出日期。 还书处理的主要功能是扫描图书条形码,在借阅文件中找到相应的记录,将该记录的相应数据插入到还书记录中,同时将借书记录删除。 缴纳罚金的主要功能是输入读者条形码,显示读者的姓名、罚款金额和过期天数,如果读者交纳了罚金,则将读者文件的允许借阅标志直为“Y”。删除罚款文件中该读者对应的记录,将这一条记录同时插入到罚款历史文件中。读者查询:允许读者根据自己的条形码或姓名查询自己的借书记录。图书资料维护的功能包括读者信息的输入新书资料、删除旧书资料,修改图书资料等。读者资料维护的功能包括读者信息的输入、修改和删除。工作人员信息维护主要包括工作人员信息的输入、修改和删除。注销读者:将读者记录置止借标志,同时提供删除读者信息的功能。系统登录:是对用户名和输入密码进行检查,已确定登录用户是否合法。用户名和密码的维护是在工作人员资料维护模块中实现的。4.图书管理系统的具体实现 4.1建立数据库 根据2.1.3的数据项表,用access设计数据库,数据库名为library,共有7个表,分别是读者文件(reader)、图书文件(book)、职工文件(clerk)、借阅文件(borrow)、借阅历史文件(history)、罚款文件(fine)、罚款历史文件( fine_history)。截图如下: Book 表如下:4.2图书管理系统的整体介绍 整体窗口界面如下:在“系统”菜单中有“登录”子菜单项,“登录”子菜单主要完成员工登录。在这儿,只实现最简单的权限管理,只要是员工登录后,就可用进行所有的操作。在“基本资料维护”菜单下,有“用户菜单维护”、 “读者资料维护”、 “图书资料维护”菜单项。这些资料维护分别完成相应的基本资料的增、删、改。日常工作的子菜单有借书、还书和缴纳罚单。借书处理主要是通过输入读者ID、图书条形码,完成borrow数据库记录的插入。还书处理通过输入图书条形码,判断石佛超期。如果超期,则删除borrow数据库记录同时向history数据库插入记录。缴纳罚款处理主要是通过输入读者ID,将其在fine数据库的记录删除同时插入一条记录fine_history数据库中。“查询”菜单中有读者信息查询,主要实现根据读者ID寻找读者其他资料和借书罚款资料。4.3建立工程首先建立新工程,我们使用MFCApp Wizard 生成library.dsw工作空间。其具体步骤如下:1.从Visual C+的File菜单中选择New命令,然后在new对话框中打开project选项卡,出现如图的窗口。选择MFC AppWizard(exe)选项,同时工程名写为library,点击OK按钮。2.接着出现下面的对话框如图所示,选择“单文档”选项,单击“下一步”,再单击“完成”。接着,开始编辑菜单。在Resourse View 的Menu文件夹中双击菜单资源菜单资源IDR_MAINFRAM,打开Visual C+ Menu Editor(菜单编辑器)。建立一个新菜单,将它命名为“系统”,子菜单有两项,分别为“登录”和“退出”。按上述步骤建立其他菜单项,组后得到如下所示的菜单。4.4登录模块的实现下面开始介绍登录模块的实现,在Resource View 的Dialog文件夹中,右击Dialog文件夹,选择Insert Dialog选项。然后右击产生的新的对话框,选择“属性”,打开如下所示对话框。修改ID和 标题 编辑框,接着关闭对话框。31 登录模块是要根据用户输入的用户名和密码与数据库Cleck中的Username 和Password的比较来判断用户名和密码是否合法。4.5登录模块的具体实现 首先,建立ODBC数据源。在控制面板上双击ODBC数据源图标,选择“系统DSN”选项,单击“添加”按钮。在数据源驱动程序列表框上选择Microsoft Access Driver选项,然后单击完成按钮。选择library.mdb数据库,单击“确定”按钮。即完成了数据源library的添加。 接着,右击登录模块对话框选择“建立类向导”选项,在弹出的对话框中,单击New Class按钮,接着弹出如下对话框。安图所示输入记录集的名字和选择基类。单击“OK”按钮,出现如下的对话框。选择数据源library,单击OK。出现对话框。选择对应的表clerk,单击OK按钮,于是CcleckDataSet类的建立就算完成了。第四步,编写登录对话框中的登录按钮的脚本。右击对话框的“登录”按钮,选择“建立类向导”选项。如图所示,双击Message列表框中的BN_CLCKED ,然后确定弹出的对话框。并按EDIT CODE按钮,编辑代码。代码如下:void CLoginDlg:OnConfirm() / TODO: Add your control notification handler 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 = 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() / TODO: Add your control notification handler code hereCDialog:OnCancel(); 4.6还书模块介绍这个模块主要目的是介绍在记录集中引入多表连接的技术。因而,在这一节中,只简单罗列操作步骤,着重介绍记录集CBorrowSet的生成。 第一步,生成如下图的对话框。 第二步,设相应的编辑框的成员变量为变量名称(程序)。 第三步,生成记录集CBorrowSet.CBorrowSet的记录集的SQL语句为:SELECT borrow.*,book.* from borrow,reader where borrow.reader_id=bkkk.reader_id;(1) 首先使用ClassWizard生成第一个表Borrow的记录集。绑定Borrow的字段。(2) 选择ClassWizard的update columns的按钮,第二次打开数据源对话框,选择第二个表Reader,绑定第二个表Reader的字段。最好得到的成员变量名如下所示:/ ReturnBookDlg.cpp : implementation file/#include stdafx.h#include time.h#include Library.h#include ReturnBookDlg.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CReturnBookDlg dialogCReturnBookDlg:CReturnBookDlg(CWnd* pParent /*=NULL*/): CDialog(CReturnBookDlg:IDD, pParent)/AFX_DATA_INIT(CReturnBookDlg)m_Book_ID = _T();m_BorrowDate = _T();m_Days = 0;m_ReaderName = _T();m_ReturnDate = _T();/AFX_DATA_INITvoid CReturnBookDlg:DoDataExchange(CDataExchange* pDX)CDialog:DoDataExchange(pDX);/AFX_DATA_MAP(CReturnBookDlg)DDX_Text(pDX, IDC_EDITBook_ID, m_Book_ID);DDX_Text(pDX, IDC_EDITBorrowDate, m_BorrowDate);DDX_Text(pDX, IDC_EDITDays, m_Days);DDX_Text(pDX, IDC_EDITReaderName, m_ReaderName);DDX_Text(pDX, IDC_EDITReturnDate, m_ReturnDate);/AFX_DATA_MAPBEGIN_MESSAGE_MAP(CReturnBookDlg, CDialog)/AFX_MSG_MAP(CReturnBookDlg)ON_EN_KILLFOCUS(IDC_EDITBook_ID, OnKillfocusEDITBookID)/AFX_MSG_MAPEND_MESSAGE_MAP()/ CReturnBookDlg message handlersint CReturnBookDlg:QryBorrow()int result;CTime m_ReturnDate_tmp;/存放还书日期临时变量CString m_strtmp;CTime m_Current_Time=CTime:GetCurrentTime(); /获取当前时间CTimeSpan m_TimeSpan_tmp(30,24,59,59);UpdateData(true);if (strcmp(m_Book_ID,)=0) return 0;m_rsDataSet.m_strFilter =reader.reader_ID=borrow.reader_ID and BOOK_ID=+m_Book_ID+;if (!m_rsDataSet.Open()/打开记录集AfxMessageBox(数据打开失败!);return -1;m_rsDataSet.Requery();if (m_rsDataSet.GetRecordCount()!=0) m_ReaderName=m_rsDataSet.m_ReaderName ;m_BorrowDate=m_rsDataSet.m_BORROW_DATE.Format(%Y, %B %d) ;m_ReturnDate_tmp=m_rsDataSet.m_BORROW_DATE+m_TimeSpan_tmp;m_ReturnDate=m_ReturnDate_tmp.Format(%Y,%B %d);if (m_ReturnDate_tmpm_hWnd,m_strtmp,提示,MB_YESNO)=IDYES)SetTxtNull();elseCDialog:OnClose();else if(rs=2)if(:MessageBox(this-m_hWnd,还书处理正常完成,提示,MB_YESNO)=IDYES)SetTxtNull();elseCDialog:OnClose();else if(rs=0)if (m_Book_ID = )return;:MessageBox(this-m_hWnd,该书号信息不存在!,警告,MB_OK); / TODO: Add your control notification handler code herepWnd=GetDlgItem(IDC_EDITBook_ID);pWnd-SetFocus();void CReturnBookDlg:OnCancel() / TODO: Add extra cleanup hereCDialog:OnCancel();int CReturnBookDlg:Insert_Fine()CDatabase mdb;CString m_strsql;CTime m_CurrentTime;m_CurrentTime=CTime:GetCurrentTime();m_strsql.Format(insert into fine(Reader_ID,amount,days,fine_date) values( %s,%f,%d,m_rsDataSet.m_READER_ID,(m_Days*0.2),m_Days);m_strsql=m_strsql+,+m_CurrentTime.Format(%Y,%B %d)+);if(!mdb.Open(_T(Library)AfxMessageBox(数据库打开出错);return 0;trymdb.BeginTrans();mdb.ExecuteSQL(m_strsql);m_strsql = UPDATE READER SET FLAG_BORROW=N WHERE READER_ID= +m_rsDataSet.m_READER_ID;m_strsql = m_strsql + ;mdb.ExecuteSQL(m_strsql);mdb.CommitTrans();return 1;catch(CDBException e)AfxMessageBox(数据库执行出错);return 0;int CReturnBookDlg:Insert_History()CDatabase mdb;CString m_strsql;if(!mdb.Open(_T(library)AfxMessageBox(数据库执行出错);return 0;m_strsql=INSERT INTO HISTORY (READER_ID,BOOK_ID,BORROW_DATE,RETURN_DATE) VALUES (+m_rsDataSet.m_READER_ID+;m_strsql=m_strsql+,+m_rsDataSet.m_BOOK_ID+;m_strsql=m_strsql+,+m_BorrowDate+;m_strsql=m_strsql+,+(CTime:GetCurrentTime().Format(%Y,%B %d)+);trymdb.BeginTrans();mdb.ExecuteSQL(m_strsql);mdb.CommitTrans();catch(CDBException e)AfxMessageBox(数据库执行出错);return 0;return 1;int CReturnBookDlg:SetTxtNull()CWnd *pWnd;m_Book_ID=;m_BorrowDate=;m_Days=0;m_ReaderName=;m_ReturnDate=;UpdateData(false);pWnd=GetDlgItem(IDC_EDITBook_ID);/pWnd-SetFocus();return 1;int CReturnBookDlg:setTxtDisable()CWnd *pWnd;pWnd=GetDlgItem(IDC_EDITReaderName);pWnd-EnableWindow(false);pWnd=GetDlgItem(IDC_EDITBorrowDate);pWnd-EnableWindow(false);pWnd=GetDlgItem(IDC_EDITReturnDate);pWnd-EnableWindow(false);pWnd=GetDlgItem(IDC_EDITDays);pWnd-EnableWindow(false);return 1;BOOL CReturnBookDlg:OnInitDialog()CDialog:OnInitDialog();/setTxtDisable();return true;至此,已经介绍了登录模块、读者资料维护模快、还书处理模块。这几个模块涉及了通过MFC ODBC访问数据库的主要技术细节。其他模块的实现方式与这几个模块类似,在此不再赘述。5 系统测试1. 登录模块(系统的子菜单)正确的用户名和密码 非法的用户名和密码2.用户资料模块(基本资料维护的子菜单) 查询功能如下:2. 借书处理(日常维护的子菜单)读者编号为11111111,借阅的书籍编码为222222223. 读者查询(查询的子菜单)由下图可知借书处理中读者条码为11111111的读者所借阅的22222222号图书正式上图最后一行所示的Visual C,可知这些模块运行成功。如上述模块一样,其他模块运行也同样成功,由于篇幅原因,在此略去介绍。6.系统说明6.1开发环境 本次图书信息管理系统所使用的开发工具为Visual C+,并且直接使用Access的图形界面建立相应的数据库,access的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 3 数据的表示说课稿-2025-2026学年初中数学鲁教版五四制2024六年级上册-鲁教版五四制2024
- 5.2.2 先天性行为和学习行为 说课稿-2025-2026学年人教版生物八年级上册
- 三年级上册语文全套教案及教学反思
- 2024-2025学年高中语文 第五单元 整本书阅读 乡土中国说课稿 新人教版必修上册
- 2022届湖南省百师联盟高三下学期开年摸底联考语文试题
- 2013年高考山东卷语文试题及解析
- 跨文化商务沟通技巧培训方案
- 工程索赔申请书撰写指南与模板
- 核心素养导向的高中英语听说教学设计
- 软件项目版本迭代发布计划
- 建筑物、水体、铁路及主要井巷煤柱留设与压煤开采规范
- 阳光保险职级管理办法
- 颅内动脉瘤护理指南
- 非金属矿物材料的纳米结构改性和电功能化研究-洞察阐释
- 大宗物资贸易企业业务培训
- 机械原理典型例题(第二章机构分析)10-13
- 鼓膜置管术后护理讲课件
- 英语二必考500词
- 多模式镇痛课件
- DLT5210.1-2021电力建设施工质量验收规程第1部分-土建工程
- T/CSWSL 021-2020饲料原料大豆酶解蛋白
评论
0/150
提交评论