- 博客(34)
- 资源 (1)
- 收藏
- 关注
简易内存数据库(七)CREATE
这是CREATE 最后一个需要实现的函数了/* * 描述:4)或者100)把括号前的数字返回 * 参数:string -- 整体字符串 * 返回:返回解析后的数字 */int getLength(char * string){ //找到')'的位置 char * end=string; while( *end !=')' ) end++; //把')赋值...
2011-01-04 22:36:16
176
简易内存数据库(六)CREATE
前面CREATE完成。当中有一个细节我想你应该已经注意到了。就是当读到 float(4)或者char(100) 时,我们知道这个字符串中需要保存2个内容。一个是column类型,一个是column长度。我就用了getColumnTypeLength(buffer, &column->type, &column->length); 这个函数,希望把buffer中读...
2011-01-04 22:22:03
183
简易内存数据库(五)CREATE
接下来就是一行行读column了。 因为column有多个,所以我们需要写循环语句 while(...)循环语句的结束条件是什么呢,读到什么时候column就算读完了呢?当然是要么文件结束,要么读到‘)’啦。所以我们可以开头这样写 fscanf(fp,"%s",buffer); while (!feof(fp) && strcmp(buffer,")")...
2011-01-04 21:46:34
158
简易内存数据库(四)CREATE
因为整个程序都是围绕Table的,为了方便起见,我申明了一个全局变量Table t; 我们一个单词一个单词的读取文件内容。然后一个单词一个单词的进行比较。临时的内容保存在char buffeer[100]中。有时候需要的内容就直接保存在相应的table内存块中。 创建代码如下/* * 描述:根据给定文件,在内存里填充数据库格式 * 参数:已经打开的文件...
2011-01-03 16:11:36
136
简易内存数据库(三)CREATE
那我们来试试CREATE吧。CREATE语句可以建立一个表头,表头的信息包括表的名字,表所包含的列。我打算用这样一个结构来保存表的信息struct Table{ char name[50];//表的名字 Column * columns;//表的列 int columnCount;//列的个数};表名我用的是普通数组。也就是说,在这个系统中,表名的长度不能超过...
2011-01-03 15:13:55
160
简易内存数据库(二)保存一组数据
还有一件事情我需要重申一下:我们在保存一组数据时会使用以下三种方式:静态数组,动态数组和动态链表 1)当我们预先知道一组数据的长度,或者是最大长度的时候,可以用静态数组,在程序编译的时候就确定了保存这一组数据的内存大小。用int作为基础类型,代码如下:int array[MAX_COUNT]; 2)当我们在程序运行时才能知道一组数据的长度,或者是最大长度的时候,可以用动态数组...
2011-01-03 14:26:35
247
简易内存数据库(一)总述
项目的要求是:需要接受create,insert,select, update,delete等语句,在内存中建立一个数据库表。并对这个表进行相应的操作。 动手之前有一些提示。 不管我们处理哪一种语句,要做的都是2件事:1)解析相关的语句。2)把语句所表述的内容保存在内存中。我先解释一下这两点: 首先,你的程序是运行在内存中,程序所要处理的内容当然需要预先保存在...
2011-01-03 13:48:33
195
俄罗斯方块(十五)游戏结束
最后,我们来处理一下游戏结束。先在Panel中增加一个游戏结束标志class Panel : public CWnd{private: bool gameover; 构造函数的时候设定他为true;Panel::Panel(){ ... gameover = true;} 游戏开始时,设定他为false;void Panel::start...
2010-06-29 01:15:05
1015
俄罗斯方块(十四)让方块自己掉下来
现在为止,一直都是通过键盘向下键往下移动方块的。实际游戏当中方块自己会往下掉。这又是怎么做的呢。像这样自动的行为,从开发的角度来说,就是定时运行一段代码。那我们就是需要在一定的时间间隔运行让方块下落的代码。 一定的时间间隔是怎么做的呢?首先我们要告诉系统我需要一个定时。这个函数是SetTimer。每次游戏开始的时候,也就是点了开始按钮的时候,我告诉系统说我需要一个定时器。voi...
2010-06-29 00:58:31
1401
俄罗斯方块(十三)销行
方块沉底后,如果能整齐的垒满一整行,则这行就可以被消除。 那我们把销行的代码写在哪里呢?我想应该在每次加上障碍块的时候看看是不是满行了。void Panel::ElementDead(){ for (int i=0; i<4; i++) { body[element->body[i].getY()][element->body[i].getX()] ...
2010-06-28 23:25:43
223
俄罗斯方块(十二)方块沉底
边界处理完成后,我们运行程序,可以看到方块只能在Panel的区域内移动或旋转。不过因为没有障碍块,所以不能验证对障碍块的处理是否正确。障碍块是怎么形成的呢?-- 方块沉底以后就变成了障碍了。方块什么时候算沉底呢?--落到无法再下落的时候就沉底了。因此我们可以在moveDown中增加这么一段代码void Element::moveDown(){ Box newBody[4];...
2010-06-28 23:09:45
217
俄罗斯方块(十一)处理边界续
上次我们解决了moveDown的边界处理。这次我们可以依样画葫芦,把moveLeft,moveRight的边界处理都完成。每次边界处理也同样是3步:1)确定新的位置。2)查看新位置是否可行。3)如果可行,把新的位置替代旧的位置。void Element::moveLeft(){ Box newBody[4]; for (int i=0; i<4; i++) { ...
2010-06-28 18:55:30
303
俄罗斯方块(十)处理边界
当俄罗斯方块移动的时候,需要判断边界,来确定是不是可以移动。判断边界有两个因素要考虑:1)是不是超过Panel边线,包括最大值和最小值。2)是不是有障碍块。因为Panel边线和障碍块都是Panel的属性,也就是Panel的成员变量,所以,我们可以把确定边界的函数写成Panel的成员函数。 bool Panel::isUnavailable(int w, int h){ if...
2010-06-28 18:05:26
890
俄罗斯方块(九)Panel里的障碍方块
一开始我们做纯C++俄罗斯方块构架的时候,并没有让大家考虑Panel里面的障碍方块。现在我们来添加一下。在Panel里面增加一个成员变量,来记住一组障碍方块。 我第一个想法是用一个容器保存一组Box,比如说set<Box>,(set代表说里面的box都不能重复)。不过这样做销行的时候可能有点复杂。比较常见的做法是用一个bool的二维数组。二维数组代表整个Panel的平面...
2010-06-23 18:22:05
255
俄罗斯方块(八)接收键盘消息
windows程序最根本就是消息机制。按键盘也会得到相应的消息。我们现在需要让Panel处理相应的键盘消息,使俄罗斯方块可以左右移动,翻转或者往下。 跟处理显示消息的方式类似。打开类视图(大部分的视图或窗口可以在菜单中“视图”菜单项内找到),选中Panel类,打开属性视图,选择上方的消息按钮。找到WM_KEYDOWN消息,添加对KeyDown消息的处理函数 OnKeyDownOnK...
2010-06-23 17:34:37
249
俄罗斯方块(七)添加开始按钮
既然俄罗斯方块和底板的画图都准备好了,那我们开始一局游戏吧。 先在界面上添加一个开始按钮。打开资源文件中的。。。DIALOG,打开工具箱,选中按钮,然后在Dialog中适当的地方点击,添加按钮。在按钮选中的情况下,打开属性窗口(VS菜单中选择视图-》属性窗口 或者选中按钮,右键弹出菜单中选择属性)。修改属性ID为IDC_BTNSTART, 并且修改Caption为开始这样开始按...
2010-06-23 17:04:23
473
俄罗斯方块(六)画方块
画完了底板,再来画方块。根据我们最开始的类结构可以知道:不同俄罗斯方块形状的画的方法都是一样的,就是把body的4个小方块显示一下就可以了。所以同样的代码可以写在他们共同的基类中 在基类中增加一个print方法,参数就是那个画板CPaintDC & 或者CDC &.(CPaintDC继承自CDC)void Element::print(CDC& dc){...
2010-06-23 14:10:02
910
俄罗斯方块(五)画底板
至此为止,我们已经把自己的Panel整合入Windows的应用程序中了。接下来,我们对Panel进行底色的涂刷。前两节说过,因为Panel继承自CWnd,所以它现在可以接受windows的显示消息了。 在类视图窗口中选中Panel类,在属性窗口中点选消息按钮,可以看到所有的Windows消息。找到WM_PAINT消息,添加对应的处理函数 OnPaint。 然后就要用到MFC的G...
2010-06-23 12:26:26
286
俄罗斯方块(四)在界面上添加Panel
现在就可以把Panel放到整个应用程序中运行起来了。1)双击项目中,资源文件 。。.rc。可以看到资源文件分成Dialog, Icon,String,和Version打开Dialog中的。。。DIALOG,就可以看到一个对话框。在这个对话框上的改动直接影响运行应用程序的可视化结果。 2)选中并删除上面的提示语“TODO: 在此放置对话框控件。”打开“工具箱”(大部分窗...
2010-06-20 11:00:55
297
俄罗斯方块(三)纯C++类整合入窗体程序
接下去我们要把第一步做的纯C++的俄罗斯方块类放入windows项目中。把原有的文件包括.cpp和.h,copy到项目文件夹中。在项目中用添加现有项把这些文件包括进去。在每个.cpp最上面添加这一句:#include "stdafx.h"因为我们的panel类最后用于显示俄罗斯方块的面板,在windows上要显示的类必须是继承自CWnd的。所以我们在Panel的类定义中加上cl...
2010-06-20 09:05:40
307
俄罗斯方块(二)建立应用程序窗体
因为要实现一个基于windows操作系统的游戏,所以要创建一个windows的窗体框架,并且把我们的俄罗斯方块代码整合进去。创建一个windows框架很简单,visual studio提供了现成的wizard。用wizard生成的窗体程序直接可以运行。 visual studio 2008的菜单中。新建-》项目-》vc++-》MFC应用程序。 wizard的具体选...
2010-06-19 23:45:01
415
题0802
[quote]先撰写一个数值类型的基类MyNumeric,要求能够提供这样一些接口: 两个该类对象的减法 两个该类对象的= =比较 两个该类对象的!=比较。然后实现一个从MyNumeric派生而来的具体的复数(形如a+bi,a称为实部,b称为虚部)类MyComplex。除了实现MyNumeric规定的接口之外,MyComplex还应该实现: 一个缺省构造函数(实部和虚部初始为0...
2010-06-13 10:41:50
103
面向对象C++考点总结
面向对象C++说到底也就是两个主要内容,一个是面向对象,一个是STL。[b]一)面向对象:封装,继承和多态[/b]封装就是让你自己设计类。包括里面的private, public,构造函数,析构函数等都要注意。继承主要就是和虚函数配合着实现重写。多态是指一种动作有多种行为,也就是对相同函数名的调用会指向不同函数体。多态具体分成重载和重写。其中重写前面已经说过,而重载中难的是运算...
2010-06-02 22:20:35
155
原创 题0902
[quote]现有若干个集合的数据,每个数据集合可以自选一个指标参加排序。这些指标包含如下四种:Min,取集合中元素的最小值Max,取集合中元素的最大值Mean,取集合中元素的平均值,平均值的计算公式为:(V1+V2+…+Vn) / nMedian,取集合中元素的中值,中值的计算公式为:(Vmin+Vmax) / 2读入数据后,输出时请根据各个集合选择的指标对这些集合进行降序排...
2010-06-02 18:08:28
174
题0901
[quote]写一个能自动将地球上主流的日期格式转换成三进制形式的C++程序你的程序应支持如下的日期格式:dd-mm-yydd-Mon-yydd-mm-yyyydd-Mon-yyyy除此以外的日期格式可被认为格式错误而不予转换。合法的月份的三位缩写为:Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov和Dec。程序...
2010-06-02 17:50:57
128
题0803
[quote]不利用标准库中的泛型算法,撰写两个泛型模板函数my_union和my_intersection,以实现两个对象集合的求并和求交操作。要求可以支持任意数据类型,只要该数据类型支持==比较操作。要求能支持任意数据结构,即两个对象集合可以是异构的。[/quote]基础知识:1)了解迭代器任意集合通用2)inserter迭代器...
2010-06-02 17:35:16
119
题0801
[quote]读入一系列两元组数据,生成一个排序的五元组,并将排序结果按照姓名的降序生成到文件。文件举例:Input files: In_1.txtOutput files: [Your New Student No.]_1_out.txt[/quote]基础知识:1)读取文件[code="C++"]ifstream inputF...
2010-06-02 16:18:42
132
From C To C++课程设计
[b]1) 初步了解编程语言的发展的过程。面向对象的意义,C++的应用。[/b][b]2) 熟悉IDE.[/b] a) 解决方案和项目 b) 程序基本结构(函数,参数,返回值)[color=orange]练习:完成hello world[/color][b]3) 第一个CPP程序。[/b] a) Include( ,“”) b) 命名空间 c) 熟...
2010-06-02 16:08:30
123
JDBC tutorial from SUN(3)
Lesson: JDBC Basics In this lesson you will learn the basics of the JDBC™ API. * We start by giving you set up instructions in Getting Started. This lesson sets up a basic developmen...
2008-05-12 22:08:01
176
JDBC tutorial from SUN(二)
A Relational Database OverviewA database is a means of storing information in such a way that information can be retrieved from it. In simplest terms, a relational database is one that presents in...
2008-05-08 23:44:37
118
JDBC tutorial from SUN(一)
[url=http://72.5.124.55/docs/books/tutorial/jdbc/TOC.html]JDBC(TM) Database Access: Table of Contents[/url]1.JDBC IntroductionThe JDBC API is a Java API that can access any kind of tabular dat...
2008-05-08 23:00:08
127
视频基础教程之——How To Break Up The Right Way
[flash=400,345]http://www.videojug.com/film/player?id=849e01a6-272b-7f97-e7e0-ff0008c8e919[/flash]How To Break Up The Right Way如何正确的分手Hello,welcome to VideoJug. Just like the some sads, brea...
2008-05-08 11:52:23
126
视频基础教程之——How To Kiss Someone Passionately
[flash=400,345]http://www.videojug.com/film/player?id=24888a29-4d82-d0c2-e5df-ff0008c8ac51[/flash]How To Kiss Someone Passionately如何热情的接吻Hello welcome to the VideoJug. We are going to show y...
2008-05-07 21:22:33
364
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人