2024年2月20日发(作者:)
长 春 大 学
课程设计纸
课程设计图书管理系统
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
共 19 页 第 1 页
长 春 大 学
课程设计纸
目 录
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
一.
设计目的………………………………………………………(2)
设计内容………………………………………………………(2)
设计要求………………………………………………………(2)
总体设计………………………………………………………(2)
详细设计(设计步骤)……………………………………(3)
设计总结………………………………………………………(4)
参考文献………………………………………………….
(4)
附录(程序代码)……………………………………
(5)
二.
三.
四.
五.
六.
七.
八.
一、设计目的
共 19 页 第 2 页
长 春 大 学
课程设计纸
通过课程设计,使学生提高理论联系实际解决问题的能力,也使学生对基于面向对象的理论进行系统设计过程中的诸多具体问题有感性的认识和深入的
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
理解。
二、设计内容
用C++设计一个简单的图书管理系统,实现出最基本的功能。
三、设计要求
1功能要求:
(1)能实现图书信息数据的维护。此模块包括子模块有:增加图书信息、删除图书信息、修改图书信息
(3)查询功能:至少实现书名查询、作者查询两种查询功能
(4)统计功能:输入出版社名称,统计出出版社图书总数及图书信息并显示数据。
(5)排序功能:能实现按书号或价格进行升序或降序排序并显示数据。
(6)详见《课程设计指导书》
2其他要求:
(1)只能使用C++语言,源程序要有适当的注释,使程序容易阅读
(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)
(3)学生可自动增加新功能模块(视情况可另外加分)
(4)写出课程设计报告,具体要求见相关说明文档
(5)用文件进行管理
四、总体设计
1程序设计分析:
数据分析:书名,作者名,书号,出版日期,出版社,价格,作为书类的数据成员。使用对象数组对书的每个数据成员进行访问。
行为分析:输入,输出,查找作为书类的成员函数。其他函数直接写在类外,读出和读入作为书类的友元函数。
2数据结构分析:
把数据成员全设为私有,成员函数设为公有,当使用到数据成员时使用成员函数或友元函数进行调用,以实现数据的封装。
3系统执行流程:
共 19 页 第 3 页
长 春 大 学
课程设计纸
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
五、详细设计(设计步骤)
读者信息维护
书籍资料维护
共 19 页 第 4 页
长 春 大 学
课程设计纸
用户资料维护
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
六、设计总结
经过一个学期对《Visual C++ 程序设计》的学习,我学到了基本的设计思想这些知识都为我的课程设计的实践和进一步学习打下了坚实的基础。
在为期近一周的Visual C++课程设计中,我体会颇多,学到了很多东西。加强了我对Visual C++程序设计这门课程的认识!总之,通过这次课程设计,我的收获很多,相信为自己以后的学习和工作带来很大的好处。学会用已掌握的知识去解决问题的能力,进一步培养独立思考问题和解决问题的能力。当然,老师的指导和同学的帮助也是不可忽视的,他们给了我许多提示和帮助,教会了我编译复杂程序的方法!
通过课程设计的训练,我进一步的学习和掌握了对课程设计的编写,从中体会到了面向程序设计的方便和巧妙。懂得了在程序编写之前 要有明确的目标和整体的设计思想。另外某写具体的细节内容也是相当重要。这些经验对我以后的编程会有很大的帮助的,我要好好的利用。
总而言之,这次Visual C++ 程序设计的实践让我收获很大
七、参考文献
《Visual C++工程应用与项目实践》 机械工业出版社 张雨、阮伟良
《Visual C++ 管理信息系统完整项目实例剖析》 人民邮电出版社 明日科技
《Visual C++ 高级网络编程》 清华大学出版社
《Visual C++ 面向对象程序设计》 谭浩强 等 清华大学出版社
共 19 页 第 5 页
长 春 大 学
课程设计纸
附录(程序代码):
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
// : implementation file
//
#include "stdafx.h"
#include "Library.h"
#include "BookDataSet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CBookDataSet
IMPLEMENT_DYNAMIC(CBookDataSet, CRecordset)
CBookDataSet::CBookDataSet(CDatabase* pdb)
{
}
//{{AFX_FIELD_INIT(CBookDataSet)
m_BOOK_ID = _T("");
m_BOOK_NAME = _T("");
m_AUTHOR = _T("");
m_PRESS = _T("");
m_FLAG_BORROW = _T("");
m_nFields = 6;
//}}AFX_FIELD_INIT
m_nDefaultType = snapshot;
: CRecordset(pdb)
共 19 页 第 6 页
长 春 大 学
课程设计纸
CString CBookDataSet::GetDefaultConnect()
{
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
}
CString CBookDataSet::GetDefaultSQL()
{
}
void CBookDataSet::DoFieldExchange(CFieldExchange* pFX)
{
}
/////////////////////////////////////////////////////////////////////////////
// CBookDataSet diagnostics
#ifdef _DEBUG
void CBookDataSet::AssertValid() const
{
}
void CBookDataSet::Dump(CDumpContext& dc) const
{
CRecordset::Dump(dc);
CRecordset::AssertValid();
//{{AFX_FIELD_MAP(CBookDataSet)
pFX->SetFieldType(CFieldExchange::outputColumn);
RFX_Text(pFX, _T("[BOOK_ID]"), m_BOOK_ID);
RFX_Text(pFX, _T("[BOOK_NAME]"), m_BOOK_NAME);
RFX_Text(pFX, _T("[AUTHOR]"), m_AUTHOR);
RFX_Text(pFX, _T("[PRESS]"), m_PRESS);
RFX_Date(pFX, _T("[PRESS_DATE]"), m_PRESS_DATE);
RFX_Text(pFX, _T("[FLAG_BORROW]"), m_FLAG_BORROW);
//}}AFX_FIELD_MAP
return _T("[BOOK]");
return _T("ODBC;DSN=Library");
共 19 页 第 7 页
长 春 大 学
课程设计纸
}
#endif //_DEBUG
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
// : implementation file
//
#include "stdafx.h"
#include "Library.h"
#include "BorrowDataSet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CBorrowDataSet
IMPLEMENT_DYNAMIC(CBorrowDataSet, CRecordset)
CBorrowDataSet::CBorrowDataSet(CDatabase* pdb)
{
}
CString CBorrowDataSet::GetDefaultConnect()
//{{AFX_FIELD_INIT(CBorrowDataSet)
m_READER_ID = _T("");
m_BOOK_ID = _T("");
m_B_CLERK_ID = _T("");
m_ID = 0;
m_nFields = 5;
//}}AFX_FIELD_INIT
m_nDefaultType = snapshot;
: CRecordset(pdb)
共 19 页 第 8 页
长 春 大 学
课程设计纸
{
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
}
CString CBorrowDataSet::GetDefaultSQL()
{
}
void CBorrowDataSet::DoFieldExchange(CFieldExchange* pFX)
{
}
/////////////////////////////////////////////////////////////////////////////
// CBorrowDataSet diagnostics
#ifdef _DEBUG
void CBorrowDataSet::AssertValid() const
{
}
void CBorrowDataSet::Dump(CDumpContext& dc) const
{
}
#endif //_DEBUG
CRecordset::Dump(dc);
CRecordset::AssertValid();
//{{AFX_FIELD_MAP(CBorrowDataSet)
pFX->SetFieldType(CFieldExchange::outputColumn);
RFX_Text(pFX, _T("[READER_ID]"), m_READER_ID);
RFX_Text(pFX, _T("[BOOK_ID]"), m_BOOK_ID);
RFX_Date(pFX, _T("[BORROW_DATE]"), m_BORROW_DATE);
RFX_Text(pFX, _T("[B_CLERK_ID]"), m_B_CLERK_ID);
RFX_Long(pFX, _T("[ID]"), m_ID);
//}}AFX_FIELD_MAP
return _T("[BORROW]");
return _T("ODBC;DSN=Library");
共 19 页 第 9 页
长 春 大 学
课程设计纸
// : implementation file
//
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
#include "stdafx.h"
#include "Library.h"
#include "ClerkDataSet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CClerkDataSet
IMPLEMENT_DYNAMIC(CClerkDataSet, CRecordset)
CClerkDataSet::CClerkDataSet(CDatabase* pdb)
{
}
CString CClerkDataSet::GetDefaultConnect()
{
//{{AFX_FIELD_INIT(CClerkDataSet)
m_CLERK_ID = _T("");
m_NAME = _T("");
m_ID_CARD = _T("");
m_PASSWORD = _T("");
m_OFFICIER = _T("");
m_nFields = 5;
//}}AFX_FIELD_INIT
m_nDefaultType = snapshot;
: CRecordset(pdb)
共 19 页 第 10 页
长 春 大 学
课程设计纸
}
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
CString CClerkDataSet::GetDefaultSQL()
{
}
void CClerkDataSet::DoFieldExchange(CFieldExchange* pFX)
{
}
/////////////////////////////////////////////////////////////////////////////
// CClerkDataSet diagnostics
#ifdef _DEBUG
void CClerkDataSet::AssertValid() const
{
}
void CClerkDataSet::Dump(CDumpContext& dc) const
{
}
#endif //_DEBUG
CRecordset::Dump(dc);
CRecordset::AssertValid();
//{{AFX_FIELD_MAP(CClerkDataSet)
pFX->SetFieldType(CFieldExchange::outputColumn);
RFX_Text(pFX, _T("[CLERK_ID]"), m_CLERK_ID);
RFX_Text(pFX, _T("[NAME]"), m_NAME);
RFX_Text(pFX, _T("[ID_CARD]"), m_ID_CARD);
RFX_Text(pFX, _T("[PASSWORD]"), m_PASSWORD);
RFX_Text(pFX, _T("[OFFICIER]"), m_OFFICIER);
//}}AFX_FIELD_MAP
return _T("[CLERK]");
//return _T("SELECT * FROM CLERK");
return _T("ODBC;DSN=Library");
共 19 页 第 11 页
长 春 大 学
课程设计纸
// : implementation file
//
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
#include "stdafx.h"
#include "Library.h"
#include "ConfigDataSet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CConfigDataSet
IMPLEMENT_DYNAMIC(CConfigDataSet, CRecordset)
CConfigDataSet::CConfigDataSet(CDatabase* pdb)
{
}
CString CConfigDataSet::GetDefaultConnect()
{
}
CString CConfigDataSet::GetDefaultSQL()
{
return _T("");
return _T("ODBC;DSN=Library");
//{{AFX_FIELD_INIT(CConfigDataSet)
//}}AFX_FIELD_INIT
m_nDefaultType = snapshot;
: CRecordset(pdb)
共 19 页 第 12 页
长 春 大 学
课程设计纸
}
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
void CConfigDataSet::DoFieldExchange(CFieldExchange* pFX)
{
}
/////////////////////////////////////////////////////////////////////////////
// CConfigDataSet diagnostics
#ifdef _DEBUG
void CConfigDataSet::AssertValid() const
{
}
void CConfigDataSet::Dump(CDumpContext& dc) const
{
}
#endif //_DEBUG
// : implementation file
//
#include "stdafx.h"
#include "Library.h"
#include "FineDataSet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
CRecordset::Dump(dc);
CRecordset::AssertValid();
//{{AFX_FIELD_MAP(CConfigDataSet)
pFX->SetFieldType(CFieldExchange::outputColumn);
//}}AFX_FIELD_MAP
共 19 页 第 13 页
长 春 大 学
课程设计纸
/////////////////////////////////////////////////////////////////////////////
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
// CFineDataSet
IMPLEMENT_DYNAMIC(CFineDataSet, CRecordset)
CFineDataSet::CFineDataSet(CDatabase* pdb)
{
}
CString CFineDataSet::GetDefaultConnect()
{
}
CString CFineDataSet::GetDefaultSQL()
{
}
void CFineDataSet::DoFieldExchange(CFieldExchange* pFX)
{
//{{AFX_FIELD_MAP(CFineDataSet)
pFX->SetFieldType(CFieldExchange::outputColumn);
return _T("[FINE]");
return _T("ODBC;DSN=Library");
//{{AFX_FIELD_INIT(CFineDataSet)
m_READER_ID = _T("");
m_AMOUNT = 0;
m_DAYS = 0;
m_CLERK_ID = _T("");
m_ID = 0;
m_nFields = 6;
//}}AFX_FIELD_INIT
m_nDefaultType = snapshot;
: CRecordset(pdb)
共 19 页 第 14 页
长 春 大 学
课程设计纸
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
}
/////////////////////////////////////////////////////////////////////////////
// CFineDataSet diagnostics
#ifdef _DEBUG
void CFineDataSet::AssertValid() const
{
}
void CFineDataSet::Dump(CDumpContext& dc) const
{
}
#endif //_DEBUG
// : implementation file
//
#include "stdafx.h"
#include "Library.h"
#include "FineHistoryDataSet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
CRecordset::Dump(dc);
CRecordset::AssertValid();
RFX_Text(pFX, _T("[READER_ID]"), m_READER_ID);
RFX_Long(pFX, _T("[AMOUNT]"), m_AMOUNT);
RFX_Int(pFX, _T("[DAYS]"), m_DAYS);
RFX_Date(pFX, _T("[FINE_DATE]"), m_FINE_DATE);
RFX_Text(pFX, _T("[CLERK_ID]"), m_CLERK_ID);
RFX_Long(pFX, _T("[ID]"), m_ID);
//}}AFX_FIELD_MAP
共 19 页 第 15 页
长 春 大 学
课程设计纸
/////////////////////////////////////////////////////////////////////////////
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
// CFineHistoryDataSet
IMPLEMENT_DYNAMIC(CFineHistoryDataSet, CRecordset)
CFineHistoryDataSet::CFineHistoryDataSet(CDatabase* pdb)
{
}
CString CFineHistoryDataSet::GetDefaultConnect()
{
}
CString CFineHistoryDataSet::GetDefaultSQL()
{
}
void CFineHistoryDataSet::DoFieldExchange(CFieldExchange* pFX)
{
//{{AFX_FIELD_MAP(CFineHistoryDataSet)
pFX->SetFieldType(CFieldExchange::outputColumn);
RFX_Text(pFX, _T("[READER_ID]"), m_READER_ID);
return _T("[FINE_HISTORY]");
return _T("ODBC;DSN=Library");
//{{AFX_FIELD_INIT(CFineHistoryDataSet)
m_READER_ID = _T("");
m_AMOUNT = 0;
m_DAYS = 0;
m_ID = 0;
m_nFields = 6;
//}}AFX_FIELD_INIT
m_nDefaultType = snapshot;
: CRecordset(pdb)
共 19 页 第 16 页
长 春 大 学
课程设计纸
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
}
/////////////////////////////////////////////////////////////////////////////
// CFineHistoryDataSet diagnostics
#ifdef _DEBUG
void CFineHistoryDataSet::AssertValid() const
{
}
void CFineHistoryDataSet::Dump(CDumpContext& dc) const
{
}
#endif //_DEBUG
// : implementation file
//
#include "stdafx.h"
#include "Library.h"
#include "ReaderDataSet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
CRecordset::Dump(dc);
CRecordset::AssertValid();
RFX_Long(pFX, _T("[AMOUNT]"), m_AMOUNT);
RFX_Int(pFX, _T("[DAYS]"), m_DAYS);
RFX_Date(pFX, _T("[FINE_DATE]"), m_FINE_DATE);
RFX_Date(pFX, _T("[OK_DATE]"), m_OK_DATE);
RFX_Long(pFX, _T("[ID]"), m_ID);
//}}AFX_FIELD_MAP
共 19 页 第 17 页
长 春 大 学
课程设计纸
/////////////////////////////////////////////////////////////////////////////
// CReaderDataSet
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
IMPLEMENT_DYNAMIC(CReaderDataSet, CRecordset)
CReaderDataSet::CReaderDataSet(CDatabase* pdb)
{
}
CString CReaderDataSet::GetDefaultConnect()
{
}
CString CReaderDataSet::GetDefaultSQL()
{
}
void CReaderDataSet::DoFieldExchange(CFieldExchange* pFX)
{
//{{AFX_FIELD_MAP(CReaderDataSet)
pFX->SetFieldType(CFieldExchange::outputColumn);
RFX_Text(pFX, _T("[NAME]"), m_NAME);
return _T("[READER]");
return _T("ODBC;DSN=Library");
//{{AFX_FIELD_INIT(CReaderDataSet)
m_NAME = _T("");
m_IDCARD = _T("");
m_MAXNUM_CAN_BORROW = 0;
m_READER_ID = _T("");
m_FLAG_BORROW = _T("");
m_nFields = 5;
//}}AFX_FIELD_INIT
m_nDefaultType = snapshot;
: CRecordset(pdb)
共 19 页 第 18 页
长 春 大 学
课程设计纸
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
装
┊
┊
┊
┊
┊
订
┊
┊
┊
┊
┊
线
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
┊
}
/////////////////////////////////////////////////////////////////////////////
// CReaderDataSet diagnostics
#ifdef _DEBUG
void CReaderDataSet::AssertValid() const
{
}
void CReaderDataSet::Dump(CDumpContext& dc) const
{
}
#endif //_DEBUG
CRecordset::Dump(dc);
CRecordset::AssertValid();
RFX_Text(pFX, _T("[IDCARD]"), m_IDCARD);
RFX_Int(pFX, _T("[MAXNUM_CAN_BORROW]"), m_MAXNUM_CAN_BORROW);
RFX_Text(pFX, _T("[READER_ID]"), m_READER_ID);
RFX_Text(pFX, _T("[FLAG_BORROW]"), m_FLAG_BORROW);
//}}AFX_FIELD_MAP
共 19 页 第 19 页


发布评论