1. 项目名称
    仿淘宝水果商城
  2. 项目概述

随着互联网技术地高速发展,计算机进入到每一个人的生活里,从人们的生活方式到整个社会的运转都产生了巨大的变革,而在信息技术发达的今天,互联网的各种娱乐方式都在渗透到人们的生活方式之中,近年来人们生活水平的提高,生活压力的增加,精神生活的空虚,使人们对于精神世界的丰富需求越来越大,因此近年来,电视、电影、音乐等娱乐产业都在飞速发展,而音乐虽然是在人类历史上早就存在的娱乐方式,但在信息技术高速发展的现在,大部分产业都在实现互联网+的概念,而且随着全球数字娱乐业的发展,以及网络传播的快速、高效、便捷,传统的传播方式不能满足人们对于这方面的需求,所以许多传统的产业都在实现数字化。仿淘宝商城的产品展示系统是主要面对用户的产品信息展示,也是用户最终想寻找的信息内容。产品展示系统主要就是将仿淘宝商城中各类产品信息进行实时的发布,用户可以在首页清晰的浏览查询到各类产品信息,而且还提供强大的查询功能。

3、目的与要求

通过一个综合的实例,进一步掌握移动应用程序开发的基本原理和方法,提高基于Android Studio对图形用户界面的设计和开发能力,以及对控件事件处理、数据存储以及网络访问的能力。具体包括如下几个方面:

1)熟练掌握Android开发工具Android Studio的使用。

2)熟练掌握Android线性布局的使用方法,并熟练使用Activity、Fragment、ListView、TextView、Button、EditText、ImageView等视图组件构建具有良好用户体验的App界面。

3)熟练掌握对控件常用事件进行处理的方法。

4)掌握数据存储或网络访问的基本方法。

4、系统实现环境

集成开发环境:Android Studio 3.0及以上

JDK :1.8及以上

Android版本:9.0及以上

Android API:28及以上

5、系统设计与实现

本系统所包含的功能有用户登录、用户注册、首页、分类、发现、搜索等功能。用户登录及注册:初次使用本系统的用户需要注册用户名和密码,登录完成提示您已成功登录后,用户可进入首页浏览商品。首页、分类及发现:用户可以浏览商品,在首页可以搜索所需信息,分类页面有超市,大牌及常用分类。分别是一些日用品,奢侈品及各种电子产品。发现页面是一些水果店铺及水果分类。

登录页面主要代码

btn_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String username = et_username.getText().toString().trim();
String password = et_password.getText().toString().trim();
if (UIfEmpty.ifEmpty(username, password)) {
Toast.makeText(LoginActivity.this"信息未输入完整", Toast.LENGTH_SHORT).show();
else {
Cursor cursor = db.rawQuery("select username from user where username = ? and password = ?",
new String[]{username, password});
if (cursor.getCount() == 1) {
SharedPreferences.Editor editor = sp.edit();
if (cb_remember.isChecked()) {
editor.putString("username", username);
editor.putString("password", password);
editor.putBoolean("IFCHECK"true);
else {
editor.putBoolean("IFCHECK"false);
}
editor.commit();
startActivity(new Intent(LoginActivity.this, MainActivity.class));
Toast.makeText(LoginActivity.this"登录成功", Toast.LENGTH_SHORT).show();
else {
Toast.makeText(LoginActivity.this"账号或密码错误", Toast.LENGTH_SHORT).show();
}
cursor.close();
}
}
});

注册页面的主要代码

protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
initViews();
btn_register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
register();
}
});
btn_back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
}
private void initViews() {
DBHelper helper = new DBHelper(this);
db = helper.getWritableDatabase();
btn_register = findViewById(R.id.register_btn_register);
btn_back = findViewById(R.id.register_btn_back);
et_username = findViewById(R.id.register_username);
et_password = findViewById(R.id.register_password);
et_repeat = findViewById(R.id.register_password_again);
}
private void register() {
String userName = et_username.getText().toString().trim();
String password = et_password.getText().toString().trim();
String passwordAgain = et_repeat.getText().toString().trim();
if (UIfEmpty.ifEmpty(userName, password, passwordAgain)) {
Toast.makeText(RegisterActivity.this"信息未输入完整", Toast.LENGTH_SHORT).show();
else {
if(password.equals(passwordAgain)) {
ContentValues values = new ContentValues();
values.put("username", userName);
values.put("password", password);
long flag = 0;
flag = db.insert("user"null, values);
if(flag == -1) {
Toast.makeText(RegisterActivity.this"账号已被注册", Toast.LENGTH_SHORT).show();
else {
Toast.makeText(RegisterActivity.this"注册成功", Toast.LENGTH_SHORT).show();
onBackPressed();
}
else {
Toast.makeText(RegisterActivity.this"两次输入的密码不一致", Toast.LENGTH_SHORT).show();
}
}
}
}

首页的主要代码

public View initView() {
View view = View.inflate(mContext, R.layout.fragment_homenull);
lv_home = view.findViewById(R.id.lv_home);
ib_top = view.findViewById(R.id.ib_top);
tv_search_home = view.findViewById(R.id.tv_search_home);
tv_message_home = view.findViewById(R.id.tv_message_home);
initListener();
return view;
}
public void initData() {
super.initData();
ArrayList<Goods> goods = new ArrayList<>();
goods.add(new Goods(2, R.drawable.lll"荔枝""海南", 25.00, 99, "水果店"));
goods.add(new Goods(3, R.drawable.computer"电脑""16英寸", 6599.00, 5, "Apple产品京东自营旗舰店"));
goods.add(new Goods(4, R.drawable.ppp"苹果""红富士", 10.00, 19, "华来水果店"));
goods.add(new Goods(5, R.drawable.xxx"香蕉""海南", 15.00, 18, "水果店"));
goods.add(new Goods(7, R.drawable.kouhong" 口红""正红色", 188.00, 1, "化妆品专营店"));
goods.add(new Goods(8, R.drawable.bamai8"跑车""轿车", 180000, 99999999, "BMW旗舰店"));
GoodsListAdapter adapter = new GoodsListAdapter(mContext, goods);
lv_home.setAdapter(adapter);
}

网络连接请求的主要代码
private void initListener() {
ib_top.setOnClickListener(v -> {
lv_home.smoothScrollToPosition(0);
});
tv_search_home.setOnClickListener(v -> {
Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
intent.setData(Uri.parse("https://www.quanjing.com/feature/design/1517.html"));
startActivity(intent);
});
}

分类页面的主要代码

public View initView() {
View view = View.inflate(mContext, R.layout.type_homenull);
rg_type = view.findViewById(R.id.rg_type);
initFragment();
initListener();
rg_type.check(R.id.rb_commf1);
return view;
}

public void initData() {
super.initData();
}
private void initFragment() {
fragments new ArrayList<>();
fragments.add(new Jdtuijian()); //推荐分类
fragments.add(new JdShoping());
fragments.add(new Guoji());
}

private BaseFragment getFragment(int position) {
if (fragments != null && fragments.size() > 0) {
BaseFragment baseFragment = fragments.get(position);
return baseFragment;
}
return null;
}
private void switchFragment(Fragment fromfragment, BaseFragment nextfragment) {
if (tempFragment != nextfragment) {
tempFragment = nextfragment;
if (nextfragment != null) {
FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
if (!nextfragment.isAdded()) {
if (fromfragment != null) {
transaction.hide(fromfragment);
}
transaction.add(R.id.frameLayout_type, nextfragment).commit();
else {
if (fromfragment != null) {
transaction.hide(fromfragment);
}
transaction.show(nextfragment).commit();
}
}
}
}

分类页面中的超市主要代码

public class HomeAdapter2 extends BaseAdapter {
@Override
public int getCount() {
return imagenames2.length;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
tv_jd_commr1.setText("日用百货");
LayoutInflater inflater = getLayoutInflater();
View view = inflater.inflate(R.layout.type_grid_item1null);
ImageView iv_icon = view.findViewById(R.id.ic_icon);
TextView tv_name = view.findViewById(R.id.tv_name);
tv_name.setText(imagenames2[position]);
iv_icon.setImageResource(ids2[position]);
return view;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
}

分类页面中的推荐分类主要代码

public class HomeAdapter1 extends BaseAdapter {
@Override
public int getCount() {
return imagenames1.length;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
tv_jd_commr1.setText("常用分类");
LayoutInflater inflater = getLayoutInflater();
View view = inflater.inflate(R.layout.type_grid_item1null);
ImageView iv_icon = (ImageView) view.findViewById(R.id.ic_icon);
TextView tv_name = (TextView) view.findViewById(R.id.tv_name);
tv_name.setText(imagenames1[position]);
iv_icon.setImageResource(ids1[position]);
return view;
}

@Override
public Object getItem(int position) {
return null;
}

@Override
public long getItemId(int position) {
return 0;
}
}

分类页面中的大牌主要代码

public View initView() {
View view = View.inflate(mContext, R.layout.type_gridnull);
gridview_jd_r1 = view.findViewById(R.id.gridview_jd_r1);
tv_jd_commr1 = view.findViewById(R.id.tv_jd_commr1);
gridview_jd_r1.setAdapter(new HomeAdapter3());
return view;
}
public void initData() {
super.initData();
}
public class HomeAdapter3 extends BaseAdapter {
@Override
public int getCount() {
return imagenames3.length;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
tv_jd_commr1.setText("大牌区");
LayoutInflater inflater = getLayoutInflater();
View view = inflater.inflate(R.layout.type_grid_item1null);
ImageView iv_icon = (ImageView) view.findViewById(R.id.ic_icon);
TextView tv_name = (TextView) view.findViewById(R.id.tv_name);
tv_name.setText(imagenames3[position]);
iv_icon.setImageResource(ids3[position]);
return view;
}

@Override
public Object getItem(int position) {
return null;
}

@Override
public long getItemId(int position) {
return 0;
}
}

发现页面的主要代码

public class CommunityFragment extends BaseFragment {
private ListView shop_list;
@Override
public View initView() {
View view = View.inflate(mContext, R.layout.fragment_communitynull);
shop_list = view.findViewById(R.id.shop_list);
return view;
}
public void initData() {
super.initData();
ArrayList<Shop> shops = new ArrayList<>();
Goods s1_goods1 = new Goods(R.drawable.ppp"苹果", 10.00);
Goods s1_goods2 = new Goods(R.drawable.xxx"香蕉", 15.00);
Goods s1_goods3 = new Goods(R.drawable.lll"荔枝", 25.00);
shops.add(new Shop(R.drawable.mi"华来水果店", s1_goods1, s1_goods2, s1_goods3));

Goods s2_goods1 = new Goods(R.drawable.bao"菠萝", 56.00);
Goods s2_goods2 = new Goods(R.drawable.yezi"椰子", 33.00);
Goods s2_goods3 = new Goods(R.drawable.mangguo"特大芒果", 26.00);
shops.add(new Shop(R.drawable.mangguo"海南特产水果", s2_goods1, s2_goods2, s2_goods3));
ShopListAdapter adapter = new ShopListAdapter(mContext, shops);
shop_list.setAdapter(adapter);
}
}

  1. 系统运行结果

图1图2
图1:首页页面,有几种商品的图片名称价格及商铺,还有用户评价及好评率,
还有搜索入口。
图2:分类页面,其中的品牌区,一些大牌商品,让用户挑选。

图3 图4
图3:分类页面的超市一栏,有一些日用百货,图书、零食、牛奶等
图4:分类页面的推荐分类一栏,推荐一些常用分类,充电宝、空调、口红、平板电脑、眼影、手机等

图5 图6
图5:发现页面,有一些水果店铺及一些商品的价格、名称等
图6:搜索的商品分类。

图7 图8
图7:注册页面
图8:登录页面

  1. 实验总结

对于本次仿淘宝商城系统的设计与实现,更加了解了移动应用开发程序的基本原理和方法,提高基于Android Studio对图形用户界面的设计和开发能力,以及对控件事件处理、数据存储以及网络访问的能力。通过本次实验,我成功的完成了实验内容。学会了使用Android中的一些控件去创建应用程序。我学会了基本布局的用法,自定义控件的方法,并了解了ListView及Fragment的详细用法,以及Android中单位的选择和使用,已经基本掌握了UI的相关知识。但是实验过程中还是遇到了一些问题的,我对布局的理解和应用还不是很清晰,而且感觉使用HTTP请求也很复杂很难,对它的使用的掌握仍需继续努力!

安卓APP源码和设计报告——仿淘宝水果商城相关推荐

  1. 安卓APP源码和设计报告——仿淘宝购物APP

    2021-2022学年第二学期期末考试 <Android手机软件开发>实践考核 项目设计说明书 项目名称: 购物APP的设计与实现 专 业: 计算机科学与技术 学 号: 姓 名: 任课教师 ...

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

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

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

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

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

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

  5. 安卓APP源码和设计报告——小说阅读器

    班级 姓名 学号 答辩情况 考核项 满分成绩 得分 掌握计算机系统软硬件资源管理的原理,能够设计针对计算机领域复杂工程问题的解决方案,设计满足特定需求的软硬件系统,并具有对解决方案在特定约束条件下进行 ...

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

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

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

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

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

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

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

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

最新文章

  1. [转]ESP8266使用详解
  2. Batchsize不够大,如何发挥BN性能?探讨神经网络在小Batch下的训练方法
  3. 第三次学JAVA再学不好就吃翔(part9)--基础语法之键盘录入
  4. 【bzoj4566】[Haoi2016]找相同字符【后缀自动机】
  5. javac手动编译servlet
  6. 解决Lync Server前端必备组件Wmf2008R2安装失败
  7. python内存注入代码_Python模板注入
  8. python3 数组转字符串_Q:与python3交互中字符串转gbk的问题
  9. 基于PaddleOCR实现车牌识别
  10. PDF文件编辑并去除水印
  11. 小程序 实现手写签名功能
  12. 两种微生物并肩作战 让生物光伏系统发电能力创新高
  13. 【近五千字纯手撸】✨前后一个月面试30家中大型高级、资深java工程师终获500强公司offer心得以及经过
  14. python进阶高级技能:Python退火算法在高次方程的应用
  15. MySQL open_tables和opened_tables
  16. sqlite 查询效率对比
  17. 笔记本计算机作文,我的笔记本电脑作文600字
  18. 20世纪英国癌症三级预防研究
  19. MAGENTO网站如何设置PAYPAL收款方式
  20. cnn生成图像显著图_基本原理 | 图片中的绝对位置信息,CNN能搞定吗?

热门文章

  1. matlab 表示希腊字母yita,常用希腊字母读法
  2. html5猜数字游戏代码,js猜数字小游戏的简单实现代码
  3. OpenJudge 2986 拼点游戏
  4. 【spark基础】之client模式下--conf读取外部文件
  5. 关于数组名(arr)的理解
  6. jetson nano yolov5部署及USB摄像头实时检测 初次尝试
  7. 如何用 Python 识别车牌
  8. 后量子密码(PQC)决赛入围算法和候选算法
  9. 粉丝福利 | 秒 get 支付宝同款扫码组件
  10. 赛氪2020上半年 A.转换AV号(avtobv)[神奇的输入][神奇的getchar()][进制转换]