ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:149.91KB ,
资源ID:23011601      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23011601.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(windows课程设计图书管理系统.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

windows课程设计图书管理系统.docx

1、windows课程设计图书管理系统一、设计分析 1. 整个程序设计成以下几个大的模块:1系统管理,下属可以实现又分为:用户管理、注销/重新登录、退出系统三个功能。2.基础数据设置,下属可以实现:罚款设置、图书类别设置、读者类别设置三个功能。3.借阅管理,下属分为:借书、还书、借书查询、还书查询四个模块。4.书库管理,下属分为:新书入库、图书查询和图书挂失三个模块。5.读者管理,下属分为:读者登记、读者信息查询、读者注销三个功能。6.数据库管理,下属分为:数据库备份、数据库恢复两个模块书库管理模块在整体程程序中格的位置:图1.1 书库管理模块在整体程程序中格的位置用户管理数据库采用的是SQL S

2、erver数据库,建立用户权限表以及设备信息表,通过MFC ODBC方式访问,使用类CRecordset的函数MoveFirst()、MoveLast()、MoveNext()、MovePrev()、IsBOF()、IsEOF()对设备信息表实现遍历操作,使用类CRecordset的函数AddNew增加设备或者函数Delete删除信息。并根据用户登录情况确定用户是否可以修改设备信息,以此实现后台数据与前台界面操作的一致。在帐户被通过后,用户可以使用它来登录系统,登录时系统自动查找用户表,判断帐户是否存在,存在则提示用户登录成功,并显示可以的操作;否则,提示不存在该用户,返回登录界面,让用户重新

3、输入信息。另外,经过这个验证的过程,提醒用户牢记帐号和密码,防止他人盗窃个人信息,从而提高用户信息的安全性。进行登录操作时,访问到了用户表(User)。在用户未成功登录时,个人资料功能是被禁止的。只有成功登录以后,用户才有资格修改自己的资料,包括基本信息的修改,帐户(昵称或密码)的更新,帐号是不可以更改的,一旦服务器分配以后,始终与帐户绑定。方便管理员管理帐户,也使得系统具有一定的稳定性。该模块访问到了用户表和个人信息表。 备注:当在修改密码时,系统会确认旧密码,如果输入的旧密码错误,系统会弹出出错信息,否则才允许更新密码。并且,如果修改昵称,系统会把修改后的昵称更新到两个表中,使得数据能够保

4、持同步,方便管理员的管理和维护,提高了系统的可靠性。系统具有数据录入、数据修改、记录查询、报表打印等功能。较全面满足了材料库存管理的各项工作。该系统采用模块化原理编程,做到了模块规模适中,本身相对独立。模块化使程序结构清晰,易于设计、易于理解,提高了系统的可靠性。用户的需求具体体现在各种信息的提供、保存、更新和查询统计,这就要求数据库结构能充分满足各种信息的输出和输入。收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为后面的详细设计打下基础。2.书库模块分析:书库管理需要实现三个功能,分别是新书入库、图书挂失和图书查询。模块主体设计如下: 图1.2 模块主体二、流程图(或功能

5、模块图)总程序设计框图: 图2.1 总程序设计框图书库管理系统设计框图: 图2.2 书库管理系统设计框图三、实验各个模块代码及相关分析说明:书库管理模块在整个程序中的位置图3.1 书库管理模块在整个程序中的位置1.新书入库模块先使用VS中的MFC控件建立如下框图图3.2 新书入库模块2.图书查询模块图3.3 图书查询模块3.图书挂失模块图3.4 图书挂失模块四、实验代码:1.新书入库模块#include stdafx.h#include Library.h#include NewBookDlg.h#include BookTypeSet.h#ifdef _DEBUG#define new DE

6、BUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CNewBookDlg dialogCNewBookDlg:CNewBookDlg(CWnd* pParent /*=NULL*/) : CDialog(CNewBookDlg:IDD, pParent) /AFX_DATA_INIT(CNewBookDlg) m_strBookType = _T(); m_strBookCode = _T(); m_strBookName = _T(); m_strPrice = _T(); m_strPress = _T(); m_s

7、trWriter = _T(); m_strBrief = _T(); /AFX_DATA_INITvoid CNewBookDlg:DoDataExchange(CDataExchange* pDX) CDialog:DoDataExchange(pDX); /AFX_DATA_MAP(CNewBookDlg) DDX_Control(pDX, IDC_COMBO_BOOKTYPE, m_ctrBookType); DDX_Control(pDX, IDC_LIST1, m_ctrList); DDX_CBString(pDX, IDC_COMBO_BOOKTYPE, m_strBookTy

8、pe); DDX_Text(pDX, IDC_EDIT_BOOK_CODE, m_strBookCode); DDX_Text(pDX, IDC_EDIT_BOOK_NAME, m_strBookName); DDX_Text(pDX, IDC_EDIT_BOOK_PRICE, m_strPrice); DDX_Text(pDX, IDC_EDIT_PRESS, m_strPress); DDX_Text(pDX, IDC_EDIT_WRITER, m_strWriter); DDX_Text(pDX, IDC_EDIT_BRIEF, m_strBrief); /AFX_DATA_MAPBEG

9、IN_MESSAGE_MAP(CNewBookDlg, CDialog) /AFX_MSG_MAP(CNewBookDlg) ON_BN_CLICKED(IDC_BUTTON_NEW, OnButtonNew) ON_BN_CLICKED(IDC_BUTTON_ALL, OnButtonAll) ON_BN_CLICKED(IDC_BUTTON_DELETE, OnButtonDelete) ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1) /AFX_MSG_MAPEND_MESSAGE_MAP()/ CNewBookDlg message handle

10、rsBOOL CNewBookDlg:OnInitDialog() CDialog:OnInitDialog(); /设置列表 m_ctrList.InsertColumn(0,图书编号); m_ctrList.InsertColumn(1,图书名称); m_ctrList.InsertColumn(2,图书类别); m_ctrList.InsertColumn(3,作者); m_ctrList.InsertColumn(4,出版社); m_ctrList.InsertColumn(5,图书价格); m_ctrList.InsertColumn(6,登记日期); m_ctrList.Inser

11、tColumn(7,备注说明); m_ctrList.SetColumnWidth(0,60); m_ctrList.SetColumnWidth(1,120); m_ctrList.SetColumnWidth(2,80); m_ctrList.SetColumnWidth(3,80); m_ctrList.SetColumnWidth(4,80); m_ctrList.SetColumnWidth(5,80); m_ctrList.SetColumnWidth(6,80); m_ctrList.SetColumnWidth(7,80); m_ctrList.SetExtendedStyle

12、(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES); /初始化图书类型 CBookTypeSet recordset ; if(!recordset.Open(AFX_DB_USE_DEFAULT_TYPE,select * from bookType) MessageBox(打开数据库失败!,数据库错误,MB_OK); return FALSE; while(!recordset.IsEOF() m_ctrBookType.AddString(recordset.m_type); recordset.MoveNext(); recordset.Close(); r

13、eturn TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSEvoid CNewBookDlg:OnButtonNew() / TODO: Add your control notification handler code here UpdateData(); if(m_strBookCode.IsEmpty() AfxMessageBox(请输入图书编号!); return; if(m_strBookType.IsEmpty

14、() AfxMessageBox(请输入图书类型!); return; if(m_strBookName.IsEmpty() AfxMessageBox(请输入图书名称!); return; CString strSQL; CTime current=CTime:GetCurrentTime(); strSQL.Format(select * from bookInfo where code = %s,m_strBookCode); if(!m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL) MessageBox(打开数据库失败!,数据库错误,MB

15、_OK); return ; if(m_recordset.GetRecordCount()!=0) m_recordset.Close(); AfxMessageBox(该图书编号已经存在,请重新输入!); return; m_recordset.Close(); if(!m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE) MessageBox(打开数据库失败!,数据库错误,MB_OK); return ; /添加图书记录 m_recordset.AddNew(); m_recordset.m_code = m_strBookCode ; m_recordse

16、t.m_name = m_strBookName ; m_recordset.m_type = m_strBookType ; m_recordset.m_in_date = current ; m_recordset.m_price = m_strPrice ; m_recordset.m_press = m_strPress ; m_recordset.m_writer = m_strWriter ; m_recordset.m_brief = m_strBrief ; m_recordset.m_isBorrow = FALSE; m_recordset.Update(); m_reco

17、rdset.Close(); /更新列表 CString strTime; m_ctrList.InsertItem(0,m_strBookCode); m_ctrList.SetItemText(0,1,m_strBookName); m_ctrList.SetItemText(0,2,m_strBookType); m_ctrList.SetItemText(0,3,m_strWriter); m_ctrList.SetItemText(0,4,m_strPress); m_ctrList.SetItemText(0,5,m_strPrice); strTime.Format(%d-%d-

18、%d,current.GetYear(),current.GetMonth(),current.GetDay(); m_ctrList.SetItemText(0,6,strTime); m_ctrList.SetItemText(0,7,m_strBrief); /更新界面显示 m_strBookType = _T(); m_strBookCode = _T(); m_strBookName = _T(); m_strPrice = _T(); m_strPress = _T(); m_strWriter = _T(); m_strBrief = _T(); UpdateData(FALSE

19、);void CNewBookDlg:OnButtonAll() / TODO: Add your control notification handler code here m_ctrList.DeleteAllItems(); m_ctrList.SetRedraw(FALSE); UpdateData(TRUE); CString strSQL; strSQL.Format( select * from bookInfo ); if(!m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL) MessageBox(打开数据库失败!,数据库错误,M

20、B_OK); return ; int i=0; CString strTime; while(!m_recordset.IsEOF() m_ctrList.InsertItem(i,m_recordset.m_code); m_ctrList.SetItemText(i,1,m_recordset.m_name); m_ctrList.SetItemText(i,2,m_recordset.m_type); m_ctrList.SetItemText(i,3,m_recordset.m_writer); m_ctrList.SetItemText(i,4,m_recordset.m_pres

21、s); m_ctrList.SetItemText(i,5,m_recordset.m_price); strTime.Format(%d-%d-%d,m_recordset.m_in_date.GetYear(),m_recordset.m_in_date.GetMonth(),m_recordset.m_in_date.GetDay(); m_ctrList.SetItemText(i,6,strTime); m_ctrList.SetItemText(i,7,m_recordset.m_brief); i+; m_recordset.MoveNext(); m_recordset.Clo

22、se(); m_ctrList.SetRedraw(TRUE); void CNewBookDlg:OnButtonDelete() / TODO: Add your control notification handler code here int i = m_ctrList.GetSelectionMark(); if(0i) AfxMessageBox(请选择一条记录进行删除!); return; CString strSQL; strSQL.Format(select * from bookInfo where code = %s ,m_ctrList.GetItemText(i,0

23、); if(!m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL) AfxMessageBox(打开数据库失败!); return ; m_recordset.Delete(); m_recordset.Close(); m_ctrList.DeleteItem(i); /更新界面显示 m_strBookType = _T(); m_strBookCode = _T(); m_strBookName = _T(); m_strPrice = _T(); m_strPress = _T(); m_strWriter = _T(); m_strBrief

24、 = _T(); UpdateData(FALSE);void CNewBookDlg:OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) / TODO: Add your control notification handler code here int i = m_ctrList.GetSelectionMark(); m_strBookType = m_ctrList.GetItemText(i,2); m_strBookCode = m_ctrList.GetItemText(i,0); m_strBookName = m_ctrList.Ge

25、tItemText(i,1); m_strPrice = m_ctrList.GetItemText(i,5); m_strPress = m_ctrList.GetItemText(i,4); m_strWriter = m_ctrList.GetItemText(i,3); m_strBrief = m_ctrList.GetItemText(i,7); UpdateData(FALSE); *pResult = 0;2.图书查询模块:#include stdafx.h#include Library.h#include BorrowSearchDlg.h#ifdef _DEBUG#def

26、ine new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CBorrowSearchDlg dialogCBorrowSearchDlg:CBorrowSearchDlg(CWnd* pParent /*=NULL*/) : CDialog(CBorrowSearchDlg:IDD, pParent) /AFX_DATA_INIT(CBorrowSearchDlg) m_strBookCode = _T(); m_strReaderCode = _T(); /AFX_DATA_INITvoid CBorrow

27、SearchDlg:DoDataExchange(CDataExchange* pDX) CDialog:DoDataExchange(pDX); /AFX_DATA_MAP(CBorrowSearchDlg) DDX_Control(pDX, IDC_LIST1, m_ctrList); DDX_Text(pDX, IDC_EDIT_BOOKCODE, m_strBookCode); DDX_Text(pDX, IDC_EDIT_READERCODE, m_strReaderCode); /AFX_DATA_MAPBEGIN_MESSAGE_MAP(CBorrowSearchDlg, CDi

28、alog) /AFX_MSG_MAP(CBorrowSearchDlg) ON_BN_CLICKED(IDC_BUTTON_SEARCH, OnButtonSearch) /AFX_MSG_MAPEND_MESSAGE_MAP()/ CBorrowSearchDlg message handlersBOOL CBorrowSearchDlg:OnInitDialog() CDialog:OnInitDialog(); m_ctrList.InsertColumn(0,读者编号); m_ctrList.InsertColumn(1,读者姓名); m_ctrList.InsertColumn(2,图书编号); m_ctrList.InsertColumn(3,图书名称); m_ctrList.InsertColumn(4,图书类别); m_ctrList.InsertColumn(5,图书价格); m_ctrList.InsertColumn(6,借出日期); m_ctrList.InsertColumn(7,归还日期); m_ctrList.InsertColumn(8,操作员); m_ctrList.SetColumnWidth(0,60); m_ctrList.SetC

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

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