




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、重庆理工大学综合课程设计营养食谱系统 综合课程设计报告题目 营养食谱系统 二级学院 计算机科学与工程学院 专 业 网络工程 学 号 11003090202 姓 名 邓中斌 时 间 2013-9-22 目录第1章 绪论31.1 项目背景知识介绍31.2 项目的意义和主要内容3第2章 相关技术介绍52.1 Animation介绍52.2 Intent介绍52.3 SharedPreferences介绍62.4 SQLite介绍62.5 Map介绍62.6 simpleAdapter介绍7第3章 需求分析83.1 功能结构图83.2 管理员操作8第4章 系统设计94.1 各模块关系布局94.2 系统
2、实现整个流程图104.3 代码,布局文件结构104.4 模块布局以及核心代码124.4.1 进入动画124.4.2 登录操作134.4.3 ListView操作及数据库运用154.4.4 点击GridView中Item响应事件23第5章 系统实现255.1 系统运行截图255.2 操作简介28第6章 总结29参考文献30第1章 绪论1.1 项目背景知识介绍生物从低级到高级,从单细胞生物到高等动植物,从水中生活到陆地生活,所处的环境不同,生态各异。因此,所需要的养料和摄取养料的方式也不相同。生物所需的养料,其元素组成,大量的有氢、氧、氮和碳。这些是组成生物体的蛋白质和储存能量的主要元素。此外,还
3、有少量的硫、磷、钙、镁、钾、钠、氯和多种微量元素。有些微量元素在生物体内仅有痕量。含有叶绿素和紫色素的植物和微生物能够经过根、叶或细胞膜直接从外界吸取这些无机化合物,并利用日光的能量来合成自身生长、发育等生命活动所需的有机物质,如蛋白质、脂质和碳水化合物(糖类)等。具有这样营养方式的生物称为自养型或无机营养型生物。另一些生物(如动物)不能直接利用外界的无机物合成自身生命所需的有机物,必须从自养型生物或其它同类生物获取养料。通过代谢过程将摄取的物质转变成自身所需的蛋白质、脂质、碳水化合物等有机物。具有这样营养方式的生物则称为异养型生物。营养学即是研究食物对生物的作用的科学。营养学在其发展的过程中
4、,不仅包括食物进入机体内的变化,如参与生化反应和结合到组织细胞中;还包括指导人们如何选择食物以保障机体的正常生长、发育与繁殖。所以营养学除了有其生物学意义外,还有其社会经济意义。营养素是维持正常生命活动所必需摄入生物体的食物成分。现代营养学对于营养素的研究,主要是针对人类和禽畜的营养素需要。营养素分蛋白质、脂质、碳水化合物(糖类)、维生素和矿物质(无机盐)、水、纤维素7大类。例如每天吃的胡萝卜,地瓜,大豆里面都含有丰富的维生素C。1.2 项目的意义和主要内容“民以食为天”这是一个亘古不变的真理,人们的所有的社会活动必须建立在食的基础上。没有食的保障,所有的一切都是空谈。但是随着经济的猛速发展和
5、人民生活水平的日益提高。人们对于食也有着更高的要求,现在不仅仅是停留在一日三餐的基本追求了。他们更加讲究每天吃的食物营养是否达标,怎么去吃自己才能摄取更好的营养,怎样去吃才能更好的保障自己的身体健康。同时也注意他们食物的多样化。同时他们也更加注意到每一道菜的外在,不再是只要能吃饱就行了。他们对于评价一道菜,一顿饭的要求更高,评价点更多。营养搭配,色泽效果,口感等等要求!虽然基本人人都有这样的要求,但是是不是人人都能做到这要的要求呢,答案显然不是。必须肯定的是现在这个社会对食物要求高的人很多很多,但是对食物都很有研究的人,那就没有那么多呢!很多人对于做饭就是一个难题,你在加上要菜品的多样化,营养
6、达标化那就相当困难了。所以有一款这样的应用可以帮助一些对食物有一定要求但是自己又不会做的人是很有必要的。如果你什么时候心血来潮,想做一两道菜犒劳下自己,但是有不能做得太寒酸,那么如果你有一款这个应用。这个就再是问题了。它会成为老少皆宜,居家旅行的必备帮手。该应用有两个角色可以进入,一个是以管理员身份登录进入。管理员进入可以对该系统进行一些操作。默认进入只能查看营养搭配和美食烹饪与上传自己的食谱。不能对数据库中的数据进行操作。有三个选项供选择,一个是食物的营养搭配,一个是美食的菜谱以及用户可以的菜谱上传!第2章 相关技术介绍2.1 Animation介绍1.简介 Animation为Androi
7、d提供了一系列的动画效果:旋转、缩放、移动、淡入淡出,这些动画效果可以应用于绝大多数控件。2.分类Animation可分为两类:TweenedAnimations:渐变动画,具体就是旋转、缩放、移动、淡入淡出效果。Frame-by-FrameAnimations:将一系列Drawable序列一次播放,类似于电影模式,常用来进行定时更新背景等操作。3.实现方法Animation有两种实现方法:在xml文件中实现,优点是复用性好,可维护性好,多个控件可以使用同一个xml文件。缺点是由于xml文件不进行编译,所以排错比较难。在代码中实现,优点是排错很方便,缺点是重复代码多,可复用性低。2.2 Int
8、ent介绍Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。 因此,Intent在这里起着一个媒体中介的作用,专门提供组件互相调用的相关信息,实现调用者与被调用者之间的解耦。 在应用中,我们可以以两种形式来使用Intent: 直接Intent:指定了component属性的Intent(调用setComponent(ComponentName)或者setClass(Context, Class)来指定)。通过指定具体的组件类,通知应用启动对应的组件。间接Int
9、ent:没有指定comonent属性的Intent。这些Intent需要包含足够的信息,这样系统才能根据这些信息,在在所有的可用组件中,确定满足此Intent的组件。 对于直接Intent,Android不需要去做解析,因为目标组件已经很明确,Android需要解析的是那些间接Intent,通过解析,将 Intent映射给可以处理此Intent的Activity、IntentReceiver或Service。Intent解析机制主要是通过查找已注册在AndroidManifest.xml中的所有IntentFilter及其中定义的Intent,最终找到匹配的Intent。在这个解析过程中,An
10、droid是通过Intent的action、type、category这三个属性来进行判断的,判断方法如下: 如果Intent指明定了action,则目标组件的IntentFilter的action列表中就必须包含有这个action,否则不能匹配; 如果Intent没有提供type,系统将从data中得到数据类型。和action一样,目标组件的数据类型列表中必须包含Intent的数据类型,否则不能匹配。 如果Intent中的数据不是content: 类型的URI,而且Intent也没有明确指定它的type,将根据Intent中数据的scheme (比如 http: 或者mailto: ) 进行
11、匹配。同上,Intent 的scheme必须出现在目标组件的scheme列表中。 如果Intent指定了一个或多个category,这些类别必须全部出现在组建的类别列表中。比如Intent中包含了两个类别:LAUNCHER_CATEGORY 和 ALTERNATIVE_CATEGORY,解析得到的目标组件必须至少包含这两个类别。2.3 SharedPreferences介绍SharedPreferences是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<包名>/shared_pr
12、efs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。实现SharedPreferences存储的步骤如下:一、根据Context获取SharedPreferences对象二、利用edit()方法获取Editor对象。三、通过Editor对象存储key-value键值对数据。四、通过commit()方法提交数据。2.4 SQLite介绍1、SQLite支持 NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型虽然只有五种,但实际上sqlite3也接受varc
13、har(n)、char(n)、decimal(p,s) 等数据类型,只不过在运算或保存时会转成对应的五种数据类型。2、SQLite最大的特点是你可以保存任何类型的数据到任何字段中,无论这列声明的数据类型是什么。例如:可以在Integer字段中存放字符串,或者在布尔型字段中存放浮点数,或者在字符型字段中存放日期型值。3、但有一种情况例外:定义为INTEGER PRIMARY KEY的字段只能存储64位整数, 当向这种字段中保存除整数以外的数据时,将会产生错误。4、另外, SQLite 在解析CREATE TABLE 语句时,会忽略 CREATE TABLE 语句中跟在字段名后面的数据类型信息,如
14、下面语句会忽略 name字段的类型信息:CREATE TABLE person (personid integer primary key autoincrement, name varchar(20)2.5 Map介绍Map是一种把键对象和值对象进行关联的容器,Map有两种比较常用的实现: HashTable、HashMap和TreeMap。HashMap也用到了哈希码的算法,以便快速查找一个键,TreeMap则是对键按序存放,因此它有一些扩展的方法,比如fistKey(),lastKey()等。HashMap和Hashtable的区别。 HashMap允许空(null)键(key)或值(v
15、alue),由于非线程安全,效率上可能高于Hashtable。 Hashtable不允许空(null)键(key)或值(value)。2.6 simpleAdapter介绍使用simpleAdapter的数据用一般都是HashMap构成的List,list的每一节对应ListView的每一行。HashMap的每个键值数据映射到布局文件中对应id的组件上。因为系统没有对应的布局文件可用,我们可以自己定义一个布局vlist.xml。下面做适配,new一个SimpleAdapter参数一次是:this,布局文件(vlist.xml),HashMap的 title 和 info,img。布局文件的组件
16、id,title,info,img。布局文件的各组件分别映射到HashMap的各元素上,完成适配。 第3章 需求分析系统在开发设计之前首先就应该进行系统的需求分析,调查系统的使用对象,为了满足使用系统的用户的要求,设计出合理、完善的系统。确定该系统功能如下:本系统可分为默认用户登录和管理员登录营养搭配模块。查看食物的营养搭配,管理员可以添加,删除等操作。美食烹饪模块。查看菜肴菜谱,管理员可以添加,删除等操作。我有食谱模块。默认用户可以把自己的菜谱分享出来,管理员可以查看该用户上传的食谱,最后可以再发布出来。关于模块。简介该系统相关内容。3.1 功能结构图通过仔细的调查分析,得出本系统的功能结构
17、如图3.1所示登录主菜单营养食谱系统营养搭配查看食谱查看上传食谱 图3.1 营养食谱系统功能结构图3.2 管理员操作管理员登录后,进入每个界面内。可以对该界面所有数据进行操作,能够搜索ID对其进行删除。删除全部数据和添加新的营养搭配和菜谱做法。可以查看,删除用户上传的食谱。第4章 系统设计4.1 各模块关系布局根据需求分析,拟定系统各模块的关系,布局。如图4.1所示进入动画主菜单主菜单营养搭配 美食烹饪 我有食谱 关于 营养搭配 美食烹饪 我有食谱 关于登录添加,ID搜索,ID删除,全部删除,更新,返回功能ID搜索,刷新,返回操作上传查看食谱删除返回操作上传食谱返回营养食谱系统 图4.1营养食
18、谱系统模块功能图4.2 系统实现整个流程图根据模块图,完成系统实现整个流程图。如图4.2所示:开始登录数据库1数据库2数据库3营养搭配:添加,删除,查找,刷新营养搭配:查找,更新美食烹饪:查找,更新我有食谱:上传美食烹饪:添加,删除,查找,刷新我有食谱:添加,查看,删除结束NOYES 图4.2 营养食谱系统实现流程图4.3 代码,布局文件结构 有了整个实现系统思路,然后开始对每个界面进行布局,对每个Activity编写代码。对编写中会用到的资源进行定义。整个文件结构如图4.3所示: 图4.3 代码,资源文件结构图4.4 模块布局以及核心代码4.4.1 进入动画启动程序动画形式进入,该动画采用四
19、张图片旋转进入,动画完成后自动跳转到主菜单Activity。进入动画布局如图4.4.1所示: 图4.4.1 动画布局图在res/anim中添加两个.xml文件。定义动画进入各个时间,大小。Animation中引入动画的两个xml文件。再遍历TableLayout中的图片,采用Animation实例的spinin对象实现对图片的旋转进入。主要代码:private void startAnimating() / 题目进入采用anim.fade_in动画TextView logo1 = (TextView) findViewById(R.id.textView1_user);Animation fa
20、de1 = AnimationUtils.loadAnimation(this, R.anim.fade_in);logo1.startAnimation(fade1);fade1.setAnimationListener(new AnimationListener() public void onAnimationEnd(Animation animation) / 动画结束进入主菜单页面startActivity(new Intent(NP_MainActivity.this,OperInter_Activity.class);NP_MainActivity.this.finish();p
21、ublic void onAnimationRepeat(Animation animation) public void onAnimationStart(Animation animation) );/ 图片进入动画Animation spinin = AnimationUtils.loadAnimation(this,R.anim.custom_anim);LayoutAnimationController controller = new LayoutAnimationController(spinin);/ 采用anim_custom_anim定义的动画进入TableLayout t
22、able = (TableLayout) findViewById(R.id.TableLayout01);for (int i = 0; i < table.getChildCount(); i+) TableRow row = (TableRow) table.getChildAt(i);/ 获取图片布局row.setLayoutAnimation(controller);4.4.2 登录操作进入主菜单后,如果需要登录。点击登录进入登录界面如图4.4.2所示:运用SharedPreferences对数据的暂时存储,下次登录能保存上次登录的用户名。对账号,密码存放与res/xml下pe
23、ople文件中。如果输入数据与people下的账号,密码匹配则登录成功。采用startActivityForResult()在主菜单点击登录启动登录Activity并将值返回到主菜单界面。主要代码:XmlPullParser parser = resources.getXml(R.xml.people);/ 获取XML.people文件try while (parser.next() != XmlPullParser.END_DOCUMENT) String people = parser.getName();/ 得出文件里面的NameString name = null;String pas
24、sword = null;if (people != null) && people.equals("person") int count = parser.getAttributeCount();int i;for (i = 0; i < count; i+) / 遍历people中的attrName和attrValueString attrName = parser.getAttributeName(i);String attrValue = parser.getAttributeValue(i);if (attrName != null)&
25、;& attrName.equals("name") name = attrValue; else if (attrName != null)&& attrName.equals("password") password = attrValue;if (name != null) && (password != null) / textView.setText(name.toString()+","+password.toString();if (name.equals(user)&&a
26、mp; password.equals(secret) / 匹配成功comparesame = true;textView.setText(user + "登录!");tv_wle.setText("欢迎");break;登录界面:String uriString = editText_name.getText().toString() + ","+ editText_password.getText().toString();/ 将用户名和密码获取出来Uri data = Uri.parse(uriString);Intent re
27、sult = new Intent(null, data);/ 得出值,并返回到页面setResult(RESULT_OK, result);finish();图4.4.2 管理登录界面4.4.3 ListView操作及数据库运用对每一个营养搭配具体内容显示在ListView中的Item中。如图4.4.3所示:对于在每个Item中显示的内容有按照自己定义的格式来显示,如图4.4.4所示:首先要建立一个数据库OpenHelper来存放所有的关于营养搭配的数据。便在OpenHelper.java中写入关于数据库增,删,查的方法。可以在Nutrition_Activity中直接调用来对数据库的操作。
28、ListView中的图片显示是根据输入的图片名称通过getImageByReflect()方法反射出drwable下的图片。在Item显示格式要运用SimpleAdapter适配器定义。然后通过HaspMap()把数据取出来绑定到SimpleAdapter显示在ListView中。然后采用OnItemClickListener()监听点击listview中Item的事件。点击跳转页面并获取该Item中的一些值传入到跳转的页面。代码如下:OpenHelper:private static final String DB_NAME = "people.db"private st
29、atic final String DB_TABLE = "peopleinfo"private static final int DB_VERSION = 1;public static final String KEY_ID = "_id"public static final String KEY_NAME = "name"public static final String KEY_MATCH = "match"public static final String KEY_PHOTOSRC = "
30、photosrc"public static final String KEY_INTRODUCTION = "introduction"private SQLiteDatabase db;private final Context context;private DBOpenHelper dbOpenHelper;public OpenHelper(Context _context) context = _context;/* Close the database */public void close() if (db != null) db.close();
31、db = null;/* Open the database */public void open() throws SQLiteException dbOpenHelper = new DBOpenHelper(context, DB_NAME, null, DB_VERSION);try db = dbOpenHelper.getWritableDatabase(); catch (SQLiteException ex) db = dbOpenHelper.getReadableDatabase();/ 插入数据public long insert(People people) Conte
32、ntValues newValues = new ContentValues();newValues.put(KEY_NAME, people.Name);newValues.put(KEY_MATCH, people.Match);newValues.put(KEY_PHOTOSRC, people.PhotoSrc);newValues.put(KEY_INTRODUCTION, people.Introduction);return db.insert(DB_TABLE, null, newValues);/ 显示所有数据public People queryAllData() Curs
33、or results = db.query(DB_TABLE, new String KEY_ID, KEY_NAME,KEY_MATCH, KEY_PHOTOSRC, KEY_INTRODUCTION , null, null, null,null, null);return ConvertToPeople(results);/ 显示一个数据public People queryOneData(long id) Cursor results = db.query(DB_TABLE, new String KEY_ID, KEY_NAME,KEY_MATCH, KEY_PHOTOSRC, KE
34、Y_INTRODUCTION , KEY_ID + "=" + id,null, null, null, null);return ConvertToPeople(results);private People ConvertToPeople(Cursor cursor) int resultCounts = cursor.getCount();if (resultCounts = 0 | !cursor.moveToFirst() return null;People peoples = new PeopleresultCounts;for (int i = 0; i &
35、lt; resultCounts; i+) / 遍历所有数据peoplesi = new People();peoplesi.ID = cursor.getInt(0);peoplesi.Name = cursor.getString(cursor.getColumnIndex(KEY_NAME);peoplesi.Match = cursor.getString(cursor.getColumnIndex(KEY_MATCH);peoplesi.PhotoSrc = cursor.getString(cursor.getColumnIndex(KEY_PHOTOSRC);peoplesi.I
36、ntroduction = cursor.getString(cursor.getColumnIndex(KEY_INTRODUCTION);cursor.moveToNext();return peoples;/ 删除所有数据public long deleteAllData() return db.delete(DB_TABLE, null, null);/ 显示一项数据public long deleteOneData(long id) return db.delete(DB_TABLE, KEY_ID + "=" + id, null);/* 静态Helper类,用
37、于建立、更新和打开数据库 */private static class DBOpenHelper extends SQLiteOpenHelper public DBOpenHelper(Context context, String name,CursorFactory factory, int version) super(context, name, factory, version);private static final String DB_CREATE = "create table " + DB_TABLE+ " ( " + KEY_ID
38、 + " integer primary key autoincrement, "+ KEY_NAME + " text not null, " + KEY_MATCH+ " text not null, " + KEY_PHOTOSRC + " text not null, "+ KEY_INTRODUCTION + " text not null);"Overridepublic void onCreate(SQLiteDatabase _db) _db.execSQL(DB_CREATE)
39、;/Overridepublic void onUpgrade(SQLiteDatabase _db, int _oldVersion,int _newVersion) _db.execSQL("DROP TABLE IF EXISTS " + DB_TABLE);onCreate(_db);Nutrition_Activity:dbAdepter = new OpenHelper(this);dbAdepter.open();/ 打开数据库Button btn_backOp = (Button) findViewById(R.id.BackOp);listView.set
40、OnItemClickListener(itemclick);/ listView调用点击事件btn_backOp.setOnClickListener(new OnClickListener() public void onClick(View view) Intent intent = new Intent(Nutrition_Activity.this,OperInter_Activity.class);startActivity(intent););btn_ad.setOnClickListener(new OnClickListener() public void onClick(V
41、iew view) Intent intent = new Intent(Nutrition_Activity.this,Add_Activity.class);startActivity(intent););btn_search.setOnClickListener(new OnClickListener() public void onClick(View view) int id = Integer.parseInt(editSearch.getText().toString();/ 获取id,并调用queryOneData();People peoples = dbAdepter.qu
42、eryOneData(id);if (peoples = null) Toast.makeText(getApplicationContext(),"数据库中没有ID为" + String.valueOf(id) + "的数据",Toast.LENGTH_SHORT).show();return;lists = new ArrayList<Map<String, Object>>();/ 运用ArrayList<Map<String, Object>>()与 HashMap<String,/ Obje
43、ct>();/ 获取数据在ListView中显示getImageByReflect(peoples0.PhotoSrc);/ 获取图片名称在Drawable反射出图片显示出来map = new HashMap<String, Object>();map.put("name", peoples0.Name);map.put("match", peoples0.Match);map.put("photosrc", resId);map.put("introduction", peoples0.Intr
44、oduction);lists.add(map);/ 将得出map放入lists中listitem();/ 调用listitem显示);btn_deone.setOnClickListener(new OnClickListener() public void onClick(View view) long id = Integer.parseInt(editSearch.getText().toString();long result = dbAdepter.deleteOneData(id);/ 获取id显示该条信息String msg = "删除ID为" + edit
45、Search.getText().toString() + "的数据"+ (result > 0 ? "成功" : "失败");Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show(););btn_dela.setOnClickListener(new OnClickListener() public void onClick(View view) / 删除所有信息dbAdepter.deleteAllData();String msg = &
46、quot;数据全部删除"Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT).show(););btn_ref.setOnClickListener(new OnClickListener() public void onClick(View v) peoples = dbAdepter.queryAllData();if (peoples = null) Toast.makeText(getApplicationContext(), "没有数据",Toast.LENGTH_SHORT).
47、show();return;lists = new ArrayList<Map<String, Object>>();/ 运用ArrayListV和HashMap将数据显示出来for (int i = 0; i < peoples.length; i+) map = new HashMap<String, Object>();/ 根据遍历和哈希把所有数据取出来在listView中显示getImageByReflect(peoplesi.PhotoSrc);/ 根据输入名称反射出图片map.put("name", peoplesi.N
48、ame);map.put("match", peoplesi.Match);map.put("photosrc", resId);map.put("introduction", peoplesi.Introduction);lists.add(map);listitem();/ 使用listiem方式在ListView中显示);private void getImageByReflect(String imageName) try Field field = Class.forName("com.example.nutrit
49、ionmenusystem.R$drawable").getField(imageName);/ 获取该包下的drwable文件resId = field.getInt(field);/ 得出文件的id catch (Exception e) private void listitem() / 定义SimpleAdapter适配器adapter = new SimpleAdapter(this, lists, R.layout.nutritional_layout,new String "photosrc", "name", "mat
50、ch" , new int R.id.img, R.id.title, R. );/ 将定义的适配器绑定到ListView中listView.setAdapter(adapter);OnItemClickListener itemclick = new OnItemClickListener() public void onItemClick(AdapterView<?> parent, View view, int position,long id) Map<String, String> mapdata = (Map<String, S
51、tring>) adapter.getItem(position);/ 点击listview中的选项,响应以下时间String name = (String) mapdata.get("name");String introduction = (String) mapdata.get("introduction");Intent intent = new Intent(Nutrition_Activity.this,Introduction_Activity.class);intent.putExtra("name", name);intent.putExtra("introduction", introduction);int id2 = resId ;intent.putExtra("resid", id2);/ 将这些值传入到Introduction_Activity中startActivity(intent); 图4.4.3 营养搭配界面 图4.4.4 Item显示格式4.4.4 点击GridView中Item响应事件对于grid
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 吉林动画学院《文献检索和科技论文写作》2023-2024学年第一学期期末试卷
- 广州中医药大学《统计计算与实验》2023-2024学年第二学期期末试卷
- 浙江财经大学东方学院《中西医结合内科学Ⅰ》2023-2024学年第二学期期末试卷
- 2025企业并购合同协议书
- 浙江金融职业学院《安全防护与急救措施》2023-2024学年第二学期期末试卷
- 内蒙古师范大学《花鸟画写生》2023-2024学年第二学期期末试卷
- 西藏藏医药大学《篮球规则与比赛赏析》2023-2024学年第一学期期末试卷
- 甘肃省武威市凉州区农村小学2024-2025学年数学三下期末教学质量检测试题含解析
- 浴室台阶施工方案
- 2025【悦心童装特许加盟合同】悦心童装加盟
- 介绍梅西的英语演讲稿
- 康复治疗师考试知识点汇总
- 2023年北京市农林科学院事业单位招聘(共500题含答案解析)笔试历年难、易错考点试题含答案附详解
- 尿崩症诊疗规范内科学诊疗规范诊疗指南2023版
- 3D打印实训指导书
- 除草机器人简介
- 当代文学第一章1949-1966年的文学思潮
- a320飞机空调系统工作原理与使用维护分析
- 施工机具进场检查验收记录
- 《液压与气动技术项目教程》高职配套教学课件
- 2022年七步洗手法操作考核评分标准
评论
0/150
提交评论