基于android课程表怎么获取课表

基于android课程表怎么获取课表,第1张

开发过程

一开始因为毕设有关课程表的要求不明,主要就是利用jsoup拉取学校教务管理系统的课程数据进行课程表界面的填充显示,并不能课程的个性化调整。

后来重新调整了需求,参考了超级课程表的功能。重新设计了实体类,利用bmob移动端云作为爬取到的数据的数据服务器进行了重新的开发。

主要代码

1、课程实体类

package commanguescoursemanagementbean;

import javaioSerializable;

import javautilArrayList;

import javautilregexMatcher;

import javautilregexPattern;

import cnbmobv3BmobObject;

public class CourseBean extends BmobObject implements Serializable {

public static final String TAG = "CourseBean";

private String studentId;

private String dataYear;

private String dataTerm;

private String courseName = ""; //课程名

private String courseRoom = ""; //教室

private String courseTeacher = ""; //老师

//private String courseWeekNumber = "0";

private ArrayList<Integer> courseWeekNumber = new ArrayList<>(); //周数

private int courseWeek = 0; //星期几上课

private int courseLow = 0; //第几排

private int courseSection = 0; //延续几节课

//private String courseSection = "12"; //第几节上课1,2,12(2节课)

//private String courseIn = "3"; //单双周 1(单),2(双),3(全)

public CourseBean() {

super();

}

public void setCourseBase(String studentId, String dataYear, String dataTerm) {

thisstudentId = studentId;

thisdataYear = dataYear;

thisdataTerm = dataTerm;

}

public CourseBean(String courseName, String courseRoom, String courseTeacher, ArrayList<Integer> courseWeekNumber, int courseWeek, int courseLow, int courseSection) {

thiscourseName = courseName;

thiscourseRoom = courseRoom;

thiscourseTeacher = courseTeacher;

thiscourseWeekNumber = courseWeekNumber;

thiscourseWeek = courseWeek;

thiscourseLow = courseLow;

thiscourseSection = courseSection;

}

/

str 数据到bean

@Name: stringToBean

@param str

@return

@Time: 2015-12-21 上午11:00:57

@Return: CourseBean

/

public static CourseBean stringToBean(String str) {

return toBean(str);

}

//辅助

private static CourseBean toBean(String courseDatas){

CourseBean bean = null;

String[] courseData = courseDatassplit("◇");

if(courseDatalength>3){ //有数据

bean = new CourseBean();

String courseName = courseData[0];

String courseRoom = courseData[2];

//获取上课周数

findWeekNumberFromStr(courseData[1],bean);

beansetCourseName(courseName);

beansetCourseRoom(courseRoom);

findCourseInFromStr(courseData[4],bean);

}

return bean;

}

/

找出上课周数,老师名字

@Name: findFromStr

@return

@Time: 2015-12-21 上午11:22:30

@Return: String

/

public static void findWeekNumberFromStr(String courseData,CourseBean bean){

Pattern pattern = Patterncompile("(\\w)\\((\\d+)-(\\d+)\\)");

Matcher matcher = patternmatcher(courseData);

if(matcherfind()){

String teacher = matchergroup(1);

beansetCourseTeacher(teacher);

String weekNumberstart = matchergroup(2);

String weekNumberfinish = matchergroup(3);

Integer weekNumberstartInt = IntegerparseInt(weekNumberstart);

Integer weekNumberfinishInt = IntegerparseInt(weekNumberfinish);

for (int i = weekNumberstartInt;i<=weekNumberfinishInt;i++){

beangetCourseWeekNumber()add(i);

}

}

}

/

找出 上课是不是单双周,几节课

@Name: findCourseInFromStr

@param courseData

@return

@Time: 2015-12-21 下午1:29:05

@Return: String

/

public static void findCourseInFromStr(String courseData,CourseBean bean){

Pattern pattern = Patterncompile("(\\w)\\{(\\d)节\\}");

Matcher matcher = patternmatcher(courseData);

if(matcherfind()){

String str = matchergroup(1);

ArrayList<Integer> list = beangetCourseWeekNumber();

switch (str) {

case "单周":

for (int i = 0;i< listsize();i++){

Integer weekNumber = listget(i);

if (weekNumber%2==0){ //移除偶数

beangetCourseWeekNumber()remove(i);

}

}

break;

case "双周":

for (int i = 0;i< listsize();i++){

Integer weekNumber = listget(i);

if (weekNumber%2!=0){ //移除奇数

beangetCourseWeekNumber()remove(i);

}

}

break;

default:

break;

}

String str2 = matchergroup(2);

String[] args = str2split("");

if (argslength==3){

Integer integer = IntegerparseInt(args[1]);

Integer integer2 = IntegerparseInt(args[2]);

beansetCourseLow(integer);

beansetCourseSection(integer2-integer+1);

}else if (argslength==4){

Integer integer = IntegerparseInt(args[1]);

Integer integer2 = IntegerparseInt(args[2]+args[3]);

beansetCourseLow(integer);

beansetCourseSection(integer2-integer+1);

}else if (argslength==5){

Integer integer = IntegerparseInt(args[1]+args[2]);

Integer integer2 = IntegerparseInt(args[3]+args[4]);

beansetCourseLow(integer);

beansetCourseSection(integer2-integer+1);

}else if (argslength==2){

Integer integer = IntegerparseInt(args[1]);

beansetCourseLow(integer);

beansetCourseSection(1);

}

}

}

public String getCourseName() {

return courseName;

}

public void setCourseName(String courseName) {

thiscourseName = courseName;

}

public String getCourseRoom() {

return courseRoom;

}

public void setCourseRoom(String courseRoom) {

thiscourseRoom = courseRoom;

}

public String getCourseTeacher() {

return courseTeacher;

}

public void setCourseTeacher(String courseTeacher) {

thiscourseTeacher = courseTeacher;

}

public ArrayList<Integer> getCourseWeekNumber() {

return courseWeekNumber;

}

public void setCourseWeekNumber(ArrayList<Integer> courseWeekNumber) {

thiscourseWeekNumber = courseWeekNumber;

}

public int getCourseWeek() {

return courseWeek;

}

public void setCourseWeek(int courseWeek) {

thiscourseWeek = courseWeek;

}

public int getCourseLow() {

return courseLow;

}

public void setCourseLow(int courseLow) {

thiscourseLow = courseLow;

}

public int getCourseSection() {

return courseSection;

}

public void setCourseSection(int courseSection) {

thiscourseSection = courseSection;

}

public String getStudentId() {

return studentId;

}

public void setStudentId(String studentId) {

thisstudentId = studentId;

}

public String getDataYear() {

return dataYear;

}

public void setDataYear(String dataYear) {

thisdataYear = dataYear;

}

public String getDataTerm() {

return dataTerm;

}

public void setDataTerm(String dataTerm) {

thisdataTerm = dataTerm;

}

}

2、课程归类处理

//按天查询数据

private void getDayDate(List<CourseBean> list){

boolean boo = SaveUtilgetSharedPreferencesSwitch(mContext);

ArrayList<CourseBean> integerA = new ArrayList<>();

if (boo){

if (weekNum!=-1){

for (int l=0;l<listsize();l++){ //去除

ArrayList<Integer> integerArrayList = listget(l)getCourseWeekNumber();

if (!integerArrayListcontains(weekNum)){ //不包含,就是不是本周,去除

integerAadd(listget(l));

}

}

listremoveAll(integerA);

}

}

List<CourseBean> list1 = null;

Map<Integer,List<CourseBean>> map = new HashMap<>();

for (CourseBean be :list) {

Integer weekNum = begetCourseWeek();

if (mapcontainsKey(weekNum)){ //有数据

list1 = mapget(weekNum);

}else {

list1 = new ArrayList<>();

mapput(weekNum,list1);

}

list1add(be);

}

ArrayList<CourseBeanMap> ls = new ArrayList<>();

//按星期几处理

for (MapEntry<Integer,List<CourseBean>> entry : mapentrySet()) {

List<CourseBeanMap> mapw = handleRepeat(entrygetValue(),entrygetKey());

lsaddAll(mapw);

}

//本地存储存储使用

TimeTableBmob bmob = new TimeTableBmob();

bmobsetStudentId(CourseApplicationgetInstance()getUserInfo()getStudentId());

bmobsetCourseList(ls);

bmobsetTerm(dataTerm);

bmobsetYear(dataYear);

CourseApplicationgetInstance()setTimeTableBmob(bmob);

dataBackonDataBack(ls);

}

//处理重复

private List<CourseBeanMap> handleRepeat(List<CourseBean> list,Integer weekNum){

Collectionssort(list,new Comparator<CourseBean>(){

public int compare(CourseBean arg0, CourseBean arg1) {

Integer year1 = arg0getCourseLow();

Integer year2 = arg1getCourseLow();

return year1compareTo(year2);

}

});

List<CourseBeanMap> listKey = new ArrayList<>();

List<String> liststr = new ArrayList<>();

int size = listsize();

for (int h=0;h<listsize();h++){

CourseBean bean = listget(h);

Integer low = beangetCourseLow();

Integer sesson = beangetCourseSection();

Boolean isAdd = false;

解压和储存的区别

《Bmob》是一个可以开发云存储的移动应用软件

它可以让移动开发者将信息从服务器直接推送到应用程序中,从而实现软件的主动更新、信息通知等服务。

自己开发一款APP需要多长时间

如今,不少企业都想拥有属于自己企业或产品的手机APP,但其中最困扰企业主的问题就是:开发一款手机APP到底需要多少钱?

简单点来说,要视手机APP的需求及质量而言,价位一般在几千到十几万左右,更高端的价格更高。

今天,我们就来详细分析一下这个问题,请继续往下看吧。 

一、APP开发款式分为固定款和定制款,两者的价格均不相同

固定款:是指直接套用已有的、现成的APP固定模板,报价是固定的,所需要的功能也是固定的,缺点就是客户拿不到源代码,也不能根据企业需求进行定制,由于源代码是封装的,如果企业以后想进行功能升级或系统维护的话,也不能够实现,只能重新开发一个新的软件。

固定款的APP开发时间短,约2~3日的时间即可完成,费用大约在几千到几万之间。

定制款:定制款是指APP的功能全部重新开发,过程比较繁琐,需要美工、策划、APP开发(前台/客户端/手机端)、后台程序员等工种协同完成,大型的、功能复杂的APP甚至需要数十人的团队。

由于APP的功能和设计都是定制的,因此价格会高些。定制款的开发时间与开发价格是成正比的,开发时间长,大约在两三个月甚至不定的周期里才能完成,而费用大概在几万甚至十几万左右。

因此,想要知道开发一款手机APP需要花费多少钱,企业主首先必须把APP的详细需求和功能告知APP开发公司,开发公司才能报出一个合理的价格。

二、手机APP平台不同,制作成本也不一样

现在市面上流行的手机APP制作平台主要有两种一般包括两种系统:安卓系统(Android)和苹果系统(IOS)。

一般来说,制作苹果系统的手机APP软件费用要比安卓平台的贵一些,因为苹果公司对苹果平台的封闭性和手机APP开发语言Objective-C的难度,都让APP开发者加大了苹果系统手机APP开发的难度。

三、APP制作成本包含参与人员的工资

通常情况下,开发一款APP需要产品经理、客户端工程师、后端工程师和UI设计师各一名,这已经是制作手机APP应用软件比较精简的配置了,所以这些参与人员的工资也是包含在APP制作成本当中的。这些工作人员的月薪加起来可能都会超过4、5万元。

四、APP开发公司的所在地

需要注意的是,同样实力的APP开发公司,在不同的城市也会导致APP的成本费用高一些

接入第三方就可以实现消息推送。好的推送 提供通知+自定义消息+富媒体三重个性化推送方式,满足任意场景需要,好的推送 3分钟快捷集成SDK,推送毫秒级送达,降低开发成本,同时有效提升用户留存率。

极光推送值得信赖,极光推送是国内最早的第三方移动消息推送服务供应商,累计为超过150万移动应用提供服务极光推送 系统性能稳定,送达率高,延迟率低还支持用户分群的推送功能。

可定制的私有云,对于定制化需求较强的,或者想拥有自己推送平台的开发者,极光提供全功能的私有云方案。

JPush 支持推送数量、用户打开次数、用户使用时长、新增用户、活跃用户等数据的统计。 Android 开发者需要实现了相关的统计 API,才可以进行用户相关的统计。 iOS 开发者不需要实现统计 API,可以直接在控制台-统计页面查看相关数据。

直接选择一个baas平台,例如bmob后端云,都不需要自己去租服务器。几乎免去服务端的工作量,分分钟为你的APP添加一个强大的后端服务系统,为你提供一整套完整的后端解决方案,建议把盈利模式也考虑进去,接入支付sdk,搞几个场景支付,打赏什么的功能,盈利也有了。最主要的是省去搭建后台的时间,就是省去了最麻烦的部分。这样看,如果资金紧张,技术人员只需要客户端开发人员即可,

网络电话系统开发的话,首先要知道网络电话的原理。其实网络电话也是要租三大运营商的线路的。那么租了就会有接口。通过编程就可以接通这个接口。实现通话。

通常网络电话的拨打方式有两种:

第一种就是:直拨,那么直拨的话就是像平时打电话一样的。

第二种就是:回拨。回拨的话就是主叫在拨打电话给被叫的话。就发送一个信号给服务器。那么服务器就同时向主叫和被叫同时发送一个信号。等双方都接通后就可以正常通电话了。

在这个系统的基础上,蜂云智能 还把三级分销系统和红包秒到系统内置在这个网络电话里面。所以更加的强大。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 基于android课程表怎么获取课表

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情