高级语言程序设计C--课程答辩课件

上传人:202****8-1 文档编号:243135779 上传时间:2024-09-16 格式:PPT 页数:39 大小:883KB
返回 下载 相关 举报
高级语言程序设计C--课程答辩课件_第1页
第1页 / 共39页
高级语言程序设计C--课程答辩课件_第2页
第2页 / 共39页
高级语言程序设计C--课程答辩课件_第3页
第3页 / 共39页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,高级语言程序设计(,C+,),课程答辩,题,目:图书馆管理系统,院,系:,班,级:,学,号:,姓,名:,系统开发,背景,某民办高校在创办初期,办学规模比较小。学校的图书数量,以及借阅人数都比较少,所以,一直以来对图书管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况的统计和审核等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。近年来由于国家对民办教育的大力扶持,该民办高校的办学规模迅速扩大,学校的硬件设施以及在校学生和职工数都在成倍增长,给学校的图书馆管理也带来了巨大的压力,早期的手工图书管理方式已经不能满足日益增长的图书借阅需求。,使用计算机对图书信息进行管理,具有手工管理所无法比拟的特点。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。为了适应学校迅速发展的趋势,解决日益尖锐的图书馆管理矛盾,该校提出了采用计算机管理图书信息的需求。本系统就是基于这个需求进行开发的。,系统需求,在图书管理信息系统开发时应该满足以下具体的系统需求:,1,)满足图书借阅管理的基本需求,2,)满足图书书库管理的基本需求,3,)满足图书借阅人管理的基本需求,4,)对操作人员的技能要求比较低,操作方便。,5,)能够实现方便的扩展,满足图书馆发展的需要。,6,)能够保障图书馆管理数据的安全、准确。,系统层次模块图,某学校图书管理信息系统可以分为,5,个子模块:系统登录、图书信息管理、读者信息管理、借书服务管理、还书服务管理,如图所示。,数据库设计,根据系统功能设计的要求以及功能模块的划分,对于本系统的数据库,可以列出以下数据项和数据结构:,(,1,)名称:登录信息表,表名标识符:,CLERK,(,2,)名称:书籍信息表,表名标识符:,BOOK,(,3,)名称:读者信息表,表名标识符:,READER,(,4,)名称:借书信息表,表名标识符:,BORROW,(,5,)名称:借还书历史表,表名标识符:,HISTORY,创建项目,创建一个基于对话框的,MFC AppWizard(exe),项目,项目名为,Library,。为了能在对话框中用,ODBC,编写数据库,需在,stdafx.h,中手动添加支持:,#include,登录模块,(,1,)模块的功能,书籍市图书馆最宝贵的财产,它的借进借出都应该保证安全。每个管理员用自己的用户名和密码登陆,来使用图书馆管理系统。通过某管理员借进和借出的书都有他的标记。这样就保证了书籍的安全。,(,2,)界面设计,设计界面如图所示。,对话框属性设置为:,IDD_DIALOG_LOGIN,。,为,IDD_DIALOG_LOGIN,添加,CLoginDlg,类,其中主要控件的属性、功能及成员变量如图所示。,(,3,)添加,CClerkDataSet,类与登录信息表连接,(,4,)代码编写,“取消”按钮取消输入,并关闭登录对话框:,“登录”按钮当管理员填完用户名和密码后,单击“登录”按钮,先检查用户名和密码是否合法。然后查找数据库中是否有该管理员的信息,若有则登陆成功。,具体代码如下:,void CLoginDlg:OnConfirm(),/ TODO: Add your control notification handler code here,CClerkDataSet 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 user,CDialog:OnOK();,CLibraryDlg dlg;,dlg.DoModal();,else,AfxMessageBox(,登录失败!,);,return;,主界面模块,(,1,)模块的功能,通过主界面可以进入每个模块,是各个模块切换和联系的桥梁。主界面力求简单,对每个按钮的功能给予适当简介。从主界面中可以退出系统。,(,2,)界面设计,设计界面如图所,示,其中主要控件的属性、功能及成员变量如图所示。,图书信息模块,(,1,)模块的功能,图书信息模块主要完成图书信息管理功能,包括浏览、查找、添加、删除和修改。管理员可以根据使用的需要,依次单击对应按钮,来实现这些功能。,浏览功能:管理员可以查看全部图书信息。,查找功能:因为书籍条码和书籍是一一对应的关系,所以通过书籍条码可以查找到任意一本书的信息并显示出来。,添加功能:可以向书籍表中添加新的书籍信息,系统会自动检测新的书籍信息中书籍条码是否在书籍表中存在,确保每本书具有唯一的书籍条码。,删除功能:删除界面上当前现实的书籍信息,系统会弹出确认对话框,提示是否确认删除,得到确认后,便会删除该书信息。,修改功能:实现对当前信息的修改,为安全起见,系统默认书籍条目不能修改。,(,2,)界面设计,设计的界面如图所示:,对话框属性设置:,IDD_DIALOG_BOOK,为,IDD_DIALOG_BOOK,添加,CBookDlg,类,其中主要控件的属性、功能及成员变量如图所示。,(,3,)添加,CCBookDataSet,类与书籍信息表连接,(,3,)添加,CCBookDataSet,类与书籍信息表连接,(,4,)代码编写,功能函数:把一些常用的功能封装为成员函数。,DisplayRecord,对话框各控件显示当先记录:,BOOL CBookDlg:DisplayRecord(),if (m_rsDataSet.IsEOF() & m_rsDataSet.IsBOF(),m_strBookID = ;,m_strBookName = ;,m_strPress = ;,m_strAuthor = ;,m_strFlag = ;,m_strPressDate=;,else,if (m_rsDataSet.IsBOF(),m_rsDataSet.MoveNext();,else,if (m_rsDataSet.IsEOF(),m_rsDataSet.MovePrev();,m_strBookID = m_rsDataSet.m_BOOK_ID;,m_strBookName = m_rsDataSet.m_BOOK_NAME;,m_strPress = m_rsDataSet.m_PRESS;,m_strAuthor = m_rsDataSet.m_AUTHOR ;,m_strFlag = m_rsDataSet.m_FLAG_BORROW ;,m_strPressDate=m_rsDataSet.m_PRESS_DATE;,UpdateData(FALSE);,return TRUE;,SetButtonState,根据不同的情况,调整按钮的状态。,如:当到首记录的时候,“上一条”按钮无效,。,BOOL CBookDlg: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-EnableWindow(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_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_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_SAVE);,pWnd-EnableWindow(TRUE);,pWnd = 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);,else,pWnd = GetDlgItem(IDC_FIRST);,pWnd-EnableWindow(TRUE);,pWnd = GetDlgItem(IDC_PRIOR);,pWnd-EnableWindow(TRUE);,if (m_rsDataSet.IsEOF(),pWnd = GetDlgItem(IDC_NEXT);,pWnd-EnableWindow(FALSE);,pWnd = GetDlgItem(IDC_LAST);,pWnd-EnableWindow(FALSE);,else,pWnd = GetDlgItem(IDC_NEXT);,pWnd-EnableWindow(TRUE);,pWnd = GetDlgItem(IDC_LAST);,pWnd-EnableWindow(TRUE);,if (m_rsDataSet.IsBOF() & m_rsDataSet.IsEOF(),pWnd = GetDlgItem(IDC_EDIT);,pWnd-EnableWindow(FALSE);,pWnd = GetDlgItem(IDC_DELETE);,pWnd-EnableWindow(FALSE);,else,pWnd = 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-EnableWindow(TRUE);,pWnd = GetDlgItem(IDC_SAVE);,pWnd-EnableWindow(FALSE);,pWnd = GetDlgItem(IDC_CANCEL_REC);,pWnd-EnableWindow(FALSE);,return TRUE;,SetButtonState,根据不同的情况,调整按钮的状态。如:当到首记录的时候,“上一条”按钮无效。,初始化显示记录,设置按钮、编辑框状态。,BOOL CBookDlg:OnInitDialog(),CDialog:OnInitDialog();,/ TODO: Add extra initialization here,m_bAdd = FALSE;,m_bEdit = FALSE;,if (!m_rsDataSet.Open(AFX_DB_USE_DEFAULT_TYPE),AfxMessageBox(,数据打开失败!,);,DisplayRecord();,SetButtonState();,SetTextState();,return TRUE; / return TRUE unless you set the focus to a control,/ EXCEPTION: OCX Property Pages should return FALSE,查询不同条件下进行查询,显示查询记录,设置按钮状态。,void CBookDlg:OnEnquery(),/ TODO: Add your control notification handler code here,UpdateData(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_strBookIDQ ;,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,m_rsDataSet.m_strFilter = BOOK_NAME= + m_strBookNameQ;,m_rsDataSet.m_strFilter = m_rsDataSet.m_strFilter + ;,m_rsDataSet.Requery();,DisplayRecord();,SetButtonState();,保存适用于增加和修改状态,判断信息的合理性,并进行增加和修改操作。,void CBookDlg:OnSave(),/ TODO: Add your control notification handler code here,UpdateData(TRUE);,if (m_strBookID.IsEmpty() | m_strBookName.IsEmpty(),AfxMessageBox(,请输入相应数据!,);,return;,if (m_bAdd),m_rsDataSet.AddNew();,else,m_rsDataSet.Edit();,m_rsDataSet.m_AUTHOR = m_strAuthor;,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;,m_rsDataSet.m_PRESS_DATE=m_strPressDate;,m_rsDataSet.Update();,m_rsDataSet.Requery();,m_bAdd = FALSE;,m_bEdit = FALSE;,DisplayRecord();,SetButtonState();,SetTextState();,全部图书资料,借书服务模块,(,1,)模块的功能,借书模块主要完成借书操作。首先检查读者是否有权借书,超期还书的读者需与管理员协商后方可获得权限再次借书,接着检查需要借的书籍是否可借,馆内保留的书籍不可借,一切正常后,登记借书时间、借书管理员,ID,完成借书。,(,2,)界面设计,设计界面如图所示,对话框属性设置为:,IDD_DIALOG_BORROW,。,为,IDD_DIALOG_BORROW,添加,CBorrowDlg,类,其中主要控件的属性、功能及成员变量如图所示。,(,3,)添加,CBorrowDataSet,类与登录信息表连接,(,4,)代码编写,“确定”按钮检查读者和书籍是否合理,若任意一项不合理,则给出警告信息,若合理,添加成功。,void CBorrowDlg:OnConfirm(),/ TODO: Add your control notification handler code here,/ TODO: Add your control notification handler code here,BOOL m_bCanBorrow;,BOOL m_bCanLendOut;,m_bCanBorrow = FALSE;,m_bCanLendOut = FALSE;,CString mSqlStr;,UpdateData(TRUE);,if (!m_rsReaderDataSet.Open(AFX_DB_USE_DEFAULT_TYPE),AfxMessageBox(,数据表打开错误,!);,return;,m_rsReaderDataSet.m_strFilter = READER_ID= + m_strReaderID;,m_rsReaderDataSet.m_strFilter = m_rsReaderDataSet.m_strFilter + ;,m_rsReaderDataSet.Requery();,if (!m_rsReaderDataSet.IsEOF(),if (m_rsReaderDataSet.m_FLAG_BORROW = Y),mSqlStr = SELECT * FROM BORROW WHERE READER_ID= + m_strReaderID;,mSqlStr = mSqlStr + ;,if (!m_rsDataSet.Open(AFX_DB_USE_DEFAULT_TYPE,mSqlStr),m_rsReaderDataSet.Close();,AfxMessageBox(,数据表打开错误,!);,return;,/ Add some code to determine the num of book which this reader borrowed.,m_bCanBorrow = TRUE;,m_rsDataSet.Close();,m_rsReaderDataSet.Close();,if (!m_bCanBorrow),AfxMessageBox(,读者不能借书!,);,return;,mSqlStr = SELECT * FROM BOOK WHERE BOOK_ID= + m_strBookID;,mSqlStr = mSqlStr + ;,if(!m_rsBookDataSet.Open(AFX_DB_USE_DEFAULT_TYPE, mSqlStr),AfxMessageBox(,数据表打开错误!,);,return ;,if (!m_rsBookDataSet.IsEOF(),if (m_rsBookDataSet.m_FLAG_BORROW = Y),m_bCanLendOut = TRUE;,else,AfxMessageBox(,此书不外借!,);,m_rsBookDataSet.Close();,return;,else,AfxMessageBox(,无此书!,);,m_rsBookDataSet.Close();,return;,m_rsBookDataSet.Close();,CString m_strUserID;,m_strUserID = theApp.m_strUserName ;,COleDateTime m_CurrentTime=COleDateTime:GetCurrentTime();,CString strTime;,int y=m_CurrentTime.GetYear();,int m=m_CurrentTime.GetMonth();,int d=m_CurrentTime.GetDay();,strTime.Format(%d-%d-%d,y,m,d);,mSqlStr = INSERT INTO BORROW (READER_ID, BOOK_ID,BORROW_DATE, B_CLERK_ID) VALUES(;,mSqlStr = mSqlStr + m_strReaderID;,mSqlStr = mSqlStr + ,;,mSqlStr = mSqlStr + m_strBookID;,mSqlStr = mSqlStr + ,;,mSqlStr = mSqlStr + strTime;,mSqlStr = mSqlStr +,;,mSqlStr = mSqlStr + m_strUserID;,mSqlStr = mSqlStr + );,CDatabase mDB;,if (!mDB.Open(_T(Library),AfxMessageBox(,无法打开数据库!,);,return;,try,mDB.ExecuteSQL(mSqlStr);,catch(CDBException e),AfxMessageBox(,执行错!,);,return;,mDB.Close();,AfxMessageBox(,操作成功!,);,还书服务模块,(,1,)模块的功能,还书模块主要完成还书工作,首先检查此次行为是否超期还书,若是,则锁定读者然后办理还书业务。被锁定的读者需与管理员协商后,方可解锁继续借书。,(,2,)界面设计,设计的界面如图所示:,对话框属性设置:,IDD_DIALOG_RETURN,为,IDD_DIALOG_RETURN,添加,CReturnDlg,类,其中主要控件的属性、功能及成员变量如图所示。,(,3,)添加,CBorrowSet,类与书籍信息表连接,(,4,)代码编写:,功能函数:把一些常用的功能封装为成员函数。,QryBorrow,根据输入的书籍条目,自动查询借此书的借阅信息,计算是否超期等。,Insert_History,书的借还还应做记录,以备以后查用,SetTxtNull,清空编辑框。,setTxtDisable,使编辑框处于只读状态,Delete_Borrow,当还书成功时,应该从借书信息表中删除该信息,回车事件管理员输入书籍条目后,按下,Enter,键,开始分析此书的借阅情况。,按键功能,还书分析书籍借阅信息,根据返回结果进行相应处理。,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!