如何快速开发一款课程App?(安卓课程开发)
课程是现在学生最常用的功能之一,那么如何快速实现课程的功能呢?
首先展示项目效果:
接下来,详细说明了课程功能的实现。
echo0-@.com这个项目是基于AVM多终端框架编写的,所以我们需要找到一种方法来构造特定的数据,然后改变这些数据。这个项目的核心业务是课程数据的处理,难点在于课表的添加。
项目主要是针对大学课程设计的,课程存在很多不确定性,比如课程周数可能是连续的也可能是不连续的,上课时间可能是1-2节或者一整天,教室也可能不一样,所以课程的数据结构如下。
后端需要提供当前周,当前周 的课程数据,添加课程等界面。当然课程数据查询比较复杂,这里就不讨论了。前端主要是显示指定位置的日程信息,数据比较简单。
echo1-@.com
echo2-@.com
这个数据需要重新整理,因为球场需要放在指定的位置,离顶部的距离和它的高度必须知道。可以通过上课时间jie这个参数得到身高和top。
let data = [{
姓名和名称。;: ;大数据可视化技术与应用。;,
房间 : ;计算机房C414 ,
工作日 : ;3 ,
bg : ;2 ,
杰 : ;3-4 ;,
top : ;140像素。;,
身高和体重。;: ;140像素。;
}]
横向分为8块,每块宽12.5%,高70px,默认可显示13节课。默认情况下,课程背景有7种样式,周的左侧参数有7种样式,课程会话的顶部参数有12种样式。具体的css样式如下:
。BG-1 { backgroundecho12-@.com线性渐变(#facea8,#fe8979)}
。BG-2 { backgroundecho13-@.com线性梯度(#dfc3fe,#90c5fb)}
。BG-3 { backgroundecho14-@.com线性梯度(#9decho15-@.com线性梯度(#eeba93,#dd65c7)}
。BG-5 { backgroundecho16-@.com线性渐变(#e6f6c9,#68e1b5)}
。BG-6 { backgroundecho17-@.com线性梯度(#dfc3fe,#dd65c7)}
。BG-7 { backgroundecho18-@.com线性梯度(#c8:12.5%;}
。第2周{l:25%;}
。第3周{l:37.5%;}
。第4周{l:50%;}
。第5周{l:62.5%;}
。第6周{l:75%;}
。第0周{l:87.5%;}每门课程绝对定位宽度一致,高度和位置根据上课时间确定。代码如下:
查看class = "课程列表 "
查看v-for = "(rs,kecho26-@.com·基= "钥匙和钥匙echo27-@.com大学 课程周。;卢比工作日
BG- ;rs.bg ":styl: ;身高和身高。;;top: ;rs.top "
text class = "课程名称及名称{{rs.name}}/text
text class = "教室和教室{{rs.room}}/techo3-@.com
获取当前周的时间代码,如下所示:
this . setdate(new Date());
设置日期(日期){
设arr =[];
让week = date.getDay() - 1;
date = this.addDate(日期,周*-1);
this.curr:this . adddate(date,1))
}
this.week_data = arr
this.currentWeek()
},
addDate(日期,n) {
date . set date(date . getdate()n);
返回日期;
},
formatDate(日期){
let year = date . get full year();
let month =(date . getmonth()1);
let day = date . getdate();
让week =[ ;周日 , 星期一 , 星期二 , 星期三 , 星期四 , 星期五 , 星期六 ][date . getday()];
this.currecho32-@.com周,";datecho33-@.com月 / ;天,";activecho34-@.com假};
},
//当前周
当前周(){
let Date = new Date();
let weekday = date . getday();
if (weekday == 1) {
this.week_data[0]。活动=真
} else if (weekday == 2) {
this.week_data[1]。活动=真
} else if (weekday == 3) {
this.week_data[2]。活动=真
} else if(工作日== 4) {
this.week_data[3]。活动=真
} else if (weekday == 5) {
this.week_data[4]。活动=真
} else if (weekday == 6) {
this.week_data[5]。活动=真
} else if (weekday == 0) {
this.week_data[6]。活动=真
}
}上周和下周 对应的代码:
last() {
如果(本周1) {
本周=本周- 1
this . set date(this . add date(this . current first date,-7));
}
},
下一个(){
如果(本周20) {
本周=本周1
this . set date(this . add date(this . currecho4-@.com
这个项目主要是为大学课程设计的。因为上课的时间和地点可能是不规律的,所以需要考虑几个因素,比如周数,节日数,上课的星期和地点。为了方便用户快速添加课程,同一门课程可以支持添加多个课时。页面业务逻辑有点复杂因为只有周选和时间选,所以分为两个部分:上课-周/上课-周上课-时间/上课-时间。
该课程的主要领域如下:
name: ;大学计算机与工程。;,//课程名称
room: ;计算机房C411 ,//教室
teachere CHO 37-@ . com ;李国海 ,//老师
weekday: ;0 ,//周
weeks: ;1-9,11-20 ;,//类的数量。
Jie : ;5-9 ;,//类
bg: ;1 ,//课程颜色,系统提供7种颜色。大学的课时可能是不规律的,课时数可能不是20周。周数大致分为单双周和其他。周数的格式如下:
不定期周格式:1-9,111,13,15-201-20周格式:1,3,5,7,9,11,13,15,17,191-20周格式:2,4,6,8,10,12,14,16,18,20。
页面初始数据,默认1-24周全部选中。
(1)单周选择(1),双周选择(2),全选(0),具体业务处理源代码如下:
选择(n) {
(让我在这几周内){
这.周[我]。开=假
}
if (n == 1) {
if (this.choose == 1) {
this.choose = 3
}否则{
this.choose = 1
for(设I = 0;I this . weeks . length;i ) {
如果(this.weeks[i].第% 2!= 0) {
这.周[我]。开=真
}
}
}
} else if (n == 2) {
if (this.choose == 2) {
this.choose = 3
}否则{
this.choose = 2
for(设I = 0;I this . weeks . length;i ) {
如果(this.weeks[i].第% 2周== 0) {
这.周[我]。开=真
}
}
}
} else if (n == 0) {
if (this.choose == 0) {
this.choose = 3
}否则{
this.choosecho42-@.com结果.加入( , ) });//格式为1-9,11,13,15-20。
} class-time/class-timecho43-@.com[
{ name : ;星期一 ,onecho45-@.com假},
{姓名46-@ . com ;星期二 ,onecho47-@.com假},
{ name : ;星期三 ,onecho49-@.com假},
{ name : ;星期四 ,onecho51-@.com假},
{ name : ;星期五 ,onecho53-@.com假},
{ name : ;星期六 ,onecho55-@.com假},
{ name : ;周日 ,onecho57-@.com假}
],
tim:base . class _ timecho59-@.com[],
maskecho60-@.com假的,
ji: ; ,
w:0
class_time() {
let data = [
{ 杰 : ;第一节。;;tim:;08:30-09:15 ;},
{ 杰 : ;第二节 ;tim:;09:25-10:10 ;},
{ 杰 : ;第三节。;;tim:;10:25-11:10 ;},
{ 杰 : ;第四节。;;tim:;11:20-12:05 ;},
( 杰 : ;第五节。;、;timecho80-@.com、;14echo81-@.com和00-14echo82-@.com。;),
{ jIe : ;第六节。;、;timecho84-@.com、;14echo85-@.com和55-15:40 ;},
{ 杰 : ;第七节。;、;timecho88-@.com、;15echo89-@.com和55-16:40 ;},
{ 杰 : ;第八节。;、;timecho92-@.com、;16echo93-@.com和50-17:35 ;},
{ 杰 : ;第九节。;;tim:;17:45-18:30 ;},
{ 杰 : ;第10节。;、30-19echo102-@.com、;18echo101-@.com、;tim:00 ;},
{ 杰 : ;第11节。;、;timecho104-@.com、;19echo105-@.com和00-19echo106-@.com。;},
{ 杰 : ;第12节 ;tim:;19:50-20:35岁;;},
{ 杰 : ;第13条 、45-21echo114-@.com、;20echo113-@.com、;timecho112-@.com,30岁 }
]
返回数据;
}选择类数(比如5-9需要判断点击后选择的数据是否为连续数)。函数set_time (index)的源代码如下:
set_time(index) {
让杰=(指数1);
//判断是否已经添加。
if (this.isInArray(this.num_arr,jie)) {
this.delArrItem(this.num_arr,Jie);
this.num_arr.sort(function (x,y) {
返回x-y;
});
//console . log( ;删除 杰)
if(this . iscontinuitynum(this . num _ arr)){
this.times[index].td1 =假
}否则{
//console . log( ;删除后不连续。;)
this.times[index].td1 =真
this.num_arr.push(杰);
this.num_arr.sort(function (x,y) {
返回x-y;
});
api.toast({
msg: ;课时必须是连续的。;
});
}
}否则{
this.num_arr.push(杰);
this.num_arr.sort(function (x,y) {
返回x-y;
});
if(this . iscontinuitynum(this . num _ arr)){
this.times[index].td1 =真
}否则{
//console . log( ;添加 amp后不连续。;)
this.delArrItem(this.num_arr,Jie);
this.num_arr.sort(function (x,y) {
返回x-y;
});
this.times[index].td1 =假
api.toast({
msg: ;课时必须是连续的。;
});
}
}
this . Jie = this . num _ arr[0] ;- ;this . num _ arr[(this . num _ arr . length-1)];//格式1-2
}
//删除数组元素
delar item(arr,item) {
for(var I = 0;长度;i ) {
if (arr[i] === item) {
if (arr[i 1] === item) {
剪接排列(I,1);
I-;
继续;
}
排列拼接(I,1);
}
}
返回arr
},
//判断是否是连续数。
isContinuityNum(数组){
如果(!数组){
//数组为空。
返回false
}
if (array.length == 0) {
//数组是[]
返回true
}
var len = array.length
var n0 = array[0];
var sort direction = 1;//默认升序
if (array[0] array[len - 1]) {
//降序排列
sort direction =-1;
}
if ((n0 * 1 (len - 1) * sortDirection)!== array[len - 1]) {
//筛出[ ;3 ,4,5,6,7,8]
返回false
}
var isContinuation = true
for(var I = 0;我leni ) {
if (array[i]!== (i n0 * sortDirection)) {
isContinuation = false
打破;
}
}
返回isContinuation
},
//确定元素是否在数组中。
isInArray(arr,value) {
for(var I = 0;长度;i ) {
if (value == arr[i]) {
返回true
}
}
返回false
}最终前端需要提交给后端的数据格式如下:
year id: ;200 ,//学年id,这里指的是那个学期的课程。
name: ;大学计算机与工程。;,//课程名称
teachere CHO 119-@ . com ;李国海 ,//老师
bg: ;1 ,//课程颜色,系统提供7种颜色。
class_timecho121-@.com[
{ weeks: ;1-20 ;,room: ;怡娇A307 ,w: ;1 、ji: ;1-2 ;},
{ weeks: ;1-20 ;,room: ;计算机房C405 ,weekday: ;3 还有Jie : ;3-4 ;}
】以上就是这个开发派的全部内容。如果有用,请点赞,分享评论~
文章来源:丸子建站
文章标题:如何快速开发一款课程App?(安卓课程开发)
https://www.wanzijz.com/view/1099.html