鸿蒙云数据库开发案例 原创

wx67714bb752a02
发布于 2024-12-29 21:33
浏览
1收藏

基于AppGallery Connect云数据库实现的课程表项目。

软件要求

DevEco Studio版本:DevEco Studio NEXT Developer Beta1及以上。

HarmonyOS SDK版本:HarmonyOS NEXT Developer Beta1 SDK及以上。

项目结构:
鸿蒙云数据库开发案例-鸿蒙开发者社区

common: CourseCommon 有关课程表的常量
database: Yun 云数据库配置信息和方法
entryability: EntryAbility 应用入口
entrybackupability: EntryBackupAbility 应用数据备份和恢复的一个扩展功能。
model: CourseDatamodel 课程表单实例
pages: Index 主页面; MeetingDetail 预约界面;
utils: Colors 生成不同的颜色
view: AddDialog 添加课程弹窗组件; ClassDetailLayout 课程详细信息组件; ClassTestLayout 考试详细信息组件; ScheduleLayout 课程表组件; StatusLayout 课程表添加、修改和删除按钮组件; UpdateDialog 修改课程弹窗组件;
viewModel: Course 课程表逻辑类; YunCourseSchedules 课程表实体类;

部分代码展示:

//删除数据
  async delete(classdata:YunCourseSchedules): Promise<boolean>{
    try {
      await this.database.delete(classdata);
      console.log(this.TAG,"删除数据成功");
      promptAction.showToast({
        message: '删除成功',
        duration: 2000,
      });
      return true
    } catch (e) {
      promptAction.showToast({
        message: '删除失败',
        duration: 2000,
      });
      console.error(this.TAG,"删除数据失败","原因:",JSON.stringify(e));
      return false
    }
  }

这是一个异步函数,主要用于从云数据库中删除指定的课程数据(以YunCourseSchedules类型的对象来表示具体的课程相关信息)。在执行删除操作的过程中,它对操作结果进行了相应的提示处理,若操作成功会在控制台记录并向用户展示成功提示,若出现异常导致删除失败,则同样会在控制台记录失败原因并告知用户删除失败。

position(coursesData:YunCourseSchedules[][]){
    let x=13
    let position:YunCourseSchedules[]=[]
    let allposition:YunCourseSchedules[][]=[]
    let exactnum:number[]=[]   //精确每个课是第几节开始上的
    let num:number[]=[]
    let selectweekcourseLessons :number[][] = []  //每个星期所有课程是第几节课上课
    let courseDuration:number[]=[]//课程时长
    for (let index = 0; index < 7; index++) {
      for (let y = 0; y < coursesData[index].length; y++) {
        x-=coursesData[index][y].courseDuration
        num.push(coursesData[index][y].courseLessons)
        exactnum.push(coursesData[index][y].courseLessons)
        courseDuration.push(coursesData[index][y].courseDuration)
      }
      selectweekcourseLessons.push(num)
      console.log(TAG+JSON.stringify(CourseCommon.TABLEWEEK[index])+" 剩余空数量" + JSON.stringify(x));
      console.log(TAG+JSON.stringify(CourseCommon.TABLEWEEK[index])+" 第几节开始上:" + JSON.stringify(exactnum));
      console.log(TAG+JSON.stringify(CourseCommon.TABLEWEEK[index])+" 课程时长:" + JSON.stringify(courseDuration));
      // 精确课程位置
      let s=0
      for (let y = 0; y < exactnum.length; y++){
        if (exactnum[y]+courseDuration[y]>=exactnum[y+1]){
          exactnum[y+1]=exactnum[y]+1-s
        }
        if (exactnum[y]+courseDuration[y]<exactnum[y+1]){
          exactnum[y+1]=exactnum[y+1]-courseDuration[y]+1-s
        }
        s=courseDuration[y]+s-1 //去掉之前的课程时长
      }
      for (let z = 0; z < x+exactnum.length; z++) {
        position.push(new YunCourseSchedules())
      }
     for(let z = 0;z<exactnum.length;z++){
       position[exactnum[z]-1]=coursesData[index][z]
     }
      console.log(TAG,"position:" + JSON.stringify(position));
      allposition.push(position) //所有课程位置
      // 重置相关变量为下一天做准备
      position=[]
      exactnum=[]
      num=[]
      courseDuration=[]
      x=13
    }
    CourseDatamodel.getContext().setSelectWeekCourseLessons(selectweekcourseLessons)
    console.log( "ScheduleLayout"+JSON.stringify(selectweekcourseLessons));
    return allposition
  }

这段代码是Course里面定义的一个名为position的函数,它主要的功能是基于传入的课程数据(二维数组形式,按星期维度组织)来确定每门课程在每天中的具体位置安排,同时还会记录一些和课程相关的信息,比如每门课程在星期几是从第几节课开始上、课程时长等,并最终返回所有课程位置信息的二维数组。

效果展示:
鸿蒙云数据库开发案例-鸿蒙开发者社区鸿蒙云数据库开发案例-鸿蒙开发者社区鸿蒙云数据库开发案例-鸿蒙开发者社区鸿蒙云数据库开发案例-鸿蒙开发者社区鸿蒙云数据库开发案例-鸿蒙开发者社区

​详细介绍
感兴趣的小伙伴也可以参考原文链接

原文链接:https://blog.csdn.net/m0_65816838/article/details/144799826

感兴趣的小伙伴也可以从gitee仓库中下载源码

https://gitee.com/AaBbBbbbqazxsw/CurriculumProjectDemo

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2025-1-2 13:53:04修改
收藏 1
回复
举报
回复
    相关推荐