资源描述
江 苏 师 范 大 学 科 文 学 院
本 科 生 课 程 设 计
课 程 名 称: 计算机程序设计(VC++)
题 目: 图书馆管理系统
专 业 班 级: 10电信一班
学 生 姓 名: 张文成
学 生 学 号: 108326122
日 期: 20130111
指 导 教 师: 姜芳艽
科文学院教务部印制
一、课程设计目的、任务和内容要求:
《计算机语言程序设计》是一门以编程实践为主的专业课,目的在于培养学生利用计算机语言进行软件开发所必需的基本思想和基本技能,进一步提高综合应用计算机语言的各种编程知识和技巧进行程序设计的能力,通过本次课程设计,学生应能达到具备设计功能较为复杂的应用程序的能力,同时培养学生自主学习和独立创新的精神。
任务如下:
1.进行需求分析和概要设计,给出流程图。
2.写出详细设计,熟悉其中采用的关键技术。
3.给出具体的编码实现并调试。
4.写课程设计报告提交源程序。
内容要求:
设计并完成软件系统。要求:
1.应具有简洁友好的用户界面。
2.要求软件系统的功能完整。
3.要求程序具备正确性,可读性和运行的高效性。
二、进度安排:
第1~3天: 查找资料,进行需求分析和概要设计;
第4~6天: 各模块的详细设计;
第7~12天: 软件实现与调试;
第13~14天:写课程设计报告并提交源程序。
三、主要参考文献:
1.孙鑫. VC++深入详解[M] .北京:电子工业出版社, 2006.
2.郑阿奇. Visual C++实用教程(第3版)[M]北京:.电子工业出版社,2010
3.管西京. 深入体验VC++项目开发(开发日记)[M] .北京:清华大学出版社, 2011
4.马安鹏.Visual C++程序设计导学[M] .北京;清华大学出版社,2002
5.Beck Zaratian.Microsoft Visual Visual C++ 6.0程序员指南.希望图书创作室译. [M] .北京;北京希望电脑公司出品,1998
6.Richard C.Leinecker,Tom Archer. Visual C++ 6 宝典.张艳,张谦译. [M] .北京;电子工业出版社,1999
指导教师签字:
年 月 日
53 / 59
目 录
目 录 I
摘 要 I
Abstract II
1 绪论 1
1.1需求背景 1
1.1.1开发目标 1
1.1.2开发意义 1
1.1.3主要工作内容 2
2 设计方案简述 3
2.1 图书馆管理系统功能介绍 3
2.2程序开发环境和基本开发软件 3
2.2.1 VC++开发软件 3
2.2.2 数据库开发软件 3
2.2.3环境搭建 4
2.3 程序设计流程图 4
2.4系统的功能模块划分 4
3详细设计 6
3.1 数据库的建立及更新 6
3.1.1数据库的建立 6
3.2系统登录模块设计 8
3.3系统主界面设计 11
3.4图书信息管理模块设计 12
3.5管理员、读者信息管理模块设计 13
3.7借书、罚金查询查询模块设计 15
3.7系统帮助模块设 16
4 设计结果及分析 17
4.1黑盒测试 17
4.2测试结果 17
4.2.1登录测试 17
4.2.2管理测试 18
4.2.3借书测试 22
4.2.4还书测试 23
4.2.5借书、罚金查询测试 24
4.2.6系统时间查询测试 25
5 总结 26
5.1 小结 26
参考文献 27
附录 主要程序代码 28
摘 要
随着现代科学技术的进步,人类社会正逐走向信息化。图书馆拥有丰富的文献信息资源,是社会信息系统的重要组成部分,在信息社会中的作用愈来愈重要。我国图书馆计算机等信息技术的应用起步于20世纪70年代末期,随着改革开放的步伐得以迅速发展,特别是90年代以后,我国图书馆信息网络建设取得了较大发展,图书馆信息化建设迈上了一个新台阶。
本文介绍了在Visual C++环境下开发图书管理信息系统的过程。文章介绍了图书馆管理信息系统的系统分析部分,包括可行性分析、图书借阅流程分析等;系统设计部分主要介绍了系统功能设计和数据库设计及代码设计;系统实现部分说明了几个主要模块的算法,本系统界面友好,操作简单,比较实用。
系统主要完成了用户登录功能、新建、删除用户功能、用户管理功能,对数据库内图书信息、借阅信息和读者信息进行查询、添加、删除功能。
关键词: Visual C++;数据库管理;图书;借阅
Abstract
Along with the progress of modern science and technology, human society is driven to informationization.Libraries have abundant literature information resources, social information system is an important part of the role in the information society, more and more important. Chinese library computers started in the application of information technology in the late 1970's, along with the reform and opening-up develop rapidly, especially after 1990s, the library information network construction in China has made great development, library informatization construction to step on to a new step.
This paper introduces in Visual C++ environment development books management information system process. This paper introduces the library management information system of analysis parts, including the feasibility analysis, library process analysis, etc. System design part mainly introduced the system function design and database design and code design; System realize part of several major modules illustrates the algorithm, this system friendly interface, the operation is simple, is more practical.
Library management system mainly to complete the user login, create, delete user function, user management function, the database of library information, library information.
Key words: Visual C++;database; management; books; borrow
1 绪论
1.1需求背景
随着科学技术的不断提高,计算机科学日渐成熟, 作为计算机应用的一部分,使用计算机对图书信息进行管理,具有手工管理所无法比拟的优点。图书管理系统的开发是一个老生常谈的问题,以其作为数据库开发的示例不仅是因为它的开放性,而且还因为它是一个开放的系统,比较成熟。
用计算机制作的图书信息管理系统还可以通过功能强大的Internet网及时的向读者发布图书的最新动态,因此,开发这样一套管理软件成为很有必要的事情。而今,这类相关的管理系统已广泛的应用在各行各业,成为各行业提高相关管理效率的重要手段。图书信息管理系统也在日益广泛地应用于各图书馆的管理中,大大提高了图书管理的相关管理效率,其在图书管理中所起的作用是显而易见的。
1.1.1开发目标
本次课题为图书信息管理系统,其主要包含图书基本信息和图书借阅系统,能进行图书信息的录入、读者登记、查询等功能。该项目开发的软件为学校图书信息管理系统软件,是鉴于目前学校图书数剧增,图书信息呈爆炸性增长的前提下,图书馆对图书信息管理的自动化与准确化的要求日益强烈的背景下构思出来的,该软件设计完成后可用于所有中小型图书馆的图书信息的管理。
1.1.2开发意义
目前社会上信息管理系统发展飞快,各个企事业单位都引入了信息管理软件来管理自己日益增长的各种信息,图书管理系统也是有了很大的发展,商业化的图书信息管理软件也不少,但本系统完全独立开发,力求使系统功能简洁明了,但功能齐全且易于操作。
1.1.3主要工作内容
本课题研究内容本次毕业设计通过对管理系统模型的研究,提出了一套构造图书信息管理系统模型的方法,提出了图书管理系统的一般建立方法,并且利用数据库、信息系统分析所学知识,结合其它相关管理常识,通过对某图书馆图书流通过程的分析,建立相关数据模型,利用面向对象开发工具对其进行设计与开发。系统主要由两大子系统组成:图书管理和维护子系统以及图书信息服务子系统。系统主要有四个数据库表:图书信息表,用户信息表,学生信息表和借出信息表本课题研究方案1. 以现代软件工程原理和思想指导整个课题的开发过程,要经过系统可行性分析、需求分析、概要设计、详细设计、编码、调试维护和安装实施等步骤。2.要有详细的设计说明书; 3.每一模块的流程图要很清晰;4.本系统能够正常的运行,能较好得完成预定的功能;5.系统要有完整的帮助文件,供前台操作员能方便的操作本系统。
2 设计方案简述
2.1 图书馆管理系统功能介绍
本系统主要实现对图书馆信息的管理,主要可以分为两大块:图书信息的服务系统和图书的综合管理系统。图书的使用对象是借阅者,例如学生,教师;管理者是图书馆的管理员。因此根据这些信息,本系统的主要功能就是:实现图书馆图书信息的管理和维护,如用户信息管理,图书馆规则维护,新书入库,整理图书,修改图书信息和进行查询等;以及服务系统的图书信息查询,图书的借出和归还等功能图书信息管理系统能够为用户提供充足的信息和快捷的查询手段。例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高图书信息管理的效率,也是图书管理的科学化、数字化、正规化管理,与世界接轨的重要条件。
2.2程序开发环境和基本开发软件
2.2.1 VC++开发软件
对于小型应用软件的开发,VC++ 6.0易操作,并且有强大的调试和纠错功能,对于经验不多的开发者来说,VC++ 6.0 应该是首先选择的工具。这款软件主要基于MFC(Microsoft Foundation Classes)卡发环境,MFC是以C++类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。MFC中有大量的美观的使用控件,对于程序界面的设计十分方便。
2.2.2 数据库开发软件
在这里采用了Microsoft Acess ODBC数据库,来实现对数据的存储与更新。Microsoft Acess ODBC数据库具有操作简便,性能良好等特点,便于vc++编程初学者使用
2.2.3环境搭建
首先,构建数据库,在构建完成之后,进行配置Microsoft Acess ODBC数据库。配置完成之后,新建单文档,导入数据源文件即可。
2.3 程序设计流程图
表BOOK
图书管理系统
用户登录
输入用户名和密码
是否正确
是
否
图书管理
读者管理
借阅管理
管理员管理
新书入库
书籍查询
书籍信息修改
增加读者
读者信息查询
读者信息修改
图书借阅
图书归还
逾期罚款
管理员信息查询
增加、删除帐号
退出系统
表READER
表BORROW
表FINE
表CLERK
图2-1流程图
2.4系统的功能模块划分
整个图书管理系统分为四个模块。分别为图书管理模块、借阅管理模块、读者管理模块和系统管理模块。
图书管理
读者管理
图书管理系统
借阅管理
系统管理
新书入库
读者信息查询
管理员信息查询
罚金设置
图书归还
书籍查询
书籍信息修改
图书归还
逾期罚款
图书借阅
图书归还
读者信息修改
增加读者
退出系统
删除帐号
登录
图2-2 系统模块化分
3详细设计
3.1 数据库的建立及更新
3.1.1数据库的建立
用ACCESS2007建立名为“Library”的数据库,创建5个表,分别为:BOOK,CLERK,READER,BORROW和FINE。
图3-1ACCESS数据表
图3-2 ODBC数据源管理器配置
图3-3利用ODBC数据源管理器创建数据源
图3-4建立名为“Library”的MFC单文档应用程序向导
3.2系统登录模块设计
图3-5添加系统登录对话框
图3-6属性设置
双击对话框打开ClassWizard对话框,为IDD_LOGIN添加CLoginMDlg类,按下表为该类。
图3-7添加成员变量
图3-8创建一个名为CClerkDataSet新类
图3-9创建数据源
图3-10选择对应的表格
图3-11添加相应的消息响应函数
3.3系统主界面设计
图3-12主界面
其中系统登录可以登陆和退出系统,管理信息可以查看管理员信息、图书信息、读者信息;借阅手续中包含图书借阅、图书归还、缴纳罚款;信息查询中包含读者查询、系统时间查询;帮助中可以查看系统帮助和版本信息。
3.4图书信息管理模块设计
图3-13书籍信息界面
添加书籍信息对话框,属性设置为IDD_BOOK_MAINTAIN,微软雅黑,10号字体
为IDD_BOOK_MAINTAIN添加成员变量。
创建一个新类,名为CBookDataSet,方法步骤同CClerkDataSet,添加消息映射,最后输入按钮代码。
3.5管理员、读者信息管理模块设计
图3-14管理员信息管理
添加管理员信息对话框,属性设置为IDD_CLERK_MAINTAIN,微软雅黑,10号建立新类CClerkMDlg,按图书信息模块设计步骤做相似操作,添加消息映射,最后输入按钮代码。
图3-15读者信息管理
添加读者信息对话框,属性设置为IDD_READER_MAINTAIN,微软雅黑,10号,为IDD_LENDOUT添加成员变量。建立新类LendOutDlg,按上述步骤做相似操作,添加消息响应,最后输入按钮代码。
图3-16还书管理
添加图书归还对话框,属性设置为IDD_ReturnBook,微软雅黑,10号,为IDD_ReturnBook添加成员变量,建立新类CReturnBookDlg,按上述步骤做相似操作,添加消息映射,最后输入代码。
3.7借书、罚金查询查询模块设计
图3-17借书查询
添加借书查询对话框,属性设置为IDD_DLGREADERQRY,微软雅黑,10号,为IDD_DLGREADERQRY添加成员变量,建立新类CReaderQryDlg,按上述步骤做相似操作,添加消息映射,最后输入代码。
图3-18罚金查询
添加缴纳罚金对话框,属性设置为IDD_FINE,微软雅黑,10号字体,为IDD_FINE添加成员变量,建立新类CFineHistoryDataSet,按上述步骤做相似操作,添加消息映射
最后输入代码。
3.7系统帮助模块设
图3-19系统帮助
4 设计结果及分析
4.1黑盒测试
采用黑盒测试方法。对功能进行逐一测试,在输入合理及不合理的数据后测试系统的正常运作情况
测试1:系统登录测试
测试2:图书管理测试
测试3:读者管理测试
测试4:管理员管理测试
测试5:借书测试
测试6:还书测试
测试7:借书、罚金查询测试
4.2测试结果
4.2.1登录测试
图4-1正确登录
图4-2错误登录
4.2.2管理测试
图4-3图书新增
图4-4读者新增
图4-5编辑管理员信息
图4-6编辑书籍信息
图4-7编辑读者信息
图4-8书籍信息查询
4-9读者信息查询
4.2.3借书测试
图4-10借书测试
图4-11借阅成功
图4-12借阅失败
4.2.4还书测试
图4-13图书归还
4.2.5借书、罚金查询测试
图4-14借书查询
图4-15罚金查询
4.2.6系统时间查询测试
图4-16系统时间查询
5 总结
5.1 小结
在这次的课程设计中,让我学到了很多在课堂上和书本上学不到的知识,我在这次课程设计中最大的收获有以下几方面:
领略到了数据库设计在计算机领域的重要性。数据库作为一个永久存储形式在应用中发挥着重要的作用。在数据库设计中,我明白了数据库设计不是范式越高越好的,我们要根据我们的应用来决定,一切应该以需求为首要选择。
对编程环境、一些控件的使用和界面的设计更加熟悉。因为《图书管理系统》中设计到很多控件的使用,只有很好的使用这些控件才可以给出一个很好的界面呈现在用户面前。这样更有利于数据库和用户之间的交流。
利用软件工程学开发系统。虽然这个《图书管理系统》是一个小的系统,但从这个小的项目中也让我明白了数据库作为任何一个系统的后台的重要性,在开发系统设计和实现中学到和总结很多经验和教训。
参考文献
参考文献类型及标识:
参考文献类型
专著
论文集
报纸文章
期刊文章
学位论文
报告
标准
专利
文献类型标识
M
C
N
J
D
R
S
P
其他未作说明的文献,建议采用单字母“Z”。
[1] 孙鑫. VC++深入详解[M] .北京:电子工业出版社, 2006
[2] 郑阿奇. Visual C++实用教程(第3版)[M]北京:.电子工业出版社,2010
[3] 管西京. 深入体验VC++项目开发(开发日记)[M] .北京:清华大学出版社, 2011
[4] 马安鹏.Visual C++程序设计导学[M] .北京:清华大学出版社,2002
[5] Beck Zaratian.Microsoft Visual Visual C++ 6.0程序员指南.希望图书创作室译. [M] .北京;北京希望电脑公司出品,1998
[6] Richard C.Leinecker,Tom Archer. Visual C++ 6 宝典.张艳,张谦译. [M] .北京;电子工业出版社,1999
附录 主要程序代码
1、 主界面代码
// CMainFrame construction/destruction
//窗体框架创建函数
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
/*if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}*/
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}
// TODO: Delete these three lines if you don't want the toolbar to
// be dockable
//以下为自己添加的代码部分
//先启动登陆界面
//=============用户登陆对话框显示=============
CLoginDlg dlg1;//声明一个登陆对话框对象
dlg1.DoModal();//让对话框对象以有模形式显示
//================开机启动画面================
//CSplashWnd::ShowSplashScreen(this); //显示启动画面
//SetTimer(1, 850, NULL); //修改第二个参数以调整画面停留时间
//Sleep(2000);
//阳伞公司图标
CSplashDlg *dlg = new CSplashDlg(this);
dlg->Create(CSplashDlg::IDD,this); //创建对话框
dlg->ShowWindow(SW_SHOW); //显示对话框
dlg->UpdateWindow();
Sleep(1500); //画面显示停留时间,单位为毫秒
dlg->DestroyWindow(); //销毁对话框
return 0;
}
BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
// TODO: 在此处通过修改
//CREATESTRUCT cs 来修改窗口类或样式
cs.style &=~FWS_ADDTOTITLE;
cs.lpszName = "江苏师范大学敬文图书馆管理系统";
//设定窗口的尺寸
cs.cx = 1024;
cs.cy = 714;
return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
// CMainFrame message handlers
//图书管理菜单按钮
void CMainFrame::OnBookDlg()
{
CBookMDlg dlg;//定义一个对话框类对象
dlg.DoModal();//显示对话框
}
//读者信息管理菜单按钮
void CMainFrame::OnReaderDlg()
{
// TODO: Add your command handler code here
CReaderMDlg dlg;//定义一个对话框类对象
dlg.DoModal();//显示对话框
}
//管理员信息管理菜单按钮
void CMainFrame::OnClerkDlg()
{
// TODO: Add your command handler code here
CClerkMDlg dlg;//定义一个对话框类对象
dlg.DoModal();//显示对话框
}
//书籍借出管理菜单按钮
void CMainFrame::OnLenoutDlg()
{
// TODO: Add your command handler code here
CLendOutDlg dlg;//定义一个对话框类对象
dlg.DoModal();//显示对话框
}
//管理菜单按钮
void CMainFrame::OnFineDlg()
{
// TODO: Add your command handler code here
CFineDlg dlg;//定义一个对话框类对象
dlg.DoModal();//显示对话框
}
//读者信息查询管理菜单按钮
void CMainFrame::OnReaderqryDlg()
{
// TODO: Add your command handler code here
CReaderQryDlg dlg;//定义一个对话框类对象
dlg.DoModal();//显示对话框
}
//图书归还管理菜单按钮
void CMainFrame::OnReturnbookDlg()
{
// TODO: Add your command handler code here
CReturnBookDlg dlg;//定义一个对话框类对象
dlg.DoModal();//显示对话框
}
//系统帮助菜单按钮
void CMainFrame::OnSystermhelp()
{
// TODO: Add your command handler code here
CSystemHelp dlg;//定义一个对话框类对象
dlg.DoModal();//显示对话框
}
//系统时间菜单按钮
void CMainFrame::OnSystermtimeDlg()
{
// TODO: Add your command handler code here
CSystemTime dlg;//定义一个对话框类对象
dlg.DoModal();//显示对话框
}
//登陆对话框菜单按钮
void CMainFrame::OnLoginDlg()
{
// TODO: Add your command handler code here
CLoginDlg dlg;//定义一个对话框类对象
dlg.DoModal();//显示对话框
}
//程序退出菜单按钮
void CMainFrame::OnExit()
{
// TODO: Add your command handler code here
if(MessageBox("确定要退出吗?","提示",MB_YESNO)==IDYES)//
{
CFrameWnd::OnClose();//关闭应用程序
}
}
2、 管理信息
CBookMDlg::CBookMDlg(CWnd* pParent /*=NULL*/)
: CDialog(CBookMDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CBookMDlg)
m_strAUTHOR = _T("");
m_strBOOKID = _T("");
m_strBOOKIDQ = _T("");
m_strBOOKNAME = _T("");
m_strBOOKNAMEQ = _T("");
m_strPRESS = _T("");
m_strPRESSDATE = _T("");
m_strFLAG = _T("");
//}}AFX_DATA_INIT
}
void CBookMDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CBookMDlg)
DDX_Text(pDX, IDC_AUTHOR, m_strAUTHOR);
DDX_Text(pDX, IDC_BOOKID, m_strBOOKID);
DDX_Text(pDX, IDC_BOOKID_Q, m_strBOOKIDQ);
DDX_Text(pDX, IDC_BOOKNAME, m_strBOOKNAME);
DDX_Text(pDX, IDC_BOOKNAME_Q, m_strBOOKNAMEQ);
DDX_Text(pDX, IDC_PRESS, m_strPRESS);
DDX_Text(pDX, IDC_PRESSDATE, m_strPRESSDATE);
DDX_Text(pDX, IDC_FLAG_BORROW, m_strFLAG);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CBookMDlg, CDialog)
//{{AFX_MSG_MAP(CBookMDlg)
ON_BN_CLICKED(IDC_SAVE, OnSave)
ON_BN_CLICKED(IDC_EXIT, OnExit)
ON_BN_CLICKED(IDC_FIRST, OnFirst)
ON_BN_CLICKED(IDC_PRIOR, OnPrior)
ON_BN_CLICKED(IDC_NEXT, OnNext)
ON_BN_CLICKED(IDC_LAST, OnLast)
ON_BN_CLICKED(IDC_NEW, OnNew)
ON_BN_CLICKED(IDC_ENQUERY, OnEnquery)
ON_BN_CLICKED(IDC_EDIT, OnEdit)
ON_BN_CLICKED(IDC_DELETE, OnDelete)
ON_BN_CLICKED(IDC_CANCEL, OnCancel)
ON_BN_CLICKED(IDC_CANCELRec, OnCANCELRec)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CBookMDlg message handlers
//===========================界面操作==============================
//保存按钮消息映射函数
void CBookMDlg::OnSave()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);//控件内容更新到关联变量
//输入为空 提示警告
if (m_strBOOKNAME.IsEmpty() || m_strBOOKID.IsEmpty())
{
AfxMessageBox("请输入相应数据!");
return;
}
if(m_bAdd)//判别添加标志位
{
m_rsDataSet.AddNew();//添加
MessageBox("添加完成!");
}
else
{
//编辑标志位有效
if(m_bEdit)
{
m_rsDataSet.Edit();//编辑
MessageBox("编辑完成!");
}
}
//控件关联变量更新到数据库
m_rsDataSet.m_BOOKNAME=m_strBOOKNAME; //书名
m_rsDataSet.m_BOOKID=m_strBOOKID; //书籍条码
m_rsDataSet.m_AUTHOR=m_strAUTHOR; //作者
m_rsDataSet.m_PRESS=m_strPRESS; //出版社
m_rsDataSet.m_PRESSDATE=m_strPRESSDATE; //出版日期
m_rsDataSet.m_FLAG=m_strFLAG; //借阅信息
//更新到数据库
m_rsDataSet.Update();
m_rsDataSet.Requery();
//标志位失效
m_bAdd = FALSE;
m_bEdit = FALSE;
MessageBox("操作成功!");
DisplayRecord();//显示刷新纪录
//恢复控件只读 不可编辑
//根据控件ID获取控件的句柄 指针指向成员函数撤销编辑框只读设置
((CEdit*)GetDlgItem(IDC_BOOKNAME))->SetReadOnly(true); //书籍名称
((CEdit*)GetDlgItem(IDC_BOOKID))->SetReadOnly(true); //书籍条码
((C
展开阅读全文