鸿蒙云数据库开发案例 原创
基于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仓库中下载源码