一个简单的Android课程设计-图书馆里系统读者端

简介

之前在Javaweb的课程设计上做了一个图书管理系统的管理员端,所以这次的Android课程设计想做一个学生端。这是一个基于Android开发出的一个简单的app,app的功能也相对的比较简单,基本应该就是几个按钮与几个页面跳转的事情。

bmob后端

首先先做一点准备工作,由于这次做的这个app是使用bmob后端来存储数据的,所以我们要先导入bmob的sdk。关于bmob的SDK导入这块就不多讲了,我们进入bmob的官网点击文档然后再点击数据服务中的Android就能找到关于Android的帮助文档,按帮助文档前面的内容走一遍就基本能完成其SDK的导入了。
然后其实关于app涉及到bmob这块最重要的应该是如何获取到存储在bmob里面的数据了。如何获取数据在帮助文档里面也有,但在这里我还是想举点代码的例子。

BmobQuery<stu> bmobQuery = new BmobQuery<stu>();
bmobQuery.addWhereEqualTo("id",sid);
bmobQuery.findObjects(new FindListener<stu>() {
    String s1;
    String s2;
    int in1 = 2;
    int in2 = 3;
    @SuppressLint("WrongConstant")
    @Override
    public void done(List<stu> list, BmobException e) {
        if(e==null){

            int  n = list.size();
            for(int i = 0; i < n; i++){
                s1 = list.get(i).getId();
                s2 = list.get(i).getName();
                in1 = list.get(i).getFraction();
                in2 = list.get(i).getUnreturnbooknum();
                book b=new book(s1+"",s2+"",in1,in2);

            }

        }else{
            Toast.makeText(showstudenttip.this, "失败:", 5000).show();
        }
        tsid.setText(sid);
        tsname.setText(s2);
        tsfra.setText(in1+"");
        tunreturn.setText(in2+"");
    }
});

如上图的代码,其功能是查找数据库中的stu表一条sid等于所给的id的数据,然后将这条数据的各列数据获取出来。在代码中,list是用来存储获取回来的数据,e是判断查找是否成功,其实在大多数情况下我们用不到e。而在bmob的帮助文档中,if{}里面的语句是判断有多少条函数而没有对返回的数据进行一一的获取,但这其实也只是设计到list集合的问题,可能这对大多数大牛来说不算什么问题,但如果是不想细看帮助文档的人或者基础不太好的小白来说我这里就也算提供一点帮助吧,如果你是将数据放到listview上也可以直接将list给到适配器,这个帮助文档里面有。然后我这里就将关于查询bmob数据的问题,增删改就不讲了,主要我这app也没涉及到。

页面布局

在这里插入图片描述在这里插入图片描述
这是欢迎页面与登录页面,其大概的内容也只是改了一下背景色,加了几个文本框和几个按钮,都是一些挺基本的东西,如果觉的页面单调其实添加一些背景图或者改变一下布局就可以了,因为本人美学这块比较差,所以没有过多的去扣。然后这里其实我是把每个页面最上面的那个标题都去掉了,这个将styles.xml中的那段改为下面这样就好:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

然后关于页面布局的内容就也不多讲了,如果想调一下按钮的大小或者字体什么的在百度上面找一下相关的参数就好,有难度的应该就是listview这块。

id的存放

这里id的存放主要是值当前在app中登录进来的用户id,在后续对数据库的查询都是以这个id为索引的,通过id的值来查询数据库获取其相应的数据信息。而在这里为什么要讲这个id呢?其实是为了方便后续的操作。我们先写一个idclass的类,然后该类中只有一个static的变量,即静态变量,它的作用是用idclass定义的任何对象该静态变量的值都是相等的,而我们也可以直接通过该idclass类来直接引用这个对象。我们如果在用户登录成功后就把该静态变量赋值为用户id的值的话,我们在后续页面跳转时就不用涉及到id的传递了,我们可以在遇到用户id的页面直接通过该静态变量来获取当前用户的id。

清理Task栈

这里的Task栈指的是什么呢?其实我们在进行页面跳转时,所有页面都会都会像我们在数据结构所学的栈一样,先进来的页面在最底下,然后每跳转一个页面就等于一个页面的进栈,所以当我们按手机上的返回键时就会回到我们跳转前的页面。而在什么时候需要清理task栈呢?比如我们在登录时登录成功就会跳转到主页面,而如果我们想我们在主页面点击返回按钮时会退出app就要在我们的登录页面中跳转到主页面的意图中加上一句语句,如下图代码所示。而如果我们想在主页面按返回按键时返回到我们的登录页面就不需要加。但在某些时候时一定要加的,当我们在一些页面上设置了返回按钮来返回到我们主页面时就最好加上,因为不加的话,我们点击手机上的返回按键的话就会返回到这个页面,这是不合我们制作的逻辑的。

Intent i = new Intent();
idclass.id=sid;
i.setClass(bllogin.this,MainActivity.class);
//清理Task栈,并创建新的Task栈
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);

页面代码

在讲完上面的东西之后其实做这个app的大概内容也差不多讲了大半了,页面布局、bmob数据库获取数据,task栈的清理。然后最后讲一些我们的activity代码,这里我也是按照我的习惯,重复的东西讲一个,所有的activity代码其实都是一样的,只是一些逻辑语句上的不同。下面这个是我主页面的代码,定义了几个Button变量,然后根据相应的变量名用findViewById()函数赋给他们相应的按钮控件,然后为这些按钮控件设置监听,可以一个个设也可以用switch来设置,我这里比较笨一点吧。在各个监听中定义意图这些意图再根据设计逻辑让他们跳转到对应的页面。

public class MainActivity extends AppCompatActivity {
    Button showstudent;
    Button showhistory;
    Button showbook;
    Button out;
    String mainsid;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //Intent imain = getIntent();
        mainsid = idclass.id;//imain.getStringExtra("id");
        showstudent = findViewById(R.id.mainstutip);
        showhistory = findViewById(R.id.mainshowreadhistory);
        showbook = findViewById(R.id.mainshowbook);
        out = findViewById(R.id.mainout);

        //个人主页
        showstudent.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent();
                i.setClass(MainActivity.this,showstudenttip.class);
                startActivity(i);
            }
        });

        //图书查询
        showbook.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                Intent i = new Intent();
                i.setClass(MainActivity.this,showbookscanf.class);
                startActivity(i);
            }
        });

        //借阅历史查询
        showhistory.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent();
                i.setClass(MainActivity.this, showreaderhistory.class);
                startActivity(i);
            }
        });
        //退出
        out.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent();
                i.setClass(MainActivity.this,bllogin.class);
                //清理Task栈,并创建新的Task栈
                i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(i);
            }
        });
    }
}

总结

这个课程设计大概零零碎碎花了我几天时间吧,其实如果你会用bmob的话可以更短一点,然后难度基本上不是很大,这里讲的也不是很多,因为都是一些比较基础的东西,数据库也只用到了查询的功能。如果需要源码的话联系我。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值