Android课设报告私厨暮小晨

近些年,美团外卖、饿了么等一些订餐软件席卷而来,订餐似乎成为了人们解决吃饭问题的最重要途径。但是当消费者在不熟悉地区时,订餐的弊端就凸显了出来,消费者难以寻找适合自己的餐馆、还是必须要进入到实体的饭店内点餐,这时,订餐软件就如同一个不太美观的图标用着庞大的内存资料却无用武之地。

二、课设题目

用例分析说明

添加信息:在我的菜谱页面,用户需要添加菜谱名、菜谱详情,这些数据会被存储到SQLite数据库中

查询信息:在我的菜谱页面,用户可以输入菜谱名查询菜谱,这些数据会从数据库中调取出来

删除信息:在我的菜谱页面,用户可以删除已添加的菜谱信息,这些数据会从数据库中删除

三、系统设计

名称

数据类型

长度

约束

id

INTEGER

PRIMARYKEYAUTOINCREMENT

name

VARCHAR

20

Details

Name

1

龙须面

1.和面。面软适度,搋揉光滑、柔韧;

2.溜条、抻条。抓面两头,均匀用力,上下抖动。交叉换位,反复交叉,把面溜“熟”、溜顺;长条上案,两手按条,左手向里、右手向外,搓条上劲,提起两头,一抖一抻,再上案板,对折两根、撒上醭面,条不粘连,以此...

3.油炸。要注意油温不要高、操作要“三轻”即将抻好的面丝轻放油锅,用筷子轻拨面丝,炸至硬挺,呈浅乳黄色,轻捞出锅,制咸的龙须面。面丝均匀,不并条,不断条,香甜脆爽。

2

饺子

1.一般饺1号做法:1.饺子皮摊平放在桌上2.将馅料放入3.将两边的饺子皮从中间捏紧4.两边再捏好即可。

2.一般饺2号做法:1.将饺子皮摊平,放入馅料2.对折,不要黏在一块,用手托着3.然后顺着一边捏出皱纹4.一直到捏好为止。

3.波波饺做法:1.将饺子皮摊平,放入馅料2.将饺子两边对折,按好3.用刮板将饺子压出波纹(还有一种是手压,但刮板更方便一些)4.压好的饺子。

4.蛤蜊饺做法:1.将饺子皮摊平,放入馅料2.将两边的皮对折,并向中间靠拢3.再将两边捏紧了4.再捏成波纹这个饺子花纹的捏法在这里。

5.马蹄饺:做法:1.将饺子皮摊平,放入馅料2.将两边捏好3.将饺子两边弯曲后,向中间靠拢4.再捏紧即可。

3

胡辣汤

起锅烧油放入肉丝翻炒1分钟,再放入酱油和海带翻炒出香味,之后加水烧开,放入千张丝和盐搅拌均匀。最后等锅内再次烧开后,加入调至好的生粉水和蛋液搅拌烧开,倒入盘内撒上葱花和香油,一份美味的胡辣汤就做好了。

编号

输入

处理

输出

账号和密码

与设定值相等

登陆成功进入首页

与设定值不等

登陆失败

首页查看详情

跳转到详情页面

显示详情页面

首页模块:主要用到ImageView组件,LieanerLayout布局嵌套实现词条与底部导航,这一部分是实现点击按钮跳转到对应的页面的功能

我的菜谱模块:使用了SQLite数据库,实现了用户对信息的添加、查询、修改、删除的功能,同时通过Listview显示用户信息时

菜谱详情模块:实现了Activity之间的跳转,显示了菜谱的具体实现步骤

四、系统测试

本次课程设计所用的开发环境为:eclipse

开发技术:Android

数据库:SQLite数据库

添加信息后显示“添加成功”

删除信息,显示“已删除”

AndroidManifest.xml

package="com.example.sichu"

android:versionCode="1"

android:versionName="1.0">

android:minSdkVersion="8"

android:targetSdkVersion="18"/>

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme">

android:name="com.example.sichu.login"

android:label="@string/login_name">

android:name="com.example.sichu.MainActivity"

android:label="@string/app_name">

android:name="com.example.sichu.upload"

android:label="@string/app_name">

android:name="com.example.sichu.MyActiviity"

btn_shape

//定义一个样式,实现按钮圆角

android:shape="rectangle">

android:color="#eeeeee"/>

android:bottom="3dp"

android:left="3dp"

android:right="3dp"

android:top="3dp"/>

代码:

//相对布局

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

android:background="@drawable/login">

android:id="@+id/login_icon"

android:src="@drawable/icon"

android:layout_height="70dp"

android:layout_width="70dp"

android:layout_marginTop="100dp"

android:layout_marginLeft="140dp"/>

android:id="@+id/login_et"

android:layout_height="wrap_content"

android:layout_marginTop="190dp"

android:editable="true"

android:hint="请输入账号"/>

android:id="@+id/login_ps"

android:layout_marginTop="250dp"

android:hint="请输入密码"

android:password="true"/>

android:id="@+id/login_bt"

android:layout_width="200dp"

android:layout_height="50dp"

android:layout_marginTop="320dp"

android:background="@drawable/btn_shape"

android:layout_marginLeft="80dp"

android:text="登录"

android:textColor="#ffa54f"

android:textSize="15dp"

/>

2.首页

tools:context=".MainActivity">

android:id="@+id/index_image"

android:layout_height="190dp"

android:layout_below="@+id/tab_title"

android:src="@drawable/index"

android:padding="0dp"

android:layout_margin="0dp"/>

android:id="@+id/wodecaipu"

android:layout_height="35dp"

android:layout_below="@+id/index_image"

android:text="我的传家菜谱"

android:gravity="center"

android:textColor="#ffa54f"/>

android:layout_height="1dp"

android:layout_below="@+id/wodecaipu"

android:background="#eeeeee"/>

android:id="@+id/show"

android:layout_height="80dp"

android:orientation="horizontal"

android:layout_below="@+id/wodecaipu">

android:id="@+id/index_img"

android:layout_width="0dp"

android:layout_height="110dp"

android:layout_weight="2"

android:src="@drawable/ganguo"/>

android:id="@+id/index_tv"

android:layout_width="wrap_content"

android:text="干锅土豆"

android:layout_marginTop="30dp"

android:textSize="22sp"

android:ems="4"

android:layout_weight="3"

/>

android:id="@+id/index_btn"

android:layout_height="30dp"

android:text="查看详情"

android:layout_marginLeft="240dp"

android:layout_below="@+id/show"

android:textSize="10dp"

android:background="@drawable/btn_shape"/>

android:layout_below="@+id/index_btn"

android:layout_height="56dp"

android:layout_alignParentBottom="true">

android:id="@+id/txt_index"

android:layout_weight="1"

android:background="#ffffff"

android:drawablePadding="3dp"

android:text="首页"/>

android:id="@+id/txt_my"

android:textColor="#111111"

android:text="我的菜谱"/>

3.菜谱详情

android:orientation="vertical">

android:id="@+id/upload_null"

android:text="返回"

android:layout_margin="10dp"

android:textSize="20sp"

android:id="@+id/upload_img"

android:layout_width="230dp"

android:layout_height="150dp"

android:layout_gravity="center"

android:text="烹饪步骤"

android:textStyle="bold"/>

android:text="1.把所有的菜洗净用水抄一下沥干水分"

android:textColor="#778899"/>

android:text="2.锅里放油最好多放一些,将喜欢吃的菜倒入锅中加少许水加入豆瓣酱多次翻抄"

android:text="小贴士"

android:text="放入自己喜欢的蔬菜即可没有多大讲究自己喜欢吃什么就放什么"

4.我的菜谱

android:orientation="vertical"

android:layout_marginTop="5dp">

android:layout_height="100dp"

android:orientation="horizontal">

android:layout_margin="5dp"

android:src="@drawable/head_icon"/>

android:layout_height="90dp"

android:text="暮小晨"

android:text="我的菜谱管理"

android:id="@+id/et_name"

android:hint="请输入菜谱名"/>

android:id="@+id/et_details"

android:hint="请输入步骤"/>

android:id="@+id/sql_layout"

android:id="@+id/btn_add"

android:text="添加"/>

android:id="@+id/btn_query"

android:text="查询"/>

android:id="@+id/btn_delect"

android:text="删除"/>

android:id="@+id/lvshow"

android:layout_height="145dp"/>

android:id="@+id/tab_menu"

android:layout_marginTop="180dp">

5.itemListView内容填充

android:id="@+id/itemName"

android:layout_marginLeft="10dp"

android:textSize="18sp"

android:textColor="#444444"

android:textStyle="bold"

android:ems="10"/>

android:id="@+id/itemContent"

android:maxLines="1"

android:ellipsize="end"

一、课设题目

二、技术说明

1.Activity之间的跳转

引用Intent类,实现Activity之间的跳转以及数据的传递与回传

2.Sqlite数据库

导入SQLiteDatabase,SQLiteOpenHelper包,调用安卓内嵌数据库进行数据传递,实现数据的添加,查询,修改,删除功能

3.控件的使用

Textview、Button、Edittext、ImageView、Listview

4.Listview的使用

在使用ListView进行添加数据时,会用到数据适配器,用来搭建数据与视图之间的桥梁,将复杂的数据转换成用户可以接受的方式进行呈现

5.事件的监听

SetOnClickListener()方法监听事件,多用在跳转时

6.页面布局

使用线性布局(LinearLayout)、相对布局(RelativeLayout)

7.Toast弹窗

三、UML类图

四、代码

清单文件(即AndroidManifest.xml)

//设置初始界面

布局文件:

2.Java文件

Java源码

Caipiadapter.java文件设置适配器

//设置listview

packageadapter;

importjava.util.List;

importorg.eclipse.jdt.annotation.NonNull;

importorg.eclipse.jdt.annotation.Nullable;

importcom.example.sichu.R;

importentity.caipu;

importandroid.content.Context;

importandroid.util.Log;

importandroid.view.LayoutInflater;

importandroid.view.View;

importandroid.view.ViewGroup;

importandroid.widget.ArrayAdapter;

importandroid.widget.BaseAdapter;

importandroid.widget.ImageView;

importandroid.widget.TextView;

publicclasscaipiadapterextendsBaseAdapter{

privateListlist;

privateLayoutInflaterlayoutInflater;

publiccaipiadapter(Contextcontext,Listlist){

this.layoutInflater=LayoutInflater.from(context);

this.list=list;

}

@Override

publicintgetCount(){

Log.e("yanwenhua","list.size()--"+list.size());

returnlist.size();

publicObjectgetItem(intposition){

returnnull;

publiclonggetItemId(intposition){

return0;

publicViewgetView(intposition,ViewconvertView,ViewGroupparent){

ViewHolderviewHolder;

if(convertView==null){

convertView=layoutInflater.inflate(R.layout.item,null);

viewHolder=newViewHolder(convertView);

convertView.setTag(viewHolder);

}else{

viewHolder=(ViewHolder)convertView.getTag();

caipucaipu=list.get(position);

viewHolder.tv_name.setText("菜谱:"+caipu.getConName());

viewHolder.tv_details.setText("菜谱详情:"+caipu.getCondetails());

Log.e("yanwenhua","cartBean.getName()-"+caipu.getConName()+""+caipu.getCondetails()+"");

returnconvertView;

classViewHolder{

TextViewtv_name;

TextViewtv_details;

publicViewHolder(Viewview){

tv_name=(TextView)view.findViewById(R.id.itemName);

tv_details=(TextView)view.findViewById(R.id.itemContent);

Caipu.java//设置实体类,用于数据的获取与传递

packageentity;

publicclasscaipu{

privateIntegerconId;

privateStringconName;

privateStringcondetails;

publiccaipu(IntegerconId,StringconName,Stringcondetails){

super();

this.conId=conId;

this.conName=conName;

this.condetails=condetails;

publiccaipu(){

//TODOAuto-generatedconstructorstub

publicIntegergetConId(){

returnconId;

publicvoidsetConId(IntegerconId){

publicStringgetConName(){

returnconName;

publicvoidsetConName(StringconName){

publicStringgetCondetails(){

returncondetails;

publicvoidsetCondetails(Stringcondetails){

packagecom.example.sichu;

importandroid.app.Activity;

importandroid.content.Intent;

importandroid.os.Bundle;

importandroid.widget.Button;

importandroid.widget.EditText;

importandroid.widget.Toast;

publicclassloginextendsActivity{

protectedvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_login);

ButtonLogin=(Button)findViewById(R.id.login_bt);

Login.setOnClickListener(newView.OnClickListener(){

publicvoidonClick(Viewview){

//TODOAuto-generatedmethodstub

EditTextadmin=(EditText)findViewById(R.id.login_et);

EditTextpassword=(EditText)findViewById(R.id.login_ps);

Stringadmin1=admin.getText().toString().trim();

Stringpassword1=password.getText().toString().trim();

if("123456".equals(admin1)&&"123".equals(password1)){

Intentintent=newIntent(login.this,MainActivity.class);

startActivity(intent);

});

//Intentintent=newIntent(login.this,MainActivity.class);

//startActivity(intent);

//}

//});

//ButtonLogin=(Button)findViewById(R.id.login_bt);

//Login.setOnClickListener(newView.OnClickListener(){

//TextViewtextView;

//@Override

//publicvoidonClick(Viewview){

MainActivity.java//对应主页

importjava.util.ArrayList;

importadapter.caipiadapter;

importandroid.view.Menu;

importandroid.widget.ListView;

publicclassMainActivityextendsActivity{

setContentView(R.layout.activity_main);

TextViewmy=(TextView)findViewById(R.id.txt_my);

my.setOnClickListener(newView.OnClickListener(){

Intentintent=newIntent(MainActivity.this,MyActiviity.class);

Buttonbtn=(Button)findViewById(R.id.index_btn);

btn.setOnClickListener(newView.OnClickListener(){

Intentintent=newIntent(MainActivity.this,upload.class);

MyActiviity.java//对应我的菜谱页

importandroid.content.ContentValues;

importandroid.database.Cursor;

importandroid.database.sqlite.SQLiteDatabase;

publicclassMyActiviityextendsActivityimplementsView.OnClickListener{

privateListconsList=newArrayList();

MyHelperhelper;

privateEditTextet_name,et_details;

privateListViewlistView;

privateStringname,details;

privateSQLiteDatabasedb;

setContentView(R.layout.my);

et_name=(EditText)findViewById(R.id.et_name);

et_details=(EditText)findViewById(R.id.et_details);

listView=(ListView)findViewById(R.id.lvshow);

Buttonadd=(Button)findViewById(R.id.btn_add);

Buttonquery=(Button)findViewById(R.id.btn_query);

Buttondelete=(Button)findViewById(R.id.btn_delect);

add.setOnClickListener(this);

query.setOnClickListener(this);

delete.setOnClickListener(this);

helper=newMyHelper(this);

TextViewmy=(TextView)findViewById(R.id.txt_index);

Intentintent=newIntent(MyActiviity.this,MainActivity.class);

publicvoidonClick(Viewv){

switch(v.getId()){

caseR.id.btn_add:

db=helper.getWritableDatabase();

name=et_name.getText().toString();

details=et_details.getText().toString();

ContentValuesvalues=newContentValues();//创建ContentValues对象

values.put("name",name);//将数据添加到ContentValues对象

values.put("details",details);

db.insert("info",null,values);

db.close();

Toast.makeText(this,"菜谱已添加",Toast.LENGTH_SHORT).show();

break;

caseR.id.btn_query:

Log.e("yanwenhua","123");

Listlist=newArrayList();

Cursorcursor=db.query("info",null,null,null,null,

null,null);

if(cursor.getCount()==0){

Toast.makeText(this,"还没有编辑无法查看",Toast.LENGTH_SHORT).show();

while(cursor.moveToNext()){

caipucaipu=newcaipu();

intnameIndex=cursor.getColumnIndex("name");

intdetailsIndex=cursor.getColumnIndex("details");

Stringname=cursor.getString(nameIndex);

Stringdetails=cursor.getString(detailsIndex);

Log.e("yanwenhua","cursor.getCount();--"+cursor.getCount()+"name-"+name+""+details+"");

caipu.setConName(name);

caipu.setCondetails(details);

list.add(caipu);

caipiadapteradapter=newcaipiadapter(MyActiviity.this,list);

listView.setAdapter(adapter);

adapter.notifyDataSetChanged();

cursor.close();

caseR.id.btn_delect:

db.delete("info",null,null);

Listlist2=newArrayList();

caipiadapteradapter=newcaipiadapter(MyActiviity.this,list2);

Toast.makeText(this,"菜谱已删除",Toast.LENGTH_SHORT).show();

Upload.java//对应菜谱详情页

publicclassuploadextendsActivity{

setContentView(R.layout.upload);

TextViewcanel=(TextView)findViewById(R.id.upload_null);

canel.setOnClickListener(newView.OnClickListener(){

Intentintent=newIntent(upload.this,MainActivity.class);

MyHelper.java//SQLite数据库实现

importandroid.database.sqlite.SQLiteOpenHelper;

publicclassMyHelperextendsSQLiteOpenHelper{

privateSQLiteDatabasesqLiteDatabase;

publicMyHelper(Contextcontext){

super(context,"caipu.db",null,1);

sqLiteDatabase=this.getWritableDatabase();

publicvoidonCreate(SQLiteDatabasedb){

db.execSQL("createtableinfo(idintegerprimarykeyautoincrement,namevarchar(20),detailsvarchar(300))");

publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){}

类说明

Caipiadapter.java——定义适配器

Caipu.java——封装实体类对象

MainActivity.class——设置首页

MyActiviity.java——设置我的菜谱页面

upload.java——设置菜谱详情页面

MyHelper.java——SQLite数据库的定义以及数据表、字段及类型的创建

THE END
1.美食与科技智能ai原创官方App让烹饪变得更加精准不同于传统的手册或视频教程,“智能AI原创官方App”结合互动式学习体验,让新手厨师更容易理解复杂概念,并在实践中不断提高技巧。此外,它还允许用户分享自己的成功案例,与其他用户交流心得,便于大家相互学习成长。 创意无限展开 最后,不要忘记这款软件还有一个非常重要的功能——设计新的菜谱。它通过人工智能引擎,为你https://www.alw39icut.cn/shou-ji/528014.html
2.ssm毕设美食推荐系统app源码+程序+论文首先,通过软件工程方法设计和开发美食推荐系统的原型;其次,利用文献分析法对现有的美食推荐算法和健康饮食理念进行梳理和总结;然后,通过问卷调查法收集用户对美食推荐系统的需求和偏好;最后,运用信息分析法对收集到的数据进行处理和分析,以优化和验证推荐算法的效果。https://blog.csdn.net/wuzhou101/article/details/144148452
3.定制外卖APP开发:打造专属餐饮服务平台定制外卖APP开发:打造专属餐饮服务平台 一、引言 随着移动互联网的迅猛发展,外卖行业已成为餐饮市场的重要组成部分。为了满足餐饮企业或个人创业者的个性化需求,定制外卖APP开发应运而生。本文将详细介绍定制外卖APP的开发过程,包括前期准备、技术选型、功能设计、测试与发布等环节。https://www.pbids.com/aboutUs/pbidsNews/1861317094471208960
4.跨学科主题学习实践与探索—以“校园菜谱我做主”为例三、跨学科说明 在本单元活动中,学生根据校园中真实发现的问题,综合运用信息科技、科学、数学、道德与法治学科、语文等知识与技能设计一份喜爱度高、营养且可执行的午餐食谱,以减少校园午餐浪费情况。在任务情景中,利用数据来分析解决问题。 1.以德育教育主题“节约粮食”为单元情景切入点,通过观察学校午餐菜谱了解多样https://tpd.xhedu.sh.cn/cms/app/info/doc/index.php/92749
5.AppInventor编程实例及指南在块编辑器窗口中,可以为组件设定行为:做什么以及何时做。此处是让小猫按钮在用户点击它时播放声音。如果把组件比作菜谱中的原料,那么块(Blocks)则相当于烹饪过程说明。 发出猫叫声 在块编辑器窗口的左侧,“Blocks”标题下面,可以看到许多分属不同类别的按钮,其中包括了我们在设计器中创建的所有组件:Screen1、Buttonhttp://www2.ituring.com.cn/book/tupubarticle/5915
6.苹果iOS人机交互界面开发指南你检查这份列表后,最后得出需要关注3个主要特性:创建列表,激活并使用代金券,获取菜谱。 现在你可以打造应用的定义语句了,准确概括出谁使用app,做什么事情。还是这个便利店购物应用的例子,一个好的定义语句可能是: 那些热爱烹饪,节俭的人们创建购物清单的工具。 https://mobile.51cto.com/hot-246659.htm
7.营销活动策划书(优秀13篇)说明:整个设计色调和效果强调祥和、热烈和祝福之情,富有亲和力和神秘的色彩。 (1)在xx商场正门入口处,树立一棵高大的、比较夸张的圣诞树; (2)作为主要活动场地,在前厅搭制异型舞台,主背景为一个卡通式的圣诞屋和夸张的大壁橱,并有圣诞树、驯鹿雪撬、雪花、靴子等相关装饰物; https://www.hunwen.com/work/huodongcehua/1028/1028653.html
8.原创服装设计手绘代画效果图临摹线稿印花图案款式图打版图结构图价格说明 1.京东价:京东价为商品的销售价,是您最终决定是否购买商品的依据。 2.划线价:商品展示的划横线价格为参考价,该价格可能是品牌专柜标价、商品吊牌价或由品牌供应商提供的正品零售价(如厂商指导价、建议零售价等)或该商品在京东平台上曾经展示过的销售价;由于地区、时间的差异性和市场行情波动,品牌专柜标价http://item.m.jd.com/product/10122628173458.html
9.美食天下美食天下是活跃的中文美食网站与厨艺交流社区,拥有海量的优质原创美食菜谱,聚集超千万美食家。我所有的朋友都是吃货,欢迎您加入!https://www.meishichina.com/
10.app设计说明怎么写App 是英文Application的简称,由于iPhone智能手机的流行,现在的APP多指智能手机的第三方应用程序。那么,app设计说明怎么写?下面小编为大家整理的一些内容,希望大家喜欢! 1、你的app应用开发给谁用。每个应用都有固定的适用人群,而这决定你应用的内容是什么,也决定了要给使用者以什么样的用户体验。 https://www.qinxue365.com/jsjzx/Graphic_Design/425973.html
11.商城APP基本设计说明(21页).docx商城APP基本设计说明(21页).docx 42页内容提供方:文档查询,农业合作 大小:5.55 MB 字数:约5.81千字 发布时间:2023-08-14发布于内蒙古 浏览人气:91 下载次数:仅上传者可见 收藏次数:0 需要金币:*** 金币 (10金币=人民币1元)商城APP基本设计说明(21页).docx 关闭预览 想预览更多内容,点击免费https://max.book118.com/html/2023/0811/8111014040005120.shtm
12.APP图标设计规范的超详细指南!这里所说的 APP 图标设计规范包含两类,其一是整体的设计规范原则,其二是具体的尺寸规范。接下来,本文将为大家从这两方面进行具体的说明。推荐大家使用专业设计软件「即时设计」进行图标设计规范,这里有可以直接使用的尺寸规范与海量的设计模板,能够为设计师的图标设计工作节省很多的时间。https://js.design/special/article/app-icon-specification.html