C++学院讲义
本文档是根据传智播客C++学院视频教程,进行学习整理。吴英强专注于C/C++ Android, Linux,ARM技术博客http://blog.csdn.net/waldmer文档声明:版本说明:目录:0723.32位与64位调戏窗口程序.….2229993数据分离算法内存检索二分查找法myc90724堆栈简介、内存完成篇.静态区、内存完成篇…-25-多线程-280725-32-内存补码分析∴32补码原码实战.-33-打印整数二进制数据.34-静态库说明·利用 detours劫持-36072641cpplDe.................41级指针41指针数组函数指针/函数指针数组二级指针…0728数组与指针51数组与指针2··…··+·4······;.···44····+······-54-内存分配数据结构数组接口与封装∴,-610729.74字符串查找74语音识别.4Const关键字宇符串应用48内存分配以及处理海量数据.……………850730-89-网站以及后门.中,垂结构体对齐、结构体面试分析.-90-深拷贝与浅拷贝队列92字符串封装…-950801-105欢迎交流,互相学习。吴英强专注于C/C++ Android, Linux,ARM技术博客http://blog.csdn.net/waldmer重定向以及文件扫描.∴-105-进制加密解密-108简单加密按照密码加密…118动态库与静态斥-1220802,……,………125链式栈…链表队列以及优先队列.129-封装链表库135-0804-142C语言和设计模式(继承、封装、多态)-142-世界五百强真题训练∴146-0805...:..146面试题1-100146语音识别控制QQ.………………-146语音控制游戏-157-0813-164-C与CPP不同以及命名空间简介-164-函数重载与函数默认参数-166-泛型auto-168-Newdelete-1690814-173引用高级、引用高级增加.auto自动变量自动根据类型创建数据…Enum-178newdelete全局179大数据乘法与结构体-181函数模板与auto自动变量.-185-宽字符本地化inline内联函数188CCPP不同189-0815;。.∴……-193-函数包装器管理内嵌函数…∴…………-193-函数包装器管理外部函数.-195-函数模板根据类型覆盖.…….….-195CPP类型转换四种cast-199-函数模板重载调用规则-200-函数可变参数通用类型模板函数cpp新数组202高级数组 array. vector.-203欢迎交流,互相学习吴英强专注于C/C++ Android, Linux,ARM技术博客http://blog.csdn.net/waldmerLambda [ret]int x)XXX; I-206动态不规则数组以及增删查改-208-动态数组任意位置插入211多元数组 tuple212new限定区域分配内存的语法-213-函数模板重载-214引用包装器stde(变量)215-仿函数转义字符R”(-217-usng别名模板元编程比递归优化218智能指针∴-220多线程221静态断言以及调试技能的要求 assert-222-0817···-224-递归汉诺塔双层递归-224CPP结构体224面向过程与面向对象的编程模式··,··+···,-226类的常识共用体实现一个类的特征QT应用于类以及类的常识-2310819-234-类的成员函数与 const- mutable构造与析构-237-拷贝构造 deletedefault以及深浅拷贝.静态成员函数成员变量类在内存的存储默认参数..-243-友元类以及友元函数247画图-248-0820···*·;,一Nullptrconst对象类指针引用以及 mallocfree与 newdelete差别250-简单QT界面信号图形化输入输出…-253-类重载运算符-253-QT加法重载类的重载赋值运算复合赋值运算关系运算元重载.256自增在前在后差别···+······∴-261赋值重载深浅拷贝重载下标…∴-269-画图2700822类型转换函数与构造转换函数类的继承类的继承以及区别.-279欢迎交流,互相学习。吴英强专注于cC++ Android, Linux,ARM技术博客http://blog.csdn.net/waldmer继承静态成员与静态函数-280继承实现代码重用281单继承QT案例284多继承简介以及实战继承以及作业安排……,-289-画图.-292-08233静态联合编译与动态联合编译293-类与类指针父类子类交错..-295-父类指针了类指针释放………-295虚函数∴-299-纯虚函数概念以及虚析构函数-303抽象类与纯虚数以及应用∴304虚函数原理-309虚函数分层以及异质链表310-类模板的概念以及应用0825.316类模板…··············4final override322类模板与旾通类的派生类模板虚函数抽象模板类..-323类模板友元………326-位运算算法以及类声明…327类模板与友元函数友元类-331类模板当作类模板参数333static与类模板-334-类嵌套以及类模板嵌套336Rttⅰ实时类型检测337高级new创建-340类以及函数包装器-341类成员函数指针-3430826文件重定向346键盘输入流.-347屏幕输岀流/实数整数输出/格式控制348字符串输入输出.-351-文件读写简单操作/文件读写按行读写扫描读写-355OSQT358字符文件读写二进制与文本差别.-358-get与 getline挖掘数据.….-359-二进制与文本差别-361-二进制文件读写-362-随机位置文本二进制读写…363多线程初级0828-371欢迎交流,互相学习吴英强专注于C/C++ Android, Linux,ARM技术博客http://blog.csdn.net/waldmersTL入门与简介371STL容器概念容器迭代器仿凶数算法STL概念例子.栈队列双端队列优先队列380数据结构堆的概念……∴386-红黑树容器386-0829394位容器 multimapmutisetstring…394-算法函数兰不达表达式以及类重载401GpU编程….…………-4020830∴-407-不达表达式7sπL算法-操作数据-409-0831类与对象的异常416血试100题1-100……………-4220901422各忘录模式.-422-策略模式.,…,,………………-424-抽象工∴-426-工厂方法模式.∴431简单工厂模式433代理模式-436-单例模式-438-迭代器模式-439-访问者模式观察者模式43建造者模式-446-解释器模式………-4148-命令模式-450-模板模式∴453-桥接模式.454适配器模式-456-外观模式.卓·:··4∴-459-亨元模式-460原型模式462责任链模式···+···········∴-464-中介者模式467装饰模式470状态模式471组合模式4740903...,…-478-数据结构与算法概念与学习方法boost模板库与线性表…478欢迎交流,互相学习。吴英强专注于C/C++ Android, Linux,ARM技术博客http://blog.csdn.net/waldmer线性表顺序存储.∴-479线性表链式存储-487索引存储-496-哈希存储.-4960904..-499-boost array bind_ fun ref………-499-boost智能指针-503-boost多线程锁定…509-哈希库.510正则表达式·················:··-511-0905boostsocketTcPUdp512虚数表的调用复杂表达式906.521递归转栈….…521二叉树实现5240907-533-象棋五子棋代码分析.∴-533-寻找算法以及排序算法537欢迎交流,互相学习。吴英强专注于C/C++ Android, Linux,ARM技术博客htt:// blog. csdn.net,/ waldner072332位与64位地址与内存的关系4G=4*1024M=4*1024*1024k=4*1024*1024*1024Byte字节=2~3232位,指针就是4个字节#include void mainont num = 10printf("%p",&num);t*p=&numprintf(p=%d sizeof(p));getchar(调戏窗口程序使用黑客工具,spy,找到/ Findwindow参数:窗口类名,标题#include #include#ⅰ nclude< Windows. h>欢迎交流,互相学习。吴英强专注于C/C++ Android, Linux,ARM技术博客http://blog.csdn.net/waldmer窗口隐藏的时候,可以从任务管理器中,看到此进程已经运行,使用cmd命令中的命令,把进程结束掉C: Userswuyingqiang>taskkill /f/im notepad.exe成功:已终止进程" notepad. exe",其PID为7556成功:已终止进程" notepad. exe",其PID为1384成功:已终止进程" notepad.exe",其PID为3572成功:已终止进程" notepad.exe",其PID为5272。成功:已终止进程" notepad.exe",其PID为6212void open Calco//int i=0/for(;i
- 2020-11-28下载
- 积分:1
基于MFC的考试管理系统
该资源详细的讲解了怎样开发考试管理系统的步骤以及有大部分的代码资源。有利于学习开发、对照有关的系统开发。目录摘要…ABSTRACTII目录II第I章引言1开发背景…误!未定义书签。112选题意义误!未定义书签。113研究内容第2章系统的相关技术介绍…21MFC简介22 SQL SERVER2000简介423ODBC简介24 CRECORDSET类和 CRECORDVIEW类简介+“++++++++4+++25 POWERDESIGNER1简介24本章小结第3章系统的分析与设计.··中·“·::···········:··················“···:··*······3.1需求分析32系统设计321概要设计…非着丰非非目非非自83.2.2系统总体流程图…323系统模块设计,…324菜单设计.103.3本章小结…11第4章数据库设计4I数据库的需求分析124.2数据库表设计4.3数据库建表语句1344本章小结…19第5章系统实现205.1登录模块实现*····-··········*·=·····205.2基本信息模块实现1面错误!未定义书签。2052.1管理员信息…误!未定义书签。20522系部信息错误!未定义书签。24523班级信25524学生信错误!未定义书签。26525教师信息→·+“·*错误!未定义书签。275.2.6章节信息285.3题库管理模块实现.295.3.1判断题信息29532填空题信息*→··*→···········“····“=:··*····*······*·················“·533单选题信息…错误!未定义书签。30534多选题信息错误!未定义书签。3054试卷管理模块实现,…+++++++++++++++++++…误!未定义书签。31541定制试卷中··中中·和中·,···非中…{误!未定义书签。31542试卷管理错误!未定义书签。3455备份惨改模块实现.375.3.修改密码.5.32备份数据库13956本章小结日着南·前非非非非非第6章结束语.141致谢42参考文献43第1章引1.1开发背景在各学校开始逐步引入计算机的今天,试卷作为考察教学成果的重要手段之直没有得到较好的改善,试卷的编辑、整珥工作占了很大的工作量叫传统的手工出卷过程,存在不少弊端:◆出现不必要的重复劳动,造成人力资源及时间上的浪费:◆缺乏科学的衡量、评价及统一试卷难易度、试卷质量的有效手段;◆存在自教自考,考前漏题的情况◆试卷容易出现错漏缺现象,引起不必要的麻烦在以往的教学中,老师出试卷大多由手工出卷,这样生成的试卷往往会有知识点分布太集中、难易程度不当、分值分布不均等一些缺点;这样,既增加了老师的负担,也没有达到很好考查学生学习的真实水平,造成教学上的失误。基于以上的原因,有很多从事软件开发的人员,在试卷自动生成方面做了很大的研究。本系统希望利用计算杋强大的数据处理功能,由计算机逐步代替传统的人工出卷,并且规范岀卷程序,使出卷工作更加和学化、现代化,使教育工作更上一层楼。1.2选题意义w. docIn co考试管理系统,此课题目的是在我们以往学习数据库的基础上,灵活运用数据库开发软件C艹+和结构化查询语言SQL2000,开发出能供教学使用的一套出试卷系统,以方便教学。应用所学的有关数据库的知识,更深入地学习VC+和SQL200,将所学的书面知道和实际应用结合起来,以达到学以致用的日的。在各学校开始逐步引入计算机的今天,试卷作为考察教学成果的重要手段之·,通用试卷自动生成系统升化了传统的手工出卷,解决了很多问题,例如:遥免了不必要的重复劳动:节约了人力资源及时间;使用科学的衡量、评价及统一试卷难易度、试卷质量的有效手段;大幅度降低了试卷出现错漏缺的机率;减少不必要的麻烦。1.3开发内容班级考试管理系统主要涉及的信息数据包括系统管理员信息,系部信息,班级信息,学生信息,教师信息,试卷信息和各种题库等数据,涉及的操作主要包括各种信息数据的管理,为考试定制的试卷,试卷管理等管理操作,教师密码修改,备份数据库等。经考查与分析,典型的考试管理系统主要应具有以下功能:◆基本信息管理:包括对系统管理员信息,系部信息,班级信息,学生信息,救师信息,章节信息的录入,修改和删除等功能。◆试卷管理:包括对已创建的试卷数据的删狳,定制考试试卷,选择考试试卷等功能◆题库管理:包扦对判断题,填空题,单项选择题,多项选择题等题库的管理功能。QOc(m豆丁www.docin.com第2章系统的相关技术介绍21MFC介绍MFC( Microsoft Foundation Class Library)屮的各种类结合起来构成了一个应用程序框架,它的日的就是让程序员在此基础上来建立 Windows下的应用程序,这是一种相对SDK来说更为简单的方法。因为总体上,MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用稈序特有的东西填入这个轮廓。 MicrosoftⅤ Visual c++提供了相应的工具来完成这个工作: App wizard可以用来生成初步的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用户接口; Class wizard用来协助添加代码到框架文件;最后,编译,则通过类库实现了应用程序特定的逻辑3。MFC实现了对应用程序概念的封装,把类、类的继承、动态约束、类的关系和相互作用等封装起来。这样封装的结果对科序员来说,是一套开发模板(或者说模式)。针对不同的应用和目的,程序员采用不同的模板。例如,SD应用程序的模板,MDI应用程序的模板,规则DIL应用程序的模板,扩展DLL应用程序的模板, OLE ACTIVEX应用程序的模板,等等。这些模板都采用了以文档-视为中心的思想,每一个模板都包含一组特定的类。典型的MD应用程序的构成将在下节具体讨论。为了支持对应用程序概念的封装,MC内部必须作大量的作。例如,为了实现消息映射机制,M℃编程框架必须要保证首先得到消息,然后按既定的方法进行处理。又如,为了实现对DLL编程的支持和多线程编程的支持,MIFC内部使用了特别的处理方法,使用模块状态、线程状态等来管理一些重要信息。虽然,这些内部处理对程序员来说是透明的,但是,懂得和理解MFC内部机制有助于写出功能灵活而强大的程序。MFC借助C艹的优势为 Windows开发开辟了一片新天地,同时也借助 Application wizzard使开发者摆脱离」那些每次都必与基本代码,借助 Class Wizard和消息映射使丌发者摆脱了定义消息处理时那种混乱和冗长的代码段。更令人兴合的是利用C++的封装功能使开发者摆脱 Windows中各种句炳的困扰,只需要面对C+中的对象,这样一来使开发更接近开发语言而远离系统。正因为MFC是建立在C++的基础上,所以我强调CC+语言基础对开发的重要性。利用C++的封装性开发者可以更容易理解和操作各种窗口对象;利用C+的派生性开发者可以减少开发自定义窗口的时间和创造出可重用的代码:利用虚拟性可以在必要时更好的控制窗口的活动。而且C++本身所具备的超越C语言的特性都可以使开发者编写出更易用,更灵活的代码在MFC中对消息的处理利用了消息映射的方法,该方法的基础是宏定义实现,通过宏定义将消息分派到不同的成员函数进行处理。因此对于开发系统具有一定的优势。总之,MFC封装了Win32API, OLE APⅠ, ODBC API等底层函数的功能,并提供更高一层的接口,简化了 Windows编程。同时,MC攴持对底层API的直接调用。MFC提供了一个 Windows应用程序开发模式,对程序的控制主要是由MFC框架完成的,而且MFC也完成了大部分的功能,预定义或实现了许多事件和消息处理,等等。框架或者由其本身处理事件,不依赖程序员的代码;或者调用程序员的代码来处理应用稈序特定的事件。MFC是C++类库,程序员就是通过使用、继承和扩展适当的类来实现特定的目的。例如,继承时,应用程序特定的事件由程序员的派生类来处理,不感兴趣的山基类处理。实现这种功能的基础是C++对继承的支持对虚拟函数的支持,以及MFC实现的消息映射机制22 SQL SERVER2000介绍SQL( Structured Query Language,结构查询语言)是个功能强大的数据库语言。SQL通常使用于数据库的遥讯。ANS(美目国家标准学会)声称,SQL是关系数据库管理系统的标准话言。SQL语句通常用于完成一些数据库的操作任务,比如在数据庠中更新数据,或者从数据库中检索薮据。使用SQL的常见关系数据库管理系统有: Oracle、 Sybase、 Microsoft SQL Server、 Access, Ingres等等吊然绝大多数的数据库系统使用SQL,但是它们同样有它们自立另外的专有扩展功能用于它们的系统。但是,标准的SQL命令,比如" Select"、" Insert"、" Update"Delete"、" Create"和"Drop"常常被用于完成绝大多数数据库的操作但是,不像其它的语言,如C、 Pascal等,SOL没有循环结构(比如 if-then-lse、do- while以及函数定义等等的功能。而且SQL只有一个数据类型的固定设置,换句话说,你不能在使用其它编程语言的时候创建你自己的数据类型。SL功能强人,但是概括起来,它可以分成以下几组◆DML( Data Manipulation Language,数据操作语言):用于检索或者修改数据◆DDL( Data Definition Language,数据定义语言):用于定义数据的结构,比如创建、修改或者删除数据库对象;◆DCI.( Data Control Language,数据控制语言):用于定义数据库用户的杈限DML组可以细分为以下的几个语句:◆ SELECT:用于检索数据。◆ INSERT:用于增加数据到数据库。◆ UPDATE:用于从数据库中修改现存的数据。◆ DELETE:用于从数据库中删除数据23ODBC介绍ODBC( Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA, Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对薮据庳访问的标准API(应用程序编程接口)。这些AP利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打父道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是 FoxPro、Aes, MYSQL还是Oracle数据库,均可用 ODBC AP进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。一个完整的ODBC由下列几个部件组成:应用程序( Application)ODBC管理器( Administrator),该程序位于 Windows95控制面板( Control Panel)的32位ODBC内,其主要任务是管理安装的ODBC驱动程序和管理数据源。驱动程序管理器 Driver Manager)。驱动程序管理器包含在ODBC32DLL中,对用户是透明的。其任务是管理ODBC驱动程序,是ODBC中最重要的部件数据源。数据源包含∫数据库位置和数据库类型等信息,实际上是一种数据逹接的抽象。应用程序要汸问一个数据库,首先必须用ODBC管理器注册一个数据源,管理器根据数据源提供的数据厍位置、数据厍类型及ODBC驱动程序笭信息,建立起ODBC与貝体数据库的联系.这样,只要应用程序将数据源名提供给ODBC,ODBC就能建立起与相应数据库的连接。在ODBC中, ODBC API不能直接访问数据库,必须通过驱动稈序管理器与数据库交换信息。驱动程序管理器负责将应月程序对 ODBC API的调用传递给正确的驱动程序,而驱动程序在执行完相应的操作后,将结果通过驱动程序管理器返回给应用程序。在访问ODBC数据源时需要ODBC驱动程序的支持,用 Visual++6.0安装程序可以安装SQLServer、 Access、 Paradox、 dBase、 FoxPro、 Excel、 Oracle和 Microsoft Text等驱动程序.在缺省情况下,VC6.0只会安装 SQL Server、 Access、 FoxPro和d Base的驱动程序.如果用户需要安装别的驱动程序,则需要重新运行VC6.0的安装程序并选择所需的驱动程序。ODBC使用层次的方法来管理数据厍,在数据库通信结构的每一层,对可能出现依赖数据库产品自身特性的地方,ODBC都引入一个公共接口以解决潜在的不一致性,从而很好地解决了基于数据库系统应用程序的相对独立性,这也是ODBC一绎推出就获得巨大成功的重要原因之一。24 CRecordSet类和 CRecord View类CRecordset对象代表从一个数据源选择的一组记录的集合,被称作“记录集”。CRecordset对象可以以两种形式使用:动态集和快照。动态集是与其它用户的数据更新保持同步的动态数据集。快照是数据的静态视图。每一种形式都代表打开记录集吋定的组记录,但是当滚动到动态集中的个记录时,动态集将反怏后来由其它用户或由应用程序巾其它记录集对此记录所做的改变。要使用任何一种记录集,通常需要从 CRecordset派生一个应用程序指定的记录集类。记录集从一个数据源中选择记录,然后用户就可以◆在这些记录中滚动更新记录并指定一种加锁模式。过滤记录集,以获得那些从数据源中选择出来的可利用的记录排序记录集。◆参数化该记录集以定制它的具有要直到运行时才知道的信息的选项。CRecord view对象是在控件中显小数据库记录的视这种视是一种直接连接到一个〔 Recordset对象上的格式视。此视是从一个对话框模板资源创建的,并将CRecordSet对象的字段显示在对话框模板的控件中。 CRecordview对象利用对话框数据交换(DDX)和记录字段交换(RFX)机制,使格式上的控件和记录集的
- 2020-12-01下载
- 积分:1