《移动互联开发》

课程作业

学 院:

班 级:

学 号:

姓 名:

日 期:

设计要求(提交文档时需删除):

1.本课程设计作为《Android 程序设计》的期末考查内容。

2.任务安排:

(1)确定内容:11月3日前将确定内容,雷同内容进行微调(功能,实习,界面)。

(2)任务完成:12月2日,将计划完成的内容提交。

(3)程序演示:程序演示,录制演示视频。介绍程序的整体结构,实现方法,涉及到的技术,虚拟器演示。时长5-10分钟。

3.知识点要求包括但不限于以下内容:

(1)界面设计;

(2)事件处理;

(3)页面跳转;

(4)数据存储

4.课程设计的主体包括

(1)封面

(2)目录

(3)正文

1)应用平台介绍,开发版本,型号

2)需求分析

3)系统功能设计:

4)系统实现:原型设计,界面设计,系统结构,涉及到的关键技术,功能实现及关键代码

5)运行效果。

(4)结论

(5)参考文献

注意:

  1. 程序设计鼓励自主完成;设计功能完备,程序运行流畅无误。
  2. 代码部分需要进行必要的注释。
  3. 文档撰写应注意排版美观大方,语言通顺,无错别字。若有同学的设计基本雷同的都定位不及格。

重要事项:

  1. 提交内容:

    1. 文档的电子版
    2. 完整代码的电子版;
    3. 演示视频(本人需入镜)
  1. 电子版提交:学生个人将所有提交内容放在“学号+姓名”的文件夹中;
    例如对于学号为20110309,姓名为“王琦”的同学,压缩文件名为“20110309王琦”
  2. 提交时间与地点:
    电子版:压缩后,提交至课程中心文档
    程序演示:后续通知

目录

  1. 引言1
    1.1 项目介绍1
    1.2 开发环境1
  2. 系统需求分析1
    2.1 用户需求1
    2.2 功能需求1
    2.3 性能需求1
  3. 系统总体设计1
    3.1 功能设计1
    3.1.1 功能划分(系统总体框架)2
    3.1.2 功能说明3
    3.2 系统数据流程4
    3.2.1 系统数据流程图4
    3.2.2 数据流程说明5
    3.3 界面设计5
    3.3.1 界面布局设计5
    3.3.2 界面切换描述6
  4. 系统详细设计6
    4.1 结构设计(含文件结构、数据结构)6
    4.2 函数设计6
  5. 系统实现7
    5.1 运行结果7
    5.2 关键代码8
  6. 结论16
  7. 参考文献16

1概述(一级标题,黑体,小三号字,段前、段后间距为1行)

最近的疫情虽然已经出现了好转,但是外卖平台上提供服务的商家还是屈指可数,再加上点外卖仍旧存在一定病毒传播的风险,因此越来越多从未做饭的人都开始尝试在家做饭。这直接导致了许多食谱类APP的流量猛增,开始在互联网上掀起一股全民做饭的热潮。下面我们来分析一下食谱类APP的发展前景。

现如今是智能手机快速发展的新时代。几乎在社会中的每个人多多少少都会使用智能手机和电脑,因为它们可以使我们的生活舒适、快捷和更加方便。对比国内外的许多人类的日常生产生活中,人们都几乎都已经离不开智能手机了。随着个人的消费水平不断提高和享受生活,几乎很少人能掌握日常生活到底消费在哪些方面,食谱类APP已经无法满足人们日益增长的需求,生活中许许多多的收支和消费情况,造成人们无法清晰的了解日常生活中的各种消费。如果用户在智能手机中下载一个适合自己的食谱类APP,可以让用户日常的做饭都得到归类和管理,能够使得用户方便的记录下自己的食谱类APP的同时,也能体会不一样的快乐。

1.1选题背景(二级标题,黑体,四号字,段前、段后间距为1行)

疫情期间,许多临时抱佛脚查食谱开始学做饭的人不在少数。下面我们来看看各个平台的数据统计,比如燃财经查询七麦数据2020年1月移动应用增长榜发现,美食佳饮子分类前20名中,食谱类APP占4席。食谱分享平台“网上厨房”后台的数据显示,春节期间,三四线城市的新增用户有明显增长。网上厨房CEO杨洋称,受疫情影响,与大量一线市的务工人员滞留三四线城市有直接关系。

年轻一代不做饭的原因,除了工作忙,时间有限,更多的是从小在家都是爸爸妈妈做饭,自己不会做,这次疫情期间空余时间变多,很多人发现跟着食谱学做饭不是太难的事情,并逐渐在做饭中发现了许多趣味,而不仅仅只是想填饱肚子。现在晒厨艺还满足了一部分年轻人的社交展示需求,朋友圈已经成为不少人厨艺大比拼的地方。因为每天刷时间最长的还是疫情相关的新闻,需要转移注意力来调节心情,下厨既是一个真治愈的过程,还能满足自己填饱肚子的需求。

1.2选题意义

总的来讲,食谱类APP的发展前景还是不错的。虽然疫情即将过去。但是这次食谱类APP得到了一次免费的引流拉新机会,还提高了相关APP的知名度。因此这次疫情更像是一场大考,只有真正为用户提供了有价值内容的产品,才能一直得到用户的青睐。

1.3开发工具及技术

1.3.1 Android stduio4.1;JDK1.8;

  1. 系统需求分析
    2.1用户需求
    该系统使用Android studio开发平台进行软件系统的开发,Android studio的界面简单和具有强大的兼容性的各方面的优点。开发者可以更好的进行软件的开发和日后的相关维护。
    该系统同时具有操作简单、操作方便、互换性好、较为直观等特点,这就是为什么我们可以选择Android studio来开发一个系统。
    2.2功能需求
    为了使用户体验感更好,开发人员会事先指定一些约束规则来进行行为的约束。开发者一般做出要求如下:用户管理家菜谱类APP软件,当用户输入已经注册过的用户名和密码,用户就会进入到SQlite数据库当中。但是如果用户输入的数据没有与数据库中的数据比对发现并没有找到,用户不得进行相关信息的注册和登录。这样它的安全显然非常可靠和安全。
    2.3性能需求
    软件系统分析主要包括技术、经济、运营和开发方面的研究,从而以确保信息资源和投入资金的合理利用,避免方案设计中存在的各种各样问题,帮助我们更好地完成软件实施方案。换句话说,技术支持和资金支持分析决定了项目完成的可能性,可行性分析是实现项目阶段——从开始到中间到结束——的必须所要面临途径。我主要根据实际需要情况进行了较为全面的软件系统分析,具体如下。
    本文从一个易于理解的分析方案开始,它将帮助用户处理自己日常生活中所遇到的问题,查看硬件和软件是否能满足开发者的任务需求。
    作为一名计算机专业的学生,我在学校学到了很多编程知识,比如Android studio和Java等相关技术。经过反复验证方案和规划方案,从系统结构到编程语言的选择,再到最终选定的技术,都在寻找最优可以实现这门技术的可行性的研究。
  2. 系统总体设计

3.1功能设计

3.1.1功能规划(系统总体框架)

本系统按用户访问菜谱APP软件。

当用户进入软件系统的时候,系统只为系统存在用户提供登录操作,如果是第一次进入需要注册账号信息。当用户注册完毕后,就可以访问菜谱APP软件。

当用户进入用户界面访问时,用户可以根据模糊查询,进行对自己喜欢的菜谱进行查询,查询过后点击进入,就可以看到具体的做法了。然后根据菜谱的做法,进行美味食品的制作。

3.1.2功能说明

用户进入菜谱APP软件系统的时候,系统只为系统存在用户提供登录和注册的相关操作,初始的用户需要进行账号的注册,否则登录不了。注册完毕后,用户就可以打开菜谱APP,菜谱APP可以进行相关菜品的查询,并且也有该软件开发的一些基本信息。

当用户进入用户界面访问时,用户可以根据模糊查询,进行对自己喜欢的菜谱进行查询,查询过后点击进入,就可以看到具体的做法了。然后根据菜谱的做法,进行美味食品的制作。

3.3界面设计

3.3.1界面布局设计

登录界面 注册界面

主界面

搜索界面 软件详情 菜品详情

3.3.2界面切换描述

1.登录到注册页面的切换

Intent intent5 = new Intent(MainActivity.this, Register.class);
startActivity(intent5);
finish();

  1. 判断是否数据之前有没有注册过
    boolean userdata = false;
    for (int i = 0; i < data.size(); i++) {
    User user= data.get(i); //可存储账号数量
    if (name.equals(user.getName()) && password.equals(user.getPassword())) {
    userdata = true;
    break;
    } else {
    userdata = false;
    }
    }
    把注册的数据都放到userdata当中,ArrayList<User> data = mSQlite.getAllDATA();
    判断date的长度,用.size()进行长度的判断。
    3.

首先点击我们需要的菜谱,进行到菜品的详情页面,我们要先制作一个模板,通过在集合的数据,依次循环,将数据放入进去,同时还需要一个简单的适配器,listView展示给用户看的时候,需要设置适配器BaseAdapter。
// 决定了ListView列表展示的行数
@Override
public int getCount() {
return mDatas.size();
}
//返回指定位置对应的数据
@Override
public Object getItem(int position) {
return mDatas.get(position);
}
// 返回指定位置所对应的id
@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.item_list,null); //将布局转换成view对象的方法
holder=new ViewHolder(convertView);
convertView.setTag(holder);
}else {
holder = (ViewHolder) convertView.getTag();
}

  1. 系统详细设计

4.1结构设计(文件结构、数据结构)

软件系统操作流程的设计目的是简化设计流程,更加方便日后开发程序人员进行更好的设计相关的软件开发。当然这样的设计为以后程序开发人员的开发设计和用户的使用感都有很大的关系。因此,系统操作图、注册流程图、登录流程图显得尤为重要。如图所示。

系统的安全性非常重要,所以您需要登录才能登录,不进行注册您就不能使用主账户页面,如图所示。

4.2函数设计

private SQLiteDatabase db;
public SQlite(Context context) {
super(context, "db_test", null, 1);
db = getReadableDatabase();
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE IF NOT EXISTS user(" +
"_id INTEGER PRIMARY KEY AUTOINCREMENT," +
"name TEXT," +
"password TEXT)");
}

这边是数据库的登录和注册的设计,后面的信息采用的是

  1. 系统实现

5.1运行结果

5.2关键代码

  1. 数据库
    private SQLiteDatabase db;

    public SQlite(Context context) {
    super(context, "db_test", null, 1);
    db = getReadableDatabase();
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE IF NOT EXISTS user(" +
    "_id INTEGER PRIMARY KEY AUTOINCREMENT," +
    "name TEXT," +
    "password TEXT)");
    }

  2. 适配器
    // 决定了ListView列表展示的行数
    @Override
    public int getCount() {
    return mDatas.size();
    }
    //返回指定位置对应的数据
    @Override
    public Object getItem(int position) {
    return mDatas.get(position);
    }
    // 返回指定位置所对应的id
    @Override
    public long getItemId(int position) {
    return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder = null;
    if (convertView == null) {
    convertView = LayoutInflater.from(context).inflate(R.layout.item_list,null); //将布局转换成view对象的方法
    holder=new ViewHolder(convertView);
    convertView.setTag(holder);
    }else {
    holder = (ViewHolder) convertView.getTag();
    }
    // 加载控件显示的内容
    // 获取集合指定位置的数据
    FoodBean foodBean = mDatas.get(position);
    holder.titleTv.setText(foodBean.getTitle());
    holder.notTv.setText("材料:"+foodBean.getDesc());
    holder.iv.setImageResource(foodBean.getPicId());
    return convertView;
    }

    class ViewHolder{
    ImageView iv;
    TextView titleTv,notTv;
    public ViewHolder(View view){
    iv = view.findViewById(R.id.item_info_iv);
    titleTv = view.findViewById(R.id.item_info_title);
    notTv = view.findViewById(R.id.item_info_tv_notitle);
    }
    }
    }

  1. 登录、注册

public void onClick(View v) {
String name = username.getText().toString().trim();
String password = userpassword.getText().toString().trim();
if (!TextUtils.isEmpty(name) && !TextUtils.isEmpty(password)) {
ArrayList<User> data = mSQlite.getAllDATA();
boolean userdata = false;
for (int i = 0; i < data.size(); i++) {
User user= data.get(i); //可存储账号数量
if (name.equals(user.getName()) && password.equals(user.getPassword())) {
userdata = true;
break;
} else {
userdata = false;
}
}
if (userdata) {
Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(MainActivity.this, Home.class);
intent.putExtra("username",name);
intent.putExtra("password",password); //展示账号密码功能
startActivity(intent);
finish();
} else {
Toast.makeText(MainActivity.this, "用户名或密码不正确", Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(MainActivity.this, "用户名或密码不能为空", Toast.LENGTH_SHORT).show();
}

}
});
mSQlite = new SQlite(MainActivity.this);
}

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
reday = findViewById(R.id.reday);
back = findViewById(R.id.back);
username = findViewById(R.id.userName);
userpassword =findViewById( R.id.userpassword);
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Register.this,MainActivity.class);
startActivity(intent);
finish();
}
});
reday.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = username.getText().toString().trim();
String password = userpassword.getText().toString().trim();
if(!TextUtils.isEmpty(name)&&!TextUtils.isEmpty(password)){
mSQlite.add(name,password);
Intent intent1 = new Intent(Register.this,MainActivity.class);
startActivity(intent1);
finish();
Toast.makeText(Register.this,"注册成功",Toast.LENGTH_SHORT).show();
}else {Toast.makeText(Register.this,"信息不完备,注册失败",Toast.LENGTH_SHORT).show();}
}
});
mSQlite = new SQlite(Register.this);
}
}

  1. 结论
    在这个过程中,我学到了很多,我知道我还有很多经验要学,我的专业技能还不够。当涉及到基本的计算机知识时,许多事情可以改进,以进一步优化设计。作为一名合格的项目协调员,我将继续解决这些缺点。尤其是计算机系统的底层得到了优化;简单的关系数据库可能不满足以下要求。
  2. 参考文献

[1] 刘奇付,李紫艳.基于Android平台的大学生生活费手机管理系统设计与实现[J].软件导刊,2015,14(9):141-143.

[2]周李达,邓璐凡,王中霖,等.基于Android的大学生出行系统设计与实现[J].信息与电脑:理论版,2015(19):99-101.

[3]王亚维,徐霞.基于Android的大学生兼职系统设计与实现[J].地理空间信息,2013,11(2):98-100.

[4] 韦俊星,曾祥宝,黄美素,等.基于安卓系统的大学生党课培训系统客户端的设计与实现[J].中国新通信,2015,17(11):116-117.

[5] 卢昕,杨晞.基于VFP6.0收款记账管理系统的实现[J].电脑编程技巧与维护,2014(6):48-49.

[6] 赵世祥,杨昆,朱彦辉,等.基于Android平台的大学生课程计划管理系统[J].通讯世界,2016(1):113-114.

[7] 冯璐.一个"网络记账本"的设计与实现——基于PHP+MySQL的收支管理系统[J].电脑知识与技术:学术交流,2007,4(19):20-22.

[8] O'Hanlon J,Peasnell K. Wall Street's contribution to management accounting: the Stern StewartEVA financial management system[J]. Management Accounting Research, 1998,9(4):421-444.

[9] 许荣丰.财务综合管理系统运行中存在的问题[J].吉林金融研究,2008(3):74-74.

[10]李斌.会计信息化管理——记账凭证的几点新认识[J]. 中国乡镇企业会计, 2009(2):122-124.

[11]卢照,王琦,王华.基于Android平台的大学生实用软件设计开发[J].微型机与应用,2015(24):19-20.

[12]陈梦娜,蓝建平.基于Android的大学生文明寝室测评系统设计与实现[J].网络安全技术与应用,2014(3):64-65.

[13]黄天上,姚世强,裴冬梅,等.基于Android平台的大学生校园服务信息实时发布系统的研究[J].教育,2015(10):218-218.

[14]吴冬芹,陈子健.基于GTD的大学生时间管理系统设计与实现[J].电脑编程技巧与维护,2015(16):44-45.

[15]王秋丽.我国财务软件的现状及发展趋势[J].山西经济管理干部学院学报,2012,10(1): 43-45.

菜谱APP源码和设计报告相关推荐

  1. 安卓APP源码和设计报告——体重档案APP(含答辩PPT)

    移动媒体程序设计实现课程设计报告 课题名称:体重档案APP小组 小组成员:xxx xxx xxx 摘要: Window 操作系统的诞生成就了微软帝国,同时也造就了 PC 时代的繁荣, 然而如今,以 A ...

  2. 安卓APP源码和设计报告——个人通讯录

    摘 要 随着移动设备制造技术和移动通信网络的迅猛发展,全球手机用户日益增加,手机成为了很多人日常生活中必不可少的一部分,手机业在日益发展的同时,人们对手机的功能需求和体验需求也越来越高,因此各种智能手 ...

  3. 安卓APP源码和设计报告——智能垃圾桶

    课程名称: 移动互联网应用开发 实验名称: 姓名/学号: 专业/班级: 指导教师: 实验时间: 一.案例功能需求 该系统是了解垃圾分类以及物品查询属于哪类垃圾的智能化APP.该系统可以实现用户登陆注册 ...

  4. 安卓APP源码和设计报告——快递查询录入系统

    <多媒体通信技术> 题 目: 快递 完 成 日 期 2022年05月 目 录 1 绪论1 2 设计方案2 2.1 设计思路和方案2 2.2 功能要求2 2.3 设计的流程图2 3 设计过程 ...

  5. 安卓APP源码和设计报告——手机天气预报系统

    目录 摘要1需求分析2一.开发背景2二.项目需求分析2总体设计2一.系统规划2二.系统功能界面3设置预报城市界面:3天气显示界面:4Widget 桌面小部件界面:5三.设计目标6系统设计6一.开发及运 ...

  6. 安卓APP源码和设计报告——基于Android的垃圾分类系统

    <移动应用开发>大作业报告 题 目    基于Android的垃圾分类系统 系 部     班 级     学 生 姓 名     学 号     指 导 教 师     时 间     ...

  7. 安卓app源码和设计报告——简易记账本

    课 程 设 计(实训)说 明 书 题目 实现简易记账本功能 专 业 班 级 学生姓名 同组学生 指导老师 课程设计(实训)评语 学生姓名 专业 班级 2 题目 实现简易记账本功能 评语: 成绩: 优 ...

  8. 安卓APP源码和设计报告——运动健身教学

    实 验 报 告 课程名称 实验名称 指导教师 专业 班级 学号 姓名 目 录 一.设计背景31. 需求分析32. 课题研究的目的和意义3二.系统需求分析与开发环境31. 系统功能需求32.系统界面需求 ...

  9. 鞋子商店APP源码和设计报告

    实 验 报 告 课程名称 实验名称 指导教师 专业 班级 学号 姓名 一.需求分析 1.需求分析 随着互联网和手机技术的蓬勃发展,网购已经成为许多人,尤其是年轻人的主要消费方式,这就对手机购物APP产 ...

最新文章

  1. SpringCloud 之 Zuul 网关搭建及配置
  2. CCNA-(9)-思科交换机特点
  3. 使用磁盘为Linux添加swap
  4. Python 实现网络爬虫小程序
  5. Python【第一篇】python安装、pip基本用法、变量、输入输出、流程控制、循环
  6. UIcollectionView 加入尾部视图
  7. Response.AddHeader
  8. react月份选择控件_一款很实用的ReactJS日期范围选择控件
  9. 如何使用VC6.0创建DLL
  10. Unable to start LiveReload server
  11. Centos7修改IP地址
  12. appdata文件太大了可以删除吗?
  13. git 创建本地仓库,再关联远程创库
  14. 达尔文服务器_达尔文与网络设计艺术
  15. 重庆公厕装免费WiFi 网速达50M
  16. 操作系统经典独木桥问题
  17. Android 限制启动应用最大使用内存,可供极限测试时使用
  18. c#实现浏览器端大文件分块上传
  19. DVWA-master通关教程
  20. 大学计算机基础复习资料(第一章)

热门文章

  1. live555 如何设置时间戳
  2. 查看linux的超级块
  3. instagram akp_如何从您的Instagram帐户中删除帖子
  4. C#操作Excel时的格式设定(转)
  5. 中标麒麟使用centos源_Linux各系统配置yum,apt源
  6. 论文翻译 DOTA:A Large-scale Dataset for Object Detection in Aerial Images
  7. 趣谈C语言之qsort函数
  8. pygame小游戏--接弹珠
  9. mongodb中常用的shell命令
  10. 如何获取微信浏览器访问需要OAuth2.0网页授权的页面资源