C++语言课程设计MFC设计图书管理系统.docx

上传人:b****3 文档编号:4268377 上传时间:2023-05-06 格式:DOCX 页数:116 大小:1.57MB
下载 相关 举报
C++语言课程设计MFC设计图书管理系统.docx_第1页
第1页 / 共116页
C++语言课程设计MFC设计图书管理系统.docx_第2页
第2页 / 共116页
C++语言课程设计MFC设计图书管理系统.docx_第3页
第3页 / 共116页
C++语言课程设计MFC设计图书管理系统.docx_第4页
第4页 / 共116页
C++语言课程设计MFC设计图书管理系统.docx_第5页
第5页 / 共116页
C++语言课程设计MFC设计图书管理系统.docx_第6页
第6页 / 共116页
C++语言课程设计MFC设计图书管理系统.docx_第7页
第7页 / 共116页
C++语言课程设计MFC设计图书管理系统.docx_第8页
第8页 / 共116页
C++语言课程设计MFC设计图书管理系统.docx_第9页
第9页 / 共116页
C++语言课程设计MFC设计图书管理系统.docx_第10页
第10页 / 共116页
C++语言课程设计MFC设计图书管理系统.docx_第11页
第11页 / 共116页
C++语言课程设计MFC设计图书管理系统.docx_第12页
第12页 / 共116页
C++语言课程设计MFC设计图书管理系统.docx_第13页
第13页 / 共116页
C++语言课程设计MFC设计图书管理系统.docx_第14页
第14页 / 共116页
C++语言课程设计MFC设计图书管理系统.docx_第15页
第15页 / 共116页
C++语言课程设计MFC设计图书管理系统.docx_第16页
第16页 / 共116页
C++语言课程设计MFC设计图书管理系统.docx_第17页
第17页 / 共116页
C++语言课程设计MFC设计图书管理系统.docx_第18页
第18页 / 共116页
C++语言课程设计MFC设计图书管理系统.docx_第19页
第19页 / 共116页
C++语言课程设计MFC设计图书管理系统.docx_第20页
第20页 / 共116页
亲,该文档总共116页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C++语言课程设计MFC设计图书管理系统.docx

《C++语言课程设计MFC设计图书管理系统.docx》由会员分享,可在线阅读,更多相关《C++语言课程设计MFC设计图书管理系统.docx(116页珍藏版)》请在冰点文库上搜索。

C++语言课程设计MFC设计图书管理系统.docx

C++语言课程设计MFC设计图书管理系统

 

天津理工大学聋人工学院

 

《C++语言课程设计》

 

专业:

网络工程

年级:

2015级一班

姓名:

胡志冲

学号:

成绩:

完成日期:

20161220

 

 

第一章 简介

1.1设计题目

图书管理系统

1.2指导教师

第二章《图书管理系统》设计意义

2.1设计内容概述

本课程设计图书管理系统,必修要满足使用方便、操作灵活和数据安全等设计需求。

本系统在设计时应满足以下几个目标:

1.采用人机对话的操作方式,界面设计美观友好,操作灵活、方便、快捷、准确数据保存安全可靠。

2.实现对图书信息的管理功能。

3.系统运行稳定、安全可靠。

2.2需求分析

信息技术的飞速发展给图书企业的管理带来了全新的变革.采用图书管理系统对图书企业的经营运作进行全程管理.不仅可以使企业摆脱以往人工管理产生的一系列问题,而且可以提高管理效率、降低管理成本、增加经济效益。

通过管理系统对图书企业的发展进行规划,可以收集大量关键可靠的数据。

企业决策层分析这些数据,做出合理决策,及时调整,使之能够更好地遵循市场的销售规律,适应市场的变化,从而让企业能够在激烈的行业竞争中占据一席之地。

2.3设计意义

1.有助于加深我们对C++程序设计这门课程的理解,我们在课堂上学的都是基础理论知识,对于如何用程序语言来描述所学知识还是有一定难度。

通过课程设计,我们可以真正理解其内涵。

 

2.有利于我们逻辑思维的锻炼,程序设计能直接有效地训练学生的创新思维、培养分析问题、解决问题能力。

即使是一个简单的程序,依然需要学生有条不理的构思。

 

3.有利于培养严谨认真的学习态度,在程序设计过程里,当我们输入程序代码的时候,如果不够认真或细心,那么可能就导致语法错误,从而无法得出运行结果。

那么,这个我们反复调试,反复修改的过程,其实也是对我们认真严谨治学的一个锻炼。

第三章总体设计

3.1系统运行环境

1.硬件环境

PC机

2.软件环境

操作系统:

Windows10

开发工具:

Visualstudio2010

3.2系统结构图

图书管理系统结构图如图3.1所以。

该系统包括:

添加、修改、删除、查询、浏览等。

图3.1系统的功能模块图

3.3系统各模块的功能

表3.2主要类介绍

类名

派生自

说明

CtianjinApp

CWinApp

为初始化应用程序Window应用程序基类的派生类

Login

CDialog

用户登录对话框

Register

CDialog

注册对话框

CtianjinDlg

CDialog

主程序界面对话框

sta

CStatic

由于直接用CStatic创建的静态文本控件的样式是默认,但不是理想的效果,故再次继承CStatic,可以重新改变样式。

button

CButton

由于直接用CButton创建的按钮控件的样式是默认,但不是理想的效果,故再次继承CButton,可以重新改变样式。

Explore

CDialog

浏览对话框

Combox

CComboBox

由于直接用CComboBox创建的组合框控件的样式是默认,但不是理想的效果,故再次继承CComboBox,可以重新改变样式。

entering

CDialog

编辑对话框

EditPrice

CEdit

由于直接用CEdit创建的编辑框的功能还不够,所以再次继承CEdit,可以多加功能-限制输入字符

query

CDialog

查询对话框

Setting

CDialog

设置对话框

About

CDialog

关于对话框

表3.3主要函数介绍

源文件

函数名称

功能描述

Explore.cpp

OnInitDialog

OpenFile

OnClickedButton1

OnClickedButton2

ExchangeBook

对对话框进行初始化处理

打开文件函数

响应“升序”按钮实现排序该图书信息

响应“升序”按钮实现排序该图书信息

交换各对象的数据

表3.4主要函数介绍

源文件

函数名称

功能描述

CtianjinDlg.cpp

OnInitDialog

OnPaint

OnQueryDragIcon

OnTimer

UpdateFile

OnExit

OnEnter

OnAbout

OnQuery

OnSetting

OnExplore

对对话框进行初始化处理

对对话框绘制部分应用窗口

系统获取鼠标图标

用于实现定时控制功能

用于实现更新文件来计算收了几本书

响应“退出”按钮实现退出本程序

响应“编辑”按钮实现启动编辑对话框

响应“关于”按钮实现启动关于对话框

响应“查询”按钮实现启动查询对话框

响应“设置”按钮实现启动设置对话框

响应“浏览”按钮实现启动浏览对话框

表3.5主要函数介绍

源文件

函数名称

功能描述

Entering.cpp

OnInitDialog

OnCtlColor

OnBnClickedOk

Check

Input

OnClose

OnLvnItemchangedList1

OnBnClickedOk2

OnBnClickedOk3

OnLvnColumnclickList1

OnNMClickList1

OnBnClickedButton1

对对话框进行初始化处理

控件窗口函数用于画出控件菜单处理

添加记录信息

检查输入的内容是否为空

输入记录信息

关闭该对话框

某个项已经发生变化

响应“删除”按钮实现删除该图书信息

响应“修改”按钮实现修改该图书信息

单击列,用于勾选全部

当鼠标单击列表视图控件时产生

响应“清空”按钮实现修改该图书信息

 

表3.6主要函数介绍

源文件

函数名称

功能描述

query.cpp

OnInitDialog

OnBnClickedRadio1

OnBnClickedRadio2

OnBnClickedRadio3

OnBnClickedRadio4

OnBnClickedRadio5

OnBnClickedButton1

QueryNum

QueryName

QueryAuthor

QueryPress

QueryAny

OpenFile

Tip

insert

OnBnClickedButton2

对对话框进行初始化处理

响应“书号”按钮实现选择该方式查询

响应“书名”按钮实现选择该方式查询

响应“作者”按钮实现选择该方式查询

响应“出版社”按钮实现选择该方式查询

响应“任何内容”按钮实现选择该方式查询

关闭该对话框

查询书号函数

查询书名函数

查询作者函数

查询出版社函数

查询任何函数

打开文件

提示用于告诉用户找到了多少本

将已找到的几本书插入在显示上

响应“查询”按钮实现根据该方式查询

 

3.4对象数据结构

每个对象记录着每本书的信息,为了保护数据安全,故把其的这些成员变量声明为private,就是说在类外的话,不能直接调用对象的成员变量名来赋值或者获取其值,这就达到了保护数据,但是在某个时候遇到数据不对可能需要修改,这时就要加成员函数来修改或者获取,而且把成员函数声明为public,由于在类外需要正常调用,故声明为公开。

其表如下。

表3.7主要变量介绍

变量名

类型

功能描述

Name

Num

Author

Press

Time

Price

Char

Char

Char

Char

Char

Double

书名

书号

作者

出版社

时间

价格

表3.8主要函数介绍

源文件

函数名称

功能描述

book.cpp

SetName

SetNum

SetAuthor

SetPress

SetTime

SetPrice

GetName

GetNum

GetAuthor

GetPress

GetTime

GetPrice

设置当前对象的成员变量name的值

设置当前对象的成员变量num的值

设置当前对象的成员变量Author的值

设置当前对象的成员变量Press的值

设置当前对象的成员变量Time的值

设置当前对象的成员变量Price的值

获取当前对象的成员变量name的值

获取当前对象的成员变量Num的值

获取当前对象的成员变量Author的值

获取当前对象的成员变量Press的值

获取当前对象的成员变量Time的值

获取当前对象的成员变量Price的值

 

第四章详细设计

4.1程序源代码

4.1.1登陆模块

Login.h

#pragmaonce

#include"tianjinDlg.h"

#include"afxwin.h"

//Login对话框

classLogin:

publicCDialog

{

DECLARE_DYNAMIC(Login)

inta;

public:

Login(CWnd*pParent=NULL);//标准构造函数

virtual~Login();

//对话框数据

enum{IDD=IDD_LOGIN};

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);

CtianjinDlgdlg;

DECLARE_MESSAGE_MAP()

public:

virtualBOOLOnInitDialog();

afx_msgvoidOnClose();

CStringuser;

CStringpassword;

afx_msgvoidOnBnClickedOk();

CButtonregis;

afx_msgvoidOnBnClickedButton1();

Login.cpp

#include"stdafx.h"

#include"tianjin.h"

#include"Login.h"

#include"afxdialogex.h"

#include"Register.h"

IMPLEMENT_DYNAMIC(Login,CDialog)

Login:

:

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

:

CDialog(Login:

:

IDD,pParent)

user(_T(""))

password(_T(""))

{

}

Login:

:

~Login()

{

}

voidLogin:

:

DoDataExchange(CDataExchange*pDX)

{

CDialog:

:

DoDataExchange(pDX);

DDX_Text(pDX,IDC_EDIT3,user);

DDX_Text(pDX,IDC_EDIT4,password);

DDX_Control(pDX,IDC_BUTTON1,regis);

}

BEGIN_MESSAGE_MAP(Login,CDialog)

ON_WM_CLOSE()

ON_BN_CLICKED(IDOK,&Login:

:

OnBnClickedOk)

ON_BN_CLICKED(IDC_BUTTON1,&Login:

:

OnBnClickedButton1)

END_MESSAGE_MAP()

 

BOOLLogin:

:

OnInitDialog()

{

CDialog:

:

OnInitDialog();

a=0;//初始化a的值为0用于判断该值是否退出本程序当输入密码错误,就使该a的值增加1

CRectr;//矩形的类,数据成员是矩形左上角的x的坐标,矩形左上角Y的坐标,矩形右下角x的坐标,矩形右下角Y的坐标

CStringuser;

this->GetClientRect(&r);//是获得窗口的当前的客户区,把各坐标值保存在r对象。

this->MoveWindow(600,300,r.right,r.bottom);//根据上面获得窗口的大小,来调整并且移动。

GetPrivateProfileString("login","user","NULL",user.GetBuffer(20),20,"./setting.ini");

//从setting.ini配置文件中的login节名中获取该user键名的值并保存在user的值,如果找不到该键名,则保存第三个参

//数的值即默认的值表示未注册的账号,反之找到了该值,表示已经注册了

if(user!

="NULL"){//用于判断上面获得的值是否已经注册过如注册过,则执行if()后边的语句

regis.EnableWindow(0);//在该函数的参数赋值为0表示禁止指定的控件接受鼠标和键盘的输入由于该已经注册过的。

regis.SetWindowTextA("已注册");//指定该控件的内容设为”已注册"用于提示

}

returnTRUE;

}

voidLogin:

:

OnClose()

{

CDialog:

:

OnClose();

}

voidLogin:

:

OnBnClickedOk()

{

this->UpdateData

(1);//将各控件中的数据保存到相应的变量分别为”user“”password“

if(!

user.IsEmpty()&&!

password.IsEmpty())//检查该各变量的值是否为空,如该值为空,就执行else后边的语句

{

CStringuser1,password1;//定义两个字符串类变量用于从配置文件的注册过的用户及密码的值保存在该变量的

GetPrivateProfileString("login","user","NULL",user1.GetBuffer(20),20,"./setting.ini");//从本身程序的当前的setting.ini配置

//文件中的login节名中获取该user键名的值并保存在user1的值,如果找不到该键名,则保存默认值为”NULL“

GetPrivateProfileString("login","password","NULL",password1.GetBuffer(20),20,"./setting.ini");//如同上面的方法

if(user==user1&&password==password1)//对比各值是否一致,满足此条件表示该用户名及密码都是正确,可以登陆,即执行if()后边的语句

{

this->ShowWindow(SW_HIDE);//把该对话框的显示方式为隐藏

dlg.DoModal();//启动主窗口的对话框

CDialog:

:

OnOK();

}

else{

a++;//密码错误次数

if(a>3)//如超过3次的错误密码就执行if()后边的语句

{CDialog:

:

OnCancel();

return;

//调用关闭该对话框的函数

}

CStringd;

d.Format("用户名或者密码错误%d次超过三次错误即将自动退出",a);

MessageBox(d,"登陆提示",MB_OK|MB_ICONWARNING);//用于提示密码错误以避免令人觉得这程序有问题

}

}

else

MessageBox("用户名或者密码的字符串为空","登陆提示",MB_OK|MB_ICONWARNING);//当该值为空,则执行该语句用于提示。

}

voidLogin:

:

OnBnClickedButton1()

{

Registerdialog;//定义注册对话框的对象变量

dialog.DoModal();//启动注册对话框

}

};

4.1.2注册模块

Register.h

#pragmaonce

#include"afxwin.h"

//Register对话框

classRegister:

publicCDialog

{

DECLARE_DYNAMIC(Register)

public:

Register(CWnd*pParent=NULL);//标准构造函数

virtual~Register();

//对话框数据

enum{IDD=IDD_REGISTER};

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);//DDX/DDV支持

DECLARE_MESSAGE_MAP()

public:

afx_msgvoidOnBnClickedOk();

CStringuser;

CStringpassword;

CStringpassword1;

};

Register.cpp

#include"stdafx.h"

#include"tianjin.h"

#include"Register.h"

#include"afxdialogex.h"

//Register对话框

IMPLEMENT_DYNAMIC(Register,CDialog)

Register:

:

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

:

CDialog(Register:

:

IDD,pParent)

user(_T(""))

password(_T(""))

password1(_T(""))

{

}

Register:

:

~Register()

{

}

voidRegister:

:

DoDataExchange(CDataExchange*pDX)

{

CDialog:

:

DoDataExchange(pDX);

DDX_Text(pDX,IDC_EDIT1,user);

DDX_Text(pDX,IDC_EDIT6,password);

DDX_Text(pDX,IDC_EDIT3,password1);

}

BEGIN_MESSAGE_MAP(Register,CDialog)

ON_BN_CLICKED(IDOK,&Register:

:

OnBnClickedOk)

END_MESSAGE_MAP()

voidRegister:

:

OnBnClickedOk()

{

this->UpdateData();//默认值是TRUE,即从控件传给变量

if(!

user.IsEmpty()&&!

password.IsEmpty()&&!

password1.IsEmpty())//各变量的字符串是否为空,如都不为空,则执行if()后边的语句继续注册

{

if(password==password1)//新密码与第二次新密码对比下,如相等,则继续执行注册,反之不继续注册

{if(IDOK==MessageBox("确定要注册该账号吗?

","注册提示",MB_OKCANCEL|MB_ICONQUESTION))//输出提示是否要确定注册,如点击确认返回值为IDOK

{

WritePrivateProfileString("login","user",user,"./setting.ini");

////向该setting.ini配置文件中的login节名中设置该user键名的值为user的值

WritePrivateProfileString("login","password",password,"./setting.ini");

HWNDbutton;//定义窗口句柄

this->GetParent()->GetDlgItem(IDC_BUTTON1,&button);//获取当前窗口的父窗口句柄(登陆对话框),然后通过父窗口句柄获取指定参数ID为IDC_BUTTON1的子元素的句柄并绑定button窗口句柄

:

:

SetWindowTextA(button,"已注册");//改变指定button窗口句柄的文本内容为"已注册"。

:

:

EnableWindow(button,0);//第二个参数的值为0表示禁止指定的控件接受鼠标和键盘的输入

MessageBox("已经成功注册该账号:

"+user+"!

","注册提示",MB_OK|MB_ICONASTERISK);//注册成功输出提示

CDialog:

:

OnCancel();

}}

else

MessageBox("新密码与第二次新密码不一致请注意输入正确!

","密码提示",MB_OK|MB_ICONEXCLAMATION);

}

else

MessageBox("用户名或者密码的字符串为空","注册提示",MB_OK|MB_ICONWARNING);

}

4.1.3主菜单模块

tianjinDlg.h

#pragmaonce

#include"button.h"

#include"sta.h"

#include"entering.h"

#include"query.h"

#include"Setting.h"

#include"Explore.h"

//CtianjinDlg对话框

classCtianjinDlg:

publicCDialogEx

{

//构造

public:

CtianjinDlg(CWnd*pParent=NULL);//标准构造函数

//对话框数据

enum{IDD=IDD_TIANJIN_DIALOG};

protected:

virtualvoidDoDataExchange(CDataExchange*pDX);

//实现

protected:

HICONm_hIcon;

CToolBartoolbar;

CStatusBarstatusbar;

CImageListtoolimag;

CImageListtoolhotimag;

buttonbut2;

inta;

intb;

virtualBOOLOnInitDialog();

afx_msgvoidOnPaint();

afx_msgHCURSOROnQueryDragIcon();

DECLARE_MESSAGE_MAP()

public:

afx_msgvoidOnTimer(UINT_PTRnIDEvent);

buttonbut1;

voidUpdateFile();

stastat,stat1;

afx_msgvoidOnExit();

afx_msgvoidOnEnter();

afx_msgvoidOnAbout();

protected:

public:

afx_msgvoidOnQuery()

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2