App Inventor

博客记录了项目的主要改动,包括选座位方式、学习时间计算、数据库字段添加和座位状态刷新等。还给出了源代码,如 SQL 文件和数据接口。同时指出存在的问题,如界面传 userID 未测试、页面跳转刷新不合理、结束学习和取消预约的界面处理需优化等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、主要改动

  1. 将选座位再单机一次才能重选改成了直接重选,因为我觉得就本项目而言,这样的实现对用户会更友好一点。那个原本的代码块我觉得还是挺有想法的,通过取余来实现选换座位,很厉害。但这么做存在一个问题,你们其余好多地方也是这么做的,就是定义了非常多的全局变量,这种做法不是很推荐,因为全局变量会伴随着应用的生命周期一直存在,会消耗许多系统内存,所以如果能用局部变量的地方就用局部变量吧。另外,多用过程少用复制粘贴。
  2. 将学习时间我改成了按分钟算的,每隔一分钟会变化一次。是通过模块内置的方法实现的。其实那个预约时间的倒计时也可以用模块内置的方法实现,不用自己再去写个过程的。因为大多数情况下,别人已经帮我们实现好的方法会比我们自己写的要好。
  3. 数据库我又改了,在reservation表中增加了一个total_time字段,方便你们其他页面统计总共学习的时间。
  4. 座位现在是可以实时刷新状态的,每当有座位被选中或释放都会立即反映在界面上,这是我按照上次与技术总监交流时所理解的需求,不知道是否是这样。(当然,我还是不太推荐这种实时显示变化的,如果作为一个作业的话这样做未尝不可,实际应用中很少这样做的)

二、源代码

  1. SQL文件
/*
Navicat MySQL Data Transfer

Source Server         : Lee
Source Server Version : 50505
Source Host           : localhost:3306
Source Database       : test

Target Server Type    : MYSQL
Target Server Version : 50505
File Encoding         : 65001

Date: 2019-05-28 13:28:22
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for reservation
-- ----------------------------
DROP TABLE IF EXISTS `reservation`;
CREATE TABLE `reservation` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `seat_id` int(11) DEFAULT NULL,
  `user_id` int(11) DEFAULT NULL,
  `date` date DEFAULT NULL,
  `start_time` time DEFAULT NULL,
  `finish_time` time DEFAULT NULL,
  `total_time` char(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;


-- ----------------------------
-- Table structure for seats
-- ----------------------------
DROP TABLE IF EXISTS `seats`;
CREATE TABLE `seats` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `status` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '1已预约 0未预约',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;


-- ----------------------------
-- Table structure for stu
-- ----------------------------
DROP TABLE IF EXISTS `stu`;
CREATE TABLE `stu` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `password` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

 

  2.数据接口

1.http://localhost:1880/queryseats

msg.topic = "select * from seats";
return msg;

2.http://localhost:1880/updateseat

var id = msg.payload.id;
msg.topic = "update seats set status=1 where id = " + id;
return msg;

3.http://localhost:1880/undoseat

var id = msg.payload.id;
msg.topic = "update seats set status=0 where id = " + id;
return msg;

4.http://localhost:1880/addreservation

var seat_id = msg.payload.seat_id;
var user_id = msg.payload.user_id;
var start_time = msg.payload.start_time;
var date = msg.payload.date;
msg.topic = "insert into reservation(seat_id,user_id,start_time,date) values(" + seat_id +","+ user_id + "," + "'" + start_time + "'" + "," + "'" + date + "'" + ")";
return msg;

5.http://localhost:1880/finish

var id = msg.payload.id;
var finish_time = msg.payload.finish_time;
var total_time = msg.payload.total_time;
msg.topic = "update  reservation set finish_time = "  +  "'" + finish_time + "'" + ", total_time = " + total_time  + " where id = " + id ;
return msg;

 

三、还存在的问题

  1. 界面间传userID我还没有测试,在模块中也没有改,直接写死的,你们改一下。

    2.每次页面跳准都会重新刷新页面,这就导致一个问题:假如我已经选好座位开始学习了,如果这时候跳转到另一个页面,在返回到选座位的页面,就会重新开始选座位的流程,这显示是不合理的。所以,要想一个办法,保证只在需要的时候重新加载页面,而不是每次跳到该页面都加载一遍。应该有解决办法。

    3.用户单机结束学习之后界面的显示或跳转应该是怎么样的应该需要设计下,目前就是整个页面的按钮都不可用了,这我觉得也是有点不合理。

    4.用户点击取消预约之后回跳到一个过渡页,我想能不能直接重载本页面....当然这个问题很次要......你们可以考虑下。

目前想到写的只有这么多了.....

转载于:https://www.cnblogs.com/ustc-anmin/p/10936758.html

转发:http://blog.sina.com.cn/s/blog_62218b99010ynin.html 今天下午roadlabs完成了App Inventor2019版的汉化任务,同步完成的还有AI伴侣(2.55版)的汉化,现已正式开始在线测试。 AppInventor2019汉化测试版上线 该版本照之前的2018版有了较大变化,其中最值得称道的是,在测试环节,连接手机AI伴侣时,不再要求手机与开发电脑在同一个网段,这对于课堂教学来说,是一个极好的消息。 在新版本的设计视图中,增加了对组件和代码块的定制功能,即,开发者可以选择显示部分组件和代码块,隐藏那些不必要的组件及代码块。对于课堂教学而言,这一功能有助于提高学生的注意力,进而改善课堂教学的效果。另外,在设计视图的组件面板上方,增加了组件搜索功能。 在新的版本中,无论是设计视图,还是编程视图,均支持触屏模式,即,用户可以在手机或平板电脑上开发App Inventor应用。 在编程视图中,最显著的变化是增加了类代码(任意组件)的事件块,这样可以用一个事件处理程序,完成对同类组件事件的批量处理,大大提高了编程效率。还记得在“水果配对”或“向日葵”应用中,分别需要编写16个及9个按钮点击事件处理程序,复制粘贴代码的过程令人无可奈何! 另外,画布组件也有所改进,添加了画弧和画多边形功能。具体使用方法,会在晚些时候发布简单的案例。 以下是全部更新项,供开发者参考。 (1)不可挽回的破坏性操作(如,删除)的确认按钮的背景为红色,字体颜色为白色,以便引起用户重视。 (2)将“云数据库”(CloudDB)组件从”试验组件”正式迁移到“数据存储”中。 (3)如前所述,增加了“组件与块”的选择功能,用户可以针对不同的项目,在设计视图的组件面板中显示所需的组件,在编程视图中显示所需的代码块。这项改进是针对课堂教学环节的,避免多余的组件和块分散学生的注意力。设置Screen1的“组件与块”属性,可以修改显示内容,并将修改结果保存为文件,以备今后使用。 (4)为语音识别器组件添加了“停止播放”方法以及“使用旧版”属性。“使用旧版”属性默认为true,需要在设计视图中将其设置为false,“停止播放”方法才能生效。 (5)在设计视图中,为模拟手机屏幕的方形区域添加了手机的外观。 (6)如前所述,在设计视图中,为组件面板添加了组件搜索功能。 (7)新增了“开关”组件。 (8)为对话框组件添加了“打开密码输入框”对话框及“取消选择”、“取消输入”事件。 (9)如前所述,为画布组件添加了“画弧”、“画多边形”功能。 (10)为计时器组件添加了“生成日期”、“生成时间”及“生成时刻”方法。 (11)为视频播放器组件添加了“停止”方法。 (12)为列表添加了“列表转字串”及“反向排序”块。 (13)如前所述,为类组件添加了类事件块。 (14)在编程视图中,为提醒、警告信息提供了“显示/隐藏”按钮。 (15)在声明全局变量时,可以直接用组件对象或组件属性值为变量赋值。 (16)加大了编程视图中控制部件的对比度。 (17)为Screen1添加了“尺寸”属性,当选中“可变”时,可以在设计视图中选择设备的类型(手机、平版、显示器)。 (18)在组件块(事件、方法、属性读取、属性设置)的右键菜单里,添加了“转成类代码”/“转成组件代码”功能,可以将特定组件块转为对应的组件类块,反之亦然。 (19)在编程视图中,将“清空背包”功能转移到背包右键菜单中(原来在屏幕右键菜单中)。 (20)在编程视图的屏幕右键菜单中添加了“显示/隐藏注释”、“禁用/启用全部代码”选项。 (21)在数学屉中添加了位运算符(与、或、异或)。 (22)为web浏览框(webViewer)组件添加了“交换字串改变”事件。 (23)如前所述,为循环语句添加了“终止循环(break)”块。 (24)可以单独删除背包中的一组代码块。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值