遗传算法与工程优化_玄光男_程润伟
本书是遗传算法的一本经典书籍。玄光男和程润伟合著。目汞3.7距离方法…………………………………":100371距离方法的一般思想…703.7.2计算距离度量…444…*…1023.7.3距离方法的应用噜早嗶忄唱嗆甲ψ『噜早鲁鲁旱P會P噜鲁鲁唱与·■鲁d鲁D咱·中自冒■啁■■曾■■P■P■曹1043.8妥协方法噌■■■■冒■冒■冒暑■■鲁冒■■■■■冒■■冒■■日■■■■■■■■和↓■最聊谭愚■和西晶dd晶动3.9目标规划方法….…10第4章模优化问题…甲■号十十↓4山口■■■■■■■■■■■■画■画n10941引言早昏!昏4昏山十山山·■留詈■·口音■“甲◆44P咱■自c■1094.2模糊线性规划■■■『■冒口■…:…1094.2.1模榭线性规划模型…s…1104.2.2遗传算法方法……………,………:,:11442.3交互式方法w"…!"""s""!"s,L1642.4数值例子1184.3模糊非线性规划…昌■晶■甲++4+白■■■■口■『十自l■?■『甲■甲矿1204,3.1非线性规划模型…………24.3.2用于求解FO/RNP1的非精确方法…………………1234.3.3交互式方法………………………154.3.4数值例子1264,4模糊非线性混合整数目标规划争■+山中早曾4曾曾會■曾■罪血聊自_略!1284,4.1模糊非线性混合整数目标规划模型■旱旱冒甲■■昏■■d1284.42遗传算法方法……1304.4.3数值例子自口·?··血中自省品日↓4晶日日甲吾晋……………:1324.5模糊多目标整数规划,"…s:1384.5.1问题描述……看pψ口13845.2增广的最小最大问题……………………………………40.5.3遗传算法方法會曾血曾鲁…………1404.5.4交互式模糊满意方法………………"s"t435.5数值例子144第5簟可靠性设计问题甲·自福4口备日看山山山口日日日4吾B·幽口甲》+目吾τ■1481引言5.2网络可靠性设计………《自■自·自哪日日b如由■5.2.1问题描述15QⅫ目录5.2.2 Dengiz, altiparmak和 Smith的方法…………………1505.2,3 Deeter和 Smith的方法…………1555.3基于树的网络可靠性和局城网设计…16l53.1双目标网络拓扑设计…11605.3.2数值例子……………………………………:1665.4多目标可靠性设计會!●早日●自◆中鲁·曾■鲁■4音目中自中昏自P目冒音自『■■■日『自D聊qp自即自自自自自自司日■■道■b电即画41695,4.1双目标可靠性设计……■唱罩鲁P‘會自■·聊·■司●D申看…ss……∴M1694.2遗传算法方法罩卩●■■·k↓■■■■b■d1695.4.3混合遗传算法方法…中斗P■白自+如『■■■b日日音日p食●自零唯●4pF714.4带有模糊目标的可靠性设计……su"…174第6章调度问题…中专自■會血督■平自谭卩血聊曲聊178引言……………………………………………1786.2作业车间调度………增+早早■盲◆自宁自命唱吾西b山如日中P中4看音甲目品司品罪山山自西由q1786.2.l基本方法…………………,………1796.2.2编码……口亡d…"s1796.2.3适应性遗传算子■中噜鲁會!中■譬1806.24以启发式方法为特点的遗传算子…………………………1836.2.5混合遗传算法1856.2.6讨论…""…1916.3群体作业调度问题r……_画唱晋■十舀昌■■口■■晋口↓冒+■■由■日早要甲号甲冒P卜■■■■如1926.3.1问题的描述和必要条件备由看.4吾日自吾啬v日日◆自自·4·口即口自咱目s1926.3.2基本运行""“"""……·…"""s"…………194表示…+……"…1!!B““s…19E6.3.4评价幽·44警↓甲甲1976.3.5遗传算子……………………………………………1976.3.6整体过程…………………………………………:1976.3.7数值例子……………晕翟■■山d●1986.4資源约柬的项目调度…4·4·■卜■如古罾日◆q『◆自血即·曾●聊司■咖自▲自■自晶昏如自白2006.41基于优先权的缩码………………1·命會省自自音自P■自自咱白自唱最‘罪42026.4.2遗传算子…………""""…s…2056.4.3评价与选择■看晋冒日●唱中↓由·■唱面斗q甲+量口2076.4.4试验结果……""…""s·2C86,5并行机器调度日录Ⅻ6.5.1支配条件2126.5.2 Memetic算法…………………………………………………2166.5.3试验结果6.6多处理器调度问题…,中即■鲁冒■2206.6.÷问题描述与假设………………………………………………………2206.6.2求解MSP的遗传算法…………………206.6.3数值例子4■P日·号日·咖自P·自·日■·目4B日4卓看d画■■d中·晶qφ甲号■甲■甲昏平昏■昏如●■●223第7章高级运輸问题…………………………甲自『■■昏『◆■■如■■曲。冒中2267.1引言…………*…"…"…s…∵………………………………2267.1,1运输模型…………,………….::267.1、2运输问题的构遣………………………………….2772基于生成树的方法…唱■鲁面■b■日甲如b血bdd■中2307.2.1树的表示中唱自P■■晶■萨卓◆甲■口b■■■号P即■中?2317.2.2初始化日1日°日宁■卩_甲■■t7,2.3遗传运算“日日:◆P晋自百自甲口自P省中自a自■凸………234了,2.4评价与选择……情●早■■即■自血··■血■■++4甲辱下■2347.2.5整个算法过程……………………………………:.357.3多目标运输问题……·早P·■·日哥日日日西4晶“甲中"■·自:■即如自■烟咖日西通2367.3.1问题的描述…………………↓■日■日早中中自■·唱日■吧曾·1t鲁辛冒…*2367.3,2多目标运输问题的基于生成树的遗传算法…2377,3.3数例239.4固定费用运输问题Ba2427.4.1数学模型2427.4.2fTP间题的难点…………2437,4.3fTP的求解方法d■p即■q■■看■■國■■■b晶b‘山bb早昏卜斷■备■■■自即曾■鲁■2437.4.4遗传算法的实现……………………甲早■音曹中■■卓■画2447.4.5数例7.5容量限制的工厂选址问题…■ψ會P◆■曾4西■■画d晶画2467.5.1数学模型罩品品品目b4:.口·自日即日日↓·日P44日日吾··24?7.5.2针对T厂问题的基于生成树的遗传算法…hh警■音学日日日日2自a画t2487.5.3数例……2496带模糊系数的双目标运输问题2507.6.1问题的表述……………………………………,251月录7.6.2排序模糊数■■血■血·會■■■會■■噜會■■會自甲中看鲁看血中噜曹個鲁P咱PPP看看看!噜7.6.3遗传算法的实现………"2527.6.4数例……254第8章网络设计与路径…………………………………2583.1引言2588.2最短路径问题……………………2588,2.1问题描述…………………t………"2598.2,2遗传算法的方法…………………………………………"……26082.3数例s…2658.3有适应能力的网络路由……………………………………………"2668.3.1基于遗传算法的有适应能力的路由2678.3.2染色体表示咖■■■■2678.3,3染色体评价■章·;咖咖…2688.3.4遗传算子…■■譬■号■■■tbdd·t血d2688.3.5数例聊●自·』壘■■着■wrrs;“"…2724集中式网络设计…ψq■4血b血4■■■◆■·■■■自■自■自■自■■■_■■晶■▲甲4}+■…2758.4.1问题的描述…………*……………………2758.4.2遗传算法……,""" ++I++TB+Br.…;s"……!2768.4.3数例▲…2778.5计算机网络扩展…■■■■↓4十山4p■■T■■『··q章自自■曾■■■自聊……………2788.5.1问题描述2782 Kumar, Pathak和(ptn的方法8.5.3数例…■■■■■啬■ψ■ψ罩·自●↓↓壘■■■■■晶卩晶4b4φdsms■a■↓■+個山t■曾■■音多阶段工序汁划2828.6.l问题的描述曾■■日『·■早早譬P即■4■■■■4■山■·b828.6.2遗传算法··号P··D■昏■■■日自■身罩·』自自·日4B目■B■晶bp4●4d2838.6.3数例甲會■昏■口■饣中十2848.7网络上的MG/s队列设酱定位會ψ會即自■■■画■■db凸面■白■■甲↓4山2858:7.1问题的描述…………………;………………………∵…………2868.7.2进化计算方法………………………………………893.7,3数例…………………"…"r"………291第9章制造元设计………中山中■4晋甲曾T吾4卩■;■Td+4■■■冒t曾■■■■留■2949.1引言……………;……………………………………2949.2制造元设计■會◆■鲁■智咱自■■■中鲁鲁■曾聊■■t卩·■■4聊■聊■咱自■■电L■■自聊■……+,…2959.3传统的制造元设计方法■号◆444■自曲■2969.3.1相似系数方法…………………………………………299.3.2基于数组的方法………电··1日罪■■山■■■中罩●4卓■中自p■昏■2979.33数学规划方法……………中即··日··■·■·日■·中号唱■号■■‘■■日卜p↓●卓■■2989.34图与网络方法………………………………………2989.4退传算法方法…s"………,"·299.4.1遗传子表示和遗传算子…↓看b昏↓昏■■"甲●曾2999.4.2 Joines基丁次序的方法…………9.4.3Mn和Kimn的方法b■■■·号卩·■ψ自西■中■■■■Jbb●4●049.4.4 Joines的整数规划方法………9,4,5其他方法…………1·卩『『『P■■d卜一r■『■甲『卓■■『■■■■旷*r』…3159.5可选址工计划的制造元设计……………………….39.5,1可选操作和机器冗余的结合………………………………13179.5.2可选路径的绪合■■4·西■b■■■甲nd4●■是3209.5.3Mon,Gen和Kim的对于独立单元的方法3259.6独立单元的设计…………,3309.6.1机器类型数最小化的族群构造3309.6.2族群数的确定……………aaa·中日▲b·白。当3349.6.3极小化机器数…日·P·■■■■罪ψ■聊咖■↓■卜■即↓■3379,6.4其他设想……1■甲甲甲甲昏■早■■国山■4■■↓■4■晶晶■■b■画血曲338参考文………………………………339素引………………………381第1章遗传算法的基础1.1引言自1960年以来人们对于模拟生物以及由此开发的针对复杂优化问题的有效算法产生了浓厚兴趣。当前在该领域中常常引用的术语就是进化计算( evolutionarycomputation)它包含以下一些主要算法:传算法( genetic algorithMs)由Hlln开发303),进化策略< evolution stra: Clcs)(由 Rechenberg)和 Schwefel开发),进化规划 evolutionary programming)(由 Fogel等人开发0)和遺传程序设计( geneticprogramming)(由K0za开发)。当然还存在若T将上述算法的各种特点加以结合而形成的混合算法。当前进化计算领域的最新发展水平在Back和 Schwefel3,Michalewi21以及Foge等人的综述里有很好的介绍,作为强有力且应用广泛的随机搜索和优化方法,遗传算法可能是当今影响最广泛的进化计算方法之一。在过去的几年中,遗传算法界将更多的注意力放在工业上程领域的优化问题上,并由此产生了一批新的研究和应用11:有关遗传算法的参考书目请参阅 Alander的著述1般认为遗传算法有5个基本组成部分(这是由 Mictialewica归纳的41.问题的解的遗传表示2.创建解的初始种群的方法3.根据个休适应值对其进行优劣判定的评价函数4:用来改变复斜过程中产生的子个体遗传组成的遗传算子5.遗传算法的参数值遗传算法维持由一群个体组成的种群Pt(t代表遗传代数)。每一个体均代表问题的一个潜在的解。每一个体都被评价优劣并得到其适应值。某些个体要经历称作遗传操作的随机变换由此生产新的个体。主要有两种变换方法:变异( mutation)的方法是将个个体改变从而获得新的个体;杂交( crossover)的是方法将两个个体的有关部分组合起来形成新的个体。新产生的个体(称作后代( offspring!C(t))继续被评价优劣。从父代种群和子代种群中选择比较优秀的个体就形成了新的种群。在若干代以后,算法收敛到个最优个体该个体很有可能代表着问题的最优或次优解。遗传算法的一般结构可以摘述如下:第1章遗传法約基础遄传算法过程begil始化P(t评价Pwhile(终止条件不满足)dbe重组P(以产生Ct评价C(从P(t)和C()中选择P(t-1)endend关于搜索策路存在两种重要方案:深度搜索最优解利广度搜索解空间m,遗传算法提供了一种在复杂解空间上进行有向随机搜家的方法。遗传算子原则上进行的是盲搜索;选择算亍嫏勻可能将遗传搜索的方向引早到解空间的理想区域中。针对特定现实世界屮问题开发的遗传算法需注意这样一条普遍原则,即要在对解空间进行深度搜索和度搜索中继持很好的平衡。为实现这一原则,必须仔细考虑遗传算法的所有组成部分另外可能还需要结合附加的启发式方法来增强其性能1.1.1编码问题如何将问题的解编码成为染色体是逮传算法使用屮的关键问题。该问题已经从多方面进行过饼究,比奶当个体需要解码成为解时从基因型空间到表现型空间的映射性质,以及个体被遗传算子操作时的变形特性等。编码的分类在 Hofland的℃作中,编码采用了二进制字符串(lbinary strings)的形巴经知道,由于 Hamming悬崖的存在,二进制编码对于函数优化问题存在重缺陷。 Hamming悬崖指的是表现型空间中距离很小的个体对可能有很大的 Hamming距离+42。举例来说,个体对01111000000于表现型空间中的相邻点最小 Euclidean距离点》但它们却在基因型空间其有最大的丑 aImiNg臣离。为了翻越且 ammIng悬崖’个体的所有苞需要同时进行改变。由杂交和变异实现翻越Ia悬崖的可能性非常小。在这种情况下,二进制编码无法维持表现型空间中点的位置。对于丁业工程领域里的许多问题而言,几乎不可能用二进制编码来表示它们的解在过去的1年里已经针对特定的问题提出了各种编码方法,其目的都是为了能够更有效地实现遗传算法。根据采用何种符号作为某因的等位基因,编码方式可以分类如下◆二进制編码( binary encoding)实数编码(rea!- number encoding整数或字母排列编码般数据结构编码实数编码对于函数优化问题最为有效c关于实数编妈在函数优化和约荣优化领城比二进制编码和Gray编码更有效的说法,经得到了广泛的验证191041由于实数编码基因型空闯中的柘扑结构与其表现型空间中的拓扑结构一致,因此徒容易从传统优化方法中借鉴好的技巧来形成有效的遗传算孑。整数和字母排列編码( literalpermutation encoding)对于组合优化问题最为有效。由于组合优化间题最关键的是要寻找满足约束项目的最佳排列或组合,因此字母排列编码对」这类问题是最有效的方法对于更为复杂的现实问题,用合适的数据结构来表示基因的等位基因,可以有效抓住问题的本质。在这种情扰下,基因可能是n维数组或更为复杂的数据结构根据編码的结构,编码方法还可以分为如下两类:(1)一维築码( one-dimensionalencoding):(2)多维编码( multidimen onal encoding)。大多数实践中采用了一维端码。然而许多实际间题需要多结构的解:用多维编码方法米衣不这些解就很自然。比如,vinous和 Michalewic2对运输间题采用了分配矩阵进行编码。( hoon和 Pari对VSI电路效置问题采用了二维编码(。 Anderson, Jones和Ryan采用了二维网格型编码。Moon科Kim对于图问题采用二维編码13Ono, Yamamura和 Kobayashi对于作业车间调度向题采用了作业赈序矩阵编码、Bti和Mon给出∮关子多维编码和杂交的一般性讨论。他们在文中指出将多维问题的解进行一维编码必然会损失多维结构中相当数量的信息根据编码的内容,编码方法还可看作如下两类:(1)仅包含解,(2)包含解和参数在遗传算法实践中,第一种方法被广泛用来针对给定的问题开发合适的编码。第一种方法在 Rechenberg和 Schwefel提出的进化策略中被采用11]个个体包含厨个部分:首先是给定问题的解其次是策略参数,包括变异中正态分布的方差和协方差。将策略参数并入个体表示的目的,是通过将进化算子应用于这些参数来促进它们的进化自透应。因此搜索就在解空间和进化参数上问时进行。通过这种方法,可以在任意环境下获得变异参数的合理调整和多样性。不可行( infeasi bility)与非法性( (illegality)遗传算法交替地在编码空间和解空间中进行操作。换句话说,也就是交莕地在基因型空间和表现型空间中进行操作。遗传算子作用于基因型空间中,而评价和选择则作用于表现型空间中。然选择连接了染色休和解码产生的解的性能。从基因型空间到表现型空间的映射对于遗传算子的性能有很大影响。其中…个与映射相关的重要问惠就是某些个体对应着给定问题的不可行解。对子约束优化间题和组合优化问题而言,这个问题可能很严重
- 2020-12-08下载
- 积分: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