Easy-Receipt-Manager:高效管理收据的Android应用

需积分: 10 0 下载量 18 浏览量 更新于2024-11-12 收藏 232KB ZIP 举报
资源摘要信息:"Easy-Receipt-Manager是一个Android应用程序,旨在帮助用户有效管理和整理他们的收据。该应用是由滑铁卢大学的某位学生在2B学期的业余时间开发的。它的开发语言是Java,该语言在Android开发中广泛使用。" 在详细探讨Easy-Receipt-Manager项目之前,我们需要了解Android应用开发的基本知识,包括Android应用的基本结构、Java编程语言在Android开发中的应用,以及如何管理和组织Android项目文件。 首先,Android应用程序通常由一系列组件构成,包括Activity、Service、BroadcastReceiver和ContentProvider。Activity是用户界面的主要组成部分,每个Activity都代表着一个屏幕,用于处理用户输入和显示结果。Service则是没有用户界面的后台组件,可以执行长时间运行的操作或执行后台数据处理。BroadcastReceiver用于接收系统或应用发出的广播。ContentProvider是用于管理和共享应用数据的接口。 Java语言在Android开发中扮演着核心角色。由于Android基于Linux内核,因此它的系统服务、Dalvik虚拟机(Android 5.0之前的版本)或Android Runtime (ART)(Android 5.0及之后版本的默认运行时环境)都是用Java编写的。Android应用程序的Java代码会被编译成DEX(Dalvik Executable)文件,这是一种专门为Dalvik或ART设计的字节码。Java为Android开发者提供了一个丰富和成熟的编程环境,具有广泛的库和工具支持。 在Android项目文件组织方面,通常项目中会有一个或多个模块。在本例中,Easy-Receipt-Manager项目仅有一个模块,即Easy-Receipt-Manager-master。这个模块中会包含如下关键目录: 1. src/:包含应用程序的所有源代码。其中会进一步细分为main/java/和main/res/等子目录。java/目录下存放的是所有的Java代码文件,包括各种Activity、Service等类的实现。res/目录下则是应用程序的各种资源文件,如布局文件(layout)、字符串和图片资源等。 2. AndroidManifest.xml:这个文件是Android应用的清单文件,声明了应用的结构以及所需的权限等信息。每个Activity、Service都需要在AndroidManifest.xml中注册。 3. build.gradle:这个文件定义了项目的构建配置,包括编译器选项、依赖库等。在Android Studio中,Gradle用于自动化构建过程,帮助管理项目依赖关系和构建输出。 4. app/:如果项目使用了Gradle构建系统,那么app/目录通常作为项目的主模块,包括了所有的编译源代码和资源文件。在这个目录下会有一个build.gradle文件来定义这个模块的构建配置。 对于Easy-Receipt-Manager来说,这个应用程序主要通过Java编程语言开发,使用Android Studio作为集成开发环境。开发者可能利用了Android的Intent机制来处理不同组件之间的通信。例如,如果要处理收据,可能有一个专门的Activity用于拍照或扫描收据图片,这个Activity会与一个专门用于处理图片数据的服务或广播接收器进行交互。为了方便用户查看和管理收据,应用可能还包含了一个列表视图(ListView)或网格视图(GridView),展示收据列表,并允许用户按照日期、金额或其他属性进行排序和筛选。 Easy-Receipt-Manager的开发涉及到Android开发的多个方面,包括UI设计、数据存储、文件操作等。例如,收据数据需要存储在本地数据库或者云端,以便用户可以检索和管理。开发者可能使用了SQLite数据库或Room Persistence Library来实现数据存储,这样用户的数据即使在应用关闭后也能保持。 综上所述,Easy-Receipt-Manager项目不仅仅是学习Java在Android平台应用的一个案例,也是实践Android应用开发的全过程的一个实例。通过对这个项目的分析,开发者可以学习到如何从零开始构建一个完整的Android应用,并且掌握在实际项目中如何运用各种Android开发技术和概念。

SELECT t1.supplier_id, t1.ky_count, t1.ky_amount, IFNULL(t2.ky_refund_count,0) as ky_refund_count, IFNULL(t2.ky_refund_amount,0) as ky_refund_amount FROM ( SELECT a.supplier_id, count( DISTINCT c.order_no ) AS ky_count, SUM( IFNULL( c.record_amount, 0 )) / 100 AS ky_amount FROM settle_order a INNER JOIN settle_order_receipt b ON a.order_id = b.order_id INNER JOIN cash_withdrawal_record c ON b.third_trade_no = c.order_no WHERE a.is_del = 0 AND a.order_time >= '2023-05-28 00:00:00' AND a.order_time < '2023-05-29 00:00:00' AND a.order_type in (70,75) AND a.supplier_id IN (78,63,58,57,64,72,71,74,83,77,70,69,67,82,65,87,73,59,66,60,86,85,79,80,84,90) AND b.channel_code = 61 AND c.con_bank_account_no IN ( 247, 325 ) AND c.record_status = 1 AND c.record_time > '2023-05-01 00:00:00' GROUP BY a.supplier_id ) t1 LEFT JOIN ( SELECT a.supplier_id, count( DISTINCT b.order_no ) AS ky_refund_count, SUM( IFNULL( b.record_amount, 0 )) / 100 AS ky_refund_amount FROM settle_order_refund a INNER JOIN cash_withdrawal_record b ON a.third_refund_id = b.order_no WHERE a.is_del = 0 AND a.order_type in (70,75) AND a.apply_time >= '2023-05-28 00:00:00' AND a.apply_time < '2023-05-29 00:00:00' AND a.supplier_id IN (78,63,58,57,64,72,71,74,83,77,70,69,67,82,65,87,73,59,66,60,86,85,79,80,84,90) AND a.channel_code = 61 AND b.con_bank_account_no IN ( 247, 325 ) AND b.record_status = 5 AND b.record_time > '2023-05-01 00:00:00' GROUP BY a.supplier_id ) t2 ON t1.supplier_id = t2.supplier_id order by t1.supplier_id asc

2023-06-10 上传
2023-06-10 上传

找出sql错误SELECT * FROM ( SELECT a.id, a.CODE AS 'sourceBillCode', a.type AS 'originalOrderType', a.unit_of_origin, a.unit_of_origin_type, a.time AS 'orderOriginCreationTime', a.warehouse, a.receiving_storage_space, b.type_of_material, b.quality_control_number, b.good_products_number, b.defective_products_number, b.yield, b.quantity_of_returns, b.as_received_condition, b.quantity_of_order, b.quantity_not_received, b.quantity_of_goods_received, b.number_of_spare_parts, b.quantity_of_returns_actual, b.special_production_quantity, b.quantity_in_storage, b.receipt_quantity AS 'inqty', b.quantity_not_in_storage FROM wareh_source_order a LEFT JOIN statistics_receiving_order b ON a.id = b.order_id UNION ALL SELECT a.id, a.CODE AS 'sourceBillCode', a.type AS 'originalOrderType', a.unit_of_origin, a.source_of_delivery_note, a.time AS 'orderOriginCreationTime', a.warehouse, a.receiving_storage_space, b.type_of_material, b.quality_control_number, b.good_products_number, b.defective_products_number, b.yield, b.quantity_of_returns, b.as_received_condition, b.quantity_of_order, b.quantity_not_received, b.quantity_of_goods_received, b.number_of_spare_parts, b.quantity_of_returns_actual, b.special_production_quantity, b.quantity_in_storage, b.receipt_quantity AS 'inqty', b.quantity_not_in_storage FROM wareh_source_order a LEFT JOIN statistics_purchase_order b ON a.id = b.order_id ) tab WHERE originalOrderType IN ( 'PurchaseOrder', 'ReceiptRecord' ) AND warehouse = 'string' AND receiving_storage_space = 'string' AND date_format( orderOriginCreationTime, '%y%m%d' ) >= date_format( '2023-07-07 00:00:00.0', '%y%m%d' ) AND date_format( orderOriginCreationTime, '%y%m%d' ) <= date_format( '2023-07-07 00:00:00.0', '%y%m%d' ) AND ( EXISTS ( SELECT material_no FROM wareh_source_order_list c WHERE c.order_id = id AND ( c.material_name REGEXP 'string' OR c.material_full REGEXP 'string' OR c.material_lot REGEXP 'string' ) ) OR source_of_delivery_note REGEXP 'string' OR CONVERT ( source_bill_code USING utf8mb4 ) REGEXP 'string' )

2023-07-08 上传