基于Android实现社团活动信息发布系统

社团活动信息发布系统

 

1 系统概述

(一)系统的主要功能

(1) 用户注册和登录功能

登录:输入用户名和密码后,点击登录按钮,当用户输入错误的用户名和密码时,能给出提示信息;当用户输入正确的用户名和密码时,进入系统的主界面。

注册:输入用户名和密码后,点击注册按钮,当用户输入重复的用户名时给出“用户名重复,注册失败”提示;当用户输入不重复的用户名时,注册成功。

(2) 显示社团活动信息功能

从数据库社团活动信息表中获取所有的社团活动信息项,并填充到界面。

(3) 查看社团活动信息功能

点击界面的社团活动信息项后,打开社团活动信息详情界面,该界面显示了社团活动信息的标题、具体内容和最后修改时间,该界面内容不可编辑。

(4) 编辑社团活动信息功能

左滑界面的社团活动信息项后,点击编辑,进入编辑界面,可以对社团活动信息的标题和具体内容进行修改,点击编辑界面的保存按钮后保存界面。

(5) 删除社团活动信息功能

左滑界面的社团活动信息项后,点击删除,如果当前登录者是信息创建者,则删除成功,否则输出“你没有权限删除”。

(6) 新增社团活动信息功能

在界面的社团活动信息项点击右上角后,在弹出的菜单中点击新增后,打开社团活动信息新增界面,编写标题和内容后,点击保存,保存到数据库社团活动信息表中。

(7) 社团活动信息搜索功能

在界面的社团活动信息项点击右上角后,在弹出的菜单中点击搜索后,打开社团活动信息搜索界面,在输入框中输入关键词,之后点击搜索按钮,显示出标题与关键词有关社团活动信息,可以在这个界面对信息进行查看和删除,如果没有与标题有关的社团活动信息,则显示“暂无记录!”。

(二)设计要求

(1)设计用于保存用户和社团活动信息的数据库表,需要存储的关键信息如下:

用户信息表(用户 ID,用户名,密码)社团活动信息表(信息 ID,标题,内容,发布时间,发布用户 ID)

(2)系统能提供用户注册和登录功能。当用户输入错误的用户名和密码时,能给出提示信息;当用户输入正确的用户名和密码时,进入系统的主界面。

(3)系统能以列表的形式显示当前已经发布的活动信息标题。当用户点击列表中的任一标题时,可以查看此信息的详细内容。

(4)系统能以菜单的形式,提供活动信息的“发布”、“编辑”和“删除”功能。注意:只有发布活动信息的用户才能对活动信息进行编辑和删除操作。

(5)系统能提供“信息搜索”功能,可以根据用户输入的关键字查找标题中包含此关键字的活动信息。

2 系统设计

(一)功能模块设计

(1) 功能结构图:

(2) 数据流图:

(二)数据库设计思路

(1) E-R 图:

(三)用户界面设计思路

(1) 登录注册功能界面:

(2) 社团活动信息显示界面

(3) 编辑、删除、新增社团活动信息功能

  1. 编辑社团活动信息:

  1. 删除社团活动信息:

  1. 新增社团活动信息:

(4) 搜索功能界面

3 系统实现

(一) 应用程序的目录:

a) 与用户信息表相关操作程序具体实现

b) 与社团活动信息表相关操作程序具体实现

i. 核心代码及详细注释
  1. 匹配搜索:Search_Activity.java
public void search_Click(View view){
EditText cin=findViewById(R.id.search_content);
// 调用构造函数时调用查询数据库函数,结果保存在content.item里,从数据库查询联系人信息
clubcontent content = new clubcontent(this);
mValues=content.getItems();
List<clubcontent.InformationItem> x=search(mValues,cin.getText().toString());
// 创建 RecyclerView.Adapter适配器对象
adapter = new ClubAdapt(this, x,User_ID);
// 定义布局管理器
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
// 设置 RecyclerView 布局样式
recyclerView.setLayoutManager(linearLayoutManager);
//使用适配器对象 adapter 为 recyclerView 加载数据
recyclerView.setAdapter(adapter);
//设置默认分割线
recyclerView.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
setViewVisible();

}

public List<clubcontent.InformationItem> search(List<clubcontent.InformationItem> m,String w){
    List<clubcontent.InformationItem> x=new ArrayList<clubcontent.InformationItem>();
    String str=".*"+w+".*";  //判断字符串中是否含有w
    String z;
    for (int i = 0; i < m.size()-1; i++) {
        z=m.get(i).title;
        if (Pattern.matches(str,m.get(i).title)) {
            x.add(m.get(i));
        }
    }
    return x;
}

2.实现 UpdateActivity.Java 的多态功能

2.protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.information_layout);
    et_title = (EditText) findViewById(R.id.et_title);
    et_information = (EditText) findViewById(R.id.et_information);
    Intent intent = getIntent();
    if (ifEdit==2) {
        //获得从 PhoneBookActivity 传递过来的信息
        item = (InformationItem) intent.getSerializableExtra("item");
        position = intent.getIntExtra("position", -1);
        et_title.setText(item.title);
        et_information.setText(item.content+"\n最后修改日期为"+item.time);
        et_information.setEnabled(false);
        et_title.setEnabled(false);
        et_information.requestFocus();
    }else if(ifEdit==0){
        item = (InformationItem) intent.getSerializableExtra("item");
        position = intent.getIntExtra("position", -1);
        et_title.setText(item.title);
        et_information.setText(item.content);
        et_information.requestFocus();
    }
    User_ID=intent.getStringExtra("ID");        //设置标题栏
    setTopBar();
}

@Override
protected void onDestroy() {
    super.onDestroy();
    ifEdit = 1;
}

//设置标题栏的两个按钮,都应绑定事件
private void setTopBar() {
    TextView tvCancel = (TextView) findViewById(R.id.tv_topbar_left);
    TextView tvSave = (TextView) findViewById(R.id.tv_topbar_right);
    if(ifEdit==0||ifEdit==1){
        tvCancel.setText("取消");
        tvSave.setText("保存");
    }else{
        tvCancel.setText("返回");
        tvSave.setText("");
    }

4 系统测试

用户注册功能:账号 ling 密码 123456

用户登录功能:账号 ling 密码 123456

显示社团活动信息功能:

查看社团活动信息功能 :点击列表中的每一项

编辑社团活动信息功能:

编辑非本用户添加的社团信息

编辑本用户添加的社团信息

删除社团活动信息功能:

删除非本用户添加的社团信息

删除本用户添加的社团信息

社团活动信息搜索功能:搜索内容:meeting

5 总结与体会

(1) 收获:

这次大作业巩固了课堂上学习的知识,同时也对课堂上学到的知识进行了扩展比如正则的使用,如何建立两个表以及如何让一个界面呈现三种功能,在此基础上我还学会了 Android 断点调试,让我更容易发现系统的问题。最后独立的完成了这次实验。

(2) 设计上有何特色和不足之处:

设计特色:这个系统在使用了两个数据库表、采用了正则表达式实现搜索算法,有一个界面需要实现三种功能新增、查看和编辑功能,同时在实现只有添加者才可以对社团活动信息进行编辑和删除需要在界面之间传递参数

不足之处:该系统距离投入使用还有很多距离,而且数据库使用比较基础的 SQL 数据库,还有一些需要提高的地方。

(3) 对课程的建议:希望老师们能多给这种实战课分配多一些课时,这个课给我整体的感受是内容很多,课时很紧,老师为了讲完都是赶着讲;不过上完这个课收货特别大,对继续深入学习下去有很大帮助!谢谢老师八个星期的教导。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神仙别闹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值