自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (1)
  • 收藏
  • 关注

简易内存数据库(七)CREATE

这是CREATE 最后一个需要实现的函数了/* * 描述:4)或者100)把括号前的数字返回 * 参数:string -- 整体字符串 * 返回:返回解析后的数字 */int getLength(char * string){ //找到')'的位置 char * end=string; while( *end !=')' ) end++; //把')赋值...

2011-01-04 22:36:16 141

简易内存数据库(六)CREATE

前面CREATE完成。当中有一个细节我想你应该已经注意到了。就是当读到 float(4)或者char(100) 时,我们知道这个字符串中需要保存2个内容。一个是column类型,一个是column长度。我就用了getColumnTypeLength(buffer, &column->type, &column->length); 这个函数,希望把buffer中读...

2011-01-04 22:22:03 153

简易内存数据库(五)CREATE

接下来就是一行行读column了。 因为column有多个,所以我们需要写循环语句 while(...)循环语句的结束条件是什么呢,读到什么时候column就算读完了呢?当然是要么文件结束,要么读到‘)’啦。所以我们可以开头这样写 fscanf(fp,"%s",buffer); while (!feof(fp) && strcmp(buffer,")")...

2011-01-04 21:46:34 130

简易内存数据库(四)CREATE

因为整个程序都是围绕Table的,为了方便起见,我申明了一个全局变量Table t;  我们一个单词一个单词的读取文件内容。然后一个单词一个单词的进行比较。临时的内容保存在char buffeer[100]中。有时候需要的内容就直接保存在相应的table内存块中。 创建代码如下/* * 描述:根据给定文件,在内存里填充数据库格式 * 参数:已经打开的文件...

2011-01-03 16:11:36 106

简易内存数据库(三)CREATE

那我们来试试CREATE吧。CREATE语句可以建立一个表头,表头的信息包括表的名字,表所包含的列。我打算用这样一个结构来保存表的信息struct Table{ char name[50];//表的名字 Column * columns;//表的列 int columnCount;//列的个数};表名我用的是普通数组。也就是说,在这个系统中,表名的长度不能超过...

2011-01-03 15:13:55 126

简易内存数据库(二)保存一组数据

还有一件事情我需要重申一下:我们在保存一组数据时会使用以下三种方式:静态数组,动态数组和动态链表 1)当我们预先知道一组数据的长度,或者是最大长度的时候,可以用静态数组,在程序编译的时候就确定了保存这一组数据的内存大小。用int作为基础类型,代码如下:int array[MAX_COUNT];  2)当我们在程序运行时才能知道一组数据的长度,或者是最大长度的时候,可以用动态数组...

2011-01-03 14:26:35 217

简易内存数据库(一)总述

项目的要求是:需要接受create,insert,select, update,delete等语句,在内存中建立一个数据库表。并对这个表进行相应的操作。 动手之前有一些提示。 不管我们处理哪一种语句,要做的都是2件事:1)解析相关的语句。2)把语句所表述的内容保存在内存中。我先解释一下这两点: 首先,你的程序是运行在内存中,程序所要处理的内容当然需要预先保存在...

2011-01-03 13:48:33 167

俄罗斯方块(十五)游戏结束

最后,我们来处理一下游戏结束。先在Panel中增加一个游戏结束标志class Panel : public CWnd{private: bool gameover; 构造函数的时候设定他为true;Panel::Panel(){ ... gameover = true;} 游戏开始时,设定他为false;void Panel::start...

2010-06-29 01:15:05 930

俄罗斯方块(十四)让方块自己掉下来

现在为止,一直都是通过键盘向下键往下移动方块的。实际游戏当中方块自己会往下掉。这又是怎么做的呢。像这样自动的行为,从开发的角度来说,就是定时运行一段代码。那我们就是需要在一定的时间间隔运行让方块下落的代码。 一定的时间间隔是怎么做的呢?首先我们要告诉系统我需要一个定时。这个函数是SetTimer。每次游戏开始的时候,也就是点了开始按钮的时候,我告诉系统说我需要一个定时器。voi...

2010-06-29 00:58:31 1214

俄罗斯方块(十三)销行

方块沉底后,如果能整齐的垒满一整行,则这行就可以被消除。 那我们把销行的代码写在哪里呢?我想应该在每次加上障碍块的时候看看是不是满行了。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 180

俄罗斯方块(十二)方块沉底

边界处理完成后,我们运行程序,可以看到方块只能在Panel的区域内移动或旋转。不过因为没有障碍块,所以不能验证对障碍块的处理是否正确。障碍块是怎么形成的呢?-- 方块沉底以后就变成了障碍了。方块什么时候算沉底呢?--落到无法再下落的时候就沉底了。因此我们可以在moveDown中增加这么一段代码void Element::moveDown(){ Box newBody[4];...

2010-06-28 23:09:45 185

俄罗斯方块(十一)处理边界续

上次我们解决了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 274

俄罗斯方块(十)处理边界

当俄罗斯方块移动的时候,需要判断边界,来确定是不是可以移动。判断边界有两个因素要考虑:1)是不是超过Panel边线,包括最大值和最小值。2)是不是有障碍块。因为Panel边线和障碍块都是Panel的属性,也就是Panel的成员变量,所以,我们可以把确定边界的函数写成Panel的成员函数。 bool Panel::isUnavailable(int w, int h){ if...

2010-06-28 18:05:26 812

俄罗斯方块(九)Panel里的障碍方块

一开始我们做纯C++俄罗斯方块构架的时候,并没有让大家考虑Panel里面的障碍方块。现在我们来添加一下。在Panel里面增加一个成员变量,来记住一组障碍方块。 我第一个想法是用一个容器保存一组Box,比如说set<Box>,(set代表说里面的box都不能重复)。不过这样做销行的时候可能有点复杂。比较常见的做法是用一个bool的二维数组。二维数组代表整个Panel的平面...

2010-06-23 18:22:05 225

俄罗斯方块(八)接收键盘消息

windows程序最根本就是消息机制。按键盘也会得到相应的消息。我们现在需要让Panel处理相应的键盘消息,使俄罗斯方块可以左右移动,翻转或者往下。 跟处理显示消息的方式类似。打开类视图(大部分的视图或窗口可以在菜单中“视图”菜单项内找到),选中Panel类,打开属性视图,选择上方的消息按钮。找到WM_KEYDOWN消息,添加对KeyDown消息的处理函数 OnKeyDownOnK...

2010-06-23 17:34:37 215

俄罗斯方块(七)添加开始按钮

既然俄罗斯方块和底板的画图都准备好了,那我们开始一局游戏吧。 先在界面上添加一个开始按钮。打开资源文件中的。。。DIALOG,打开工具箱,选中按钮,然后在Dialog中适当的地方点击,添加按钮。在按钮选中的情况下,打开属性窗口(VS菜单中选择视图-》属性窗口 或者选中按钮,右键弹出菜单中选择属性)。修改属性ID为IDC_BTNSTART, 并且修改Caption为开始这样开始按...

2010-06-23 17:04:23 427

俄罗斯方块(六)画方块

画完了底板,再来画方块。根据我们最开始的类结构可以知道:不同俄罗斯方块形状的画的方法都是一样的,就是把body的4个小方块显示一下就可以了。所以同样的代码可以写在他们共同的基类中 在基类中增加一个print方法,参数就是那个画板CPaintDC & 或者CDC &.(CPaintDC继承自CDC)void Element::print(CDC& dc){...

2010-06-23 14:10:02 860

俄罗斯方块(五)画底板

至此为止,我们已经把自己的Panel整合入Windows的应用程序中了。接下来,我们对Panel进行底色的涂刷。前两节说过,因为Panel继承自CWnd,所以它现在可以接受windows的显示消息了。 在类视图窗口中选中Panel类,在属性窗口中点选消息按钮,可以看到所有的Windows消息。找到WM_PAINT消息,添加对应的处理函数 OnPaint。 然后就要用到MFC的G...

2010-06-23 12:26:26 248

俄罗斯方块(四)在界面上添加Panel

现在就可以把Panel放到整个应用程序中运行起来了。1)双击项目中,资源文件 。。.rc。可以看到资源文件分成Dialog, Icon,String,和Version打开Dialog中的。。。DIALOG,就可以看到一个对话框。在这个对话框上的改动直接影响运行应用程序的可视化结果。  2)选中并删除上面的提示语“TODO: 在此放置对话框控件。”打开“工具箱”(大部分窗...

2010-06-20 11:00:55 267

俄罗斯方块(三)纯C++类整合入窗体程序

接下去我们要把第一步做的纯C++的俄罗斯方块类放入windows项目中。把原有的文件包括.cpp和.h,copy到项目文件夹中。在项目中用添加现有项把这些文件包括进去。在每个.cpp最上面添加这一句:#include "stdafx.h"因为我们的panel类最后用于显示俄罗斯方块的面板,在windows上要显示的类必须是继承自CWnd的。所以我们在Panel的类定义中加上cl...

2010-06-20 09:05:40 278

俄罗斯方块(二)建立应用程序窗体

因为要实现一个基于windows操作系统的游戏,所以要创建一个windows的窗体框架,并且把我们的俄罗斯方块代码整合进去。创建一个windows框架很简单,visual studio提供了现成的wizard。用wizard生成的窗体程序直接可以运行。 visual studio 2008的菜单中。新建-》项目-》vc++-》MFC应用程序。  wizard的具体选...

2010-06-19 23:45:01 380

俄罗斯方块(一)纯C++方块类

我们先根据C++的继承和多态,实现一组类。如图

2010-06-13 21:39:17 788

题0802

[quote]先撰写一个数值类型的基类MyNumeric,要求能够提供这样一些接口: 两个该类对象的减法 两个该类对象的= =比较 两个该类对象的!=比较。然后实现一个从MyNumeric派生而来的具体的复数(形如a+bi,a称为实部,b称为虚部)类MyComplex。除了实现MyNumeric规定的接口之外,MyComplex还应该实现: 一个缺省构造函数(实部和虚部初始为0...

2010-06-13 10:41:50 78

面向对象C++考点总结

面向对象C++说到底也就是两个主要内容,一个是面向对象,一个是STL。[b]一)面向对象:封装,继承和多态[/b]封装就是让你自己设计类。包括里面的private, public,构造函数,析构函数等都要注意。继承主要就是和虚函数配合着实现重写。多态是指一种动作有多种行为,也就是对相同函数名的调用会指向不同函数体。多态具体分成重载和重写。其中重写前面已经说过,而重载中难的是运算...

2010-06-02 22:20:35 127

原创 题0902

[quote]现有若干个集合的数据,每个数据集合可以自选一个指标参加排序。这些指标包含如下四种:Min,取集合中元素的最小值Max,取集合中元素的最大值Mean,取集合中元素的平均值,平均值的计算公式为:(V1+V2+…+Vn) / nMedian,取集合中元素的中值,中值的计算公式为:(Vmin+Vmax) / 2读入数据后,输出时请根据各个集合选择的指标对这些集合进行降序排...

2010-06-02 18:08:28 146

题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 97

题0803

[quote]不利用标准库中的泛型算法,撰写两个泛型模板函数my_union和my_intersection,以实现两个对象集合的求并和求交操作。要求可以支持任意数据类型,只要该数据类型支持==比较操作。要求能支持任意数据结构,即两个对象集合可以是异构的。[/quote]基础知识:1)了解迭代器任意集合通用2)inserter迭代器...

2010-06-02 17:35:16 90

题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 106

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 104

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 147

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 96

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 102

视频基础教程之——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 105

视频基础教程之——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 301

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除