每天要给自己打个分
不然回想起来会觉得什么都没做
打分就能告诉不怎么记事的自己
其实每天都做得挺好的
想做一个APP,随时可以为当天到当时这段时间打分,建立一个数据库记录打分时间和分数(便于后期导出分析),每一天选最后一次打分作为当天分数,每一周选其所有天的平均分作为当周分数,然后每月,每年
然后要能看到当天分数变化折线图,当周分数变化(以天为单位),当月分数变化(以周为单位),当年分数变化(以月为单位),然后就是每年分数变化,最高单位就是年好了。
有想法了,弄数据库(Adb,时间和分数两个数据项)和几个表,以及计数变量:
【表与图】
当天表(最大为30个元素的数组cD,每天清空),记录当天时间和分数,并用其数据画出当天分数变化折线图。
8天表(8个元素的循环数组eD,每天替换最旧的,(数组永远是满的)),只记录分数,序号隐含,8天表中的数据作为点画出8天表折线图(从PeD+1(取模)开始遍历),(不用当周,而用当天与前7天的数据,以方便看出变化以及和上周同期对比)。设置指针PeD。
7周表(7个元素的循环数组sW,形式同8天表),以其数据画出7周表折线图。设置指针PsW。
13月表(13个元素的循环数组tM,形式同8天表),以其数据画出13月表折线图。设置指针PtM。
每年表(最大为130个元素的数组eY(活150多岁)),记录每一年的时间和分数,并画出每年分数折线图。
【计数变量】
当周天数计数cnW(count in week),以星期一为起始,星期一时值为1,最大值为7。
当月天数计数cnM,即日期。
当年月数计数cnY,即月份。
【数据更新】
如果APP当天第一次启动(使用文件或数据库记录当天日期,每次启动与之前记录日期进行比对,不符则为第一次启动(此时将新日期覆盖记录)):
{
清空当天表cD;PeD+1(取模),PeD指向值(eD中)设为0;cnW+1,cnW为8时设为1;
如果cnW为1,PsW+1(取模),PsW指向值(sW中)设为0;
cnM设为日期,cnY设为月份,如果cnM为1,PtM+1(取模),PtM指向值(tM中)设为0;并检查cnY,若是1,eY增加元素0;
处理完后弹出消息“欢迎来到新的一天~”
}
当提交打分:
{
时间与打分计入数据库Adb,cD增加元素{时.分(如22.58),分数};tmp=PeD指向数据,PeD指向数据=分数;
如果tmp为0(说明是新一天),PsW指向数据=PsW指向数据*(cnW-1)/cnW+分数/cnW;否则,PsW指向数据=PsW指向数据+(分数-tmp)/cnW;
tmpM=PtM指向数据
如果tmp为0(旧月新天和新月新天可统一),PtM指向数据=PtM指向数据*(cnM-1)/cnM+分数/cnM;否则(旧月旧天和新月旧天可统一),PtM指向数据=PtM指向数据+(分数-tmp)/cnM;
如果tmpM为0(旧年新月和新年新月可统一),eY最后一项数据=eY最后一项数据*(cnY-1)/cnY+PtM指向数据/cnY;否则(旧年旧月和新年旧月可统一),eY最后一项数据=eY最后一项数据+(PtM指向数据-tmpM)/cnY;
处理完弹出消息“打分提交成功~”
}
【页面布局】
第一个页面是打分页面,输入框和提交按钮。第二个页面是当天表折线图,横轴时间(时.分),纵轴分数。第三个页面是8天表折线图,横轴时间(序号),纵轴分数。第四个页面是7周表折线图,横轴时间(序号),纵轴分数。第五个页面是13月表折线图,横轴时间(序号,也可月份),纵轴分数。第六个页面是每年表,横轴时间(年),纵轴分数。
(基本完了,就等开做啦)
修曦所著,转载注明
如果能帮到人就更好啦
网友评论