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

上传人:b****2 文档编号:23011601 上传时间:2023-04-30 格式:DOCX 页数:25 大小:149.91KB
下载 相关 举报
windows课程设计图书管理系统.docx_第1页
第1页 / 共25页
windows课程设计图书管理系统.docx_第2页
第2页 / 共25页
windows课程设计图书管理系统.docx_第3页
第3页 / 共25页
windows课程设计图书管理系统.docx_第4页
第4页 / 共25页
windows课程设计图书管理系统.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

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

《windows课程设计图书管理系统.docx》由会员分享,可在线阅读,更多相关《windows课程设计图书管理系统.docx(25页珍藏版)》请在冰豆网上搜索。

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

windows课程设计图书管理系统

一、设计分析

1.整个程序设计成以下几个大的模块:

1系统管理,下属可以实现又分为:

用户管理、注销/重新登录、退出系统三个功能。

2.基础数据设置,下属可以实现:

罚款设置、图书类别设置、读者类别设置三个功能。

3.借阅管理,下属分为:

借书、还书、借书查询、还书查询四个模块。

4.书库管理,下属分为:

新书入库、图书查询和图书挂失三个模块。

5.读者管理,下属分为:

读者登记、读者信息查询、读者注销三个功能。

6.数据库管理,下属分为:

数据库备份、数据库恢复两个模块

书库管理模块在整体程程序中格的位置:

图1.1书库管理模块在整体程程序中格的位置

用户管理数据库采用的是SQLServer数据库,建立用户权限表以及设备信息表,通过MFCODBC方式访问,使用类CRecordset的函数MoveFirst()、MoveLast()、MoveNext()、MovePrev()、IsBOF()、IsEOF()对设备信息表实现遍历操作,使用类CRecordset的函数AddNew增加设备或者函数Delete删除信息。

并根据用户登录情况确定用户是否可以修改设备信息,以此实现后台数据与前台界面操作的一致。

在帐户被通过后,用户可以使用它来登录系统,登录时系统自动查找用户表,判断帐户是否存在,存在则提示用户登录成功,并显示可以的操作;否则,提示不存在该用户,返回登录界面,让用户重新输入信息。

另外,经过这个验证的过程,提醒用户牢记帐号和密码,防止他人盗窃个人信息,从而提高用户信息的安全性。

进行登录操作时,访问到了用户表(User)。

在用户未成功登录时,个人资料功能是被禁止的。

只有成功登录以后,用户才有资格修改自己的资料,包括基本信息的修改,帐户(昵称或密码)的更新,帐号是不可以更改的,一旦服务器分配以后,始终与帐户绑定。

方便管理员管理帐户,也使得系统具有一定的稳定性。

该模块访问到了用户表和个人信息表。

备注:

当在修改密码时,系统会确认旧密码,如果输入的旧密码错误,系统会弹出出错信息,否则才允许更新密码。

并且,如果修改昵称,系统会把修改后的昵称更新到两个表中,使得数据能够保持同步,方便管理员的管理和维护,提高了系统的可靠性。

系统具有数据录入、数据修改、记录查询、报表打印等功能。

较全面满足了材料库存管理的各项工作。

该系统采用模块化原理编程,做到了模块规模适中,本身相对独立。

模块化使程序结构清晰,易于设计、易于理解,提高了系统的可靠性。

用户的需求具体体现在各种信息的提供、保存、更新和查询统计,这就要求数据库结构能充分满足各种信息的输出和输入。

收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为后面的详细设计打下基础。

2.书库模块分析:

书库管理需要实现三个功能,分别是新书入库、图书挂失和图书查询。

模块主体设计如下:

图1.2模块主体

 

二、流程图(或功能模块图)

总程序设计框图:

图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

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

//CNewBookDlgdialog

 

CNewBookDlg:

:

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_strWriter=_T("");

m_strBrief=_T("");

//}}AFX_DATA_INIT

}

 

voidCNewBookDlg:

:

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_strBookType);

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_MAP

}

 

BEGIN_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_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

//CNewBookDlgmessagehandlers

BOOLCNewBookDlg:

:

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.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(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);

//初始化图书类型

CBookTypeSetrecordset;

if(!

recordset.Open(AFX_DB_USE_DEFAULT_TYPE,"select*frombookType"))

{

MessageBox("打开数据库失败!

","数据库错误",MB_OK);

returnFALSE;

}

while(!

recordset.IsEOF())

{

m_ctrBookType.AddString(recordset.m_type);

recordset.MoveNext();

}

recordset.Close();

returnTRUE;//returnTRUEunlessyousetthefocustoacontrol

//EXCEPTION:

OCXPropertyPagesshouldreturnFALSE

}

voidCNewBookDlg:

:

OnButtonNew()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

UpdateData();

if(m_strBookCode.IsEmpty())

{

AfxMessageBox("请输入图书编号!

");

return;

}

if(m_strBookType.IsEmpty())

{

AfxMessageBox("请输入图书类型!

");

return;

}

if(m_strBookName.IsEmpty())

{

AfxMessageBox("请输入图书名称!

");

return;

}

CStringstrSQL;

CTimecurrent=CTime:

:

GetCurrentTime();

strSQL.Format("select*frombookInfowherecode='%s'",m_strBookCode);

if(!

m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))

{

MessageBox("打开数据库失败!

","数据库错误",MB_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_recordset.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_recordset.Close();

//更新列表

CStringstrTime;

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-%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);

}

voidCNewBookDlg:

:

OnButtonAll()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

m_ctrList.DeleteAllItems();

m_ctrList.SetRedraw(FALSE);

UpdateData(TRUE);

CStringstrSQL;

strSQL.Format("select*frombookInfo");

if(!

m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))

{

MessageBox("打开数据库失败!

","数据库错误",MB_OK);

return;

}

inti=0;

CStringstrTime;

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_press);

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.Close();

m_ctrList.SetRedraw(TRUE);

}

voidCNewBookDlg:

:

OnButtonDelete()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

inti=m_ctrList.GetSelectionMark();

if(0>i)

{

AfxMessageBox("请选择一条记录进行删除!

");

return;

}

CStringstrSQL;

strSQL.Format("select*frombookInfowherecode='%s'",m_ctrList.GetItemText(i,0));

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=_T("");

UpdateData(FALSE);

}

voidCNewBookDlg:

:

OnClickList1(NMHDR*pNMHDR,LRESULT*pResult)

{

//TODO:

Addyourcontrolnotificationhandlercodehere

inti=m_ctrList.GetSelectionMark();

m_strBookType=m_ctrList.GetItemText(i,2);

m_strBookCode=m_ctrList.GetItemText(i,0);

m_strBookName=m_ctrList.GetItemText(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

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

//CBorrowSearchDlgdialog

 

CBorrowSearchDlg:

:

CBorrowSearchDlg(CWnd*pParent/*=NULL*/)

:

CDialog(CBorrowSearchDlg:

:

IDD,pParent)

{

//{{AFX_DATA_INIT(CBorrowSearchDlg)

m_strBookCode=_T("");

m_strReaderCode=_T("");

//}}AFX_DATA_INIT

}

 

voidCBorrowSearchDlg:

:

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_MAP

}

 

BEGIN_MESSAGE_MAP(CBorrowSearchDlg,CDialog)

//{{AFX_MSG_MAP(CBorrowSearchDlg)

ON_BN_CLICKED(IDC_BUTTON_SEARCH,OnButtonSearch)

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

//CBorrowSearchDlgmessagehandlers

BOOLCBorrowSearchDlg:

:

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