用Birt 制作交叉报表

1>我们先建立一个简单的数据库模型,虽然说简单,但是为了后期扩展,尽量将表设计更加细些.
但是,在本例中,我们只用到我们所关心的表.截图如下(图一目了然我就不多说了):

<2>我们将数据库模型导出脚本,这里我们就导出为Mysql 4.0吧.(这里根据你的需要导出成你自己的数据库类型)

<3>打开eclipse创建一个工程,在这里我们就不介绍如何安装Birt插件了.在这里我们假设大家都熟悉开发工具了,所以我们直接跳到如何建立报表了.

我们建立一个报表名为:studentScorce.rptdesign

1 . 创建数据库连接,如下图 (mysql的数据库连接方式,请注意导入mysql数据库驱动):

2.创建data Set记录集,名字为:Dataset,如图:

3. 创建Data Cubes 名为:DataCubeList,截图如下:

1.


注意选中Dataset,

注意建立两个分组,即subject_Group(以科目分组)和StudentName_Group(以学生姓名分组),组下面分别对应左边的字段subjectname\studentname,summary Filelds下是achicvement,这样就基本建立成了.

2.:建立
,选中"DataCubeList" ,
完成后切换到 布局


这样就可以看到

3 .绑定数据

4. 切换到 Data Explorer


将 DataCubeList 展开,并将三个数据拖到对应的位置,如下图


就这样OK了,如果需要设置CSS样式,可以粗略的设置一下,如果想对比原始数据,可以直接将Dataset拖到布局区.

最后的效果图如下:

  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
制作FlyBird小游戏可以使用Python的Pygame模块,具体步骤如下: 1. 安装Pygame模块,可以使用pip命令安装:`pip install pygame` 2. 导入Pygame模块和其他需要的模块: ```python import pygame import sys import random ``` 3. 初始化Pygame: ```python pygame.init() ``` 4. 创建游戏窗口: ```python size = width, height = 288, 512 screen = pygame.display.set_mode(size) ``` 5. 加载游戏资源,如背景、小鸟、管道等: ```python bg_img = pygame.image.load("assets/sprites/background-day.png").convert() bird_imgs = [pygame.image.load("assets/sprites/yellowbird-upflap.png").convert_alpha(), pygame.image.load("assets/sprites/yellowbird-midflap.png").convert_alpha(), pygame.image.load("assets/sprites/yellowbird-downflap.png").convert_alpha()] pipe_img = pygame.image.load("assets/sprites/pipe-green.png").convert_alpha() ``` 6. 定义游戏中的各种对象,如小鸟、管道等: ```python class Bird(pygame.sprite.Sprite): def __init__(self, images): super().__init__() self.images = images self.image = self.images self.rect = self.image.get_rect(center=(50, 256)) self.velocity = 0 self.gravity = 0.25 def update(self): self.velocity += self.gravity self.rect.centery += self.velocity if self.rect.top < -50 or self.rect.bottom > 450: game_over() class Pipe(pygame.sprite.Sprite): def __init__(self, image, x): super().__init__() self.image = image self.rect = self.image.get_rect(midtop=(x, random.randint(-100, 100))) self.speed = -4 def update(self): self.rect.centerx += self.speed if self.rect.right < 0: self.kill() ``` 7. 定义游戏逻辑,如碰撞检测、计分等: ```python def check_collision(): if pygame.sprite.spritecollideany(bird, pipes): game_over() def update_score(): global score, high_score if pipes.sprites() and bird.rect.left > pipes.sprites().rect.left and not pipes.sprites().scored: pipes.sprites().scored = True score += 1 if score > high_score: high_score = score def draw_score(): score_surf = font.render(f"Score: {score}", True, (255, 255, 255)) score_rect = score_surf.get_rect(center=(144, 50)) screen.blit(score_surf, score_rect) high_score_surf = font.render(f"High Score: {high_score}", True, (255, 255, 255)) high_score_rect = high_score_surf.get_rect(center=(144, 100)) screen.blit(high_score_surf, high_score_rect) ``` 8. 实现游戏循环,包括事件处理、对象更新、绘制等: ```python while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() elif event.type == pygame.KEYDOWN: if event.key == pygame.K_SPACE: bird.velocity = -7 screen.blit(bg_img, (0, 0)) if not game_over_flag: if frame_count % pipe_spawn_interval == 0: Pipe(pipe_img, 288).add(pipes) frame_count += 1 pipes.update() bird.update() check_collision() update_score() draw_score() bird_index = (frame_count // 5) % 3 bird.image = bird_imgs[bird_index] pipes.draw(screen) screen.blit(bird.image, bird.rect) else: game_over_text_surface = font.render("Game Over", True, (255, 0, 0)) game_over_text_rect = game_over_text_surface.get_rect(center=(144, 256)) screen.blit(game_over_text_surface, game_over_text_rect) pygame.display.update() clock.tick(60) ``` 9. 实现游戏结束逻辑: ```python def game_over(): global game_over_flag game_over_flag = True ``` 10. 在代码最后加上如下语句,运行游戏: ```python if __name__ == "__main__": main() ``` 以上是使用Python制作FlyBird小游戏的基本步骤,你可以根据自己的需求和实际情况进行修改和扩展。如果需要更详细的代码实现可以参考网上的教程或者GitHub上的开源项目。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值